{'fraction_non_alphanumeric': 0.017114914425427872, 'fraction_numerical': 0.001047851903597625, 'mean_word_length': 5.132762312633833, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
A Methodology for Impact Analysis Based on Model Differencing

A software system typically has to be changed frequently to adapt the system to new or changing requirements or due to bug fixes. One crucial problem is that every kind of change can introduce severe errors into the software system and that it is difficult to predict in what way which parts of a software system are potentially affected by a change. Impact analysis approaches cope with this problem by trying to identify the potential consequences of changes [1]. In model-based software development, models are usually transformed into concrete implementations [2]. Even though code generators can automatically generate essential parts of a software system, it is usually still required to create and maintain further handwritten artifacts such as source code. These artifacts have to be integrated into the generated parts of the software system and, thus, they sometimes heavily depend on the generated artifacts. For example, a code generator might generate the database schema based on a UML class diagram. If developers introduce a handwritten source code file which contains SQL queries that access this database, the source code file depends on the generated database schema and consequently also on the UML class diagram. Hence, model changes can have tremendous impact on the handwritten artifacts. In this extended abstract, we discuss a methodology for developing and applying a model-based impact analysis approach, in which explicit impact rules can be specified in a domain specific language (DSL). These impact rules embody what kind of model changes have what kind of impact. Based on such impact rule specifications, impact rule implementations are generated, which check the specified conditions and output the defined impact. The main advantage of defining explicit impact rules is that they allow formalizing knowledge about known dependencies and characteristics of a software system. As the impact rules describe the impact of model changes, it is possible to create a checklist that informs developers about the impacts of all model changes that have been detected in a model differencing step. The resulting checklist, thus, contains concrete hints about the development steps that are (potentially) necessary to adapt the system to the model changes. Due to this, the checklists can simplify the evolution process, as developers can work through the checklists. The motivation for creating such checklists is that developers might forget to perform certain development steps that are necessary after specific model changes. This particularly holds in a complex software system. In the next section, we elaborate on the methodology for developing and appyling the approach. Results of a case study dealing with the impacts of UML class diagram changes can be found in [3].