Notes on Structured Design

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.

Beck also mentions this book in his post on Coupling and Cohesion. Then Aslam Khan showed me a physical copy of the book.

In general

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



In closing

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…


About gustafnk

Developer at Jayway, REST/Hypermedia, AWD, Software apprentice, Dvorak user, Christian atheist, Zizek fan. I'm on twitter: @gustaf_nk
This entry was posted in Uncategorized and tagged , . Bookmark the permalink.

One Response to Notes on Structured Design

  1. Bravo to you, Gustaf! You are a brave and determined soul, for struggling through such an ancient and sometimes ponderous text. I am delighted that there are still occasional new readers. The first edition of Structured Design actually was published in 1975. There are, as you note, timeless elements intermingled with hopelessly dated garbage.

    I want particularly to thank you for drawing to my attention my own long-forgotten words: “What can be seen is more easily understood than what cannot be seen.” Wow! Perhaps I was smarter than I thought I was.

    Next, you might want to check out the more recent but still dated Software for Use, the Jolt Award winner that I wrote with Lucy Lockwood.

    And for the simple fun of it, read any of the techno-thrillers written by my alter ego, Lior Samson.

    Prof. Larry Constantine, University of Madeira

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s