Abstract:
Softwarearchitekturmodelle ermöglichen es agilen Teams, das System in Entwicklung besser zu verstehen und Qualitätseigenschaften effizient vorherzusagen.
Insbesondere erlaubt Architektur-basierte Performance-Vorhersage (AbPV) die Durchführung von Performance-Bewertungen für verschiedene Szenarien, ohne dass teures Monitoring für alle Entwurfsalternativen, wie alternative Arbeitslasten, Entwürfe oder Deployments, erforderlich ist.
Allerdings ist eine Umsetzung von akkuraten AbPV in der agilen Softwareentwicklung mit erheblichen Herausforderungen verbunden, da ein stets aktuelles, auf performance-beeinflussende Faktoren parametrisiertes, architektonisches Performance-Modell (aPM) erforderlich ist. ... mehrHäufige Quellcodeänderungen in kurzen Entwicklungszyklen können zu architektonischen Drifts und Erosionen führen. Dies verlangt eine kontinuierliche Aktualisierung der Struktur, des Verhaltens oder der Performance-Parameter des aPM, z.B. des Ressourcenbedarfs. Zusätzlich erzeugen adaptive Änderungen zur Laufzeit – etwa Anpassungen in der Systemzusammensetzung und Re-Konfigurationen der Deployment-Umgebung – weitere Inkonsistenzen zwischen dem aPM und dem laufenden Softwaresystem, wodurch die Genauigkeit des Modells bei der Repräsentation der Systemarchitektur sinkt.
Eine akkurate AbPV erfordert auch eine präzise Kalibrierung der Performance-Parameter über beeinflussende Faktoren wie Eingabedaten, Hardwarekonfigurationen und Arbeitslastcharakteristika. Das Ignorieren dieser Abhängigkeiten begrenzt die Vorhersagekraft für unvorhergesehene Zustände und schränkt die Bewertung eines breiten Spektrums an verschiedenen Szenarien ein. Während häufige Kalibrierungen aufgrund häufiger Änderungen oft notwendig sind, können sie auch einen unnötigen Monitoring-Aufwand einführen, der sich negativ auf die Systemperformance auswirken könnte. Eine effiziente Konsistenzerhaltung zwischen einem parametrisierten aPM und dem Softwaresystem ist daher essenziell, um eine präzise AbPV zur proaktiven Performance-Bewertung während der agilen Softwareentwicklung zu ermöglichen.
Existierte Ansätze haben Schwierigkeiten, Architekturmodelle auf alle relevanten Änderungen hin zu aktualisieren, was die Genauigkeit der AbPV unsicher macht. Selbst Reverse-Engineering-Ansätze, die statische oder dynamische Analysen nutzen, um ein aktuelles aPM zu extrahieren, stoßen bei der Sicherung der AbPV-Genauigkeit auf Herausforderungen, insbesondere durch das Fehlen einer automatischen Neu-Extraktion nach evolutionären und adaptiven Änderungen. Darüber hinaus kann häufiges Reverse Engineering kostspielig sein und möglicherweise manuelle Anpassungen am zuvor extrahierten Modell überschreiben.
In dieser Arbeit stellen wir unseren Ansatz, engl. Continuous Integration of Architectural Performance Models (CIPM), vor, der das Performancemanagement während der agilen Softwareentwicklung mit AbPV unterstützt. CIPM ermöglicht die kontinuierliche Aktualisierung von Architektur-Performance-Modellen als Reaktion auf evolutionäre, adaptive oder nutzungsbezogene Änderungen. Während der Entwicklung nutzt es Standard-Commits der Versionskontrolle aus der Pipeline für kontinuierliche Integration (engl. Continuous Integration (CI)), um Quellcodeänderungen zu überwachen und das aPM basierend auf einer statischen Analyse dieser Änderungen zu aktualisieren. Kontinuierliches Deployment (engl. Continuous Deployment (CD)) kalibriert CIPM die betroffenen Performance-Parameter mit parametrischen Abhängigkeiten durch Messungen aus adaptivem Monitoring, das durch das Beobachten der geänderten Teile des Quellcodes den Monitoring-Aufwand reduziert. Um adaptives Monitoring zu ermöglichen, instrumentiert CIPM automatisch Quellcodeänderungen mit spezifischen konfigurierbaren Monitoring-Probes. Weiterhin führt CIPM eine Selbst-Validierung ein, die die Genauigkeit des aktualisierten aPM sicherstellt, die Monitoring-Probes verwaltet und erkannte Ungenauigkeiten neu kalibriert. Zur Laufzeit aktualisiert CIPM außerdem kontinuierlich die aPMe als Reaktion auf Laufzeit-Änderungen und erhöht so die Modellgenauigkeit.
Als Ergebnis automatisiert CIPM die Konsistenzerhaltung zwischen dem aPM und dem Softwaresystem während der Entwicklungs- und Betriebsphase durch eine Integration in die CI/CD-Pipeline, wodurch das aPM stets auf dem neuesten Stand bleibt. Diese Konsistenz unterstützt ein tieferes Verständnis des Softwaresystems und ermöglicht es AbPV, potenzielle Performance-Probleme proaktiv zu identifizieren und Entwurfsalternativen mit minimalem Aufwand zu bewerten, um die nächste Entwicklungsiteration vorzubereiten.
Unsere Evaluierung basiert hauptsächlich auf einem messbasierten Ansatz zur Validierung der aPMen auf zwei Ebenen: Ebene I konzentriert sich auf die Validierung der Genauigkeit des aPM und der zugehörigen AbPV durch den Vergleich von Performance-Vorhersagen mit tatsächlichen Performance-Messungen, während Ebene II die Anwendbarkeit von CIPM hinsichtlich des erforderlichen Monitoring-Aufwands und der Skalierbarkeit bewertet. Neben empirischen Experimenten auf beiden Ebenen führen wir außerdem Experimente zur Validierung von CIPM bei der Analyse echter Software-Repositories mit etwa 18.000 Commits durch. Für unsere Validierung verwenden wir eine Java-basierte Anwendung, zwei Benchmarks und zwei industrielle, Lua-basierte Sensoranwendungen von SICK AG.
Unsere Ergebnisse zur Genauigkeit zeigen, dass CIPM das aPM effektiv aktuell hält und die Performance-Parameter präzise schätzt, wodurch genaue Performance-Prognosen ermöglicht werden. Darüber hinaus belegen unsere experimentellen Ergebnisse, dass die Kalibrierung der Performance-Parameter unter Berücksichtigung der parametrischen Abhängigkeiten die Vorhersagekraft der AbPV erheblich verbessert. In Bezug auf den Monitoring-Aufwand reduziert die adaptive Instrumentierung von CIPM die Anzahl der erforderlichen Probes signifikant, wobei je nach spezifischem Fall eine Reduktion von 12,6 % bis 69 % erreicht wird. Zudem kann das adaptive Monitoring gemäß unseren Experimenten den Monitoring-Aufwand um bis zu 40 % verringern. Abschließend zeigt CIPM angemessene Ausführungszeiten und skaliert gut mit der zunehmenden Anzahl von Modellelementen und Monitoring-Daten.
Abstract (englisch):
Incorporating the software architecture model during agile software development enables a better understanding of the rapidly evolving system and efficient prediction of quality attributes.
In particular, Architecture-based Performance Prediction (AbPP) enables performance assessments across various what-if scenarios without the need for expensive measurements across all design alternatives, such as alternative workloads, designs, and deployments.
However, achieving accurate AbPP in agile software development presents significant challenges, requiring an up-to-date architectural Performance Model (aPM) parameterized over factors impacting performance. ... mehrFrequent code changes within short development iterations can lead to architectural drift and erosion. This demands continuous updates to the aPM's structure, behavior, and performance parameters, such as resource demands. Additionally, adaptive operational changes— such as system composition adjustments and deployment reconfigurations— introduce further inconsistencies between the aPM and the running system, reducing the model's accuracy in representing the system architecture.
Accurate AbPP also necessitates accurate calibration of the performance parameters over influencing factors like usage-driven input data, hardware configurations, and workload characteristics. Ignoring parametric dependencies limits predictive power for unforeseen states and restricts the assessment of a broad range of what-if scenarios. While frequent calibration is often necessary due to ongoing changes, it can also introduce unnecessary monitoring overhead that may negatively impact system performance. Hence, efficient consistency maintenance between a parametrized aPM and the software system is essential for enabling accurate AbPP for proactive performance assessment, especially during agile software development.
Existing approaches struggle to update architecture models in response to all impactful changes, making the accuracy of AbPP uncertain. Even reverse engineering approaches that use static or dynamic analysis or a combination of both to extract up-to-date aPMs encounter challenges in maintaining AbPP accuracy, primarily due to the absence of automatic re-extraction after evolutionary and adaptive changes. Furthermore, frequent reverse engineering can be costly and may overwrite possible manual adjustments to the previously extracted model.
In this thesis, we present our approach,Continuous Integration of architectural Performance Models (CIPM), to support performance management during agile software development with AbPP. CIPM continuously updates architectural performance models in response to evolutionary, adaptive, or usage changes. During development, it utilizes standard version control commits from the Continuous Integration (CI) pipeline to monitor source code changes and to update the aPM based on static analysis of these changes. After the Continuous Deployment (CD), CIPM calibrates affected performance parameters with parametric dependencies using measurements from adaptive monitoring targeting the changed parts of source code to reduce monitoring overhead. To enable adaptive monitoring, CIPM automatically instruments source code changes using specific configurable monitoring probes. Furthermore, CIPM introduces a self-validation process that ensures the accuracy of the updated aPM, manages the monitoring probes, and recalibrates any identified inaccuracies. At operation time, CIPM also continuously updates aPMs in response to operational changes, enhancing model accuracy.
As a result, CIPM automates the preservation of consistency between the aPM and the software system during both the development and operational phases throughout seamless integration into the CI/CD pipeline, keeping aPM up-to-date. This consistency supports a deeper understanding of evolving software systems and enables AbPP to proactively identify potential performance issues and assess design alternatives at minimal cost in preparation for the next evolutionary iteration.
Our evaluation follows mainly a measurement-based approach for validating aPMs at two levels \cite{boehme2008a}: Level I focuses on validating the accuracy of aPM and the associated AbPP by comparing performance predictions with actual performance measurements, while level II assesses the applicability of CIPM in terms of required monitoring overhead and scalability. In addition to empirical experiments at both levels, we furthermore conduct experiments validated CIPM by mining real software repositories containing approximately 18,000 commits. In our validation, we use a Java-based application, two benchmarks, and two industrial Lua-based sensor applications from SICK AG.
Regarding accuracy, our findings show that CIPM effectively keeps the aPM up-to-date and accurately estimates performance parameters, thereby enabling accurate performance predictions. Besides, our experimental results indicate that calibrating the performance parameters considering the parametric dependencies significantly improves the predictive power of AbPP.
Regarding monitoring overhead, CIPM's adaptive instrumentation significantly reduces the number of required probes, with reductions ranging from 12.6% to 69%, depending on the specific cases examined. Furthermore, adaptive monitoring can reduce up to 40% of the monitoring overhead, according to our experiments. Lastly, CIPM demonstrates reasonable execution times and scales well with the increasing number of model elements and monitoring data.