The increasing complexity of software systems makes their development complicated and error prone. A widely used and generally accepted technique in software engineering is the combination of different models (or views) for the description of software systems. The primary benefit of this approach is to model only related aspects (Iike structure or behavior). Using different models cIarifies different important aspects of the system, but it has to be taken into consideration that these models are not independent and they are semantically overlapping.
The models constitute the fundamental base of information upon which the problem domain experts, the analysts and the software developers interact. Thus, it is of a fundamental importance that it clearly and accurately expresses the essence of the problem. On the other hand, the model construction activity is a critical part in the development process.
Since models are the result of a complex and creative activity, they tend to contain errors, omissions and inconsistencies. Model verification is very important, since errors in this stage have an expensive impact on the following stages of the software development process.