Real-Time Systems Development

The often discussed 'software crisis' has its roots most often in deficient requirements specification. The reasonable expectation of clients that their computer systems will provide a dependable service is too frequently disappointed. With embedded systems, in particular, developers should be aware of a range of techniques and tools that will assist with the design and realization of more reliable software. The concept of system integrity rather than reliability is useful when self-recovery, following component failure, is an achievable feature of modern computer systems. The reuse of well-tested software components is often recommended as a fast route to reliable systems, but porting software incurs its own problems. Run-time bugs are often traced back to failures of understanding during the determination of system requirements.
There always seems to be a crisis simmering away somewhere within the software industry. Productivity levels are not improving, project budgets overrun, delivered systems fail to work reliably and efficiently. The software maintenance mountain is not showing any signs of diminishing. Unsurprisingly, customers become disillusioned with their suppliers as these issues roll on and on. Only the fashionable panaceas change from month to month.
Quality assurance activity within the software industry is still relatively new and it largely involves implementing well-established project management techniques, adapted from traditional engineering practice. These include a tight control on timescales, regular review sessions, clear product requirements from the start, agreed test schedules, and well-managed team work. Projects often commence with an...