Site Archive (Complete)
Architecture Blog: Why is everybody is so infatuated with defining what software architecture is?*
Architecture & Design
PATTERN LANGUAGE

Modeling, Managing, Making it Right.

by Jonathan Erickson
IF YOU BUILD IT

... Will they Come?

by Arnon Rotem-Gal-Oz
April 21, 2006

Why is everybody is so infatuated with defining what software architecture is?*

I was recently involved in an effort by Microsoft Israel to come up with definitions for "software architecture" that fit the Israeli market (that is, in Hebrew). I was reflecting on this effort when suddenly it hit me: Everybody--and I do mean everybody--is trying to define software architecture. Here are few examples :

IEEE 1471-2000: Software architecture is the fundamental organization of a system, embodied in its components, their relationships to each other and the environment, and the principles governing its design and evolution. (Almost 30 committee members, including Philippe Kruchten, came up with this definition.)

In "Who Needs an Architect" Martin Fowler quotes Ralph Johnston as saying "Architecture is the decisions that you wish you could get right early in a project."

Len Bass says "the architectural design of a system can be described from (at least) three perspectives -- functional partitioning of its domain of interest, its structure, and the allocation of domain function to that structure."

Microsoft's Michael Platt recently defined architecture as: "Architecture is the use of abstractions and models to simplify and communicate complex structures and processes to improve understanding and forecasting."

Charlie Alfred from Foliage Software Systems defines architecture as:
Software architecture consists of the rules and principles for how a system is decomposed into its component parts, the rationale for how responsibilities are allocated among those parts, and the policies and mechanisms that coordinate the interactions between those parts as they collaborate to fulfill the purpose of the system. (http://www.sei.cmu.edu/architecture/definitions.html).

Software architecture is at once the partitioning of a system into its significant elements, and the organization and integration of those elements into a cohesive whole. (IASA taxonomy workgroup)

SoftwareArchitectures.com defines it as: "Software Architecture is a set of abstract views that define a system in terms of 'elements' and the plumbing that allows for interaction between the 'elements'."

You can find literarily dozens of more definitions at this Wiki and at the Software Engineering Institute.

Oh, and there's my all-time favorite (presumably by Kent Beck): What is Software architecture? It is what software architects do.

Why are there so many definitions? What are the common characteristics of all these definitions? On my next post, I'll clear some of the fog and maybe even come up with a definition of my own. After all, if everybody is so infatuated with defining what software architecture is, why shouldn't I?


* The title is inspired by Robert C. Martin's Uncle Bob presentation at SDWest 2006.

Posted by Arnon Rotem-Gal-Oz at 03:03 AM  Permalink




 
INFO-LINK


Related Sites: DotNetJunkies, SD Expo, SqlJunkies