What Is Software Architecture ?
It refers to the high level structures of a software system, the discipline of creating such structures, and the documentation of these structures.
It serves as the blueprint for both the project developing and the system, it defines the work assignments that must be carried out by design and executional teams.
The architecture is the main carrier of system qualities such as modifiability, security and performance none of which can be attained without a unifying architectural vision. By developing effective architecture, you can figure out the design risks and reduce them early in the development process.
Software architecture serves as the blueprint for both the system and the project developing it defining the work assignment that must be carried out by design and implementation teams. The architecture is the primary carrier of system qualities such as modifiability, performance and security, none of which can be achieved without a unifying architectural visions. Architecture is an artifact for early analysis to make sure that a design approach will yield an acceptable system. By developing effective architecture, you can identify design risks and mitigate them early in the development process.
Software architecture is about creating fundamental structural choices which once implemented is not an easy to change.
Software architecture choices contains specific structural options from possibilities in the design of software. For instance, the systems that controlled the space shuttle launch vehicle had the necessity of being very fast and reliable. Thus, an appropriate real-time computing language would require to be chosen.
Further,to satisfy the need for reliability the choice could be made to have various extra and individually produced copies of the programmed and to run these copies on independent hardware during the cross-checking of results.
Documenting software architecture simplifies the communication between stakeholders, taking early decisions about the high-level design and allows reuse of design components between projects.