The Software Architecture Process in Nutshell
The architect should follow a well defined process that at the end should lead to a practical and well thought of architecture which will ensure the system is fast, secure, reliable and easy to maintain.
Here are the basic steps in the architectural process.
- Understand the system’s requirements.
- Understand the non-functional requirements.
- Map the components.
- Select the technology stack.
- Design the architecture.
- Write the architecture document.
- Support the development team.
Understand the system’s requirements.
As the first step is to understand the system’s requirements. In other words to understand the system’s goals.
Usually it begins with high level tasks like describe workflows, logical services and user interface elements. Those requirements are usually defined by the systems/business analysts who work directly with the end users/clients.
Understand the non-functional requirements
The next step is to understand the non functional requirements of the system. The most common non functional requirement is about how many concurrent users that can use the system which is related to heavy load, volumes of data and performance.
The end users or system analyst most probably might not have much idea about such requirements. Its architect’s job to think and formulate those.
In my opinion those non-functional requirements are much more important to the architect. So many elements can be affected by those requirements.
Map the components
The components are moving parts of the system. We need to map them. This process help us to understand they system and its various parts.
We can use it to communicate to the various stake holders about architect’s understanding of the system to make sure we are not missing anything.
This is non-technical thing. As an architects we have not decided on any tech, development tool or platform at this stage.
Select the Technology Stack
This is one of the most important step in the process. We are an architect’s together with development team will decide the tech stack and platform.
We will have to select backend platform, front platform and sata storage platform. There could be multiple backend platform or multiple data stores for example, in case we select Microservice architecture.
There are lot of factors we have to consider when selecting the technology stack. A wrong tech stack can lead to failure of the whole system.
Design the Architecture
This is the heart of our work. We already have the requirements, non functions requirements, components and the technology stack. Now we need to glue all the components and need to design the system that is reliable, fast, secure and easy to maintain.
We we are done, we have complete architecture in place but we need to document it to formalize.
Write the Architecture Document
This is the combination of all the effort we put in during previous stages. This document will describe the whole process and gives the developers and the managers the full picture of the system that is going to be built.
This document can be relevant to all the stake holders including non-technical manages/ executives.
Support the Team
Many architects believe that their job is done once the document is delivered. In a big project, the architecture can be changes based on the ever changing requirements. The architects have to be there to help developers to make sure they are following the correct process.
The architect should be there to resolve uncertainties, arguments and dilemmas when arises.
In summary, we are not done until system is in production.
Conclusion
There are always some variations in the process. In some cases, we have to get developers support during the architecture process. It is extremely important to get them involved. There can be scenarios that developers are well aware of and since developers are involved, you automatically neutralize the future disagreements too. Also developers will become ambassadors of the architecture as they also involved with the process.