Definitions of architecture with regard to software systems.
A course on "Software Architecting" with many interesting documents and references.
Bass, Clemens and Kazman, 2003
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 (Software Architecture in Practice (2nd edition), Addison-Wesley 2003).
Hofmeister, Nord and Soni, 2000
Define two main aspects of software architecture:
The two main aspects of software architecture are that it provides a design plan - a blueprint - of a system, and that it is an abstraction to help manage the complexity of a system.
Software Architecture as a Design Plan …is a structural plan that describes the elements of the system, how they fit together, and how they work together to fulfill the system's requirements.
Software Architecture as an Abstraction …The software architecture is not a comprehensive decomposition or refinement of the system: Many of the details needed to implement the system are abstracted and encapsulated within an element of the architecture. … The software architecture should define and describe the elements of the system at a relatively coarse granularity. … The architect should consider the kinds of changes to which the system will need to adapt; for example, the modifiability and portability of the system. (Applied Software Architecture, Addison-Wesley 2000).
Jacobson, Booch and Rumbaugh, 1999
Architecture The set of significant decisions about the organization of a software system, the selection of the structural elements and their interfaces by which the system is composed, together with their behavior as specified in the collaborations among those elements, the composition of these structural and behavioral elements into progressively larger subsystems, and the architectural style that guides this organization—these elements and their interfaces, their collaborations, and their composition. Software architecture is concerned not only with structure and behavior but with usage, functionality, performance, resilience, reuse, comprehensibility, economic and technology constraints and trade-offs, and aesthetic concerns (The Unified Software Development Process, Addison-Wesley 1999).
Kameshwar Eranki (Senior Product Manager, PeopleSoft Inc., Pleasanton, CA, USA): Software Architecture defines the fundamental elements, components and the framework in which the elements/components work and how they interact with each other to deliver the desired business expectations, meeting the cost performance criteria and defined constraints, and taking into account the requirements of scalability, reliability, usability, and maintainability factors.
Christophe Alviset (Applications and Projects Department Head, INSEE, Paris, France): A systems architecture is the set of components, their attributes and the ways of using them that are necessary to build a system or a set of systems. It depends on the set of people working to build the systems, their skills and the current state of the art. It helps them to agree on their respective roles. It aims to achieve some desirable functionalities in the systems that are built, such as evolutivity, robustnesss, redundancy, and so forth.
Cris Kobryn (Chief Architect, MCI Systemhouse Corp., PO Box 2320, Fallbrook CA 92028): Consider the following definition of architecture from the OMG UML v. 1.2 specification: The organizational structure of a system. An architecture can be decomposed into parts that interact through interfaces, relationships that connect parts and constraints for assembling parts. In UML the parts that interact through interfaces include but are not limited to classes, components, and subsystems.
If you enjoyed this post, make sure you subscribe to my RSS feed!