Software architecture is the design of software systems whether intentional or not. Software architecture is the organization of the system. Every piece of software has an architecture.
A well-designed and planned software architecture should be a blueprint for how the system is developed and how it should interact with its subsystems.
As we build our software, we should be thinking of the mission it has and the users of the system. Every decision we make has an impact on the mission, the users, and the architecture. I find that when we don’t intentionally design the architecture upfront, we have quite a few costly surprises that pop up later and impact us.
The architecture of the system should describe its major components, their relationships, and how they interact with one another.
Who maintains the Software Architecture?
Software Architecture is maintained by software architects and the development team. The development team creates the architecture based on the plans and problem statements from the software architect.
Why is software architecture useful?
Software architecture allows us to abstract away alot of the complexity of the system and show communication and coordination mechanisims between the different components or layers. The goal of the architecture is to reduce business risk and make it easier to build a technical solution.
How is the software architecture defined?
The software architecture should be designed thinking about a number of different parameters:
- Quality Attributes
- IT Environment
- Human Dynamics
- Business Strategy