It is well-known that the inherent complex nature of software systems adds to the challenges of software development. The most notable techniques for addressing the complexity of software development are based on the principles of abstraction, problem decomposition, separation of concerns and automation. As an emerging paradigm for developing complex software, Model-Driven Engineering (MDE) realizes these principles by raising the specification of software to models at a high-level of abstraction. Model transformation is a core activity of MDE, which converts one or more source models to one or more target models in order to change model structures or translate models to other software artifacts. As models are elevated to first-class artifacts within the software development lifecycle, there is an increasing need for frequent model evolution to explore design alternatives and to address system adaptation issues. However, the task of evolving large-scale system models is a manually intensive effort that can be very time consuming and error prone, especially if a system model grows in size. To address these problems, the research described in this dissertation has investigated a model transformation approach to automated model evolution and a model transformation testing approach to improve the correctness of model transformation.
A pre-existing model transformation language has been augmented to specify tasks of model evolution. A model transformation engine, called the Constraint-Specification Aspect Weaver (C-SAW), has been developed to perform model evolution tasks in an automated manner. Particularly, the model transformation approach described in this dissertation has been applied to the important issue of model scalability for exploring design alternatives and crosscutting modeling concerns for system adaptation. An execution-based testing approach has been investigated to provide an engineering solution to assist in determining the correctness of model transformations. As tool support, a model transformation testing engine called M2MUnit has been implemented to facilitate the execution of model transformation tests. To enable the testing engine to compare the actual and expected transformed models, model differentiation algorithms have been designed and implemented in a tool called DSMDiff, which computes the differences between domain-specific models and visualizes the detected model differences.
As part of experimental evaluation, the C-SAW transformation engine has been applied to support automated evolution of models on several different experimental platforms that represent various domains such as computational physics, middleware, and mission computing avionics. The research described in this dissertation contributes to the long-term goal of alleviating the increasing complexity of modeling large-scale, complex applications by assisting developers in changing domain-specific models correctly and rapidly.