1.2 What Is Software Architecture?
I will rely on the definition of software architecture found in Soni, Nord, and Hofmeister [1995]:
Software architecture is concerned with capturing the structures of a system and the relationships among the elements. . . . The structures we found fell into several broad categories: conceptual architecture, module architecture, execution architecture, and code architecture.
The software architecture of a product serves both as a design plan and as an abstraction of the product envisioned to be implemented. I have seen within the past ten years a growing awareness of the importance of describing software architecture before implementing a product. This relates directly to software project management, since the project plan must support the creation and description of the architecture. Once created, the architecture must be described to every member of the development team. Quite simply, I have found that development teams with a good vision of what they are implementing have a better chance to successfully implement the product. For architecture-centric software project management, the project manager recognizes and supports the realization that a good software architecture is necessary for developing a good product.