Modern-day projects require software and systems engineers to work together in realizing architectures of large and complex software-intensive systems. To date, the two have used their own tools and methods to deal with similar issues when it comes to the requirements, design, testing, maintenance, and evolution of these architectures.
Software and Systems Architecture in Action explores practices that can be helpful in the development of architectures of large-scale systems in which software is a major component. Examining the synergies that exist between the disciplines of software and systems engineering, it presents concepts, techniques, and methods for creating and documenting architectures.
The book describes an approach to architecture design that is driven from systemic quality attributes determined from both the business and technical goals of the system, rather than just its functional requirements. This architecture-centric design approach utilizes analytically derived patterns and tactics for quality attributes that inform the architect's design choices and help shape the architecture of a given system.
The book includes coverage of techniques used to assess the impact of architecture-centric design on the structural complexity of a system. After reading the book, you will understand how to create architectures of systems and assess their ability to meet the business goals of your organization.
Ideal for anyone involved with large and complex software-intensive systems, the book details powerful methods for engaging the software and systems engineers on your team. The book is also suitable for use in undergraduate and graduate-level courses on software and systems architecture as it exposes students to the concepts and techniques used to create and manage architectures of software-intensive systems.
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).
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