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