Doing Hard Time: Developing Real-Time Systems with UML, Objects, Frameworks, and Patterns with CDROM (Addison-Wesley Object Technology)
by Bruce P. Douglass
|
|
|
About This Book
ISBN13: 9780201498370 |
Only 2 left in stock at $74.25!
Synopses & Reviews
Publisher Comments:
"This book will almost certainly become a seminal work in this field...the one book everyone will want to have both as a tutorial and as a reference." --Larry McAlister, Senior Systems Architect, ENSCO, Inc.
The global demand for real-time and embedded systems is growing rapidly. With this increased demand comes an urgent need for more programmers in this realm; yet making the transition to real-time systems development or learning to build these applications is by no means simple. Real-time system designs must be written to meet hard and unforgiving requirements. It is a pursuit that requires a unique set of skills. Clearly, real-time systems development is a formidable task, and developers face many unique challenges as they attempt to do "hard time."
Doing Hard Time is written to facilitate the daunting process of developing real-time systems. It presents an embedded systems programming methodology that has been proven successful in practice. The process outlined in this book allows application developers to apply practical techniques--garnered from the mainstream areas of object-oriented software development--to meet the demanding qualifications of real-time programming.
Bruce Douglass offers ideas that are up-to-date with the latest concepts and trends in programming. By using the industry standard Unified Modeling Language (UML), as well as the best practices from object technology, he guides you through the intricacies and specifics of real-time systems development. Important topics such as schedulability, behavioral patterns, and real-time frameworks are demystified, empowering you to become a more effective real-time programmer.
The accompanying CD-ROM holds substantial value for the reader. It contains models from the book, as well as two applications that are extremely useful in the development of real-time and embedded systems. The first application, a UML-compliant design automation tool called Rhapsody (produced by I-Logix), captures analysis and design of systems and generates full behavioral code for those models with intrinsic model-level debug capabilities. The second application, TimeWiz, can analyze the timing and performance of systems and determine the schedulability of actions in multitasking systems.
AUTHOR BIO: Bruce Powel Douglass has worked as a software developer in real-time systems for almost twenty years. He is employed as Chief Evangelist for I-Logix, where he has been working closely with Rational and the other UML partners on the UML specification. He is on the Advisory Boards of the Embedded Systems Conference and the UML World Conference and has taught his own commercial real-time object-oriented courses for more than seven years.
Book News Annotation:
Presents an embedded systems programming methodology that Douglass
has found successful in developing real-time systems. It allows
application developers to apply practical techniques from mainstream
object-oriented software development. Using the industry standard
Unified Modeling Language, he considers such topics as
schedualability, behavioral patterns, and real-time frameworks. The
disk contains models from the book and two applications useful in
developing real-time and embedded systems. The package could be used
in a graduate or undergraduate course.
Annotation c. Book News, Inc., Portland, OR (booknews.com)
Annotation c. Book News, Inc., Portland, OR (booknews.com)
Synopsis:
Bruce Powel Douglass details a proven methodology that allows the average software programmer to have substantial success "doing hard time" — in other words, designing and coding software for the booming real-time and embedded systems market.
Table of Contents
Figure List
About the Author
Preface
Acknowledgments
Section 1: Basics
Chapter 1: Introduction to Objects and the Unified Modeling Language
1.1 Advantages of Objects
1.2 Terms and Concepts
1.3 Object Orientation with UML
1.3.1 Objects
1.3.2 Attributes
1.3.3 Behavior
1.3.4 Messaging
1.3.5 Responsibility
1.3.6 Concurrency
1.3.7 Objects as Autonomous Machines
1.4 Class Diagrams
1.4.1 Relations Among Classes and Objects
1.4.1.1 Association
1.4.1.2 Aggregation
1.4.1.3 Composition
1.4.1.4 Generalization
1.4.1.5 Dependency
1.5 Use Cases
1.6 Sequence Diagrams
1.7 Physical Representation
1.8 Things Common to Diagrams
1.8.1 Notes
1.8.2 Packages
1.8.3 Constraints
1.8.4 Stereotypes
1.9 Summary
1.10 A Look Ahead
1.11 Exercises
1.12 References
Chapter 2: Basic Concepts of Real-Time Systems
2.1 What is Real-Time?
2.2 Terms and Concepts
2.3 Timeliness
2.4 Responsiveness
2.5 Concurrency
2.5.1 Scheduling Concurrent Threads
2.5.2 Event Arrival Patterns
2.5.3 Thread Rendezvous Patterns
2.5.4 Sharing Resources
2.5.4.1 Asynchronous Access
2.5.4.2 Critical Sections
2.5.4.3 Semaphores
2.6 Predictability
2.6.1 Memory Management
2.7 Correctness and Robustness
2.7.1 Deadlock
2.7.2 Exceptional Conditions
2.7.3 Race Conditions
2.8 Distributed Systems
2.9 Fault Tolerance and Safety
2.10 Dealing with Resource-Limited Target Environments
2.11 Low-Level Hardware Interfacing
2.12 Real-Time Operating Systems
2.12.1 Scalability
2.12.2 Scheduling
2.12.3 Typical RTOS Features
2.12.3.1 Hardware Independence
2.12.3.2 Scalable Architectures
2.12.3.3 Resource Management (Memory Allocation)
2.12.3.4 Concurrency Management
2.12.3.5 Data Access Control and Protection
2.12.3.6 Time Management
2.12.3.7 Networking
2.12.3.8 I/O Services and File Systems
2.12.3.9 High-Level Language Support Libraries
2.12.3.10 Graphics Toolkits
2.13 Summary
2.14 Looking Ahead
2.15 Exercises
2.16 References
Chapter 3: Basic Concepts of Safety-Critical Systems
3.1 Introduction to Safety
3.1.1 The Therac-25 Story
3.1.2 Other Stories
3.2 Terms and Concepts
3.3 Safety Related Faults
3.3.1 Safety is a System Issue
3.3.2 Random Faults Versus Systematic Faults
3.3.3 Single Point Failures
3.3.4 Common Mode Failures
3.3.5 Latent Faults
3.3.6 Fail-Safe State
3.3.7 Achieving Safety
3.4 Safety Architectures
3.4.1 Single Channel Protected Design
3.4.1.1 Multichannel Voting Pattern
3.4.1.2 Homogeneous Redundancy Pattern
3.4.1.3 Diverse Redundancy Pattern
3.4.1.4 Monitor-Actuator Pattern
3.4.1.5 Watchdog Pattern
3.4.1.6 Safety Executive Pattern
3.5 Eight Steps to Safety
3.5.1 Step 1: Identify the Hazards
3.5.1.1 Determine the Faults Leading to Hazards
3.5.2 Step 2: Determine the Risks
3.5.3 Step 3: Define the Safety Measures
3.5.4 Step 4: Create Safe Requirements
3.5.5 Step 5: Create Safe Design
3.5.6 Step 6: Implementing Safely
3.5.6.1 Language Selection
3.5.7 Step 7: Assure Safety Process
3.5.8 Step 8: Test, Test, Test
3.6 A Few Safety Related Standards
3.7 Summary
3.8 Looking Ahead
3.9 Exercises
3.10 References
Chapter 4: Rapid Object-Oriented Process for Embedded Systems
4.1 Introduction
4.2 Terms and Concepts
4.2.1 Development Phases
4.2.2 Ordering
4.2.3 Maturity
4.3 Development Task Sequencing
4.3.1 Waterfall Lifecycle
4.3.2 Iterative Lifecycles
4.3.3 Prototyping
4.4 Scheduling and Estimation
4.4.1 Advantages of Accurate Schedules
4.4.2 Difficulties of Accurate Scheduling
4.5 The ROPES Macro Cycle
4.6 Analysis
4.6.1 Requirements Analysis
4.6.1.1 Activities
4.6.1.2 Metamodel Entities Used
4.6.1.3 Artifacts
4.6.2 Systems Analysis
4.6.2.1 Activities
4.6.2.2 Metamodel Entities Used
4.6.2.3 Artifacts
4.6.3 Object Analysis
4.6.3.1 Activities
4.6.3.2 Metamodel Entities Used
4.6.3.3 Artifacts
4.7 Design
4.7.1 Architectural Design
4.7.1.1 Activities
4.7.1.2 Metamodel Entities Used
4.7.1.3 Artifacts
4.7.2 Mechanistic Design
4.7.2.1 Activities
4.7.2.2 Metamodel Entities Used
4.7.2.3 Artifacts
4.7.3 Detailed Design
4.7.3.1 Activities
4.7.3.2 Metamodel Entities Used
4.7.3.3 Artifacts
4.8 Translation
4.8.1 Activities
4.8.2 Artifacts
4.9 Testing
4.9.1 Activities
4.10 Summary
4.11 Looking Ahead
4.12 Exercises
4.13 References
Section 2: Analysis
Chapter 5: Requirements Analysis of Real-Time Systems
5.1 Introduction
5.2 Terms and Concepts
5.2.1 Use Cases
5.2.2 Messages and Events
5.2.3 Scenarios, Protocols, and State Machines
5.3 Use Cases
5.3.1 Use Case Relations
5.3.1.1 Use Case Generalization Relation
5.3.1.2 Use Case Extension Relation
5.3.1.3 Use Case Includes Relation
5.3.2 Use Case Example: Air Traffic Control System
5.4 External Events
5.4.1 Context-Level Messages
5.4.1.1 Message Properties
5.5 Specifying External Messages
5.5.1 External Event List
5.5.2 Response Time
5.6 Detailing Use Case Behavior
5.6.1 Informal Textual Description
5.6.2 Scenarios
5.6.3 Sequence Diagrams
5.6.4 Statecharts for Defining Use Case Behavior
5.7 Identifying Use Cases
5.8 Using Use Cases
5.9 Heuristics for Good Requirements Analysis Diagrams
5.9.1 Use Case Diagram Heuristics
5.9.2 Use Case Heuristics
5.9.3 Use Case Sequence Diagram Heuristics
5.10 Summary
5.11 Looking Ahead
5.12 Exercises
5.13 References
Chapter 6: Structural Object Analysis
6.1 Introduction
6.2 Terms and Concepts
6.3 Key Strategies for Object Identification
6.3.1 Underline the Noun
6.3.2 Identify Causal Agents
6.3.3 Identify Coherent Services
6.3.4 Identify Real-World Items
6.3.5 Identify Physical Devices
6.3.6 Identify Essential Abstractions of Domains
6.3.7 Identify Transactions
6.3.8 Identify Persistent Information
6.3.9 Identify Visual Elements
6.3.10 Identify Control Elements
6.3.11 Execute Scenarios on the Object Model
6.4 Reification of Objects into Classes
6.5 Identify Object Associations
6.5.1 Multiplicity
6.5.2 Associations and Links
6.6 Aggregation and Composition
6.7 Object Attributes
6.8 Generalization Relationships
6.9 AATCS Example: Class Diagrams
6.10 Heuristics for Good Class Diagrams
6.10.1 Rules for Good Class Diagrams
6.11 Summary
6.12 Looking Ahead
6.13 Exercises
6.14 References
Chapter 7: Object Behavioral Analysis
7.1 Introduction
7.2 Terms and Concepts
7.2.1 Simple Behavior
7.2.2 State Behavior
7.2.3 Continuous Behavior
7.2.3.1 Fuzzy Systems
7.2.3.2 Artificial Neural Network (ANN) Systems
7.2.3.3 General Mathematics with Recursion
7.3 UML Statecharts
7.3.1 Basic State Semantics
7.3.2 Transitions and Events
7.3.3 Actions and Activities
7.3.4 Pseudostates
7.3.5 Orthogonal Regions and Synchronization
7.3.6 Basic Statechart Syntax
7.3.7 Inherited State Models
7.3.8 Ill-formed State Models
7.3.9 Example: AATCS Alarm System
7.4 The Role of Scenarios in the Definition of Behavior
7.4.1 Timing Diagrams
7.4.2 Sequence Diagrams
7.5 Activity Diagrams
7.6 Defining Operations
7.6.1 Types of Operations
7.6.2 Strategies for Defining Operations
7.7 Statechart Heuristics
7.8 Timing Diagram Heuristics
7.9 Activity Diagram Heuristics
7.10 Summary
7.11 Looking Ahead
7.12 Exercises
7.13 References
Section 3: Design
Chapter 8: Architectural Design
8.1 Introduction
8.2 Terms and Concepts
8.3 Tasking Model
8.3.1 Representing Tasks
8.3.1.1 Task Diagrams
8.3.1.2 Concurrent State Diagrams
8.3.1.3 Concurrent Activity Diagrams
8.3.1.4 Concurrent Sequence Diagrams
8.3.1.5 Concurrent Collaboration Diagrams
8.3.1.6 Concurrent Timing Diagrams
8.3.2 Defining Task Threads
8.3.2.1 Task Definition Strategies
8.3.3 Assigning Objects to Tasks
8.3.4 Defining Task Rendezvous
8.4 Component Model
8.5 Deployment Model
8.5.1 Representing Physical Architecture in the UML
8.5.2 Multiprocessor Systems
8.5.2.1 Component Location and Access
8.6 Safety/Reliability Model
8.6.1
8.6.1.1 Homogeneous Redundancy Pattern
8.6.1.2 Diverse Redundancy Pattern
8.6.1.3 Monitor-Actuator Pattern
8.6.1.4 Watchdog Pattern
8.6.1.5 Safety Executive Pattern
8.7 Summary
8.8 Looking Ahead
8.9 Exercises
8.10 References
Chapter 9: Mechanistic Design
9.1 Introduction
9.2 Terms and Concepts
9.2.1 Design Pattern Basics
9.3 Mechanistic Design Patterns
9.3.1 Correctness Patterns
9.3.1.1 Smart Pointer Pattern
9.3.1.2 Second Guess Pattern
9.3.1.3 Exception Monitor Pattern
9.3.2 Execution Control Patterns
9.3.2.1 Policy Pattern
9.3.2.2 State Pattern
9.3.2.3 State Table Pattern
9.3.2.4 State Walker Pattern
9.3.2.5 Control Loop Pattern
9.3.2.6 Reactive Control Loop Pattern
9.3.2.7 Fuzzy State Pattern
9.3.2.8 Neural Network Pattern
9.4 Summary
9.5 Looking Ahead
9.6 Exercises
9.7 References
Chapter 10: Detailed Design
10.1 Introduction to Detailed Design
10.2 Terms and Concepts
10.3 Data Structure
10.3.1 Primitive Representational Types
10.3.2 Subrange Constraints
10.3.3 Derived Attributes
10.3.4 Data Collection Structure
10.4 Associations
10.5 The Object Interface
10.6 Definition of Operations
10.7 Detailed Algorithmic Design
10.7.1 Representing Algorithms in the UML
10.7.2 Algorithmic Example: Run-Time Data Interpolation
10.7.2.1 The Math
10.7.2.2 Binding the Object Model with the Algorithm
10.8 Exceptions
10.8.1 Source Language-based Exception Handling
10.8.2 State-based Exception Handling
10.9 Summary
10.10 Looking Ahead
10.11 Exercises
10.12 References
Section 4: Advanced Real-Time Modeling
Chapter 11: Threads and Schedulability
11.1 Introduction
11.2 Terms and Concepts
11.2.1 Time-Based Systems
11.2.2 Reactive Systems
11.2.3 Time Concepts
11.2.3.1 Utility Functions
11.3 Scheduling Threads
11.3.1 Rate Monotonic Scheduling
11.3.2 Earliest Deadline Scheduling
11.3.3 Least Laxity Dynamic Scheduling
11.3.4 Maximum Urgency First Scheduling
11.3.5 Weighted Shortest Processing Time First (WSPTF) Scheduling
11.3.6 Minimizing Maximum Lateness Scheduling
11.4 Thread Synchronization and Resource Sharing
11.4.1 Mutual Exclusion Semaphore
11.4.2 Dekker's Algorithm
11.4.3 Spinlocks
11.4.4 Counting Semaphores
11.4.5 Condition Variables
11.4.6 Barriers
11.4.7 Rendezvous Objects
11.5 Schedulability Analysis of Hard Real-Time Systems
11.5.1 Global Analysis
11.5.2 Global Method with Blocking
11.5.3 Computing Blocking
11.5.4 Separate Task Utilization Bounds
11.5.5 Aperiodic Tasks
11.6 Schedulability Analysis of Soft Real-Time Systems
11.6.1 Warm and Fuzzy: Timeliness in the Soft Context
11.6.2 Soft Schedulability
11.7 Summary
11.8 Looking Ahead
11.9 Exercises
11.10 References
Chapter 12: Dynamic Modeling
12.1 Introduction
12.2 Terms and Concepts
12.2.1 But is it the Right State Machine?
12.3 Behavioral Patterns
12.3.1 Latch State Pattern
12.3.2 Polling State Pattern
12.3.3 Latched Data Pattern
12.3.4 Device Mode State Pattern
12.3.5 Transaction State Pattern
12.3.6 Component Synchronization State Pattern
12.3.7 Barrier State Pattern
12.3.8 Event Hierarchy State Pattern
12.3.9 Random State Pattern
12.3.10 Null State Pattern
12.3.11 Watchdog State Pattern
12.3.12 Retriggerable Counter State Pattern
12.4 Model-Level Debugging and Testing
12.4.1 Animated Debugging
12.4.2 Animated Testing
12.4.3 Sample Debugging Session
12.5 Summary
12.6 Looking Ahead
12.7 Exercises
12.8 References
Chapter 13: Real-Time Frameworks
13.1 Introduction
13.2 Terms and Concepts
13.3 Real-Time Frameworks
13.3.1 Architectural Support Patterns
13.3.1.1 Microkernel Architecture Pattern
13.3.1.2 6-Tier Microkernel Architecture pattern
13.3.2
13.3.2.1 Container-Iterator Pattern
13.3.2.2 Observer Pattern
13.3.2.3 Proxy Pattern
13.3.2.4 Broker Pattern
13.3.3 Safety and Reliability Patterns
13.3.3.1 Watchdog Pattern
13.3.3.2 Safety Executive Pattern
13.3.4 Behavioral Patterns
13.3.4.1 State Pattern
13.3.4.2 State Table Pattern
13.4 Framework Design Principles and Metrics
13.4.1 Set of Services
13.4.2 Generalization Hierarchy Structure
13.4.3 Replaceable Components
13.4.4 Portability<
13.4.5 Naming and Syntax Conventions
13.4.6 Performance
13.5 The Rhapsody Object Execution Framework (OXF)
13.5.1 Rhapsody Architecture
13.5.2 Execution Framework
13.5.3 Interobject Association Patterns
13.5.3.1 Using Associations
13.5.4 Using C++ Standard Template Library
13.5.5 Abstract Operating System
13.5.6 Animation Framework
13.6 Sample Application Using the Rhapsody OXF Framework
13.7 Summary
13.8 Exercises
13.9 References
Appendix A: UML Notation Summary
Appendix B: Introduction to Rhapsody
Appendix C: Introduction to Timewiz
Index
CD-ROM Warranty
What Our Readers Are Saying
Be the first to add a comment for a chance to win!
Product Details
- ISBN:
- 9780201498370
- Subtitle:
- Developing Real-Time Systems with UML, Objects, Frameworks, and Patterns with CDROM
- Author:
- Author:
- Publisher:
- Libri
- Location:
- Reading, Mass.
- Subject:
- Programming
- Subject:
- Programming - Object Oriented Programming
- Subject:
- UML (Computer science)
- Subject:
- Embedded computer systems
- Subject:
- UML
- Edition Number:
- 1st
- Edition Description:
- Hardcover
- Series:
- The Addison-Wesley object technology series
- Series Volume:
- no. 12
- Binding:
- Hardcover
- Language:
- English
- Illustrations:
- Y
- Pages:
- 800
- Dimensions:
- 9.66x7.62x1.76 in. 3.19 lbs.










