Is ‘Software Architecture’ Really Architecture ?

Harrison Ainsworth

2009-07-11

The software world doesn't know what ‘architecture’ means. It needs to seek edification from other disciplines.

Usual meaning

The SEI (Software Engineering Institute) has a collection of definitions representive of authoritative and common use. A typical example is:

“The software architecture of a program or computing system is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements, and the relationships among them. ‘Externally visible’ properties refers to those assumptions other elements can make of an element, such as its provided services, performance characteristics, fault handling, shared resource usage, and so on.” – ‘Software Architecture in Practice’; Bass, Clements; 2003.

This is a confusion with engineering, making architecture merely a grandiloquence for high-level engineering design. The term is used to denote a difference in degree, yet it suggests a difference in kind. There is always an implication of something more, and this is why such definitions always seem to fall short.

Software has adopted the word from the building industry, but has entirely overlooked the original meaning.

Justified meaning

The AIA (American Institute of Architects) and AIAS (American Institute of Architecture Students) offer a succinct summary:

“Architecture is the imaginative blend of art and science in the design of environments for people. People need places to eat, work, live and play. Architects transform these needs into concepts and then develop the concepts into building images that can be constructed by others.” – archcareers.org (AIA, AIAS)

Architecture contains and oversees various sub-tasks, but forming what to build is the definitive factor. It concerns the external, user-facing features, and unifying them in a built structure.

Where building has the physical, software has the logical, so a translation might be: “‘Software architecture’ is the reflection and creation of logical structures in human activity, and their expression in various material forms. It is about forming what to do.” This is the functionality, usage, interface, as a whole structure that drives the rest of development.

If architecture is better defined, engineering becomes better defined too.

Why

This is important because it is about thinking clearly, and that surely is the core of software – what else is it made of?

And software development, like any organised discipline, can benefit from reusing established knowledge. Adapting what has worked before is the best base for advance.

Unfortunately, the software world suffers from insularity. To quote recent research:

“It is interesting to note that there was no reliance on such fields as Mathematics, Engineering, or any of the Sciences. Without passing any judgment on this finding, it is clear that SE research tends to be quite self-contained, not relying on any other disciplines for its thinking.” – ‘Research in software engineering: an analysis of the literature’; Glass, Vessey, Ramesh; 2002. s 4.4 (‘no reliance’ really did mean zero references)

If we want to improve software: we should learn something about physical architecture and physical engineering.

References