Modularisierung Virtueller Maschinen Implementierung Und Evaluierung Einer Architekturbeschreibungssprache
Total Page:16
File Type:pdf, Size:1020Kb
Fachgebiet Software‐Architekturen Hasso‐Plattner‐Institut Universität Potsdam Masterarbeit Modularisierung virtueller Maschinen Implementierung und Evaluierung einer Architekturbeschreibungssprache Stefan Marr 30.09.2008 Betreuung Dr. Michael Haupt Prof. Dr. Robert Hirschfeld i DANKSAGUNG Ich möchte mich bei allen bedanken, die zum Gelingen dieser Arbeit beigetragen haben. Ganz besonders möchte ich mich bei Dr. Michael Haupt und Prof. Dr. Robert Hirschfeld für ihre Betreuung und ihre Unterstützung beda nken, die mir sehr dabei geholfen hat, dieser Arbeit zu einem erfolgreichen Abschluss zu bringen. Darüber hinaus möchte ich mich bei den Studenten bedanken, die an den Vor‐ lesungen Virtuelle Maschinen in den Jahren 2007 und 2008 teilgenommen und mir ihre Erweiterungen der CSOM‐VM für diese Arbeit zur Verfügung gestellt und somit die technische Grundlage für meine Untersuchungen gelegt haben. Bei Michael Perscheid bedanke ich mich sehr für die Betreuung der Kontrollgruppe des Experiments. Mein Dank geht auch an Arne Bergmann, Juri Engel, Frank Feinbube, Gregor Gabrysiak, Jan Klimke, Murat Knecht, Thomas Kowark, Daniel Richter, Michael Seegers und Robert Wierschke für ihre Mitwirkung als Probanden am Experiment. Abschließende möchte ich mich bei Tobias Pape und Tobias Vogel für das Korrek‐ turlesen dieser Arbeit und ihre zahlreichen Anregungen und Verbesserungsvorschläge bedanken. ii iii ABSTRACT Today, high‐level language virtual machines are custom‐made special purpose systems optimized for specific domains like embedded devices. Their implementation suffers from high complexity, strongly intertwined subsystems and little maintainability. This is caused by insufficient modularization techniques failing to represent the system ar‐ chitecture in the code. To overcome this situation, the Virtual Machine Architecture Definition Language (VMADL) has been proposed. In this work, the language features of VMADL are investigated and a VMADL compiler is implemented to conduct a case study on an existing Smalltalk VM written in C named CSOM. The aim of this case study is to test the language on CSOM and to modularize it in a way that it is possible to build a product family of VMs out of it, to be able to benefit from a product‐line approach for customizing VMs. In a first step, CSOM is reverse en‐ gineered and several feature implementations are analyzed for their specific require‐ ments on modularization. Based on this examination, a CSOM specific feature‐oriented class definition language is added to VMADL to allow a completely modularized imple‐ mentation of all analyzed features. Afterwards, the case study is evaluated using several metrics to prove that the code overhead caused by VMADL is minimal and necessary for the architecture and modu‐ larization. Furthermore, it is shown that there is no negative impact on the runtime performance of the system. To prove the positive influence of VMADL on architectural comprehension and maintainability, an experiment with students is designed and con‐ ducted. Eventually, this work demonstrates how VMADL can be used to explicitly ex‐ press the architecture of a VM in the code, improve modularization, and add the neces‐ sary variability to build a VM product family. iv v ZUSAMMENFASSUNG Virtuelle Maschinen für Hochsprachen werden meist als Spezialanfertigungen für einen bestimmten Zweck entwickelt. Sie sind jeweils für genau ein Anwendungsgebiet z. B. den Einsatz im Bereich eingebetteter Systeme optimiert. Ihre Implementierungen sind aufgrund der hohen Komplexität und engen Verknüpfungen der einzelnen Systemteile nur unzureichend modularisiert. Daher ist die Architektur solcher Systeme nur schlecht erkennbar und der Wartungsaufwand für sie entsprechend stark erhöht. Um statt einzelnen Spezialanfertigungen im Bereich der virtuellen Maschinen auf Techniken für die Entwicklung von Produktfamilien zurückgreifen zu können, wurde die Virtual Machine Architecture Definition Language (VMADL) vorgeschlagen. In dieser Arbeit werden ihre Sprachmittel untersucht, ein Compiler für die Verwendung von VMADL in Verbindung mit C implementiert und die Sprache in einer Fallstudie auf eine CSOM ge‐ nannte, bereits vorhandene Smalltalk‐VM angewandt. Das Ziel der Fallstudie ist es, die Sprachmittel von VMADL zu testen und CSOM so zu modularisieren, dass es möglich ist, eine Produktfamilie von VMs zu entwickeln. Dazu wird im ersten Schritt ein Reverse‐Engineering für CSOM durchgeführt und ver‐ schiedene Erweiterungen auf ihre jeweils spezifischen Anforderungen an Modularisierungsmechanismen untersucht. Daraus ergibt sich der Bedarf für einen featureorientierten Ansatz, der mit der für CSOM entworfenen Klassenbeschreibungs‐ sprache ClassDL ebenfalls vorgestellt wird. Zum Abschluss werden die aus den einzel‐ nen Erweiterungen extrahierten Features und ihre Modularisierung mit VMADL be‐ trachtet. Zur Evaluierung der Fallstudie werden verschieden Metriken genutzt, um zu zeigen, dass der zusätzliche Quelltext durch VMADL minimal ist und allein durch die für das Architekturverständnis und die Modularität benötigten Konstrukte entsteht. Die Untersuchungen zeigen zudem, dass kein negativer Einfluss auf die Performance vor‐ handen ist. Zusätzlich wird ein Experiment entworfen und durchgeführt, das zeigen soll, ob Probanden, bei Verwendung von VMADL das gestellte Problem schneller lösen können und dabei die bestehende Architektur weniger beeinflussen, als dies ohne VMADL der Fall wäre. Letztendlich zeigt diese Arbeit, dass mit VMADL die Architektur einer virtuellen Maschine durch höhere Modularität verbessert und durch die zusätz‐ liche Flexibilität als Produktfamilie gestaltet werden kann. vi vii ERKLÄRUNG Hiermit erkläre ich, dass ich zum Verfassen dieser Arbeit keine anderen Quellen und Hilfsmittel als die angegebenen verwendet habe. Potsdam, den 22.09.2008 Stefan Marr viii ix INHALTSVERZEICHNIS Danksagung ........................................................................................................................................................ i Abstract .............................................................................................................................................................. iii Zusammenfassung .......................................................................................................................................... v Inhaltsverzeichnis .......................................................................................................................................... ix Abbildungsverzeichnis ........................................................................................................................... xii Quelltextverzeichnis ............................................................................................................................... xii Tabellenverzeichnis ................................................................................................................................ xii 1 Einleitung .................................................................................................................................................. 1 1.1 Zielsetzung der Arbeit ............................................................................................................... 1 1.2 Grundlage dieser Arbeit ............................................................................................................ 1 1.3 Beitrag dieser Arbeit .................................................................................................................. 2 1.4 Struktur der Arbeit ..................................................................................................................... 2 2 Implementierung virtueller Maschinen ....................................................................................... 5 2.1 Abstraktionsgewinn durch virtuelle Maschinen ............................................................ 5 2.2 Kom plexität in virtuellen Maschinen .................................................................................. 6 2.2.1 Anforderungen an virtuelle Maschinen .................................................................... 6 2.2.2 Spezialanfertigungen, optimiert für einzelne Einsatzgebiete.......................... 6 2.2.3 Implementierungsstrategien......................................................................................... 7 2.3 Arch itektur virtueller Maschinen ......................................................................................... 8 2.3.1 Grundbestandteile ............................................................................................................. 8 2.3.2 Modulabhängigkeiten und Interaktionen ............................................................. 10 2.3.3 Auswirkungen auf die Modularisierung ................................................................ 12 2.4 Architekturbeschreibungssprachen ................................................................................. 14 3 VMA DL .................................................................................................................................................... 17 3.1 Einführung ................................................................................................................................... 17 3.2 Sprachumfang ............................................................................................................................ 18 3.3 Testlauf für VMADL mit C und Aspicere2 ......................................................................