Vandaag wordt de meeste software nog keurig volgens de klassieke aanpak ontwikkeld. De gebruiker stelt een lijst met 'requirements' op, die alles vermeldt hoe en wat er moet gebeuren. Vervolgens giet de ontwikkelaar dat alles netjes in toepassingscode, die eventueel nog wordt bijgewerkt in latere iteraties. Zelfs de nieuwe 'agile' ontwikkelingswijzen richten zich nog op zo'n lijst van requirements (zij het dat die zich langer in de tijd en vlotter laat aanpassen), tot ook hier een gebruiksklaar stuk software wordt opgeleverd.
...

Vandaag wordt de meeste software nog keurig volgens de klassieke aanpak ontwikkeld. De gebruiker stelt een lijst met 'requirements' op, die alles vermeldt hoe en wat er moet gebeuren. Vervolgens giet de ontwikkelaar dat alles netjes in toepassingscode, die eventueel nog wordt bijgewerkt in latere iteraties. Zelfs de nieuwe 'agile' ontwikkelingswijzen richten zich nog op zo'n lijst van requirements (zij het dat die zich langer in de tijd en vlotter laat aanpassen), tot ook hier een gebruiksklaar stuk software wordt opgeleverd. Als een toepassing van a-tot-z keurig vastligt, heeft dat wel zijn gevolgen inzake flexibiliteit. Vandaag veranderen de omstandigheden waarin een toepassing wordt aangewend snel en al de verschillende mogelijke aanwendingswijzen in een zelfde toepassing inbouwen, maakt die wel erg groot en zwaar. Als het al mogelijk is om alle mogelijke gebruiksomstandigheden te voorzien en te programmeren. Allicht is het dan ook beter software zo te ontwikkelen dat met een minimum aan interventie door de gebruiker de software zich aanpast aan de veranderende context. Dat kan zowel een kwestie zijn van andere gebruikers, een andere infrastructuur (zoals beschikbare bandbreedte in de connectiviteit), geografische locatie, resterende batterijlading van een toestel en dies meer. Rond dergelijke 'context oriented programming' (COP) wordt al een hele tijd onderzoek verricht door het RELEASeD labo in het Département d'Ingénerie Informatique ('computing science & engineering') aan de UCL, onder leiding van professor Kim Mens. Een specifiek voorbeeld kan de software in een auto zijn. Dat kan gaan van de software die onderdelen aanstuurt (zoals de remmen, gas geven etc.) tot hulpsystemen voor de chauffeur. Zo kan bijvoorbeeld het remsysteem zich automatisch aanpassen aan de weggesteldheid bij vriesweer (op basis van de buitentemperatuur of waargenomen gladheid). Of kan de auto beslissen om bijvoorbeeld een Belgische chauffeur tijdens een rit in Groot Brittannië regelmatig te herinneren 'links' te rijden (als een 'DrivingPal' die allicht in België niet nodig is). Deze voorbeelden werden onder meer aan de UCL ontwikkeld met behulp van de 'Ambience'-omgeving. Maar een 'COP'-aanpak is ook in andere types toepassingen mogelijk. Het lab verrichtte onder meer een studie voor een Belgisch bedrijf, dat een webgesteund 'lightweight' erp-pakket ontwikkelde. De software werd ontleed in verschillende 'features', die dan elk op zich kunnen worden geactiveerd, afhankelijk van de klant. Een soort 'feature as a service'. Het RELEASeD labo zelf wijst uitdrukkelijk op toepassingsgebieden als mobiele apps (zoals in de transportwereld, domotica, sociale netwerken et alia), cloud computing en 'agile maintenance' (zoals het inspelen op beschikbare versies van frameworks, bibliotheken etc., maar ook live updates met het oog op het gebruik van de best mogelijke voorzieningen). Concreet resulteert COP in software die sterk modulair is (met de mogelijkheid wanneer nodig modules van derden in te pluggen), evenals bondig en doorzichtig. De architectuur van de toepassing kan immers de kern-'business logica' scheiden van de onderdelen die nodig zijn voor de verschillende varianten. Het voordeel is dat dit in veel compactere toepassingen kan resulteren, met slechts die onderdelen actief die nodig zijn in een specifieke context. Dat kan op zijn beurt heel wat voordelen bieden inzake een zuiniger gebruik van 'resources'. Het lijkt dan ook overduidelijk dat dergelijke 'COP'-software een interessante rol kan spelen in een ict-gebeuren dat in toenemende mate door cloud computing wordt beheerst, en dan zeker voor de leveranciers van clouddiensten. De onderzoekers erkennen dat dit een stevige aanpassing van de mindset van ontwikkelaars vereist. Ze moeten beseffen wat een context inhoudt en hoe die kan worden geactiveerd onder invloed van veranderende omstandigheden. Dat moet vervolgens worden vertaald in mechanismen en tools om die afhankelijkheden en veranderingen te implementeren. COP is overigens niet helemaal nieuw, en bouwt onder meer verder op 'aspect oriented programming'. Een en ander maakt dat - naast specifieke COP-gerichte talen - ook COP-uitbreidingen voor populaire talen werden ontwikkeld. Zo zijn er ContextJ en Jcop in de Java-wereld, terwijl het RELEASeD lab over frameworks beschikt voor Ruby, Java, Objective-C en Smalltalk. De uitdaging zal allicht het vinden van de juiste evenwichten zijn, wat onder meer het ontwerp is van het VariBru-project (www.varibru.be). Dat bestudeert aspecten van softwarevariabiliteit zodat een product voldoende variatie biedt om aan de noden van verschillende klanten en/of gebruikers tegemoet te komen, en toch efficiënt en effectief blijft. Naast de UCL werken ook de VUB en ULB mee aan dit project, evenals Sirris (het collectief kenniscentrum van de Belgische technologische industrie). Guy KindermansDe uitdaging zal allicht het vinden van de juiste evenwichten zijn.