Software Architecture: Foundations, Theory, and Practice
January 2009, ©2009
1.1 The Power of Analogy: The Architecture of Buildings.
1.2 The Power and Necessity of Big Ideas: The Architecture of the Web.
1.3 The Power of Architecture in the Small: Architecture on the Desktop.
1.4 The Power of Architecture in Business: Productivity and Product Lines.
1.5 End Matter.
1.6 Review Questions.
1.8 Further Reading.
2. Architectures in Context: The Reorientation of Software Engineering.
2.1 Fundamental Understandings.
2.5 Analysis and Testing.
2.6 Evolution and Maintenance.
2.8 End Matter.
2.9 Review Questions.
2.11 Further Reading.
3. Basic Concepts.
3.5 End Matter.
3.6 Review Questions.
3.8 Further Reading.
4. Designing Architectures.
4.1 The Design Process.
4.2 Architectural Conception.
4.3 Refined Experience in Action: Styles and Architectural Patterns.
4.4 Architectural Conception in Absence of Experience.
4.5 Putting it All Together: Design Processes Revisited.
4.6 End Matter.
4.7 Review Questions.
4.9 Further Reading.
5.1 Connectors in Action: A Motivating Example.
5.2 Connector Foundations.
5.3 Connector Roles.
5.4 Connector Types and Their Variation Dimensions.
5.5 Example Connectors.
5.6 Using the Connector Framework.
5.7 End Matter.
5.8 Review Questions.
5.10 Further Reading.
6.1 Modeling Concepts.
6.2 Ambiguity, Accuracy, and Precision.
6.3 Complex Modeling: Mixed Content and Multiple Views.
6.4 Evaluating Modeling Techniques.
6.5 Specific Modeling Techniques.
6.6 When Systems Become Too Complex to Model.
6.7 End Matter.
6.8 Review Questions.
6.10 Further Reading.
7.1 Visualization Concepts.
7.2 Evaluating Visualizations.
7.3 Common Issues in Visualization.
7.4 Evaluating Visualization Techniques.
7.6 End Matter.
7.7 Review Questions.
7.9 Further Reading.
8.1 Analysis Goals.
8.2 Scope of Analysis.
8.3 Architectural Concern being Analyzed.
8.4 Level of Formality of Architectural Models.
8.5 Type of Analysis.
8.6 Level of Automation.
8.7 System Stakeholders.
8.8 Analysis Techniques.
8.9 End Matter.
8.10 Review Questions.
8.12 Further Reading.
9.2 Existing Frameworks.
9.4 End Matter.
9.5 Review Questions.
9.7 Further Reading.
10. Deployment and Mobility.
10.1 Overview of Deployment and Mobility Challenges.
10.2 Software Architecture and Deployment.
10.3 Software Architecture and Mobility.
10.4 End Matter.
10.5 Review Questions.
10.7 Further Reading.
11. Applied Architectures and Styles.
11.1 Distributed and Networked Architectures.
11.2 Architectures for Network-Based Applications.
11.3 Decentralized Architectures.
11.4 Service-Oriented Architectures and Web Services.
11.5 Architectures from Specific Domains.
11.6 End Matter.
11.7 Review Questions.
11.9 Further Reading.
12. Designing for Non-Functional Properties.
12.3 Scalability and Heterogeneity.
12.6 End Matter.
12.7 Review Questions.
12.9 Further Reading.
13. Security and Trust.
13.2 Design Principles.
13.3 Architectural Access Control.
13.4 Trust Management.
13.5 End Matter.
13.6 Review Questions.
13.8 Further Reading.
14. Architectural Adaptation.
14.1 Concepts of Architecture-Centric Adaptation.
14.2 A Conceptual Framework for Architectural Adaptation.
14.3 Techniques for Supporting Architecture-Centric Change.
14.4 End Matter.
14.5 Review Questions.
14.7 Further Reading.
15. Domain-Specific Software Engineering.
15.1 Domain-Specific Software Engineering in a Nutshell.
15.2 Domain-Specific Software Architecture.
15.3 DSSAs, Product Lines, and Architectural Styles.
15.4 DSSE Examples.
15.5 End Matter.
15.6 Review Questions.
15.8 Further Reading.
16.1 What Are Standards?
16.2 Specific Standards.
16.3 Process Standards.
16.4 End Matter.
16.5 Review Questions.
16.7 Further Reading.
17. People, Roles, and Terms.
17.1 Who Are Software Architects?
17.2 What Do Software Architects Do?
17.3 How Do Software Architects Work?
17.4 How Do Software Architects Relate to Other Stakeholders?
17.5 Remaining Challenges.
17.6 End Matter.
17.7 Review Questions.
17.8 Further Reading.
Central focus on design: emphasizes that design permeates the entire software lifecycle--from requirements through maintenance and evolution
Focused on practical principles and insights: rather than just a survey or overview of various languages, techniques, and tools, the text provides concise, practical strategies for designing, implementing, and evolving successful systems using software architecture.
Long-term relevance and comprehensive scope: synthesis of more than 15 years of work on software architecture from both academic research and industrial practice; covers influential approaches from the past and present, placed in context with guidance as to their relative strengths and weaknesses
Practical organization and progression of topics makes it useful to a variety of readers: first third of the book provides a high-level overview on software architecture and design; middle third addresses technically weighty topics such as fundamental design principles and strategies for modeling, visualization, analysis, and implementation; and final third is dedicated to advanced topics such as product-line architectures, domain-specific development, non-traditional software systems, and the role of software architecture in organizations.
Targeted for both students and practitioners: a true textbook, the book is replete with elaborated examples, review questions, exercises for the reader, and pointers to other references, but it is also contains advanced topics, offering insights about topics that will be both useful to students and new to many practitioners
Incorporates recent research results and contains previously unpublished results: written by primary researchers and authors in the field, the text contains the very latest research results and includes some material which is completely new