Co-Existence of Modeling Language Versions and their Bounded Co-Evolution (COEE)
Preserving the history of diverse engineering artifacts (e.g., design models, requirements, code) is vital for software engineering. Version control systems, however, focus on textual changes without understanding the syntax/semantics of their underlying languages (metamodels) let alone nuances of language evolutions (e.g., UML 2.1 to UML 2.2). Other platforms manage changes better but typically do not support arbitrary artifacts, languages, and versions. Yet, without understanding this history we do not truly understand how engineering language evolution affects engineering artifacts, their consistency, and traceability. Projects tend to use multiple languages concurrently but their evolutions rarely coincide (e.g., UML, JAVA, or EARS languages change at different times). Hence, artifacts of different versions of a given language may co-exist (e.g., client code in Java 1.8 and server code in Java 20) with artifacts of different versions of other languages (e.g., a UML 2.1 model and EARS 2009 requirements). The first main objective of this research is to develop a mechanism for language versions and their artifacts to co-exist even within the same project. With co-existing artifacts, however, we need to handle quadratically growing n-ary relationships among all versions of all languages (e.g., UML 2.1 to Java 1.8 consistency is not exactly UML 1.4 to Java 20 consistency). The second main objective is to support n-ary consistency and traceability among arbitrary language versions and their artifacts. This project addresses the co-existence and co-evolution of languages and their artifacts by first establishing a clear foundation for understanding changes at the language and artifact levels. It then develops a generic mechanism for recording and maintaining a change history enabling the automated co-existence of language versions and their respective artifacts. Finally, it develops n-ary methods for the co-evolution of artifacts and their relationships with arbitrary language versions. State-of-the-art does address the co-evolution of metamodels (languages) and models (artifacts). However, it does not address what happens if some artifacts evolve but not others. Similarly, state-of-the-art does address the co-evolution of some relationships such as consistency. However, it does not address quadratically growing n-ary relationships among all versions of all languages. Our objectives are thus both novel and vital for model-driven engineering today.