 |
Course synopsis
This 2-day course
is about a safer and more reliable way of using the language C. It
is based on extensive measurements of how C systems fail and the lessons
we can learn from these failures. It is particularly relevant to
the production of modern embedded systems for consumer electronics
and provides a comprehensive introduction to the development of modern
high-integrity, business-critical and safety-critical developments.
It is suitable for both inexperienced and experienced C programmers
and forms a sound, rigorous basis for such development.
The course is copiously illustrated with data from real systems containing
many surprises and important clues how to make software more reliable.
Workshops, self-assessments and intriguing problems are included.
A considerable amount of background reading can be freely downloaded from:-
www.leshatton.org
Day 1 and first half of Day 2
- Introduction
to software failure with many important examples and a summary of
lessons to learn.
- Standardisation
and validation in safety-related systems and the C language. The importance
of assessing compiler quality is emphasised and methods of doing this
are described.
- A safety-critique
of the C language: cataloguing poorly-defined behaviour. Various sources
of information about C failure are referenced and used to provide
a comprehensive understanding of how C systems fail in practice to
assist in future avoidance of failure.
- Safer subsets
including the MISRA standard are discussed in some detail.
- Key areas of
difficulty (with many examples and strategically placed workshops)
- The pre-processor
- Conversions
- Interfaces
- Pointers
- Expressions
and types
- Memory
- The library
Second half
of Day 2
- The wider picture:
Systems engineering concepts
In building reliable systems, the programming language is only part of the
puzzle. In this section, attention is focussed on development techniques
and systems engineering concepts such as control process feedback and its role
in improving reliability. In particular, a section on inspections, one of
the most successful methods for detecting defect ever discovered, occupies a
substantial part of the afternoon.
The following topics are covered:-
- Code inspections
This section describes the basics of inspections and includes an inspection
workshop to teach fundamental principles.
- Complexity: its
measurement and system implications
The influence of complexity on system properties
is discussed with reference to several well-known
metrics. The unusual nature of the defect curve is
explained and methods of exploiting it described.
- Software measurement
This section describes the basics of software measurement and how
such measurements can be used. Measurements from OO systems are presented
to contrast with those found in conventional systems.
Back
to top
|
|