<?xml version="1.0" encoding="UTF-8" ?><!-- generator=Zoho Sites --><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><atom:link href="https://www.reflektis.nl/blogs/Object-orientation/feed" rel="self" type="application/rss+xml"/><title>reflektis - Blog , Object-orientation</title><description>reflektis - Blog , Object-orientation</description><link>https://www.reflektis.nl/blogs/Object-orientation</link><lastBuildDate>Mon, 07 Sep 2026 14:32:27 +0200</lastBuildDate><generator>http://zoho.com/sites/</generator><item><title><![CDATA[Ecoology]]></title><link>https://www.reflektis.nl/blogs/post/ecoology</link><description><![CDATA[Inleiding Een veelgehoord misverstand over object-oriëntatie (OO) is dat het een methode voor systeemontwikkeling van computersystemen is. Ik merk dat ]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_l7tPX30wRNeLFKacZQbWhg" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_QH7BUtoVTxOCn6TGQZjBQg" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_SvPxJyCRQu62HVraT6-YBA" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_qJCI7JsZT5qtvazAdDqmTw" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-center " data-editor="true"><div><h2>Inleiding</h2><p>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.</p><p><strong>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.</strong></p><p>Complexiteit is een begrip dat betekenis heeft gekregen door twee ontwikkelingen in de wetenschap:</p><ol><li>Chaos theorie</li><li>Complexiteitstheorie</li></ol><p>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&nbsp;die uiteindelijk&nbsp;leiden tot een orkaan in Florida.</p><p>De complexiteitstheorie, ontstaan met name vanuit het Santa Fé instituut, maar waarvan de wortels teruggaan tot <a href="http://en.wikipedia.org/wiki/Gregory_Bateson" target="_blank">Gregory Bateson</a> en de <a href="http://en.wikipedia.org/wiki/Cybernetics" target="_blank">cybernetica</a> (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.</p><p>Het begrijpen van deze systemen heeft&nbsp;behoefte aan andere metaforen dan de wiskundige, en zeker andere dan de werktuigbouwkundige. We hebben het over <a href="https://blog.reflektis.nl/the-importance-of-metaphors/">de invloed van metaforen</a> 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.</p><p>De bekende <a title="John von Neumann" href="http://en.wikipedia.org/wiki/John_von_Neumann" target="_blank">Von Neumann</a> architectuur is gebaseerd op deze visie op de computer als een soort stoommachine. We <em>zien</em> computers als stoommachines! Alleen al de term <em>automatisering</em> 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 <em>automatiseren</em> datgene wat we al deden. Het is dan heel moeilijk om te zien wat er voor dingen mogelijk zijn die we <em>nog niet deden</em>.</p><p>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.</p><p>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: <a href="https://blog.reflektis.nl/why-software-bites-back/">Waarom Software terugbijt</a>)?</p><p>De metaforen voor het beschrijven van complexe systemen kunnen we het beste halen&nbsp;uit de biologie en de filosofie.</p><h2>De biologische metafoor</h2><p>Waarom de biologische metafoor?</p><p>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.</p><p>In 1964 is een boek verschenen van <a href="http://en.wikipedia.org/wiki/James_Watson" target="_blank">James Watson</a>, 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.</p><p>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&nbsp;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&nbsp;chemische activiteit stopt …</p><p>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 <a title="Complex Adaptive Systems - Principia Cybernetica" href="http://www.wur.nl/en/Research-Results/Projects-and-programmes/silico.htm" target="_blank">complexe adaptieve systemen</a>, 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&nbsp;leiden tot een nieuwe golf van veranderingen in de IT.</p><h2>De computer revolutie</h2><p>Een tweede overweging die ik graag mee wil geven is het feit dat de computerrevolutie nog niet heeft plaatsgevonden, zoals <a href="http://en.wikipedia.org/wiki/Alan_Kay" target="_blank">Alan Kay</a>, de uitvinder van OO, regelmatig verkondigd heeft.</p><p>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.</p><p>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!</p><h3>CBD en SOA</h3><p>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&nbsp;het management is het eenvoudig hiervoor de belangstelling te wekken, omdat het inspeelt op vraagstukken die al jaren spelen. Alweer heel wat&nbsp;jaren geleden verscheen Byte magazine met een slogan op de omslag: “Why Object Orientation has failed”.</p><p>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.</p><p>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.</p><p>Toch is de kritiek niet terzijde te vegen.</p><h3>De volgende stap in Responsibility-Driven Design</h3><p><em>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.</em></p><p><em>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!</em></p><p><em>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.</em></p><p><em>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.</em></p><p><em>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).</em></p><p>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.</p><p>Een dergelijk model is ten eerste niet use-case driven ontstaan. De structuur is een resultaat van <a title="Wirfs-Brock Associates Responsibility-Driven Design" href="http://www.wirfs-brock.com/Design.html" target="_blank">responsibility-driven-design</a>.</p><h2>Handvatten</h2><p>Om het voor elkaar te krijgen in deze veranderende wereld overeind te blijven, zijn er enkele handvatten waarvan we gebruik kunnen maken.</p><p><strong>Gebruik OO als een taal.</strong> 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!</p><p><strong>Gebruik OO <em>niet</em> als een taal.</strong> 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 <a title="eXploratory Modelling Explained" href="http://localhost:8888/reflektis.nl/blog/exploratory-modelling-explained/">eXploratory Modelling Explained</a>. Zie ook: <a href="http://localhost:8888/reflektis.nl/blog/the-need-for-clarity/">The Need for Clarity</a>.</p><p><strong>Leg de nadruk op domein modellen.</strong> 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.</p><p><strong>Goede modellen zijn niet <a title="Use Case Driven Development - Ivar Jacobson" href="http://www.ivarjacobson.com/Use_Case_Driven_Development/" target="_blank">use-case driven</a>.</strong> Een domein model is een model dat dient als onderliggend stratum voor een verscheidenheid aan toepassingen:</p><ol><li>Business modeling en (re-) engineering</li><li>Systeemontwikkeling</li><li>Strategische scenario sessies</li><li>Business simulaties</li></ol><p>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.</p><p><strong>Goede modellen zijn use-case resistant.</strong> Een model dat overeind blijft onder de &quot;aanvallen&quot; van use-cases, bijvoorbeeld use-cases die zijn opgesteld in het kader van een requirements analyse, is een volwassen model.</p><h2>Bronvermeldingen</h2><figure class="wp-block-table uk-table"><table><tbody><tr><td>BATES1</td><td>Bateson, Gregory</td><td><em>Steps to an Ecology of Mind&nbsp;—&nbsp;asin=0226039056</em></td></tr><tr><td>BATES2</td><td>Bateson, Gregory</td><td><em>Mind and Nature. An essential unity&nbsp;—&nbsp;asin=1572734345</em></td></tr><tr><td>BATES3</td><td>Bateson, Gregory</td><td><em>Where Angels fear to thread&nbsp;—&nbsp;asin=0553345818</em></td></tr><tr><td>BYTE1</td><td>Byte Magazine</td><td><em>Why object-orientation has failed</em></td></tr><tr><td>KAY1</td><td>Kay, Alan</td><td><em>The computer revolution has not happened yet.&nbsp;</em>Keynote speech, OOPSLA 1997</td></tr><tr><td>KORSO</td><td>Korson, Timothy D.</td><td><em>Constructing useful use-cases&nbsp;</em>Component Strategies. March 1999</td></tr><tr><td>KORZY</td><td>Korzybski, Alfred</td><td><em>Science and Sanity </em>1924</td></tr><tr><td>MITCH</td><td>Mitchell Waldrop, M.</td><td><em>Complexity. The emerging science at the edge of order and chaos.&nbsp;—&nbsp;asin=0671872346</em></td></tr><tr><td>NEUM</td><td>Neuman, John von, Arthur Burks, Hermann Goldstine</td><td><a href="https://library.ias.edu/files/Prelim_Disc_Logical_Design.pdf" target="_blank"><em>Preliminary Discussion of the Logical Design of an Electronic Computing Instrument&nbsp;</em></a>1946</td></tr></tbody></table></figure><h2>Voetnoten</h2><p>Zie MITCH. Dit boek is een uitstekende inleiding in de complexiteitstheorie.</p><p>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&nbsp;<a href="https://blog.reflektis.nl/why-software-bites-back/">Waarom Software terugbijt.</a></p><p>Zie NEUM. Geeft een goed inzicht in de overwegingen die hebben geleidt tot deze computerstructuur.</p><p>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)</p><p>Zie BYTE1</p><p>Zie KORSO.</p><p><a href="//ws-na.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&amp;OneJS=1&amp;Operation=GetAdHtml&amp;MarketPlace=US&amp;source=ss&amp;ref=ss_til&amp;ad_type=product_link&amp;tracking_id=httpwwwsepher-20&amp;marketplace=amazon&amp;region=US&amp;placement=0226039056&amp;asins=0226039056&amp;linkId=SOZ37QAZBKC7ONJO&amp;show_border=false&amp;link_opens_in_new_window=true" target="_blank">//ws-na.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&amp;OneJS=1&amp;Operation=GetAdHtml&amp;MarketPlace=US&amp;source=ss&amp;ref=ss_til&amp;ad_type=product_link&amp;tracking_id=httpwwwsepher-20&amp;marketplace=amazon&amp;region=US&amp;placement=0226039056&amp;asins=0226039056&amp;linkId=SOZ37QAZBKC7ONJO&amp;show_border=false&amp;link_opens_in_new_window=true</a><a href="//ws-na.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&amp;OneJS=1&amp;Operation=GetAdHtml&amp;MarketPlace=US&amp;source=ss&amp;ref=ss_til&amp;ad_type=product_link&amp;tracking_id=httpwwwsepher-20&amp;marketplace=amazon&amp;region=US&amp;placement=1572734345&amp;asins=1572734345&amp;linkId=3XN74Y2YRSW5BIOY&amp;show_border=false&amp;link_opens_in_new_window=true" target="_blank">//ws-na.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&amp;OneJS=1&amp;Operation=GetAdHtml&amp;MarketPlace=US&amp;source=ss&amp;ref=ss_til&amp;ad_type=product_link&amp;tracking_id=httpwwwsepher-20&amp;marketplace=amazon&amp;region=US&amp;placement=1572734345&amp;asins=1572734345&amp;linkId=3XN74Y2YRSW5BIOY&amp;show_border=false&amp;link_opens_in_new_window=true</a><a href="//ws-na.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&amp;OneJS=1&amp;Operation=GetAdHtml&amp;MarketPlace=US&amp;source=ss&amp;ref=ss_til&amp;ad_type=product_link&amp;tracking_id=httpwwwsepher-20&amp;marketplace=amazon&amp;region=US&amp;placement=0553345818&amp;asins=0553345818&amp;linkId=HXC2QRG3QD3QVE4L&amp;show_border=false&amp;link_opens_in_new_window=true" target="_blank">//ws-na.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&amp;OneJS=1&amp;Operation=GetAdHtml&amp;MarketPlace=US&amp;source=ss&amp;ref=ss_til&amp;ad_type=product_link&amp;tracking_id=httpwwwsepher-20&amp;marketplace=amazon&amp;region=US&amp;placement=0553345818&amp;asins=0553345818&amp;linkId=HXC2QRG3QD3QVE4L&amp;show_border=false&amp;link_opens_in_new_window=true</a><a href="//ws-na.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&amp;OneJS=1&amp;Operation=GetAdHtml&amp;MarketPlace=US&amp;source=ss&amp;ref=ss_til&amp;ad_type=product_link&amp;tracking_id=httpwwwsepher-20&amp;marketplace=amazon&amp;region=US&amp;placement=0671872346&amp;asins=0671872346&amp;linkId=D34VQ6LGGU2G6OAI&amp;show_border=false&amp;link_opens_in_new_window=true" target="_blank">//ws-na.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&amp;OneJS=1&amp;Operation=GetAdHtml&amp;MarketPlace=US&amp;source=ss&amp;ref=ss_til&amp;ad_type=product_link&amp;tracking_id=httpwwwsepher-20&amp;marketplace=amazon&amp;region=US&amp;placement=0671872346&amp;asins=0671872346&amp;linkId=D34VQ6LGGU2G6OAI&amp;show_border=false&amp;link_opens_in_new_window=true</a></p></div></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Fri, 15 Aug 2014 18:00:59 +0200</pubDate></item><item><title><![CDATA[UML for functional programming?]]></title><link>https://www.reflektis.nl/blogs/post/uml-for-functional-programming</link><description><![CDATA[This question was asked on Stackoverflow and ModelingLanguages and prompted me to attempt to make some persistent preconceptions about UML clearer. Fi ]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_XEdwmnMzSvemwCCBwiamdg" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_WMCPjxWtT6WFH8-tB_fQ3Q" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_Rt14nVBrTKWuT50pp9qwMg" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_cZiBJSDjTd-UKCtTKgY6iw" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-center " data-editor="true"><div><p>This question was asked on <a href="http://stackoverflow.com/questions/2457903/can-uml-be-used-to-model-a-functional-program" target="_blank">Stackoverflow</a> and <a href="http://modeling-languages.com/uml-functional-programs-anybody/" target="_blank">ModelingLanguages</a> and prompted me to attempt to make some persistent preconceptions about UML clearer. First of all: UML is not about modelling object-oriented software.</p><h2>Origin of object-orientation</h2><p>But maybe we should go back to what object-orientation is. OO (shorthand for object-orientation) is invented around 1970. Xerox had a group called the Software Research Group which was part of a think tank created to do research into the possible threats of the modern computer for Xerox's prime business: copying machines. This group invented in a short period of years almost everything around what we now call the modern computer: displays with bit-mapped overlapping windows, a keyboard with a mouse to manipulate the objects on the display, icons to represent various types of information, and even the network to link all those computers together called ethernet.</p><p>To create the complex software that was needed to run those personal computers, an object-oriented programming language, as well as by the way an object-oriented operating system, was deemed necessary. Alan Kay originally coined the term &quot;object-orientation&quot; although he later stressed that a better term would have been &quot;message-oriented&quot; since he envisioned a complex system of interacting elements creating complex behaviour by sending messages to each other. <br/> For more info on this original vision please read the <a href="https://archive.org/details/byte-magazine-1981-08" target="_blank">august 1981 Byte magazine</a> devoted to Smalltalk.</p><p>The assumption was that we needed a powerful new way of thinking about problems, to enable creating multiple orders of magnitude more complex software. But you see, this was not just about software. It was about a paradigm that helps in managing complexity. OO was just that, and it still is.</p><h2>Origin of UML</h2><p>When the UML effort started it only tried to merge a multitude of approaches that helped in visually representing those OO programs. So UML is not so different from OO. It is just a view on the same thing: a complex system.</p><p>UML introduced something new, however, and that was the meta model. Mainly for the tool developers, this meta model helps in designing the power of the OO modelling paradigm itself. It defines classes and metaclasses, properties and associations (as access paths for message passing).</p><p>The metamodel of UML is extensible. You can extend the metamodel with Profiles, effectively creating a specific set of language elements with a tightly defined semantics for a specific problem domain. This should not be confused with Domain Specific Languages (DSL's), because a DSL specifies a set of elements or building blocks in the domain, for example the financial domain. A UML Profile contains the semantic definitions of the syntax used to describe those domains. For example you might create a Profile for Entity Relationship modelling. And you might define a Profile for functional languages.</p><h2>Object-oriented mathematics</h2><p><a href="https://www.planetarium-friesland.nl/en/"><img class="wp-image-12036" style="width:150px;" src="https://blog.reflektis.nl/wp-content/uploads/koninklijk_eise_eisinga_planetarium_1-370x2921-1.jpg" alt=""/></a>One of my first endeavours when I learned object-oriented programming was to create a planetarium. This has been a hobby of mine all my life. To simulate the movements of bodies in the solar system a mathematical model is used. The orbit of, say, the moon can be described with an equation with a lot of variables (to approximate the orbit, since there is no analytical solution of the many body problem in physics, that is until recently). My first thought was, well this is mathematics, I probably will have a hard time moulding the mathematical equations into objects and methods and messages. But to my delight I found this was not the case at all. Once I realised that my problem domain was mathematics, and specifically equations, the follow-up was easy and everything fell into place perfectly. I had Equation objects, CelestialBody objects using those to tell their location, and time nicely proceeding helping the celestial bodies to move.</p><p>To summarise: object orientation, and UML as a domain-independent language, can be used to describe any problem domain efficiently, and help with the complexities in those domains. And you are free to implement your solution in an object-oriented language like Smalltalk, or a functional language like Haskell. OO is domain-agnostic, and implementation-agnostic.</p></div></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Fri, 28 Mar 2014 11:15:37 +0100</pubDate></item><item><title><![CDATA[How intuitive is object-oriented design?]]></title><link>https://www.reflektis.nl/blogs/post/how-intuitive-is-object-oriented-design</link><description><![CDATA[ACM Communications - May 2008 A recurring discussion is about the intuitiveness of object-orientation and its perceived complexity. Articles in author ]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_wxHPpiYWRAmWyjBDoTcF5A" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_ztsH6CWFTreSOHdEKjfvxg" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_-FjSb-PYS46EFlBgXQ4C0w" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_b98yxoD1SgG-yVQDpJzsJQ" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-center " data-editor="true"><div><div class="wp-block-image"><figure class="aligncenter size-full"><a href="https://dl.acm.org/citation.cfm?id=1342327.1342336&amp;coll=DL&amp;dl=GUIDE"><img src="https://blog.reflektis.nl/wp-content/uploads/communications200805_0043_fg.png" alt="" class="wp-image-11935"/></a><figcaption><p><a href="https://dl.acm.org/citation.cfm?id=1342327.1342336&amp;coll=DL&amp;dl=GUIDE" target="_blank">ACM Communications - May 2008</a></p></figcaption></figure></div>
<p class="has-drop-cap">A recurring discussion is about the intuitiveness of object-orientation and its perceived complexity. Articles in authoritative magazines like the ACM Communications are also wrestling with this &quot;intuitiveness&quot;.</p><p>This article struck me as especially interesting because it involved a multidisciplinary approach involving cognitive psychology, in particular the <a title="Dual" href="http://en.wikipedia.org/wiki/Dual_process_theory" target="_blank">Dual-Process Theory</a>, to research the thinking processes of object oriented modellers.</p><p>First a little about the Dual Process Theory. I found it quite interesting to see it mentioned here in this article, because it relates to several researches I have done in the past, in particular the theories of&nbsp;<a title="Gurdjieff" href="http://en.wikipedia.org/wiki/Gurdjieff" target="_blank">Gurdjieff&nbsp;</a>which influenced me heavily. I got in touch with Gurdjieff's ideas, like most people, by reading a book by his best known pupil, P. D. Ouspensky,&nbsp;<a href="http://www.gurdjieff.org/needleman1.htm" target="_blank">In Search of the Miraculous</a>, in which Ouspensky describes in an autobiographical style his encounter with Gurdjieff.</p><p>Another book by a Dutch psychologist, Peter Warnaar's Psycho-Analysis of Altered Consciousness (<a href="http://www.librarything.com/work/5420736/book/30599658" target="_blank">Psycho-analyse van de bewustzijnsverandering</a>) based on this his theory of three &quot;kinds&quot; of thinking:</p><ol><li>Mental</li><li>Emotional</li><li>Physical</li></ol><p>As Gurdjieff explained it, these three kinds of thinking have completely different &quot;speeds&quot;, with mental, rational thought being the slowest, and emotional and physical each an order of magnitude faster. In the context of dual-process theory my interpretation is that mental thinking would be analogous to System 2 or S2 thinking, and emotional to System 1 or S1 thinking.</p><p>Now back to the subject of this article. The research reported several examples of hasty, almost automatic, design decisions done by the S1 thinking processes in designers (the group researched consisted of designers with 2-12 years of experience in OO). The first example in the article is about&nbsp;<em>Confusing the direction of inheritance</em>. The second, a little more revealing in my opinion, was about&nbsp;<em>Difficulties in identifying objects</em>. A small class diagram was provided:</p><figure class="wp-block-image size-full"><img src="https://blog.reflektis.nl/wp-content/uploads/Classes.png" alt="" class="wp-image-11933"/></figure><p>This is a very elementary class diagram, but already it is revealing interesting thought processes.</p><p>The client logs in, the server validates the user. This is completely &quot;intuitive&quot;, almost a transcription of our natural language way of describing the process.</p><p>There is a discussion between two participants working on this model. Both exhibit S1 thinking, but each has a different approach.</p><p>One, called Ron, is convinced&nbsp;Login&nbsp;and&nbsp;Register&nbsp;should be modelled as objects. <br/> The other, called Sharon, has problems with his proposal, because it &quot;feels not good&quot;. <br/> Both have considerable difficulty expressing their reasoning.</p><p>Ron assures Sharon: &quot;don't worry, it will be okay&quot;. And Sharon complains about how it feels to her.</p><p>However it creates complexity where it does not need to be. <a href="https://blog.reflektis.nl/active-passive-pattern/">The&nbsp;Active-Passive pattern</a>&nbsp;has not been applied. What would be the result of applying this pattern?</p><p>The method&nbsp;ValidateUser&nbsp;would have been placed in the&nbsp;Client&nbsp;class: the client is responsible for validating himself – this would make the server simpler (almost only a container of users).</p><p>I assume this would feel ok to both Sharon (it is a method) and Ron (it is a cohesive set of responsibilities).</p><p>The validation process itself would be a candidate for delegation: create a&nbsp;Validation&nbsp;class that is private to the&nbsp;Client&nbsp;to do this. This is a reasoning process which is seldom taught at schools and universities, or on courses in OO. However it is extremely simple and would help in providing both Ron and Sharon with a firm foundation for both S1 and S2 thinking – because I am convinced only the seamless cooperation between the two (or as I see it, three) modes of thinking result in high quality models that reap the benefits of the power of object-orientation. Benefits that I fear I must conclude, are hardly never reaped because of fundamental misconceptions about the nature of OO, and a widespread ignorance about what OO actually is.</p><p>To conclude, I think that being aware of the different modes of thinking can be very valuable in learning OO or for that matter any method or theory. Also I have argued <a href="https://blog.reflektis.nl/the-importance-of-metaphors/">elsewhere</a> that there may be &quot;tricks&quot; or mnemonics that can help in bridging the gap between these modes of thinking. Finally, the fact still remains that internalising knowledge (which is the path to wisdom, or in the case of modelling, mastery) is a lot of work and requires time, effort and talent.</p></div></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Sun, 18 May 2008 14:37:27 +0200</pubDate></item><item><title><![CDATA[The Essence of OO]]></title><link>https://www.reflektis.nl/blogs/post/the-essence-of-oo</link><description><![CDATA[The essence of OO can be summarised in two statements: Active/passive rule Demand-chain cooperation This article introduces these two important and under ]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_J9_VQL-PS4SgFmxsFKh2rQ" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_BRwu1uBGToiuBSyaYuSJcQ" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_aYE_MvlNQq6iHdQP4FcBOQ" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_iLefngJ7SdGGbs-5AN_zWA" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-center " data-editor="true"><div><p>The essence of OO can be summarised in two statements:</p><ol class="wp-block-list"><li>Active/passive rule</li><li>Demand-chain cooperation</li></ol><p>This article introduces these two important and undervalued patterns.</p><h3 class="wp-block-heading" id="h-the-active-passive-rule">The Active/Passive rule</h3><p>This rule can be summarised as follows:</p><figure class="wp-block-pullquote"><blockquote><p><em> &quot;Objects that are active in the real world are modelled as passive, and vice-versa.&quot; </em></p><cite>Rob Vens</cite></blockquote></figure><p>This is only a trick. Many modellers have stated that the object-oriented model is a representation of the real world. This is true, but not entirely. And the model differs from the real world in exactly these two essential characteristics. The active/passive rule turns <em> behaviour </em> around.</p><p>There is a strong synergy between this rule and the next, because the way we should couple objects (or services for that matter) is based on first modelling objects active/passive, and then thinking about which responsibilities we would like to delegate to them. This way service interfaces are created that realise exactly what we want: loosely coupled, maximally cohesive systems.</p><p>An important rule is that &quot;external&quot; objects, usually modelled as actors, are modelled inside the system as normal (but passive) objects. This way it is clear and unambiguous what entry points there are for the external world into the software replica of this world. Modelling these objects as passive avoids the pitfall of modelling complex objects that are hard to understand and even harder to modify. All aspects of these complex objects in the real world are externalised into active objects. An example: a person uses a pencil. In the real world the person is active, the pencil is passive. In the software replica model we turn things around: the person becomes passive, and almost void of complexity. The pencil becomes active, and all behaviour corresponding to writing is delegated out of the person into the pencil. And even then, if the pencil becomes too complex, we use the rule of delegating responsibilities to make each of the active objects so simple that only one responsibility remains - all else is delegated away into other active objects. The resulting network of cooperating objects is complex as a whole, but simple when zooming in. The net result is a network of objects that is easy to manage.</p><h3 class="wp-block-heading" id="h-the-demand-chain-cooperation">The demand-chain cooperation</h3><p>This rule can be summarised as follows:</p><figure class="wp-block-pullquote"><blockquote><p><em>&quot;To fulfil their goal in life, objects search for other objects to delegate their responsibilities to by inverting time, and starting their search at the end: the final purpose or outcome of their cooperation.&quot; </em></p></blockquote></figure><p>Again, this is only a trick. There is no other way to reach the goal of loosely coupled objects, which cooperate to accomplish complex tasks, which can scale in time to become more and more complex. Objects perform tasks as a result of the responsibility delegated to them. When the task has been designed following a supply-chain process, this task is too tightly coupled to the requestor or delegator. The process cannot change in time to adapt to the changing business, but has been used as the criterion on which to base the objects’ responsibilities and behaviour. The process has been cemented in tightly coupled objects. The demand-chain rule turns <em> time </em> around.</p><p>The way messages are used to request objects to perform a service is widely misunderstood. As an article Service Oriented Architectures vs. Distributed Object Technologies (not available anymore, sorry)&nbsp;tried to argue, many people have understood message between objects as something more or less similar to function calls: an invocation of a method on an object. As Dan Ingalls already in 1981 in the famous August 1981 issue of Byte Magazine tried to explain<sup class="see_footnote"><a href="#footnote1">1</a></sup>, objects sending messages do something quite different: they politely request the receiver to perform a service. The receiver then decides if, how, what and when to do that. Messages as they should be modeled in object-oriented languages do not differ from the way messages are to be modeled in service oriented architectures. The argument, often repeated, that service invocation is &quot;completely different&quot; from object-oriented message passing, is false for properly modeled object-oriented models.</p><p>Modern developments in supply chain management clearly emphasize the advantages of demand chain processes for just-in-time inventories, flexible processes etc. This is exactly what we are talking about here.</p><p>Both rules are deceptively simple, and both rules are usually completely overlooked in publications about object orientation.</p><p>There are many more rules to good object-oriented modelling, to name a few:</p><ol class="wp-block-list"><li>Objects are simple. Their purpose and behaviour should be understandable within minutes.</li><li>Objects abhor responsibilities. Designers wishing to place a responsibility with an object, are met with strong refusal, especially if the object already has one responsibility.</li><li>Objects represent behaviour, in particular responsibilities delegated to them. They do not represent data or business rules.</li><li>Business rules exist. In object-oriented models they are contained and managed by objects in a way that effectively encapsulates them.</li></ol><p>In future articles I expect to come back to many of them and many new ones. These rules are just a few, as an example. In fact there are many more, even several hundreds. No experienced modeller has all these rules in his or her consciousness, but on the subconscious level they work without pause to help create good object-oriented models. However the two rules comprise the essence of OO show examples in models that are created with, and without the application of these rules, is something we need to do a lot to help in developing better and more complex systems.</p><p>Future articles mentioned above:</p><ul class="wp-block-list"><li><a href="https://blog.reflektis.nl/active-passive-pattern/">Active-Passive Pattern</a></li><li><a href="https://blog.reflektis.nl/time-inversion-pattern/">Time Inversion Pattern</a></li></ul></div></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Fri, 26 Jan 2007 17:26:39 +0100</pubDate></item><item><title><![CDATA[What is wrong with UML?]]></title><link>https://www.reflektis.nl/blogs/post/what-is-wrong-with-uml</link><description><![CDATA[We find it so hard to cope with complexity in IT, that every time an evolving standard, like UML , is becoming too complex, we tend to drop it in favo ]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm__bUZqCrZTTyx1DnjguRsSA" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_BrflFpEvS2ONZkfe9w7vwA" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_f7VgXP0kSQKnXBdIfSri8Q" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_AfXNhfcgQUa9nIq_aiAAuw" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-center " data-editor="true"><div><p class="has-drop-cap">We find it so hard to cope with complexity in IT, that every time an evolving standard, like <a href="http://www.omg.org/uml"> UML</a>, is becoming too complex, we tend to drop it in favour of something new. The new being, because it is new, simple and understandable. While it lasts …</p><p>We see this with the rising popularity of <a href="http://www.rubyonrails.org/">Ruby</a>. Developers are flocking to this new thing as if mesmerized, disillusioned by the complexity of delivering value with the Java frameworks.</p><p>Now there are two reasons something can be complex. In fact I propose there are two classes of complexity.</p><ol><li>Flawed complexity. It is handicapped by nature, and all the add-ons that make it complex are added in a vain and ever more frantic attempt to make it manageable.</li><li>Living complexity. It is growing in a natural way, and complexity is a derived attribute of its growth, but the essence in the local structures remains simple and effective.</li></ol><p>UML is, I would like to propose, simple in its essence, being of the second class. The basis axioms remain easy to understand. <a href="http://java.sun.com/javaee/reference/">Java EE </a> on the other hand (to name a rather random other standard) is not simple, not in its building blocks, and not in the way it has to be used. It belongs to the first class of complexity.</p><p>Naturally complex solutions still remain complex, and require mastership in using them. It is counterintuitive in some aspects, one being that it is useless to attempt to understand it in its entire structure. Human beings, especially engineers I am afraid, have this urge to get an overview, to understand the global picture. With any class of complexity this is useless. However the second class of complexity offers help in the essential characteristic of being simple in its local structures. When you zoom in into the complex weave, any place you find yourself in is easy to understand, easy to do things in. When you zoom out, the structure quickly becomes unintelligible. With the first class of complexity zooming in will never offer solace, every local structure is still so intertwined with transitive dependencies that changing any local aspect can break something several degrees of separation apart.</p><p>The fact that UML in the essential building blocks is so simple, is as far as I am concerned the reason it should not be thrown away just because the standard as a whole is becoming so complex. The attribute of local simplicity is what we should judge standards with, not the attribute of global complexity.</p><p>Solutions we create are complex by nature. This is not something to avoid, but instead something we should deal with. Making a distinction between these two kinds of complexity can help.</p></div></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Thu, 23 Nov 2006 15:02:39 +0100</pubDate></item><item><title><![CDATA[The Rise and Fall of OMT]]></title><link>https://www.reflektis.nl/blogs/post/the-rise-and-fall-of-omt</link><description><![CDATA[(This article has originally been published in the Spring '96 ING Component Architecture newsletter - ICA) Back ten years or so, when I started dabblin ]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_DaxW_Ig-Q_uYDQBJvLrnxw" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_ASRMSUFFTsuErdH6Mp9u8Q" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_F8Gvp5oPRDqUqaplQxBUIQ" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_HFpqXw2URpmjBL7Q5dodug" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-center " data-editor="true"><div><p>(This article has originally been published in the Spring '96 ING Component Architecture newsletter - ICA)</p><p class="has-drop-cap">Back ten years or so, when I started dabbling in object technology, I could afford to be some kind of a “software hippie”. I’m sure you know the kind. They pop up every now and then, even in respected software companies (I didn’t name one, did I?). They radiated the unrelenting optimistic attitude that melted the software crisis, budget restrictions and management dedicated to the old ways like an overheated nuclear reactor. They seem to become however, at least from my point of view, rarer. But then my point of view has changed of course. What was a new, untested, and indeed overly optimistic and enthusiastic “new wave”, has now become a respected and accepted technique. I have less and less difficulty in advocating this “new way” to the decision makers. Instead of bright and curious technical persons, often working as programmers in the larger companies, it is more and more middle and higher management acting as object oriented evangelists. So I started wearing ties, stopped trying to convince and put my efforts in the “how” instead of the “if”.</p><h2>What is OMT?</h2><p>Don’t be afraid that I am going to give a full synopsis of OMT here. I will give a short introduction in general terms to lay the groundwork for my arguments later in this article. I am not assuming you have any previous knowledge of object-oriented methods.</p><h2>Origins of OMT</h2><p>OMT, short for Object Modeling Technique, was one of those that survived the years to become a de-facto standard in software engineering. Developed at General Electrics as a an in-house modeling technique, it quickly grew after its introduction into the world with the book <a href="#_fn1"><sup></sup></a> as the most popular analysis method (or, as the Americans say: methodology, which seems to be semantically incorrect).</p><h2>OMT growing pains</h2><p>The first publication did arrive in a vacuum that filled up very quickly with numerous analysis and design methods. On a conference last year one of those methodologists reported to have counted 34 of those methods. Which was for him reason enough to announce the demise of his own method.</p><p>Of course this proliferation of methods only reflected the uncertainty that companies faced in working with the new object-oriented tools and languages. Frantically looking for solutions they seemed prepared to try anything. For some of us this created a feeling of déja-vu. Didn’t we see this same sequence of events with the rise of structured methods?</p><p>For the chief methodologists this created some kind of a dilemma, which was reflected in the main publications where they started efforts towards some kind of unification and warnings against a “methods war”. The success however of some methods was undeniable. Especially OMT was more easy to adopt because of the many similarities with structured analysis and design, and its close pictographic similarity to Entity-Relationship modeling.</p><h2>Merging of methods</h2><p>It became obvious that most of these methods concentrated on some of the phases in software engineering. OMT was strong in analysis, weak in the design, and in fact completely lacked tools for requirements analysis. Another player in the methods field, Grady Booch, who had also published a book on object-oriented design, took up the glove and did the obvious thing: he employed the main methodologists of two of the most popular methods, James Rumbaugh who had become the main spokesman of the OMT method, and Ivar Jacobson who had created a method called Objectory.</p><h2>Objectory</h2><p>The power of Objectory came from a surprising direction: process modeling. Its main concept was use-cases, which described in a more or less formal way the interactions of external agents (called actors) with the proposed system. This approach has the advantage that is becomes much easier to communicate requirements of the future system with its (potential) users.</p><h2>Unified Method</h2><p>The merging of these three methods promises to have a synergistic result. Together they cover the whole process of software development in a more or less complete way. The method resulting from this merger however, has taken a long time in maturing and is still not yet completely published. A white paper exists on the Internet (www.rational.com), but concentrates mainly on the notational aspects. Only incidental publications have appeared in the main object-oriented magazine<a href="#_fn2"><sup></sup></a> .&nbsp; It is understandable therefore that most organizations are deferring the use of this method and continue to work with more or less adapted versions of their old method.</p><h2>Applications of methods</h2><p>Before I continue it is perhaps good to emphasize that although there may be many methods, there are more similarities than differences. They all contain a central repository which is called the Object Model. They all emphasize that modeling the problem domain may not be the largest portion of the work to be done (this is usually the user interface) but it is the most important portion.</p><p>This is where I will come to the main argument of my article: the emphasis on modeling. Some of you may have encountered the old-style computer analyst. It used to be a person with a computer science degree or something similar. He or she was invited in your organization and quickly assumed to know more and better of your problem domain (say: banking) than you. This arrogance is one of the main disadvantages for object-oriented analysts today: they have to cope with the mistakes of their colleagues in the past. In object-oriented modeling several things are happening at the same time:</p><ul><li>tools are provided that lay emphasis on abstraction and problem domain modeling</li><li>the role of the user in creating these models is central, that of the analyst is more of an enabler</li><li>the evolution of these models is much more controllable from a user’s point of view because of the continuous and consistent feedback with the user or domain expert (for example with prototypes)</li></ul><p>So actually users of an object-oriented application are in a much more empowered position than before. This has a heavy impact on the whole development process, which might be the subject of another article.</p><p>This empowerment of the user has unexpected results though: it leads to a more involved interest in modeling of the users themselves. And here is where object-orientation is beginning to prove its power of abstraction. Whether they are astronomers, biologists, economists or carpenters, it appears that object-oriented domain knowledge capturing is easier and more effective than other techniques. Object-oriented models capture domain knowledge. So it is easy to understand why there is such an interest in business objects: these object-oriented business models are becoming repositories of critical business concepts. Perhaps we will see that industrial espionage of the (near) future will concentrate on business models. And maybe we will see underground vaults guarding the most valuable assets of businesses: object models.</p><hr class="wp-block-separator"/><div id="ftn1"><p><a title="_fn1" name="_fn1"></a><a href="https://openlibrary.org/works/OL17019401W/Object-oriented_modeling_and_design?edition=objectorientedmo00rumb">James Rumbaugh et.al.: Object-Oriented Modeling and Design, Prentice-Hall 1991</a></p></div>
<div id="ftn2"><p><a title="_fn2" name="_fn2"></a> SIGS publications publishes Journal of Object Oriented Programming Languages and Object Magazine.</p></div>
</div></div></div></div></div></div></div></div> ]]></content:encoded><pubDate>Mon, 12 Aug 1996 20:49:46 +0200</pubDate></item></channel></rss>