Stop, stop, stop, and please don’t go away! I know, you have seen the word „business“ in this title, and as a technical guy you have thought „thanks, it’s nothing for me”, but please give me a chance to explain why this topic is so important for you and us, IT architects, developers and testers.
We all love agile software development. It empowers teams that work in a close contact with the stakeholders, reacting on their feedback and delivering iteratively and incrementally product increments. However if we look at this “close contact with the stakeholders” we can oft assess that our “close contact” and as a result the information scope and the quality we can get, is quite “limited”. Mostly, we have only contact with one person who is responsible for the definition of all requirements (is he or she a product owner in case of Scrum or a business analyst or a product manager in case of other frameworks, it doesn’t matter). Because it is just one person, it is very seldom that he or she has holistic (means ultimate) view and understanding of the customer’s business. And this understanding is one of the key concepts needed if we want to deliver a good product and have a satisfied customer at the end of the project.
Only if we understand what we do, we can do it effectively.
The fastest way to understand something completely new is to analyze the model of it. In case of a software system, if we want to talk about its model, we have to talk about its architecture. One of the well-known frameworks allowing almost complete description of the software architecture is the “4+1 architectural view model” designed by the P. Kruchten:

This model contains 4+1 views allowing description of the various aspects and requirements of a software system:
- Scenarios represent well-defined interactions between external actors (users or systems) and the software system;
- Logical view is concerned with detailed functional requirements;
- Process view aka Quality view deals with the quality requirements (and btw. has nothing to do with the processes as such);
- Physical view aka Deployment view describes the environment into which the system will be deployed and its dependencies;
- Development view, as easy to presume, describes the system from the development point of view, including technologies and frameworks.
I use this model in a gently modified form (with some additional views) very often in my projects, because it makes me confident that I haven’t forgotten any important or even critical architectural aspect. I can only encourage you to do it as well.
(read more…)