Abstract:
Kontext: In dieser Arbeit haben wir die Evolvierbarkeit, Verständlichkeit und Wiederverwendbarkeit von modellbasierten Analysen untersucht.
Darum untersuchten wir die Wechselbeziehungen zwischen Modellen und Analysen, insbesondere die Struktur und Abhängigkeiten von Artefakten und die Dekomposition und Komposition von modellbasierten Analysen.
Herausforderungen: Softwareentwickler verwenden Modelle von Softwaresystemen, um die Evolvierbarkeit und Wiederverwendbarkeit eines Architekturentwurfs zu bestimmen. Diese Modelle ermöglichen die Softwarearchitektur zu analysieren, bevor die erste Zeile Code geschreiben wird. ... mehrAufgrund evolutionärer Veränderungen sind modellbasierte Analysen jedoch auch anfällig für eine Verschlechterung der Evolvierbarkeit, Verständlichkeit und Wiederverwendbarkeit. Diese Probleme lassen sich auf die Ko-Evolution von Modellierungssprache und Analyse zurückführen. Der Zweck einer Analyse ist die systematische Untersuchung bestimmter Eigenschaften eines zu untersuchenden Systems. Nehmen wir zum Beispiel an, dass Softwareentwickler neue Eigenschaften eines Softwaresystems analysieren wollen. In diesem Fall müssen sie Merkmale der Modellierungssprache und die entsprechenden modellbasierten Analysen anpassen, bevor sie neue Eigenschaften analysieren können. Merkmale in einer modellbasierten Analyse sind z.\,B. eine Analysetechnik, die eine solche Qualitätseigenschaft analysiert. Solche Änderungen führen zu einer erhöhten Komplexität der modellbasierten Analysen und damit zu schwer zu pflegenden modellbasierten Analysen. Diese steigende Komplexität verringert die Verständlichkeit der modellbasierten Analysen. Infolgedessen verlängern sich die Entwicklungszyklen, und die Softwareentwickler benötigen mehr Zeit, um das Softwaresystem an veränderte Anforderungen anzupassen.
Stand der Technik: Derzeitige Ansätze ermöglichen die Kopplung von Analysen auf einem System oder über verteilte Systeme hinweg. Diese Ansätze bieten die technische Struktur für die Kopplung von Simulationen, nicht aber eine Struktur wie Komponenten (de)komponiert werden können. Eine weitere Herausforderung beim Komponieren von Analysen ist der Verhaltensaspekt, der sich darin äußert, wie sich die Analysekomponenten gegenseitig beeinflussen. Durch die Synchronisierung jeder beteiligten Simulation erhöht die Modularisierung von Simulationen den Kommunikationsbedarf. Derzeitige Ansätze erlauben es, den Kommunikationsaufwand zu reduzieren; allerdings werden bei diesen Ansätzen die Dekomposition und Komposition dem Benutzer überlassen.
Beiträge: Ziel dieser Arbeit ist es, die Evolvierbarkeit, Verständlichkeit und Wiederverwendbarkeit von modellbasierten Analysen zu verbessern. Zu diesem Zweck wird die Referenzarchitektur für domänenspezifische Modellierungssprachen als Grundlage genommen und die Übertragbarkeit der Struktur der Referenzarchitektur auf modellbasierte Analysen untersucht. Die geschichtete Referenzarchitektur bildet die Abhängigkeiten der Analysefunktionen und Analysekomponenten ab, indem sie diese bestimmten Schichten zuordnet. Wir haben drei Prozesse für die Anwendung der Referenzarchitektur entwickelt: (i) Refactoring einer bestehenden modellbasierten Analyse, (ii) Entwurf einer neuen modellbasierten Analyse und (iii) Erweiterung einer bestehenden modellbasierten Analyse. Zusätzlich zur Referenzarchitektur für modellbasierte Analysen haben wir wiederkehrende Strukturen identifiziert, die zu Problemen bei der Evolvierbarkeit, Verständlichkeit und Wiederverwendbarkeit führen; in der Literatur werden diese wiederkehrenden Strukturen auch als Bad Smells bezeichnet. Wir haben etablierte modellbasierte Analysen untersucht und dreizehn Bad Smells identifiziert und spezifiziert. Neben der Spezifizierung der Bad Smells bieten wir einen Prozess zur automatischen Identifizierung dieser Bad Smells und Strategien für deren Refactoring, damit Entwickler diese Bad Smells vermeiden oder beheben können. In dieser Arbeit haben wir auch eine Modellierungssprache zur Spezifikation der Struktur und des Verhaltens von Simulationskomponenten entwickelt. Simulationen sind Analysen, um ein System zu untersuchen, wenn das Experimentieren mit dem bestehenden System zu zeitaufwändig, zu teuer, zu gefährlich oder einfach unmöglich ist, weil das System (noch) nicht existiert. Entwickler können die Spezifikation nutzen, um Simulationskomponenten zu vergleichen und so identische Komponenten zu identifizieren.
Validierung: Die Referenzarchitektur für modellbasierte Analysen, haben wir evaluiert, indem wir vier modellbasierte Analysen in die Referenzarchitektur überführt haben. Wir haben eine szenariobasierte Evaluierung gewählt, die historische Änderungsszenarien aus den Repositories der modellbasierten Analysen ableitet. In der Auswertung können wir zeigen, dass sich die Evolvierbarkeit und Verständlichkeit durch die Bestimmung der Komplexität, der Kopplung und der Kohäsion verbessert. Die von uns verwendeten Metriken stammen aus der Informationstheorie, wurden aber bereits zur Bewertung der Referenzarchitektur für DSMLs verwendet. Die Bad Smells, die durch die Co-Abhängigkeit von modellbasierten Analysen und ihren entsprechenden DSMLs entstehen, haben wir evaluiert, indem wir vier modellbasierte Analysen nach dem Auftreten unserer schlechten Gerüche durchsucht und dann die gefundenen Bad Smells behoben haben. Wir haben auch eine szenariobasierte Auswertung gewählt, die historische Änderungsszenarien aus den Repositories der modellbasierten Analysen ableitet. Wir können zeigen, dass die Bad Smells die Evolvierbarkeit und Verständlichkeit negativ beeinflussen, indem wir die Komplexität, Kopplung und Kohäsion vor und nach der Refaktorisierung bestimmen. Den Ansatz zum Spezifizieren und Finden von Komponenten modellbasierter Analysen haben wir evaluiert, indem wir Komponenten von zwei modellbasierten Analysen spezifizieren und unseren Suchalgorithmus verwenden, um ähnliche Analysekomponenten zu finden. Die Ergebnisse der Evaluierung zeigen, dass wir in der Lage sind, ähnliche Analysekomponenten zu finden und dass unser Ansatz die Suche nach Analysekomponenten mit ähnlicher Struktur und ähnlichem Verhalten und damit die Wiederverwendung solcher Komponenten ermöglicht.
Nutzen: Die Beiträge unserer Arbeit unterstützen Architekten und Entwickler bei ihrer täglichen Arbeit, um wartbare und wiederverwendbare modellbasierte Analysen zu entwickeln. Zu diesem Zweck stellen wir eine Referenzarchitektur bereit, die die modellbasierte Analyse und die domänenspezifische Modellierungssprache aufeinander abstimmt und so die Koevolution erleichtert. Zusätzlich zur Referenzarchitektur bieten wir auch Refaktorisierungsoperationen an, die es Architekten und Entwicklern ermöglichen, eine bestehende modellbasierte Analyse an die Referenzarchitektur anzupassen. Zusätzlich zu diesem technischen Aspekt haben wir drei Prozesse identifiziert, die es Architekten und Entwicklern ermöglichen, eine neue modellbasierte Analyse zu entwickeln, eine bestehende modellbasierte Analyse zu modularisieren und eine bestehende modellbasierte Analyse zu erweitern. Dies geschieht natürlich so, dass die Ergebnisse mit der Referenzarchitektur konform sind.
Darüber hinaus ermöglicht unsere Spezifikation den Entwicklern, bestehende Simulationskomponenten zu vergleichen und sie bei Bedarf wiederzuverwenden. Dies erspart den Entwicklern die Neuimplementierung von Komponenten.
Abstract (englisch):
Context: In this thesis, we investigated the evolvability, understandability, and reusability of model-based analyses. For this purpose, we studied the co-dependency between models and analyses, particularly the structure and interdependence of artefacts and the feature-based decomposition and composition of model-based analyses.
Challenges: Software developers use models of software systems to determine the evolvability and reusability of an architectural design. These models enable them to analyse the software architecture before writing the first line of code. However, due to evolutionary changes, model-based analyses are also prone to the deterioration of evolvability, understandability, and reusability. ... mehrThese problems can be traced back to the co-evolution of the modelling language and the analysis. The purpose of an analysis is a systematic examination or study of specific properties of a system under study. For example, suppose software developers want to analyse new properties of a software system. In that case, they must adapt features of the modelling language and the corresponding model-based analyses before they can analyse new properties. Features in the context of the modelling language are, for example, quality properties such as performance or reliability. Features in a model-based analysis are, for example, an analysis technique that analyses such a quality property. Such changes lead to the increased complexity of the model-based analyses and, as a result, to difficult-to-maintain model-based analyses. This increasing complexity reduces the understandability of the model-based analyses. As a result, development cycles lengthen, and software developers need more time to adapt the software system to changing requirements.
State-of-the-Art: Current approaches allow the coupling of analyses on one system or across distributed systems. These approaches provide the technical structure for coupling simulations rather than a structure and process for how components can be (de)composed. Another challenge in composing analyses is the behavioural aspect, in which the analysis component influences what. By synchronising each participating simulation, the decomposition of simulations increases the need for communication. State-of-the-art approaches reduce communication overhead; however, decomposition and composition are left to the user. There are also several approaches to modelling variability that use feature diagrams to be able to use product line techniques. However, these approaches must provide a process for identifying and structuring analysis features.
Contributions: This thesis aims to improve model-based analysis's evolvability, understandability, and reusability. For this purpose, we take the reference architecture for domain-specific modelling languages as a basis and investigate the transferability of the structure of the reference architecture to model-based analyses. The layered reference architecture maps the dependencies of the analysis features and components by assigning them to specific layers. We developed three processes for applying the reference architecture: (i) refactoring an existing model-based analysis, (ii) designing a new model-based analysis, and (iii) extending an existing model-based analysis. In addition to the reference architecture for model-based analyses, we have identified recurring structures that lead to problems in evolvability, understandability and reusability; in the literature, these recurring structures are also called bad smells. In particular, we have investigated the co-dependency of Domain-specific Modelling Languages (DSMLs) and model-based analyses that lead to these recurring problems. So far, bad smells for DSMLs and source code have been considered separately, although they are co-dependent. We examined established model-based analyses and identified and specified thirteen bad smells. In addition to specifying the bad smells, we provide a process for automatically identifying them and strategies for refactoring them so that developers can avoid or fix them. We also developed a modelling language for specifying this thesis's structure and behaviour of analysis components. Simulations are analyses to investigate a system when experimenting with the existing system is too time-consuming, costly, dangerous or simply impossible because the system does not exist (yet). Developers can use the specification to compare simulation components and thus identify identical components. Finding similar simulation components allows developers to reuse existing components and reduce the effort required to develop new components.
Validation: We evaluated our first contribution, the reference architecture for model-based analyses, by applying it to four model-based analyses. We chose a scenario-based evaluation that derives historical change scenarios from the repositories of the model-based analyses. In the evaluation, we can show that evolvability and understandability improve by determining the complexity, coupling, and cohesion. The metrics we used originate from information theory but were already used to evaluate the reference architecture for DSMLs. We evaluated our second contribution, the bad smells that emerge due to the co-dependency of model-based analyses and their corresponding DSMLs, by searching four model-based analyses for occurrences of our bad smells and fixing the found bad smells. We also chose a scenario-based evaluation that derives historical change scenarios from the repositories of the model-based analyses. We can show that bad smells negatively affect evolvability and understandability by determining the complexity, coupling, and cohesion before and after the refactoring. We evaluated our third contribution, the approach to specify and find components of model-based analyses, by specifying components of two model-based analyses and by applying our search algorithm to find analysis components with similar structure and behaviour. The evaluation results show that we can find similar analysis components and, as a result, that our approach can ease the search for analysis components with similar structure and behaviour. Thus, it can ease the reuse of such components.
Benefits: The contributions of our work support architects and developers in their day-to-day work to develop maintainable and reusable model-based analyses. For this purpose, we provide a reference architecture that aligns model-based analysis with the domain-specific modelling language, thus facilitating co-evolution. In addition to the reference architecture, we provide refactoring operations that allow architects and developers to align an existing model-based analysis with the reference architecture. In addition to this technical aspect, we have identified three processes that enable architects and developers to develop a new model-based analysis, modularise an existing model-based analysis and extend an existing model-based analysis. Of course, this is done so that the results conform to the reference architecture. In addition, our specification allows developers to compare existing simulation components and reuse them as needed. This avoids the need for developers to re-implement components.