Reliable yet flexible software through formal model transformation (rule definition)
The results of literature review show that the need for both reliability and flexibility is increasingly becoming important among the various classes of software applications. Developing reliable yet flexible software is a hard problem. Although modeling methods enjoy a lot of advantages, the use of just one of them, in many cases, may not guarantee the development of reliable and flexible software. Formal modeling methods ensure reliability. However, lack of knowledge and high cost practically force developers to use semi-formal methods instead. Semi-formal (visual) modeling methods, which are widely used in practical large-scale software development, are not good enough for reliable software development. This paper proposes a new practical approach to the development of reliable yet flexible software. In the proposed approach, formal (Object-Z) and semi-formal (UML) models are transformed into each other using a set of bidirectional formal rules. Formal modeling and refinement ensure the reliability of software. Visual models facilitate the interactions among stakeholders who are not familiar enough with the complex mathematical concepts of formal methods. Visual models help detect the unexpected behavior and inconsistencies of software. Applying design patterns to visual models improves the flexibility of software. The transformation of formal and visual models into each other through the iterative and evolutionary process, proposed in this paper, helps develop the software applications that need to be highly reliable yet flexible. The feasibility of the proposed approach is evaluated using the multi-lift case study.
reliability flexibility model transformation object-z uml design patterns