Inleiding
Een veelgehoord misverstand over object-oriëntatie (OO) is dat het een methode voor systeemontwikkeling van computersystemen is. Ik merk dat het steeds weer nodig is dat idee omver te halen.
OO is niet een methode voor systeemontwikkeling. Het is een taal om complexiteit hanteerbaar te maken. In essentie zou ik willen zeggen: het is een taal die gemaakt is voor complexiteit.
Complexiteit is een begrip dat betekenis heeft gekregen door twee ontwikkelingen in de wetenschap:
- Chaos theorie
- Complexiteitstheorie
Chaos theorie is verantwoordelijk voor de ontdekking dat werkelijke chaos in natuurlijke systemen niet bestaat, maar dat interne cohesie verantwoordelijk is voor orde op een hoger niveau. Eén van de verhalen uit de chaos theorie is dat het slaan van de vleugels van een vlinder in China een minuscule variatie is in de set van condities die uiteindelijk leiden tot een orkaan in Florida.
De complexiteitstheorie, ontstaan met name vanuit het Santa Fé instituut[1], maar waarvan de wortels teruggaan tot Gregory Bateson en de cybernetica[2] (de oorsprong van de computerwetenschap ligt in de cybernetica, de wetenschap van terugkoppeling en sturing, tot mijn grote verdriet een link die bij de meeste van mijn collega’s in dit vakgebied totaal onbekend is), is verantwoordelijk voor een theoretische onderbouwing van systemen die analytisch niet meer te beschrijven zijn.
Het begrijpen van deze systemen heeft behoefte aan andere metaforen dan de wiskundige, en zeker andere dan de werktuigbouwkundige. We hebben het over de invloed van metaforen op het denken van de mensen die met deze zaken willen werken. Die invloed is aanzienlijk. Verouderde metaforen bepalen nog teveel de manier waarop we tegen de wereld aankijken. Wat studenten leren op de universiteit is afkomstig van een wereldbeeld uit de tijd van de stoommachine.
De bekende Von Neumann[3] architectuur is gebaseerd op deze visie op de computer als een soort stoommachine. We zien computers als stoommachines! Alleen al de term automatisering maakt het moeilijk de verregaande effecten te kunnen realiseren die de computer mogelijk maakt. Het zijn de bekende handelingen die we al jaren en soms zelfs eeuwen doen die we gaan uitbesteden aan machines: we automatiseren datgene wat we al deden. Het is dan heel moeilijk om te zien wat er voor dingen mogelijk zijn die we nog niet deden.
De meest ingrijpende veranderingen die de ontwikkelingen in de IT zullen bewerkstelligen in de moderne maatschappij, en de wijze waarop organisaties en markten functioneren, beginnen zich nu af te tekenen. De oude specialisaties van customer intimacy, time-to-market, cost-effectiveness beginnen in elkaar over te lopen in een nieuw begrip: the one-person market. De directe relatie die klanten nu kunnen hebben met leveranciers door het web, zal alle gangbare relaties tussen bedrijven en hun markten omver gaan gooien.
Nieuwe metaforen zijn dus nodig om ons te helpen met deze nieuwe ontwikkelingen om te gaan. Ook zaken als de ethiek van vernieuwingen door deze metaforen. Waar moeten deze metaforen vandaan komen? Wie leveren ons deze metaforen? Hoe om te gaan met (onverwachte) zij-effecten (lees: Waarom Software terugbijt)?
De metaforen voor het beschrijven van complexe systemen kunnen we het beste halen uit de biologie en de filosofie.
De biologische metafoor
Waarom de biologische metafoor?
Een waarneming die we kunnen doen is dat biologische systemen van een ontzagwekkende complexiteit kunnen zijn zonder dat iemand achter de helpdesk zit om problemen op te lossen.
In 1964 is een boek verschenen van James Watson, de co-ontdekker (samen met James Crick) van het DNA. Dit boek was een monografie over een cel, een coli bacterie van een soort waarvan er miljoenen in onze darmen voorkomen. Als we deze cel bekijken in termen van complexiteit, dan kunnen we een aantal waarnemingen doen.
Ten eerste bestaat de cel voor het grootste gedeelte uit water — informatietechnisch lijkt dit weinig interessant. De interessante aspecten bevinden zich met name in de eiwitmoleculen in de cel. Als we deze zouden uitdrukken in termen van computerkracht kunnen we de informatie in deze ene cel uitschrijven in 10 zware werkstations (2014). De snelheid echter waarmee deze informatiehoeveelheid wordt gemanipuleerd binnen een cel is ontzagwekkend. Ter vergelijking: zouden we de eiwitmoleculen opschalen tot de grootte van een Volkswagen, dan verplaatsen ze zich voortdurend met een snelheid van 4 maal die van het licht. De chemische interacties vinden plaats met een heftigheid die we ons niet kunnen voorstellen. De complexiteit is ook nauwelijks te meten — de enige manier waarop we de cel kunnen onderzoeken is door het dood te maken. Waarmee veel chemische activiteit stopt …
Biologische systemen in het klein (zoals cellen) en in het groot (zoals ecologische systemen) hebben een groot aantal eigenschappen die beschreven zijn en waar we binnen de IT ons voordeel mee kunnen doen. Een belangrijk vakgebied doet onderzoek naar complexe adaptieve systemen, dat zijn systemen die zijn ontworpen aan de hand van deze metaforen. Veel van deze systemen zijn niet OO. Het is mijn overtuiging dat het huwelijk van OO met complexe adaptieve systemen en kunstmatige intelligentie (intelligent agents bijvoorbeeld) kan leiden tot een nieuwe golf van veranderingen in de IT.
De computer revolutie
Een tweede overweging die ik graag mee wil geven is het feit dat de computerrevolutie nog niet heeft plaatsgevonden, zoals Alan Kay, de uitvinder van OO, regelmatig verkondigd heeft.[4]
Wat dit inhoudt kunnen we bijna dagelijks ondervinden: veranderingen gaan zo snel dat we niet meer in staat zijn erin mee te gaan. Dat is een zeer begrijpelijke situatie. Geld en mankracht zijn niet voldoende om een vakgebied of een uitvinding tot wasdom te brengen. Daar is ook tijd voor nodig. Die tijd is nodig om heuristieken te ontwikkelen, om de consequenties (in positieve en negatieve zin — in maatschappelijke, psychologische, technische enz. zin evenzeer) te leren kennen. Dit is trouwens ook begrijpelijk vanuit de complexiteitstheorie zelf: nieuwe technologische ontwikkelingen veranderen de omgeving, die weer terugkoppelende effecten heeft op de technologische ontwikkelingen zélf.
De computerrevolutie heeft die tijd nog niet gehad. We zitten nu nog in een tijd waarin veranderingen zich zo snel voltrekken, dat het weinig zin heeft te investeren in technologische oplossingen op een wat langere termijn. Deze zullen immers binnen enkele jaren alweer verouderd zijn!
CBD en SOA
Momenteel is er veel belangstelling voor CBD (Component-Based-Development) en SOA (Service Oriented Architecture, in het Nederlands SGA: Service Gerichte Architectuur). Met name bij het management is het eenvoudig hiervoor de belangstelling te wekken, omdat het inspeelt op vraagstukken die al jaren spelen. Alweer heel wat jaren geleden verscheen Byte magazine[5] met een slogan op de omslag: “Why Object Orientation has failed”.
De teneur van het artikel was zeer begrijpelijk en kan mede verklaren waarom deze belangstelling zo groot is. Er werd gesteld dat OO al jaren beweert de techniek te zijn om herbruikbare componenten te ontwikkelen, maar dat een markt voor deze componenten maar niet van de grond komt. Dit in tegenstelling tot een grote en sterk groeiende markt van herbruikbare (en gebruikte!) componenten die niet volgens het gedachtegoed van OO zijn ontwikkeld, namelijk de Visual Basic componenten. Talloze kleine en middelgrote bedrijven floreerden in deze markt van VBX’en, OCX’en, ActiveX’en en later Java Applets. Deze componenten waren niet of nauwelijks OO ontwikkeld.
Het artikel verscheen op een opportuun moment, want de situatie was drastisch aan het veranderen. Een jaar later had het artikel niet meer geschreven kunnen worden, want een sterk groeiende markt van niet alleen kleine en middelgrote, maar nu ook grote en zeer grote bedrijven waren zich aan het positioneren op de markt als componentleveranciers van OO componenten.
Toch is de kritiek niet terzijde te vegen.
De volgende stap in Responsibility-Driven Design
Ik ben een cola blikje. Het doel in mijn leven is simpel: mezelf verkopen. Om dit voor elkaar te krijgen kijk ik om mij heen en ik zie een aantal elementen.
Ten eerste heb ik een gevoel van eigenwaarde. Dat wordt enigszins tegengewerkt door een element in mijn omgeving dat zijn eigen doelen heeft waar ik geen weet van heb, en dat mij af en toe onder druk zet om mijn waarde te verlagen. Ik heb geen idee waar die noodzaak vandaan komt, maar dat element (laten we het “marktaandeel” noemen) weet mij aardig onder druk te zetten!
Gelukkig heb ik heel wat wapens om in de strijd te werpen. Zo heb ik bijvoorbeeld een gezicht. Geen gezicht denk je misschien, een cola blikje met een gezicht, maar dat is heel nuttig, een gezicht. Een gezicht kun je vragen om er sexy uit te zien, en dat heeft weer positieve invloed op de verkoop.
Om mijn doel in mijn leven te bereiken maak ik gebruik van welk element in mijn omgeving dan ook om het voor elkaar te krijgen. Zo gaat er wel eens iets fout: een element waarvan ik dacht dat het zonder haperen functioneerde blijkt plotseling niet beschikbaar te zijn. Laatst nog, een klant wilde betalen met een chipcard. Blijkt dat de kaartlezer kapot was.
Vervelend natuurlijk. Ik stelde nog voor om cash te betalen maar dat wilde de klant niet. Een klant stel je niet teleur. Het was ook nog een warme dag, en bovendien (dat kon ik op de chipcard zien) was de klant een lid van mijn primaire doelgroep, een jongeman van 18 jaar. Ik besloot dus om mijzelf gratis weg te geven. Goede reclame. De investering werd ook door “marktaandeel” goedgekeurd dus ik had ook nog enige back-up. Daarna werden nieuwe klanten natuurlijk gewaarschuwd voor de kapotte chipkaartlezer (door de chipkaartlezer zelf, die ook via Internet het onderhoudsteam had gewaarschuwd, maar dat zijn zaken die buiten mijn scope vallen natuurlijk).
In bovenstaand sprookje probeer ik aan te geven op welke wijze een model dat gemodelleerd is rond verantwoordelijkheden in staat is te reageren op zijn omgeving. Dergelijke modellen zijn een stuk simpeler in onderhoud, en eigenlijk is een verder doortrekken van dit model een model dat “zichzelf onderhoudt”. Maar dat is een onderwerp voor een later hoofdstuk.
Een dergelijk model is ten eerste niet use-case driven ontstaan. De structuur is een resultaat van responsibility-driven-design.
Handvatten
Om het voor elkaar te krijgen in deze veranderende wereld overeind te blijven, zijn er enkele handvatten waarvan we gebruik kunnen maken.
Gebruik OO als een taal. Gelukkig is deze aan het standaardiseren: UML bevat voldoende syntax en semantiek om als expressiemedium te dienen voor OO. Extensies voor de taal komen voort uit de frameworks, de daarin gebruikte patterns etc. Het is deze taal die als communicatiemedium dient, niet de code of de executable!
Gebruik OO niet als een taal. Een veel voorkomend probleem ontstaat wanneer ontwikkelaars met gebruikers, opdrachtgevers of klanten denken in OO taal te kunnen praten. Dit werkt niet. Class diagrammen, sequence diagrammen en dergelijke zijn niet begrijpelijk voor niet geschoolde mensen. De truc is veeleer dat de ontwikkelaar deze diagrammen gebruikt terwijl hij/zij met de klant praat. Voor een domein deskundige is dan de illusie compleet dat hij op een inhoudelijk niveau een gesprek heeft. De ontwikkelaar heeft het OO model als een referentiemodel dat hem daartoe in staat stelt. Wij gebruiken een zeer effectieve techniek die helpt om business mensen aan te laten haken, genaamd eXploratory Modelling Explained. Zie ook: The Need for Clarity.
Leg de nadruk op domein modellen. Als we zien waar veranderingen zich het meest voltrekken, is dat in zaken als persistentie, communicatiemedium, GUI. Het domein model blijft relatief het meest stabiel. Investeringen hierin kunnen gezien worden als van strategische betekenis voor het bedrijf. Tools die het clean-room ontwikkelen van domain modellen bemoeilijken of teveel beïnvloeden moeten dan ook niet gebruikt worden.
Goede modellen zijn niet use-case driven.[6] Een domein model is een model dat dient als onderliggend stratum voor een verscheidenheid aan toepassingen:
- Business modeling en (re-) engineering
- Systeemontwikkeling
- Strategische scenario sessies
- Business simulaties
Om deze modellen herbruikbaar te maken in deze verscheidenheid aan contexten is er geen enkele motivatie om use cases te gebruiken. Deze zijn teveel toegespitst op systeemontwikkeling, en de vraag van gebruikers en klanten in een tijdelijke context. De onderliggende modellen moeten aan veel zwaardere eisen voldoen wat betreft scope.
Goede modellen zijn use-case resistant. Een model dat overeind blijft onder de “aanvallen” van use-cases, bijvoorbeeld use-cases die zijn opgesteld in het kader van een requirements analyse, is een volwassen model.
Bronvermeldingen
BATES1 | Bateson, Gregory [1] | Steps to an Ecology of Mind — asin=0226039056 |
BATES2 | Bateson, Gregory [2] | Mind and Nature. An essential unity — asin=1572734345 |
BATES3 | Bateson, Gregory [3] | Where Angels fear to thread — asin=0553345818 |
BYTE1 | Byte Magazine | Why object-orientation has failed |
KAY1 | Kay, Alan | The computer revolution has not happened yet. Keynote speech, OOPSLA 1997 |
KORSO | Korson, Timothy D. | Constructing useful use-cases Component Strategies. March 1999 |
KORZY | Korzybski, Alfred | Science and Sanity 1924 |
MITCH | Mitchell Waldrop, M. | Complexity. The emerging science at the edge of order and chaos. — asin=0671872346 |
NEUM | Neuman, John von, Arthur Burks, Hermann Goldstine | Preliminary Discussion of the Logical Design of an Electronic Computing Instrument 1946 |
Voetnoten
[1] Zie MITCH. Dit boek is een uitstekende inleiding in de complexiteitstheorie.
[2] Zie BATES1. Hij is de uitvinder van de cybernetica. Bateson’s betekenis voor de moderne IT wordt ernstig onderschat. Hij heeft in zijn artikelen handvatten gegeven om het aloude probleem van de dichotomie tussen vorm en proces op te lossen (nl. synthese op een hoger abstractieniveau). Dit probleem speelt in de IT voortdurend, bijvoorbeeld in de discussie over use-case driven vs. responsibility-driven design. Zie ook Waarom Software terugbijt.
[3] Zie NEUM. Geeft een goed inzicht in de overwegingen die hebben geleidt tot deze computerstructuur.
[4] Zie KAY1. Deze speech fungeerde tevens als podium voor de presentatie van Squeak, het nieuwe project van Alan Kay en consorten waarin een nieuwe vernieuwingsgolf in de IT werd vormgegeven. De laatste incarnatie van dit project is Pharo (zie www.pharo.org)
[5] Zie BYTE1
[6] Zie KORSO.
Leave a Reply