Lately I've been investigating software architecture with regard to how it can impact on an agile development project. I recently read (here) a very short list that resonated really powerfully with me and describes key architectural virtues (explanations are mine):
- Strength - reliable, secure, resilient to change
- Utility - must deliver either business value or (more likely) developer productivity
- Beauty - easy to understand and communicate, clean design, minimal
It turns out that these ideas have been around for quite a while, under their Latin names of firmitas, utilitas and venustas.
I hope to produce a series of blog posts detailing my thoughts and expanding on some of these points, including why I think this question is especially relevant to iterative development.