Difference between revisions of "Software architecture"
Karl Jones (Talk | contribs) (→See also) |
Karl Jones (Talk | contribs) (→See also) |
||
Line 27: | Line 27: | ||
* [[Representational state transfer]] | * [[Representational state transfer]] | ||
* [[SOAP]] | * [[SOAP]] | ||
+ | * [[Software design]] | ||
* [[Software development]] | * [[Software development]] | ||
* [[Software development process]] | * [[Software development process]] | ||
* [[Software engineering]] | * [[Software engineering]] | ||
+ | * [[Syntax (programming languages)]] | ||
* [[Technical debt]] | * [[Technical debt]] | ||
* [[Web Services Description Language]] | * [[Web Services Description Language]] |
Revision as of 06:56, 7 February 2016
Software architecture refers to the structures of a software system, the discipline of creating such structures, and the documentation of these structures.
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 the design of software.
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.
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
- 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