1. Real-Time Systems – Setting the Scene
40 years ago, software development was widely seen as consisting of only programming. And it was regarded more as an art than a science (and certainly not as an engineering discipline). Perhaps that's why this period is associated with so many gloomy tales of project failure. Well, the industry has matured. Along the way, we had new languages, real design methods, and, in 1968, the distinction between computer science and software engineering.
The microprocessor arrived circa 1970 and set a revolution in motion. However, experienced software developers played little part in this. For, until the late 1970s, most developers of microcomputer software were electronic, electrical, or control engineers. And they proceeded to make exactly the same mistakes as their predecessors. Now, why didn't they learn from the experience of earlier workers? There were three main reasons for this. In the first place, there was little contact between electronic engineers (and the like) and computer scientists. In the second place, many proposed software design methods weren't suitable for real-time applications. Thirdly, traditional computer scientists were quite dismissive of the difficulties met by microprocessor systems designers. Because programs were small, the tasks were trivial (or so it was concluded).
Over the years, the industry has changed considerably. The driving force for this has been the need to:
- Reduce costs
- Improve quality, reliability, and safety
- Reduce design, development, and commissioning timescales
- Design complex systems
- Build complex systems
Without this pressure for change, the tools, techniques, and concepts discussed in this book would probably still be academic playthings.
Early design methods can be likened to handcrafting, while the latest ones are more like automated manufacture. But, as in any industry, it's no good automating the wrong tools; we have to use the right tools in the right place at the right time. This chapter lays the groundwork for later work by giving a general picture of real-time systems. It does this with the following:
- Highlights the differences between general-purpose computer applications (for example, information technology, management information systems, and more) and real-time systems
- Looks at the types of real-time systems met in practice
- Describes the environmental and performance requirements of embedded real-time systems
- Describes the typical structures of modern microprocessors and microcomputers
- Shows, in general, how software design and development techniques are influenced by these factors
The detailed features of modern software methods are covered in later chapters.