Abstract:
In dieser Arbeit formalisieren und evaluieren wir, wie Softwarearchitekturmodelle im Kontext moderner, komplexer Softwaresysteme mit heterogenen Domänen, Technologien und Vernetzungen rückentwickelt werden können.
Das Verständnis und die Kontrolle von Architekturstrukturen werden immer schwieriger, da sich Softwaresysteme weiterentwickeln und viele Programmiersprachen, Frameworks und Konfigurationen umfassen. Diese Forschung befasst sich mit dem Bedarf an automatisierten Techniken zur Extraktion von Architekturmodellen aus verschiedenen Softwareartefakten, einschließlich Quellcodedateien, Konfigurationsdateien und Deployment-Deskriptoren. ... mehrZiel ist die Rekonstruktion von Architekturmodellen mithilfe eines Sichten-basierten Ansatzes, der ein Verständnis von Systemstrukturen, Komponenten und Beziehungen ermöglicht. Dies wird die Performance und Sicherheit moderner Softwaresysteme unterstützen, insbesondere solcher, die auf Web-Service- und Microservice-Architekturen basieren.
Das Problem, das in dieser Arbeit behandelt wird, ist die Unzulänglichkeit existierender Ansätze für das Reverse-Engineering von Softwarearchitekturmodellen aus heterogenen Artefakten über mehrere Technologien hinweg. Zu den Hauptmerkmalen moderner komponentenbasierter Softwaresysteme gehören unabhängige Bereitstellung, lose Kopplung und unterschiedliche Technologien und Plattformen. Diese Faktoren führen zur Komplexität und Heterogenität, was die Extraktion konsistenter Architekturmodelle erschwert. Bestehende Ansätze basieren manchmal auf manueller Dokumentation oder Werkzeugen, die mit den immer schnelleren Entwicklungszyklen und der zunehmenden technologischen Vielfalt nicht Schritt halten können, was zu veralteten oder unvollständigen Architekturdarstellungen führt. Das Fehlen präziser Architekturmodelle erschwert die Analyse und Vorhersage von Systemeigenschaften, die Überwachung der Systementwicklung und die Unterstützung von Qualitätsmerkmalen wie Leistung und Sicherheit. Es besteht daher ein dringender Bedarf an einem Ansatz, der die inhärente Heterogenität und Komplexität moderner Softwaresysteme bewältigt, um das Verständnis und die Wartung zu erleichtern.
Gegenwärtige Reverse-Engineering-Werkzeuge und -Ansätze sind nicht immer in der Lage, mit der Heterogenität und Komplexität moderner Softwaresysteme umzugehen. Einige Werkzeuge unterstützen zwar eine Reihe von Programmiersprachen, sind aber in der Regel unzureichend, wenn es um mehrsprachige Systeme oder die Integration verschiedener Artefakte außerhalb des Quellcodes geht. Diese Ansätze haben mit den unterschiedlichen Formaten, Programmiersprachen und Semantiken zu kämpfen, die den Softwareartefakten in komponentenbasierten Architekturen eigen sind. Solche Werkzeuge sind manchmal nicht in der Lage, die für die Erstellung von Architekturmodellen erforderlichen Informationen zu extrahieren, insbesondere in Systemen, in denen Dienste unabhängig voneinander unter Verwendung unterschiedlicher Technologien und Plattformen entwickelt und bereitgestellt werden. Dies führt zu einem Mangel an praktischem Reverse-Engineering von Softwarearchitekturen, die aus heterogenen Artefakten über Technologien hinweg abgeleitet werden. Infolgedessen sind die erstellten Architekturmodelle unvollständig und ungenau, was die Qualitätsvorhersage und Systemanalyse erschwerten.
In dieser Arbeit wird ein neuartiger, auf Sichten basierender Ansatz für das Reverse-Engineering von Softwarearchitekturmodellen aus heterogenen Artefakten über Technologien hinweg vorgestellt, der als Retriever bezeichnet wird. Dieser Ansatz verwendet Modell-zu-Modell-Transformationen, um Systemsichten aus Softwareartefakten, einschließlich Quellcode, Konfigurationsdateien und Deployment-Deskriptoren, zu extrahieren. Durch die Definition von technologiespezifischen Extraktionsregeln und die Anwendung eines Wissensrepräsentationsmodells ist unser Retriever-Ansatz in der Lage, Artefakte präzise auf Architekturelemente abzubilden. Anschließend werden Techniken zur Modellkomposition und -verfeinerung angewendet, um jede Sicht in ein einheitliches Architekturmodell zu integrieren, das Konsistenz und Vollständigkeit über alle Sichten hinweg unterstützt. Dieses einheitliche Modell berücksichtigt mehrere Sichten und bildet die Grundlage für modellbasierte Analysen und Qualitätsvorhersagen. Diese Dissertation leistet einen Beitrag zur Softwareentwicklung durch die Entwicklung eines neuen Ansatzes, der die inhärente Komplexität und Heterogenität moderner Softwaresysteme berücksichtigt. Unser Ansatz ermöglicht die automatisierte Erstellung von Architekturmodellen, die für Qualitätsvorhersagen und Systemoptimierungen geeignet sind, und stellt einen Fortschritt in der Softwareentwicklung dar.
Unser Retriever-Ansatz wurde anhand von Open-Source-Projekten unterschiedlicher Größe empirisch evaluiert, um seine Anwendbarkeit und Genauigkeit zu bewerten. Der Evaluierungsprozess beinhaltete die Integration unseres Ansatzes in Softwareentwicklungsprozesse, um die Generierung von Architekturmodellen zu automatisieren. Die Modelle wurden auf syntaktische Korrektheit validiert und hinsichtlich ihrer Fähigkeit analysiert, komplexe und heterogene Codebasen in handhabbare Architekturdarstellungen zu abstrahieren. Die Ergebnisse zeigten eine praktische Skalierbarkeit der Ausführungszeiten mit der Größe der Codebasis, was auf die Eignung für große Systeme hindeutet. Geeignete Metriken wurden verwendet, um die Präzision, die Ausbeute und die F1-Werte der extrahierten Struktur- und Verhaltenseigenschaften zu bewerten. Die erzielten hohen Punktzahlen zeigen, dass unser Retriever-Ansatz die Komponenten und ihre Wechselwirkungen genau identifiziert hat. Die Ergebnisse bestätigen, dass der Ansatz die mit heterogenen Systemen verbundenen Herausforderungen bewältigt und gültige Architekturmodelle erzeugt. Die erwarteten Vorteile dieser Modelle sind, dass sie das Verständnis, die Analyse und die Vorhersage der Qualität erleichtern. Es konnte gezeigt werden, dass der Ansatz in modernen Softwareentwicklungsumgebungen praktisch anwendbar ist.
Abstract (englisch):
In this thesis, we formalize and evaluate how to reverse engineer software architecture models in the context of modern, complex software systems that exhibit heterogeneity in domains, technologies, and interconnectedness.
Understanding and monitoring architectural structures becomes increasingly challenging as software systems evolve to encompass many programming languages, frameworks, and configurations. This research addresses the need for automated techniques to extract architectural models from diverse software artifacts, including source code files, configuration files, and deployment descriptors. ... mehrThe goal is to reconstruct architectural models using a view-based approach that enables an understanding of system structures, components, and interrelationships. This will support modern software systems' performance and security, especially for those based on web service and microservice architectures.
The problem addressed in this thesis is the inadequacy of existing approaches for reverse engineering software architecture models from heterogeneous artifacts across multiple technologies. Key features of modern component-based software systems include independent deployment, loose coupling, and diverse technologies and platforms. These factors introduce complexity and heterogeneity, making the extraction of coherent architectural models a challenging endeavor. Existing approaches sometimes rely on manual documentation or tools that cannot keep pace with accelerating development cycles and increasing technology diversity, resulting in outdated or incomplete architectural representations. The lack of accurate architectural models impedes the ability to analyze and predict system properties, monitor system evolution, and support quality attributes such as performance and security. As a result, an urgent need exists for an approach that handles the inherent heterogeneity and complexity of modern software systems to facilitate understanding and maintenance.
The current suite of reverse engineering tools and approaches is sometimes inadequate to address modern software systems' inherent heterogeneity and complexity. While some tools can support a range of programming languages, they are usually insufficient when confronted with multilingual systems or when tasked with integrating diverse artifacts beyond the source code. These approaches struggle with the different formats, programming languages, and semantics inherent in software artifacts in component-based architectures. Such tools are sometimes inadequate for extracting the necessary information to construct architectural models, especially in systems where services are developed and deployed independently using different technologies and platforms. As a result, there is a lack of practical reverse engineering of software architectures derived from heterogeneous artifacts across technologies. As a result, the architectural models produced are incomplete and inaccurate, which hinders quality prediction and system analysis.
This thesis introduces a novel, view-based approach for reverse engineering software architecture models from heterogeneous artifacts across technologies called Retriever. This approach uses model-to-model transformations to extract system views from software artifacts, including source code, configuration files, and deployment descriptors. By defining technology-specific extraction rules and applying a knowledge representation model, our Retriever approach can accurately map artifacts to architectural elements. It then applies model composition and refinement techniques to integrate each view into a unified architectural model, supporting coherence and completeness across views. This unified model addresses multiple concerns and provides a foundation for model-based analysis and quality prediction. This thesis contributes to software engineering by developing a new approach that addresses modern software systems' inherent complexity and heterogeneity. Our approach enables the automated generation of architectural models suitable for quality prediction and system optimization, representing an advancement in software engineering.
Our Retriever approach has been empirically evaluated using varying-size open-source projects to assess its applicability and accuracy. The evaluation process involved integrating Retriever into continuous integration pipelines and automating the generation of architectural models. The models were validated for syntactic correctness and analyzed for their ability to abstract complex and heterogeneous code bases into manageable architectural representations. The results indicated that execution times exhibited practical scalability with code base size, indicating suitability for large systems. Appropriate metrics were used to evaluate the extracted structural and behavioral properties' precision, recall, and F1 scores. The high score achieved indicates that our Retriever approach accurately identified the components and their interrelationships. The results confirm that the approach addresses the challenges inherent in heterogeneous systems and produces valid architectural models. These models are expected to improve understanding, analysis, and quality prediction. As a result, it was shown to have practical applicability in modern software development environments.