A while ago I finished my first reading of Structured Design. Here are some notes and random thoughts about it.
Why did I read it?
My first encounter with the book was when reading Kent Beck’s Responsive Design article:
In 2005 I was invited to sit on a panel celebrating the 25th anniversary of the publication of Ed Yourdon and Larry Constantine’s Structured Design, the book that introduced the terms coupling and cohesion. I’d had a copy in my library since I’d used it as a college textbook, but, since I had used it as a college textbook, I hadn’t really read it. As I studied it in preparation for the panel, I realized that many of the questions I had about software design had been answered two decades before. This motivated me to make my informal study of design more structured and rigorous, and to communicate the results to a new generation of programmers. This was the official genesis of the Responsive Design Project.
I like the book. I like the subject. The book has lots of content. Some of the content is timeless, some is a bit dated (first print 1979).
Some nice quotes
“…the cost of implementing a computer system will be minimized when the parts of the problem are 1) manageably small 2) solved separately” (p18)
Note that this means that the division of problem parts is too fine-grained (i.e. the parts are too small), then they can’t be be solved separately. However, it’s better if the parts are too small than too large, since it’s often easier to “join” parts than to separate one part into smaller ones.
“[…] what can be seen is more easily understood that what cannot be seen.” (p100).
Implicit < explicit.
A paragraph on page 106 says (my summarization)
Focus on cohesion, since cohesion => coupling
However, the two concepts are not in a perfect correlation, but on average your coupling will decrease if your cohesion increases.
“In general, the use of pathological connections reduces the ability of the programmer to treat modulues as black boxes.” (p263)
Somewhat related to implicit < explicit.
Some nice pictures
Structured Design is a recommended read. I especially liked chapters 1-9, 19.0-2, 20-21. Regarding the other chapters; they didn’t really ring a bell in me, perhaps I misunderstood the contents or I haven’t experienced the problem (due to my inexperience or that the problem is nowadays “solved”), or a combination of the above…