Michael A. Jackson, from the Foreword
A novel approach to designing software for reactive systems
This book is the first available in–depth introduction to the cutting–edge entity–life modeling (ELM) approach for the design of multithreaded, reactive software, making it an instant authoritative reference. The text is divided into three parts:
Part I covers two fundamentals necessary for understanding ELM program–language thread support in Ada and Java, and state modeling
Part II describes ELM′s unique approach
Part III positions ELM relative to other design approaches
Reactive software must respond to events in the world as they occur. To deal with this, ELM defines an event thread as a series of event occurrences that are separated in time. As the book reveals, event threads become the basis for software threads, leading to thread architectures that can be understood intuitively in problem–domain terms. Readers will discover how ELM captures the logic of event threads in terms of states, providing two patterns for designing software threads based on state diagrams and their activities.
Event threads in the domain can also form patterns. The text explains how ELM identifies the resource–user–thread pattern and the resource–guard–thread pattern, both addressing resource sharing by multiple domain entities. It also covers the case where entities need simultaneous exclusive access to more than one resource, and shows how ELM deals with deadlock prevention.
Design of Multithreaded Software is intended for software designers, architects, and researchers as well as systems designers, programmers, and engineers interested in a practical account of this novel approach.
1.1 Entity–Life Modeling.
1.2 Overview of This Book.
1.4 Engineering the Intangible.
1.5 The Development Process.
1.6 Unifi ed Modeling Language.
2 Support for Multithreading.
2.2 Concurrency in Java.
2.3 Concurrency in Ada.
3 State Modeling.
3.2 State–Modeling Terminology.
3.3 Basic State Modeling.
3.6 State Modeling in Practice.
3.7 State Machine Implementation.
II The ELM Way.
4 Entity–Life Modeling.
4.2 Modeling Software on Event Threads.
4.3 Discovering and Choosing Event–Thread Models.
4.4 Event–Thread Patterns for Resource Sharing.
∗4.5 Portraying the World in Software.
5 Design Patterns Based on Event Threads.
5.2 State Machines without Software activities.
5.3 Sequential–Activities Design Pattern.
5.4 Concurrent–Activities Design Pattern.
5.5 Communicating State Machines.
6 Event–Thread Patterns for Resource Sharing.
6.2 Resource–User–Thread Pattern.
6.3 The Resource–Guard–Thread Pattern.
6.4 Choosing and Combining Patterns.
6.5 Examples with Dual Solutions.
6.6 Data Stream Processing.
6.7 Repository Problems.
7 Simultaneous Exclusive Access to Multiple Resources.
7.2 The Deadlock Problem.
7.3 Case Studies.
7.5 More on Deadlock and Its Prevention.
III Background and Discussion.
8 Real–Time Software Architectures and Data–Flow Design Approaches.
8.2 Real–Time Architectures.
8.3 Data–Flow Design Approaches.
9 The Origins of Entity–Life Modeling.
9.2 Early Experiences with Software Development.
9.3 The Jackson Methods.
22.214.171.124 Structure Clashes.
∗9.4 Formal Models and Methods.
9.5 Software Patterns.