Chris Aitken‘s article “Simplicity is the ultimate sophistication” had me intrigued and well worth a read. If nothing else to acquaint yourself with the described architectural principles and the idea of ‘principle assertions‘ – statements that are either ‘true’ or ‘false’ depending on whether the principle is evident or not in a given architecture specification.
- The Principle of the Separation of Concerns: A design should be comprised of a set of independent components each of which addresses discrete functionality requirements for each defined concern.
- The Principle of Optimisation: A design should provide a complete solution without necessary duplication.
- The Principle of Coherency: All design components should be harmonised.
The architecture design process implicitly defined by the article is clever in its simplicity (no pun intended):
- Separate the solution concern into two (or more) logical concerns
- “Is the concern grouping and separation coherent?” Test each answer using the principle assertions
- “Is the concern grouping and separation optimal?” Test each answer using the principle assertions
- To go 1 if answers to 2 or 3 produce false assertions.
Note: concerns are relative to your stakeholders who may be concerned with requirements, systems, models, operational processes, code quality etc.
The main criticism of the article is the exchanging use of the terms “good design”, “simplicity” and “elegant design”. Is design simplicity really the same as design elegance? And how is this different to a good design?
I had a look in the dictionary for guidance.
Good: to be desired or approved of; having the required qualities; of a high standard.
A “good design” infers a design that meets all concerns for all stakeholders.
Simplicity: the quality or condition of being easy to understand or do; plain or uncomplicated in form or design.
“Design simplicity” infers a design easy to understand by its stakeholder.
Elegant: graceful and stylish in appearance or manner; pleasingly ingenious and simple.
An “elegant design” infers a design that causes the architect to glow of pride, as it is realised to be both good and simple to all relevant stakeholders.
Beauty is in the eye of the beholder, which is why an elegant design is so difficult to achieve. But don’t let that stop you.