There are a bunch of properties that count for good software design. Many pillars of our trade —computer programming— usually concur on those.
One of the most important, useful and noticeable characteristic of good design in software is a suitable identification and accurate representation of the underlying abstractions of the domain at hand directly in code, also known sometimes as “the system behind the system”.
Another common observation between professional practitioners is that in order to get those underlying abstractions, several development cycles —from concepts to actually used executable code— must be carried out by the same few brains in order to get conceptual integrity.
One implication is that those few professional designers should freely choose to stay with the same growing system in order to make out of it a noteworthy and long-lasting piece of good designed software.
Of course, all this must be taken into account only for software products that matters.
In the same vein, all this is useful only for those that pursue computer programming as a socially accountable profession.
I thought this as part of a session with:
Domain-Driven Design: Tackling Complexity in the Heart of Software
by Eric Evans, Martin Fowler
Publish Date: 22 August, 2003
Binding: Hardcover , 320 pages
Weight: 2.75 pounds