ABSTRACT

Models have been used for a long time to build complex systems, in virtually every engineering field. This is because they provide invaluable help

in making important design decisions before the system is implemented. Recently, the term “model-based design” has been introduced to emphasize the use of models and place them in the center of the development process, especially for software-intensive systems. Traditionally, the fact that software is immaterial (contrary, say, to bridges or cars or hardware), has resulted in a software development process that largely blurs the line between design and implementation: a model of the software is the software itself, which is also the implementation. It is “cheap” to write software and test it, or so people used to believe. It is now becoming more and more clear that the costs for software development, testing and maintenance are nonnegligible, in fact, they often outweigh the costs of the rest of the system.