De essentie: het GPP-feature

Door Arjen Uittenbogaard

In deze stukjes leg ik uit hoe object-oriëntatie naar de wereld kijkt. Een OO-model van een systeem, of het nu een IT-systeem is of een organisatie, gaat uit van verantwoordelijkheden en samenwerking en is flexibel genoeg om complexe en veranderende situaties aan te kunnen. Voor hardcore software-ontwikkelaars zal wat ik hier schrijf een feest van herkenning zijn. Voor niet-ITers hoop ik een verrijking te bieden van het kijken naar organisatievraagstukken.

OO-ers beschouwen objecten en concepten in de te modelleren wereld als zelfstandig handelende levende wezentjes. In een OO-model zijn objecten geen passieve, dode dingen waarmee iets wordt gedaan, maar zijn ze actief en hebben een verantwoordelijkheid die ze kunnen waarmaken. Een deur, bijvoorbeeld, heeft als verantwoordelijkheid toegang te bieden of die juist te verhinderen. Een lift transporteert verticaal en een vakantie zorgt voor ontspanning. Dit klinkt eenvoudiger dan het vaak blijkt te zijn. Het vraagt een zekere naïviteit om zo naar de wereld te kijken. Een naïviteit die bij natuurvolken en kinderen vanzelfsprekender is dan bij ons, volwassenen. Natuurvolken konden bomen, rotsen en natuurverschijnselen zien als bezield. Kinderen kunnen een muur waar ze tegenaanlopen boos toespreken met: “Stoute muur.” Maar wij volwassenen vinden het lastig om zo naar de wereld te kijken. (Hoewel we tegenwoordig, met sensoren die overal in zitten en met het Internet of Things dat om zich heen grijpt, in een wereld leven die meer en meer magische trekjes begint te krijgen. Deuren die automatisch openen, of niet als ze je niet herkennen; drones die pakketjes afleveren; auto’s die zelf rijden… Ook voor ons, volwassenen zou het weer wat makkelijker moeten worden om objecten als levende wezentjes te zien.)

Douglas Adams’ Hitch Hiker’s Guide to the Galaxy biedt tal van grappige voorbeelden van deze manier van naar de wereld kijken. De deuren in het ruimteschip waarin de hoofdpersonen rondtrekken bedanken de reizigers elke keer als ze er doorheen lopen: “Thank you for making a simple door very happy.” De deuren zijn uitgerust met het GPP-feature: Genuine People’s Personalities. In de brochure van de deuren staat:

“All the doors in this spaceship have a cheerful and sunny disposition. It is their pleasure to open for you, and their satisfaction to close again with the knowledge of a job well done.”

De kunst van object-georiënteerd modelleren is om voor elk object in het domein onder beschouwing de daarbij horende verantwoordelijkheden te vinden. Die verantwoordelijkheden zijn er in twee soorten: weet- en doe-verantwoordelijkheden. Doe-verantwoordelijkheden zijn het belangrijkst, want als objecten niks doen, gebeurt er niks – er is geen ‘systeem’ anders dan de verzamelde, samenwerkende objecten. Een deur weet wie hij door mag laten en wie niet, maar het belangrijkste is dat hij toegang biedt (“It is their pleasure to open for you”), of niet. Een lift weet zijn maximum draagvermogen, maar het belangrijkste is dat hij omhoog en omlaag kan vervoeren. Een vakantie weet van alles: de periode, het budget, wie er op vakantie gaan – maar het belangrijkste is dat hij zorgt voor ontspanning.

Het belang: samenhang der dingen
Zowel in de IT als in de organisatiekunde hebben we een historie die niet helpt om goede OO-modellen te maken. Laten we eens kijken wat John von Neumann en Frederic Taylor hebben aangericht.

In de IT hebben we jarenlang datamodellen en procesontwerpen los van elkaar gemaakt. Er was data waar iets mee gedaan moest worden en er was een proces dat dat deed. Misschien is deze schizofrene kijk op de werkelijkheid een gevolg van von Neumanns computerarchitectuur uit 1945. Daarin heeft een computer een geheugen en een processor. Maar het is toch raar dat we, omdat computers uit die onderdelen bestaan, sindsdien denken dat we de hele wereld zo moeten modelleren? Dat we in een model de attributen van een lift in een domme database-entiteit plaatsen en het gedrag van de lift in een programma programmeren? Het gevolg hiervan is namelijk dat als we de verantwoordelijkheden van een lift in een volgende versie van het systeem willen veranderen, we op twee plekken dingen moeten aanpassen: in de database (de weet-verantwoordelijkheden) en in het programma (de doe-verantwoordelijkheden). Dat data en code inherent bij elkaar horen is niet in het model of code terug te vinden. Deze kennis moet door iemand worden onthouden (de programmeur? de analist? de lifteigenaar?). De eerste paar aanpassingen lukken vaak nog wel. Degene die het overzicht en de dwarsverbanden in de gaten houdt, kan alles nog overzien en herinneren. Maar er komt een moment dat zij er even niet bij is met haar aandacht. En dan gaan er dingen mis. In een OO-model daarentegen hoort zowel de data als het gedrag bij het object. Het object is de plek in het model waar je al deze informatie en al dit gedrag vindt. Zo hoef je voor het veranderen van gedrag of gegevens van een object alleen dáár in het model en in het systeem dingen aan te passen.

Frederic Taylor was al vóór 1945 druk met zijn Scientific Management. Zijn expliciete streven was om in productieprocessen hoofd en handen van elkaar te scheiden. Het denken moest gebeuren door managers: hoogopgeleide mensen aan wie je dat kon overlaten. Het echte werk moest gebeuren door de laagopgeleide arbeiders, de “handjes”. De ellende die deze scheiding tegenwoordig nog steeds aanricht is enorm. Anders dan misschien een eeuw geleden zijn onze professionals opgeleide vakmensen. Vertrouw die en breng ze met elkaar in verbinding. Die drie V’s zijn de kern van Rijnlands organiseren: vakmanschap, vertrouwen en verbinding. Ook in het agile manifest wordt de waarde van individuen en hun samenspel gewaardeerd.

Data en gedrag, denken en doen zijn onlosmakelijk met elkaar verbonden, dus laten we ze in onze modellen van de wereld om ons heen ook bij elkaar houden. Object-oriëntatie, met als essentie het modelleren van objecten die voorzien zijn van het GPP-feature, biedt stevige handvatten om dergelijke modellen te maken. Natuurlijk moeten we individualisme voorkomen. Mensen leven in een maatschappij altijd samen met anderen. Professionals werken samen met anderen. Ook objecten moeten samenwerken met anderen. No man is an island. Over die samenwerking gaat het volgende stukje.

Arjen Uittenbogaard

Arjen is verhalenverteller. Een training van hem is een ervaring die je niet licht vergeet. Hij is ook regisseur van improvisatietoneel. Dat vindt hij een mooie metafoor voor zijn werk in het coachen van teams en individuen in organisaties die meer agile willen worden. Want dat is zijn expertise: agile werken. Daar heeft hij al twintig jaar ervaring mee en daar is hij goed in. Zijn hart gaat uit naar de menselijke kant van het werk, naar de communicatie en de samenwerking. Daarbij weet hij alles van complexe adaptieve systemen: omgevingen waarin niets is wat het lijkt, waar best practices je op het verkeerde been kunnen zetten en waar je steeds zult moeten experimenteren en leren. Ook heeft hij nog steeds lol van zijn achtergrond in object georiënteerde softwareontwikkeling: hij mag ontwikkelaars graag uitdagen op hun ontwerpen en de toepassing van design patterns daarin.

06 - 59 443 440

Andere posts

Klik hier