Real-time Object Oriented Modeling
Real-time Object Oriented Modeling
About the Book
Are you looking for a more effective approach to real-time systems development? The development of real-time distributed systems is one of the most difficult engineering problems ever faced, taxing the capabilities of traditional real-time software development approaches.
Real-Time Object-Oriented Modeling is the first book that brings together, in a single harmonious approach, the power of object-oriented concepts tailored specifically for real-time systems, with an iterative and incremental process based on the use of executable models. Developed by practitioners, the proven methodology described here is becoming a leader in the industry. Using a learn-by-example approach, this book offers:
- A single consistent set of graphical modeling concepts, chosen to improve developer effectiveness, which applies uniformly to analysis, design, and implementation. This reduces the learning curve to master the entire method and eliminates expensive discontinuities across different stages of development.
- An approach to the object paradigm that is easy to learn and that applies to the construction of reusable architectural design components, not just low-level language elements. This unleashes the true power of the object paradigm.
- Techniques for constructing executable models to gain early confidence in specifications and design decisions.
- Approaches to project management that deliver the benefits of the object paradigm and executable models.
About the Contributors
Henrik is CTO of the PROTOS Software GmbH located in Munich and project lead of the Eclipse eTrice Open Source project ([1], [2]). Eclipse eTrice is the only active implementation of the Real-Time Object-Oriented Modeling (ROOM) language.
Since the late 1990's he is developing Domain Specific Languages (DSLs) for various domains like real time systems, systems engineering, static code analysis, and many more. As a coach and member of numerous customer projects, he uses heavily methodologies from the Eclipse ecosystem (Eclipse Modeling, Xtext, Graphiti) and JetBrains MPS.
[1] eTrice website https://eclipse.dev/etrice/
[2] eTrice YouTube playlist
Tim is a member of the executive board of the German consulting company oose, an MBSE coach, and an active member of the OMG and INCOSE communities. He has written sections of the initial SysML specification and is a co-chair of the SysML v2 finalization task force.
As a coach, he has advised many companies in different domains. His insights into their challenges are one source of his experience that he shares.
Tim is a co-host of The MBSE Podcast.
All books written by Tim Weilkiens, including books not published by MBSE4U, can be found here.
You can contact him at tim@mbse4u.com and read his blog posts about MBSE in the MBSE4U blog.
Table of Contents
-
- Foreword of the Editors
- Foreword
-
Preface
- The Construction of Real-Time Systems
- Target Audience
- Book Layout
- ROOM and the ObjecTime Toolset
- A Note on the Choice of Programming Language
- Acknowledgements
-
PART ONE: General Introduction
-
1. Elements of a Real-Time Methodology
-
1.1 Components of Systems Development Methodologies
- 1.1.1 Modeling Languages
- 1.1.2 Modeling Heuristics
- 1.1.3 Work Organization
- 1.1.4 ROOM
- 1.1.5 The Scope of the ROOM Modeling Language
- 1.1.6 A General Constraint—Avoiding the Introduction of Discontinuities
- 1.1.7 A General Constraint—Using Graphical Representation
- 1.2 The ROOM Modeling Heuristics
- 1.3 The Work Organization Framework
- 1.4 Tool Support for ROOM
- 1.5 Summary
-
1.1 Components of Systems Development Methodologies
-
1. Elements of a Real-Time Methodology
-
PART TWO: Introduction to the ROOM Modeling Language
-
2. Characteristics of Real-Time Development
-
2.1 Properties of Systems to Which ROOM May Be Applied
- 2.1.1 A Sample Application Problem
- 2.1.2 Timeliness Issues
- 2.1.3 Dynamic internal Structure Issues
- 2.1.4 Reactiveness Issues
- 2.1.5 Concurrency Issues
- 2.1.6 Distribution Issues
-
2.2 Strategies for Dealing with Complexity
- 2.2.1 Abstraction
- 2.2.2 Recursion
- 2.2.3 Incremental Modeling
- 2.2.4 Reuse
- 2.2.5 Obstacles to the Use of Abstraction in Real-Time Development
- 2.3 Summary
-
2.1 Properties of Systems to Which ROOM May Be Applied
-
3. Key Elements of the ROOM Modeling Language
-
3.1 The Operational Approach
- 3.1.1 Problems with Semantic and Scope Discontinuities
- 3.1.2 Basic Concepts of the Operational Approach
-
3.2 A Phase-Independent Set of Modeling Abstractions
- 3.2.1 Problems with Phase Discontinuities
- 3.2.2 The Concept of Phase Independence
-
3.3 The Object Paradigm
- 3.3.1 Objects as Instances: Abstract Data Types
- 3.3.2 Objects as Software Machines
- 3.3.3 Objects as Logical Machines
- 3.3.4 Object Encapsulation
- 3.3.5 Messages
- 3.3.6 Classes
- 3.3.7 The Basics of Inheritance
- 3.3.8 Multiple Inheritance and Delegation
- 3.3.9 ROOM and the Object Paradigm
- 3.4 Summary
-
3.1 The Operational Approach
-
4. An Overview of the ROOM Modeling Language
-
4.1 A Simple ROOM Model
- 4.1.1 Actors and Actor Classes
- 4.1.2 Defining Actor Interfaces—Messages, Protocols, and Protocol Classes
- 4.1.3 Defining Actor Interfaces—Ports
- 4.1.4 Defining High-Level Actor Behavior—ROOMcharts
- 4.1.5 Defining High-Level Actor Behavior—Triggers
- 4.1.6 Defining High-Level Actor Behavior—Actions
- 4.1.7 Defining Encapsulated Actor Data—Data Classes and Extended State Variables
- 4.1.8 Defining Message Data
- 4.1.9 Executing a Simple ROOM Model
- 4.1.10 Summary
-
4.2 A Multi-Actor Hierarchical ROOM Model
- 4.2.1 Hierarchical Actor Structure
- 4.2.2 Inter-Actor Communication—Conjugation and Bindings
- 4.2.3 Relay Ports
- 4.2.4 Replicated References
- 4.2.5 Optional References
- 4.2.6 Actor State and Behavior
- 4.2.7 Internal Ports
- 4.2.8 Communication via System Service Access Points
- 4.2.9 Internal Message Sequences
- 4.2.10 Hierarchical State and Transition Structures
- 4.2.11 Another Look at Model Execution
- 4.2.12 Summary
-
4.3 The ROOM Detail Level
- 4.3.1 Message Sending and Receiving
- 4.3.2 Access to Other ROOM Services
- 4.3.3 Source-Level Debugging and Model Execution
- 4.3.4 Summary
-
4.4 A ROOM Model with Inheritance
- 4.4.1 Inheritance among Protocol Classes
- 4.4.2 Inheritance among Actor Classes
- 4.4.3 Inheritance among Data Classes
- 4.4.4 Summary
-
4.5 Some Advanced ROOM Features
- 4.5.1 Layering
- 4.5.2 The Multiple Containment Construct
- 4.5.3 Substitutability
- 4.5.4 Summary
- 4.6 Summary
-
4.1 A Simple ROOM Model
-
2. Characteristics of Real-Time Development
-
PART THREE: The Definition of the ROOM Modeling Language
-
5. The Conceptual Framework of ROOM
- 5.1 The Abstraction Levels Paradigm
- 5.2 The Modeling Dimensions Paradigm
- 5.3 Complementarity of the Framework Paradigms
- 5.4 Summary
-
6. High-Level Structure Modeling
- 6.1 High-Level Structural Classes
-
6.2 Actors and Actor Interfaces
- 6.2.1 Actors
- 6.2.2 The Encapsulation Shell of an Actor
- 6.2.3 The Interface Components of an Actor
- 6.2.4 Graphical Notation for Actor References
-
6.3 Messages and Protocols
- 6.3.1 Messages
- 6.3.2 Protocols
- 6.3.3 Actor Interface Types, Polymorphism, and Actor Types
-
6.4 Actor Composition
- 6.4.1 Communication Relationships and Bindings
- 6.4.2 Actor Structures
- 6.4.3 Generic Actor Structures
-
6.5 Hierarchical Structures
- 6.5.1 Composite Actors
- 6.5.2 Relay Ports
- 6.5.3 Customized Functional Combinations
- 6.5.4 Complex Relationships as Composite Actors
-
6.6 The Linkage Between Structure and Behavior
- 6.6.1 The Behavior Component
- 6.6.2 End Ports
- 6.6.3 Classification of Ports
- 6.6.4 Behavior as the Coordinator
-
6.7 Multiple Containment
- 6.7.1 Equivalences
- 6.7.2 The Semantics of Equivalences
-
6.8 Dynamically Modifiable Structures
- 6.8.1 Dynamic Actors
- 6.8.2 Dynamic Actor Relationships
- 6.8.3 Dynamic Structure Example
-
6.9 Replication
- 6.9.1 Replicated Actors
- 6.9.2 Replicated Ports
- 6.9.3 Common Replicated Structures
- 6.9.4 Replicated Port Splitting
- 6.9.5 Replication and Multiple Containment
-
6.10 Formal Specifications
- 6.10.1 Actor Classes
- 6.10.2 Protocol and Message Classes
- 6.11 Summary
-
7. Layering
-
7.1 The Semantics of Layering Relationships
- 7.1.1 The Characteristics of Layering
- 7.1.2 Layering in Software Systems—Virtual Machines
- 7.1.3 The Dimensionality of Layering
-
7.2 The ROOM Model of Layering
- 7.2.1 The ROOM Interlayer Communication Model
- 7.2.2 Layers and Actors
-
7.3 The ROOM Virtual Machine Layer
- 7.3.1 System Services
- 7.3.2 Interfacing to External Environments
- 7.4 Identifying Layers
-
7.5 Formal Specifications
- 7.5.1 Service Provision Interface
- 7.5.2 Implementation Interface
- 7.5.3 Layer Connection Contracts
- 7.6 Summary
-
7.1 The Semantics of Layering Relationships
-
8. High-Level Behavior Modeling
-
8.1 The ROOM Event-Processing Model
- 8.1.1 Events
- 8.1.2 Run-to-Completion Event Processing
- 8.1.3 Event Priorities
- 8.1.4 Event Queueing and Scheduling
-
8.2 State Machine Models
- 8.2.1 The Essentials of State Machines
- 8.2.2 Extended State Machines
- 8.2.3 State Machines and Complexity
-
8.3 ROOMcharts
- 8.3.1 Basic Notation and Concepts
- 8.3.2 Advanced Modeling Concepts
- 8.4 Formal Specifications
- 8.5 Summary
-
8.1 The ROOM Event-Processing Model
-
9. Inheritance
-
9.1 Toward a Theory of Using Inheritance—Issues, Guidelines, and Heuristics
- 9.1.1 The Meaning of Inheritance Hierarchies
- 9.1.2 Inheritance and Inclusion
- 9.1.3 The Definition and Use of Abstract Classes
- 9.1.4 Subclassing
- 9.1.5 Excluding Attributes
- 9.1.6 Overriding Attributes
- 9.1.7 Inverted Inheritance
- 9.1.8 Issues in Generating an Inheritance Hierarchy
- 9.1.9 Maintenance Issues
- 9.1.10 Management Issues
-
9.2 Inheritance in ROOM
- 9.2.1 Structural Inheritance
- 9.2.2 Behavioral Inheritance
- 9.2.3 Protocol Inheritance
-
9.3 Inheritance Example
- 9.3.1 Specification
- 9.3.2 Analysis and Design
- 9.4 Summary
-
9.1 Toward a Theory of Using Inheritance—Issues, Guidelines, and Heuristics
-
10. The Detail Level
- 10.1 The Linkage Between the Detail Level and the Higher ROOM Levels
-
10.2 State Machine Action Code
- 10.2.1 Inter-Actor Communications
- 10.2.2 Dealing with Time
- 10.2.3 Interaction with Dynamic Structure
- 10.2.4 Behavior and Replicated Structures
- 10.2.5 Interaction with External Entities
- 10.2.6 Exception Handling
- 10.2.7 Inheritance and Action Code
-
10.3 Detail Level Objects
- 10.3.1 ROOM Linkage Objects
- 10.3.2 User-Defined Classes and Libraries
- 10.4 Code Generation
- 10.5 Summary
-
11. Implementing ROOM Models
-
11.1 The Architecture of the ROOM Virtual Machine
- 11.1.1 Format and Scope
- 11.1.2 Structures
- 11.1.3 The Services System
- 11.1.4 The Control System
- 11.1.5 The Timing Service
- 11.1.6 The Processing Service
- 11.1.7 The Frame Service
- 11.1.8 The Communications Service
- 11.1.9 Other Services
-
11.2 Mapping ROOM Specifications into Real-Time Environments
- 11.2.1 Environment Assumptions
- 11.2.2 Implementing High-Level Behavior
- 11.2.3 Implementing Structure
- 11.2.4 Implementing Services
- 11.3 Summary
-
11.1 The Architecture of the ROOM Virtual Machine
-
5. The Conceptual Framework of ROOM
-
PART FOUR: Process Issues
-
12. Model Development Heuristics
- 12.1 Example: Introduction
- 12.2 Example: Model Requirements
-
12.3 Example: Modeling the System and Its Environment
- 12.3.1 Capturing the Initial Model
- 12.3.2 Deriving the Admin and User Protocol Classes
- 12.3.3 Capturing the User Behavior
-
12.4 Example: Modeling the System
- 12.4.1 Deriving the Top-Level System Actors
- 12.4.2 Examining the Telephone Call Scenario
- 12.4.3 Modeling the PBX Actor
- 12.4.4 Completing the PBX Structure Capture
- 12.4.5 Capturing Behavior
- 12.4.6 Validating the TelephoneHandler: Executing the Model
- 12.4.7 Capturing the Remaining Behavior
- 12.4.8 Constructing the Validation Components
- 12.4.9 Validation Results
- 12.5 Example: Synopsis of the Modeling Process
- 12.6 Example: Distributed System Impacts
-
12.7 An Introduction to Model Development
- 12.7.1 Model Development versus Product Development
- 12.7.2 Model Development Objectives
- 12.7.3 Model Development Overview
-
12.8 Modeling Activities
- 12.8.1 Discovery
- 12.8.2 Invention
- 12.8.3 Validation
-
12.9 Scenarios
- 12.9.1 Definition and Scope
- 12.9.2 Describing Requirements as Scenarios
- 12.9.3 Scenarios for Design and Concurrency Resolution
- 12.9.4 Scenario Packages
- 12.9.5 Summary of Scenarios
-
12.10 System Scope: Environment and Validation Components
- 12.10.1 Definition of System Boundary
- 12.10.2 Modeling the Boundary
- 12.10.3 Validation Components
-
12.11 Model Development Strategy
- 12.11.1 Incrementing and Iterating Models
- 12.11.2 Model Commencement versus Completion
- 12.11.3 Inheritance and Iteration
- 12.11.4 Requirements Traceability
- 12.11.5 Summary of Model Development Strategy
-
12.12 Techniques for Element Identification and Consolidation
- 12.12.1 Element Identification
- 12.12.2 Element Consolidation
- 12.12.3 Actor Class Identification and Consolidation
- 12.12.4 Protocol Class Identification and Consolidation
- 12.12.5 Data Class Identification and Consolidation
- 12.12.6 Layer Identification
-
12.13 Behavior Capture and Consolidation
- 12.13.1 Scenarios
- 12.13.2 Scenario Conflict Resolution
- 12.13.3 Capturing States and Transitions
- 12.13.4 Coding
- 12.13.5 Summary of Behavior Capture and Consolidation
-
12.14 Validation
- 12.14.1 General Approach
- 12.14.2 Detailed Techniques
- 12.14.3 Summary of Validation
- 12.15 Summary
-
13. Architectural Heuristics
-
13.1 The Definition of Architecture
- 13.1.1 Properties of Good Architectures
- 13.1.2 Architecture of the PBX Example
- 13.2 Approaches to Architecture
-
13.3 Internal Control: The Neglected Essential
- 13.3.1 Internal Control
- 13.3.2 The Disregard for Internal Control Issues
-
13.4 Approaches to Internal Control
- 13.4.1 Separating Internal Control from Function
- 13.4.2 Control Policies and Control Mechanisms
- 13.4.3 The Canonical Real-Time System Model
- 13.4.4 Modeling the Behavior of Controlled Components
- 13.5 Summary
-
13.1 The Definition of Architecture
-
14. Work Organization
- 14.1 Product-Oriented versus Project-Oriented Development
- 14.2 Product Requirements
- 14.3 Product Development Activities
- 14.4 Deliverables
- 14.5 Universal Model Relationships
- 14.6 Specific Model Types
- 14.7 Project Team Organization
- 14.8 Project Management and Tracking
- 14.9 Summary
-
12. Model Development Heuristics
-
APPENDICES
-
APPENDIX A: The ObjecTime Toolset
- History and Objectives
- Software Development Environments
-
ObjecTime Model Development Environment
- Model Management
- Model Editors
- Model Cross Reference and Navigators
- Model Compiler
- ObjecTime Run-Time Systems
- Model Validation
-
APPENDIX B: An Annotated Implementation Example
-
Introduction
- Elements of C++ Syntax
- Generic Definitions
- FSM-Specific Definitions
- Generic Utility Procedures
- FSM-Specific Routines
- Generic Routines
- Main Program
-
Introduction
-
APPENDIX C: Rationale for ROOMcharts
-
Methods of Describing Behavior
- Assertional Methods
- Operational Methods
- A Comparison of Statecharts and ROOMcharts
-
Methods of Describing Behavior
-
APPENDIX D: ROOM Graphical Notation Summary
- Structure Notation
- Behavior Notation
-
APPENDIX E: ROOM Linear Form Representation — Concrete Syntax
- Notational Conventions
-
BNF for ROOM Linear Form
- General
- Actor Classes
- Protocol Classes
- References and Bibliography
-
Blurb
- About the Authors
- About the Book
-
APPENDIX A: The ObjecTime Toolset
- Notes
About the Publisher
This book is published on Leanpub by MBSE4U
Lean Publishing for MBSE
MBSE4U is a lean publishing house for MBSE books with up-to-date content that follows the dynamic changes in the MBSE community and markets.
MBSE4U aims to provide knowledge, practice, and more about MBSE. It offers publications about MBSE methodologies and methods such as SYSMOD, VAMOS, FAS, and MBSE Craftsmanship.
The Leanpub 60 Day 100% Happiness Guarantee
Within 60 days of purchase you can get a 100% refund on any Leanpub purchase, in two clicks.
Now, this is technically risky for us, since you'll have the book or course files either way. But we're so confident in our products and services, and in our authors and readers, that we're happy to offer a full money back guarantee for everything we sell.
You can only find out how good something is by trying it, and because of our 100% money back guarantee there's literally no risk to do so!
So, there's no reason not to click the Add to Cart button, is there?
See full terms...
Earn $8 on a $10 Purchase, and $16 on a $20 Purchase
We pay 80% royalties on purchases of $7.99 or more, and 80% royalties minus a 50 cent flat fee on purchases between $0.99 and $7.98. You earn $8 on a $10 sale, and $16 on a $20 sale. So, if we sell 5000 non-refunded copies of your book for $20, you'll earn $80,000.
(Yes, some authors have already earned much more than that on Leanpub.)
In fact, authors have earnedover $13 millionwriting, publishing and selling on Leanpub.
Learn more about writing on Leanpub
Free Updates. DRM Free.
If you buy a Leanpub book, you get free updates for as long as the author updates the book! Many authors use Leanpub to publish their books in-progress, while they are writing them. All readers get free updates, regardless of when they bought the book or how much they paid (including free).
Most Leanpub books are available in PDF (for computers) and EPUB (for phones, tablets and Kindle). The formats that a book includes are shown at the top right corner of this page.
Finally, Leanpub books don't have any DRM copy-protection nonsense, so you can easily read them on any supported device.
Learn more about Leanpub's ebook formats and where to read them