What is software architecture?

  • Authors:
  • Fritz Solms

  • Affiliations:
  • University of Pretoria, South Africa

  • Venue:
  • Proceedings of the South African Institute for Computer Scientists and Information Technologists Conference
  • Year:
  • 2012

Quantified Score

Hi-index 0.00

Visualization

Abstract

Currently there is no consensus on what exactly software architecture is or where the boundary between software architecture design and application design lies. In this paper the concept of a software architecture is analyzed from a number of different perspectives. In particular, it is argued that a software reference architecture is a relatively pure specification of a software architecture as it addresses only infrastructural and quality concerns and does not provide any application functionality. Two examples of widely adopted reference architectures are analyzed in order to gain a deeper understanding of the concept of a software architecture. Current definitions of software architecture are analyzed and three classes of software architecture definitions are identified. The differences of the concept of software architecture across these classes is discussed and their relationships to current architecture description languages are explored. It is argued that none these definitions provide a sound basis for differentiating between application and architecture components. Based on insights obtained from the analyzed reference architectures, the paper proposes a new definition of software architecture as well as a specification of the elements of a software architecture specification. Software architecture is defined as the software infrastructure within which application components providing user functionality can be specified, deployed and executed. It is argued that a software architecture description should include, across levels of granularity, the basic concepts and constraints within which application components are to be specified, the architectural components addressing technical concerns, the integration infrastructure, and the architectural strategies used to concretely address quality requirements.