Architecture and Its Significance
Introduction
Rising Complexity
Constant Change
Distributed Development
Practice for Architecture-Centric Engineering
Summary
Questions
References
Stakeholders and Their Business Goals
Introduction
Influence of Business Goals on the Architecture
Representing Business Goals
Refining Business Goals
Translating Engineering Objectives into Architectural Requirements
Prioritizing Architectural Requirements
Summary
Questions
References
Establishing Broad Functional Understanding
Introduction
System Context
System Use Cases
Domain Model
An End-to-End Operational View
Constraints
Summary
Questions
References
Getting Ready for Designing the Architecture
Introduction
Architectural Drivers
Patterns
Layered View
Data Flow View
Data-Centered View
Adaptation View
Language Extension View
User Interaction View
Component Interaction View
Distribution View
What Is a Tactic?
Tactics for Availability
Tactics for Interoperability
Tactics for Modifiability
Tactics for Performance
Tactics for Security
Tactics for Testability
Tactics for Usability
Summary
Questions
References
Creating the Architecture
Introduction
Architecture of the Building Automation System
Support for Adding New Field Devices
Addressing Latency and Load Conditions
Addressing International Language Support
Architecture Trade-offs
Revisiting Modifiability Drivers
Revisiting Performance Drivers
The Final Architecture
Summary
Questions
References
Communicating the Architecture
Introduction
Views as a Basis for Documentation
Documenting a View
Building an Architecture Description Document
Architecture Description for the Building Automation System
Section 1: Document Road Map
Section 1.1: Description of the Architecture Documentation
Section 1.2: How Stakeholders Can Use the Documentation
Section 2: System Overview
Section 2.1: Business Goals
Section 2.2: System Context
Section 2.3: Functions
Section 2.4: Quality Attribute Requirements
Section 2.5: Constraints
Section 2.6: Architectural Drivers
Section 3: View Template
Section 4: Views
Section 4.1: Module View
Section 4.2: Component-and-Connector View
Section 4.3: Deployment View
Section 5: Mapping between Views
Section 6: Rationale
Conclusions
Questions
References
Architecture and Detailed Design
Introduction
Defining Interfaces
Creating the Domain Object Model
The Rule Manager
Addressing Architectural Responsibilities
Addressing Functional Responsibilities
Summary
Question
References
Role of Architecture in Managing Structural Complexity
Introduction
Analyzing System Complexity
Partitioning a DSM
Partitioning Algorithms
Tearing a DSM
Managing Structural Complexity
Testing the Hypothesis
Discussion and Conclusions
Discussion Questions
References
Biography
Raghvinder (Raghu) Sangwan is an associate professor of software engineering at Pennsylvania State University. His work involves design and development of software systems, their architecture, and automatic and semiautomatic approaches to assess their design and code quality. He has published several papers in these areas. Prior to joining the Pennsylvania State University, Raghu was a software architect at Siemens, where he worked on large-scale systems in the domains of health care, automation, transportation, and mining; many of these systems were developed by teams geographically distributed around the world. This experience resulted in his coauthoring the Global Software Development Handbook and co-organizing the first International Conference on Global Software Engineering (ICGSE 2006), sponsored by the Institute for Electrical and Electronics Engineers (IEEE). He also holds a visiting scientist appointment at the Software Engineering Institute at Carnegie Mellon University. He received his PhD in computer and information sciences from Temple University and is a senior member of IEEE and the Association for Computing Machinery (ACM).






