Software architecture

From Wiki @ Karl Jones dot com
Revision as of 07:24, 3 June 2015 by Karl Jones (Talk | contribs) (First)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Software architecture refers to the high level structures of a software system, the discipline of creating such structures, and the documentation of these structures.

It 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.

Documenting software architecture facilitates communication between stakeholders, captures early decisions about the high-level design, and allows reuse of design components between projects.

External links