Onze droom:

Modelleren

kan je leren!

pijl schuin blauw naar transparant
Modelleren is vandaag de dag natuurlijk heel gebruikelijk in de IT. Er zijn allerlei formele (en minder formele) modelleringstechnieken om vereenvoudigde weergaves te maken van verschillende aspecten van een applicatie. Denk bijvoorbeeld aan BPMN voor het modelleren van bedrijfsprocessen en ORM (of NIAM) voor het modelleren van de informatieaspecten van een systeem. Er zijn tegenwoordig verschillende leveranciers die tools aanbieden om software te genereren op basis van een (complexe) combinatie van deze verschillende modellen.

Erik van de Ven, Manager Platform Design:

Het is al weer enige jaren geleden dat ik informatica studeerde aan de universiteit van Nijmegen. Ik kan me de colleges van het vak informatie modellering echter nog herinneren als de dag van gisteren. Al snel werd ik gegrepen door het heel precies en formeel kunnen beschrijven van modellen en transformaties van modellen. We kregen verschillende opdrachten om modellen te maken op basis van beschrijvingen van een bedrijfsprobleem: een universiteit die bijvoorbeeld een systeem wilde bouwen voor de administratie van studenten, colleges, trimesters, cijfers etc. We gebruikten verschillende modellen maar al deze modellen hadden één ding gemeen: ze waren een vereenvoudigde weergave van een deel van het informatiesysteem zoals dat er in de werkelijkheid uit zou (moeten) zien. Nadat we dit een paar keer droog hadden mogen oefenen - binnen de veilige grenzen van de uni - werden we als nerds losgelaten en mochten we in het kader van een practicum "echte mensen" interviewen met een "echt probleem". Al snel maakten we de mooiste modellen om het "echte probleem" uit de werkelijke wereld voor ons zelf begrijpelijk te maken in IT termen zoals relationele databases, schermen, interfaces etc. Dit werkte op zich prima maar we kwamen er al snel achter dat het toch lastiger bleek om onze modellen vervolgens weer uit te leggen aan de "echte mensen". Waarom snapten ze dit toch niet? Dit waren toch eenvoudige modellen van de werkelijkheid. Sterker nog dit was HUN werkelijkheid!

Bij veel van de tools die aangeboden worden zie je echter dat ze hetzelfde probleem hebben als waar Erik al tijdens zijn studie al tegenaan was gelopen als de "echte mensen" de modellen weer eens niet begrepen! Het waren immers geen modellen van de werkelijkheid maar 'slechts' modellen van een bepaalde aspect van een IT systeem dat je nodig had om deze werkelijkheid te ondersteunen. Maar zouden we dan niet gewoon het IT systeem en het complete IT denken uit ons model moeten verbannen en dus direct de werkelijkheid beschrijven van de eindgebruiker in begrippen die voor hem betekenisvol zijn? Als we dit heel precies kunnen doen en voldoende betekenis in ons model kunnen leggen zouden we dan niet voldoende informatie moeten hebben om een complete applicatie te kunnen genereren die voldoet aan alle wensen van de klant en de laatste IT technologieën?

Fijn dat je nog verder leest, want net zoals jij geloven wij bij AFAS inderdaad dat dit mogelijk is!  Sterker nog, een belangrijk deel van deze droom zijn we nu al aan het realiseren en iedere nacht genereren we de complete applicatie op basis van een model. Hoe dit precies werkt leggen we uit aan de hand van onderstaand diagram. 

Je ziet twee verschillende werelden: aan de linkerkant zie je de werkelijke wereld van onze klanten. In deze wereld wordt gesproken in termen van personen, organisaties, klanten. In deze wereld is het heel natuurlijk om te te vertellen dat verkopen een proces is waarin een product op een bepaald moment verkocht is of verkocht gaat worden aan een klant. Ook is het logisch dat verkochte artikelen geleverd moeten worden. Je merkt dat we het verhaal van de werkelijkheid kunnen vertellen met een aantal basis elementen zoals persoon, organisatie, klant, verkopen, leveren etc. Een model van de werkelijke wereld heet een ontology (zie dit artikel voor meer detail). Deze elementen hebben we gegroepeerd in bepaalde types zoals entiteitrol en proces (zie onderstaande tabel): 

Type

Omschrijving

Voorbeeld

Entiteit

Een ding uit de werkelijke wereld met een bepaalde levenscyclus

Persoon, Organisatie, Auto

Rol

Een toepassing van een entiteit in de context van een proces 

Klant, Product 

Proces

Een handeling op een bepaald moment in de tijd

Inkopen, Verkopen, Leveren

Contract

Een afspraak met een partij om een bepaald goed of dienst te leveren (tegen betaling) gedurende een bepaalde termijn

Arbeidsverhouding, Inkoopcontract

We hebben ondertussen nog meer types onderkend maar er blijkt (gelukkig) een beperkte set van taalelementen nodig te zijn om de werkelijke wereld zodanig te kunnen beschrijving zodat we al de gewenste applicatie functionaliteit kunnen afleiden (lees genereren (op basis van code templates)). Bovengenoemde taalelementen vormen dus als het ware de taal om de werkelijke wereld te beschrijven, dit model noemen we het Ontological Enterprise Model (OEM). Dit model bevat totaal geen IT kennis of verwijzingen naar IT artifacts. Je zou de taal dus ook prima moeten kunnen gebruiken zonder ook maar aan IT of een informatiesysteem te denken. Het mooie is echter dat het model wel voldoende informatie bevat om op logische niveau een model te genereren van een informatiesysteem dat voldoet aan de eisen van het OEM. Hiermee komen we dus aan de rechterkant van bovenstaande diagram en zitten we in het domein de technologie. 

Dit model noemen we dan ook een Logical Application Model (LAM) het is immers een logische beschrijving van een informatiesysteem. Het LAM is dus afgeleid uit het OEM en beschrijft bijvoorbeeld hoe een gebruiker met een informatiesysteem zou kunnen interacteren. Dit gebeurt typisch door het beschrijven van de de mogelijk acties en taken die een gebruiker kan uitvoeren. Denk hierbij aan logische acties als het opvoeren van een nieuwe persoon, iemand de rol van klant geven en het annuleren van een inkoopproces. Dit zijn logische acties die een gebruiker kan doen onafhankelijk van welke technologie- of platformkeuze we maken. Het goedkeuren van een offerte zal op een iPhone echt anders werken dan op een desktop maar het blijft logisch gezien één actie. Als laatste stap kunnen we dit model daadwerkelijk vertalen naar een bepaalde technologie (C#, Java) of platform keuze (Azure, AWS, etc).  

Op dit moment hebben we meer dan 1.000.000 zakelijke gebruikers op ons huidige AFAS online product. We zijn enorm trots op het succes dat we vandaag de dag met dit product al hebben bereikt, maar natuurlijk denken we al na hoe we dit met onze volgende versie nog verder kunnen uitbouwen. De hierboven beschreven modelgedreven aanpak vormt het hart van ons Next platform dat de basis zal vormen van onze volgende generatie producten. Om aan te tonen dat dit echt werkt hebben we een groot deel van de werkelijke wereld van onze klanten al gemodelleerd in een OEM model. Ieder nacht wordt het model door een generator gehaald en zodoende hebben we iedere dag weer een applicatie klaar staan op verschillende platformen. We kunnen dus al een groot deel van de huidige applicatie functionaliteit opnieuw genereren zonder één regel code met de hand te schrijven. We zijn klaar als we alle huidige applicatie functionaliteit kunnen genereren op basis van het model. Het lijkt me een schitterend moment: ik kan haast niet meer wachten!