TOP Software: Taak Georiënteerd Programmeren

We kunnen niet meer zonder het internet, noch privé noch op het werk. Tegenwoordig dragen we de computers dagelijks bij ons in de vorm van een tablet, slimme telefoon, horloge of slimme bril. Doordat we ieder moment van de dag informatie kunnen uitwisselen met de hele wereld zijn nieuwe vormen van samenwerking mogelijk. Zo kan een arts tegenwoordig de gezondheid van een patiënt met hulp van een slimme telefoon laten monitoren en analyseren, en wordt hij automatisch geïnformeerd wanneer dat nodig mocht zijn. Politie en brandweer kunnen beter hun werk doen dankzij de beschikbare informatie op het internet. Voor veel beroepen geldt dat het werk niet langer gebonden is aan een vaste werkplek, omdat relevante informatie overal ter wereld kan worden gedeeld en de computer kan zorgen voor de tijdige verspreiding van die informatie en de coördinatie van de werkzaamheden.

Maar al die slimme apparaten moeten wel worden geprogrammeerd en dat is niet zo eenvoudig. Onze slimme apparaten bieden steeds meer functionaliteit aan, het aantal ingebouwde processoren en sensoren neemt nog steeds toe. Men gebruikt al gauw een groot aantal applicaties, verspreid over meerdere apparaten, die op een of andere manier met elkaar moeten samenwerken om het gewenste resultaat te bereiken. Applicaties moeten niet alleen veel kunnen en snel werken, maar ze moeten er ook nog eens cool uitzien en bovenal gebruikersvriendelijk zijn. Computerprogramma’s zijn door dit alles vaak erg groot (miljoenen regels code), opgebouwd uit vele componenten en gemaakt met behulp van diverse programmeertalen en gereedschappen. De software is al gauw zo complex dat het zelfs voor experts moeilijk te achterhalen is wat een programma nu eigenlijk doet. Men ziet door de bomen het bos niet meer.

Sinds kort bestaat er een nieuwe methode voor het programmeren van applicaties die het samenwerken op het internet ondersteunt: Task Oriented Programming (Taak Georiënteerd Programmeren), kortweg TOP. In een TOP-applicatie beschrijft men de taken die door gebruikers en apparaten moeten worden verricht en de afhankelijkheden tussen die taken. De programmeur hoeft zich echter niet langer meer te bekommeren om de technische “details” die van belang zijn voor de realisatie. Complete interactieve web pagina’s, gebruikersinterfaces, de communicatie tussen de applicaties, browsers en servers, de opslag en het bijwerken van informatie in files en databases, het informeren van gebruikers wanneer informatie is veranderd: het wordt allemaal automatisch gegenereerd uit de taakbeschrijvingen. En dat scheelt heel veel programmeerwerk.

Het blijft daarbij duidelijk wat het programma doet, wat de taken zijn van de gebruikers, de apparaten en de systemen, en hoe de diverse taken van elkaar afhangen. Taken kunnen bestaan uit subtaken, die zowel na elkaar (sequentieel) als tegelijkertijd (parallel) kunnen worden uitgevoerd. Taakuitvoerders kunnen willekeurige informatie delen en men wordt automatisch op de hoogte gehouden hoe het werk van anderen vordert. Zelfs heel complexe samenwerkingvormen kan men op die manier beschrijven, waaronder het managen van het werk zelf. 

Waarom is dit nog niet eerder bedacht? Om het mogelijk te maken dat een TOP-programmeur zich niet hoeft te bekommeren om al die technische details, wordt gebruik gemaakt van heel nieuwe programmeertechnieken, zoals typegestuurde generieke functies. Dit soort van technieken zijn pas recentelijk beschikbaar in state of the art functionele programmeertalen zoals Clean en Haskell. 

TOP biedt meer voordelen. Het sterke typeringssysteem voorkomt veel programmeerfouten. TOP is tevens geschikt voor rapid prototyping zodat men snel kan uitproberen of een nieuwe manier van samenwerken bevalt. Ook voor trainingsdoeleinden kan men TOP goed gebruiken. 

Er bestaat een implementatie van TOP, het iTask-systeem. Het wordt gebruikt door TNO en de Nederlandse Defensie Academie om voor de Koninklijke Marine en de Nederlandse Kustwacht te onderzoeken hoe in crisissituaties het werk het beste kan worden gecoördineerd. Het iTask-systeem wordt momenteel verder doorontwikkeld om algemeen gebruik van TOP mogelijk te maken.