You are previewing Real-Time Software Design for Embedded Systems.
O'Reilly logo
Real-Time Software Design for Embedded Systems

Book Description

This tutorial reference takes the reader from use cases to complete architectures for real-time embedded systems using SysML, UML, and MARTE and shows how to apply the COMET/RTE design method to real-world problems. The author covers key topics such as architectural patterns for distributed and hierarchical real-time control and other real-time software architectures, performance analysis of real-time designs using real-time scheduling, and timing analysis on single and multiple processor systems. Complete case studies illustrating design issues include a light rail control system, a microwave oven control system, and an automated highway toll system. Organized as an introduction followed by several self-contained chapters, the book is perfect for experienced software engineers wanting a quick reference at each stage of the analysis, design, and development of large-scale real-time embedded systems, as well as for advanced undergraduate or graduate courses in software engineering, computer engineering, and software design.

Table of Contents

  1. Cover
  2. Half title
  3. Title page
  4. Imprints page
  5. Dedication
  6. Contents
  7. Preface
    1. Overview
    2. What This Book Provides
    3. Intended Audience
    4. Ways to Read This Book
  8. Annotated Table of Contents
    1. Part I: Overview
      1. Chapter 1. Introduction
      2. Chapter 2. Overview of UML, SysML, and MARTE
      3. Chapter 3. Real-Time Software Design and Architecture Concepts
    2. Part II: Real-Time Software Design Method
      1. Chapter 4. Overview of Real-Time Software Design Method for Embedded Systems
      2. Chapter 5. Structural Modeling for Real-Time Embedded Systems with SysML and UML
      3. Chapter 6. Use Case Modeling for Real-Time Embedded Systems
      4. Chapter 7. State Machines for Real-Time Embedded Systems
      5. Chapter 8. Object and Class Structuring for Real-Time Embedded Software
      6. Chapter 9. Dynamic Interaction Modeling for Real-Time Embedded Software
      7. Chapter 10. Software Architectures for Real-Time Embedded Systems
      8. Chapter 11. Software Architectural Patterns for Real-Time Embedded Systems
      9. Chapter 12. Component-Based Software Architectures for Real-Time Embedded Systems
      10. Chapter 13. Concurrent Real-Time Software Task Design
      11. Chapter 14. Detailed Real-Time Software Design
      12. Chapter 15. Designing Real-Time Software Product Line Architectures
    3. Part III: Analysis of Real-Time Software Designs
      1. Chapter 16. System and Software Quality Attributes for Real-Time Embedded Systems
      2. Chapter 17. Performance Analysis of Real-Time Software Designs
      3. Chapter 18. Applying Performance Analysis to Real-Time Software Designs
    4. Part IV: Real-Time Software Design Case Studies for Embedded Systems
      1. Chapter 19. Microwave Oven Control System Case Study
      2. Chapter 20. Railroad Crossing Control System Case Study
      3. Chapter 21. Light Rail Control System Case Study
      4. Chapter 22. Pump Control System Case Study
      5. Chapter 23. Highway Toll Control System Case Study
    5. Appendix A. Conventions Used in This Textbook
    6. Appendix B. Catalog of Software Architectural Patterns
    7. Appendix C. Pseudocode Templates for Concurrent Tasks
    8. Appendix D. Teaching Considerations
    9. Glossary
    10. Bibliography
    11. Index
  9. Acknowledgments
  10. Part I Overview
    1. 1 Introduction
      1. 1.1 The Challenge
      2. 1.2 Real-Time Embedded Systems and Applications
      3. 1.3 Characteristics of Real-Time Embedded Systems
      4. 1.4 Distributed Real-Time Embedded Systems
        1. 1.4.1 The Internet of Things
      5. 1.5 Cyber-Physical Systems
      6. 1.6 Requirements for Real-Time Software Design Method for Embedded Systems
      7. 1.7 COMET/RTE: A Real-Time Software Design Method for Embedded Systems
      8. 1.8 Visual Modeling Languages: UML, SysML, and MARTE
      9. 1.9 Summary
    2. 2 Overview of UML, SysML, and MARTE
      1. 2.1 Model-Driven Architecture with SysML and UML
        1. 2.1.1 UML Diagrams
      2. 2.2 Use Case Diagrams
      3. 2.3 Classes and Objects
      4. 2.4 Class Diagrams
        1. 2.4.1 Associations
        2. 2.4.2 Aggregation and Composition Hierarchies
        3. 2.4.3 Generalization/Specialization Hierarchy
        4. 2.4.4 Visibility
      5. 2.5 Interaction Diagrams
        1. 2.5.1 Sequence Diagrams
        2. 2.5.2 Communication Diagrams
      6. 2.6 State Machine Diagrams
      7. 2.7 Package Diagrams
      8. 2.8 Concurrent Sequence and Communication Diagrams
        1. 2.8.1 Message Communication on Concurrent Communication Diagrams
      9. 2.9 Deployment Diagrams
      10. 2.10 Composite Structure Diagrams
      11. 2.11 UML Extension Mechanisms and Profiles
        1. 2.11.1 Stereotypes
        2. 2.11.2 Tagged Values
        3. 2.11.3 Constraints
      12. 2.12 SysML
        1. 2.12.1 Block Definition Diagrams
      13. 2.13 MARTE Profile
      14. 2.14 Timing Diagrams
      15. 2.15 Tool Support for UML, SysML, and MARTE
      16. 2.16 Summary
    3. 3 Real-Time Software Design and Architecture Concepts
      1. 3.1 Object-Oriented Concepts
      2. 3.2 Information Hiding
        1. 3.2.1 Information Hiding in Object-Oriented Design
        2. 3.2.2 Information Hiding Applied to Internal Data Structures
        3. 3.2.3 Information Hiding Applied to Interfacing to I/O Devices
      3. 3.3 Inheritance
      4. 3.4 Active and Passive Objects
      5. 3.5 Concurrent Processing
        1. 3.5.1 Advantages of Concurrent Tasking
        2. 3.5.2 Heavyweight and Lightweight Processes
      6. 3.6 Cooperation between Concurrent Tasks
        1. 3.6.1 Mutual Exclusion Problem
        2. 3.6.2 Example of Mutual Exclusion
        3. 3.6.3 Task Synchronization Problem
        4. 3.6.4 Producer/Consumer Problem
      7. 3.7 Information Hiding Applied to Access Synchronization
      8. 3.8 Runtime Support for Real-Time Concurrent Processing
        1. 3.8.1 Operating System Services
        2. 3.8.2 Real-Time Operating Systems
      9. 3.9 Task Scheduling
        1. 3.9.1 Task Scheduling Algorithms
        2. 3.9.2 Task States
        3. 3.9.3 Task Context Switching
      10. 3.10 Software Architecture and Components
        1. 3.10.1 Components and Component Interfaces
        2. 3.10.2 Connectors
      11. 3.11 Summary
  11. Part II Real-Time Software Design Method
    1. 4 Overview of Real-Time Software Design Method for Embedded Systems
      1. 4.1 COMET/RTE System and Software Life Cycle model
      2. 4.2 Phases in COMET/RTE Life Cycle model
        1. 4.2.1 System Structural Modeling
          1. a) Structural Modeling of the Problem Domain
          2. b) Structural Modeling of the System Context
          3. c) Hardware/Software Boundary Modeling
          4. d) Software System Context Modeling
          5. e) System Deployment Modeling
        2. 4.2.2 Requirements Modeling
        3. 4.2.3 Analysis Modeling
        4. 4.2.4 Design Modeling
        5. 4.2.5 Incremental Software Construction
        6. 4.2.6 Incremental Software Integration
        7. 4.2.7 System Testing
      3. 4.3 Comparison of the COMET/RTE Life Cycle with Other Software Processes
        1. 4.3.1 Comparison of COMET/RTE with Unified Software Development Process
        2. 4.3.2 Comparison of COMET/RTE with the Spiral Model
        3. 4.3.3 Comparison of COMET/RTE with Agile Methods
      4. 4.4 Survey of Design Methods for Real-Time Embedded Systems
      5. 4.5 Multiple Views of System and Software Architecture
      6. 4.6 Summary
    2. 5 Structural Modeling for Real-Time Embedded Systems with SysML and UML
      1. 5.1 Static Modeling Concepts
        1. 5.1.1 Associations
        2. 5.1.2 Composition and Aggregation Hierarchies
        3. 5.1.3 Inheritance and Generalization/Specialization
      2. 5.2 Categorization of Blocks and Classes using Stereotypes
      3. 5.3 Structural Modeling of the Problem Domain with SysML
        1. 5.3.1 Modeling Real-World Entities in the Problem Domain
        2. 5.3.2 Modeling the Embedded System
        3. 5.3.3 Modeling Information Entities as Entity Classes
      4. 5.4 Structural Modeling of the System Context
        1. 5.4.1 Modeling External Entities of the Embedded System
        2. 5.4.2 Modeling Associations on the System Context Diagram
        3. 5.4.3 Example of System Context Diagrams
      5. 5.5 Hardware/Software Boundary Modeling
      6. 5.6 Structural Modeling of the Software System Context
        1. 5.6.1 Modeling External Entities of the Software System
        2. 5.6.2 Modeling Associations on the Software System Context Diagram
        3. 5.6.3 Examples of Software System Context Modeling
      7. 5.7 Defining Hardware/Software Interfaces
      8. 5.8 System Deployment Modeling
      9. 5.9 Summary
    3. 6 Use Case Modeling for Real-Time Embedded Systems
      1. 6.1 Use Cases
      2. 6.2 Actors
        1. 6.2.1 Actors in Real-Time Embedded Systems
        2. 6.2.2 Systems and Software Engineering Perspectives on Actors
        3. 6.2.3 Primary and Secondary Actors
        4. 6.2.4 Modeling Actors from a Systems Engineering Perspective
        5. 6.2.5 Modeling Actors from a Software Engineering Perspective
        6. 6.2.6 Generalization and Specialization of Actors
      3. 6.3 Identifying Use Cases
        1. 6.3.1 Use Case Structuring Guidelines
      4. 6.4 Documenting Use Cases in the Use Case Model
      5. 6.5 Specifying Nonfunctional Requirements
      6. 6.6 Examples of Use Case Descriptions
        1. 6.6.1 Example of Use Case from a Systems Engineering Perspective
        2. 6.6.2 Example of Use Case from a Software Engineering Perspective
      7. 6.7 Use Case Relationships
      8. 6.8 The Include Use Case Relationship
        1. 6.8.1 Example of Include Relationship and Inclusion Use Cases
        2. 6.8.2 Structuring a Lengthy Use Case
      9. 6.9 The Extend Use Case Relationship
        1. 6.9.1 Extension Points
        2. 6.9.2 Example of Extension Point and Extension Use Cases
      10. 6.10 Use Case Packages
      11. 6.11 Summary
    4. 7 State Machines for Real-Time Embedded Systems
      1. 7.1 State Machines
        1. 7.1.1 Events
        2. 7.1.2 States
      2. 7.2 Examples of State Machine
      3. 7.3 Events and Guard Conditions
      4. 7.4 Actions
        1. 7.4.1 Actions on State Transitions
        2. 7.4.2 Entry Actions
        3. 7.4.3 Exit Actions
        4. 7.4.4 Activities
      5. 7.5 Hierarchical State Machines
        1. 7.5.1 Sequential State Decomposition
        2. 7.5.2 Composite States
        3. 7.5.3 Aggregation of State Transitions
        4. 7.5.4 History State
        5. 7.5.5 Orthogonal State Machines
      6. 7.6 Cooperating State Machines
      7. 7.7 Inherited State Machines
        1. Examples of Inherited State Machines
      8. 7.8 Developing State Machines from Use Cases
      9. 7.9 Example of Developing a State Machine from a Use Case
        1. 7.9.1 Develop State Machine for Main Sequence of Use Case
        2. 7.9.2 Consider Alternative Sequences of Use Case
        3. 7.9.3 Develop Integrated State Machine
        4. 7.9.4 Develop Hierarchical State Machine
      10. 7.10 Summary
    5. 8 Object and Class Structuring for Real-Time Embedded Software
      1. 8.1 Object and Class Structuring Criteria
      2. 8.2 Object and Class Structuring Categories
      3. 8.3 Object Behavior and Patterns
      4. 8.4 Boundary Classes and Objects
        1. 8.4.1 External Objects and Software Boundary Objects
        2. 8.4.2 Device I/O Boundary Objects
        3. 8.4.3 Proxy Objects
        4. 8.4.4 User Interaction Objects
        5. 8.4.5 Depicting External Entities and Boundary Classes
      5. 8.5 Entity Classes and Objects
      6. 8.6 Control Classes and Objects
        1. 8.6.1 State Dependent Control Objects
        2. 8.6.2 Coordinator Objects
        3. 8.6.3 Timer Objects
      7. 8.7 Application Logic Classes and Objects
        1. 8.7.1 Algorithm Objects
        2. 8.7.2 Service Objects
      8. 8.8 Summary
    6. 9 Dynamic Interaction Modeling for Real-Time Embedded Software
      1. 9.1 Object Interaction Modeling
        1. 9.1.1 Analysis and Design Decisions in Object Interaction Modeling
        2. 9.1.2 Sequence Diagrams and Communication Diagrams in Object Interaction Modeling
        3. 9.1.3 Generic and Instance Forms of Interaction Diagrams
      2. 9.2 Message Sequence Description
      3. 9.3 Approach for Dynamic Interaction Modeling
      4. 9.4 Stateless Dynamic Interaction Modeling
      5. 9.5 Examples of Stateless Dynamic Interaction Modeling
        1. 9.5.1 View Alarms Example
          1. 1. Develop Use Case Model
          2. 2. Determine Objects Needed to Realize Use Case
          3. 3. Determine Message Communication Sequence
        2. 9.5.2 Send Vehicle Status Example
          1. 1. Develop Use Case Model
          2. 2. Determine Objects Needed to Realize Use Case
          3. 3. Determine Message Communication Sequence
      6. 9.6 State Dependent Dynamic Interaction Modeling
        1. 9.6.1 Messages and Events
        2. 9.6.2 Steps in State Dependent Dynamic Interaction Modeling
        3. 9.6.3 Modeling Interaction Scenarios Controlled by State Machines
      7. 9.7 Example of State Dependent Dynamic Interaction Modeling: Microwave Oven System
        1. 9.7.1 Determine Main Sequence
        2. 9.7.2 Determine Alternative Sequences
        3. 9.7.3 Alternative Minute Plus Scenarios
        4. 9.7.4 Impact of Alternative Scenarios on State Machine
      8. 9.8 Summary
    7. 10 Software Architectures for Real-Time Embedded Systems
      1. 10.1 Overview of Software Architectures
        1. 10.1.1 Sequential Software Architectures
        2. 10.1.2 Concurrent Software Architectures
        3. 10.1.3 Component-Based Software Architectures
        4. 10.1.4 Architecture Stereotypes
      2. 10.2 Multiple Views of a Software Architecture
        1. 10.2.1 Structural View of a Software Architecture
        2. 10.2.2 Dynamic View of a Software Architecture
        3. 10.2.3 Deployment View of a Software Architecture
      3. 10.3 Transition from Analysis to Design
      4. 10.4 Separation of Concerns in Subsystem Design
        1. 10.4.1 Composite Object
        2. 10.4.2 Geographical Location
        3. 10.4.3 Clients and Services
        4. 10.4.4 User Interaction
        5. 10.4.5 Interface to External Objects
        6. 10.4.6 Scope of Control
      5. 10.5 Subsystem Structuring Criteria
        1. 10.5.1 Control Subsystem
        2. 10.5.2 Coordinator Subsystem
        3. 10.5.3 User Interaction Subsystem
        4. 10.5.4 Input/Output Subsystem
        5. 10.5.5 Data Collection Subsystem
        6. 10.5.6 Data Analysis Subsystem
        7. 10.5.7 Client Subsystem
        8. 10.5.8 Service Subsystem
      6. 10.6 Decisions about Message Communication between Subsystems
      7. 10.7 Summary
    8. 11 Software Architectural Patterns for Real-Time Embedded Systems
      1. 11.1 Software Design Patterns
        1. 11.1.1 Software Architectural Patterns
      2. 11.2 Layered Software Architectural Patterns
        1. 11.2.1 Layers of Abstraction Architectural Pattern
        2. 11.2.2 Kernel Architectural Pattern
      3. 11.3 Control Patterns for Real-Time Software Architectures
        1. 11.3.1 Centralized Control Architectural Pattern
        2. 11.3.2 Distributed Collaborative Control Architectural Pattern
        3. 11.3.3 Distributed Independent Control Architectural Pattern
        4. 11.3.4 Hierarchical Control Architectural Pattern
        5. 11.3.5 Master/Slave Architectural Pattern
      4. 11.4 Client/Service Software Architectural Patterns
        1. 11.4.1 Multiple Client/Single Service Architectural Pattern
        2. 11.4.2 Multiple Client/Multiple Service Architectural Pattern
      5. 11.5 Basic Software Architectural Communication Patterns
        1. 11.5.1 Synchronized Object Access Pattern
        2. 11.5.2 Asynchronous Message Communication Pattern
        3. 11.5.3 Bidirectional Asynchronous Message Communication Pattern
        4. 11.5.4 Synchronous Message Communication with Reply Pattern
        5. 11.5.5 Asynchronous Message Communication with Callback Pattern
        6. 11.5.6 Synchronous Message Communication without Reply Pattern
      6. 11.6 Software Architectural Broker Patterns
        1. 11.6.1 Service Registration Pattern
        2. 11.6.2 Broker Handle Pattern
        3. 11.6.3 Service Discovery Pattern
      7. 11.7 Group Message Communication Patterns
        1. 11.7.1 Broadcast Message Communication Pattern
        2. 11.7.2 Subscription/Notification Message Communication Pattern
      8. 11.8 Documenting Software Architectural Patterns
      9. 11.9 Applying Software Architectural Patterns
      10. 11.10 Summary
    9. 12 Component-Based Software Architectures for Real-Time Embedded Systems
      1. 12.1 Concepts for Component-Based Software Architectures
      2. 12.2 Designing Distributed Component-Based Software Architectures
      3. 12.3 Component Interface Design
        1. 12.3.1 Component Interfaces
        2. 12.3.2 Provided and Required Interfaces
        3. 12.3.3 Ports and Interfaces
        4. 12.3.4 Connectors and Interconnecting Components
      4. 12.4 Designing Composite Components
      5. 12.5 Examples of Component-Based Software Architecture
      6. 12.6 Component Structuring Criteria
        1. 12.6.1 Proximity to the Source of Physical Data and/or Physical Component
        2. 12.6.2 Localized Autonomy
        3. 12.6.3 Performance
        4. 12.6.4 Specialized Hardware
        5. 12.6.5 I/O Component
      7. 12.7 Design of Service Components
        1. 12.7.1 Sequential Service Component
        2. 12.7.2 Concurrent Service Component with Multiple Readers and Writers
        3. 12.7.3 Concurrent Service Component with Subscription and Notification
      8. 12.8 Distribution of Data
        1. 12.8.1 Distributed Service
        2. 12.8.2 Data Replication
      9. 12.9 Software Deployment
        1. 12.9.1 Software Deployment Issues
        2. 12.9.2 Examples of Software Deployment
      10. 12.10 Design of Software Connectors
        1. 12.10.1 Distributed Message Communication
        2. 12.10.2 Connectors for Distributed Components
        3. 12.10.3 Design of Distributed Message Connectors
      11. 12.11 Summary
    10. 13 Concurrent Real-Time Software Task Design
      1. 13.1 Concurrent Task Structuring Issues
      2. 13.2 Categorizing Concurrent Tasks
        1. 13.2.1 Task Structuring Criteria
      3. 13.3 I/O Task Structuring Criteria
        1. 13.3.1 Characteristics of I/O Devices
        2. 13.3.2 Event Driven I/O Tasks
        3. 13.3.3 Periodic I/O Tasks
          1. 13.3.3.1 Sensor-Based Periodic I/O Tasks
          2. 13.3.3.2 Timing Considerations for Periodic I/O Tasks
        4. 13.3.4 Demand Driven I/O Tasks
        5. 13.3.5 Resource Monitor Tasks
        6. 13.3.6 Event Driven Proxy Tasks
      4. 13.4 Internal Task Structuring Criteria
        1. 13.4.1 Periodic Tasks
        2. 13.4.2 Demand Driven Tasks
        3. 13.4.3 State Dependent Control Tasks
        4. 13.4.4 Coordinator Tasks
        5. 13.4.5 User Interaction and Service Tasks
        6. 13.4.6 Multiple Tasks of Same Type
      5. 13.5 Task Priority Criteria
        1. 13.5.1 Time-Critical Tasks
        2. 13.5.2 Non-Time-Critical Computationally Intensive Tasks
      6. 13.6 Task Clustering Criteria
        1. 13.6.1 Temporal Clustering
          1. 13.6.1.1 Example of Temporal Clustering
          2. 13.6.1.2 Issues in Temporal Clustering
        2. 13.6.2 Sequential Clustering
          1. 13.6.2.1 Example of Sequential Clustering
          2. 13.6.2.2 Issues in Sequential Clustering
        3. 13.6.3 Control Clustering
          1. 13.6.3.1 Example of Control Clustering
      7. 13.7 Design Restructuring by Using Task Inversion
        1. 13.7.1 Multiple Instance Task Inversion
      8. 13.8 Developing the Task Architecture
      9. 13.9 Task Communication and Synchronization
        1. 13.9.1 Asynchronous Message Communication
        2. 13.9.2 Synchronous Message Communication with Reply
        3. 13.9.3 Synchronous Message Communication without Reply
        4. 13.9.4 External and Timer Event Synchronization
        5. 13.9.5 Internal Event Synchronization
        6. 13.9.5 Task Interaction via Information-Hiding Object
      10. 13.10 Task Interface and Task Behavior Specifications
      11. 13.11 Summary
    11. 14 Detailed Real-Time Software Design
      1. 14.1 Design of Composite Tasks
        1. 14.1.1 Separation of Concerns between Tasks and Nested Classes
        2. 14.1.2 Design of Device I/O Classes
        3. 14.1.3 Design of State Machine Classes
        4. 14.1.4 Temporal Clustering Task and Device Interface Objects
        5. 14.1.5 Control Clustering Task and Information-Hiding Objects
      2. 14.2 Synchronization of Access to Classes
        1. 14.2.1 Example of Synchronization of Access to Class
        2. 14.2.2 Operations Provided for Synchronized Access to Class
        3. 14.2.3 Synchronization Using Mutual Exclusion
        4. 14.2.4 Synchronization of Multiple Readers and Writers
      3. 14.3 Designing Monitors
        1. 14.3.1 Example of Mutual Exclusion with Monitor
        2. 14.3.2 Monitors and Condition Synchronization
        3. 14.3.3 Synchronization of Multiple Readers and Writers Using a Monitor
        4. 14.3.4 Synchronization of Multiple Readers and Writers without Writer Starvation
      4. 14.4 Designing Connectors for Inter-Task Communication
        1. 14.4.1 Design of Message Queue Connector
        2. 14.4.2 Design of Message Buffer Connector
        3. 14.4.3 Design of Message Buffer and Response Connector
        4. 14.4.4 Design of Cooperating Tasks Using Connectors
        5. 14.4.5 Detailed Design of Components with Connectors
      5. 14.5 Task Event Sequencing Logic
        1. 14.5.1 Example of Event Sequencing Logic for Sender and Receiver Tasks
      6. 14.6 Detailed Real-Time Software Design in Robot and Vision Systems
        1. 14.6.1 Example of Event Synchronization between Robot Tasks
        2. Pick & Place Robot:
        3. Drilling Robot:
        4. 14.6.2 Example of Message Communication between Vision and Robot Tasks
        5. Vision Task:
        6. Robot Task:
      7. 14.7 Implementing Concurrent Tasks in Java
      8. 14.8 Summary
    12. 15 Designing Real-Time Software Product Line Architectures
      1. 15.1 Software Product Line Engineering
      2. 15.2 Problem Description of Microwave Oven SPL
      3. 15.3 Requirements Modeling for Software Product Lines
        1. 15.3.1 Use Case Modeling for Software Product Lines
        2. 15.3.2 Feature Modeling
      4. 15.4. Analysis Modeling for Software Product Lines
        1. 15.4.1 Static Modeling for Software Product Lines
        2. 15.4.2 Dynamic Interaction Modeling for Software Product Lines
        3. 15.4.3 Dynamic State Machine Modeling for Software Product Lines
      5. 15.5 Design Modeling for Software Product Lines
        1. 15.5.1 Modeling Component-Based Software Architectures
        2. 15.5.2 Software Architectural Patterns
      6. 15.6 Summary
  12. Part III Analysis of Real-Time Software Designs
    1. 16 System and Software Quality Attributes for Real-Time Embedded Systems
      1. 16.1 Scalability
      2. 16.2 Performance
      3. 16.3 Availability
      4. 16.4 Safety
      5. 16.5 Security
      6. 16.6 Maintainability
      7. 16.7 Modifiability
      8. 16.8 Testability
      9. 16.9 Traceability
      10. 16.10 Reusability
      11. 16.11 Summary
    2. 17 Performance Analysis of Real-Time Software Designs
      1. 17.1 Real-Time Scheduling Theory
        1. 17.1.1 Scheduling Periodic Tasks
        2. 17.1.2 Utilization Bound Theorem
        3. 17.1.3 Example of Applying Utilization Bound Theorem
        4. 17.1.4 Completion Time Theorem
        5. 17.1.5 Example of Applying Completion Time Theorem
        6. 17.1.6 Mathematical Formulation of Completion Time Theorem
      2. 17.2 Real-Time Scheduling for Aperiodic Tasks and Task Synchronization
        1. 17.2.1 Scheduling Periodic and Aperiodic Tasks
        2. 17.2.2 Scheduling with Task Synchronization
      3. 17.3 Generalized Real-Time Scheduling Theory
        1. 17.3.1 Priority Inversion
        2. 17.3.2 Generalized Utilization Bound Theorem
        3. 17.3.3 Generalized Completion Time Theorem
        4. 17.3.4 Real-Time Scheduling and Design
        5. 17.3.5 Example of Applying Generalized Utilization Bound Theorem
        6. 17.3.6 Example of Applying Generalized Completion Time Theorem
      4. 17.4 Performance Analysis Using Event Sequence Analysis
        1. 17.4.1 Example of Performance Analysis Using Event Sequence Analysis
      5. 17.5 Performance Analysis Using Real-Time Scheduling Theory and Event Sequence Analysis
      6. 17.6 Advanced Real-Time Scheduling Algorithms
      7. 17.7 Performance Analysis of Multiprocessor Systems
        1. 17.7.1 Performance Analysis of Independent Tasks on Multiprocessor Systems
        2. 17.7.2 Performance Analysis of Multiprocessor Systems with Mutual Exclusion
        3. 17.7.3 Performance Analysis of Multiprocessor Systems with Event Sequence Analysis
      8. 17.8 Estimation and Measurement of Performance Parameters
      9. 17.9 Summary
    3. 18 Applying Performance Analysis to Real-Time Software Designs
      1. 18.1 Example of Performance Analysis Using Event Sequence Analysis
      2. 18.2 Example of Performance Analysis Using Real-Time Scheduling Theory
      3. 18.3 Example of Performance Analysis Using Real-Time Scheduling Theory and Event Sequence Analysis
        1. 18.3.1 Equivalent Event Sequence Tasks
        2. 18.3.2 Assigning Rate-Monotonic Priorities
        3. 18.3.3 Detailed Rate-Monotonic Analysis
        4. 18.3.4 Assigning Non-Rate-Monotonic Priorities
        5. 18.3.5 Applying Generalized Real-Time Scheduling Theory to Tasks with Non-Rate-Monotonic Priorities
          1. Performance Analysis of Tasks in Proximity Event Sequence
          2. Performance Analysis of Tasks in Arrival Event Sequence
          3. Performance Analysis of Highest Priority Tasks
          4. Performance Analysis of Lowest Priority Tasks
        6. 18.3.6 Applying the Generalized Completion Time Theorem to Tasks with Non-Rate-Monotonic Priorities
        7. 18.3.7 Performance Analysis of Tasks Executing on a Multiprocessor System
      4. 18.4 Design Restructuring
      5. 18.5 Summary
  13. Part IV Real-Time Software Design Case Studies for Embedded Systems
    1. 19 Microwave Oven Control System Case Study
      1. 19.1 Problem Description
      2. 19.2 Structural Modeling
        1. 19.2.1 Conceptual Structural Model of Problem Domain
        2. 19.2.2 System Context Model
        3. 19.2.3 Software System Context Model
      3. 19.3 Use Case Modeling
        1. 19.3.1 Cook Food Use Case
        2. 19.3.2 Set Time of Day Use Case
        3. 19.3.3 Display Time of Day Use Case
      4. 19.4 Object and Class Structuring
      5. 19.5 Dynamic State Machine Modeling
        1. 19.5.1 State Machine Model for Microwave Oven Control
        2. 19.5.2 State Machines for Oven Timer and Cooking Timer
        3. 19.5.3 Impact of Minute Plus Alternative Scenarios
      6. 19.6 Dynamic Interaction Modeling
        1. 19.6.1 Dynamic Interaction Modeling of Cook Food use case
        2. 19.6.2 Dynamic Modeling for the TOD Clock Use Cases
        3. 19.6.3 State Machines for TOD Timer and Door Shut
        4. 19.6.4 Design of Entity Classes
      7. 19.7 Design Modeling
        1. 19.7.1 Integration of Interaction Diagrams
        2. 19.7.2 Concurrent Software Architecture
        3. 19.7.3 Architectural Communication Patterns
      8. 19.8 Performance Analysis of Real-Time Software Design
        1. 19.8.1 Performance Analysis on Single Processor System
        2. 19.8.2 Performance Analysis on Multiprocessor System
      9. 19.9 Component-Based Software Architecture
        1. 19.9.1 Design of Components Structured as Tasks
        2. 19.9.2 Design of Components Containing Multiple Objects
        3. 19.9.3 Design of Connectors
      10. 19.10 Detailed Software Design
      11. 19.11 System Configuration and Deployment
    2. 20 Railroad Crossing Control System Case Study
      1. 20.1 Problem Description
      2. 20.2 Structural Modeling
        1. 20.2.1 Structural Model of the Problem Domain
        2. 20.2.2 Structural Model of the Total System
        3. 20.2.3 System Context Model
        4. 20.2.4 Software System Context Model
        5. 20.2.5 Hardware/Software Boundary Model
      3. 20.3 Use Case Modeling
        1. 20.3.1 Arrive at Railroad Crossing Use Case
        2. 20.3.2 Depart from Railroad Crossing Use Case
      4. 20.4 Dynamic State Machine Modeling
      5. 20.5 Object and Class Structuring
      6. 20.6 Dynamic Interaction Modeling
        1. 20.6.1 Sequence Diagrams for Arrive at Railroad Crossing
        2. 20.6.2 Sequence Diagrams for Depart from Railroad Crossing
      7. 20.7 Design Modeling
        1. 20.7.1 Integrated Communication Diagram
        2. 20.7.2 Concurrent Software Architecture
        3. 20.7.3 Architectural Communication Patterns
        4. 20.7.4 Examples of Task Interface Specification
      8. 20.8 Performance Analysis of Real-Time Software Design
        1. 20.8.1 Performance Analysis on Single Processor System
        2. 20.8.2 Performance Analysis on Multiprocessor System
      9. 20.9 Component-Based Software Architecture
        1. 20.9.1 Design of Components
        2. 20.9.2 Design of Component Interfaces
      10. 20.10 System Configuration and Deployment
    3. 21 Light Rail Control System Case Study
      1. 21.1 Problem Description
      2. 21.2 Structural Modeling
      3. 21.3 Use Case Modeling
        1. 21.3.1 Use Case Package for Light Rail Operations
        2. 21.3.2 Use Case Package for Train Dispatch and Suspend
        3. 21.3.3 Use Case Package for Railroad Hazard Detection
        4. 21.3.4 Use Case Package for Railroad Monitoring
      4. 21.4 Dynamic State Machine Modeling
        1. 21.4.1 Use Case-Based State Machines
        2. 21.4.2 Integrated Train Control State Machine
      5. 21.5 Subsystem Structuring
      6. 21.6 Object and Class Structuring
      7. 21.7 Dynamic Interaction Modeling
        1. 21.7.1 Sequence Diagram for Arrive at Station
        2. 21.7.2 Sequence Diagram for Train Status Dispatcher
        3. 21.7.3 Sequence Diagram for Control Train at Station
        4. 21.7.4 Sequence Diagram for Depart from Station
        5. 21.7.5 Sequence Diagram for Detect Hazard Presence
        6. 21.7.6 Sequence Diagram for Detect Hazard Removal
        7. 21.7.7 Sequence Diagram for Dispatch Train
        8. 21.7.8 Other Event Sequences
      8. 21.8 Design Modeling
      9. 21.9 Subsystem Integrated Communication Diagrams
      10. 21.10 Design of Distributed Light Rail System
        1. 21.10.1 Design of Distributed Software Architecture
        2. 21.10.2 Design of Subsystem Message Communication
        3. 21.10.3 Concurrent Task Design of Train Control Subsystem
          1. Passive Objects in Station Subsystem
          2. Design of Message Communication Interfaces
        4. 21.10.4 Concurrent Task Design of Station Subsystem
        5. 21.10.5 Concurrent Task Design of Rail Operations Interaction and Service Subsystems
      11. 21.11 Component-Based Software Architecture
        1. 21.11.1 Software Component Structuring
        2. 21.11.2 Design of Component Interfaces
      12. 21.12 System Configuration and Deployment
    4. 22 Pump Control System Case Study
      1. 22.1 Problem Description
      2. 22.2 Structural Modeling
      3. 22.3 Use Case Modeling
      4. 22.4 Object and Class Structuring
      5. 22.5 Dynamic State Machine Modeling
      6. 22.6 Dynamic Interaction Modeling
      7. 22.7 Design Modeling
        1. 22.7.1 Distributed Software Architecture
        2. 22.7.2 Distributed System Deployment
        3. 22.7.3 Concurrent Task Architecture
        4. 22.7.4 Detailed Software Design
        5. 22.7.5 Applying Software Architectural Patterns
    5. 23 Highway Toll Control System Case Study
      1. 23.1 Problem Description
      2. 23.2 Use Case Modeling
      3. 23.3 Software System Context Modeling
      4. 23.4 Object and Class Structuring
      5. 23.5 Dynamic State Machine Modeling
      6. 23.6 Dynamic Interaction Modeling
      7. 23.7 Design Modeling
        1. 23.7.1 Distributed Software Architecture
        2. 23.7.2 Distributed System Deployment
        3. 23.7.3 Concurrent Task Architecture
        4. 23.7.4 Detailed Software Design
        5. 23.7.5 Architectural Pattern Usage
  14. Appendix A Conventions Used in This Textbook
    1. A.1 Naming Conventions Used in This Book
      1. A.1.1 Requirements Modeling
      2. A.1.2 Analysis Modeling
        1. Classes
        2. Objects
        3. Messages
        4. State Machines
      3. A.1.3 Design Modeling
        1. Active and Passive Classes
        2. Active and Passive Objects
        3. Messages
        4. Operations
    2. A.2 Message Sequence Numbering on Interaction Diagrams
      1. A.2.1 Message Labels on Interaction Diagrams
      2. A.2.2 Message Sequence Numbering on Interaction Diagrams
      3. A.2.3 Concurrent and Alternative Message Sequences
  15. Appendix B Catalog of Software Architectural Patterns
    1. B.1 Software Architectural Structure Patterns
      1. B.1.1 Centralized Control Pattern
      2. B.1.2 Distributed Collaborative Control Pattern
      3. B.1.3 Distributed Independent Control Pattern
      4. B.1.4 Hierarchical Control Pattern
      5. B.1.5 Layers of Abstraction Pattern
      6. B.1.6 Kernel Pattern
      7. B.1.7 Master/Slave Pattern
      8. B.1.8 Multiple Client/Multiple Service Pattern
      9. B.1.9 Multiple Client/Single Service Pattern
    2. B.2 Software Architectural Communication Patterns
      1. B.2.1 Asynchronous Message Communication Pattern
      2. B.2.2 Asynchronous Message Communication with Callback Pattern
      3. B.2.3 Bidirectional Asynchronous Message Communication Pattern
      4. B.2.4 Broadcast Pattern
      5. B.2.5 Broker Handle Pattern
      6. B.2.6 Service Discovery Pattern
      7. B.2.7 Service Registration Pattern
      8. B.2.8 Subscription/Notification Pattern
      9. B.2.9 Synchronized Object Access Pattern
      10. B.2.10 Synchronous Message Communication with Reply Pattern
      11. B.2.11 Synchronous Message Communication without Reply Pattern
  16. Appendix C Pseudocode Templates for Concurrent Tasks
    1. C.1 Pseudocode for Event Driven Input Task
    2. C.2 Pseudocode for Periodic Input Task
    3. C.3 Pseudocode for Demand Driven Output Task
    4. C.4 Pseudocode for Demand Driven Coordinator Task
    5. C.5 Pseudocode for Periodic Algorithm Task
    6. C.6 Pseudocode for Demand Driven Task
    7. C.7 Pseudocode for User Interaction Task
    8. C.8 Pseudocode for Demand Driven State Dependent Control Task
  17. Appendix D Teaching Considerations
    1. D.1 Overview
    2. D.2 Suggested Academic Courses
    3. D.3 Suggested Industrial Courses
    4. D4. Design Exercises
  18. Glossary
  19. Bibliography
  20. Index