4 ms·
Really? The device you're reading this on probably contains more complexity than it's possible for one person to understand in a lifetime, and that's one device
by jeremysmyth 11y ago
Really? The device you're reading this on probably contains more complexity than it's possible for one person to understand in a lifetime, and that's one device.
It's incredibly naive (or at best disingenuous) to assume that complex systems can be reduced by thinking and refactoring. Perhaps some can, but when you consider many of the software artefacts we use daily (seeing as that's the context of this subthread), such as operating systems, virtualization platforms, or even good ol' clunky enterprise applications, you can't just wish the complexity away with a bit of hard work.
- arethuza 11y agoI don't think anyone is arguing that complex systems don't need some kind of up front high-level design - what we are arguing about is whether UML is an effective format for design artifacts. I'd be pretty surprised if any of the code that I am using to read this was designed with detailed UML diagrams.
- crdoconnor 11y ago>Really? The device you're reading this on probably contains more complexity than it's possible for one person to understand in a lifetime, and that's one device. It wouldn't have been possible at all if the pieces that make it up weren't loosely coupled. >It's incredibly naive (or at best disingenuous) to assume that complex systems can be reduced by thinking and refactoring. It's naive to assume that you can't. Loose coupling pretty much only comes as a result of extensive refactoring.
- jeremysmyth 11y ago...and one of the ways you can communicate such coupling is by diagramming the (complex) system's design. Google for "linux kernel diagram"[1]. It's quite well designed, displays loose coupling, high cohesion, and all the other things we like about good complex systems. If I want to dig in and start working on a module, I'd still have to understand the relationship between all the bits I work directly with (and probably some that are further away). Don't confuse loose coupling with low complexity. https://www.google.com/search?q=linux+kernel+diagram https://www.google.com/search?q=linux+kernel+diagram