Composing Non-functional Concerns in Web Services

Benjamin Schmeling, Anis Charfi, Rainer Thome, Mira Mezini
2011 2011 IEEE Ninth European Conference on Web Services  
Affirmation / Ehrenwörtliche Erklärung I hereby declare that I have written the following thesis without the inadmissible assistance of third parties and using only the indicated sources and aids. All instances in which outside sources were used have been marked accordingly. This work has not been presented to any test authority in its current or in a similar form. Hiermit versichere ich, die vorliegende Doktorarbeit ohne Hilfe Dritter und nur mit den angegebenen Quellen und Hilfsmitteln
more » ... tigt zu haben. Alle Stellen, die aus den Quellen entnommen wurden, sind als solche kenntlich gemacht worden. Diese Arbeit hat in gleicher oder ähnlicher Form noch keiner Prüfungsbehörde vorgelegen. Darmstadt, March 2013 Benjamin Schmeling Acknowledgments My sincere thanks go to Prof. Dr. Mira Mezini and Prof. Dr. Tai for their support and guidance during my Ph.D. work as well as to my colleague Anis Charfi for his advice, guidance and help throughout the rendering of this Ph.D. thesis. He contributed much of his time in fruitful discussion with me about new ideas and their realization. I am also grateful for the excellent support from SAP Research and my colleague Steffen Heinzl for the many valuable discussions on my Ph.D. thesis, and in this regard I would also like to thank Mohamed Aly, Heiko Witteborg, Francesco Novelli and all the other colleagues. My students Rainer Thome, Marko Martin and Ajay Sagar contributed to the work described in this thesis by implementing parts of the modeling tool and code generator in the context of their theses. A well-deserved word of appreciation is also in order for Evelyn Nichols for her efforts to improve my English. Finally, I extend my profound gratitude to my family for their unwavering support throughout my studies, which ultimately helped to make their successful conclusion and this thesis a reality. I authored this paper while working as a research associate at SAP Research, during which time I contributed to projects PREMIUM|Services (01IA08003A) and InDiNet (01IC10S04A) which were partially funded by the German Federal Ministry of Education (BMBF). Hence, I thank the BMBF for its financial support. Abstract In software development, two types of concerns must generally be addressed: functional and non-functional ones. Functional concerns relate to the main or core functionality of a software, whereas non-functional concerns represent quality characteristics of the same. It is widely accepted that the two types of concerns should be strictly separated from one another to increase maintainability, understandability and reusability of a software. In component-based software systems, this strict separation of concerns results in the implementation of the respective concerns as functional as well as non-functional components. From the current perspective, web services are the prevalent technology for implementing such component-based software systems. They adhere to open standards and describe a well-defined interface which is strictly separated from the implementation of the service. This allows the realization of systems consisting of loosely coupled and platform-independent services. Nonfunctional concerns could also be implemented as web services; however, a well-defined mechanism is required to integrate these non-functional components with functional ones. This mechanism should not interfere with the aforementioned platform independence and loose coupling, and it should not require changes in the implementation of the functional component. For reuse purposes, it should be possible to integrate one non-functional component with several functional components. Furthermore it should be possible to integrate multiple non-functional components with a single functional component. The latter, however, requires a well-defined ordering of the consumption of the non-functional components. The justification for this is that, generally,different orderings of non-functional concerns would cause different behavior. Furthermore, it is not possible to define generally valid (default) orderings, because the ordering may be specific to a particular functional component. Thus, a mechanism for specifying these orderings explicitly is required. Furthermore, a component must be available which is able to enforce this specification at runtime. This dissertation analyzes the applicability of state-of-the-art approaches for the composition of non-functional concerns in web services in terms of the concrete requirements to be met. In this analysis it turns out that there is no appropriate approach which sufficiently supports most of the requirements. Hence, the dissertation presents NFComp, a novel, model-driven approach for composing non-functional concerns in web services. This approach takes different dimensions into account. Firstly, it aims at both specification as well as enforcement of concern compositions. Secondly, it covers different views on web services in which only particular parts of the service are available. Thirdly, it provides an abstract framework which could be applied to all component-based approaches and a concrete, instantiable one which can be applied to web services in particular. In this approach, a modeler can specify concern composition in terms of non-functional actions each representing distinct and fine-grained non-functional behavior. Those actions, their logical viii composition and mapping to functional components, can be modeled in a graphical way. The model is mainly process-oriented and shows directly in which order and for which services actions must be executed. The approach is structured in six phases: requirements specification, action definition, action composition, service mapping, middleware mapping and code generation. In each phase, the model is processed by various participants in different roles and enriched by new information. The resulting model can be validated at design time against a set of constraints imposed by different types of interdependencies modeled in the action definition phase. In this regard, the problem of finding interdependencies which crosscut different non-functional domains has been addressed. A mechanism has been defined to systematically analyze data dependencies to infer control flow constraints. This mechanism helps to enrich the modeled set of interdependencies by discovering even cross-domain interdependencies and thus enables a more precise validation. In addition to the classical validation where constraint violations are directly shown in the model, a guided modeling procedure has been invented. This procedure supports the modeler by showing the next safe modeling steps always resulting in a valid model. Finally, a generator takes the model as input in order to produce code which enforces the modeled composition at runtime. The generator, however, does not produce the implementation of non-functional components which must be implemented manually. Instead, it provides a composition component which takes over the task of integrating and invoking these components in the specified order according to the model. The whole approach has been implemented for web services as a set of Java-based modeling tools and a code transformer which generates either the configuration for an Enterprise Service Bus or, alternatively, a set of aspects implementing the composition component. The aspect-based approach is not only applicable to web services but also generally to component-based software written in Java. Zusammenfassung In der Softwareentwicklung wird im Allgemeinen zwischen funktionalen und nicht-funktionalen Belangen (Concerns) unterschieden. Funktionale Belange beziehen sich auf die Haupt-oder Kernfunktionalität einer Software, wohingegen nicht-funktionale Belange qualitative Eigenschaften repräsentieren. Es wird allgemein akzeptiert, dass funktionale und nicht-funktionale Belange strikt voneinander getrennt werden sollten, um die Wartbarkeit, Verständlichkeit und Wiederverwendbarkeit einer Software zu erhöhen. In komponentenbasierten Softwaresystemen führt diese strikte Trennung sowohl zu funktionalen, als auch zu nicht-funktionalen Komponenten. Web Services sind die, aus heutiger Sicht, gängigste Technologie, um solche komponentenbasierte Softwaresysteme zu implementieren. Web Services verwenden offene Standards und beschreiben wohldefinierte Schnittstellen, die strikt von der Implementierung getrennt sind. Dies ermöglicht es Systeme zu realisieren, die aus lose gekoppelten, plattformunabhängigen Diensten bestehen. Auch nicht-funktionale Belange könnten als solche Dienste realisiert werden, jedoch wird hierzu ein wohldefinierter Mechanismus benötigt, der es erlaubt die nicht-funktionalen mit den funktionalen Komponenten zu integrieren. Dieser Mechanismus sollte weder die Plattformunabhängigkeit noch die lose Kopplung negativ beeinflussen. Weiterhin sollte dieser keine Änderung der bestehenden Funktionalität einer funktionalen Komponente erfordern. Um Wiederverwendbarkeit zu gewährleisten, sollte man zudem ein und dieselbe nicht-funktionale Komponente mit mehreren funktionalen Komponenten und umgekehrt eine funktionale mit mehreren nicht-funktionalen Komponenten kombinieren können. Letzteres erfordert eine wohldefinierte Aufrufreihenfolge der jeweiligen nicht-funktionalen Komponenten. Dies ist in erster Linie damit zu begründen, dass im Allgemeinen unterschiedliche Reihenfolgen zu verschiedenen Ergebnissen führen. Weiterhin ist es nicht möglich eine allgemein gültige Reihenfolge zu definieren, da diese in der Regel spezifisch für eine bestimmte funktionale Komponente ist. Deshalb wird ein Mechanismus benötigt, der es erlaubt solche Reihenfolgen explizit zu spezifizieren. Dieser muss letztendlich durch eine Komponente ergänzt werden, die dafür verantwortlich ist, eine solche Spezifikation zur Laufzeit durchzusetzen. In dieser Doktorarbeit wird die Anwendbarkeit von aktuellen Ansätzen für die Komposition von nicht-funktionalen Belangen in Web Services, mittels konkreter zu erfüllender Anforderungen, analysiert. Das Ergebnis dieser Analyse zeigt, dass es bisher keinen geeigneten Ansatz gibt, der die meisten der Anforderungen in ausreichendem Maße erfüllt. Deshalb wird in dieser Doktorarbeit NFComp, ein neuer, modellgetriebener Ansatz für die Komposition von nicht-funktionalen Belangen in Web Services, vorgestellt. Dabei werden vorwiegend drei unterschiedliche Ziele verfolgt: Erstens zielt NFComp sowohl auf die Spezifikation als auch die Durchsetzung dieser Belange ab. Zweitens deckt NFComp unterschiedliche Sichten auf Web Services ab, in denen nur bestimmte Teile des Services zur Verfügung stehen. Drittens wird sowohl eine abstraktes Rahmenwerk vorgestellt, welches auf alle komponentenbasierten Ansätze angewendet werden x kann, als auch ein konkreter, instanziierbarer Ansatz für Web Services im Speziellen. In dem vorgestellten Ansatz kann ein Modellierer die Komposition von verschiedenen Belangen in Form von nicht-funktionalen Aktionen, die unterschiedliches, abgrenzbares, feingranulares nicht-funktionales Verhalten repräsentieren, spezifizieren. Diese Aktionen, ihre logische Komposition und ihre Assoziation mit funktionalen Komponenten kann dabei graphisch modelliert werden. Das resultierende Modell ist vorwiegend prozessorientiert und stellt direkt dar, in welcher Reihenfolge und für welche Web Services diese Aktionen ausgeführt werden müssen. Der Ansatz ist in sechs Phasen gegliedert: Anforderungsspezifikation, Definition von Aktionen, Aktionen Komposition, Assoziation von Aktionen mit Diensten, Abbildung von Aktionen auf Middlewaredienste und Codegenerierung. In jeder Phase, wird das Modell von unterschiedlichen Benutzern in verschiedenen Rollen bearbeitet und mit neuen Informationen angereichert. Das resultierende Gesamtmodell kann zur Designzeit gegen eine Menge von Einschränkungen (Constraints), die durch verschiedene Arten von in der Aktionendefinitionsphase modellierte Abhängigkeiten (Interdependencies) eingeführt worden sind, validiert werden. In diesem Zusammenhang wurde auch das Problem, Abhängigkeiten zwischen Aktionen, die aus verschiedenen nicht-funktionalen Domänen stammen, zu bestimmen, gelöst. Es wurde ein Mechanismus definiert, der systematisch Datenabhängigkeiten analysiert, um Kontrollflusseinschränkungen daraus zu folgern. Dieser Mechanismus ermöglicht es, das Modell mit neuen Abhängigkeiten, auch solchen zwischen unterschiedlichen nicht-funktionalen Domänen, anzureichern, was eine präzisere Validierung gewährleistet. Zusätzlich zur klassischen Validierung, in der Verletzungen von Einschränkungen direkt im Modell hervorgehoben werden, wurde eine benutzergeführte Modellierungsprozedur konzipiert und umgesetzt. Diese Prozedur unterstützt den Modellierer, indem diese ihm die nächsten sicheren Modellierungsschritte anzeigt, welche immer in einem validen Modell resultieren. Letztendlich dient das Modell dann einem Generator als Eingabe, um daraus Code zu generieren, der das modellierte Kompositionsverhalten zur Laufzeit durchsetzt. Der Generator produziert dabei jedoch nicht die Implementierung der nicht-funktionalen Komponenten. Diese müssen manuell implementiert werden. Stattdessen wird eine Kompositionskomponente zur Verfügung gestellt, die die Aufgabe übernimmt, die nicht-funktionalen Komponente zu integrieren und sie in der Reihenfolge aufzurufen, die im Modell spezifiziert wurde. Der gesamte Ansatz wurde als eine Menge von Modellierungstools und Code Generatoren für Web Services implementiert. Der Code Generator kann, je nach Anforderung eine Konfiguration für einen Enterprise Service Bus oder aber als eine Menge von Aspekten, welche dann zusammen die Kompositionskomponente realisieren, erzeugen. Der aspekt-orientierte
doi:10.1109/ecows.2011.25 dblp:conf/ecows/SchmelingCTM11 fatcat:bdme2x3d75c47gq6eqv2p5r4mu