Automated Coevolution of Source Code and Software Architecture Models

Zur Entwicklung komplexer Softwaresysteme, werden neben dem Quelltext zusatzliche Artefakte, wie beispielsweise Architekturmodelle, verwendet. Wenn die verwendeten Architekturmodelle wahrend der Entwicklung und Evolution eines Softwaresystems konsistent mit dem Quelltext sind, konnen Softwarearchitekten und Softwareentwickler bei der Entwicklung der Systeme besser unterstutzt werden. Architekturmodelle, die auf dem aktuellem Stand sind, vereinfachen Entwicklungs- und Evolutionssaufgaben, da einfacher beantwortet werden kann wie und wo neue Funktionen implementiert werden sollen. Auserdem ist es moglich, modellbasierte Analysen mit Hilfe der Softwarearchitekturmodelle vorzunehmen. Beispielsweise konnen mit dem Palladio Komponentenmodell (PCM) Performanzvorhersagen durchgefuhrt werden, wenn ein Architekturmodell des Softwaresystems vorhanden ist und dieses Verhaltensspezifikationen beinhaltet. Wenn Architekturmodelle bei der Softwareentwicklung und Softwareevolution verwendet werden, konnen die beiden bekannten Probleme Architekturdrift und Architekturverletzung auftreten. Diese Probleme treten fur gewohnlich auf, wenn bei voranschreitender Entwicklung des Quelltextes die Architektur nicht konsistent zu diesem gehalten wird. Dies fuhrt zu veralteten und schlussendlich nutzlosen Architekturmodellen. Viele existierende Ansatze, zur Vermeidung dieser Probleme, zielen darauf ab, Quelltext und UML-Klassendiagramme konsistent zu halten, oder sie zielen darauf ab, Architekturinformationen in den Quelltext einzubetten. In letzterem Fall wird die Notwendigkeit, die Architektur konsistent mit dem Quelltext zu halten, umgangen, da die Architektur integraler Bestandteil des Quelltextes ist. In der vorliegenden Dissertation beschreiben wir einen neuen Ansatz, um komponentenbasierte Architekturmodelle, welche sich auf einer hohen Abstraktionsebene befinden, konsistent mit dem Quelltext zu halten. Wir beschreiben, wie Instanzen des PCMs konsistent mit Java-Quelltext gehalten werden konnen. Um Konsistenz zu erreichen, werden Architekturelemente erzeugt, geloscht oder geandert, sobald ihre entsprechende Quelltextelemente geandert wurden, und umgekehrt. Fur die Umsetzung der Konsistenzerhaltung stellen wir einen anderungsgetriebenen Ansatz vor. Dieser verwendet benutzerdefinierte, anderungsgetriebene Abbildungsregeln, um die Konsistenz zwischen den beteiligten Modellen sicherzustellen. In dieser Dissertation stellen wir vier konkrete Mengen von Abbildungsregeln zwischen Architekturmodellen und Quelltext vor. Diese haben wir in einer prototypischen Implementierung des Ansatzes umgesetzt. Wir stellen auserdem einen Mechanismus vor, der mit den Benutzern des Konsistenzerhaltungsansatzes interagiert, wenn die Konsistenz nicht automatisch erhalten werden kann, sondern die Benutzer zuerst ihre Intention, die sie mit einer bestimmten Anderung verfolgen, dem Ansatz mitteilen mussen. In diesem Fall mussen die Benutzer das genaue Vorgehen fur die Konsistenzerhaltung spezifizieren. Da der vorgestellte Ansatz anderungsgetrieben funktioniert, ist es notwendig, dass wir alle Anderungen in den beteiligten Architektur- und Quelltexteditoren aufzeichnen konnen. Um es Benutzern zu erlauben, vorhandene Editoren, mit denen sie sich auskennen, wiederverwenden zu konnen, haben wir Beobachter fur diese Editoren implementiert. Diese Beobachter zeichnen alle Anderungen an einem Modell auf und informieren unseren Ansatz uber jede durchgefuhrte Anderung. Der in dieser Dissertation vorgestellte Ansatz erlaubt es auch, verhaltensbeschreibende Architekturmodelle konsistent mit dem Quelltext zu halten. Um dies zu erreichen, haben wir einen Ansatz implementiert, der es ermoglicht, Service Effect Specifications des PCMs inkrementell aus Methoden zu erstellen, nachdem diese geandert wurden. Die Service Effect Specifications werden innerhalb des PCMs genutzt, um das Verhalten einer Komponente zu spezifizieren. Um bereits bestehende Architekturmodelle und bestehenden Quelltext innerhalb unseres Ansatzes verwenden zu konnen, stellen wir je eine Integrationsstrategie fur die Architektur und den Quelltext vor. Um bestehende Architekturmodelle zu integrieren, simulieren wir deren Erstellung. Wahrend dieses Erstellvorgangs zeichnen wir die Anderungen auf, die notig sind, um das Architekturmodell zu erstellen. Diese Anderungen werden als Eingabe fur den Konsistenzerhaltungsprozess verwendet, um daraus den entsprechenden Quelltext zu erzeugen. Um vorhandenen Quelltext einzubinden, stellen wir einen Ansatz vor, der auf Architekturrekonstruktionsverfahren basiert, d.h., zuerst wird die Architektur eines bestehenden Softwaresystems rekonstruiert. Die erstellte Architektur wird anschliesend zusammen mit dem bestehenden Quelltext in unseren Coevolutionsansatz integriert. Oftmals ist bestehender Quelltext jedoch nicht so aufgebaut, wie es die Abbildungsregeln vorschreiben. Innerhalb der Integrationsstrategie fur Quelltext stellen wir deshalb einen Ansatz vor, der in der Lage ist, solche Quelltexte dennoch zu integrieren. Dieser Ansatz ermoglicht es, nicht nur diese Art von Quelltext zu integrieren, sondern diesen auch mit speziell definierten Abbildungsregeln automatisch konsistent zu halten. Wir haben unseren Ansatz in verschiedenen Fallstudien evaluiert. Dabei haben wir zunachst gezeigt, dass es moglich ist vorhandene Architekturmodelle zu integrieren, indem ihr Aufbau simuliert wird. In der durchgefuhrten Fallstudie ist es mit unserem Ansatz und den vorgestellten Abbildungsregeln moglich, zwischen 98% und 100% der unterstutzten Elemente zu integrieren. Als nachstes haben wir gezeigt, dass unser Ansatz in der Lage ist, existierenden Quelltext zu integrieren und Anderungen am integrierten Quelltext konsistent mit der Architektur zu halten. Fur diese Fallstudie haben wir zunachst den Quelltext von vier quelloffenen Projekten in den Ansatz integriert. Als nachstes haben wir gezeigt, dass es moglich ist, Anderungen am Quelltext konsistent mit der Architektur zu halten. Dazu haben wir eine alte Version des Quelltextes integriert und Anderungen die zwischen einer alten und neueren Version durchgefuhrt wurden, aus einem Versionskontrollsystem extrahiert und erneut auf den Quelltext angewendet. Im Rahmen dieser Evaluation haben wir auch gezeigt, dass es moglich ist Anderungen, die innerhalb von Methoden durchgefuhrt werden, mit einem Verhaltensmodell konsistent zu halten. Wir haben auserdem eine Evaluation der Leistungsfahigkeit unseres Ansatzes durchgefuhrt und gezeigt, dass unser Ansatz in den meisten Fallen in der Lage ist, die Architektur in einer Zeit zwischen einer und funf Sekunden konsistent zu halten, nachdem eine Anderung am Quelltext durchgefuhrt wurde. Als letztes haben wir gezeigt, dass es moglich ist, coevolvierte Modelle fur die Performanzvorhersage zu verwenden. Dazu haben wir zuerst die Modelle in einem Parametrisierungsschritt mit den notigen Ressourcenverbrauchen angereichert. Als nachstes konnten wir die Performanzvorhersage durchfuhren. In unserer Fallstudie zeigte sich, dass der Vorhersagefehler fur die Antwortzeit eines Systems bei ca. 10% liegt, und damit die coevolvierten Modelle fur die Abschatzung der Performanz eines realen Systems verwendet werden konnen.

[1]  Philippe Kruchten,et al.  The Past, Present, and Future for Software Architecture , 2006, IEEE Software.

[2]  Nour Ali,et al.  JITTAC: A Just-in-Time tool for architectural consistency , 2013, 2013 35th International Conference on Software Engineering (ICSE).

[3]  Nenad Medvidovic,et al.  An Empirical Study of Architectural Change in Open-Source Software Systems , 2015, 2015 IEEE/ACM 12th Working Conference on Mining Software Repositories.

[4]  Daniel Mossé,et al.  Experience with a New Architecture Review Process Using a Globally Distributed Architecture Review Team , 2010, 2010 5th IEEE International Conference on Global Software Engineering.

[5]  Roel Wuyts,et al.  A Logic Meta-Programming Approach to Support the Co-Evolution of Object-Oriented Design and Implementation , 2001 .

[6]  C. Murray Woodside,et al.  Performance modeling from software components , 2004, WOSP '04.

[7]  A. Levine,et al.  New estimates of the storage permanence and ocean co-benefits of enhanced rock weathering , 2023, PNAS nexus.

[8]  Barbara Paech,et al.  Developing and applying component-based model-driven architectures in KobrA , 2001, Proceedings Fifth IEEE International Enterprise Distributed Object Computing Conference.

[9]  Ralf H. Reussner,et al.  Model-Driven Co-Evolution of Contracts, Unit-Tests and Source-Code-Proposal for Master's Thesis – Advisors: Max Kramer, Michael Langhammer, Erik Burger Supervisors: Prof. Dr. Ralf Reussner, Jun.-Prof. Dr.-Ing. Anne Koziolek , 2014 .

[10]  Albert L. Baker,et al.  JML: A Notation for Detailed Design , 1999, Behavioral Specifications of Businesses and Systems.

[11]  Frédéric Jouault,et al.  Transforming Models with ATL , 2005, MoDELS.

[12]  Philipp Merkle,et al.  Extending the Palladio Component Model to Analyze Data Contention for Modernizing Transactional Software Towards Service-Orientation , 2015, Softwaretechnik-Trends.

[13]  Heiko Klare Designing a Change-Driven Language for Model Consistency Repair Routines , 2016 .

[14]  Alexander L. Wolf,et al.  Acm Sigsoft Software Engineering Notes Vol 17 No 4 Foundations for the Study of Software Architecture , 2022 .

[15]  Ulrich Nickel,et al.  The FUJABA environment , 2000, Proceedings of the 2000 International Conference on Software Engineering. ICSE 2000 the New Millennium.

[16]  Steffen Becker,et al.  Towards a Tool-Oriented Taxonomy of View-Based Modelling , 2012, Modellierung.

[17]  Branko Perisic,et al.  Sirius: A rapid development of DSM graphical editor , 2014, IEEE 18th International Conference on Intelligent Engineering Systems INES 2014.

[18]  Max E. Kramer,et al.  Change-driven consistency for component code, architectural models, and contracts , 2015, 2015 18th International ACM SIGSOFT Symposium on Component-Based Software Engineering (CBSE).

[19]  K. N. Dollman,et al.  - 1 , 1743 .

[20]  Heiko Koziolek,et al.  CoCoME - The Common Component Modeling Example , 2007, CoCoME.

[21]  Benjamin Hettwer,et al.  Integration of Existing Software Artifacts into a View- and Change-Driven Development Approach , 2015 .

[22]  Erik Burger,et al.  Difference-based Conformance Checking for Ecore Metamodels , 2014, Modellierung.

[23]  Marija Mikic-Rakic,et al.  Adaptable Architectural Middleware for Programming-in-the-Small-and-Many , 2003, Middleware.

[24]  Bernhard Schätz,et al.  mbeddr: instantiating a language workbench in the embedded software domain , 2013, Automated Software Engineering.

[25]  Robbie Vanbrabant Google Guice: Agile Lightweight Dependency Injection Framework (Firstpress) , 2008 .

[26]  Marco Tulio Valente,et al.  Heuristics for discovering architectural violations , 2013, 2013 20th Working Conference on Reverse Engineering (WCRE).

[27]  Virgílio A. F. Almeida,et al.  Capacity Planning and Performance Modeling: From Mainframes to Client-Server Systems , 1994 .

[28]  Max E. Kramer,et al.  Automatically Binding Variables of Invariants to Violating Elements in an OCL-Aligned XBase-Language , 2016, Modellierung.

[29]  Max E. Kramer,et al.  Determining the Intent of Code Changes to Sustain Attached Model Information During Code Evolution , 2014, Softwaretechnik-Trends.

[30]  Clemens A. Szyperski,et al.  Component software - beyond object-oriented programming , 2002 .

[31]  Steffen Becker,et al.  Incremental Updates for Textual Modelling of Large Scale Models , 2010, 2010 15th IEEE International Conference on Engineering of Complex Computer Systems.

[32]  Stéphane Ducasse,et al.  Software Architecture Reconstruction: A Process-Oriented Taxonomy , 2009, IEEE Transactions on Software Engineering.

[33]  Dániel Varró,et al.  Change-driven model transformations , 2011, Software & Systems Modeling.

[34]  Max E. Kramer,et al.  View-centric engineering with synchronized heterogeneous models , 2013 .

[35]  H. D. Rombach,et al.  The Goal Question Metric Approach , 1994 .

[36]  Gang Huang,et al.  Runtime recovery and manipulation of software architecture of component-based systems , 2006, Automated Software Engineering.

[37]  Ralf H. Reussner,et al.  Towards architecture-centric evolution of long-living systems (the ADVERT approach) , 2013, QoSA '13.

[38]  Sander Vermolen,et al.  An Extensive Catalog of Operators for the Coupled Evolution of Metamodels and Models , 2010, SLE.

[39]  Colin Atkinson,et al.  Orthographic Software Modeling: A Practical Approach to View-Based Development , 2009, ENASE.

[40]  Erik Burger,et al.  Translatability and Translation of Updated Views in ModelJoin , 2016, ICMT.

[41]  Nenad Medvidovic,et al.  A comparative analysis of software architecture recovery techniques , 2013, 2013 28th IEEE/ACM International Conference on Automated Software Engineering (ASE).

[42]  Colin Atkinson,et al.  Fundamental Realization Strategies for Multi-view Specification Environments , 2015, 2015 IEEE 19th International Enterprise Distributed Object Computing Conference.

[43]  Markus Völter,et al.  JetBrains MPS as a tool for extending Java , 2013, PPPJ.

[44]  Flávio Oquendo,et al.  ArchWare: Architecting Evolvable Software , 2004, EWSA.

[45]  Robert Balzer Tolerating inconsistency (software development) , 1991, [1991 Proceedings] 13th International Conference on Software Engineering.

[46]  Steffen Becker,et al.  Quantitative Evaluation of Model-Driven Performance Analysis and Simulation of Component-Based Architectures , 2015, IEEE Transactions on Software Engineering.

[47]  Max E. Kramer A generative approach to change-driven consistency in multi-view modeling , 2015, 2015 11th International ACM SIGSOFT Conference on Quality of Software Architectures (QoSA).

[48]  Kelly E. Murray,et al.  Under the Hood , 1996, J. Object Oriented Program..

[49]  Mauricio A. Saca Refactoring improving the design of existing code , 2017, 2017 IEEE 37th Central America and Panama Convention (CONCAPAN XXXVII).

[50]  Matias Martinez,et al.  Fine-grained and accurate source code differencing , 2014, ASE.

[51]  P. Steerenberg,et al.  Targeting pathophysiological rhythms: prednisone chronotherapy shows sustained efficacy in rheumatoid arthritis. , 2010, Annals of the rheumatic diseases.

[52]  Ralf H. Reussner,et al.  Using Genetic Search for Reverse Engineering of Parametric Behavior Models for Performance Prediction , 2010, IEEE Transactions on Software Engineering.

[53]  Erik Burger,et al.  View-based model-driven software development with ModelJoin , 2016, Software & Systems Modeling.

[54]  J. LaFountain Inc. , 2013, American Art.

[55]  Benjamin Klatt,et al.  Consolidation of Customized Product Copies into Software Product Lines , 2016 .

[56]  Michael Langhammer Co-evolution of component-based architecture-model and object-oriented source code , 2013, WCOP '13.

[57]  Max E. Kramer,et al.  Projecting UML Class Diagrams from Java Code Models , 2016 .

[58]  Max E. Kramer,et al.  Proposal for a Multi-View Modelling Case Study: Component-Based Software Engineering with UML, Plug-ins, and Java , 2014, VAO '14.

[59]  Steffen Becker,et al.  Evaluating Performance of Software Architecture Models with the Palladio Component Model , 2009 .

[60]  Heiko Koziolek,et al.  A Large-Scale Industrial Case Study on Architecture-Based Software Reliability Analysis , 2010, 2010 IEEE 21st International Symposium on Software Reliability Engineering.

[61]  Ralph E. Johnson,et al.  How do APIs evolve? A story of refactoring , 2006, J. Softw. Maintenance Res. Pract..

[62]  Bernhard Beckert,et al.  The KeY system 1.0 (Deduction Component) , 2007, CADE.

[63]  Anne Koziolek,et al.  Automated Improvement of Software Architecture Models for Performance and Other Quality Attributes , 2011 .

[64]  Marco Konersmann,et al.  Automatic Synchronization of Allocation Models with Running Software , 2016, Softwaretechnik-Trends.

[65]  P. Kam,et al.  : 4 , 1898, You Can Cross the Massacre on Foot.

[66]  Erik Burger Flexible views for rapid model-driven development , 2013 .

[67]  Mirko Seifert,et al.  Closing the Gap between Modelling and Java , 2009, SLE.

[68]  Steffen Becker,et al.  The Palladio component model for model-driven performance prediction , 2009, J. Syst. Softw..

[69]  Max E. Kramer,et al.  Modeling and Simulating Software Architectures: The Palladio Approach , 2016 .

[70]  Rainer Böhme,et al.  Validation of Predictions with Measurements , 2005, Dependability Metrics.

[71]  Mirko Seifert,et al.  Derivation and Refinement of Textual Syntax for Models , 2009, ECMDA-FA.

[72]  David Notkin,et al.  ArchJava: connecting software architecture to implementation , 2002, ICSE '02.

[73]  Erik Burger,et al.  Flexible views for view-based model-driven development , 2013, WCOP '13.

[74]  Kim Mens,et al.  Co-evolving code and design with intensional views: A case study , 2005, Comput. Lang. Syst. Struct..

[75]  Nenad Medvidovic,et al.  Automated Extraction of Rich Software Models from Limited System Information , 2016, 2016 13th Working IEEE/IFIP Conference on Software Architecture (WICSA).

[76]  Dharini Balasubramaniam,et al.  Controlling software architecture erosion: A survey , 2012, J. Syst. Softw..

[77]  Steffen Becker,et al.  Predicting the Performance of Component-Based Software Architectures with Different Usage Profiles , 2007, QoSA.

[78]  Daniel Mossé,et al.  Experience with model-based performance, reliability, and adaptability assessment of a complex industrial architecture , 2012, Software & Systems Modeling.

[79]  Steffen Becker,et al.  Reengineering component-based software systems with Archimetrix , 2013, Software & Systems Modeling.

[80]  Les Hatton,et al.  Reexamining the Fault Density-Component Size Connection , 1997, IEEE Softw..

[81]  Max E. Kramer Synchronizing Heterogeneous Models in a View-Centric Engineering Approach , 2014, Software Engineering.

[82]  Heiko Koziolek,et al.  Architecture-Based Reliability Prediction with the Palladio Component Model , 2012, IEEE Transactions on Software Engineering.

[83]  Nancy G. Leveson,et al.  An experimental evaluation of the assumption of independence in multiversion programming , 1986, IEEE Transactions on Software Engineering.

[84]  Richard C. Holt,et al.  Forward and reverse repair of software architecture , 1999, CASCON.

[85]  Daniel Mossé,et al.  Experience building non-functional requirement models of a complex industrial architecture , 2011, ICPE '11.

[86]  Klaus Krogmann,et al.  A Co-evolution Approach for Source Code and Component-based Architecture Models , 2015, Softwaretechnik-Trends.

[87]  Jordi Cabot,et al.  MoDisco: a generic and extensible framework for model driven reverse engineering , 2010, ASE.