Managing Complexity in Application Software
Conclusion: It is easy for software development teams to be preoccupied with, and to get lost in low level design. The simplest preventative measure to curb spurious complexity, without being prescriptive at the micro-level, is to consistently make use of a nested subsystem structure within the system architecture. The result is an architecture with fewer point-to-point interfaces. This strategy improves maintainability of code, and it works regardless of the quality of design at the micro-level.