1. An Introduction and History of Software Architectures, Components, and Reuse.- 1.1 Introduction.- 1.2 Software Architecture.- 1.3 Reusable Components.- 1.4 Setting a Context for Component Reuse.- 1.5 Components and How to Use Them.- 1.6 Current and Future Developments.- 2. Components, Scripts and Glue.- 2.1 Introduction.- 2.2 Motivation and State-of-the-Art.- 2.3 A Conceptual Framework for Software Composition.- 2.3.1 Terminology.- 2.3.2 Concepts in Practice.- 2.3.3 Other Aspects of the Conceptual Framework.- 2.4 PICCOLA ? a Small Composition Language.- 2.5 Discussion.- 2.6 Conclusions.- 3. Business Component Development.- 3.1 Introduction.- 3.1.1 Business Needs.- 3.1.2 Software Components.- 3.1.3 Business Components.- 3.1.4 Structure.- 3.2 Business Component Concepts.- 3.2.1 The Business Component Vision.- 3.2.2 Terminology.- 3.2.3 Component Granularity.- 3.2.4 Distribution Models.- 3.3 Business Component Run-time Concerns.- 3.3.1 The Business Object Facility.- 3.3.2 BOF Transparencies.- 3.3.3 BOF Services.- 3.3.4 BOF Frameworks.- 3.3.5 Technologies and Initiatives.- 3.4 Business Component Development Process Concerns.- 3.4.1 An Approach to Business Component Development.- 3.4.2 Business Component Patterns.- 3.4.3 Standards.- 3.5 Summary.- 4. Designing Component Kits and Architectures with Catalysis.- 4.1 Introduction.- 4.2 What is a Component?.- 4.3 Families of Products from Kits of Components.- 4.3.1 Larger Components.- 4.3.2 Component Strategies.- 4.4 Catalysis: Modelling Component Behaviour.- 4.4.1 Actions.- 4.4.2 Refinement and Traceability.- 4.4.3 Refinement from Domain to Components.- 4.5 Modelling for Component-Based Development.- 4.5.1 Domain Modelling.- 4.5.2 Specifying Component Behaviour.- 4.5.3 Designing Components.- 4.5.4 Defining Component Connectors.- 4.5.5 Component Partitioning.- 4.5.6 Processes for Component-Based Development.- 4.6 Summary.- 5. Reuse Requires Architecture.- 5.1 Introduction.- 5.2 What do we Mean by Software Architecture?.- 5.2.1 Architectural Choice.- 5.2.2 Architecture-Driven Design.- 5.3 Case Study in Reuse ? Matra Cap C3 Systems.- 5.4 Architecture-Based Reuse.- 5.5 Organisation and Technology.- 5.5.1 Case Study ? "Diagonal" Inc.- 5.6 Managing the Technology.- 5.6.1 Case Study ?"Vertical" Ltd.- 5.7 Components and Reuse.- 5.8 Summary.- 5.8.1 Recommendations.- 6. Designing Software Architectures Through Evaluation and Transformation.- 6.1 Introduction.- 6.2 Requirements Terminology.- 6.3 Example.- 6.4 Overview of the Method.- 6.5 Functionality-Based Architectural Design.- 6.6Assessing Quality Attributes.- 6.6.1 Scenario-Based Assessment.- 6.6.2 Simulation.- 6.6.3 Mathematical Modelling.- 6.6.4 The Role of Experience.- 6.7 Architecture Transformation.- 6.7.1 Impose Architectural Style.- 6.7.2 Impose Architectural Pattern.- 6.7.3 Apply Design Pattern.- 6.7.4 Convert Quality Requirements to Functionality.- 6.7.5 Distribution of Requirements.- 6.8 Related Work.- 6.9 Conclusions.- 7. An Architecture for Internet Business Applications with Business Components.- 7.1 Introduction.- 7.2 Example.- 7.3 Database Access.- 7.4 A One-Layer Two-Tier Internet Business Application Architecture.- 7.5 Vision for Internet Business Applications.- 7.6 Internet Object Server for Business Entities with RMI.- 7.7 Business Entities Versus Business Processes.- 7.8 Five-Layer Architecture.- 7.9 Providing Layers of Business Objects as Components.- 7.10 Business Components.- 7.11 Conclusions.- 7.12 Acknowledgments.- 8. Lean Product-Line Architectures for Client-Server Systems - Concepts & Experience.- 8.1 Introduction.- 8.2 The CACS System: an End User Perspective.- 8.3 Rearchitecting Client-Server Systems.- 8.4 Framework Technology and Reflection as a Basis of Self-Configuring Product-Line Architectures.- 8.4.1 Framelets - Small is Beautiful.- 8.4.2 Reflection Versus Abstract Classes and Interfaces.- 8.5 A Sample Framelet Family.- 8.5.1 List Handling Framelet.- 8.5.2 RPC Framelet.- 8.5.3 Framelet Coupling.- 8.6 Discussion and Conclusions.- 8.6.1 Java Evaluation.- 8.6.2 Quantitative Data.- 8.6.3 Software Engineering Challenges.- 9. Issues in Industrial Product-Line Architectures.- 9.1 Introduction.- 9.2 The Case Study.- 9.2.1 Method.- 9.3 Product-Line Architectures and Reusable Assets.- 9.4 Issues in Product-Line Architectures.- 9.4.1 Organisation.- 9.4.2 Process.- 9.4.3 Technology.- 9.5 Related Work.- 9.6 Conclusion.- 10. Architectural Standards, Processes and Patterns for Enterprise Systems.- 10.1 Today's Enterprises Face Increasing Competitive Challenges.- 10.2 Distributed Components Offer a Route Forward.- 10.3 "Reuse" Really Means Achieving Economies of Scale.- 10.4 A Component-Capable Organisation Must be Mature.- 10.5 There are Several Synergistic Standards for Enterprise Components...- 10.5.1 CORBA ? Common Object Request Broker Architecture.- 10.5.2 UML ?Unified Modeling Language.- 10.5.3 XMI ? XML Metadata Interchange.- 10.5.4 Java ? a Standard Programming Language.- 10.5.5 Enterprise Java Beans ? a Standard Programming Model for Enterprise Componentry.- 10.5.6 TCP/IP, HTML, HTTP, SSL, etc. ? Standards for the Internet.- 10.6 Enterprise Components Require a New Generation of Middleware.- 10.7 Architecture Patterns are Encapsulated Solutions to the Distributed Application Design Problem.- 10.8 Conclusion.- 11. How Not to Reinvent Some Wheels: Lessons from Interactive System Architectures.- 11.1 Lessons from Another Place.- 11.2 Boxes and Arrows are Not Enough.- 11.3 Properties, Not Topologies.- 11.4 Domain Decompositions are Essential.- 11.4.1 Machine-Centred Decomposition Rationales.- 11.4.2 User-Centred Decomposition Rationales.- 11.4.3 Function Specificity.- 11.4.4 Abstraction Independence.- 11.4.5 Evolvability.- 11.4.6 Summary.- 11.5 Interactions Between Quality Attributes and Software Architectures.- 11.6 Trade-Offs are Unavoidable.- 11.7 Tools are Essential, but Virtually No Good Ones Exist.- 11.8 Conclusions.- 11.9 Acknowledgements.- 12. An Industrial Perspective.- 12.1 The Current Situation.- 12.1.1 What We Do.- 12.1.2 Sharing Common Solutions.- 12.1.3 Information Overload and Management.- 12.1.4 Addressing Change: the Impact of Architecture.- 12.1.5 Tools and Standards.- 12.2 Architectural Approaches to Software Engineering in Industry.- 12.2.1 How Does Software Architecture Fit "Industry" Software Development?.- 12.2.2 How are Frameworks and Patterns Used in Industry?.- 12.2.3 What is the Impact of these New Approaches on Traditional Software Development Methodologies?.- 12.2.4 Conclusions.- 12.3 Software Architectures and Component Engineering in Philips.- 12.3.1 Introduction.- 12.3.2 Why Components?.- 12.3.3 Approaches to Component-Based Development.- 12.3.4 Conclusions.