What is Software Architecture

There is no standardised, universally shared definition of what software architecture is. I have therefore compiled a small collection myself on this page. Some of these definitions are serious, others are more of a joke, but with a serious core. The fact that there are so many definitions also shows how broad the spectrum is that we deal with in this area.

For a while, the Software Engineering Institute at Carnegie Mellon University offered a long list of definitions. This is still available in the Internet Archive under Community Software Architecture Definitions.

Barry Boehms Definition of Software Architecture

A software system architecture comprises

  • A collection of software and system components, connections, and constraints.

  • A collection of system stakeholders’ need statements.

  • A rationale which demonstrates that the components, connections, and constraints define a system that, if implemented, would satisfy the collection of system stakeholders’ need statements.

— Boehm et al.
1995

Ralph Johnsons Definition of Software Architecture

[i.e., Software architecture is] the design decisions that need to be made early in a project

— Ralph Johnsons

Architecture is about the important stuff. Whatever that is.

— Ralph Johnsons

Rick Hayes-Roth Definition of Software Architecture

..an abstract system specification consisting primarily of functional components described in terms of their behaviors and interfaces and component-component interconnections.

— Rick Hayes-Roth
1994