TOP staat voor "Task Oriented Programming".

Hoe moet het gebruikersinterface eruit zien?
Welke data moet worden opgeslagen en gedeeld?
Welke taken moeten worden verricht?
Wat zijn de domeinspecifieke data en bewerkingen?

Bij Taak Georiënteerd Programmeren onderscheiden we de volgende componenten:

  1. Wat zijn de eigenschappen en bewerkingen die een rol spelen op het specifieke domein waarvoor de software moet worden gemaakt?
  2. Wat zijn de werkzaamheden (taken) die verricht moeten worden door mens en machine, en hoe hangen die samen?
  3. Welke informatie moet men delen om het werk goed te kunnen doen?
  4. Hoe moet het gebruikers-interface eruit komen te zien?
GUI Specialisaties (UI)
Shared Data Sources (SDS)
Task Specificaties (TS)
Traditioneel Functioneel Programmeren
Data
Types

Voor elk van de bovenstaande componenten gebruiken we speciale notatie zoals aangegeven in bovenstaand diagram:

  1. De eigenschappen van het domein en de berekeningen die gedaan moeten worden kunnen we compact en precies beschrijven in een functionele taal. De data types spelen daarbij een centrale rol want zij vormen de lijm tussen alle componenten.

    In een Functionele Programmeertaal (FP) zoals Clean en Haskell kan men software uiterst compact en leesbaar beschrijven. Dit soort van talen zijn bijzonder geschikt voor het definiëren van betrouwbare, herbruikbare oplossingen. Alle onderdelen van de software zijn modulair, vrij van zij-effecten, en sterk getypeerd. Dit verminderd de kans op fouten in de software aanzienlijk.

  2. We specificeren de taken, deeltaken, volgorde (sequentieel, parallel), en de samenhang (data afhankelijkheden) tussen de taken.
  3. We bepalen welke data op het net op welke wijze beschikbaar moet worden gesteld aan de samenwerkende partijen.
  4. Tenslotte (!) zorgen we ervoor dat er een inzichtelijk en mooi interface aangeboden wordt aan de eindgebruiker. De meeste software ontwerpers nemen het user-interface als uitgangspunt, maar bij ons staat het werk centraal dat ondersteund moet worden. Het interface wordt "at run-time" bepaald door het concrete werk dat een ieder moet uitvoeren.

Het door ons ontwikkelde iTask systeem is een implementatie van het TOP concept, gemaakt in de pure functionele taal Clean.

Het iTask systeem zorgt ervoor dat de programmeur zich kan concentreren op de essentie en zich niet druk hoeft te maken over de technische realisatie.

Uit een compacte TOP beschrijving in iTasks genereren we (web) servers en (web) clients die de beschreven werkzaamheden coördineren door aan iedere uitvoerder real-time precies die informatie en opties aan te bieden die nodig zijn voor het uitvoeren van werk. Ook het werk waarvoor men op dit moment bestaande software gebruikt kunnen we coördineren.

Het iTask systeem stelt ons in staat om op kort termijn (agile) een werkend prototype te maken die we dan in samenspraak met de klant verder ontwikkelen tot de gewenste functionaliteit. Hierdoor kunnen wij maatwerk software, sneller, goedkoper en betrouwbaarder produceren.

Met TOP kunnen we complexe samenswerkings verbanden regelen, zoals Command en Control Systemen.

De concepten achter TOP en iTasks zijn gebaseerd op wetenschappelijk onderzoek en worden beschreven in wetenschappelijke publicaties.

We genereren native code voor alle bekende platforms (Mac OS, Windows, Linux, Android, Raspberry Pi), JavaScript voor HTML5 compatibele browsers, en byte code die geschikt is voor standaard IoT devices.

Alle code uit 1 bron, voor alle Platforms, Servers & Clients