I’ve commented before on the charmingly Utopian architectural principles that The Open Group Architecture Framework (TOGAF) suggests.
For most of my systems design career, I’ve been taught that it’s a bad thing to lump lots of different functions together into one indivisible monolith of code: that it’s a good thing to separate each useful function into a distinct unit that can be re-used for new purposes: and that those functional units should have explicit interfaces that don’t couple them together permanently in a set pattern. These ideas are the essence of the Composite/Structured Design thinking that Yourdon & Coad promoted in the 1980s. They are the foundation of the Service Oriented Architecture that Microsoft and IBM promoted in the 2000s. They appear so obviously to be true that for twenty-five years I believed them.