Context-Aware Configuration

Context-Aware Configuration

Context-aware Configuration DISSERTATION submitted in partial fulfillment of the requirements for the degree of Doktor der Technischen Wissenschaften by Dipl.-Ing. Markus Raab, BSc. Registration Number 00425830 to the Faculty of Informatics at the TU Wien Advisor: Dipl.-Ing. Dr.techn. Franz Puntigam The dissertation has been reviewed by: Yuanyuan Zhou Uwe Aßmann Vienna, 9th October, 2017 Markus Raab Technische Universität Wien A-1040 Wien Karlsplatz 13 Tel. +43-1-58801-0 www.tuwien.ac.at Erklärung zur Verfassung der Arbeit Dipl.-Ing. Markus Raab, BSc. Kandlgasse 7/2/4/8, 1070 Wien Hiermit erkläre ich, dass ich diese Arbeit selbständig verfasst habe, dass ich die verwen- deten Quellen und Hilfsmittel vollständig angegeben habe und dass ich die Stellen der Arbeit – einschließlich Tabellen, Karten und Abbildungen –, die anderen Werken oder dem Internet im Wortlaut oder dem Sinn nach entnommen sind, auf jeden Fall unter Angabe der Quelle als Entlehnung kenntlich gemacht habe. Wien, 9. Oktober 2017 Markus Raab iii Acknowledgements Physics isn’t the most important thing. Love is. — Richard Feynman First of all thanks to all people involved in Elektra. Many people contributed over the years. Others helped by participating in user studies. Special thanks to Kai-Uwe Behrmann and Harald Geyer, who are the pioneer users of Elektra. We had many fruitful discussions about many topics concerning configuration. Thanks to the reviewing committee for finding time. Thanks to the staff of my institute who proofread many of my papers and helped in all aspects around research. I want to give distinct gratitude to Franz Puntigam for guiding me through the work and for being highly responsive to all my concerns and questions. I thank TU Wien for financial support. Furthermore, thanks to the people for helping me with reviews and discussions. In particular, reversely sorted by alphabet, I am grateful to Uwe Zdun, Tianyin Xu, Stefan Winter, Patrick Sabin, Nedko Tantilov, Milan Nosáľ, Maike Löhndorf, Katharina Spiel, Jens Knoop, Helmut Toplitzer, Harald Geyer, Gergö Barany, Geraldine Fitzpatrick, Franz Puntigam, Erik Schnetter, Elisabeth Raab-Steiner, Christian Amsüss, Aotani Tomoyuki, Andreas P. Priesnitz, Andreas Mohrhammer, Andreas Krall, Andreas Falkner, and the anonymous reviewers. I build upon the work of many people who contributed to free software, science, and society. Without them I would not have been able to even start this work. I do apologize to all the people I cannot mention here! Last but not least, I am deeply grateful for the backing I got from my family and friends, especially Natalie Kukuczka and Elisabeth Raab. v Abstract With the help of configuration settings—usually stored in configuration files—applications are highly adaptable. Modern systems give us detailed information about the context the system is situated in. We define context as every information relevant for configuration settings, for example, the location, available hardware, the network settings, settings of other applications, etc. Today, configuration settings and the context are not connected. Adaptations of configu- ration settings to better fit the context happen manually—often in complicated interfaces and without proper feedback on errors. Using a questionnaire survey and a source code analysis, we reveal obstacles why applications rarely account for context: Developers do not have context information readily available and dislike dependences to software that would give them the information. We aim to overcome these problems by introducing a novel system-level configuration specification language, which specifies the relation between context and configuration settings. Including more context into configuration settings improves usability and de- creases misconfiguration. Our configuration specification language orchestrates frontends and backends for unified, context-aware access to configuration settings. We introduce a frontend (an API) that maps via code generation the configuration specification language to context-aware variables. We use it to enable context adaptations in dynamic scopes as suggested by context-oriented programming. The configuration specification language modularizes the system into plugins that build up backends. The modularization miti- gates the previously mentioned applications’ problems of missing context information and unwanted dependences. We implemented different language constructs for the modular configuration specification language to validate our approach. We evaluate the implications of the novel modular abstractions in the configuration specification language in-depth. We discuss emerging tools, debugging support, intro- spection, and development time. Furthermore, we measure the overhead caused by the vii backends and compare solutions, implemented in the frontend and backend, with the result that the overhead in modular backends is small. Despite the context awareness, the frontend enables read access to configuration settings with the run-time efficiency of native variables. Because it is unrealistic that every application gets rewritten to use such type-safe frontends, we demonstrate different ways to connect legacy applications with our backends. With 16 well-known standard applications, such as Firefox, we show the feasibility and practicality of increasing context awareness of configuration settings without modifying any source code. Kurzfassung Software ist mit Hilfe von Konfigurationseinstellungen, welche üblicherweise in Konfi- gurationsdateien gespeichert werden, hochgradig adaptiv. Moderne Systeme beinhalten bereits detaillierte Informationen, in welchem Kontext sich das System gerade befindet. Wir definieren Kontext als jede Information relevant für Konfigurationseinstellungen, zum Beispiel der aktuelle Ort, vorhandene Hardware, Netzwerkkonfigurationen, Konfigu- rationen anderer Programme, etc. Heutzutage sind Konfigurationseinstellungen und Kontext nicht verbunden. Adaptionen von Konfigurationseinstellungen, wie besseres Anpassen an den Kontext, werden manuell durchgeführt – oftmals in komplizierten Schnittstellen und ohne hilfreiche Rückmeldun- gen bei Fehlern. Mit einer in der Arbeit durchgeführten Umfrage und Quelltextanalyse erkannten wir Ursachen dafür, warum Programme derzeit selten Kontext berücksich- tigen: Entwickler haben Informationen über den Kontext nicht bequem verfügbar und vermeiden Abhängigkeiten zu Software, welche die Informationen bereitstellen könnte. Wir zielen darauf ab, diese Probleme durch eine systemnahe Konfigurationsspezifika- tionssprache, welche die Beziehungen zwischen Konfigurationseinstellungen und Kon- text beschreibt, zu lösen. Der Hintergedanke ist, dass die Berücksichtigung von Kontext in den Konfigurationseinstellungen die Benutzerfreundlichkeit erhöht und fehlerhafte Konfigurationseinstellungen reduziert. Unsere Konfigurationsspezifikationssprache orche- striert dabei Frontends und Backends, um den Zugriff auf Konfigurationseinstellungen zu vereinheitlichen. Wir führen ein Frontend (eine Programmierschnittstelle für Entwick- ler) ein, welches mittels Quelltextgenerierung die Konfigurationsspezifikationssprache in kontextsensitive Variablen abbildet und dabei Kontextsensitivität in dynamischen Sichtbarkeitsbereichen ermöglicht. Die Konfigurationsspezifikationssprache modularisiert Quelltexte in Form von Plugins, mit deren Hilfe die Backends aufgebaut werden. Da- durch werden die zuvor genannten Probleme von fehlenden Kontextinformationen in Applikationen und unerwünschten Abhängigkeiten gemindert. Um unseren Ansatz zu ix validieren, haben wir mehrere Sprachkonstrukte einer modularen Konfigurationsspezi- fikationssprache implementiert. Wir haben die Implikationen unserer neuartigen modularen Abstraktionen der Konfigu- rationsspezifikationssprache ausführlich evaluiert. Dabei diskutieren wir Funktionalität zur Introspektion, neu entwickelte Werkzeuge, Analysen zur Fehlerbehebung und Ent- wicklungszeit. Ebenfalls messen wir den durch Backends verursachten Mehraufwand und vergleichen Lösungen, implementiert als Frontends und Backends, mit dem Ergebnis, dass Mehraufwände in modularen Backends gering sind. Trotz Kontextsensitivität ermöglicht das Frontend lesende Zugriffe auf Konfigurationseinstellungen mit der Laufzeit-Effizienz von native Variablen. Da es unrealistisch ist alle existierenden Applikationen auf solche typsicheren Frontends umzuschreiben, demonstrieren wir verschiedene Möglichkeiten, wie bestehende Applikationen ebenfalls an unsere Backends angebunden werden können. Mit 16 bekannten Standardapplikationen, wie etwa Firefox, zeigen wir, dass die Kontext- sensitivität der Konfigurationseinstellungen auch ohne Quelltextänderungen verbessert werden kann. Contents Abstract vii Kurzfassung ix Contents xi 1 Introduction 1 1.1 Challenges in Configuration Access . 2 1.1.1 Stakeholder’s View . 2 1.1.2 System’s View . 3 1.1.3 Context and Beyond . 4 1.1.4 Configuration Integration Problem . 6 1.2 Methodology, History, and Goals . 7 1.2.1 Methodology . 7 1.2.2 Elektra .............................. 8 1.2.3 Elektra’s History . 8 1.2.4 Scientific Gaps . 10 1.2.5 Goals . 12 1.2.6 Limitations and Assumptions . 12 1.3 Solution . 14 1.4 Structure, Research Questions, and Contributions . 17 1.4.1 Introduction . 17 1.4.2 Terminology and Background . 18 1.4.3 Relevance to the Community . 19 1.4.4 Elektra .............................. 20 1.4.5 Frontends . 21 1.4.6 Backends . 21 xi 1.4.7 Implications and Open Topics . 22 1.4.8 Evaluation . 23 1.4.9 Related Work . 25 1.4.10 Conclusion and Future Work . 25 2 Terminology and Background 27 2.1 Configuration

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    379 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us