Methodology and Environment for evaluating migration success
When migrating a legacy application into the cloud, an important and challenging task is to evaluate whether the goals of the migration are fulﬁlled. In this regard, we can distinguish between two types of goals in a software migration scenario: functional and non-functional goals. Whereas the former concerns the preservation of the business functionality in the context of software migration, that is, the software behaves after the migration just as it did before the migration, the latter assesses whether the initial motivation of the migration, such as performance efﬁciency and reliability of the migrated software, is satisﬁed.
In this document, we discuss the underlying methodologies and techniques to evaluate both types of goals, while enabling the provision of an early verdict regarding the fulfillment of the goals already during the migration (when the actual software has not been migrated yet). Therefore, we present different techniques to analyze functional and nonfunctional properties not only at code-level after the migration but also already during the migration at model-level considering models representing the migrated software. For validating the functional migration goal, we use behavior models that are extracted from the legacy software and apply model-based testing techniques to derive dedicated test cases for evaluating whether the migrated software still behaves equivalently to the legacy software with respect to the relevant parts of the business logics. Additionally, we discuss an orthogonal approach that is based on running the legacy software and the migrated software in parallel and check whether the incoming user requests are processed correspondingly.
Non-functional goals of the migration have to be defined by the user in terms of quality characteristics of the software that are expected to be improved after the migration. For expressing and representing such goals, we discuss different goal modeling languages. In this regard, a non-functional goal consists of a quality characteristic, a target value (i.e., the value that should be achieved after the migration) and, for execution-dependent goals, a workload. Based on these goal descriptions, we simulate the execution of the migrated software on model-level and evaluate specific property measures that are related to the respective quality characteristics. These measures are then combined and analyzed to validate whether the defined goals are fulfilled. This model-level validation can be performed already during the migration, when the actual migrated code has not been derived yet. However, after validating that all goals are fulfilled on model-level, we also perform the same evaluations of the non-functional migration goals on code-level by running and benchmarking the actual migrated software to verify whether the final migrated software indeed fulfills all goals of the migration.