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 systemFacts About Software system

A software system is a system based on software forming part of a computer system ....
, 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 stakeholdersStakeholder (general)

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

Background

The field of computer scienceComputer science

Computer science, or computing science, is the study of the theoretical foundations of information and computation and...
 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 concernsSeparation of concerns

In computer science, separation of concerns is the process of breaking a program into distinct features that overlap in func...
. 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 abstractionAbstraction (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...
 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 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 DijkstraEdsger Dijkstra

Prof Dr Edsger Wybe Dijkstra was a Dutch computer scientist....
 in 1968 and David ParnasDavid Parnas

David Lorge Parnas is an early pioneer of software engineering who developed the concept of module design which is the found...
 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, 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, IrvineFacts About University of California, Irvine

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

is the first formal standard in the area of software architecture, and was recently adopted by ISO as ISO/IEC DIS 25961IEEE 1471

IEEE 1471 is the short name for a standard formally known as ANSI/IEEE 1471-2000, Recommended Practice for Architecture De...
.

Describing architectures

Architecture description languages

Architecture description languageArchitecture description language

An Architecture Description Language is a computer language used to describe software and/or system architectures....
s (ADLs) are used to describe a Software Architecture. Several different ADLs have been developed by different organizations, including AADLArchitecture analysis and design language

The Architecture Analysis & Design Language is an architecture description language standardized by SAE....
 (SAE standard), WrightWright (ADL)

In software architecture, Wright is an architecture description language developed at Carnegie Mellon University....
 (developed by Carnegie Mellon), AcmeFacts About Acme (ADL)

Acme is an Architecture Description Language developed at Carnegie Mellon University....
 (developed by Carnegie Mellon), xADL (developed by UCI), DarwinFacts About Darwin (ADL)

Darwin is a Computing Architecture Description Language....
 (developed by Imperial College LondonImperial College London

Imperial College London is a prestigious British academic institution focusing on science, engineering and medicine, complem...
), 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, which are analogous to the different types of blueprintBlueprint

A blueprint is a plan or technical drawing usually documenting an architecture or an engineering design....
s made in building architectureArchitecture

* Architectural history* Architectural mythology...
.
Within the ontology established by ANSI/IEEE 1471-2000IEEE 1471

IEEE 1471 is the short name for a standard formally known as ANSI/IEEE 1471-2000, Recommended Practice for Architecture De...
, 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 UMLUnified Modeling Language

In software engineering, the Unified Modeling Language is a non-proprietary specification language for object modeling....
 was established as a standardStandardization

Standardization or standardisation , in the context related to technologies and industries, is the process of establis...
 "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 biasNotational bias

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

A programming language is an artificial language that can be used to control the behavior of a machine, particularly a compu...
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+14+1

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

    The Department of Defense Architecture Framework is a framework for development of a systems architecture or enterprise arch...
     (DODAF)
  • UK Ministry of Defence Architectural FrameworkMODAF

    The UK Ministry of Defence Architectural Framework defines a standardised way of modelling an enterprise....
     (MODAF)
  • The Open Group Architecture FrameworkTOGAF

    The Open Group Architecture Framework is a framework for Enterprise Architecture which provides a comprehensive approach to the de...
     (TOGAF)
  • Zachman frameworkZachman framework

    The Zachman Framework is a framework for Enterprise Architecture which provides a formal and highly structured way of defin...
  • Federal Enterprise ArchitectureFederal Enterprise Architecture Summary

    The Federal Enterprise Architecture is an initiative of the Office of Management and Budget that aims to comply with the Cli...
  • Reference Model of Open Distributed ProcessingRM-ODP Overview

    RM-ODP is the common name for the Open Distributed Processing Reference Model, and is also known as ISO 10746....
     (RM-ODP)
  • Service-Oriented ModelingService-oriented modeling Overview

    Service-oriented modeling is a software development methodology that employs disciplines and a universal language to provid...
     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 engineeringComponent-based software engineering

Component-based software engineering is a branch of the software engineering discipline, with emphasis on decomposition of t...
 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 patternsDesign Patterns

Design Patterns: Elements of Reusable Object-Oriented Software is a software engineering book proposing standard soluti...
, architectural patternsArchitectural pattern (computer science)

Architectural Design Patterns are Design Patterns that offer well-established solutions to architectural problems in softwar...
, 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-ServerClient-server

Client-server is network architecture which separates the client from the server....
 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-peerPeer-to-peer

A peer-to-peer computer network is a network that relies primarily on the computing power and bandwidth of the participants...
 nodes.

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-serverClient-server

    Client-server is network architecture which separates the client from the server....
  • Database-centric architectureDatabase-centric architecture

    Database-centric architecture or data-centric architecture has several distinct meanings, generally relating to softwa...
  • Distributed computingDistributed computing

    Distributed computing is decentralised and parallel computing, using two or more computers communicating over a network to a...
  • Event Driven ArchitectureEvent Driven Architecture

    Event Driven Architecture is a software architecture that defines how systems can be engineered and designed to sense and re...
  • Implicit invocationImplicit invocation Summary

    Implicit invocation is used by some authors for a style of software architecture in which a system is structured around even...
  • Monolithic applicationMonolithic Application Overview

    Monolithic Application is the SOA terminology for describing an application that's fine grained as opposed to coarse grained...
  • Peer-to-peerPeer-to-peer

    A peer-to-peer computer network is a network that relies primarily on the computing power and bandwidth of the participants...
  • Pipes and filters
  • PluginPlugin

    A plugin is a computer program that interacts with a main application to provide a certain, usually very specific, functio...
  • Representational State TransferRepresentational State Transfer

    Representational State Transfer is a software architectural style for distributed hypermedia systems like the world wide web...
  • Structured (module-based but usually monolithic within modules)
  • Software componentrySoftware componentry

    Software componentry is a field of study within software engineering....
     (strictly module-based, usually object-oriented programmingObject-oriented programming

    In computer science, object-oriented programming is a computer programming paradigm....
     within modules, slightly less monolithic)
  • Service-oriented architectureService-oriented architecture

    In computing, the term Service-Oriented Architecture expresses a perspective of software architecture that defines the use o...
  • Search-oriented architecture
  • Space based architecture
  • Shared nothing architectureShared nothing architecture

    A shared nothing architecture is a distributed computing architecture where each node is independent and self-sufficient, an...
  • Three-tier modelThree-tier (computing)

    In computing, Three-tier is a client-server architecture in which the user interface, functional process logic , data storag...


See also

  • Computer architectureComputer architecture

    In computer engineering, computer architecture is the conceptual design and fundamental operational structure of a computer ...
  • Architecture Tradeoff Analysis Method (ATAM)Architecture Tradeoff Analysis Method

    ATAM stands for Architecture Tradeoff Analysis Method....
     - an architecture evaluation method.
  • Dependency Structure MatrixFacts About Dependency Structure Matrix

    A Dependency Structure Matrix, or DSM, is a compact, matrix representation of a system or project....
  • Enterprise architectureEnterprise architecture

    Enterprise Architecture is the practice of applying a comprehensive and rigorous method for describing a current and/or futu...
  • Process architectureProcess architecture

    Process architecture is the structural design of general process systems and applies to fields such as computers, business p...
  • Software antipatterns
  • Software architectSoftware architect

    A software systems architect or software architect is responsible for:...
  • Software Architectural ModelSoftware Architectural Model

    An Architectural Model is a rich and rigorous diagram, created using available standards, in which the primary concern is t...
  • Software design patterns
  • Software designSoftware design

    Software design is a process of problem-solving and planning for a software solution....
  • Software systemSoftware system

    A software system is a system based on software forming part of a computer system ....
  • Standard data modelStandard data model

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

    In engineering, a system architecture or systems architecture is related to some aspect of the structure of a system....
     / Systems architectSystems architect

    The systems architect is responsible for:...
  • Systems designSystems design

    Systems design is the process or art of defining the hardware and software architecture, components, modules, interfaces, an...
  • Technical architectureTechnical architecture

    Technical architecture refers to the structured process of designing and building software architecture, with focus on inter...
  • Service-Oriented ModelingService-oriented modeling

    Service-oriented modeling is a software development methodology that employs disciplines and a universal language to provid...
     Framework (SOMF)
  • Common layers in an information system logical architectureCommon layers in an information system logical architecture Summary

    The following four layers are maybe the most common layers in a logical multilayered architecture for an information system with a...


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.)
  • Tony Shan and Winnie Hua (2006). . Proceedings of the 10th IEEE International EDOC Enterprise Computing Conference (EDOC 2006), October 2006, p23-32.
  • Garzás, Javier, and Piattini, Mario. An ontology for micro-architectural design knowledge, IEEE SoftwareIEEE Software

    IEEE Software is an IEEE Computer Society practitioner-oriented magazine targeting software engineers and 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))
  • Amnon H. Eden, Rick Kazman. On the distinction between architectural design and detailed design.

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