Design Methods for Reactive Systems - 1st Edition - ISBN: 9781558607552, 9780080503950

Design Methods for Reactive Systems

1st Edition

Yourdon, Statemate, and the UML

Authors: R. Wieringa
Hardcover ISBN: 9781558607552
eBook ISBN: 9780080503950
Imprint: Morgan Kaufmann
Published Date: 27th December 2002
Page Count: 500
Tax/VAT will be calculated at check-out
Compatible Not compatible
VitalSource PC, Mac, iPhone & iPad Amazon Kindle eReader
ePub & PDF Apple & PC desktop. Mobile devices (Apple & Android) Amazon Kindle eReader
Mobi Amazon Kindle eReader Anything else

Institutional Access

Table of Contents


PART I Reactive System Design

1 Reactive Systems

1.1 Examples of Reactive Systems

1.2 Reactive versus Transformational Systems

1.3 Four Case Studies and Three Examples

1.4 Summary

1.5 Questions and Exercises

2 The Environment

2.1 External Interactions

2.2 Domains

2.3 The Subject Domain

2.3.1 Physical Entities

2.3.2 Conceptual Entities

2.3.3 Lexical Entities

2.4 The Functions of Reactive Systems

2.5 The Connection Domain

2.6 Summary

2.7 Questions and Exercises

3 Stimulus-Response Behavior

3.1 Cause and Effect Chains

3.2 Events, Conditions, and Actions

3.3 Events and Stimuli

3.3.1 Assumptions about Observers

3.3.2 Event Recognition

3.3.3 Unobservable Events

3.3.4 Observing Temporal Events

3.4 Responses and Actions

3.4.1 Assumptions about Actors

3.4.2 Response Computation

3.4.3 Unrealizable Actions

3.5 Summary

3.6 Questions and Exercises

4 Software Specifications

4.1 The System Engineering Argument

4.2 Specifications

4.3 The Role of Assumptions

4.4 Operational Property Specifications

4.5 Summary

4.6 Questions and Exercises

PART II Function Notations

5 Mission Statement

5.1 Notation

5.2 Relating System Purpose to Environment Purpose

5.2.1 Design Levels

5.2.2 Goal Analysis

5.3 Guidelines for Finding a Mission Statement

5.3.1 Statement of Purpose

5.3.2 Responsibilities

5.3.3 Composition

5.3.4 Exclusions

5.4 Summary

5.5 Questions and Exercises

6 Function Refinement Tree

6.1 Notation

6.1.1 Connection with Other Notations

6.2 Design Guidelines

6.2.1 Construction

6.2.2 Validation

6.3 Summary

6.4 Questions and Exercises

7 Service Description

7.1 Notation

7.2 Guidelines

7.3 Summary

7.4 Questions and Exercises

PART III Entity Notations

8 Entity-Relationship Diagrams

8.1 Entities and Attributes

8.1.1 Entity Types

8.1.2 Absolute Cardinality Properties

8.2 Relationships

8.2.1 Relative Cardinality Properties

8.2.2 Association Entities

8.3 Generalization

8.4 Summary

8.5 Questions and Exercises

9 ERD Modeling Guidelines

9.1 The Subject Domain Boundary

9.2 Entities versus Attributes

9.3 Entity versus Relationships

9.4 Taxonomic Structures

9.4.1 Rules of Classification

9.4.2 Static versus Dynamic Specialization

9.4.3 Classification and Counting

9.4.4 Subtypes versus Roles

9.5 Validation

9.5.1 Consistency

9.5.2 Checking Validity by Elementary Sentences

9.5.3 Checking Validity by Snapshots

9.5.4 Identification

9.5.5 Validation Summary

9.6 Summary

9.7 Questions and Exercises

10 The Dictionary

10.1 Domain Ontology

10.2 Syntactic Categories

10.3 Path Expressions

10.4 Extensional and Intensional Definitions

10.5 Guidelines

10.5.1 When to Define a Term

10.5.2 Definitions by Genus and Difference

10.5.3 Operational Definitions

10.5.4 Abbreviations and Correspondence Rules

10.6 Summary

10.7 Questions and Exercises

PART IV Behavior Notations

11 State Transition Lists and Tables

11.1 Event Lists

11.2 State Transition Tables

11.3 Decision Tables

11.4 Summary

11.5 Questions and Exercises

12 State Transition Diagrams

12.1 Mealy Diagrams

12.2 Variables

12.3 Statecharts

12.3.1 State Reactions

12.3.2 State Hierarchy

12.3.3 Parallelism

12.4 Summary

12.5 Questions and Exercises

13 Behavioral Semantics

13.1 Discretization

13.2 Wait States and Activity States

13.3 Pre- and Postconditions

13.4 Triggering

13.5 Step Semantics versus Single-Transition Semantics

13.5.1 Concurrent Transitions

13.5.2 Concurrent Events

13.6 Multistep Semantics

13.7 Action Semantics

13.8 Time

13.9 Summary

13.10 Questions and Exercises

14 Behavior Modeling and Design Guidelines

14.1 Two Examples

14.1.1 The Training Department

14.1.2 The Heating Controller

14.2 Guidelines

14.2.1 The System Engineering Argument

14.2.2 Finding a Behavior Description

14.2.3 From the Environment to the System

14.3 Summary

14.4 Questions and Exercises

PART V Communication Notations

15 Data Flow Diagrams

15.1 External Entities

15.2 Flows

15.3 Stores

15.4 Processes

15.4.1 Kinds of Processes

15.4.2 States of a Process

15.4.3 Data Process Specification

15.4.4 Control Process Specification

15.5 Parameterized DFDs

15.6 Summary

15.7 Questions and Exercises

16 Communication Diagrams

16.1 Requirement-Level Components

16.2 Communication Channels

16.3 Decomposition

16.4 Allocation and Flowdown

16.5 Summary

16.6 Questions and Exercises

17 Communication Semantics

17.1 Component Behavioral Semantics

17.2 Communication Channels

17.3 The Network

17.4 The Environment

17.5 Summary

17.6 Questions and Exercises

18 Context Modeling Guidelines

18.1 The System Boundary

18.2 Context Diagrams

18.3 The Context Boundary

18.4 Structuring the Context

18.5 Summary

18.6 Questions and Exercises

19 Requirements-Level Decomposition Guidelines

19.1 Architectures

19.2 Encapsulation versus Layering

19.3 Architectural Styles

19.4 Requirements-Level Architecture Guidelines

19.4.1 Functional Decomposition

19.4.2 Subject-Oriented Decomposition

19.4.3 Communication-Oriented Decomposition

19.4.4 Behavior-Oriented Decomposition

19.4.5 Choosing Decomposition Guidelines

19.5 Evaluation

19.5.1 Syntactic Coherence Checks

19.5.2 Traceability Check

19.5.3 Data Access Check

19.5.4 Executing the Model

19.5.5 The System Engineering Argument

19.5.6 Generating a Throw-away Prototype

19.5.7 Quality Attributes Check

19.6 Summary

19.7 Questions and Exercises

PART VI Software Specification Methods

20 Postmodern Structured Analysis (PSA)

20.1 Notations

20.2 Coherence Rules

20.3 Choosing Notations

20.4 Summary

20.5 Questions and Exercises

21 Statemate

21.1 Notations

21.1.1 Temporal Events

21.1.2 Starting, Suspending, Resuming, and Stopping Activities

21.2 Choosing Notations

21.2.1 Placing Activity in a Statechart or in an Activity Chart

21.2.2 Representing Parallelism in Statecharts or in Activity Charts

21.3 Execution Semantics

21.4 Summary

21.5 Questions and Exercises

22 The Unified Modeling Language (UML)

22.1 Notations

22.2 Activity Diagrams

22.2.1 Wait State and Activity States

22.2.2 Sequence

22.2.3 Hierarchy

22.2.4 Parallelism

22.2.5 Choice

22.3 Static Structure Diagrams

22.3.1 SSDs and ERDs

22.3.2 Representing Classes and Objects

22.3.3 Stereotypes

22.3.4 The Meaning of a SSD

22.4 Behavior Specification

22.4.1 Specifying the Effect of Operation Calls

22.4.2 Specifying the Effect of Signal Receptions

22.4.3 Specifying Object Life Cycles

22.4.4 Differences between Operations and Signals

22.5 Communication and Coherence

22.6 Static Structure Design Guidelines

22.7 Execution Algorithm

22.8 Collaboration and Sequence Diagrams

22.9 Summary

22.10 Questions and Exercises

23 Not Yet Another Method (NYAM)

23.1 Software Design Context

23.2 From Flyweight to Heavyweight Use of Notations

23.3 Design Approach

23.4 Engineering Arguments

23.5 Formality and Precision

23.6 Summary


A A Training Information System

B An Electronic Ticket System

C A Heating Control System

D An Elevator Control System

E Answers to Selected Exercises


Online Materials ( E (continued) Answers to Selected Exercises (pass protected) F A Controller for a Compact Dynamic Bus Station G A Cruise Control System H A Logistics Information System Slides for Teachers Handout of the Slides Notes for Teachers


Design Methods for Reactive Systems describes methods and techniques for the design of software systems—particularly reactive software systems that engage in stimulus-response behavior. Such systems, which include information systems, workflow management systems, systems for e-commerce, production control systems, and embedded software, increasingly embody design aspects previously considered alone—such as complex information processing, non-trivial behavior, and communication between different components—aspects traditionally treated separately by classic software design methodologies. But, as this book illustrates, the software designer is better served by the ability to intelligently pick and choose from among a variety of techniques according to the particular demands and properties of the system under development.

Design Methods for Reactive Systems helps the software designer meet today's increasingly complex challenges by bringing together specification techniques and guidelines proven useful in the design of a wide range of software systems, allowing the designer to evaluate and adapt different techniques for different projects. Written in an exceptionally clear and insightful style, Design Methods for Reactive Systems is a book that students, engineers, teachers, and researchers will undoubtedly find of great value.

Key Features

  • Shows how the techniques and design approaches of the three most popular design methods can be combined in a flexible, problem-driven manner.
  • Pedagogical features include summaries, rehearsal questions, exercises, discussion questions, and numerous case studies.


Students, engineers, teachers, and researchers in software development or software engineering.


No. of pages:
© Morgan Kaufmann 2003
Morgan Kaufmann
eBook ISBN:
Hardcover ISBN:


"This book presents a refreshing but serious and conscientious approach to the work of developing useful software. Roel Wieringa, being a philosopher as well as an engineer, is determined to convey understanding along with practice, and insight along with information. He is not blinded by ephemeral fashions in notation, but draws eclectically from both new and old ideas and techniques. He looks critically at widely used techniques and notations, and judges clearly what should be adopted because it is simple and good, what must be supplemented from another source because it is deficient, and what must be discarded because it is too complicated." —From the Foreword by Michael Jackson, Independent Consultant, UK "Design Methods for Reactive Systems is a most welcome addition to the literature on systems and software engineering. It is serious and balanced, refreshingly general and hype-free, and is one of the very few books in this area that is not a user manual for a particular methodology. It concentrates admirably on the difficult subject of reactive systems and their behavior, going to considerable lengths to present an impartial view of the main approaches to this subject." —Dr. David Harel, Dean, Faculty of Mathematics and Computer Science, The Weizmann Institute of Science, Israel "Wieringa's book is one of the most significant design textbooks of the decade. Wieringa uses his undoubted experience in both practical and theoretical design to create a textbook that moves beyond the "statics" of transformational (predetermined) systems to the "dynamics" of reactive systems. In its turn, it lays down the foundations and provides the rationale for a subsequent subject on software product engineering. As such, it fills a very definite need." —M. Whitelaw, Charles Stuart University, Wagga Wagga, Australia "To use methods well, it's vital to have a good grasp of their conceptual underpinnings. Most books in this area focus solely on notation and don't clarify the important issues. This book is different. It's intellectually rigorous, insightful, and original. In particular, the coverage of UML is far more substantial and reasoned than I have found in any of its 'official' texts." —Daniel Jackson, Laboratory for Computer Science, MIT "This book makes a significant contribution to the software engineering literature. Although the emphasis is on the use of notations to express the functionality of reactive systems, the case studies used throughout the book also highlight the importance of nonfunctional or quality attributes. The summaries included in each chapter are very useful as a shortcut if the reader lacks the time to cover the chapter. The questions and exercises will be useful for instructors and students." —Dr. Mario R. Barbacci, Software Engineering Institute, Carnegie Mellon University "This book is a primer for reactive system developers. I have worked for over 20 years developing telecom systems and automotive electronics. If this book had been around earlier, it could have helped us avoid many costly problems we encountered." —Felix Bachmann, Carnegie Mellon University, Software Engineering Institute

About the Authors

R. Wieringa Author

Roel Wieringa is professor in the Department of Computer Science at the University of Twente, The Netherlands. He is author of Requirements Engineering (Wiley) and has edited several other books and published over 50 papers on software design methods. He has been involved in several national and international research projects with academia and industry in the area of requirements specification, distributed information systems, and software design methods.

Affiliations and Expertise

University of Twente, Enschede, The Netherlands