Achieving Quality Software: Including Its Application to Safety-Related Systems
The rapid growth in use of programmable technology, in nearly all sectors of Engineering, is a well-known established trend and one which there is every reason to believe will continue into the foreseeable future. The drivers of this trend include cost, flexibility, rich functionality and certain reliability and safety advantages. However, as explained in this book, these advantages have to be carefully weighed against a number of dis- advantages which, amongst other things, have fundamental implications for reliability and safety. Ideally, a programmable system would be viewed as a fusion of hardware, software and user (or 'skinware'), operating under a set of environmental conditions. To date, such a unifying model does not exist and so hardware, software and human factors are still considered largely as three separate disciplines, albeit with certain interdependencies. Established techniques are available which enable the engineer to develop systems comprising purely hardware components to a prescribed reliability and performance. Software, however, is fundamentally different in a number of ways, and does not lend itself to equivalent analysis. A major problem with software is its poor 'visibility', and consequently the great difficulty in understanding and predicting its behaviour in all cir- cumstances. This results in the ever-present software design flaws, or 'bugs', which have plagued the software industry from its beginnings.