Verbeteren QVTo- modeltransformaties

Verbeteren QVTo- modeltransformaties
Bij model-driven engineering worden modellen gecreëerd door domeinexperts, die vervolgens met behulp van modeltransformaties worden omgezet in andere modellen of in code. Een taal voor de uitvoering van modeltransformaties is QVT Operational Mappings (QVTo). Maar hoe kunnen we de kwaliteit van QVTo-modeltransformaties beoordelen? En hoe kunnen we proactief modeltransformaties van hogere kwaliteit ontwikkelen?
Christine M. Gerpheide
Model-driven engineering (MDE) wordt gebruikt om zeer betrouwbare software te ontwikkelen en biedt voordelen van analyse tot codegeneratie (Stahl and Voelter, 2006). In MDE worden modellen gecreëerd door domeinexperts en vervolgens omgezet in andere modellen of in code, met behulp van modeltransformaties. Een taal voor de uitvoering van modeltransformaties is QVT Operational Mappings. QVTo is gedefinieerd in de Object Management Group (OMG)-standaard voor model-to-model transformatietalen, kortweg MMT (OMG, 2011). Een voorbeeld van een eenvoudige maar complete transformatie wordt gegeven in figuur 1 .
Figuur 1. Listing van een QVTo-modeltransformatie
 
QVTo wordt thans gebruikt in de academische wereld1 en in de industrie (France Telecom en ASML). Met name ASML2, toonaangevend leve-rancier van complexe lithografiesystemen voor de halfgeleiderindustrie, gebruikt QVTo als primaire taal voor de uitvoering van MMT’s. Momenteel heeft ASML tienduizenden regels QVTo-code om activiteiten te ondersteunen, variërend van realtime scheduling-analyse tot servocontroller-initialisatie tijdens het opstarten van de machine (Schiffelers et al, 2012). Hoewel ontwikkelaars van general-purpose languages (GPL’s) allerlei definities hebben opge steld aan de hand waarvan kan worden vastgesteld of een stukje code van hoge of lage kwaliteit is, bestaan zulke kwaliteitsindicatoren nog niet voor QVTo. Gezien de vele specifieke taalkenmerken van QVTo is het zelfs onduidelijk of de kwaliteitseigenschappen voor traditionele talen überhaupt van toepassing zijn op QVTo. Dit gebrek aan gestandaardiseerde en gecodificeerde best practi ces is eerder al aangemerkt als een van de grootste uitdagingen voor het beoordelen van de kwaliteit van modeltransformatie (Syriani and Gray, 2012). Daarom richten we ons in dit onderzoek op twee onderzoeksvragen. Ten eerste, hoe kunnen we de kwaliteit van QVTo-modeltransformaties beoordelen? Ten tweede, hoe kunnen we proactief modeltransformaties van hogere kwaliteit ontwikkelen?
Verkennende studie
Om de belangrijkste aspecten voor kwaliteit van QVTo te identificeren, volgen we een bot tom-up-benadering. Op deze manier worden de belangrijkste kwaliteitsaspecten voor QVTo gede-finieerd. Eerst voeren we een brede verkennende studie uit om helder te krijgen welke substantiële aspecten van invloed zijn op de kwaliteit van QVTo-transformaties. De verkennende studie richt zich op het verzamelen van kwalitatieve data. Omdat het produceren van ‘high quality code’ sterk afhangt van de manier waarop ontwikkelaars hun code schrijven, geeft deze kwalitatieve data waardevolle inzichten in de complexe afwegingen van ontwikkelaars. (Seaman, 1999). Om te garanderen dat de verkennende studie zowel bruikbare gegevens oplevert als voortbouwt op eerder onderzoek en ervaring, maken we gebruik van een ‘triangulair’ benadering met drie onderdelen. Eerst zijn vier interviews met QVTo-experts bij ASML gehouden met vragen over het ontwikkelen met QVTo. Hierbij werden state-of-the-art interviewtechnieken gebruikt, in het bijzonder de aanbevelingen van Seaman (1999), Hove en Anda (2005).
Een voorbeeld van een van de inzichten die de interviews opleverden, is dat een transformatie het makkelijkst werkt als zijn structuur de hiërarchie weerspiegelt van één van de input-of outputmodellen. 
 
 
Het tweede onderdeel was een uitgebreide studie van bestaand materiaal. Deze studie omvatte niet alleen een systematische literatuurstudie (Kitchenham et al, 2009), maar ook andere bronnen, zoals online forums.
Derde onderdeel was het leren werken met QVTo door de auteur. Hiervoor werd een reeks QVTo-handleidingen geraadpleegd (bijvoorbeeld Stahl and Voelter, 2006) waarbij werd ingezoomd op alle aspecten die verband hielden met de kwaliteit van QVTo-code.
Het kwaliteitsmodel
De kwalitatieve gegevens uit het verkennende onderzoek vormde de basis voor wat in de klassieke theorie bekend staat als de constante vergelijkingsmethode (Seaman, 1999). Alle kwaliteitseigenschappen worden uit de data gedestilleerd. Vervolgens zijn vergelijkbare aspecten gecombineerd in een iteratief proces totdat alle kwaliteitsaspecten afzonderlijk benoembaar zijn. Elk aspect is vervolgens gelabeld met kwaliteitsdoelen, waarmee de primaire kwaliteiteigenschappen voor QVTo-transformaties gedefinieerd zijn.
In figuur 2 wordt het QVTo-kwaliteitsmodel (ISO/ IEC 25010, 2011) dat uit de verkennende studie naar voren kwam gepresenteerd. Het bestaat uit 37 kwaliteitseigenschappen en vier kwaliteits-doelen. De eigenschappen zijn geclassificeerd als specifiek voor QVTo, of voor MMT, of als ‘van toepassing’ op GPL’s.
Uit het kwaliteitsmodel komt naar voren dat ‘begrijpbaarheid’ en ‘onderhoudbaarheid’ de meest aanwezige kwaliteitsdoelen zijn voor QVTo-programmeurs. Dit ligt voor de hand, maar omdat ‘begrijpbaarheid’ en ‘onderhoudbaarheid’ moeilijker zijn te omschrijven dan ‘prestatie’ of ‘functionaliteit’ zijn er meer eigenschappen nodig. Sommige eigenschappen in het model zijn bijzonder interessant. Bijvoorbeeld ‘Little imperative programming’ lijkt misschien niet intuïtief, omdat QVTo speciaal is ontworpen om imperatieve constructies te ondersteunen. Maar onze verkennende studie suggereert dat hoewel ze inderdaad handig zijn voor complexer transformaties, deze constructies moeten worden geminimaliseerd om de transformatie begrijpelijker te maken.
Duidelijk wordt ook dat het model bottom-up is gebouwd. Het model bevat bijvoorbeeld de eigenschap ‘Small init sections’, en ‘Few end sections’. Dit weerspiegelt dat de hoeveelheid code binnen ‘init’-secties van invloed is op de kwaliteit, terwijl voor ‘end’-secties juist geldt dat de frequentie van gebruik de kwaliteit beïnvloedt.
In vergelijking met andere kwaliteitsmodellen heeft ons model enkele specifieke eigenschap pen. Zeker wanneer het wordt vergeleken met top-down-benaderingen die alleen op theorie gericht zijn. De verzameling van Van Amstel et al (2010) bevat ‘# Abstract mappings’, terwijl ons model ‘Inheritance usage matches metamodel’ heeft. Daarom pleiten wij voor het gebruik van bottom-up-benaderingen in toekomstig kwaliteitsonderzoek.
Figuur 2. QVTo-kwaliteitsmodel als resultaat van de verkennende studie F, B, P en O geven de kwaliteitsdoelen aan van respectievelijk Functionaliteit, Begrijpelijkheid, Prestatie, en Onderhoudbaarheid; Plus (+) betekent dat de eigenschap het doel verbetert en minus (-) betekent dat het het doel verslechtert; ‘LOC’ betekent lines of code; ‘Function chain’ betekent een ketting van functie-aanroepen; ‘Conuence’ is een eigenschap van declaratieve talen waar output onafhankelijk is van orde van uitvoering
 
 
Validatie van het kwaliteitsmodel
We bespreken eerst de nadelen van verwante modellen (bijvoorbeeld Van Amstel, 2012; Lehrig, 2012). Daar worden kwaliteitsmodellen gevalideerd waar deskundigen codevoorbeelden beoordeelden op basis van kwaliteitsdoelen die later werden gecorreleerd met de kwaliteitmetrics. Bij zo’n aanpak kunnen eigenschappen alleen geëvalueerd worden aan de hand van grote sets codevoorbeelden waarvoor ook veel deskundigen nodig zijn. Dit leidt vooral tot lage correlaties voor zeldzamer eigenschappen en hoge intercorrelaties tussen gangbare eigenschappen.
Wij stellen daarom een nieuwe validatie-aanpak voor kwaliteitsmodellen voor. Uitgaand van onze veronderstelling dat ontwikkelaars zelf het best in staat zijn om te bepalen welke transformatie van hoge kwaliteit is, valideren we ons kwaliteitsmodel op basis van een enquête onder ontwikkelaars. Hun perceptie van ‘kwaliteit’ is daarbij leidend. Door elke eigenschap op zich te evalue-ren, ontstaat een zeer fijnmazig model.
De validatie-enquête bestond uit een vraag over elk kwaliteitsaspect, waarvan een voorbeeld is weergegeven in figuur 3. Vijftien QVTo-deskundigen vulden de enquête in, waaronder negen uit de industrie, vijf studenten, en een van de vier primaire ontwikkelaars van de Eclipse QVTo-implementatie.
 
Figuur 3. Voorbeeldvraag van validatie-enquête
 
We definiëren vervolgens twee criteria waaraan het duo ‘eigenschap/doel’ moet voldoen, voordat we het beschouwen als gevalideerd door de enquête. Ten eerste moet de mediaan van de antwoorden tenminste ‘enigszins vergroot’ zijn. Ten tweede moet ten minste 75 procent van de reacties minstens ‘weinig tot geen effect’ hebben. Van onze oorspronkelijke 37 eigenschappen, zijn 26 gevalideerd als belangrijk voor ten minste één kwaliteitsdoel.
 
Ontwikkelaar tooling
Het QVTo-kwaliteitsmodel heeft voornamelijk betrekking op onze eerste onderzoeksvraag. We kunnen het kwaliteitsmodel vervolgens gebruiken voor onze tweede onderzoeksvraag: hoe kunnen we QVTo-transformaties op een hoger niveau brengen? Omdat ontwikkelaars de transformaties gebruiken, focussen wij specifiek op tooling voor ontwikkelaars.
Uitgaand van ons kwaliteitsmodel kan worden vastgesteld dat een veelheid aan tools te ontwikkelen is. Omdat de ‘High test coverage’-en ‘Little dead code’-eigenschappen goed gevalideerd zijn, hebben wij ervoor gekozen een tool voor testen (ook wel ‘code covering’ genoemd) te ontwikkelen. Mede omdat dit tijdens de expertinterviews door elke ontwikkelaar als belangrijk werd aangemerkt.
Tool implementatie
Bij ASML test men transformaties met behulp van unit-tests en het JUnit-framework. In figuur 4 is een testproces weergegeven. Omdat binnen QVTo taalconstructies bestaan die in andere talen niet voorkomen, definiëren wij vijf criteria voor QVTo-modeltransformaties: mapping, helper, constructor, functie en expression.
Figuur 4. Uitvoering van unit-tests voor modeltransformaties (Lin et al, 2005)
 
QVTo-tool voor testen wordt gebouwd als een geïntegreerde plugin voor Eclipse 3 (figuur 5). De tool verzamelt gegevens uit de visitor-klasse van de QVTo-engine. De visitor genereert vervolgens een lijst van alle bezochte transformatieelementen, die met behulp van een augmented binaire boomstructuur als een range set wordt gepresenteerd.4 Wanneer het JUnit-testproces klaar is, presenteert Eclipse-plugin de resultaten aan de gebruiker.
Figuur 5. High-level architectuur van de QVTo-testplugin
 
Bij het bouwen en implementeren van de tool werd nauw samengewerkt met de core developers van de Eclipse QVTo-engine. Dat leidde ertoe dat een aantal codepatches aan de QVTo-engine werd toegevoegd.5,6,7 Deze patches maken het mogelijk om niet alleen onze tool, maar ook toekomstige tools, zoals een geïntegreerde profiler, makkelijk met de QVTo-engine te integreren. De patches zijn inmiddels opgenomen in de Eclipse Luna-versie, uitgebracht in juni 2014.
In figuur 6 is een screenshot van een testset weergegeven. Onderaan het scherm wordt de QVTo coverage view getoond. De linkerkolom is een hiërarchische weergave van de transformaties tijdens de test. De kleur van de cellen in de QVTo coverage view geven de ‘coverage’ aan. Wanneer de gebruiker dubbelklikt op de modulenaam, wordt het bestand geopend in de Eclipse-editorview en wordt helder in welke mate een transformatie is uitgevoerd.
Figuur 6. Coverage- en editorviews na een testuitvoering

Kleine groene en rode markers verschijnen ook aan de rechterkant van de editor. Daarmee hebben gebruikers een overzicht van de markering van het totale bestand, een bijzonder handige functie voor grote transformaties. Om het gereedschap breder inzetbaar te maken, is de tool ook opensource gemaakt onder de Eclipse Public License8 en online geplaatst, zodat iedereen de tool gratis kan downloaden en gebruiken. Aangezien de broncode beschikbaar is kunnen andere ontwikkelaars ook nieuwe functies toevoegen. Te hopen is dat ons gereedschap in de Eclipse-project wordt opgenomen door de Mars-versie in 2015.
Evaluatie tool
Omdat we nauw contact hebben met de QVTO-gebruikers konden we een kwalitatieve casestudie ook gebruiken voor evaluatie. Met name het ASML-team gebruikte de tool op hun huidige QVTo-projecten waarna onder het team feedback werd verzameld. Gebruikerfeedback is essentieel omdat zij als geen ander kunnen aangeven hoe nuttig de tool in de praktijk is.
De testperiode duurde in totaal zeven weken. De meest voorkomende use case was het controleren welke code in bepaalde transformaties niet werd bezocht. Daarvoor bleek de kleurenindicatie in de overlay-functie een handig hulpmiddel.
De tool is door een ontwikkelaar ook gebruikt bij de voorbereiding van een user story (Beck et al, 2001) om te beschrijven hoe men een specifieke taak moet voltooien. Bij het opstellen van de user story voerde de ontwikkelaar de hele testsuite uit en keek daarbij naar de mate waarin modules beïnvloed zouden worden. Hij maakte helder op welke delen van de code extra testcases moesten worden uitgevoerd. Dat toonde aan dat het tool ook daadwerkelijk inzetbaar is voor het detecteren van ‘Little dead code’.
Ondanks de relatief beperkte functionaliteit van de tool verklaarden alle ontwikkelaars dat zij de tool al “zeer nuttig” vonden en dat ze hem “absoluut zullen blijven gebruiken”. Ze meldden ook geen merkbaar verschil in testduur als de tool ook werd ingezet om de coverage te detecteren. Het installeren van de tool is ook toegevoegd aan hun ‘way of working’-document, en daarmee nu een officieel onderdeel van hun ontwikkelproces.
Conclusie
Onze bottom-up-benadering combineerden we met literatuurstudie, interviews met experts, en introspectie. Daarna werd een QVTo-kwaliteitsmodel ontwikkeld dat de meest belangrijke aspecten voor het werken met QVTo benoemt. Het kwaliteitsmodel werd vervolgens gevalideerd door het te toetsen aan de ervaring van ontwikkelaars. Daarnaast werden ook ervaringen van eerder onderzoek gebruikt, waardoor een fijnmazige selectie van kwaliteitsaspecten mogelijk werd. Van de 37 eigenschappen in ons model werden er 26 gevalideerd als belangrijk voor de kwaliteit van QVTo-transformaties. Van de gevalideerde eigenschappen zijn er negen specifiek voor MMT of QVTo. Dat betekent dat in de kwaliteitsmodellen ingericht op andere talen belangrijke eigenschappen voor QVTo-kwaliteit zullen ontbreken. Bovendien kan onze aanpak voor de bouw van het kwaliteitsmodel en onze validatie-aanpak worden toegepast op alle softwarekwaliteitsmodellen.
Vervolgens hebben we, met behulp van ons kwaliteitsmodel, onderzocht of de kwaliteit van modeltransformaties proactief te verbeteren was. Hiervoor werd ingezoomd op de ontwikkeling van de tooling. Met name werd een tool voor het testen van QVTo ontwikkeld. De tool werd in de praktijk geëvalueerd door een team gebruikers en vervolgens werd een kwalitatieve evaluatie uitgevoerd. Niet alleen is de tool nu in gebruik bij een team binnen ASML, maar de tool is ook opensource gemaakt en dus vrij toegankelijk voor de QVTo-gemeenschap. Het ontwikkelingsproces en de evaluatiemethoden kunnen ook worden toegepast bij toekomstige software-tooling. Voor een uitbreiding van dit onderzoek, zie Gerpheide (2014).
Christine Gerpheide (cgerpheide@gmail.com) is software development engineer bij Amazon Web Services.
Referenties
(1) Karlsruhe institute of technology - QVT. https://sdqweb.ipd.kit.edu/wiki/QVT
(2) ASML N.V. http://www.asml.com
(3) Eclipse plugin for measuring QVTo test coverage. https://github.com/phoxicle/qvto-coverage
(4) Guava: Google core libraries for Java 1.6+.https://code. google.com/p/guava-libraries/
(5) Patch for QVTo engine: Adding a visitor decoratorclass. https://github.com/eclipse/qvto/commit/51028ae23d78e9d2b-783232125448745...
(6) Patch for QVTo engine: Adding hooks for third-party decorators. https://github.com/eclipse/qvto/commit/8160dd9f-29509d7051e4961b36eeaea6...
(7) Patch for QVTo engine: Fixing visitation of imported transfor-mations. https://github.com/eclipse/qvto/commit/d1aa7b9f5ca4c35d36f-70031c889b7fe...
(8) Licenses. http://choosealicense.com/licenses/
Literatuur
Amstel, M.F. van (2012). Assessing and improving the quality of model transformations. PhD thesis, Technische Universiteit Eindhoven.
Amstel, M.F. van, M.G.J. van den Brand & P.H. Nguyen (2010). Metrics for model transformations. Proceedings of the Ninth Belgian-Netherlands Software Evolution Workshop (BENEVOL 2010).
Beck, K, M. Beedle, A. van Bennekum, A. Cockburn, W. Cunningham, M. Fowler, J. Grenning, J. Highsmith, A. Hunt, R. Jeffries, J. Kern, B. Marick, R.C. Martin, S. Mellor, K. Schwaber, J. Sutherland & D. Thomas (2001). Manifesto for agile software development.
France Telecom (2014). SmartQVT. https://yoxos.eclipsesource. com/yoxos/node/fr.tm.elibel.smartqvt.feature.group
Gerpheide, C.M. (2014). Assessing and improving quality in QVTo model transformations.
Master’s thesis, Technische Universiteit Eindhoven, http://alexan-dria.tue.nl/extra1/afstversl/wsk-i/gerpheide2014.pdf
Hove S.E & B. Anda (2005). Experiences from conducting semi-structured interviews in empirical software engineering research. METRICS, IEEE, 10-23.
ISO/IEC 25010 (2011). Systems and software quality requirements and evaluation (SQuaRE) - System and software quality models.
Kitchenham, B., O.P. Brereton, D. Budgen, M. Turner, J. Bailey & S. Linkman (2009). Systematic literature reviews in software engineering - a systematic literature review. Information and software technology, 51(1):7-15.
Kolahdouz-Rahimi, S., K. Lano, S. Pillay, J. Troya & P. van Gorp P (2014). Evaluation of model transformation approaches for model refactoring. Science of Computer Programming, 85:5-40.
Lehrig, S. (2012). Assessing the quality of model-to-model transformations based on scenarios. Master’s thesis, University of Paderborn, Zukunftsmeile 1.
Lin, Y, J. Zhang & J. Gray (2005). A testing framework for model transformations. Model-driven software development, Springer, 219-236.
OMG (2011). MOF 2.0 Query/View/Transformation Spec. V1.1
Schiffelers, R.R., W. Alberts & J.P. Voeten (2012). Model-based specification, analysis and synthesis of servo controllers for lithoscanners. Int. Workshop on Multi Paradigm Modeling, ACM, 55-60.
Seaman, C.B. (1999). Qualitative methods in empirical studies of software engineering.
IEEE Transactions on Software Engineering 25(4):557-572.
Siquiera, F.L. (2014). Hello world transformation. http://www.levysiqueira.com.br/2011/01/eclipse-qvto-helloworld/
Stahl, T. & M. Voelter (2006). Model-driven software development. John Wiley & Sons Chichester.
Syriani, E. & J. Gray (2012). Challenges for addressing quality factors in model transformation. International Conference on Software Testing (ICST), IEEE, 929-937.
 

Tag

Onderwerp



Niet gevonden? Vraag het de redactie!

Heeft u het antwoord op uw vraag niet gevonden, of bent u op zoek naar specifieke informatie? Laat het ons weten! Dan zorgen we ervoor dat deze content zo snel mogelijk wordt toegevoegd, of persoonlijk aan u wordt geleverd!

Stel uw vraag