Software architecture is the set of structures needed to reason about a software system and the discipline of creating such structures and systems. Each structure comprises software elements, relations among them, and properties of both elements and relations.[1][2]
The architecture of a software system is a metaphor, analogous to the architecture of a building.[3] It functions as the blueprints for the system and the development project, which project management can later use to extrapolate the tasks necessary to be executed by the teams and people involved.
Software architecture design is commonly juxtaposed with software application design. Whilst application design focuses on the design of the processes and data supporting the required functionality (the services offered by the system), software architecture design focuses on designing the infrastructure within which application functionality can be realized and executed such that the functionality is provided in a way which meets the system's non-functional requirements.
Software architecture is about making fundamental structural choices that are costly to change once implemented. Software architecture choices include specific structural options from possibilities in the design of the software.
For example, the systems that controlled the Space Shuttle launch vehicle had the requirement of being very fast and very reliable. Therefore, an appropriate real-time computing language would need to be chosen. Additionally, to satisfy the need for reliability the choice could be made to have multiple redundant and independently produced copies of the program, and to run these copies on independent hardware while cross-checking results.
Documenting software architecture facilitates communication between stakeholders, captures early decisions about the high-level design, and allows the reuse of design components between projects.[4]: 29–35
^Clements, Paul; Felix Bachmann; Len Bass; David Garlan; James Ivers; Reed Little; Paulo Merson; Robert Nord; Judith Stafford (2010). Documenting Software Architectures: Views and Beyond, Second Edition. Boston: Addison-Wesley. ISBN 978-0-321-55268-6.
^Perry, D. E.; Wolf, A. L. (1992). "Foundations for the study of software architecture" (PDF). ACM SIGSOFT Software Engineering Notes. 17 (4): 40. CiteSeerX 10.1.1.40.5174. doi:10.1145/141874.141884. S2CID 628695.
^Bass, Len; Paul Clements; Rick Kazman (2012). Software Architecture in Practice, Third Edition. Boston: Addison-Wesley. ISBN 978-0-321-81573-6.
and 23 Related for: Software architecture information
Softwarearchitecture is the set of structures needed to reason about a software system and the discipline of creating such structures and systems. Each...
An architectural pattern is a general, reusable resolution to a commonly occurring problem in softwarearchitecture within a given context. The architectural...
Softwarearchitecture description is the set of practices for expressing, communicating and analysing softwarearchitectures (also called architectural...
Architectural patterns are often documented as software design patterns. An architectural pattern often uses the same description as a general, reusable...
A functional softwarearchitecture (FSA) is an architectural model that identifies enterprise functions, interactions and corresponding IT needs. These...
both high-level softwarearchitecture and low-level component and algorithm design. In terms of the waterfall development process, software design is the...
underlying chip, allowing it to run a wider variety of software. UISA: User Instruction Set Architecture, refers to one of three subsets of the RISC CPU instructions...
In software engineering, a microservice architecture is a variant of the service-oriented architecture structural style. It is an architectural pattern...
functionality onto hardware and software components, a mapping of the softwarearchitecture onto the hardware architecture, and human interaction with these...
Virtual instrument softwarearchitecture (VISA) is a widely used application programming interface (API) in the test and measurement (T&M) industry for...
In software engineering, multitier architecture (often referred to as n-tier architecture) is a client–server architecture in which presentation, application...
According to Pree, software frameworks consist of frozen spots and hot spots. Frozen spots define the overall architecture of a software system, that is...
system structure and behavior. Software architectureSoftware engineering "SoftwareArchitecture". Software Engineering Institute. Carnegie Mellon University...
Regine; Rohnert, Hans; Sommerlad, Peter (1996). Pattern-Oriented SoftwareArchitecture, Volume 1: A System of Patterns. John Wiley & Sons. ISBN 978-0-471-95869-7...
implemented. Architecture/Design – Overview of software. Includes relations to an environment and construction principles to be used in design of software components...
complex software, because it focuses on the major components of software and their interactions. It is also related to the field of softwarearchitecture. Software...
The Software Communications Architecture (SCA) is an open architecture framework that defines a standard way for radios to instantiate, configure, and...
In software engineering, architecture tradeoff analysis method (ATAM) is a risk-mitigation process used early in the software development life cycle. ATAM...
Softwarearchitecture recovery is a set of methods for the extraction of architectural information from lower level representations of a software system...
In software engineering and softwarearchitecture design, architectural decisions are design decisions that address architecturally significant requirements;...
In software development, an architecture astronaut is a term for an individual who is focused on abstract ideas underpinning software design. It is often...
Open architecture is a type of computer architecture or softwarearchitecture intended to make adding, upgrading, and swapping components with other computers...
Software metrics), at the unit level, and at the system level (sometimes referred to as end-to-end testing), which is in effect how its architecture adheres...