Although there is no agreement on the precise definition of the term “software architecture”, I believe it is one of the most essential disciplines in successful software development. It is also one of the most difficult ones, especially in an Agile environment. After all, how do you design a system if you are delivering working software every sprint.
My idea on agile architecture
First and foremost I believe one of the keys to successful agile development is a solid strategy. Architecture should always come from a long term vision of your company. I like the 4+1 architectural view model by Philippe Kruchten, although the model did not originate in Agile practices. The model helps us as agile teams to think about architecture on several levels:
- A logical view: concerned with the functionality the system provides to end-users.
- A development view: using the programmers perspective and describing system components.
- A process view: explaining the dynamics of the system also thinking about the various “ilities” like scalability and usability.
- A physical view: concerned with how the system will be deployed and will function from an engineer’s point of view.
- And last but not least scenario’s to connect all the views together.
I like this model because it can help you to ask the right questions when you’re adding functionality to your software and it broadens the definition of architecture to more than just the developers perspective.
As your building software sprint-by-sprint the 4+1 model can help you make architectural decisions per sprint. If this is combined with a solid strategy and vision it can help you build the architecture you need bit by bit and let it emerge.
Would you like to discuss Agile architecture further?
On Thursday the 23th of August Prowareness, one of the leading companies on Agile software development in the Netherlands, will be hosting it’s first Mastering Agile Development* session on the topic of Emergent Architecture. Together with Jeroen van Menen and Robert van Vark I would love to envite you to be there and share your experience.
* the “mastering agile development” sessions are organized by and for agile developers, testers, architects and business analysts working in an agile environment.
Please feel free to comment!