Crs 215
Object Oriented Analysis and Design of Real Time Systems

The course explores the use of UML in the design and analysis of real time applications. A large part of the course is devoted to coverage of the use of statecharts and SDL in the design of reactive systems and communications oriented systems

The emphasis is on problem solving. As such, difficult topics such as allocating of groups of co-operating objects to tasks and the handling of inter-task communication issues are included.

Since object oriented approaches are often targeted at large and complex systems the issue of designing frameworks, and of capturing operating system services and resources via the use of objects are also discussed.

The relationship of UML to other object oriented analysis and design techniques such as ROOM and HOOD is reviewed, as well as the relationship of UML to classical structured analysis and design techniques

Course Outline

Difficulties with Developing Real Time and Embedded Applications

  • Getting the Requirements
  • System Complexity
  • Many different ways to tackle the problem
  • Constraints involved in developing products in a market driven environment

Introduction to Object, Object Oriented thinking and UML

  • Advantages of the object oriented approach
  • Objects as entities having attributes, behaviour, messaging capabilities, responsibility, and concurrency
  • Objects viewed as autonomous machines
  • Class diagrams
  • Use casses
  • Sequence diagrams
  • Adding to and organising UML diagrams with notes, packages, constraints and stereotypes

Real Time Issues

  • Timeliness
  • Responsiveness
  • Concurrency
  • Predictability
  • Correctness and robustness
  • Fault tolerance
  • Resource limitations of target environment
  • Safety critical systems

Life Cycle Issues

  • Requirements analysis and design
  • Life cycle models -- waterfall, spiral, iterative
  • Integration, verification and validation
  • Rapid Application Development (RAD)
  • Maintenance
  • Reusability

Use case analysis

  • Textual descriptions and scenarios
  • Use case diagrams
  • Sequence diagrams
  • Statecharts
  • Patterns

Object Identification Strategies

  • Nouns
  • Causal agents
  • Real world items
  • Physical devices
  • Visual elements
  • Control elements
  • Collections

Structural Object Analysis

  • Object associations
  • Generalisation relationships
  • Aggregation and composition
  • Object attributes

Behavioural Object Analysis

  • Simple, State, and Continuous behaviour
  • UML Statecharts
  • Timing diagrams
  • Sequence diagrams

Architectural Design

  • Tasking model
  • Component model
  • Deployment model

Mechanistic and Detailed design

  • Mechanistic design patterns
  • Data structures and associations
  • Algorithmic design
  • Exceptions

    Human-computer interface modelling

  • Requirements analysis
  • Involving users
  • Rapid prototyping
  • Functional decomposition
  • Event partitioning
  • Menu structuring
  • Design and selection of GUI controls
  • Using Statecharts for GUI design and validation

Advanced Topics

  • Tasks and threads
  • Scheduling and synchronising threads
  • Resource sharing
  • Dynamic modeling and Behavioural Patterns
  • Debugging and testing at the object model level
  • SDL and formal methods
  • Real time frameworks
  • Intended Audience

    The course is intended for analysts and programmers developing or maintaining code in working environments geared towards using object oriented analysis and design approaches based around UML

    Attendees are expected to have well developed analytical skills, and some appreciation of the problems facing real time and embedded systems development. No detailed knowledge of object oriented programming or of UML is required.

    Key Skills

    • Become familiar with UML diagrams and notation
    • Be able to map real world problems and requirements into an object oriented analysis and design framework
    • Be able to use the UML notation constructively and creatively
    • Appreciate how to synthesise a solution based on information describing the problem from a number of perspectives
    • Know how to apply statechart techniques to the design of reactive system and to the design of user interfaces
    • Understand the graphical and textual notations underlying SDL, and the formal aspects of using SDL in the specification of real time and communicating systems

    Practical Work

    The ideas presented are reinforced by syndicate sessions in which groups of students tackle various analysis and design problems associated with the case studies that underlie the course.

    Each group is required to present and defend their analysis and design work. Syndicate sessions and presentations take up fifty percent of the time allocated to the course.

    • Developing Class, Sequence and Use Case diagrams to describe scenarios
    • Devise statecharts to represent user interface functionality
    • Devise statecharts to represent state driven communications protocols
    • Devise statecharts to represent a process control system
    • Use SDL to specify communications protocols (using TCP/IP as the case study)
    • Devise and analyse tasking models corresponding to a given set of requirements and an object oriented design corresponding to those requirements
    • Evaluate the applicability of different thread scheduling and thread synchronisation strategies to a number of common scenarios
    • Be aware of common behavioural patterns - such as the Polling State Pattern, the Watchdog pattern, the Retriggerable Counter State Pattern, the Component Synchronisation State Pattern and the Transaction State Pattern.