Software architecture is the foundation of a Software system. Software architecture has a huge impact of the over quality of the software built using it.
Software architecture comprises of design decisions. Some of the earliest design decisions are architectural in nature this decisions have huge impact on the later decisions. The greater the complexity of the software system, the moreĀ well thought out architecture isĀ needed in order to succeed.
A software architecture provides a number of benefits. Some of them are listed below.
1. Meets all its requirements
Quality of the software is determined by analyzing the degree to which it meets it functional and non-functional requirements. A software system without a well thought out architecture will find it difficult to meets all the requirement. A well thought out architecture will help achieve all the quality goals and also makes it easy to manage, deploy and maintain the software system.
2. Allows to predict quality
It is possible to predict the quality of the software system by analyzing its architecture. By thinking about quality attributes upfront and making decisions that lead to those quality attributes, we can ensure that the resulting software system will meet its quality goals.
3. Enhances communication among stakeholders
Software architecture forms the basis for forming common understanding among the stakeholders, it also helps in discussions regarding budgets and timelines. Software architecture are abstract enough that any non technical person can understand it easily with little or no guidance from the architect. Architecture provides a common language which helps to discuss, negotiate and resolve various concerns. Without such a language it becomes difficult to fully understand large and complex systems.
4. Managing change
Software my need to change due to new requirement, change in business change, bug fixes or technology advances. Modifiabilty is also a quality attribute of good software architecture. A good software architecture localizes most common changes. A good software architecture also makes it easy to reason about the changes in the software system.
5. Training of team members
Software architecture and its description about various elements and their interaction to achieve desired behavior, can serve as an introduction to the system for new team members.
References:
1. Software Architecture in Practice