Doing hard time : developing real-time systems with UML, objects, frameworks, and patterns / Bruce Powel Douglass.
By: Douglass, Bruce Powel
.
Material type:
BookSeries: Addison-Wesley object technology series.Publisher: Reading, Mass. : Addison-Wesley, 1999Description: xxxiii, 766 p. ; 24 cm.ISBN: 0201498375.Subject(s): Embedded computer systems -- Programming| Item type | Current library | Call number | Copy number | Status | Barcode | |
|---|---|---|---|---|---|---|
| General lending | MTU Bishopstown Library Lending | 005.117 (Browse shelf(Opens below)) | 1 | Available | 00188171 |
Enhanced descriptions from Syndetics:
This book will almost certainly become a seminal work in this field...the one book everyone will want to have both as a tutorial and as a reference. --Larry McAlister, Senior Systems Architect, ENSCO, Inc. The global demand for real-time and embedded systems is growing rapidly. With this increased demand comes an urgent need for more programmers in this realm; yet making the transition to real-time systems development or learning to build these applications is by no means simple. Real-time system designs must be written to meet hard and unforgiving requirements. It is a pursuit that requires a unique set of skills. Clearly, real-time systems development is a formidable task, and developers face many unique challenges as they attempt to do hard time. Doing Hard Time is written to facilitate the daunting process of developing real-time systems. It presents an embedded systems programming methodology that has been proven successful in practice. The process outlined in this book allows application developers to apply practical techniques--garnered from the mainstream areas of object-oriented software development--to meet the demanding qualifications of real-time programming. Bruce
Includes bibliographical references and index.
Part I: The Basics -- Introduction to objects and the unified modeling language -- Basic concepts of real-time systems -- Basic concepts of safety-critical systems -- Rapid object-oriented process for embedded systems -- Part II: Analysis -- Requirements Analysis of Real-time systems -- Structural object analysis -- Behavioral object analysis -- Part III: Design -- Architectural design -- Mechanistic design -- Detailed design -- Part IV: Advanced real time object modeling -- Threads and Schedulability -- Dynamic Modeling -- Real-time Frameworks.
CIT Module ELTR 8019 - Core reading
Table of contents provided by Syndetics
- Figure List (p. xvii)
- About the Author (p. xxv)
- Foreword (p. xxvii)
- Preface (p. xxix)
- Acknowledgments (p. xxxiii)
- Part I The Basics (p. 1)
- Chapter 1 Introduction to Objects and the Unified Modeling Language (p. 3)
- 1.1 Advantages of Objects (p. 4)
- 1.2 Terms and Concepts (p. 10)
- 1.3 Object Orientation with the UML (p. 11)
- 1.3.1 Objects (p. 12)
- 1.3.2 Attributes (p. 20)
- 1.3.3 Behavior (p. 20)
- 1.3.4 Messaging (p. 22)
- 1.3.5 Responsibility (p. 24)
- 1.3.6 Concurrency (p. 24)
- 1.3.7 Objects as Autonomous Machines (p. 25)
- 1.4 Class Diagrams (p. 26)
- 1.4.1 Relations among Classes and Objects (p. 30)
- 1.5 Use Cases (p. 38)
- 1.6 Sequence Diagrams (p. 40)
- 1.7 Physical Representation (p. 42)
- 1.8 Things Common to Diagrams (p. 44)
- 1.8.1 Notes (p. 44)
- 1.8.2 Packages (p. 45)
- 1.8.3 Constraints (p. 45)
- 1.8.4 Stereotypes (p. 46)
- 1.9 Summary (p. 52)
- 1.10 A Look Ahead (p. 54)
- 1.11 Exercises (p. 54)
- 1.12 References (p. 55)
- Chapter 2 Basic Concepts of Real-Time Systems (p. 57)
- 2.1 What is Real-Time? (p. 58)
- 2.2 Terms and Concepts (p. 58)
- 2.3 Timeliness (p. 60)
- 2.4 Responsiveness (p. 64)
- 2.5 Concurrency (p. 67)
- 2.5.1 Scheduling Concurrent Threads (p. 67)
- 2.5.2 Event Arrival Patterns (p. 68)
- 2.5.3 Thread Rendezvous Patterns (p. 70)
- 2.5.4 Sharing Resources (p. 71)
- 2.6 Predictability (p. 73)
- 2.6.1 Memory Management (p. 73)
- 2.7 Correctness and Robustness (p. 75)
- 2.7.1 Deadlock (p. 75)
- 2.7.2 Exceptional Conditions (p. 77)
- 2.7.3 Race Conditions (p. 79)
- 2.8 Distributed Systems (p. 81)
- 2.9 Fault Tolerance and Safety (p. 81)
- 2.10 Dealing with Resource-Limited Target Environments (p. 82)
- 2.11 Low-Level Hardware Interfacing (p. 83)
- 2.12 Real-Time Operating Systems (p. 83)
- 2.13 Summary (p. 95)
- 2.14 Looking Ahead (p. 95)
- 2.15 Exercises (p. 95)
- 2.16 References (p. 96)
- Chapter 3 Basic Concepts of Safety-Critical Systems (p. 97)
- 3.1 Introduction to Safety (p. 98)
- 3.1.1 The Therac-25 Story (p. 98)
- 3.1.2 Other Stories (p. 98)
- 3.2 Terms and Concepts (p. 100)
- 3.3 Safety-Related Faults (p. 103)
- 3.3.1 Safety Is a System Issue (p. 104)
- 3.3.2 Random Faults vs. Systematic Faults (p. 104)
- 3.3.3 Single-Point Failures (p. 105)
- 3.3.4 Common Mode Failures (p. 107)
- 3.3.5 Latent Faults (p. 110)
- 3.3.6 Fail-Safe State (p. 110)
- 3.3.7 Achieving Safety (p. 111)
- 3.4 Safety Architectures (p. 114)
- 3.4.1 Single-Channel Protected Design (SCPD) (p. 114)
- 3.4.2 Multi-Channel Voting Pattern (p. 117)
- 3.4.3 Homogeneous Redundancy Pattern (p. 117)
- 3.4.4 Diverse Redundance Pattern (p. 119)
- 3.4.5 Monitor-Actuator Pattern (p. 119)
- 3.4.6 Watchdog Pattern (p. 122)
- 3.4.7 Safety Executive Pattern (p. 123)
- 3.5 Eight Steps to Safety (p. 125)
- 3.5.1 Step 1: Identify the Hazards (p. 125)
- 3.5.2 Step 2: Determine the Risks (p. 131)
- 3.5.3 Step 3: Define the Safety Measures (p. 133)
- 3.5.4 Step 4: Create Safe Requirements (p. 134)
- 3.5.5 Step 5: Create Safe Designs (p. 135)
- 3.5.6 Step 6: Implementing Safety (p. 136)
- 3.5.7 Step 7: Assure Safety Process (p. 141)
- 3.5.8 Step 8: Test, Test, Test (p. 143)
- 3.6 A Few Safety-Related Standards (p. 145)
- 3.6.1 Some Important Safety Standards (p. 146)
- 3.7 Summary (p. 147)
- 3.8 Looking Ahead (p. 148)
- 3.9 Exercises (p. 148)
- 3.10 References (p. 150)
- Chapter 4 Rapid Object-Oriented Process for Embedded Systems (p. 151)
- 4.1 Introduction (p. 152)
- 4.2 Terms and Concepts (p. 153)
- 4.2.1 Development Phases (p. 153)
- 4.2.2 Ordering (p. 156)
- 4.2.3 Maturity (p. 157)
- 4.3 Development-Task Sequencing (p. 157)
- 4.3.1 Waterfall Lifecycle (p. 158)
- 4.3.2 Iterative Lifecycles (p. 158)
- 4.3.3 Prototyping (p. 160)
- 4.4 Scheduling and Estimation (p. 162)
- 4.4.1 Advantages of Accurate Schedules (p. 164)
- 4.4.2 Difficulties of Accurate Scheduling (p. 165)
- 4.5 The ROPES Macro Cycle (p. 167)
- 4.6 Analysis (p. 171)
- 4.6.1 Requirements Analysis (p. 171)
- 4.6.2 Systems Analysis (p. 176)
- 4.6.3 Object Analysis (p. 180)
- 4.7 Design (p. 185)
- 4.7.1 Architectural Design (p. 188)
- 4.7.2 Mechanistic Design (p. 190)
- 4.7.3 Detailed Design (p. 191)
- 4.8 Translation (p. 192)
- 4.8.1 Activities (p. 192)
- 4.8.2 Artifacts (p. 194)
- 4.9 Testing (p. 195)
- 4.9.1 Activities (p. 195)
- 4.9.2 Artifacts (p. 196)
- 4.10 Summary (p. 197)
- 4.11 Looking Ahead (p. 198)
- 4.12 Exercises (p. 198)
- 4.13 References (p. 199)
- Part II Analysis (p. 201)
- Chapter 5 Requirements Analysis of Real-Time Systems (p. 203)
- 5.1 Introduction (p. 204)
- 5.2 Terms and Concepts (p. 204)
- 5.2.1 Use Cases (p. 204)
- 5.2.2 Messages and Events (p. 206)
- 5.2.3 Scenarios, Protocols, and State Machines (p. 208)
- 5.3 Use Cases (p. 211)
- 5.3.1 Use Case Relations (p. 212)
- 5.3.2 Use Case Example: Air Traffic Control System (p. 213)
- 5.4 External Events (p. 218)
- 5.4.1 Context-Level Messages (p. 219)
- 5.5 Specifying External Messages (p. 221)
- 5.5.1 External Event List (p. 222)
- 5.5.2 Response Time (p. 223)
- 5.6 Detailing Use Case Behavior (p. 225)
- 5.6.1 Informal Textual Description (p. 226)
- 5.6.2 Scenarios (p. 227)
- 5.6.3 Sequence Diagrams (p. 228)
- 5.6.4 Statecharts for Defining Use Case Behavior (p. 231)
- 5.7 Identifying Use Cases (p. 232)
- 5.8 Using Use Cases (p. 233)
- 5.9 Heuristics for Good Requirements Analysis Diagrams (p. 234)
- 5.9.1 Use Case Diagram Heuristics (p. 235)
- 5.9.2 Use Case Heuristics (p. 235)
- 5.9.3 Use Case Sequence Diagram Heuristics (p. 236)
- 5.10 Summary (p. 237)
- 5.11 Looking Ahead (p. 237)
- 5.12 Exercises (p. 237)
- 5.13 References (p. 238)
- Chapter 6 Structural Object Analysis (p. 239)
- 6.1 Introduction (p. 240)
- 6.2 Terms and Concepts (p. 240)
- 6.3 Key Strategies for Object Identification (p. 242)
- 6.3.1 Underline the Nouns (p. 245)
- 6.3.2 Identify Causal Agents (p. 249)
- 6.3.3 Identify Coherent Services (p. 250)
- 6.3.4 Identify Real-World Items (p. 250)
- 6.3.5 Identify Physical Devices (p. 251)
- 6.3.6 Identify Essential Abstractions of Domains (p. 252)
- 6.3.7 Identify Transactions (p. 254)
- 6.3.8 Identify Persistent Information (p. 255)
- 6.3.9 Identify Visual Elements (p. 256)
- 6.3.10 Identify Control Elements (p. 256)
- 6.3.11 Execute Scenarios on the Object Model (p. 259)
- 6.4 Reification of Objects into Classes (p. 262)
- 6.5 Identify Object Associations (p. 264)
- 6.5.1 Multiplicity (p. 268)
- 6.5.2 Associations and Links (p. 269)
- 6.6 Aggregation and Composition (p. 269)
- 6.7 Object Attributes (p. 270)
- 6.8 Generalization Relationships (p. 272)
- 6.9 AATCS Example: Class Diagrams (p. 279)
- 6.10 Heuristics for Good Class Diagrams (p. 284)
- 6.10.1 Rules for Good Class Diagrams (p. 286)
- 6.11 Summary (p. 289)
- 6.12 Looking Ahead (p. 289)
- 6.13 Exercises (p. 290)
- 6.14 References (p. 290)
- Chapter 7 Behavioral Object Analysis (p. 291)
- 7.1 Introduction (p. 292)
- 7.2 Terms and Concepts (p. 292)
- 7.2.1 Simple Behavior (p. 293)
- 7.2.2 State Behavior (p. 293)
- 7.2.3 Continuous Behavior (p. 298)
- 7.3 UML Statecharts (p. 310)
- 7.3.1 Basic State Semantics (p. 310)
- 7.3.2 Transitions and Events (p. 312)
- 7.3.3 Actions and Activities (p. 314)
- 7.3.4 Pseudostates (p. 319)
- 7.3.5 Orthogonal Regions and Synchronization (p. 321)
- 7.3.6 Basic Statecharts Syntax (p. 322)
- 7.3.7 Inherited State Models (p. 328)
- 7.3.8 Ill-Formed State Models (p. 330)
- 7.3.9 Example: AATCS Alarm System (p. 332)
- 7.4 The Role of Scenarios in the Definition of Behavior (p. 338)
- 7.4.1 Timing Diagrams (p. 339)
- 7.4.2 Sequence Diagrams (p. 342)
- 7.4.3 Activity Diagrams (p. 343)
- 7.5 Defining Operations (p. 349)
- 7.5.1 Types of Operations (p. 351)
- 7.5.2 Strategies for Defining Operations (p. 354)
- 7.6 Statechart Heuristics (p. 357)
- 7.7 Timing-Diagram Heuristics (p. 358)
- 7.8 Activity-Diagram Heuristics (p. 359)
- 7.9 Summary (p. 359)
- 7.10 Looking Ahead (p. 360)
- 7.11 Exercises (p. 360)
- 7.12 References (p. 362)
- Part III Design (p. 363)
- Chapter 8 Architectural Design (p. 367)
- 8.1 Introduction (p. 368)
- 8.2 Terms and Concepts (p. 368)
- 8.3 Tasking Model (p. 369)
- 8.3.1 Representing Tasks (p. 370)
- 8.3.2 Defining Task Threads (p. 381)
- 8.3.3 Assigning Objects to Tasks (p. 385)
- 8.3.4 Defining Task Rendezvous (p. 386)
- 8.4 Component Model (p. 392)
- 8.5 Deployment Model (p. 400)
- 8.5.1 Representing Physical Architecture in the UML (p. 401)
- 8.5.2 Multiprocessor Systems (p. 404)
- 8.6 Safety/Reliability Model (p. 409)
- 8.7 Summary (p. 417)
- 8.8 Looking Ahead (p. 418)
- 8.9 Exercises (p. 419)
- 8.10 References (p. 419)
- Chapter 9 Mechanistic Design (p. 421)
- 9.1 Introduction (p. 421)
- 9.2 Terms and Concepts (p. 427)
- 9.2.1 Design-Pattern Basics (p. 434)
- 9.3 Mechanistic Design Patterns (p. 438)
- 9.3.1 Correctness Patterns (p. 439)
- 9.3.2 Execution Control Patterns (p. 445)
- 9.4 Summary (p. 465)
- 9.5 Looking Ahead (p. 467)
- 9.6 Exercises (p. 467)
- 9.7 References (p. 467)
- Chapter 10 Detailed Design (p. 469)
- 10.1 Introduction to Detailed Design (p. 470)
- 10.2 Terms and Concepts (p. 471)
- 10.3 Data Structure (p. 472)
- 10.3.1 Primitive Representational Types (p. 472)
- 10.3.2 Subrange Constraints (p. 476)
- 10.3.3 Derived Attributes (p. 481)
- 10.3.4 Data-Collection Structure (p. 484)
- 10.4 Associations (p. 485)
- 10.5 The Object Interface (p. 489)
- 10.6 Definition of Operations (p. 491)
- 10.7 Detailed Algorithmic Design (p. 493)
- 10.7.1 Representing Algorithms in the UML (p. 494)
- 10.7.2 Algorithmic Example: Run-Time Data Interpolation (p. 495)
- 10.8 Exceptions (p. 505)
- 10.8.1 Source Language-Based Exception Handling (p. 507)
- 10.8.2 State-Based Exception Handling (p. 511)
- 10.9 Summary (p. 512)
- 10.10 Looking Ahead (p. 513)
- 10.11 Exercises (p. 514)
- 10.12 References (p. 514)
- Part IV Advanced Real-Time Object Modeling (p. 515)
- Chapter 11 Threads and Schedulability (p. 517)
- 11.1 Introduction (p. 518)
- 11.2 Terms and Concepts (p. 518)
- 11.2.1 Time-Based Systems (p. 518)
- 11.2.2 Reactive Systems (p. 519)
- 11.2.3 Time Concepts (p. 520)
- 11.3 Scheduling Threads (p. 531)
- 11.3.1 Rate Monotonic Scheduling (p. 536)
- 11.3.2 Earliest-Deadline-First Scheduling (p. 537)
- 11.3.3 Least Laxity Dynamic Scheduling (p. 538)
- 11.3.4 Maximum-Urgency-First Scheduling (p. 538)
- 11.3.5 Weighted Shortest-Processing-Time-First (WSPTF) Scheduling (p. 539)
- 11.3.6 Minimizing Maximum Lateness Scheduling (p. 540)
- 11.4 Thread Synchronization and Resource Sharing (p. 541)
- 11.4.1 Mutual-Exclusion Semaphores (p. 543)
- 11.4.2 Dekker's Algorithm (p. 544)
- 11.4.3 Spinlocks (p. 547)
- 11.4.4 Counting Semaphores (p. 547)
- 11.4.5 Condition Variables (p. 549)
- 11.4.6 Barriers (p. 551)
- 11.4.7 Rendezvous Objects (p. 553)
- 11.5 Schedulability Analysis of Hard Real-Time Systems (p. 553)
- 11.5.1 Global Analysis (p. 554)
- 11.5.2 Global Method with Task Blocking (p. 557)
- 11.5.3 Computing Blocking (p. 561)
- 11.5.4 Separate Task Utilization Bounds (p. 563)
- 11.5.5 Aperiodic Tasks (p. 565)
- 11.6 Schedulability Analysis of Soft Real-Time Systems (p. 566)
- 11.6.1 Warm and Fuzzy: Timeliness in the Soft Context (p. 567)
- 11.6.2 Soft Schedulability (p. 570)
- 11.7 Summary (p. 572)
- 11.8 Looking Ahead (p. 573)
- 11.9 Exercises (p. 574)
- 11.10 References (p. 576)
- Chapter 12 Dynamic Modeling (p. 577)
- 12.1 Introduction (p. 578)
- 12.2 Terms and Concepts (p. 578)
- 12.2.1 But Is It the Right State Machine? (p. 581)
- 12.3 Behavioral Patterns (p. 588)
- 12.3.1 Latch State Pattern (p. 589)
- 12.3.2 Polling State Pattern (p. 593)
- 12.3.3 Latched Data Pattern (p. 593)
- 12.3.4 Device Mode State Pattern (p. 594)
- 12.3.5 Transaction State Pattern (p. 596)
- 12.3.6 Component Synchronization State Pattern (p. 598)
- 12.3.7 Barrier State Pattern (p. 599)
- 12.3.8 Event Hierarchy State Pattern (p. 602)
- 12.3.9 Random State Pattern (p. 604)
- 12.3.10 Null State Pattern (p. 605)
- 12.3.11 Watchdog State Pattern (p. 607)
- 12.3.12 Retriggerable Counter State Pattern (p. 610)
- 12.4 Model-Level Debugging and Testing (p. 611)
- 12.4.1 Animated Debugging (p. 613)
- 12.4.2 Animated Testing (p. 614)
- 12.4.3 Sample Debugging Session (p. 617)
- 12.5 Summary (p. 628)
- 12.6 Looking Ahead (p. 628)
- 12.7 Exercises (p. 629)
- 12.8 References (p. 629)
- Chapter 13 Real-Time Frameworks (p. 631)
- 13.1 Introduction (p. 632)
- 13.2 Terms and Concepts (p. 633)
- 13.3 Real-Time Frameworks (p. 636)
- 13.3.1 Architectural Support Patterns (p. 636)
- 13.3.2 Collaboration and Distribution Patterns (p. 640)
- 13.3.3 Safety and Reliability Patterns (p. 645)
- 13.3.4 Behavioral Patterns (p. 647)
- 13.4 Framework Design Principles and Metrics (p. 651)
- 13.4.1 Set of Services (p. 652)
- 13.4.2 Generalization Hierarchy Structure (p. 653)
- 13.4.3 Replaceable Components (p. 654)
- 13.4.4 Portability (p. 654)
- 13.4.5 Naming and Syntax Conventions (p. 655)
- 13.4.6 Performance (p. 656)
- 13.5 The Rhapsody Object Execution Framework (OXF) (p. 657)
- 13.5.1 Rhapsody Architecture (p. 657)
- 13.5.2 Execution Framework (p. 660)
- 13.5.3 Inter-Object Association Patterns (p. 661)
- 13.5.4 Using C++ Standard Template Library (p. 664)
- 13.5.5 Abstract Operating System (p. 664)
- 13.5.6 Animation Framework (p. 666)
- 13.6 Sample Application Using the Rhapsody OXF Framework (p. 667)
- 13.7 Summary (p. 680)
- 13.8 Exercises (p. 681)
- 13.9 References (p. 682)
- Appendix A Summary of UML Notation (p. 683)
- Appendix B Rhapsody: A Fully Constructive UML Visual Programming Tool (p. 701)
- Appendix C TimeWiz: An Integrated Tool for Timing Analysis (p. 713)
- Index (p. 723)
- CD-ROM Warranty (p. 766)