Course M325
UML Analysis and Design and Object Oriented Programing in C for the PIC32
UML Analysis and Design and Object Oriented Programing in C for the PIC32
Duration: 5 Days
Intended Audience
The course is aimed at those who will be implementing embedded systems applications in C, but who need to know how about UML Analysis and Design techniques for embedded and real time systems application development and also how to realise their designs in C, as opposed to an object oriented programming language such as C++ or Java.
Attendees are expected to have some familiarity with UML2 notations as well as some experience of working on embedded systems and, also, to have some familiarity with or awareness of embedded and real time operating systems, multi tasking.
Course Overview
The purpose of this course is to cover UML2 including an introduction to some of the real time extensions that it supports, and how such designs might be realised using purely C code. Various techniques will be introduced, many based on simplified adaptation of the very powerful and effective object oriented approaches used in implementing the Linux Kernel. The architecture aspects of modeling real time and embedded systems will also be introduced. An architecture ,here, ( following the convention introduced by Bruce Powell Douglass ) is a set of strategic decisions that affect the behaviour or functionality of the system as a whole. The architecture aspects considered are
- subsystem/component
- resource and concurrency
- distribution
- system and reliability
- deployment
Key Skills
On completing the course delegates will
- be able to use UML2 in the design of practical embedded and real time applications
- understand how to apply UML to embedded and real time projects in such a way that
- the work of several analysts and designers forms an integrated and consistent whole
- the path from requirement gathering, via Use Case Analysis and then on to the final design and, finally, to development and testing is fully traceable
- be able to recognise common design patterns and idioms
- be able to use UML2 to explain, explore, and illustrate timing and inter-process communication issues
- be able to design and implement frameworks, data structures and algorithms for realising their designs in C
Course Contents
Real Time and Embedded Systems Concepts
- Characteristics of embedded systems
- Distinction between hard and soft real time
- Multi-tasking with and without an operating system
- pre-emptive vs. non-premptive multitasking
- systems engineering vs. software engineering
- reactive, event driven systems
Object Orientation
- Objects, classes, interfaces, messaging
- Relations
- associations
- aggregation
- composition
- generalisation
- mapping objects to code
- an object oriented design does not have to be implemented in an object oriented programming language
- an overview of strategies and idioms for realising object oriented design in C
- Strategies for dealing with large systems and frameworks
- creating complex structures from simpler ones
- ports and connectors
- interfaces, components and sub-systems
Object Orientation approach to describing and dynamic aspects of embedded and real time systems
- behaviour types - simple, state, continuous
- actions and activities
- the importance of statecharts in modeling real time and embedded systems object behaviour
- and-states
- pseudostates
- protocol state machines
- activity diagrams
- sequence diagrams
- timing diagrams
- introduction to UML profiles for schedulability, performance and time
Requirements analysis for real time and embedded systems
- use cases and scenarios
- textual description
- actors
- relationships between use cases
- identification of use cases
- detailing use cases using statecharts, activity diagrams and timing diagrams
Defining system and software requirements
- system use case and interaction model
- system scope model
- system dynamic model
- software use case model
Moving from Use Case Analysis to an Initial Design Model
- Carrying out a robustness analysis
- Boundary class identification
- Entity class identification
- Control class identification
Developing an Initial Design Model
- more detailed object domain analysis
- more detailed definition of object behaviour
- architectural design issues
- mechanistic design issues and patterns
- Observer pattern
- Proxy pattern
- Reliable transaction pattern
- Smart pointer pattern
- Guarded call pattern
- Container pattern
- Rendezvous pattern
- distributed and multi-processoor systems
- mapping software onto hardware
- from UML2 to C code
