Software architecture
Software architecture refers to the structures of a software system, the discipline of creating such structures, and the documentation of these structures.
Contents
Description
Software architecture is the set of structures needed to reason about the software system.
Each structure comprises software elements, relations among them, and properties of both elements and relations.
The architecture of a software system is a metaphor, analogous to the architecture of a building.
Software architecture choices include specific structural options from possibilities in software design.
Examples
For example, the systems that controlled the space shuttle launch vehicle have the requirement of being very fast, and very reliable, in principle. Therefore an appropriate real-time computing language would be chosen.
Similarly, multiple redundant independently produced copies of a program running on independent hardware and cross-checking results would be a software system architecture choice to satisfy the need for reliability.
Expensive to change once implemented
Software architecture is about making fundamental structural choices which are costly to change once implemented, i.e., which are used to 'house' the more changeable elements of the program, e.g., an operating system.
Documentation
Documenting software architecture facilitates communication between stakeholders, captures early decisions about the high-level design, and allows reuse of design components between projects.
See also
- Codebase
- Computer science
- Event-driven architecture
- Model-view-controller
- Operating system
- Representational state transfer
- SOAP
- Software design
- Software development
- Software development process
- Software engineering
- Syntax (programming languages)
- Technical debt
- Web Services Description Language
External links
- Software architecture @ Wikipedia