Minder fouten in features door delta modelling

Bij het programmeren van nieuwe features in software worden makkelijk veel fouten gemaakt. De code van meerdere features grijpt vaak in op dezelfde plek, en zo  kan de code van de ene feature soms ongemerkt  die van een andere overschrijven.

Publicatiedatum
17 november 2014

Bij het programmeren van nieuwe features in software worden makkelijk veel fouten gemaakt. De code van meerdere features grijpt vaak in op dezelfde plek, en zo  kan de code van de ene feature soms ongemerkt  die van een andere overschrijven. Hierdoor ontstaan bugs, die ertoe leiden dat software later op de markt komt en duurder is. Michiel Helvensteijn, promovendus van het Centrum Wiskunde & Informatica (CWI) te Amsterdam, onderzocht manieren om dit soort fouten te voorkomen. Op woensdag 12 november promoveerde hij aan de Universiteit Leiden op zijn proefschrift 'Abstract Delta Modeling – Software Product Lines and Beyond'. De resultaten zijn interessant voor software engineers en de industrie. 

Software wordt steeds groter en wordt ook door steeds meer ontwikkelaars gemaakt, waardoor het steeds moeilijker uit te breiden is. Om te voorkomen dat de software te complex wordt, moeten features idealiter elk tot één module worden samengevoegd, zodat code van verschillende features netjes gescheiden is. In realiteit moet code juist over verschillende locaties in de software worden verspreid en gemixt met die van andere features. Michiel Helvensteijn ontwikkelde samen met collega’s de formele methode van Abstract Delta Modelling (ADM) om dit probleem te kunnen lossen.

De promovendus liet bijvoorbeeld zien hoe een feature met één deltamodule geformuleerd kan worden. Zo’n deltamodule verandert bestaande code van buitenaf en geeft aan welke code waar neergezet moet worden of welke bestaande code aangepast moet worden. Helvensteijn maakte het mogelijk dat ontwikkelaars relaties tussen delta's kunnen aangegeven, zoals welke delta een andere mag overschrijven. Daarnaast ontwierp hij een conflictoplossend model. Helvensteijn: "Als geen van de delta’s 'de baas' is, krijgt de ontwikkelaar nu een duidelijke foutmelding, terwijl in eerdere technieken de ene module stilletjes de code van de ander kon overschrijven. Als ontwikkelaars deze methode voor conflict resolution volgen, scheelt het hun veel bugs. De software is dan modulair en makkelijk te onderhouden".

De promovendus  vervolgt: "Software Product Line Engineering heeft hier in het bijzonder veel bij te winnen. Hierin kan dezelfde code-base gebruikt worden voor softwaresystemen die elk een ander maar vaak overlappende verzameling features hebben. Een specifiek systeem kan dan gegenereerd worden door een selectie van features te maken: 'automated product derivation'. ADM kan hier helpen om de code 'componeerbaar' te maken, bijvoorbeeld voor meerdere software edities".

De nieuwe methode is in de praktijk getest en werkt goed. Het promotieonderzoek is mede gefinancierd door het EU HATS-project, waarin onderzoeksorganisaties en de industrie samenwerken aan software-variabiliteit. Software is een van de speerpunten van het Centrum Wiskunde & Informatica (CWI), waar het onderzoek is uitgevoerd.

Meer informatie: https://www.cwi.nl/research-groups/Formal-Methods
http://www.mhelvens.net/

Illustratie: Apinatomy – een applicatie ontwikkeld met delta modelling. Bron: Michiel Helvensteijn.