| Second Edition now available! |
Real-time systems programmers face unique challenges. Qualities such as execution speed and memory size are paramount in the development of real-time systems, and performance is a fundamental aspect of correctness in this domain. Given these constraints and requirements, it is fair to say that the development of real-time systems is more challenging than that of most software systems. Yet the lack of a standard notation and design process has discouraged embedded systems developers from adopting a revolutionary new approach to software design--object technology--that has produced clearly identifiable benefits in less specialized software applications.
With the development and wide adoption of a standard notation, the Unified Modified Language (UML), real-time systems developers can now avail themselves of the benefits and advantages of object technology. UML is a 3rd generation modeling language which rigorously defines the semantics of the object metamodel and provides a notation for capturing and communicating object structure and behavior. It is particularly well-suited to modeling real-time and embedded systems. Real-Time UML is the introduction that developers of real-time systems need to make the transition to object-oriented analysis and design and modeling with UML. It covers the important features of the UML and shows how to effectively use the UML to model real-time systems. The book includes special in-depth discussions of finite state machines, object identification strategies, and real-time design patterns to help beginning and experienced developers alike.
1. Introduction to Real-Time Systems and Objects.
What is Special about Real-Tim Systems?
Dealing with Time.
Advantage of Objects.
Object Orientation with UML.
UML Diagrams and Notation.
A Look Ahead.
References.
2. Requirements Analysis of Real-Time Systems.
External Events.
Specifying External Events.
Use Cases.
Scenarios.
Context Diagrams and Use Cases in Real-Tim Systems.
References.
3. Analysis: Defining the Object Structure.
The Object Discovery Process.
Key Strategies for Object-Oriented Analysis.
Identify Object Associations.
Object Attributes.
Class Utilities.
Verifying the Problem Statement.
Discovering Candidate Classes.
Class Diagrams.
Defining Class Relationships and Associations.
Associations.
Aggregation and Composition.
Associative Classes.
Generalization Relationships.
Summary.
References.
4. Analysis: Defining Object Behavior.
Object Behavior.
Defining Object State Behavior.
UML State Diagrams.
The Role of Scenarios in the Definition of Behavior.
Defining Operations.
Summary.
References.
5. Architectural Design.
Overview of Design.
What is Architectural Design?
Representing Physical Architecture in UML.
Architectural Patterns.
Communication Infrastructure.
Concurrency Design.
Representing Tasks.
Defining Task Threads.
Assigning Objects to Tasks.
Defining Task Rendezvous.
Summary.
References.
6. Mechanistic Design.
What is Mechanistic Design?
Mechanistic Design Patterns.
Summary.
References.
7. Detailed Design.
What is Detailed Design?
Data Structure.
Associations.
Operations.
Visibility.
Algorithms.
Exceptions.
Summary.
References.
Appendix: Notational Summary.
Index 0201325799T04062001
Goals
Real-Time UML: Developing Efficient Objects for Embedded Systems is an introduction to object-oriented analysis and design for hard real-time systems using the Unified Modified Language (UML). UML is a third generation modeling language which rigorously defines the semantics of the object metamodel and provides a notation for capturing and communicating object structure and behavior. Many methodologists-including Grady Booch (Booch Method), Jim Rumbaugh (Object Modeling Technique (OMT), Ivar Jacobson (Object-Oriented Software Engineering (OOSE), and David Harel (Statecharts)-collaborated to achieve UML. A great many more participated, myself included, in the specification of the UML, and we believe that it is the leading edge in modeling for complex systems.
There are very few books on the use of objects in real-time systems and even fewer on UML. Virtually all object-oriented books focus primarily on business or database application domains and do not mention real-time aspects at all. On the other hand, texts on real-time systems have largely ignored object-oriented methods. For the most part, they fall into two primary camps: those that bypass methodological considerations altogether and focus solely on "bare metal" programming, and those that are highly theoretical with little advice for actually implementing workable systems. Real-Time UML: Developing Efficient Objects for Embedded Systems is meant to be a concise and timely bridge for these technologies, presenting the development of deployable real-time systems using the object semantics and notation of the UML. This has many advantages, including focusing the development process of real-time systems into logical, concrete steps that progress in an orderly fashion with a standardized notation.
AudienceThe book is oriented towards the practicing professional software developer and the computer science major, in the junior or senior year. This book could also serve as an undergraduate or graduate level text, but the focus is on practical development rather than a theoretical introduction. Very few equations will be found in this book, but more theoretical and mathematical approaches are referenced where appropriate. The book assumes a reasonable proficiency in at least one programming language and at least a cursory exposure to the fundamental concepts of both object orientation and real-time systems.
OrganizationThe book follows the normal analysis--design--implementation approach followed by most development projects. The first chapter identifies the fundamental concepts of objects and real-time systems. The next two discuss analysis--the identification and specification of the problem to be solved. Analysis is divided into two portions: black box requirements analysis using context diagrams, use cases and scenarios (Chapter 2), and capturing the key concepts and their relationships from the problem domain (Chapter 3).
Design follows analysis and adds details as to how the analysis model should be implemented. Design is broken up into three parts, each taken up in a separate chapter--Architectural, Mechanistic, and Detailed design. The parts differ in the scope of their concerns. Architectural design deals with very broad scope strategic decisions, such as tasking models and inter-processor design. Mechanistic design focuses on how groups of objects collaborate to achieve common purposes. Both architectural and mechanistic design chapters include a number of patterns that have been found generally applicable in real-time systems. Finally, detailed design specifies the internal structure and function of individual objects.
Throughout the book, the UML notation is introduced as needed. However, a notational summary is provided in the appendix so that this book can continue to serve as a reference guide as your projects evolve.
ExamplesTwo different approaches to examples are used in different texts. Some authors (and readers) prefer a single example taken throughout the entire book to illustrate the various concepts. The other approach is to use many different examples with the idea that it is more useful to see the concepts used in a wide variety of applications. This book uses a compromise approach. A variety of real-time examples illustrate the concepts and notation of UML in several real-time application domains, but the examples reappear in different chapters of the book. This approach reinforces the concepts by showing how they apply in various situations. Special care has been taken to select real-time examples with rich behavioral semantics, however examples which are not strictly real-time are used where appropriate.
Bruce Powel Douglass, Ph.D. Summer 1997