Course description:
The Unified Modelling Language (UML) is actually just a design notation. To develop software using UML you must adhere to a process which describes how to use this notation. This course describes a process for designing real-time embedded systems (RTES) using UML 2.0 as the notation.
It is assumed delegates are already familiar with the UML notation and goes on to teach its effective application. By using comprehensive real-world examples the course also identifies the areas where UML 2.0 improves on UML 1.5, but also still identifies its weaknesses (areas such as concurrency, multi-processing and distributed systems). The course is backed up by a comprehensive ‘real-world’ CASE study demonstrating how to apply UML 2.0 to RTES.
Course Objectives:
To show how to develop real-time software in a rigorous and systematic manner using UML 2.0 modelling techniques.
To enable attendees to develop their own practical design skills.
Delegates will learn:
How to develop practical designs for real-time applications using UML 2.0 modelling techniques.
How to apply these ideas in the framework of an integrated, traceable and consistent software design process.
What diagrammatic and modelling underpinnings are provided by UML 2.0 for developing RTES.
Pre-requisites:
A notational knowledge of UML.
Knowledge of the basics of OO design principles and methods.
Some understanding of technical software development methods and some knowledge of a high-level programming language.
Who Should Attend:
Ideal for engineers who have attended vendor tool training but now need to learn practical application of UML
Designers looking to improve the way they apply UML
Designers new to the area of real-time software design.
Developers with notational UML knowledge who are embarking on projects using UML-based techniques for the first time.
Duration:
Three days.
Course Materials:
Delegate handbook
All worked examples and solutions
Course Workshop:
Approximately 50% of the course involves practical application of the techniques. Delegates work in small groups dealing with problems based on real-world systems.
Course Outline:
Analysing and formalising system requirements
- Scenarios and use cases
- System scope and direct and indirect actors.
- Modelling actor-system interactions graphically
Defining system and software requirements
- The system use case model
- The system interaction model
- The system scope model
- The system dynamic model
- The software use case model
Developing larger systems
- Developing the subsystem model
- Packages and components
- Interfacing to the real-world; device-software interactions
Developing the ideal object model
- Object relationships, communication and control in an ideal environment
Developing the specification model
- Mismatches between the ideal and the implementation models
- Composite structures, ports and provided/required interfaces
Concurrent systems and task-based design
- Problems with abstract software design
- Fundamentals of multitasking design
Implementation modelling - the tasking model
- Mapping the specification model to the implementation one
- Issues of inter-task communication
Implementation modelling - the practical sequential model
- Controlling the collective behaviour of objects in sequential code: the coordinator object
- Specifying algorithmic (processing) operations using activity diagrams
Code-related issues
- Logical and physical models
- Software - constructs and artefacts
- Structuring and packaging of software
- Implementation modelling.
Distributed and multi-computer systems
- Multi-computer architectures for real-time systems
- Criteria for mapping software onto hardware
- A practical design technique
Case study
- The case study, which is an integral part of the course, is based on developing software for an embedded application.