Computing Reviews
Today's Issue Hot Topics Search Browse Recommended My Account Log In
Review Help
Search
Design of multithreaded software : the entity-life modeling approach
Sandén B., Wiley-IEEE Computer Society Pr, Hoboken, NJ, 2011. 320 pp. Type: Book (978-0-470876-59-6)
Date Reviewed: Sep 20 2011

The book deals with designing reactive systems using the entity-life modeling (ELM) approach, which the author invented and pursued. His first major publications on ELM appeared in 1989, in Communications of the ACM; earlier ones were presented at conferences.

ELM is a design method that does not rely on any specific diagrammatic notation except for state diagrams, which many designs commonly use. At least, the method does not make an attempt to introduce its own notation, which is rather unusual, given the fact that almost every software design method that I am aware of, from Ward/Mellor to unified modeling language (UML), has its own set of diagrams.

The essence of ELM relies on exploring threads as construction elements of software architecture. This is a unique feature of this method, since all other methods of building software architecture that I am familiar with rely first on distinguishing static components, then on developing a description of interactions among these components, and finally on adding concurrency to respective components. In sharp contrast to that, ELM puts concurrency first, which is a tremendous advantage in building software for real-time and embedded systems, or, as the author calls them, reactive systems.

The book is composed of three parts. It starts with three chapters on foundations of the development process, the use of multithreading, and state modeling. The second part introduces the reader to the essence of ELM, including a discussion of event threads and their mapping onto control threads, design patterns specific to threads, thread patterns for resource sharing, and simultaneous access to resources. The book ends with two chapters that provide a general discussion on the origins of ELM and its relationship to data-flow design methods.

Examples of using ELM for designing actual software abound throughout the book, and include such applications as a multi-elevator system, a traffic light system, an automatic train switchyard, a flexible manufacturing system, and several others. To an extent, these are only academic examples, but their value lies in presenting the capabilities of ELM, which we can naturally and easily port to actual industrial designs.

I must mention one additional important consideration: the relationship of ELM to object-oriented methods, especially UML. The author himself compares ELM to object-oriented methods as follows: “The object-oriented designer seeks problem-domain entities that map onto implementable classes,” and “ELM applies this to the time dimension: we analyze the problem for event threads that can map onto control threads.”

I fully agree with this picture. The value of ELM, and possibly its advantage over object-oriented methods, is in its explicit approach to capturing the system dynamics. Event threads, the essential construction element of ELM, are built-in concurrency units responding to events. The design starts with them and subsequently evolves around them.

To summarize, the major contribution of this book is its presentation of a refreshing view of designing reactive systems using engineering principles, which focus on the system dynamics. Without much formalism, the method captures the essence of architectural design of embedded real-time systems, not precluding the use of automatic design tools. I would recommend the book as a textbook for software design and architecture courses that focus on real-time software development.

I have to say that the book is a pleasure to read. Multiple quotes from, and references to, respected computer scientists and software engineers--Brooks, Dijkstra, Fairley, and Jackson, to name a few--as well as interesting associations of topics with some major literary figures, such as Jonathan Swift or Lewis Carroll, are enormously inspiring, and make the book much more than a plain technical volume.

Reviewer:  Janusz Zalewski Review #: CR139457 (1204-0339)
Bookmark and Share
  Reviewer Selected
Featured Reviewer
 
 
Threads (D.4.1 ... )
 
 
Parallel Programming (D.1.3 ... )
 
 
Concurrent Programming (D.1.3 )
 
 
Design Tools and Techniques (D.2.2 )
 
 
General (D.2.0 )
 
Would you recommend this review?
yes
no
Other reviews under "Threads": Date
An analysis of operating system behavior on a simultaneous multithreaded architecture
Redstone J., Eggers S., Levy H.  Architectural support for programming languages and operating systems (Ninth international conference, Cambridge, Massachusetts, United States, Nov 12-15, 2000)245-256, 2000. Type: Proceedings
Sep 25 2003
Scheduling multithreaded computations by work stealing
Blumofe R., Leiserson C. Journal of the ACM 46(5): 720-748, 1999. Type: Article
Jun 1 2000
Linear hashing with overflow-handling by linear probing
Larson P. ACM Transactions on Database Systems 10(1): 75-89, 1985. Type: Article
Dec 1 1985

E-Mail This Printer-Friendly
Send Your Comments
Contact Us
Reproduction in whole or in part without permission is prohibited.   Copyright 1999-2024 ThinkLoud®
Terms of Use
| Privacy Policy