| |
| |
Figure List | |
| |
| |
About the Author | |
| |
| |
Foreword | |
| |
| |
Preface | |
| |
| |
Acknowledgments | |
| |
| |
| |
The Basics | |
| |
| |
| |
Introduction to Objects and the Unified Modeling Language | |
| |
| |
| |
Advantages of Objects | |
| |
| |
| |
Terms and Concepts | |
| |
| |
| |
Object Orientation with the UML | |
| |
| |
| |
Objects | |
| |
| |
| |
Attributes | |
| |
| |
| |
Behavior | |
| |
| |
| |
Messaging | |
| |
| |
| |
Responsibility | |
| |
| |
| |
Concurrency | |
| |
| |
| |
Objects as Autonomous Machines | |
| |
| |
| |
Class Diagrams | |
| |
| |
| |
Relations among Classes and Objects | |
| |
| |
| |
Use Cases | |
| |
| |
| |
Sequence Diagrams | |
| |
| |
| |
Physical Representation | |
| |
| |
| |
Things Common to Diagrams | |
| |
| |
| |
Notes | |
| |
| |
| |
Packages | |
| |
| |
| |
Constraints | |
| |
| |
| |
Stereotypes | |
| |
| |
| |
Summary | |
| |
| |
| |
A Look Ahead | |
| |
| |
| |
Exercises | |
| |
| |
| |
References | |
| |
| |
| |
Basic Concepts of Real-Time Systems | |
| |
| |
| |
What is Real-Time? | |
| |
| |
| |
Terms and Concepts | |
| |
| |
| |
Timeliness | |
| |
| |
| |
Responsiveness | |
| |
| |
| |
Concurrency | |
| |
| |
| |
Scheduling Concurrent Threads | |
| |
| |
| |
Event Arrival Patterns | |
| |
| |
| |
Thread Rendezvous Patterns | |
| |
| |
| |
Sharing Resources | |
| |
| |
| |
Predictability | |
| |
| |
| |
Memory Management | |
| |
| |
| |
Correctness and Robustness | |
| |
| |
| |
Deadlock | |
| |
| |
| |
Exceptional Conditions | |
| |
| |
| |
Race Conditions | |
| |
| |
| |
Distributed Systems | |
| |
| |
| |
Fault Tolerance and Safety | |
| |
| |
| |
Dealing with Resource-Limited Target Environments | |
| |
| |
| |
Low-Level Hardware Interfacing | |
| |
| |
| |
Real-Time Operating Systems | |
| |
| |
| |
Summary | |
| |
| |
| |
Looking Ahead | |
| |
| |
| |
Exercises | |
| |
| |
| |
References | |
| |
| |
| |
Basic Concepts of Safety-Critical Systems | |
| |
| |
| |
Introduction to Safety | |
| |
| |
| |
The Therac-25 Story | |
| |
| |
| |
Other Stories | |
| |
| |
| |
Terms and Concepts | |
| |
| |
| |
Safety-Related Faults | |
| |
| |
| |
Safety Is a System Issue | |
| |
| |
| |
Random Faults vs. Systematic Faults | |
| |
| |
| |
Single-Point Failures | |
| |
| |
| |
Common Mode Failures | |
| |
| |
| |
Latent Faults | |
| |
| |
| |
Fail-Safe State | |
| |
| |
| |
Achieving Safety | |
| |
| |
| |
Safety Architectures | |
| |
| |
| |
Single-Channel Protected Design (SCPD) | |
| |
| |
| |
Multi-Channel Voting Pattern | |
| |
| |
| |
Homogeneous Redundancy Pattern | |
| |
| |
| |
Diverse Redundance Pattern | |
| |
| |
| |
Monitor-Actuator Pattern | |
| |
| |
| |
Watchdog Pattern | |
| |
| |
| |
Safety Executive Pattern | |
| |
| |
| |
Eight Steps to Safety | |
| |
| |
| |
Step 1: Identify the Hazards | |
| |
| |
| |
Step 2: Determine the Risks | |
| |
| |
| |
Step 3: Define the Safety Measures | |
| |
| |
| |
Step 4: Create Safe Requirements | |
| |
| |
| |
Step 5: Create Safe Designs | |
| |
| |
| |
Step 6: Implementing Safety | |
| |
| |
| |
Step 7: Assure Safety Process | |
| |
| |
| |
Step 8: Test, Test, Test | |
| |
| |
| |
A Few Safety-Related Standards | |
| |
| |
| |
Some Important Safety Standards | |
| |
| |
| |
Summary | |
| |
| |
| |
Looking Ahead | |
| |
| |
| |
Exercises | |
| |
| |
| |
References | |
| |
| |
| |
Rapid Object-Oriented Process for Embedded Systems | |
| |
| |
| |
Introduction | |
| |
| |
| |
Terms and Concepts | |
| |
| |
| |
Development Phases | |
| |
| |
| |
Ordering | |
| |
| |
| |
Maturity | |
| |
| |
| |
Development-Task Sequencing | |
| |
| |
| |
Waterfall Lifecycle | |
| |
| |
| |
Iterative Lifecycles | |
| |
| |
| |
Prototyping | |
| |
| |
| |
Scheduling and Estimation | |
| |
| |
| |
Advantages of Accurate Schedules | |
| |
| |
| |
Difficulties of Accurate Scheduling | |
| |
| |
| |
The ROPES Macro Cycle | |
| |
| |
| |
Analysis | |
| |
| |
| |
Requirements Analysis | |
| |
| |
| |
Systems Analysis | |
| |
| |
| |
Object Analysis | |
| |
| |
| |
Design | |
| |
| |
| |
Architectural Design | |
| |
| |
| |
Mechanistic Design | |
| |
| |
| |
Detailed Design | |
| |
| |
| |
Translation | |
| |
| |
| |
Activities | |
| |
| |
| |
Artifacts | |
| |
| |
| |
Testing | |
| |
| |
| |
Activities | |
| |
| |
| |
Artifacts | |
| |
| |
| |
Summary | |
| |
| |
| |
Looking Ahead | |
| |
| |
| |
Exercises | |
| |
| |
| |
References | |
| |
| |
| |
Analysis | |
| |
| |
| |
Requirements Analysis of Real-Time Systems | |
| |
| |
| |
Introduction | |
| |
| |
| |
Terms and Concepts | |
| |
| |
| |
Use Cases | |
| |
| |
| |
Messages and Events | |
| |
| |
| |
Scenarios, Protocols, and State Machines | |
| |
| |
| |
Use Cases | |
| |
| |
| |
Use Case Relations | |
| |
| |
| |
Use Case Example: Air Traffic Control System | |
| |
| |
| |
External Events | |
| |
| |
| |
Context-Level Messages | |
| |
| |
| |
Specifying External Messages | |
| |
| |
| |
External Event List | |
| |
| |
| |
Response Time | |
| |
| |
| |
Detailing Use Case Behavior | |
| |
| |
| |
Informal Textual Description | |
| |
| |
| |
Scenarios | |
| |
| |
| |
Sequence Diagrams | |
| |
| |
| |
Statecharts for Defining Use Case Behavior | |
| |
| |
| |
Identifying Use Cases | |
| |
| |
| |
Using Use Cases | |
| |
| |
| |
Heuristics for Good Requirements Analysis Diagrams | |
| |
| |
| |
Use Case Diagram Heuristics | |
| |
| |
| |
Use Case Heuristics | |
| |
| |
| |
Use Case Sequence Diagram Heuristics | |
| |
| |
| |
Summary | |
| |
| |
| |
Looking Ahead | |
| |
| |
| |
Exercises | |
| |
| |
| |
References | |
| |
| |
| |
Structural Object Analysis | |
| |
| |
| |
Introduction | |
| |
| |
| |
Terms and Concepts | |
| |
| |
| |
Key Strategies for Object Identification | |
| |
| |
| |
Underline the Nouns | |
| |
| |
| |
Identify Causal Agents | |
| |
| |
| |
Identify Coherent Services | |
| |
| |
| |
Identify Real-World Items | |
| |
| |
| |
Identify Physical Devices | |
| |
| |
| |
Identify Essential Abstractions of Domains | |
| |
| |
| |
Identify Transactions | |
| |
| |
| |
Identify Persistent Information | |
| |
| |
| |
Identify Visual Elements | |
| |
| |
| |
Identify Control Elements | |
| |
| |
| |
Execute Scenarios on the Object Model | |
| |
| |
| |
Reification of Objects into Classes | |
| |
| |
| |
Identify Object Associations | |
| |
| |
| |
Multiplicity | |
| |
| |
| |
Associations and Links | |
| |
| |
| |
Aggregation and Composition | |
| |
| |
| |
Object Attributes | |
| |
| |
| |
Generalization Relationships | |
| |
| |
| |
AATCS Example: Class Diagrams | |
| |
| |
| |
Heuristics for Good Class Diagrams | |
| |
| |
| |
Rules for Good Class Diagrams | |
| |
| |
| |
Summary | |
| |
| |
| |
Looking Ahead | |
| |
| |
| |
Exercises | |
| |
| |
| |
References | |
| |
| |
| |
Behavioral Object Analysis | |
| |
| |
| |
Introduction | |
| |
| |
| |
Terms and Concepts | |
| |
| |
| |
Simple Behavior | |
| |
| |
| |
State Behavior | |
| |
| |
| |
Continuous Behavior | |
| |
| |
| |
UML Statecharts | |
| |
| |
| |
Basic State Semantics | |
| |
| |
| |
Transitions and Events | |
| |
| |
| |
Actions and Activities | |
| |
| |
| |
Pseudostates | |
| |
| |
| |
Orthogonal Regions and Synchronization | |
| |
| |
| |
Basic Statecharts Syntax | |
| |
| |
| |
Inherited State Models | |
| |
| |
| |
Ill-Formed State Models | |
| |
| |
| |
Example: AATCS Alarm System | |
| |
| |
| |
The Role of Scenarios in the Definition of Behavior | |
| |
| |
| |
Timing Diagrams | |
| |
| |
| |
Sequence Diagrams | |
| |
| |
| |
Activity Diagrams | |
| |
| |
| |
Defining Operations | |
| |
| |
| |
Types of Operations | |
| |
| |
| |
Strategies for Defining Operations | |
| |
| |
| |
Statechart Heuristics | |
| |
| |
| |
Timing-Diagram Heuristics | |
| |
| |
| |
Activity-Diagram Heuristics | |
| |
| |
| |
Summary | |
| |
| |
| |
Looking Ahead | |
| |
| |
| |
Exercises | |
| |
| |
| |
References | |
| |
| |
| |
Design | |
| |
| |
| |
Architectural Design | |
| |
| |
| |
Introduction | |
| |
| |
| |
Terms and Concepts | |
| |
| |
| |
Tasking Model | |
| |
| |
| |
Representing Tasks | |
| |
| |
| |
Defining Task Threads | |
| |
| |
| |
Assigning Objects to Tasks | |
| |
| |
| |
Defining Task Rendezvous | |
| |
| |
| |
Component Model | |
| |
| |
| |
Deployment Model | |
| |
| |
| |
Representing Physical Architecture in the UML | |
| |
| |
| |
Multiprocessor Systems | |
| |
| |
| |
Safety/Reliability Model | |
| |
| |
| |
Summary | |
| |
| |
| |
Looking Ahead | |
| |
| |
| |
Exercises | |
| |
| |
| |
References | |
| |
| |
| |
Mechanistic Design | |
| |
| |
| |
Introduction | |
| |
| |
| |
Terms and Concepts | |
| |
| |
| |
Design-Pattern Basics | |
| |
| |
| |
Mechanistic Design Patterns | |
| |
| |
| |
Correctness Patterns | |
| |
| |
| |
Execution Control Patterns | |
| |
| |
| |
Summary | |
| |
| |
| |
Looking Ahead | |
| |
| |
| |
Exercises | |
| |
| |
| |
References | |
| |
| |
| |
Detailed Design | |
| |
| |
| |
Introduction to Detailed Design | |
| |
| |
| |
Terms and Concepts | |
| |
| |
| |
Data Structure | |
| |
| |
| |
Primitive Representational Types | |
| |
| |
| |
Subrange Constraints | |
| |
| |
| |
Derived Attributes | |
| |
| |
| |
Data-Collection Structure | |
| |
| |
| |
Associations | |
| |
| |
| |
The Object Interface | |
| |
| |
| |
Definition of Operations | |
| |
| |
| |
Detailed Algorithmic Design | |
| |
| |
| |
Representing Algorithms in the UML | |
| |
| |
| |
Algorithmic Example: Run-Time Data Interpolation | |
| |
| |
| |
Exceptions | |
| |
| |
| |
Source Language-Based Exception Handling | |
| |
| |
| |
State-Based Exception Handling | |
| |
| |
| |
Summary | |
| |
| |
| |
Looking Ahead | |
| |
| |
| |
Exercises | |
| |
| |
| |
References | |
| |
| |
| |
Advanced Real-Time Object Modeling | |
| |
| |
| |
Threads and Schedulability | |
| |
| |
| |
Introduction | |
| |
| |
| |
Terms and Concepts | |
| |
| |
| |
Time-Based Systems | |
| |
| |
| |
Reactive Systems | |
| |
| |
| |
Time Concepts | |
| |
| |
| |
Scheduling Threads | |
| |
| |
| |
Rate Monotonic Scheduling | |
| |
| |
| |
Earliest-Deadline-First Scheduling | |
| |
| |
| |
Least Laxity Dynamic Scheduling | |
| |
| |
| |
Maximum-Urgency-First Scheduling | |
| |
| |
| |
Weighted Shortest-Processing-Time-First (WSPTF) Scheduling | |
| |
| |
| |
Minimizing Maximum Lateness Scheduling | |
| |
| |
| |
Thread Synchronization and Resource Sharing | |
| |
| |
| |
Mutual-Exclusion Semaphores | |
| |
| |
| |
Dekker's Algorithm | |
| |
| |
| |
Spinlocks | |
| |
| |
| |
Counting Semaphores | |
| |
| |
| |
Condition Variables | |
| |
| |
| |
Barriers | |
| |
| |
| |
Rendezvous Objects | |
| |
| |
| |
Schedulability Analysis of Hard Real-Time Systems | |
| |
| |
| |
Global Analysis | |
| |
| |
| |
Global Method with Task Blocking | |
| |
| |
| |
Computing Blocking | |
| |
| |
| |
Separate Task Utilization Bounds | |
| |
| |
| |
Aperiodic Tasks | |
| |
| |
| |
Schedulability Analysis of Soft Real-Time Systems | |
| |
| |
| |
Warm and Fuzzy: Timeliness in the Soft Context | |
| |
| |
| |
Soft Schedulability | |
| |
| |
| |
Summary | |
| |
| |
| |
Looking Ahead | |
| |
| |
| |
Exercises | |
| |
| |
| |
References | |
| |
| |
| |
Dynamic Modeling | |
| |
| |
| |
Introduction | |
| |
| |
| |
Terms and Concepts | |
| |
| |
| |
But Is It the Right State Machine? | |
| |
| |
| |
Behavioral Patterns | |
| |
| |
| |
Latch State Pattern | |
| |
| |
| |
Polling State Pattern | |
| |
| |
| |
Latched Data Pattern | |
| |
| |
| |
Device Mode State Pattern | |
| |
| |
| |
Transaction State Pattern | |
| |
| |
| |
Component Synchronization State Pattern | |
| |
| |
| |
Barrier State Pattern | |
| |
| |
| |
Event Hierarchy State Pattern | |
| |
| |
| |
Random State Pattern | |
| |
| |
| |
Null State Pattern | |
| |
| |
| |
Watchdog State Pattern | |
| |
| |
| |
Retriggerable Counter State Pattern | |
| |
| |
| |
Model-Level Debugging and Testing | |
| |
| |
| |
Animated Debugging | |
| |
| |
| |
Animated Testing | |
| |
| |
| |
Sample Debugging Session | |
| |
| |
| |
Summary | |
| |
| |
| |
Looking Ahead | |
| |
| |
| |
Exercises | |
| |
| |
| |
References | |
| |
| |
| |
Real-Time Frameworks | |
| |
| |
| |
Introduction | |
| |
| |
| |
Terms and Concepts | |
| |
| |
| |
Real-Time Frameworks | |
| |
| |
| |
Architectural Support Patterns | |
| |
| |
| |
Collaboration and Distribution Patterns | |
| |
| |
| |
Safety and Reliability Patterns | |
| |
| |
| |
Behavioral Patterns | |
| |
| |
| |
Framework Design Principles and Metrics | |
| |
| |
| |
Set of Services | |
| |
| |
| |
Generalization Hierarchy Structure | |
| |
| |
| |
Replaceable Components | |
| |
| |
| |
Portability | |
| |
| |
| |
Naming and Syntax Conventions | |
| |
| |
| |
Performance | |
| |
| |
| |
The Rhapsody Object Execution Framework (OXF) | |
| |
| |
| |
Rhapsody Architecture | |
| |
| |
| |
Execution Framework | |
| |
| |
| |
Inter-Object Association Patterns | |
| |
| |
| |
Using C++ Standard Template Library | |
| |
| |
| |
Abstract Operating System | |
| |
| |
| |
Animation Framework | |
| |
| |
| |
Sample Application Using the Rhapsody OXF Framework | |
| |
| |
| |
Summary | |
| |
| |
| |
Exercises | |
| |
| |
| |
References | |
| |
| |
| |
Summary of UML Notation | |
| |
| |
| |
Rhapsody: A Fully Constructive UML Visual Programming Tool | |
| |
| |
| |
TimeWiz: An Integrated Tool for Timing Analysis | |
| |
| |
Index | |
| |
| |
CD-ROM Warranty | |