Designing the Architecture

I’m a strong believer that a poorly designed architecture will affect the application - it’s not a case of if, but when, and not in a positive way! Personally I find it so surprising that this phase of a project is ever overlooked, in a hair-pulling, teeth-grinding, shouting “NO” at the top of my voice kind of way! It’s frustrating.
When I’m involved in a project from this stage I always try to take a step back, do some analysis, think of objects, patterns and other UMLesk features. In these few days three books are always an arms length away, I highly recommend them all to anyone involved in development/software architecture.
- Design Patterns Explained: A New Perspective on Object-Oriented Design Shalloway/Trott
- Design Patterns: Elements of Reusable Object-Oriented Software Gamma/Helm/Johnson/Vlissides
- UML Distilled: A Brief Guide to the stanard Object Modeling Language Fowler
I usually start on paper, and once I’ve done 50% or so I’ll move digital. I use Dia on Linux for my UML modeling, however there’s plenty of choice, and they’re all cross platform (apparently).
The UML will evolve over time, this should slow down as the product matures (assuming requirements don’t change) however, keeping the UML up-to-date is important.. at some point in the future it will be referenced by someone (myself or another) and if it’s not up-to-date I’d expect that hair-pulling, teeth-grinding, shouting “NO” at the top of my voice frustration all over again.



