Research

Research Plan

Our research is centered around software quality and education: how can we achieve that students learn to design and implement software that adheres to the Swebok software design principles?
We (Harrie Passier,. Lex Bijlsma, Harold Pootjes and me) explain our ideas in this research proposal: Software quality

Graduated Msc students

Ed van Doorn

Design pattern detection

Doelstelling van dit onderzoek is het verrichten van een survey naar de mogelijkheden om design patterns in een UML class diagram te herkennen en indien mogelijk een prototype te bouwen dat design patterns herkent en feedback geeft op design pattern die geheel of gedeeltelijk in een ontwerp voorkomen.

De literatuur vermeldt een vijftal methodes waarmee design patterns herkend kunnen worden. Een van deze methodes is gebaseerd op het gebruik van 4-tuples, waarmee relaties tussen classes en interfaces worden vastgelegd. De essentie, t.w. het vinden van de overeenkomst tussen een design pattern en het te onderzoeken class diagram, is nauwelijks beschreven.

Deze methode is met succes geïmplementeerd.

In een class diagram met enkele tientallen classes en relaties zijn 17 verschillende design patterns binnen één seconde herkend. Het class diagram is afkomstig van de ontwerptool ArgoUML.

Er wordt op twee punten feedback gegeven: design patterns die slechts gedeeltelijk in een ontwerp voorkomen en relaties die geen deel uitmaken van een herkend design pattern.

Het prototype is vergeleken met een viertal programma’s die in de literatuur zijn beschreven. Slechts één programma kan feedback geven die bovendien uitgebreider is dan de feedback van het prototype. Het prototype herkent sneller en meer design pattern dan de vier programma’s.

Ivan Timmers

Improve software design understanding

In de laatste decennia, software projecten zijn significant toegenomen in grootte. Het wordt steeds moeilijker om de software te begrijpen. Vaak is er ontwerp documentatie voorhanden, maar vaak is deze verouderd. Veel software engineers vertrouwen hierdoor op visualisatie tools die hen helpen de software te doorgronden. Wanneer de software projecten groter worden introduceren deze traditionele technieken problemen.

Met dit onderzoek leveren wij een software tool die laat zien hoe de software begrijpbaarheid kan worden verbeterd. Wij geloven dat 3D technieken en de koppeling van source-code metrieken aan UML klasse diagrammen kunnen bijdragen aan deze visie.

We hebben een prototype software tool ontwikkeld die mogelijke antwoorden geeft op de huidige visualisatie problemen. Deze problemen zijn opgedeeld in 3 verschillende domeinen: visualisatie, navigatie en filteren.

Een manier om bestaande 2D UML klasse diagrammen te converteren naar 3D is ontwikkeld. Naast het UML model hebben we het mogelijk gemaakt of source-code informatie weer te geven als metriek metafoor en deze te koppelen aan het UML klasse diagram.

De validatie resultaten laten zien dat de koppeling van UML klasse diagrammen en source-code metrieken bijdragen aan de begrijpbaarheid van het software ontwerp.

Stan Hanique

Test Maintainability
Hoe tests weer up-to-date te krijgen
De doelstelling van het onderzoek is het automatisch geven van een advies over hoe tests weer up-to-date gemaakt kunnen worden als deze door het uitvoeren van een refactoring op de broncode niet meer consistent zijn. Hiervoor moet, na refactoring, in kaart worden gebracht hoe de broncode is veranderd en wat de invloed van deze verandering is op de tests.

Hedendaagse software verandert continu, met als gevolg onderhoudsmodificaties aan de broncode. Naast het oplossen van bugs (correctief onderhoud) of het toevoegen van functionaliteiten (perfectief onderhoud), speelt refactoring (preventief onderhoud) ook een belangrijke rol. Bij preventief onderhoud is het doel om de interne structuur van de software te verbeteren en daarbij het gedrag (de werking) intact te laten. Hierdoor wordt de broncode onder andere duidelijker en beter onderhoudbaar.

In Agile software-ontwikkelprocessen ligt een grote nadruk op (unit)tests. De tests ondersteunen de ontwikkelaar tijdens de softwareontwikkeling en helpen bij het onderhouden van de code kwaliteit en gedrag. Het kan voorkomen dat een refactoring op de broncode de bijbehorende tests beïnvloed. Hierdoor is het mogelijk dat tests niet meer consistent zijn met de broncode. Het bepalen van de impact van een refactoring op de tests is een invalshoek van test onderhoud waar nog weinig onderzoek naar is verricht.
AST-Rewrites

Dit onderzoek maakt gebruik van een bestaande plug-in, die in staat is om veranderingen in de code als gevolg van een refactoring op te vangen als zogenoemde AST-Rewrites. AST-Rewrites zijn structurele herschrijvingen van de Abstract Syntax Tree (AST). De AST representeert de broncode; de knopen in de AST zijn de verschillende broncode elementen, bijvoorbeeld een klasse of een methode. Een refactoring uit zich daarmee als een serie veranderingen (herschrijvingen) van knopen in de AST.

Tijdens het onderzoek is een prototype plug-in ontwikkeld die, voor een aantal refactorings, de gebruiker kan voorzien van een correct advies. Dit advies omvat een indicatie van de stappen die nodig zijn om de tests weer volledig te maken.