Home
Consultant Summary
Associate Companies
Courses
Publications
Books
Contact

 


Course - Software Engineering for Real-Time Systems

Overview:
A 5 day course introducing, at a basic level, all fundamental skills required to develop real-time embedded software in a commercial environment.

Course Objectives:

  • To provide basic level information on all topics of software development e.g. programming, design, testing, documentation etc.
  • To teach all these aspects in the context of real-time embedded software development.
  • To give you the grounding required to start working in the development of real-time embedded software

Delegates will learn:

  • The characteristics of real-time systems
  • Steps in developing software
  • Programming issues - which languages?
  • Why design and diagramming is so important
  • Design basics - object oriented vs structured techniques
  • Development tools
  • Real-Time Operating Systems and what they do for us
  • Documentation, coding and testing
  • Safety and mission critical systems
  • Performance engineering basics

Pre-requisites:
A basic level of programming experience.

Who Should Attend:
This course is particularly suited to the following candidates who require a principle foundation in the fundamentals of embedded software development.

  • electronic engineers now moving into the field of software development
  • graduates without experience of developing real-time embedded systems
  • engineers transferring to real-time embedded software development from other disciplines

Duration:
Five days.

Course Materials:

  • Textbook "Software Engineering for Real-Time Systems", J.E. Cooling, Addison Wesley
  • Delegate Handbook

Course Outline:

What is a real-time system?
- Characteristics of real-time systems
- Problems of real-time embedded development

Writing dependable software
- Why embedded software must be robust
- How errors are introduced

A process for software development
- Different software lifecycles
- Waterfall
- V model
- Iterative and incremental
- The importance of requirements capture
- Fitting a process into your organisation

Design basics
- Design fundamentals
- The building blocks of design
- Structured vs. OO techniques
- The importance of design reviews
- Design patterns - what and why?

Operating Systems for Real-Time Applications
- Basic features of real-time operating systems.
- Scheduling - concepts and implementation issues.
- Control of shared resources - mutual exclusion, semaphores and monitors.
- Task communication and synchronisation features.
- Memory management in embedded systems.
- Outline structures and features of modern operating systems.
- An introduction to Posix.

Design Notations
- Structured notation
- UML - the standard OO notation
- Extensions to notations for real-time - What and why
- Fitting diagrams into your design process

Programming Languages
- What languages are suitable for embedded development?
- A comparison of their strengths and weaknesses
- Is Java suitable for embedded development?
- Code development and packaging
- Moving from design into code
- The importance of coding standards

Testing
- Unit test
- Module test
- Systems test
- Acceptance testing
- Static and Dynamic analysis of code
- Dynamic analysis of code
- Code walkthroughs
- White box and Black box testing
- Code and design metrics

Development Tools
- Compilers & Debuggers
- Debugging on the host
- Debugging on the target
- Emulators & Probes
- Case tools
- Requirements tools
- Configuration management tools

Mission Critical and Safety Critical Systems
- System specification aspects.
- Application software aspects
- Real-world interfacing
- Operating systems aspects
- Numerical issues
- Processor problems
- Hardware-based fault-tolerance
- System specification aspects

Documentation
- Why?
- What documents come from the design process
- User documentation
- Source code aspects
- Quality control
- A process for managing change
- Configuration management
- Library management

Software Re-use
- Can it be achieved?
- How can it be managed?
- Designing for re-use
- Testing re-used code

Continuous improvement
- Measuring the development process
- Quality standards
- ISO9001
- Tick IT
- The Capability Maturity Model CMM

Return to Courses


Consultant Summary | Associate Companies | Courses | Publications | Books | Contact | Home