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
- IPART ONE: General Introduction
1.Elements of a Real-Time Methodology
- 1.1Components of Systems Development Methodologies
- 1.1.1Modeling Languages
- 1.1.2Modeling Heuristics
- 1.1.3Work Organization
- 1.1.4ROOM
- 1.1.5The Scope of the ROOM Modeling Language
- 1.1.6A General Constraint—Avoiding the Introduction of Discontinuities
- 1.1.7A General Constraint—Using Graphical Representation
- 1.2The ROOM Modeling Heuristics
- 1.3The Work Organization Framework
- 1.4Tool Support for ROOM
- 1.5Summary
- IIPART TWO: Introduction to the ROOM Modeling Language
2.Characteristics of Real-Time Development
- 2.1Properties of Systems to Which ROOM May Be Applied
- 2.1.1A Sample Application Problem
- 2.1.2Timeliness Issues
- 2.1.3Dynamic internal Structure Issues
- 2.1.4Reactiveness Issues
- 2.1.5Concurrency Issues
- 2.1.6Distribution Issues
- 2.2Strategies for Dealing with Complexity
- 2.2.1Abstraction
- 2.2.2Recursion
- 2.2.3Incremental Modeling
- 2.2.4Reuse
- 2.2.5Obstacles to the Use of Abstraction in Real-Time Development
- 2.3Summary
3.Key Elements of the ROOM Modeling Language
- 3.1The Operational Approach
- 3.1.1Problems with Semantic and Scope Discontinuities
- 3.1.2Basic Concepts of the Operational Approach
- 3.2A Phase-Independent Set of Modeling Abstractions
- 3.2.1Problems with Phase Discontinuities
- 3.2.2The Concept of Phase Independence
- 3.3The Object Paradigm
- 3.3.1Objects as Instances: Abstract Data Types
- 3.3.2Objects as Software Machines
- 3.3.3Objects as Logical Machines
- 3.3.4Object Encapsulation
- 3.3.5Messages
- 3.3.6Classes
- 3.3.7The Basics of Inheritance
- 3.3.8Multiple Inheritance and Delegation
- 3.3.9ROOM and the Object Paradigm
- 3.4Summary
4.An Overview of the ROOM Modeling Language
- 4.1A Simple ROOM Model
- 4.1.1Actors and Actor Classes
- 4.1.2Defining Actor Interfaces—Messages, Protocols, and Protocol Classes
- 4.1.3Defining Actor Interfaces—Ports
- 4.1.4Defining High-Level Actor Behavior—ROOMcharts
- 4.1.5Defining High-Level Actor Behavior—Triggers
- 4.1.6Defining High-Level Actor Behavior—Actions
- 4.1.7Defining Encapsulated Actor Data—Data Classes and Extended State Variables
- 4.1.8Defining Message Data
- 4.1.9Executing a Simple ROOM Model
- 4.1.10Summary
- 4.2A Multi-Actor Hierarchical ROOM Model
- 4.2.1Hierarchical Actor Structure
- 4.2.2Inter-Actor Communication—Conjugation and Bindings
- 4.2.3Relay Ports
- 4.2.4Replicated References
- 4.2.5Optional References
- 4.2.6Actor State and Behavior
- 4.2.7Internal Ports
- 4.2.8Communication via System Service Access Points
- 4.2.9Internal Message Sequences
- 4.2.10Hierarchical State and Transition Structures
- 4.2.11Another Look at Model Execution
- 4.2.12Summary
- 4.3The ROOM Detail Level
- 4.3.1Message Sending and Receiving
- 4.3.2Access to Other ROOM Services
- 4.3.3Source-Level Debugging and Model Execution
- 4.3.4Summary
- 4.4A ROOM Model with Inheritance
- 4.4.1Inheritance among Protocol Classes
- 4.4.2Inheritance among Actor Classes
- 4.4.3Inheritance among Data Classes
- 4.4.4Summary
- 4.5Some Advanced ROOM Features
- 4.5.1Layering
- 4.5.2The Multiple Containment Construct
- 4.5.3Substitutability
- 4.5.4Summary
- 4.6Summary
- IIIPART THREE: The Definition of the ROOM Modeling Language
5.The Conceptual Framework of ROOM
- 5.1The Abstraction Levels Paradigm
- 5.2The Modeling Dimensions Paradigm
- 5.3Complementarity of the Framework Paradigms
- 5.4Summary
6.High-Level Structure Modeling
- 6.1High-Level Structural Classes
- 6.2Actors and Actor Interfaces
- 6.2.1Actors
- 6.2.2The Encapsulation Shell of an Actor
- 6.2.3The Interface Components of an Actor
- 6.2.4Graphical Notation for Actor References
- 6.3Messages and Protocols
- 6.3.1Messages
- 6.3.2Protocols
- 6.3.3Actor Interface Types, Polymorphism, and Actor Types
- 6.4Actor Composition
- 6.4.1Communication Relationships and Bindings
- 6.4.2Actor Structures
- 6.4.3Generic Actor Structures
- 6.5Hierarchical Structures
- 6.5.1Composite Actors
- 6.5.2Relay Ports
- 6.5.3Customized Functional Combinations
- 6.5.4Complex Relationships as Composite Actors
- 6.6The Linkage Between Structure and Behavior31
- 6.6.1The Behavior Component
- 6.6.2End Ports
- 6.6.3Classification of Ports
- 6.6.4Behavior as the Coordinator
- 6.7Multiple Containment
- 6.7.1Equivalences
- 6.7.2The Semantics of Equivalences32
- 6.8Dynamically Modifiable Structures
- 6.8.1Dynamic Actors
- 6.8.2Dynamic Actor Relationships
- 6.8.3Dynamic Structure Example
- 6.9Replication
- 6.9.1Replicated Actors
- 6.9.2Replicated Ports
- 6.9.3Common Replicated Structures
- 6.9.4Replicated Port Splitting
- 6.9.5Replication and Multiple Containment
- 6.10Formal Specifications
- 6.10.1Actor Classes
- 6.10.2Protocol and Message Classes
- 6.11Summary
7.Layering
- 7.1The Semantics of Layering Relationships
- 7.1.1The Characteristics of Layering
- 7.1.2Layering in Software Systems—Virtual Machines
- 7.1.3The Dimensionality of Layering
- 7.2The ROOM Model of Layering
- 7.2.1The ROOM Interlayer Communication Model
- 7.2.2Layers and Actors
- 7.3The ROOM Virtual Machine Layer
- 7.3.1System Services
- 7.3.2Interfacing to External Environments
- 7.4Identifying Layers
- 7.5Formal Specifications
- 7.5.1Service Provision Interface
- 7.5.2Implementation Interface
- 7.5.3Layer Connection Contracts
- 7.6Summary
8.High-Level Behavior Modeling
- 8.1The ROOM Event-Processing Model
- 8.1.1Events
- 8.1.2Run-to-Completion Event Processing
- 8.1.3Event Priorities
- 8.1.4Event Queueing and Scheduling
- 8.2State Machine Models
- 8.2.1The Essentials of State Machines
- 8.2.2Extended State Machines
- 8.2.3State Machines and Complexity
- 8.3ROOMcharts
- 8.3.1Basic Notation and Concepts
- 8.3.2Advanced Modeling Concepts
- 8.4Formal Specifications
- 8.5Summary
9.Inheritance
- 9.1Toward a Theory of Using Inheritance—Issues, Guidelines, and Heuristics
- 9.1.1The Meaning of Inheritance Hierarchies
- 9.1.2Inheritance and Inclusion
- 9.1.3The Definition and Use of Abstract Classes
- 9.1.4Subclassing
- 9.1.5Excluding Attributes
- 9.1.6Overriding Attributes
- 9.1.7Inverted Inheritance
- 9.1.8Issues in Generating an Inheritance Hierarchy
- 9.1.9Maintenance Issues
- 9.1.10Management Issues
- 9.2Inheritance in ROOM
- 9.2.1Structural Inheritance
- 9.2.2Behavioral Inheritance
- 9.2.3Protocol Inheritance
- 9.3Inheritance Example
- 9.3.1Specification
- 9.3.2Analysis and Design
- 9.4Summary
10.The Detail Level
- 10.1The Linkage Between the Detail Level and the Higher ROOM Levels
- 10.2State Machine Action Code
- 10.2.1Inter-Actor Communications
- 10.2.2Dealing with Time
- 10.2.3Interaction with Dynamic Structure
- 10.2.4Behavior and Replicated Structures
- 10.2.5Interaction with External Entities
- 10.2.6Exception Handling58
- 10.2.7Inheritance and Action Code
- 10.3Detail Level Objects
- 10.3.1ROOM Linkage Objects
- 10.3.2User-Defined Classes and Libraries
- 10.4Code Generation61
- 10.5Summary
11.Implementing ROOM Models
- 11.1The Architecture of the ROOM Virtual Machine
- 11.1.1Format and Scope
- 11.1.2Structures
- 11.1.3The Services System
- 11.1.4The Control System
- 11.1.5The Timing Service
- 11.1.6The Processing Service
- 11.1.7The Frame Service
- 11.1.8The Communications Service
- 11.1.9Other Services
- 11.2Mapping ROOM Specifications into Real-Time Environments
- 11.2.1Environment Assumptions
- 11.2.2Implementing High-Level Behavior
- 11.2.3Implementing Structure
- 11.2.4Implementing Services
- 11.3Summary
- IVPART FOUR: Process Issues
12.Model Development Heuristics
- 12.1Example: Introduction
- 12.2Example: Model Requirements
- 12.3Example: Modeling the System and Its Environment
- 12.3.1Capturing the Initial Model
- 12.3.2Deriving the Admin and User Protocol Classes
- 12.3.3Capturing the User Behavior
- 12.4Example: Modeling the System
- 12.4.1Deriving the Top-Level System Actors
- 12.4.2Examining the Telephone Call Scenario
- 12.4.3Modeling the PBX Actor
- 12.4.4Completing the PBX Structure Capture
- 12.4.5Capturing Behavior
- 12.4.6Validating the TelephoneHandler: Executing the Model
- 12.4.7Capturing the Remaining Behavior
- 12.4.8Constructing the Validation Components
- 12.4.9Validation Results
- 12.5Example: Synopsis of the Modeling Process
- 12.6Example: Distributed System Impacts
- 12.7An Introduction to Model Development
- 12.7.1Model Development versus Product Development
- 12.7.2Model Development Objectives
- 12.7.3Model Development Overview
- 12.8Modeling Activities
- 12.8.1Discovery
- 12.8.2Invention
- 12.8.3Validation
- 12.9Scenarios
- 12.9.1Definition and Scope
- 12.9.2Describing Requirements as Scenarios
- 12.9.3Scenarios for Design and Concurrency Resolution
- 12.9.4Scenario Packages
- 12.9.5Summary of Scenarios
- 12.10System Scope: Environment and Validation Components
- 12.10.1Definition of System Boundary
- 12.10.2Modeling the Boundary
- 12.10.3Validation Components
- 12.11Model Development Strategy
- 12.11.1Incrementing and Iterating Models
- 12.11.2Model Commencement versus Completion
- 12.11.3Inheritance and Iteration
- 12.11.4Requirements Traceability
- 12.11.5Summary of Model Development Strategy
- 12.12Techniques for Element Identification and Consolidation
- 12.12.1Element Identification
- 12.12.2Element Consolidation
- 12.12.3Actor Class Identification and Consolidation
- 12.12.4Protocol Class Identification and Consolidation
- 12.12.5Data Class Identification and Consolidation
- 12.12.6Layer Identification
- 12.13Behavior Capture and Consolidation
- 12.13.1Scenarios
- 12.13.2Scenario Conflict Resolution
- 12.13.3Capturing States and Transitions
- 12.13.4Coding
- 12.13.5Summary of Behavior Capture and Consolidation
- 12.14Validation
- 12.14.1General Approach
- 12.14.2Detailed Techniques
- 12.14.3Summary of Validation
- 12.15Summary
13.Architectural Heuristics
- 13.1The Definition of Architecture
- 13.1.1Properties of Good Architectures
- 13.1.2Architecture of the PBX Example
- 13.2Approaches to Architecture
- 13.3Internal Control: The Neglected Essential
- 13.3.1Internal Control
- 13.3.2The Disregard for Internal Control Issues
- 13.4Approaches to Internal Control
- 13.4.1Separating Internal Control from Function
- 13.4.2Control Policies and Control Mechanisms
- 13.4.3The Canonical Real-Time System Model
- 13.4.4Modeling the Behavior of Controlled Components
- 13.5Summary
14.Work Organization
- 14.1Product-Oriented versus Project-Oriented Development
- 14.2Product Requirements
- 14.3Product Development Activities
- 14.4Deliverables
- 14.5Universal Model Relationships
- 14.6Specific Model Types
- 14.7Project Team Organization
- 14.8Project Management and Tracking
- 14.9Summary
- 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
APPENDIX C: Rationale for ROOMcharts
- Methods of Describing Behavior
- Assertional Methods
- Operational Methods
- A Comparison of Statecharts and ROOMcharts
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
