logo

U bent hier

Waarschuwingsbericht

Opgelet! Dit event heeft al plaatsgehad.

Maintaining causality between design regularities and source code

woensdag, 27 juni, 2007 - 10:30
Campus: Brussels Humanities, Sciences & Engineering campus
Faculteit: Science and Bio-engineering Sciences
D
2.01
Andy Kellens
doctoraatsverdediging

Als één van de technieken om de intrinsieke complexiteit van software systemen te trotseren
introduceren programmeurs (bewust of onbewust) structurele broncode regulariteiten in een
systeem. Deze regulariteiten beschrijven de verschillende eigenschappen waar de broncode
van het systeem moet aan voldoen zoals bijvoorbeeld het correct gebruik van naam- en codeerconventies, bepaalde afhankelijkheden in het ontwerp van het systeem, evenals het consistent gebruik van een wederkerend sjabloon in de implementatie van een bepaald concept.

Dit gebruik van regulariteiten heeft als doel het begrip van de broncode te vergemakkelijken,
de communicatie van de intentie van een programmeur met de andere teamleden te
bevorderen, een bepaalde beproefde oplossing te introduceren, enzovoort. Alhoewel regulariteiten
in causaal verband staan met de broncode van een systeem is deze causale band echter
impliciet en niet ondersteund door de programmeertaal. Als gevolg kan de evolutie van de
broncode of de regulariteiten ervoor zorgen dat beide artefacten niet meer gesynchroniseerd
zijn. Deze asynchronisatie kan dan ook leiden tot inconsistenties en fouten in de implementatie
van een systeem.

In deze doctoraatsverhandeling stellen we het model van intensional views en constraints
voor als een oplossing om het bovenstaande probleem te verhelpen. Dit model biedt programmeurs een conceptueel raamwerk om de diverse regulariteiten in een systeem expliciet
te documenteren en eventuele afwijkingen tussen deze documentatie en de broncode te identificeren. Onze techniek berust op het gebruik van een classificatie-mechanisme (intensional
views) om de entiteiten in de broncode te groeperen die bijdragen tot de implementatie van
een bepaald concept in het systeem. De effectieve regulariteiten die deze concepten in de
broncode reguleren worden gedocumenteerd door middel van verifieerbare intensional constraints
te declareren over bovengenoemde intensional views.

Vanuit een methodologisch standpunt benaderen we de ontwikkeling van software vanuit
een andere invalshoek door deze gedocumenteerde regulariteiten op te nemen als een integraal
onderdeel van het ontwikkelingsproces. Als ondersteuning om de causaliteit tussen regulariteiten
en broncode te behouden stellen we dan ook voor om de documentatie gecre¨eerd
met intensional views en constraints te co-ontwerpen en co-evolueren met de broncode in
het systeem. In plaats van de implementatie en de documentatie als twee afzonderlijke entiteiten
te beschouwen resulteert deze methodologie in de gezamenlijke ontwikkeling van
beide artefacten zodat deze op elkaar kunnen afgestemd worden en afwijkingen zo snel mogelijk
geïdentificeerd kunnen worden gedurende het ontwikkelen.

Ter validatie van ons onderzoek voorzien we het IntensiVE ontwikkelingshulpmiddel.
Dit hulpmiddel is een concrete implementatie van het model van intensional views voor de VisualWorks Smalltalk omgeving en maakt het mogelijk om verifieerbare documentatie te
creëeren voor regulariteiten in Smalltalk en Java programma’s. Eén van de peilers tijdens de
ontwikkeling van deze tool was de integratie met de omliggende ontwikkelingsomgeving om
een doorgedreven ondersteuning voor onze methodologie te voorzien.

Verder illustreren we in deze verhandeling hoe de bekomen resultaten kunnen aangewend
worden voor het verhelpen van het fragiele pointcut probleem, een significant evolutieprobleem
binnen het onderzoeksdomein van aspect-gericht programmeren. Dit probleem, dat
gerelateerd is aan het behouden van de causaliteit tussen regulariteiten en broncode, wordt
veroorzaakt door een sterke koppeling tussen zogenaamde pointcutexpressies en de structuur
van de broncode van een systeem. We bieden een uitbreiding van het model van intensional
views aan, namelijk model-gebaseerde pointcuts, die het mogelijk maakt om pointcutexpressies
los te koppelen van de broncode van het systeem en uit te drukken in termen
van een conceptueel model, geconstrueerd door middel van intensional views en intensional
constraints. Op deze manier kunnen we ondersteuning aanbieden op het niveau van dit conceptueel model om de evolutieconflicten die resulteren in de fragiliteit van de pointcut op te
vangen en te verhelpen.