This award-winning book, substantially updated to reflect the latest developments in the field, introduces the concepts and best practices of software architecture--how a software system is structured and how that system's elements are meant to interact. Distinct from the details of implementation, algorithm, and data representation, an architecture holds the key to achieving system quality, is a reusable asset that can be applied to subsequent systems, and is crucial to a software organization's business strategy.
Drawing on their own extensive experience, the authors cover the essential technical topics for designing, specifying, and validating a system. They also emphasize the importance of the business context in which large systems are designed. Their aim is to present software architecture in a real-world setting, reflecting both the opportunities and constraints that companies encounter. To that end, case studies that describe successful architectures illustrate key points of both technical and organizational discussions.
Topics new to this edition include:
Architecture design and analysis, including the Architecture Tradeoff Analysis Method (ATAM)
Capturing quality requirements and achieving them through quality scenarios and tactics
Using architecture reconstruction to recover undocumented architectures
Documenting architectures using the Unified Modeling Language (UML)
New case studies, including Web-based examples and a wireless Enterprise JavaBeansÍ (EJB) system designed to support wearable computers
The financial aspects of architectures, including use of the Cost Benefit Analysis Method (CBAM) to make decisions
If you design, develop, or manage the building of large software systems (or plan to do so), or if you are interested in acquiring such systems for your corporation or government agency, use Software Architecture in Practice, Second Edition, to get up to speed on the current state of software architecture.
I. ENVISIONING ARCHITECTURE.
1. The Architecture Business Cycle.
2. What Is Software Architecture?
3. A-7E Avionics System: A Case Study in Utilizing Architectural Structures.
II. CREATING AN ARCHITECTURE.
4. Understanding Quality Attributes.
5. Achieving Qualities.
6. Air Traffic Control: A Case Study in Designing for High Availability.
7. Creating the Architecture.
8. Flight Simulation: A Case Study in an Architecture for Integrability.
9. Documenting Software Architectures.
10. Reconstructing Software Architectures.
III. ANALYZING AN ARCHITECTURE.
11. The ATAM: A Comprehensive Method for Architecture Evaluation.
12. CBAM: A Quantitative Approach to Architecture Design Decision Making.
13. The World Wide Web: A Case Study in Interoperability.
IV. MOVING FROM ONE SYSTEM TO MANY.
14. Software Product Lines: Reusing Architectural Assets.
15. CelsiusTech: A Case Study in Product Line Development.
16. J2EE/EJB: A Case Study of an Industry Standard Computing Infrastructure.
17. The Luther Architecture: A Case Study in Mobile Applications Using J2EE.
18. Building Systems from Off-the-Shelf Components.
19. Software Architecture in the Future.
About Len Bass
(Also by Len Bass)
Dr. Len Bass is a senior software engineer at the SoftwareEngineering Institute (SEI). He has written or edited five booksand numerous papers on software engineering, human-computer interaction,and other topics. He headed a group that developed a softwarearchitecture for flight-training simulators that has been adoptedas a U.S. Air Force standard.
About Paul Clements
(Also by Paul Clements)
Dr. Paul Clementsis a senior member of the technical staff at the SEI, where heworks on software architecture and product line engineering. He is the author of more than three dozen papers on software design andreal-time systems.
About Rick Kazman
(Also by Rick Kazman)
Dr. Rick Kazmanis a senior software engineer at the SEI, where he leads the ArchitectureTradeoff Analysis initiative, and Adjunct Professor of ComputerScience at the University of Waterloo and the University of Toronto.He is the author of more than fifty papers in the areas of softwareengineering, human-computer interaction, and information retrieval.