Software architecture is foundational to the development of large, practical software-intensive applications. This brand-new text covers all facets of software architecture and how it serves as the intellectual centerpiece of software development and evolution. Critically, this text focuses on supporting creation of real implemented systems. Hence the text details not only modeling techniques, but design, implementation, deployment, and system adaptation -- as well as a host of other topics -- putting the elements in context and comparing and contrasting them with one another. Rather than focusing on one method, notation, tool, or process, this new text/reference widely surveys software architecture techniques, enabling the instructor and practitioner to choose the right tool for the job at hand. Software Architecture is intended for upper-division undergraduate and graduate courses in software architecture, software design, component-based software engineering, and distributed systems; the text may also be used in introductory as well as advanced software engineering courses.
Richard N. Taylor is a Professor of Information and Computer Sciences at the University of California at Irvine and a member of the Department of Informatics. He received the Ph.D. degree in Computer Science from the University of Colorado at Boulder in 1980. Professor Taylor is the Director of the Institute for Software Research, which is dedicated to fostering innovative basic and applied research in software and information technologies through partnerships with industry and government. He has served as chairman of ACM's Special Interest Group on Software Engineering, SIGSOFT, chairman of the steering committee for the International Conference on Software Engineering, and was general chair of the 1999 International Joint Conference on Work Activities, Coordination, and Collaboration and the 2004 International Symposium on the Foundations of Software Engineering. Taylor was a 1985 recipient of a Presidential Young Investigator Award. In 1998 he was recognized as an ACM Fellow and in 2005 was awarded the ACM SIGSOFT Distinguished Service Award.
1. The Big Idea. 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.7 Exercises. 1.8 Further Reading. 2. Architectures in Context: The Reorientation of Software Engineering. 2.1 Fundamental Understandings. 2.2 Requirements. 2.3 Design. 2.4 Implementation. 2.5 Analysis and Testing. 2.6 Evolution and Maintenance. 2.7 Processes. 2.8 End Matter. 2.9 Review Questions. 2.10 Exercises. 2.11 Further Reading. 3. Basic Concepts. 3.1 Terminology. 3.2 Models. 3.3 Processes. 3.4 Stakeholders. 3.5 End Matter. 3.6 Review Questions. 3.7 Exercises. 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.8 Exercises. 4.9 Further Reading. 5. Connectors. 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.9 Exercises. 5.10 Further Reading. 6. Modeling. 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.9 Exercises. 6.10 Further Reading. 7. Visualization. 7.1 Visualization Concepts. 7.2 Evaluating Visualizations. 7.3 Common Issues in Visualization. 7.4 Evaluating Visualization Techniques. 7.5 Techniques. 7.6 End Matter. 7.7 Review Questions. 7.8 Exercises. 7.9 Further Reading. 8. Analysis. 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.11 Exercises. 8.12 Further Reading. 9. Implementation. 9.1 Concepts. 9.2 Existing Frameworks. 9.3 Examples. 9.4 End Matter. 9.5 Review Questions. 9.6 Exercises. 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.6 Exercises. 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.8 Exercises. 11.9 Further Reading. 12. Designing for Non-Functional Properties. 12.1 Efficiency. 12.2 Complexity. 12.3 Scalability and Heterogeneity. 12.4 Adaptability. 12.5 Dependability. 12.6 End Matter. 12.7 Review Questions. 12.8 Exercises. 12.9 Further Reading. 13. Security and Trust. 13.1 Security. 13.2 Design Principles. 13.3 Architectural Access Control. 13.4 Trust Management. 13.5 End Matter. 13.6 Review Questions. 13.7 Exercises. 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.6 Exercises. 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.7 Exercises. 15.8 Further Reading. 16. Standards. 16.1 What Are Standards? 16.2 Specific Standards. 16.3 Process Standards. 16.4 End Matter. 16.5 Review Questions. 16.6 Exercises. 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. Bibliography. Index.