ABSTRACT

Perhaps the most fundamental and persistent difficulty in engineering is misunderstanding between producers and consumers of technology. The computing industry is rife with tales of failed software projects. Bloated projects with obscene cost and schedule overruns mingle with stories of dramatic functional failures due to subtle bugs, incompatibilities, or incompetence. These problems stand in stark contrast to the requirements of embedded system designs, many of which operate in environments that demand total confidence in their proper and timely function. A large number of methodologies claim to address the deficiencies of software design in general [6,26,30,31]. Many have been successful in controlling some of the complexities of development, though notably far fewer have been tailored to address the specific problems of embedded systems design [8,28].