Software architecture

architecturesoftwarearchitectsarchitecturalarchitecturesarchitecturallyprogram architecturearchitectural descriptionarchitectural designArchitecture Analysis
Software architecture refers to the high level structures of a software system and the discipline of creating such structures and systems.wikipedia
303 Related Articles

Software design

designsoftware designerdesigned
Quality-driven: classic software design approaches (e.g. Jackson Structured Programming) were driven by required functionality and the flow of data through the system, but the current insight is that the architecture of a software system is more closely related to its quality attributes such as fault-tolerance, backward compatibility, extensibility, reliability, maintainability, availability, security, usability, and other such –ilities.
This includes both a low-level component and algorithm design and a high-level, architecture design.

Reference architecture

Common terms for recurring solutions are architectural style, tactic, reference architecture and architectural pattern.
A reference architecture in the field of software architecture or enterprise architecture provides a template solution for an architecture for a particular domain.

Abstraction (computer science)

abstractiondata abstractionabstract
Overall, macroscopic system structure; this refers to architecture as a higher level abstraction of a software system that consists of a collection of computational components together with connectors that describe the interaction between these components.
The software is structured in architectures to enable humans to create the enormous systems by concentrating on a few issues at a time.

Software system

software systemssystemssystem
Software architecture refers to the high level structures of a software system and the discipline of creating such structures and systems.
It is also related to the field of software architecture.

Architecturally significant requirements

A software architect typically works with project managers, discusses architecturally significant requirements with stakeholders, designs a software architecture, evaluates a design, communicates with designers and stakeholders, documents the architectural design and more.
Architecturally significant requirements are those requirements that have a measurable effect on a computer system’s architecture.

Extensibility

extensibleextensionextend
Quality-driven: classic software design approaches (e.g. Jackson Structured Programming) were driven by required functionality and the flow of data through the system, but the current insight is that the architecture of a software system is more closely related to its quality attributes such as fault-tolerance, backward compatibility, extensibility, reliability, maintainability, availability, security, usability, and other such –ilities.
Many software systems and software product-lines are derived from a base system, which share a common software architecture or sometimes large parts of the functionality and implementation but are possibly equipped with different components that require an extensible base system.

Architecture description language

ADLarchitecture description languagesADLs
During the 1990s there was a concerted effort to define and codify fundamental aspects of the discipline, with research work concentrating on architectural styles (patterns), architecture description languages, architecture documentation, and formal methods.
The software engineering community uses an architecture description language as a computer language to create a description of a software architecture.

IEEE 1471

IEEE Std 1471-20001471-2000ANSI/IEEE 1471-2000
IEEE 1471-2000, Recommended Practice for Architecture Description of Software-Intensive Systems, was the first formal standard in the area of software architecture.
IEEE 1471 is a superseded IEEE Standard for describing the architecture of a "software-intensive system", also known as software architecture.

View model

viewsintegrated viewView
Software architecture descriptions are commonly organized into views, which are analogous to the different types of blueprints made in building architecture.
A view model or viewpoints framework in systems engineering, software engineering, and enterprise engineering is a framework which defines a coherent set of views to be used in the construction of a system architecture, software architecture, or enterprise architecture.

Mary Shaw (computer scientist)

Mary ShawShaw
Mary Shaw and David Garlan of Carnegie Mellon wrote a book titled Software Architecture: Perspectives on an Emerging Discipline in 1996, which promoted software architecture concepts such as components, connectors, and styles.
Mary Shaw (born 1943) is an American software engineer, and the Alan J. Perlis Professor of Computer Science in the School of Computer Science at Carnegie Mellon University, known for her work in the field of software architecture.

Wright (ADL)

Wright
Many special-purpose ADLs have been developed since the 1990s, including AADL (SAE standard), Wright (developed by Carnegie Mellon), Acme (developed by Carnegie Mellon), xADL (developed by UCI), Darwin (developed by Imperial College London), DAOP-ADL (developed by University of Málaga), SBC-ADL (developed by National Sun Yat-Sen University), and ByADL (University of L'Aquila, Italy).
In software architecture, Wright is an architecture description language developed at Carnegie Mellon University.

Database-centric architecture

Data-centricDatabase-centricdatabase-centric" architecture
Data-centric
Database-centric Architecture or data-centric architecture has several distinct meanings, generally relating to software architectures in which databases play a crucial role.

Event-driven architecture

event-drivenevent drivenEDA
Event-driven (or implicit invocation)
Event-driven architecture (EDA), is a software architecture pattern promoting the production, detection, consumption of, and reaction to events.

Representational state transfer

RESTRESTfulREST API
Representational state transfer (REST)
Representational State Transfer (REST) is a software architectural style that defines a set of constraints to be used for creating web services.

Implicit invocation

Event-driven (or implicit invocation)
Implicit invocation is a term used by some authors for a style of software architecture in which a system is structured around event handling, using a form of callback.

Component-based software engineering

software componentcomponentcomponents
Mary Shaw and David Garlan of Carnegie Mellon wrote a book titled Software Architecture: Perspectives on an Emerging Discipline in 1996, which promoted software architecture concepts such as components, connectors, and styles.
Component-based software engineering builds on prior theories of software objects, software architectures, software frameworks and software design patterns, and the extensive theory of object-oriented programming and the object-oriented design of all these.

Edsger W. Dijkstra

Edsger DijkstraDijkstraE. W. Dijkstra
Software architecture as a concept has its origins in the research of Edsger Dijkstra in 1968 and David Parnas in the early 1970s.
Though the term 'architecture' had not yet been used to describe software design, this was certainly considered the first glimpse of software architecture.

Software engineering

software engineersoftware engineerssoftware
Although the term "software architecture" is relatively new to the industry, the fundamental principles of the field have been applied sporadically by software engineering pioneers since the mid-1980s.
Specializations include: in industry (analysts, architects, developers, testers, technical support, middleware analysts, managers) and in academia (educators, researchers).

Architecture tradeoff analysis method

Architecture Tradeoff Analysis Method (ATAM)ATAM
It gives a basis for analysis of software systems' behavior before the system has been built. The ability to verify that a future software system fulfills its stakeholders' needs without actually having to build it represents substantial cost-saving and risk-mitigation. A number of techniques have been developed to perform such analyses, such as ATAM.
Its purpose is to help choose a suitable architecture for a software system by discovering trade-offs and sensitivity points.

Architecture Analysis & Design Language

AADLArchitecture analysis
Many special-purpose ADLs have been developed since the 1990s, including AADL (SAE standard), Wright (developed by Carnegie Mellon), Acme (developed by Carnegie Mellon), xADL (developed by UCI), Darwin (developed by Imperial College London), DAOP-ADL (developed by University of Málaga), SBC-ADL (developed by National Sun Yat-Sen University), and ByADL (University of L'Aquila, Italy).
AADL is used to model the software and hardware architecture of an embedded, real-time system.

Architectural pattern

architectural patternsArchitecture Patterns (EA Reference Architecture)software architecture pattern
Common terms for recurring solutions are architectural style, tactic, reference architecture and architectural pattern.
An architectural pattern is a general, reusable solution to a commonly occurring problem in software architecture within a given context.

Distributed Data Management Architecture

hierarchical directoriesrecord-oriented filestream-oriented file
Distributed Data Management Architecture
Distributed Data Management Architecture (DDM) is IBM's open, published software architecture for creating, managing and accessing data on a remote computer.

Requirement

requirementscustomer requirementcustomer needs
Stakeholder concerns often translate into requirements on these quality attributes, which are variously called non-functional requirements, extra-functional requirements, behavioral requirements, or quality attribute requirements.
In software engineering, they are called architecturally significant requirements, which is defined as those requirements that have a measurable impact on a software system’s architecture.

Systems architecture

system architecturearchitecturesystems
The term systems architecture has originally been applied to the architecture of systems that consists of both hardware and software. The main concern addressed by the systems architecture is then the integration of software and hardware in a complete, correctly working device. In another common – much broader – meaning, the term applies to the architecture of any complex system which may be of technical, sociotechnical or social nature.
A representation of a system, including a mapping of functionality onto hardware and software components, a mapping of the software architecture onto the hardware architecture, and human interaction with these components.

Software architecture analysis method

Software Architecture Analysis Method
Software architecture analysis method (SAAM) is a method used in software architecture to evaluate a system architecture.