We waarderen het zeer dat Marco Roling een uitgebreide reactie heeft willen schrijven op ons artikel over objectgeoriënteerde domeinanalyse. Dat draagt bij tot het verder aanwakkeren van het vuurtje over een betere domeinanalyse. We zijn het met hem eens dat zo’n discussie voorlopig een bittere noodzaak is.
Roling spreekt over "oude wijn in nieuwe zakken". We ontkennen op geen enkele manier dat de methode van Nijssen, die zich ontwikkeld heeft tot de FCO-IM-methode (Field Change Order – Inter Modulation, red.) zoals die door Bakema en anderen is beschreven, aan de wieg heeft gestaan van Expo. In plaats van dat dezelfde wijn in een nieuwe zak is gedaan, is die wijn een belangrijk ingrediënt van Expo. FCO-IM is een uitstekende methode om tot een relationeel databaseschema te komen, maar levert niet zomaar een klassendiagram op. Expo voorziet in technieken om vanuit geanalyseerde expressies tot een gedetailleerd klassendiagram te komen. Omvangrijke onderdelen van FCO-IM, die een rol spelen in de transformatie naar een relationeel schema, maken daarentegen geen deel uit van Expo. Analisten die FCO-IM niet kennen en niet het doel hebben een relationeel schema op te stellen, hoeven zich hier dan ook niet in te verdiepen. De verschillen tussen FCO-IM en Expo zijn zo groot dat het gerechtvaardigd lijkt dit een andere methode te noemen. Zo wordt er binnen Expo, afgezien van verschillen in vormgeving, bijvoorbeeld heel anders omgegaan met overerving, met identificatie, met de verwerking van relaties tussen meer dan twee onderdelen en wordt er aandacht gegeven aan het toewijzen van dynamiek aan de juiste klassen.
Als gewapend beton
In dezelfde passage lijkt het erop dat Roling ons er in zekere mate van verdenkt dat wij met eer, die anderen toekomt, aan de haal gaan. Het gaat ons niet zozeer om het verwerven van eer als wel om het presenteren van een goede methode. De metafoor van het gewapend beton spreekt ons wel aan. Zoals gewapend beton een veel stevigere constructie oplevert dan niet-gewapend beton, denken wij dat een model ontwikkeld met de Expo-methode een veel degelijker model oplevert dan met de traditionele methoden.
Bij het inventariseren van gedrag laten we ons in eerste instantie leiden door de informatie uit het klassendiagram. Per attribuut en per associatie wordt overwogen of er een methode wordt aangeboden om betreffende kenmerk(en) opvraagbaar en/of wijzigbaar te maken (we zijn het dus met hem eens, dat het niet altijd gewenst is om alle kenmerken van een object publiek te maken).
Zodra in het klassendiagram de gedragscomponent conceptueel is ingevuld, wordt het belangrijk om te verifiëren of dit gedrag afdoende is. Door bijvoorbeeld systematisch scenario’s van use cases uit te voeren kan het klassendiagram worden gecheckt; meestal zal dit tot verfijningen in het klassendiagram leiden.
Bij het illustreren van onze Expo-methode hebben we ons van een casus (voetbalkampioenschap) bediend die voor een groot lezerspubliek begrijpelijk is. De methode werkt ook voor specialistische domeinen. De leesbaarheid van het artikel was niet gediend met het behandelen van een specialistisch domein. Zelf hebben wij het probleem nog niet gevonden dat met Expo niet tot een veel beter resultaat te brengen was dan met de traditionele methoden. We dagen de lezers uit om met een casus te komen waarmee we het voordeel van de Expo kunnen demonstreren. Een uitnodiging voor het uitvoeren van een OO-domeinanalyse voor welk bedrijf of instituut dan ook, zien wij graag tegemoet (reacties: f.vonken@fontys.nl).
Koppeling en cohesie
Verder stelt Roling terecht dat er geen 100 procent zekerheid bestaat dat alle klassen met Expo worden gevonden. Doordat direct objecten in onderlinge samenhang bekeken worden, is de kans veel minder groot dat er klassen vergeten worden. Door de vorm van de methode is de betrokkenheid van domeinspecialisten gemakkelijker en wordt de kans verkleind dat er klassen worden vergeten. In dezelfde alinea spreekt hij over de vrijheid van de analist om service-objecten te introduceren. Het ontwerpen van service-objecten stellen wij uit tot de ontwerpfase. Het toepassen van ontwerppatronen zoals onder meer beschreven door Gamma en anderen is zeer nuttig. Deze ontwerppatronen heb je gedurende de analysefase echter nog niet nodig.
Voor een uitgebreide beschrijving van onze methode verwijzen we naar het in april 2001 bij Academic Service te verschijnen boek. De beschrijving in ons artikel is noodzakelijk heel beknopt. Daardoor heeft onder meer het aspect ‘lage koppeling en hoge cohesie’ weinig aandacht gekregen. Roling suggereert dat een klassendiagram verkregen met Expo een te hoge koppeling dreigt te krijgen. De Expo-methode leidt zeker niet, zoals beweerd wordt, "tot het ongecontroleerd aanleggen van zoveel mogelijk relaties". Heeft hij overbodige relaties geconstateerd in het klassendiagram over het voetbalkampioenschap? De kracht van de methode is juist dat er alleen gecontroleerd associaties gevormd worden. Alleen noodzakelijke associaties worden aangelegd en tevens is altijd duidelijk wat de betekenis van deze associaties is. In dit opzicht schiet de traditionele methode duidelijk tekort. Dit blijkt onder andere uit de aanwezigheid van teveel en onduidelijke associaties in veel modellen die op die manier gemaakt zijn.
Juiste associaties
Overigens, om te bepalen of een associatie de koppeling beïnvloedt, is het van belang de richting van een associatie te kennen. Een klasse A die door een andere klasse B "gekend" wordt, terwijl het omgekeerde niet geldt, heeft een relatie met die andere klasse, terwijl de koppeling van A hierdoor niet beïnvloed wordt. Doordat met Expo de juiste associaties gelegd worden en niet meer dan dat, en doordat in een klasse die kenmerken bij elkaar komen die ook echt bij een klasse horen, ontstaat er juist een hoge cohesie en een lage koppeling. Bij toepassing van traditionele methoden heeft ‘een lage cohesie en hoge koppeling’ twee oorzaken. Ten eerste is er geen geschikte aanpak voor het vinden van de juiste associaties. Hierdoor worden gemakkelijk teveel en onduidelijke associaties aangelegd die tot een te hoge koppeling leiden. Ten tweede kan te veel aandacht voor het gedrag er gemakkelijk toe leiden dat gedrag niet meer duidelijk gekoppeld is aan de kenmerken waarop dat gedrag betrekking heeft. Bijvoorbeeld, het ontstaan van serviceklassen kan hiervan de oorzaak zijn. De klassen die de kenmerken bevatten waarmee zo’n serviceklasse werkt, zijn vanzelf sterk aan deze klasse gebonden, met als gevolg een hoge koppeling. Omdat het hierbij om verschillende klassen kan gaan, heeft de serviceklasse meestal een lage cohesie.
Frank Peeters Frens Vonken Fontys Hogeschool Informatica