The Design of Software (CLOSED)

A public forum for discussing the design of software, from the user interface to the code architecture. Now closed.

The "Design of Software" discussion group has been merged with the main Joel on Software discussion group.

The archives will remain online indefinitely.

Recommendations for books on designing software please!

Hi, can anybody recommend some good books to help improve design skills? I've mainly been into reading technical books since leaving Uni and it's certainly an area I've neglected!

I've heard good things about "Holub on Patterns", is this a good place to start? Any input is appreciated. :-)

Kind regards,

Jonathan R Send private email
Monday, July 02, 2007
The best book I've used is "Structured Analysis and System Design" by Tom DeMarco.

This lays out the "Data Flow Diagram" approach, which is an excellent way of separating what a system should do from the implementation of how that system does it.  It's a 'system level' view, so it can be made independent of language and platform.  At later phases you can roll in language and platform.

Another good book is "Agile Modeling", by Scott Ambler.  This provides a minimalist use approach toward the UML model -- which is nice, because the full UML model is so huge as to be unwieldy.  Even Rational's "RUP" requires customization, and Ambler tells you which customizations are most helpful.
Monday, July 02, 2007
It depends a lot on the kind of software you expect to be designing.  What language do you use?  What type of end users?  How big are the systems.

The most important thing about design is understanding the users needs and the user interfaces.  So books on requirements analyis and users interfaces are really a prerequisite to the more technical stuff like patterns.    If you are interested more in the internal design of software application I'd say look at Eric Evans Domain Driven Design.
Bill Hamaker Send private email
Monday, July 02, 2007
Holub's book is interesting but imho has some serious flaws. Holub is very strongly opinionated, almost to the point of being pugnacious -- 'my way or the highway'. He assumes you're working in Java; and since the book spends most of its time looking at code in depth, it's likely to be much less useful if you're working in another language. And his use of patterns is so thorough-going that you're likely to be so badly intimidated by the diagram he uses in the initial presentation of one of his main examples (a Game of Life implementation).

I've been able to make use of only small parts of the book. (I'm a C++ developer who perhaps has not yet been immersed deeply enough in the GOF-patterns way of being.

I say all of this as a big fan of much of Holub's work, particularly his pre-Java stuff (e.g., Compiler Design in C).
Phil Lodine Send private email
Monday, July 02, 2007
I am a big fan of Holub's books, he writes in an engaging and accessible style without sacrificing technical depth and detail. As for "Holub on Patterns", I read it about a year ago and thought it was very good, I would recommend it over any of the canonical books ("Design Patterns" by Gamma, Helm, et. al. is almost unreadable). I've also got the Headfirst Patterns book from O'Reilly and Assoc. and it is quite nice, but I haven't finished it so I can't give a complete recommendation at this time.
Jeffrey Dutky Send private email
Monday, July 02, 2007
I'd have to disagree about "Domain Driven Design". It was 600 pages of nothing. A great concept, but mostly fluff without real content. If felt like he was trying to write the bible of software development, but without provided any new insights (or at least a condensed summary of it). I read every word, and while there were fleeting moments where it had potential, I was disappointed overall.

I've always been partial towards "Pattern Oriented Software Architecture", vol 1.  Its as old as Design Patterns, but targets architectural patterns instead. Many of these are now quite popular, but most pattern books just rehash the GoF's work rather than adding new ideas. I also enjoyed "Refactoring to Patterns", since it recognized that you spend more time refactoring legacy code than writing new code.

I'd also recomend trolling Amazon's "customers also bought..." on books that you enjoyed. You'll discover new titles and new authors. After a while, Amazon will be smart enough to recomended good titles for you to explore as well.
Benjamin Manes Send private email
Monday, July 02, 2007
It's great to see the variety recommendations and advice. I certainly like the idea of "Refactoring to Patterns". Thanks to all for providing a starting point.


Jonathan R Send private email
Tuesday, July 03, 2007
Don't forget about the Pragmatic Programmer. Easy to read and has some great insights into software development and how to approach problems.
Pedro Estrada Send private email
Tuesday, July 03, 2007
Robert Martin's Principals Patterns and Practices is outstanding. I emphasize this level of "principals" over any "pattern" books. You need to understand the principals that drove the pattern designers to make something good enough to care about.

Yes, I named the book by its subtitle rather than the main title. It's not an Agile method book, and Martin sometimes calls it the PPP book, so I do, too. :-)
Stan James Send private email
Thursday, July 05, 2007
"Object Modeling and Design Strategies", from Sanjiv Gossain. I think is a timeless book, because focus in the scense of OO design from a very practical perspective. Additionally, has a very good chapter abou software architecture.
Pablo Chacin Send private email
Thursday, July 05, 2007
Well, if you have been programming for a few years then read code complete by Steve McConnell, it will help remove all the bad habits you will of picked up, and there is a lot of good advise besides that.
Sunday, July 08, 2007

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics
Powered by FogBugz