Software Architecture
Foundations, Theory, and Practice
Inbunden, Engelska, 2009
Av Richard N. Taylor, Nenad Medvidovic, Eric Dashofy, Irvine) Taylor, Richard N. (University of California, Nenad (University of Southern California) Medvidovic, Eric (Aerospace Corporation) Dashofy, Richard N Taylor
2 599 kr
Produktinformation
- Utgivningsdatum2009-02-06
- Mått185 x 236 x 33 mm
- Vikt1 293 g
- SpråkEngelska
- Antal sidor736
- FörlagJohn Wiley & Sons Inc
- EAN9780470167748
Tillhör följande kategorier
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 11.1 The Power of Analogy: The Architecture of Buildings, 21.1.1 Limitations of the Analogy, 51.1.2 So, What’s the Big Idea?, 61.2 The Power and Necessity of Big Ideas: The Architecture of the Web, 71.3 The Power of Architecture in the Small: Architecture on the Desktop, 121.4 The Power of Architecture in Business: Productivity and Product Lines, 151.5 End Matter, 201.6 Review Questions, 211.7 Exercises, 211.8 Further Reading, 212 Architectures in Context: The Reorientation of Software Engineering 232.1 Fundamental Understandings, 242.2 Requirements, 252.3 Design, 292.3.1 Design Techniques, 312.4 Implementation, 332.4.1 Implementation Strategies, 352.5 Analysis and Testing, 382.6 Evolution and Maintenance, 402.7 Processes, 422.7.1 The Turbine Visualization, 432.7.2 Example Process Depictions, 492.8 End Matter, 522.9 Review Questions, 532.10 Exercises, 542.11 Further Reading, 553 Basic Concepts 573.1 Terminology, 583.1.1 Architecture, 583.1.2 Component, 683.1.3 Connector, 703.1.4 Configuration, 723.1.5 Architectural Style, 723.1.6 Architectural Pattern, 733.2 Models, 753.3 Processes, 753.4 Stakeholders, 793.5 End Matter, 793.6 Review Questions, 803.7 Exercises, 803.8 Further Reading, 814 Designing Architectures 834.1 The Design Process, 854.2 Architectural Conception, 874.2.1 Fundamental Conceptual Tools, 874.2.2 The Grand Tool: Refined Experience, 904.3 Refined Experience in Action: Styles and Architectural Patterns, 914.3.1 Domain Specific Software Architectures, 934.3.2 Architectural Patterns, 944.3.3 Introduction to Styles, 994.3.4 Simple Styles, 1024.3.5 More Complex Styles, 1244.3.6 Discussion: Patterns and Styles, 1374.3.7 Design Recovery, 1394.4 Architectural Conception in Absence of Experience: Unprecedented Design, 1444.5 Putting it All Together: Design Processes Revisited, 1494.5.1 Insights from Requirements, 1504.5.2 Insights from Implementation, 1514.6 End Matter, 1524.7 Review Questions, 1534.8 Exercises, 1544.9 Further Reading, 1545 Connectors 1575.1 Connectors in Action: A Motivating Example, 1595.2 Connector Foundations, 1615.3 Connector Roles, 1635.4 Connector Types and Their Variation Dimensions, 1645.4.1 Procedure Call Connectors, 1655.4.2 Event Connectors, 1665.4.3 Data Access Connectors, 1675.4.4 Linkage Connectors, 1685.4.5 Stream Connectors, 1695.4.6 Arbitrator Connectors, 1705.4.7 Adaptor Connectors, 1705.4.8 Distributor Connectors, 1715.5 Example Connectors, 1725.5.1 Event-Based Data Distribution Connectors, 1735.5.2 Grid-Based Data Distribution Connectors, 1745.5.3 Client-Server–Based Data Distribution Connectors, 1755.5.4 P2P-Based Data Distribution Connectors, 1765.6 Using the Connector Framework, 1765.6.1 Selecting Appropriate Connectors, 1775.6.2 Detecting Mismatches, 1805.7 End Matter, 1815.8 Review Questions, 1825.9 Exercises, 1835.10 Further Reading, 1836 Modeling 1856.1 Modeling Concepts, 1866.1.1 Stakeholder-Driven Modeling, 1866.1.2 Basic Architectural Concepts, 1886.1.3 Elements of the Architectural Style, 1896.1.4 Static and Dynamic Aspects, 1906.1.5 Functional and Non-Functional Aspects, 1916.2 Ambiguity, Accuracy, and Precision, 1916.2.1 Ambiguity, 1926.2.2 Accuracy and Precision, 1926.3 Complex Modeling: Mixed Content and Multiple Views, 1946.3.1 Views and Viewpoints, 1946.3.2 Consistency among Views, 1966.4 Evaluating Modeling Techniques, 1986.5 Specific Modeling Techniques, 1996.5.1 Generic Techniques, 1996.5.2 Early Architecture Description Languages, 2096.5.3 Domain- and Style-Specific ADLs, 2216.5.4 Extensible ADLs, 2296.6 When Systems Become Too Complex to Model, 2426.7 End Matter, 2436.8 Review Questions, 2466.9 Exercises, 2466.10 Further Reading, 2467 Visualization 2497.1 Visualization Concepts, 2507.1.1 Canonical Visualizations, 2507.1.2 Textual Visualizations, 2517.1.3 Graphical Visualizations, 2537.1.4 Hybrid Visualizations, 2557.1.5 The Relationship between Visualizations and Views, 2557.2 Evaluating Visualizations, 2597.2.2 Constructing a Visualization, 2617.2.3 Coordinating Visualizations, 2647.2.4 Beyond Design: Using Visualization Dynamically, 2667.3 Common Issues in Visualization, 2687.3.1 Same Symbol, Different Meaning, 2687.3.2 Differences without Meaning, 2697.3.3 Decorations without Meaning, 2697.3.4 Borrowed Symbol, Different Meaning, 2707.4 Evaluating Visualization Techniques, 2727.5 Techniques, 2727.5.1 Textual Visualizations, 2727.5.2 Informal Graphical Editors, 2747.5.3 UML: The Unified Modeling Language, 2767.5.4 Rapide, 2807.5.5 The Labeled Transition State Analyzer (LTSA), 2827.5.6 xADL 2.0, 2847.6 End Matter, 2887.7 Review Questions, 2897.8 Exercises, 2907.9 Further Reading, 2908 Analysis 2918.1 Analysis Goals, 2958.1.1 Completeness, 2958.1.2 Consistency, 2968.1.3 Compatibility, 3028.1.4 Correctness, 3038.2 Scope of Analysis, 3038.2.1 Component- and Connector-Level Analysis, 3048.2.2 Subsystem- and System-Level Analysis, 3058.2.3 Data Exchanged in the System or Subsystem, 3078.2.4 Architectures at Different Abstraction Levels, 3088.2.5 Comparison of Two or More Architectures, 3108.3 Architectural Concern being Analyzed, 3108.4 Level of Formality of Architectural Models, 3128.5 Type of Analysis, 3138.6 Level of Automation, 3148.7 System Stakeholders, 3158.8 Analysis Techniques, 3178.8.1 Inspections and Reviews, 3178.8.2 Model-Based Analysis, 3228.8.3 Simulation-Based Analysis, 3288.9 End Matter, 3338.10 Review Questions, 3348.11 Exercises, 3358.12 Further Reading, 3369 Implementation 3379.1 Concepts, 3389.1.1 The Mapping Problem, 3389.1.2 Architecture Implementation Frameworks, 3409.1.3 Evaluating Frameworks, 3439.1.4 Middleware, Component Models, and Application Frameworks, 3439.1.5 Building a New Framework, 3469.1.6 Concurrency, 3479.1.7 Generative Technologies, 3489.1.8 Ensuring Architecture-to-Implementation Consistency, 3499.2 Existing Frameworks, 3509.2.1 Frameworks for the Pipe-and-Filter Architectural Style, 3509.2.2 Frameworks for the C2 Architectural Style, 3529.3 Examples, 3609.3.1 Implementing Lunar Lander in the Pipe-and-Filter Style using the java.io Framework, 3609.3.2 Implementing Lunar Lander in the C2-Style Using the Lightweight C2 Framework, 3669.4 End Matter, 3779.5 Review Questions, 3789.6 Exercises, 3789.7 Further Reading, 37910 Deployment and Mobility 38110.1 Overview of Deployment and Mobility Challenges, 38510.2 Software Architecture and Deployment, 38710.2.1 Basic Concepts, 38810.2.2 Deployment Activities, 38810.2.3 Tool Support, 40210.3 Software Architecture and Mobility, 40510.3.1 Basic Concepts, 40510.3.2 Mobility Paradigms, 40510.3.3 Challenges in Migrating Code, 40610.4 End Matter, 40810.5 Review Questions, 40910.6 Exercises, 40910.7 Further Reading, 41011 Applied Architectures and Styles 41311.1 Distributed and Networked Architectures, 41411.1.1 Limitations of the Distributed Systems Viewpoint, 41511.2 Architectures for Network-Based Applications, 41611.2.1 The REpresentational State Transfer Style (REST), 41611.2.2 Commercial Internet-Scale Applications, 42211.3 Decentralized Architectures, 42411.3.1 Shared Resource Computation: The Grid World, 42511.3.2 Peer-to-Peer Styles, 42611.3.3 Summary Notes on Latency and Agency, 43211.4 Service-Oriented Architectures and Web Services, 43311.5 Architectures from Specific Domains, 43711.5.1 Robotics, 43711.5.2 Wireless Sensor Networks, 44311.6 End Matter, 44311.7 Review Questions, 44511.8 Exercises, 44511.9 Further Reading, 44612 Designing for Non-Functional Properties 44712.1 Efficiency, 45012.1.1 Software Components and Efficiency, 45112.1.2 Software Connectors and Efficiency, 45312.1.3 Architectural Configurations and Efficiency, 45512.2 Complexity, 45912.2.1 Software Components and Complexity, 46012.2.2 Software Connectors and Complexity, 46312.2.3 Architectural Configurations and Complexity, 46412.3 Scalability and Heterogeneity, 46712.3.1 Software Components and Scalability, 46812.3.2 Software Connectors and Scalability, 47112.3.3 Architectural Configurations and Scalability, 47312.4 Adaptability, 47512.4.1 Software Components and Adaptability, 47512.4.2 Software Connectors and Adaptability, 47612.4.3 Architectural Configurations and Adaptability, 47712.5 Dependability, 47812.5.1 Software Components and Dependability, 48012.5.2 Software Connectors and Dependability, 48012.5.3 Architectural Configurations and Dependability, 48112.6 End Matter, 48312.7 Review Questions, 48412.8 Exercises, 48412.9 Further Reading, 48513 Security and Trust 48713.1 Security, 48913.2 Design Principles, 49213.3 Architectural Access Control, 49713.3.1 Access Control Models, 49813.3.2 Connector-Centric Architectural Access Control, 49913.4 Trust Management, 50813.4.1 Trust, 50913.4.2 Trust Model, 51013.4.3 Reputation-Based Systems, 51013.4.4 Architectural Approach to Decentralized Trust Management, 51413.5 End Matter, 52213.6 Review Questions, 52313.7 Exercises, 52313.8 Further Reading, 52414 Architectural Adaptation 52514.1 Concepts of Architecture-Centric Adaptation, 52614.1.1 Sources and Motivations for Change, 52614.1.2 Shearing Layers, 52914.1.3 Structural Elements Subject to Change, 53214.1.4 Change Agents and Context, 53514.1.5 Architecture: The Central Abstraction, 53914.2 A Conceptual Framework for Architectural Adaptation, 53914.3 Techniques for Supporting Architecture-Centric Change, 54214.3.1 Basic Techniques Corresponding to Activities of the Conceptual Framework, 54214.3.2 Architectures/Styles that Support Adaptation, 55114.3.3 The Special Problems of On-the-Fly and Autonomous Adaptation, 55714.4 End Matter, 56114.5 Review Questions, 56214.6 Exercises, 56314.7 Further Reading, 56315 Domain-Specific Software Engineering 56515.1 Domain-Specific Software Engineering in a Nutshell, 57015.1.1 Similar Problems, Similar Solutions, 57015.1.2 Viewing DSSE through the Prism of Domain, Business, and Technology, 57315.2 Domain-Specific Software Architecture, 57415.2.1 Domain Knowledge, 57415.2.2 Canonical Requirements, 58515.2.3 Canonical Solution Strategies—Reference Architectures, 58815.2.4 Product Lines and Architecture, 59115.2.5 Product-Line Concepts, 59215.2.6 Specifying the Architecture of a Product Line, 59415.2.7 Capturing Variations over Time, 55915.2.8 Using Product Lines as Tools for What-If Analysis, 60015.2.9 Implementing Product Lines, 60215.2.10 Unifying Product Architectures with Different Intellectual Heritage, 60415.2.11 Organizational Issues in Creating and Managing Product Lines, 60615.3 DSSAs, Product Lines, and Architectural Styles, 60615.4 DSSE Examples, 60815.4.1 Koala and Consumer Electronics, 60815.4.2 Software-Defined Radios, 61115.5 End Matter, 61615.6 Review Questions, 61815.7 Exercises, 61815.8 Further Reading, 61916 Standards 62116.1 What Are Standards?, 62216.1.1 Why Use Standards?, 62316.1.2 Drawbacks of Standards, 62416.1.3 When to Adopt, 62516.2 Specific Standards, 62716.2.1 Conceptual Standards, 62716.2.2 Notational Standards, 63916.2.3 SysML, 64116.2.4 Standard Tools, 64516.2.5 Telelogic System Architect, 64716.3 Process Standards, 64816.3.1 Rational Unified Process, 64816.3.2 Model-Driven Architecture, 65016.4 End Matter, 65116.5 Review Questions, 65316.6 Exercises, 65316.7 Further Reading, 65417 People, Roles, and Teams 65517.1 Who Are Software Architects?, 65717.1.1 Architect as a Software Designer, 65817.1.2 Architect as a Domain Expert, 65817.1.3 Architect as a Software Technologist, 65917.1.4 Architect as a Standards Compliance Expert, 66017.1.5 Architect as a Software Engineering Economist, 66117.1.6 Some Bad Habits, 66117.2 What Do Software Architects Do?, 66317.2.1 Develop Project Strategy, 66317.2.2 Design Systems, 66417.2.3 Communicate with Stakeholders, 66417.2.4 Lead, 66417.3 How Do Software Architects Work?, 66517.3.1 Balance of Skills, 66517.3.2 Allegiance to the Project, 66617.3.3 Allegiance to the Organization, 66717.3.4 Duration of Involvement, 66817.3.5 Team Structure, 66917.4 How Do Software Architects Relate to Other Stakeholders?, 66917.4.1 Architects and Engineers, 67017.4.2 Architects and Managers, 67117.4.3 Other Stakeholders, 67117.5 Remaining Challenges, 67317.6 End Matter, 67317.7 Review Questions, 67417.8 Further Reading, 674Bibliography 675Index 691