Software architecture is about the fundamental structures found in a software system. Structures are created an also documented. It is specified how they work, what they try to accomplish, and how they interact with each other. This is necessary in order to understand well the whole software system and reason with it.
This idea is mainly implemented in order to make structural decisions on parts of the software system that is costly to modify once implemented. It shows 4 main characteristics:
Multitude of stakeholders: To provide what a series of stakeholders need. Stakeholders tend to have different points of view, and interests. It’s important to keep in mind the needs of each stakeholder. This means that software architecture must have a multidisciplinary nature.
Separation of concerns: The use of documentation to show that the needs or concerns of the stakeholders are being addressed by the modeling and description of each structure in the system.
Quality-driven: As of right now, software architecture tries to ensure that the software system is reliable, it has availability, maintainability, and other traits mainly focused in the stakeholders concerns.
Recurring styles: Over the years, there has been a development of standard ways to deal with certain concerns. Software architecture implements this.
Conceptual integrity: To show that the architecture of a software system shows an overall view of what is supposed to do, and how.