Modern embedded software design is constrained by an ever-growing set of constraints:
- Increasing software complexity
- Decreasing time-to-market
- The need to produce flexible, maintainable systems
- The need to have rigorous engineering in critical systems.
These factors are driving the need for cohesive design methodologies and the use of modelling.
This is a detailed software design course which focuses on designing Real-Time Embedded Systems, using UML 2 notation to document the proposed design.
The focus on design principles and methodologies make this course significantly different to most UML courses, which focus on notation.
- To provide an understanding of Object Oriented design principles.
- To show how to develop real-time software in a rigorous and systematic manner.
- To enable attendees to develop their own practical design skills.
- To teach effective application of UML notation.
Delegates will learn:
- The fundamental concepts and terminology of real-time software.
- The diagrammatic and modelling underpinnings provided by UML for Object Oriented development.
- How to apply the design principles in real-time applications.
- The basics of an integrated, traceable and consistent approach in the development of software for real-time systems.
- Some understanding of technical software development methods.
- Knowledge of typical embedded programming languages (like C) is useful.
Who should attend:
- Designers new to the area of real-time software design.
- Developers with some non-embedded UML experience.
- Designers embarking on projects using UML-based techniques for the first time
- Five days
- Delegate handbook
- All worked examples and solutions
Approximately 50% of the course involves practical application of the techniques discussed. Delegates work in small groups dealing with problems based on real-world systems.
The course specifically does not make use of a CASE tool. From our experience, a CASE tool distracts delegates from learning design issues and UML. However, the workshops clearly demonstrate the benefits and disadvantages of CASE tools, thus aiding CASE tool selection.
- An overview of real-time systems
- Why do we model?
- ‘Correct’ vs ‘good’ software
- Principles of modularisation
Object Oriented design
- Object-Oriented terminology
- Object-based design
The software development process
- Diagrams and models
- Evolutionary vs Adaptive models
The Ideal Object model
Object modelling fundamentals
- Finding objects
- Scenario-based design
- The CRC methodology
- Communication diagrams
- Sequence diagram basics
The Specification model
- State machine basics
- Activity diagram basics
- Mapping internal and external behaviour
- Active and passive objects
- Selecting active or passive elements
- Class notation
- Composite structure notation
- Concurrency and composites
- Dependency Inversion Principle
The Implementation model
Model transformation rules
- Implementing UML constructs in an embedded programming language
The Requirements model
System Scope and context
- Defining system scope
- Stakeholder analysis
- Use case fundamentals
Modelling system behaviour
- Use case interactions
- System modes