douglass-2003

Anthony Graca

Citation #

  • Author: Bruce Powel Douglass
  • Date Published: 2003
  • Title: Real-Time Design Patterns: Robust Scalable Architecture for Real-Time Systems
  • Source (url, publisher name, or doi): Addison-Wesley

Foreword #

  • by Doug Jensen, Prof of CS at Carnegie Mellon for 8 years.
    • 30 years working in military and industrial real-time computing
    • Works at MITRE corporation which does research on real-time computing systems for strategic national interest
  • References lea-1994
  • “Software patterns and UML enable potentially lower software costs in many systems (xiii)”
  • Real-time systems span the entire range of complexity and costs
    • first case: hardware costs so much more than software costs, like software in laser gyroscope
    • second case: software is so large and complex that it dwarfs hardware costs, like military or commercial aircraft
  • “Historically, developers of real-time software have lagged behind many other developers in using the most contemporary software engineering methodologies. There are several reasons for this.”
    • “One is that some real-time software is so simple that the most elementary methodologies are needed”
    • “A more common reason is that many real-time systems with non-trivial software suffer from hardware capacity constraints (due to size, weight, power, and so on). Software structured for purposes such as re-usability, modularity, or flexibility does tend to consume additional time or space resources”
    • “Yet another reason is that real-time software practitioners are frequently application experts who are not always educated enough in modern software engineering to understand and employ it properly (xiv)”
  • Knowing patterns + UML allows us to build larger scale projects, more dynamic and complex, and more distributed real-time computing systems

Preface #

  • “Real time and embedded (RTE) systems must execute in a much more constrained environment than desktop computers (xvii)”
    • Must be highly efficient to optimized for limited processor and memory resources.
    • but must also outperform systems with significantly more compute power
    • RTE have safety-critical and high-reliability requirements
      • Avionics flight control, nuclear power plant control, life support and medical instrumentation.
  • The best developers with decades of experience encounter the same problems over and over.
    • These problems are abstracted and their solutions generalized into design patterns
  • This book focuses on practical development rather than theoretical

Part I: Design Pattern Basics #

  • UML is related to architecture.
  • Two types of architecture: logical and physical

Chapter 1: Introduction - review of UML #

Chapter 2: Architecture and the UML - defines ROPES #

Chapter 3: The Role of Design Patterns #

  • explains design patterns and their role in defining architecture
    • Introduces how design patterns could be effectively discussed in a software development process

Part II: Architectural Design Patterns #

Chapter 4: Subsystem and Component Architecture Patterns #

Chapter 5: Concurrency Patterns #

  • p 203

5.1 Introduction #

5.2 Concurrency Pattern #

5.3 Message Queuing Pattern #

5.4 Interrupt Pattern #

5.5 Guarded Call Pattern #

5.6 Rendezvous Pattern #

5.7 Cyclic Executive Pattern #

5.8 Round Robin Pattern #

5.9 Static Priority Pattern #

5.10 Dynamic Priority Pattern #

Chapter 6: Memory Patterns #

  • p 259

6.1 Memory Management Patterns #

  • p 260

6.2 Static Allocation Pattern: Allocate memory up front #

6.3 Pool Allocation Pattern: Preallocate pools of needed objects #

  • p 266

6.4 Fixed Sized Buffer Pattern: Allocates memory in same-sized blocks #

  • p 273

6.5 Smart Pointer Pattern: Makes pointers reliable #

  • p 278

6.6 Garbage Collection Pattern: Automatically reclaims lost memory #

  • p 286

6.7 Garbage Compactor Pattern: Automatically defragments and reclaims memory #

  • p 293

Chapter 7: Resource Patterns #

  • p 301

7.1 Introduction #

7.2 Critical Section Pattern #

  • p 308

7.3 Priority Inheritance Pattern #

  • p 314

7.4 Highest Locker Pattern #

  • p 323

7.5 Priority Ceiling Pattern #

  • p 330

7.6 Simultaneous Locking Pattern #

  • p 338

7.7 Ordered Locking Pattern #

  • p 345

Chapter 8: Distribution Patterns - distributed computing #

8.1 Introduction #

  • p 354

8.2 Shared Memory Pattern #

  • p 356

8.3 Remote Method Call Pattern #

  • p 362

8.4 Observer Pattern #

  • p 370

8.5 Data Bus Pattern #

  • p 377

8.6 Proxy Pattern #

  • p 387

8.7 Broker Pattern #

  • p 395

Chapter 9: Safety and Reliability Patterns #

9.1 Introduction #

  • p 405

9.1.1 Handling Faults #

9.2 Protected Single Channel Pattern #

  • p 409

9.3 Homogeneous Redundancy Pattern #

  • p 415

9.4 Triple Modular Redundancy Pattern #

  • p 421

9.5 Heterogeneous Redundancy Pattern #

  • p 426

9.6 Monitor-Actuator Pattern #

  • p 432

9.7 Sanity Check Pattern #

  • p 438

9.8 Watchdog Pattern #

  • p 443

9.9 Safety Executive Pattern #

  • p 450