Top 10 Elements of Good Software Design

Mr. Ed’s most popular post to date on Hacknot has been his post on software design. With the help of three of his former colleagues he classifies in order of importance what he feels to the the top ten elements of good software design.

Here is his top ten list in order of important from least to most important:

  1. Considers the Sophistication of the Team that Will Implement It
  2. Uniformly Distributes Responsibility and Intelligence
  3. Is Expressed in a Precise Design Language
  4. Selects Appropriate Implementation Mechanisms
  5. Is Robustly Documented
  6. Eliminates Duplication
  7. Is Internally Consistent and Unsurprising
  8. Exhibits Maximum Cohesion and Minimum Coupling
  9. Is as Simple as Current and Foreseeable Constraints will Allow
  10. Provides the Necessary Functionality

The last one might seem obvious to you but you might be surprised how much well designed functioning software exists out there but unfortunately it does not do what it is suppose to do.

I am not sure my list would of ever looked like Mr. Eds but then again I have much less experience then he does in development. What would you add to your list that is not on his? What would you remove? Why not share your list with us?

written by: John Kopanas

Related Links:


Help Support Us By Visiting Our Sponsor

10% of our revenue from these ads go towards scholarships!


Comments

October 16, 2004 12:11 PM | Ness commented:

You played with the original articles numbering! The original “hacknot” article was like a top 10 on the Dave Letterman show.

Interesting to note that the two least important points (point 1 and 2 above) are pretty much management based goals while the rest seem to be design and implementation.

Does that mean “Design” is the most important step in building software? ;) [now that’s a loaded question]

October 16, 2004 08:23 PM | Louis-Philippe Huberdeau commented:

The list seem to reach more than simply design, so I would consider the title could have been better ;)

October 20, 2004 06:10 PM | John Kopanas commented:

It is not that I played with the list I used an ordered list and in the HTML and I did not know how to tell HTML to count down from 10 to 1 :-). That is why I put the note before the list from least to most.

The title could of been better I know :-).


Post Your Comments





(note: not displayed)


(note: displayed with comment)

CUSEC 2005

CUSEC is the Canadian Undergraduate Software Engineering Conference created to promote software engineering in canada at the undergraduate level. CUSEC 2005 is being held this year in Ottawa, Canada.

http://2005.cusec.ca

Monthly Newsletter

Sign-up to our monthly newsletter so you can keep up with the latest articles on software engineering and our conference (CUSEC).

sign-up now