An Example Pattern from the Book

Design patterns, the elegant and time-tested solutions to recurring software design problems, serve as the foundation for this enlightening journey. Rather than inundating you with abstract theories and convoluted code snippets, this book takes a refreshing approach. It leverages design patterns as the means to explain complex concepts, making them not only comprehensible but also actionable.

The format of the patterns in this book is simple and understandable, even for a layperson. It also makes it easy to read the book quite fast, by just following the format to focus on the most important parts.

First, the pattern name serves as the title. Pattern names are always written in small caps to make them stand out. The pattern name is followed by either no stars or one or two stars. This star rating gives an idea of how well the authors think this pattern captures timeless beauty and knowledge to solve a recurring problem in the domain.

An ellipsis, three dots, begins the description of the context of the problem. It can provide hints about which other patterns might have been used in the design before arriving at this problem. Then, in bold typeface, the problem is described in a few sentences. The pattern then presents the forces inherent in this problem, as every problem solution needs to balance conflicting demands.

Next, in bold typeface and preceded by the formulaic "Therefore:", the solution is provided. At this point, the reader can also see an icon for the pattern, depicting an abstract presentation of the solution. The solution is discussed in detail, and the consequences of its application are explained. Finally, real-world examples are presented. Read an example pattern from the book: Separate Real-time

Graph of the Pattern Language

Each pattern when applied has its own positive and negative consequences. Some of these consequences and new arising problems can be alleviated by applying more advanced patterns. The sequence in which the patterns can be applied after each other forms a network or graph. A Graph is a powerful way to navigate between the patterns. The graph is available here

Table of Contents of the Book

  1. Foreword
  2. Acknowledgements
  3. Table of Contents
  4. Setting the Landscape
    1. Why to Read This Book?
    2. How to Use This Book
    3. Comparison with Previous Works
  5. Domain of Distributed Control Systems
    1. Characteristics of Distributed Control Systems
      1. Long Life Cycle
      2. Distribution
      3. Functional Safety
    2. Safety-related Aspects in Distributed Control Systems
      1. Real-time Behavior
      2. Fault Tolerance
    3. Common Approaches and Challenges
      1. Agile Development in the Control System Domain
      2. Testing and Simulation
      3. Product Lines
      4. Documentation
      5. Technologies
        1. Data-Centric Middleware: Data Distribution Service (DD)S for Real-Time Systems
      6. Common Pitfalls
      7. Tackling the Challenges
    4. New Trends in the Domain
      1. Orchestrating Multiple Machines
      2. Service as Business
      3. Autonomous and Intelligent Machines
      4. Openness for 3rd Party Software
      5. Energy Consumption and Eco-Efficiency
      6. Information Security
  6. Software Architecture and Quality
    1. What Is Quality?
    2. Quality Attributes
    3. Measuring Quality
    4. External Quality and Internal Quality
  7. About Patterns
    1. Patterns – What Are They?
    2. From Patterns to Pattern Language
    3. The Story of the Patterns in This Book
    4. The Pattern Format Used in This Book
  8. Pattern Language for Distributed Control Systems
    1. Control System **
    2. Watchdog **
    3. Self-tests *
    4. Forced Input Value
    5. Error Counter *
  9. Patterns for Distribution
    1. Isolated Functionalities **
    2. Distributed Safety *
    3. Heartbeat **
    4. Global Time *
  10. Messaging Patterns
    1. One to Many **
    2. High Level Protocol **
    3. Messaging Interface *
    4. Protocol Version Handshake
    5. Message Queue **
    6. Categorized Messages **
    7. Message Channel Multiplexing *
    8. Message Gateway **
    9. Vector Clock for Messages *
    10. Unique Confirmation
  11. Event Handling Patterns
    1. Notifications *
    2. Notification Levels **
    3. Notification Logging *
    4. Early Warning **
  12. Patterns for Control System Modes
    1. Operating Modes **
    2. Safe State **
    3. Limp Home *
    4. Sensor Bypass *
    5. Devil May Care *
    6. Interchangeable Algorithm *
  13. Patterns for Data Management
    1. Variable Manager **
    2. Variable Guard *
    3. Variable Value Translator
    4. Data Status
    5. Counters *
    6. Snapshot *
  14. Patterns to Handle Scarce Resources
    1. Concurrent Execution **
    2. Static Scheduling **
    3. Separate Real-time **
    4. Partial Results
    5. Static Resource Allocation **
    6. Locker Key *
    7. Half Tasks *
    8. Early work *
  15. Patterns Decoupling Software and Hardware
    1. Hardware Abstraction Layer * *
    2. Operating System Abstraction *
    3. Virtual Runtime Environment * * a.k.a VIRTUAL MACHINE
    4. Redundancy Patterns
    5. 1+1 Redundancy **
    6. Voting *
  16. Patterns for System Start-up
    1. Bootstrapper **
    2. System Start-up **
    3. Start-up Negotiation
  17. Software Update Patterns
    1. Updateable Software * *
    2. Centralized Updater *
    3. Bumpless Updater
  18. Human-Machine Interface Patterns
    1. Human-Machine Interface * *
    2. Artificial Feedback * *
    3. Two-step Confirmation *
    4. Upright is OK *
    5. Task-based UI *
    6. Role-based UI * *
    7. Alternative Operating Station *
    8. Multiple Operating Stations *
    9. Appliance-Provided UI *
    10. Beacon *
    11. HMI Notifications
    12. Operator Profile * *
    13. Common Look-and-Feel *
  19. High Level Services Patterns
    1. Diagnostics *
    2. Blackbox
    3. Third-party Sandbox *
    4. Remote Access *
    5. Dynamic Message Channel Selector *
  20. Fleet Management Patterns
    1. Fleet Management *
    2. M2M Communication
    3. Opportunistic Delegation
    4. System Adapter *
  21. Patterns for System Configuration
    1. Parameters * *
    2. Configuration Parameter Versions
    3. Component-based Configuration *
    4. Control System Options *
  22. Applying Patterns
  23. Concluding Remarks
  24. Appendix
    1. Quality Attribute Table
    2. Patlets
    3. Glossary
    4. References

ISBN and Other Details

  1. ISBN-10 9781118694152
  2. ISBN-13 978-1118694152
  3. 1st Edition
  4. Publisher Wiley
  5. Published June 9, 2014

Cite: Eloranta, Veli-Pekka; Koskinen, Johannes; Leppänen, Marko; Reijonen, Ville (2014). Designing distributed control systems: a pattern language approach. ISBN: 978-1-118-69415-2 Wiley series in software design patterns. John Wiley and Sons.