1st Edition

Software and Systems Architecture in Action

By Raghvinder S. Sangwan Copyright 2015
    232 Pages 70 B/W Illustrations
    by Auerbach Publications

    232 Pages 70 B/W Illustrations
    by Auerbach Publications

    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.

    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).