Common Misconceptions about Software Architecture by Philippe Kruchten Rational Fellow Rational Software Canada References to architecture are everywhere: in every article, in every ad. And we take this word for granted. We all seem to understand what it means. But there isn't any well- accepted definition of software architecture. Are we all understanding the same thing? We gladly accept that software architecture is the design, the structure, or the infrastructure. Many ideas are floating around concerning why and how you design or acquire an architecture and who does it. In this article I review some of these accepted ideas and show why, in my opinion, they may be misconceptions. "Architecture is design." Yes, architecture is design. It is about making the difficult choices on how the system will be implemented. It is not just the "what." But not all design is architecture. We see this word applied more and more frequently to any form and aspect of design. A few years ago, Mary Shaw pleaded: "Do not dilute the meaning of the term architecture by applying it to everything in sight." Unfortunately things have become worse, not better. Architecture is one aspect of the design, focusing on the major elements -- the elements that are structurally important, but also those that have a more lasting impact on the performance, reliability, cost, and adaptability of the system. Architecting is choosing the small set of mechanisms, patterns, and styles that are going to permeate the rest of the design and give it its integrity. Architecture is the tool that allows us to master complexity. It cannot be the whole design. It has to limit itself to a certain level of abstraction but still be concrete enough to draw definite http://www.therationaledge.com/content/apr_01/m_misconceptions_pk.html Copyright Rational Software 2001