Skip navigation.
Home
Software-architectuur.nl de site van en voor software architecten!

Voorbeeld Duine Framework rediscovery

Novay (voorheen Telematica Instituut) begeeft zich tegenwoordig ook in het open source circuit. Zij hebben een Java framework beschikbaar gesteld om aanbevelingen mee te doen. Bijvoorbeeld welke gebruiker kijkt graag naar welk type televisieprogramma's en dus in welk programma is hij mogelijk geinteresseerd. Meer informatie over Duine is te vinden op Duine Framework.

Novay engineers zijn nauwelijks beginnenlingen te noemen, dus een analyse van hun release candidate lijkt op zijn plaats. Jaap Reitsma, één van de engineers, heeft een paar dagen met Lattix zitten spelen en op basis van zijn bevindingen zijn een aantal wijzigingen doorgevoerd, voordat de release candidate is gepubliceerd. Ik heb deze versie opgepakt en gepoogd zonder enige voorkennis van de applicatie de logische structuur te vinden. De logische en de implementatie structuur kunnen nog wel eens afwijken afhankelijk van de kwaliteit van het initiele design. Het is dan ook een goede oefening om op basis van beperkte kennis van de applicatie inzicht te krijgen door te structureren.

Structureren betekent in principe stoeien met hierarchiën, lagen en afhankelijkheden. Het resultaat van deze acties is te zien in de volgende twee diagrammen.

Conceptual Architecture Diagram Duine

Figuur 1, Conceptuele architectuur Duine Framework

DSM of Duine Framework

Figuur 2, Dependency Structure Matrix van Duine Framework

In figuur 1 is het conceptuele architectuur diagram van Duine weergegeven. Ik heb mij hier beperkt tot de kern van het systeem. De Recommender bestaat uit een drietal onderdelen, die gelaagd op elkaar liggen. De Validator en Replayer maken beiden gebruik van de core functionaliteit van de Recommender. Alle drie persisteren zij objecten in een Object Relational Mapper (Hibernate). Om te zien of de logische structuur (figuur 1) overeenkomt wordt de DSM getoond (figuur 2). In de DSM wordt door middel van de getallen aangegeven of er een relatie bestaat tussen twee onderdelen. Staat een getal in een cel onder de diagonaal dan betekent dat, dat deze afhankelijkheden heeft met een hoger gelegen module/class. Dus onder de diagonaal bestaat dus een top-down relatie. Relaties boven de diagonaal zijn dan ook ongewenst omdat zij een duidelijke hierachie doorbreken. Onder de modulenamen (met hoofdletters) schuilen de Java classes of database entiteiten, zou ik daarop inzoomen, dan zie je dus de classes en tables.

Met deze kennis gewapend is dus duidelijk te zien dat de kern van Recommender (figuur 2) conform de lagen in het Conceptuele Architectuur Diagram is gerealiseerd. Dit betekent dus dat het logische model (figuur 1) en het implementatie model (figuur 2) goed overeenkomen. Dit is belangrijk om te weten, aangezien afwijkingen een eerste indicatie zijn van een slordige implementatie die in de toekomst sneller complex wordt dan gewenst. Kortom de release candidate van Duine is een goed begin.

Met name voor open source projecten geldt dat de complexiteit (en daarmee de analyseerbaarheid en begrijpelijkheid) van een applicatie zo gering mogelijk moet zijn. Is dit niet het geval, dan zullen contributors relatief veel (eigen) tijd in de applicatie moeten steken om aanpassingen en uitbreidingen te kunnen doen.