On the Criteria To Be Used in Decomposing Systems into Modules
Sidenote: Its written back in december 1972
This article contains some (very) smart statements, which are probably still effective for most current software developments.
What's left for me is the mission to find more articles and books about how to detect the right responsibility assignments for my components.
How to make the right design decisions *before* I begin with the layout of my modules?
Two (slightly modified) snippets from the document:
The most common approach to decompose a system is by choosing a flowchart. This is naive in the first place and almost always incorrect.
Maybe one can say the same thing in a more positive manner:
A component is characterized by its knowledge of a design decision. Its interface reveal as little as possible about its inner workings.
Excellent.