Defining Software Architecture

Many software engineering experts and organisations have defined the term Software Architecture. Their words may be different but essence is same in all cases.

Some prominent definitions of Software Architecture are given below:

  • ANSI/IEEE 1471-2000 defines software architecture as:

           Architecture is defined by the recommended practice as the fundamental organisation of system, embodied in its components, their relationship to each other and the environment and the principles governing its design and evolution.
         [system--components--interaction--design rules--how system may change]

  • According to Kazman,
          The software architecture of a program or computing system is the structure or structures of system, which comprise software elements, the externally visible properties of these elements, and the relationships among them.

  • RUP Version
          Architecture of a software system (at any given point) is the organisation or structure of the system's significant components interacting through interfaces, with components composed of successively smaller components and interfaces.
        [interfaces, iterative]

  • Shaw and Mary
Architecture = Algorithms + Data Structure + gross organisation + global control structure + protocols for communication, synchronisation and data access + functionality assignment to design elements + physical distribution + composition of design elements + scaling + performance + selection among design alternatives
[distribution, scalability, performance]