|
4.1. What Is a Software Architecture?The literature in our field provides many different definitions of software architecture. Booch, Rumbaugh, and Jacobson [BRJ99] claim that "An architecture is the set of significant decisions about the organization of a software system . . ." Brass, Clements, and Kazman define software architecture in [BCK03]: "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." The IEEE Standard 610.12-1990 claims that "Architecture is the organizational structure of a system." Fowler characterizes architecture in [Fow02]: "'Architecture' is a term that lots of people try to define, with little agreement. There are two common elements: One is the highest-level breakdown of a system into its parts; the other, decisions that are hard to change." You can find even more definitions at http://www.sei.cmu.edu/architecture/definitions.html. For our purposes, we define software architecture in the sidebar, "Definition of Software Architecture."
In this book, we will also use the terms application and application landscape. An application is a set of software components that serves a distinctive purpose, and an application landscape is the sum of all applications of an organization. Ideally, all applications of an application landscape comply with a single architectural blueprint. However, in practice, they usually don't. We also casually use one particular phrase: "Software component X belongs to architecture Y." More precisely, this phrase means: "Software component X belongs to an application landscape which is designed according to an architecture Y." |
|