All Topics  
Software architecture

 

   Email Print
   Bookmark   Link






 

Software architecture



 
 
The software architecture of a program or computing system is the structure or structures of the system
Software system

A software system is a system based on software forming part of a computer system . The term software system is often used as a synonym of computer program or software....
, which comprise software components, the externally visible properties of those components, and the relationships between them. The term also refers to documentation of a system's software architecture. Documenting software architecture facilitates communication between stakeholders
Stakeholder (general)

Sorry, no overview for this topic
, documents early decisions about high-level design, and allows reuse of design components and patterns between projects.

field of computer science
Computer science

Computer science is the study of the theoretical foundations of information and computation, and of practical techniques for their implementation and application in computer systems....
 has come across problems associated with complexity since its formation.






Discussion
Ask a question about 'Software architecture'
Start a new discussion about 'Software architecture'
Answer questions from other users
Full Discussion Forum



Recent Posts









Encyclopedia


The software architecture of a program or computing system is the structure or structures of the system
Software system

A software system is a system based on software forming part of a computer system . The term software system is often used as a synonym of computer program or software....
, which comprise software components, the externally visible properties of those components, and the relationships between them. The term also refers to documentation of a system's software architecture. Documenting software architecture facilitates communication between stakeholders
Stakeholder (general)

Sorry, no overview for this topic
, documents early decisions about high-level design, and allows reuse of design components and patterns between projects.

Overview

The field of computer science
Computer science

Computer science is the study of the theoretical foundations of information and computation, and of practical techniques for their implementation and application in computer systems....
 has come across problems associated with complexity since its formation. Earlier problems of complexity were solved by developers by choosing the right data structures, developing algorithms, and by applying the concept of separation of concerns
Separation of concerns

In computer science, separation of concerns is the process of breaking a computer program into distinct features that overlap in functionality as little as possible....
. 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 mid 1980s. Early attempts to capture and explain software architecture of a system were imprecise and disorganized, often characterized by a set of box-and-line diagrams. During the 1990’s there was a concentrated effort to define and codify fundamental aspects of the discipline. Initial sets of design patterns, styles, best practices, description languages, and formal logic were developed during that time. The software architecture discipline is centered on the idea of reducing complexity through abstraction
Abstraction (computer science)

In computer science, abstraction is a mechanism and practice to reduce and factor out details so that one can focus on a few concepts at a time....
 and separation of concerns. To date there is still no agreement on the precise definition of the term “software architecture”.

As a maturing discipline with no clear rules on the right way to build a system, designing software architecture is still a mix of art and science. The “art” aspect of software architecture is because a commercial software system supports some aspect of a business or a mission. How a system supports key business drivers is described via scenarios as non-functional requirements of a system, also known as quality attributes, determine how a system will behave. Every system is unique due to the nature of the business drivers it supports, as such the degree of quality attributes exhibited by a system such as fault-tolerance, backward compatibility, extensibility, reliability, maintainability, availability, security, usability, and such other –ilities
Ilities

Within systems engineering, quality attributes are Non-Functional Requirements used to evaluate the performance of a system. These are sometimes named "ilities" after the suffix many of the words share....
 will vary with each implementation.

To bring a software architecture user's perspective into the software architecture, it can be said that software architecture gives the direction to take steps and do the tasks involved in each such user's speciality area and interest e.g. the stake holders of software systems, the software developer, the software system operational support group, the software maintenance specialists, the deployer, the tester and also the business end user. In this sense software architecture is really the amalgamation of the multiple perspectives a system always embodies. The fact that those several different perspectives can be put together into a software architecture stands as the vindication of the need and justification of creation of software architecture before the software development in a project attains maturity.

History

The origin of software architecture as a concept was first identified in the research work of Edsger Dijkstra
Edsger Dijkstra

Edsger Wybe Dijkstra was a Netherlands computer science. He received the 1972 Turing Award for fundamental contributions in the area of programming languages, and was the Schlumberger Centennial Chair of Computer Sciences at University of Texas at Austin from 1984 until 2000....
 in 1968 and David Parnas
David Parnas

David Lorge Parnas is a Canadian early pioneer of software engineering, who developed the concept of information hiding in modular programming, which is an important element of object-oriented programming today....
 in the early 1970s. These scientists emphasized that the structure of a software system matters and getting the structure right is critical. The study of the field increased in popularity since the early 1990s with research work concentrating on architectural styles (patterns), architecture description languages, architecture documentation, and formal methods.

Research institutions have played a prominent role in furthering software architecture as a discipline. Mary Shaw and David Garlan of Carnegie Mellon wrote a book titled Software Architecture: Perspectives on an Emerging Discipline in 1996, which brought forward the concepts in Software Architecture, such as components, connectors, styles and so on. The University of California, Irvine
University of California, Irvine

The University of California, Irvine is a public university coeducational research university founded in 1965, situated in Irvine, California....
's Institute for Software Research's efforts in software architecture research is directed primarily in architectural styles, architecture description languages, and dynamic architectures.

The IEEE 1471
IEEE 1471

IEEE 1471 is the short name for a standard formally known as ANSI/IEEE 1471-2000, Recommended Practice for Architecture Description of Software-Intensive Systems. Within IEEE parlance, this is a Recommended Practice, the least normative of the kinds of IEEE standards....
: ANSI/IEEE 1471-2000: Recommended Practice for Architecture Description of Software-Intensive Systems is the first formal standard in the area of software architecture, and was adopted in 2007 by ISO as ISO/IEC 42010:2007
IEEE 1471

IEEE 1471 is the short name for a standard formally known as ANSI/IEEE 1471-2000, Recommended Practice for Architecture Description of Software-Intensive Systems. Within IEEE parlance, this is a Recommended Practice, the least normative of the kinds of IEEE standards....
.

Software architecture topics


Architecture description languages

Architecture description language
Architecture description language

Different communities use the term architecture description language. Two important communities are:* The software engineering community* The enterprise modelling and engineering community...
s (ADLs) are used to describe a Software Architecture. Several different ADLs have been developed by different organizations, including AADL
Architecture analysis and design language

The Architecture Analysis & Design Language is an architecture description language standardized by Society of Automotive Engineers. AADL was first developed in the field of avionics, and was known formerly as the Avionics Architecture Description Language....
 (SAE standard), Wright
Wright (ADL)

In software architecture, Wright is an architecture description language developed at Carnegie Mellon University. Wright formalizes a software architecture in terms of concepts such as components, connectors, roles, and ports....
 (developed by Carnegie Mellon), Acme
Acme (ADL)

Acme is an Architecture Description Language developed at Carnegie Mellon University. describes it so:References ...
 (developed by Carnegie Mellon), xADL (developed by UCI), Darwin
Darwin (ADL)

Darwin is an Architecture Description Language . It can be used in a software engineering context to describe the organisation of a piece of software in terms of components, their interfaces, and the bindings between components....
 (developed by Imperial College London
Imperial College London

Imperial College London is a United Kingdom university in London that focuses primarily on science, engineering, medicine and business.Imperial is regularly placed in the top three in the Times National University League Table along with Oxford and Cambridge....
), DAOP-ADL (developed by University of Málaga). Common elements of an ADL are component, connector and configuration.

Views

Software architecture is commonly organized in views
View model

A View model, or viewpoints framework in systems engineering and software engineering is a framework, which defines a coherent set of views to be used in systems analysis and or the construction of an enterprise architecture....
, which are analogous to the different types of blueprint
Blueprint

A blueprint is a type of paper-based reproduction usually of a technical drawing, documenting an architecture or an engineering design. More generally, the term "blueprint" has come to be used to refer to any detailed plan....
s made in building architecture
Architecture

The term architecture can refer to a process, a profession or documentation.As a process, architecture is the activity of designing and construction buildings and other physical structures by a person or a computer, primarily to provide shelter....
. Within the ontology established by ANSI/IEEE 1471-2000
IEEE 1471

IEEE 1471 is the short name for a standard formally known as ANSI/IEEE 1471-2000, Recommended Practice for Architecture Description of Software-Intensive Systems. Within IEEE parlance, this is a Recommended Practice, the least normative of the kinds of IEEE standards....
,
views are instances of viewpoints, where a viewpoint exists to describe the architecture in question from the perspective of a given set of stakeholders and their concerns.

Some possible views (actually,
viewpoints in the 1471 ontology) are:

  • Functional/logic view
  • Code/module view
  • Development/structural view
  • Concurrency/process/thread view
  • Physical/deployment view
  • User action/feedback view
  • Data view


Several languages for describing software architectures have been devised, but no consensus has yet been reached on which symbol-set and view-system should be adopted. The UML
Unified Modeling Language

Unified Modeling Language is a standardized general-purpose modeling language in the field of software engineering.UML includes a set of graphical notation techniques to create abstract models of specific systems....
 was established as a standard
Standardization

Standardization is the process of developing and agreeing upon Standard . A standard is a document that establishes uniform engineering or technical specifications, criteria, methods, processes, or practices....
 
"to model systems (and not just software)," and thus applies to views about software architecture. Others believe that effective development of software relies on understanding unique constraints of each problem, and so universal notations are doomed because each provides a notational bias
Notational bias

Notational bias is a form of cultural bias that is incurred when the available notation to describe something introduces a bias in the human ability to approach it....
 that necessarily makes the notation useless or dangerous for some set of tasks. They point to the proliferation of programming language
Programming language

A programming language is a machine-readable artificial language designed to express computations that can be performed by a machine, particularly a computer....
s and a succession of failed attempts to impose a single 'universal language' on programmers, as proof that software thrives on diversity and not on standards.

Architecture frameworks

  • 4+1
    4+1

    4+1 is a view model designed by Philippe Kruchten for describing the architecture of software-intensive systems, based on the use of multiple, concurrent views....
  • Department of Defense Architecture Framework
    Department of Defense Architecture Framework

    The Department of Defense Architecture Framework a reference model to organize the enterprise architecture and systems architecture into complementary and consistent view model....
     (DODAF)
  • UK Ministry of Defence Architectural Framework
    MODAF

    The British Ministry of Defence Architectural Framework defines a standardised way of conducting Enterprise Architecture and provides a means to model, understand, analyze and specify Capabilities, Systems, Systems of Systems, and Business Processes....
     (MODAF)
  • The Open Group Architecture Framework
    TOGAF

    The Open Group Architecture Framework is a Enterprise Architecture framework for enterprise architecture which provides a comprehensive approach to the design, planning, implementation, and governance of an enterprise information architecture....
     (TOGAF)
  • Zachman framework
    Zachman framework

    File:Simple example Zachman Framework double row.jpgThe Zachman Framework is a framework for enterprise architecture, which provides a formal and highly structured way of view model and defining an enterprise....
  • Federal Enterprise Architecture
    Federal Enterprise Architecture

    Federal Enterprise Architecture is the Enterprise Architecture of a Federal Government, which provide a common methodology for information technology acquisition, use, and disposal in that Federal government....
  • Reference Model of Open Distributed Processing
    RM-ODP

    Reference Model of Open Distributed Processing is a reference model in computer science, which provides a co-ordinating framework for the standardization of Open system distributed systems processing ....
     (RM-ODP)
  • Service-Oriented Modeling
    Service-oriented modeling

    Service-oriented modeling is the discipline of modeling business and systems, for the purpose of designing and specifying service-oriented business systems within a service-oriented architecture....
     Framework (SOMF)


The distinction from detailed design

Software architecture, also described as strategic design, is an activity concerned with global design constraints, such as programming paradigms, architectural styles, component-based software engineering
Component-based software engineering

Component-based software engineering is a branch of the software engineering discipline, with emphasis on decomposition of the engineered systems into Functional programming or logical components with well-defined Interface used for communication across the components....
 standards, design principles, and law-governed regularities. Detailed design, also described as tactical design, is an activity concerned with local design constraints, such as design patterns
Design Patterns

Design Patterns: Elements of Reusable Object-Oriented Software is a software engineering book describing recurring solutions to common problems in software design....
, architectural patterns
Architectural pattern (computer science)

Architectural patterns are software patterns that offer well-established solutions to software architecture problems in software engineering. It gives description of the elements and relation type together with a set of constraints on how they may be used....
, programming idioms, and refactorings. According to the Intension/Locality Hypothesis, the distinction between strategic and tactical design is defined by the Locality Criterion, according to which a statement about software design is non-local if and only if a program that satisfies it can be expanded into a program which does not. For example, the Client-Server
Client-server

The client-server software architecture model distinguishes client systems from server systems, which communicate over a computer network. A client-server application is a distributed system comprising both client and server software....
 style is architectural (strategic) because a program that is built by this principle can be expanded into a program which is not client server; for example, by adding peer-to-peer
Peer-to-peer

A peer-to-peer computer network uses diverse connectivity between participants in a network and the cumulative bandwidth of network participants rather than conventional centralized resources where a relatively low number of Server s provide the core value to a service or application....
 nodes. Or more simply, it is the distinction of the general from the specific.

Architecture is design but not all design is architectural. In practice, the architect is the one who draws the line between software architecture (architectural design) and detailed design (non-architectural design). There aren't rules or guidelines that fit all cases.

Examples of Architectural Styles / Patterns

There are many common ways of designing computer software modules and their communications, among them:
  • Blackboard
  • Client-server
    Client-server

    The client-server software architecture model distinguishes client systems from server systems, which communicate over a computer network. A client-server application is a distributed system comprising both client and server software....
     (2-tier, n-tier, peer-to-peer, Cloud Computing all use this model)
  • Database-centric architecture
    Database-centric architecture

    Database-centric architecture or data-centric architecture has several distinct meanings, generally relating to software architectures in which databases play a crucial role....
     (broad division can be made for programs which have database at its center and applications which don't have to rely on databases, E.g. desktop application programs, utility programs etc.)
  • Distributed computing
    Distributed computing

    Distributed computing deals with hardware and software systems containing more than one processing element or Computer data storage element, Concurrent computing processes, or multiple programs, running under a loosely or tightly controlled regime....
  • Event Driven Architecture
    Event Driven Architecture

    Event-driven architecture is a software architecture pattern promoting the production, detection, consumption of, and reaction to events.An event can be defined as "a significant change in state "....
  • Front-end and back-end
    Front-end and back-end

    Front-end and back-end are generalized terms that refer to the initial and the end stages of a process. The front-end is responsible for collecting input in various forms from the user and processing it to conform to a specification the back-end can use....
  • Implicit invocation
    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 ....
  • Monolithic application
    Monolithic application

    In software engineering, a monolithic application describes a single-tiered Application software in which the user interface and data access code are combined into a single program from a single Platform ....
  • Peer-to-peer
    Peer-to-peer

    A peer-to-peer computer network uses diverse connectivity between participants in a network and the cumulative bandwidth of network participants rather than conventional centralized resources where a relatively low number of Server s provide the core value to a service or application....
  • Pipes and filters
  • Plugin
    Plugin

    In computing, a plug-in consists of a computer program that interacts with a host application software to provide a certain, usually very specific, function "on demand"....
  • Representational State Transfer
    Representational State Transfer

    Representational state transfer is a style of software architecture for distributed hypermedia systems such as the World Wide Web. As such, it is not strictly a method for building "web services." The terms "representational state transfer" and "REST" were introduced in 2000 in the doctoral dissertation of Roy Fielding, one of the principa...
  • Structured (module-based but usually monolithic within modules)
  • Software componentry (strictly module-based, usually object-oriented programming
    Object-oriented programming

    Object-oriented programming is a programming paradigm that uses "Object_" and their interactions to design applications and computer programs....
     within modules, slightly less monolithic)
  • Service-oriented architecture
    Service-oriented architecture

    In computing, service-oriented architecture provides methods for systems development and System integration where systems group functionality around business processes and package these as Interoperability Service ....
  • Search-oriented architecture (A pure SOA implements a service for every data access point)
  • Space based architecture
  • Shared nothing architecture
    Shared nothing architecture

    A shared nothing architecture is a distributed computing architecture in which each node is independent and self-sufficient, and there is no single point of contention across the system....
  • Three-tier model (An architecture with Presentation Layer, Business Logic Layer and Database Layer)
  • Rule evaluation
    Inference

    Inference is the act or process of deriving a logical consequence from premises.Inference is studied within several different fields.* Human inference is traditionally studied within the field of cognitive psychology....


See also

  • Anti-pattern
    Anti-pattern

    In software engineering, an anti-pattern is a design pattern that appears obvious but is ineffective or far from optimal in practice.The term was coined in 1995 by Andrew Koenig ,...
  • Architecture Centric Design Method
    Architecture Centric Design Method

    The Architecture Centric Design Method is a novel method for software architectural design from Anthony J. Lattanze of the Software Engineering Institute at Carnegie Mellon University....
  • Architecture Tradeoff Analysis Method
    Architecture Tradeoff Analysis Method

    In software engineering, Architecture Tradeoff Analysis Method is a risk-mitigation process used early in the software development life cycle....
     (ATAM)
  • Common layers in an information system logical architecture
    Common layers in an information system logical architecture

    The following four layers are the most common Layer in a logical Multilayered architecture for an information system with an Object-oriented design:...
  • Computer architecture
    Computer architecture

    Computer architecture in computer engineering is the conceptual design and fundamental operational structure of a computer system. It is a blueprint and functional description of requirements and design implementations for the various parts of a computer, focusing largely on the way by which the central processing unit performs internally an...
  • Dependency Structure Matrix
  • Enterprise architecture
    Enterprise architecture

    The term enterprise architecture refers to many things. Like architecture in general, it can refer to a description, a process or a profession....
  • Process architecture
    Process architecture

    Dualistic Petri nets are a process-class variant of Petri nets.Like Petri nets in general and many related formalisms and notations, they are used to describe and analyze process architecture....
  • Software architect
    Software architect

    Software architect is a general term with many accepted definitions, which refers to a broad range of roles. Generally-accepted terminology and certifications began appearing in connection with this role near the beginning of the 21st Century....
  • Software Architectural Model
    Software Architectural Model

    An Architectural Model is a rich and rigorous diagram, created using available standards, in which the primary concern is to illustrate a specific set of tradeoffs inherent in the structure and design of a system or ecosystem....
  • Software design
    Software design

    Software design is a process of problem-solving and planning for a software solution. After the purpose and specifications of software are determined, software developers will design or employ designers to develop a plan for a solution....
  • Software design pattern
  • Software system
    Software system

    A software system is a system based on software forming part of a computer system . The term software system is often used as a synonym of computer program or software....
  • Standard data model
    Standard data model

    A standard data model or industry standard data model is a data model that is widely applied in some industry, and shared amongst competitors to some degree....
  • Systems architect
    Systems architect

    In systems engineering, the systems architect is the high-level designer of a system to be implemented.They establish the basic structure of the system, defining the core design features that are hard to change later....
  • Systems architecture
    Systems architecture

    A system architecture or systems architecture is the conceptual design that defines the structure and/or behavior of a system.An architecture description is a formal description of a system, organized in a way that supports reasoning about the structural properties of the system....
  • Systems design
    Systems design

    Systems design is the process or art of defining the architecture, components, modules, interfaces, and data for a system to satisfy specified requirements....
  • Technical architecture
    Technical architecture

    Technical architecture is one of several architecture domains that form the pillars of an enterprise architecture or solution architecture. It describes the structure and behaviour of the technology infrastructure of an enterprise, solution or system....


Further reading

  • Len Bass, Paul Clements, Rick Kazman: Software Architecture in Practice, Second Edition. Addison Wesley, Reading 5/9/2003 ISBN 0-321-15495-9 (This book, now in second edition, eloquently covers the fundamental concepts of the discipline. The theme is centered around achieving quality attributes of a system.)
  • Amnon H. Eden, Rick Kazman. On the distinction between architectural design and detailed design.
  • Garzás, Javier, and Piattini, Mario. An ontology for micro-architectural design knowledge, IEEE Software
    IEEE Software

    IEEE Software is a broad-based practitioner-oriented magazine of IEEE Computer Society targeting software professionals, including business analysts, requirements engineers, designers, architects, developers, process improvement experts, testers, quality engineers, and project managers....
     Magazine, Volume: 22, Issue: 2, March-April 2005. pp. 28 – 33.
  • Philippe Kruchten: Architectural Blueprints - the 4+1 View Model of Software Architecture. In: IEEE Software. 12 (6) November 1995, pp. 42-50 (also available online at the (PDF))
  • Tony Shan and Winnie Hua (2006). . Proceedings of the 10th IEEE International EDOC Enterprise Computing Conference (EDOC 2006), October 2006, p23-32


External links

  • Collection of at Software Engineering Institute (SEI), Carnegie Mellon University (CMU)
  • — website of IFIP Working Group 2.10 on Software Architecture
  • — independent resource of information on the discipline
  • , chapter 1 of Roy Fielding
    Roy Fielding

    Roy Thomas Fielding is an United States of American computer scientist. He is one of the principal authors of the [] specification , and a frequently-cited authority on computer network architecture....
    's REST dissertation
  • , an approach and tool to generate a distributed framework from a software architecture