Afgelopen week is het expert panel voor software ontwikkeling gevormd. Als lid van dit panel zal ik mijn bijdragen leveren aan artikelen/discussies die gepost worden op de site van de Computable en het blad zelf. Door deel te nemen aan dit panel kan ik mijn mening laten horen over moderne software ontwikkeling. Ik ga er vanuit dat er vele interessante discussie gaan komen. De eerste discussie die door de redactie gestart is heet: “Ontwikkelaar omarmt agile en Web 2.0“. Niet echt twee onderwerpen die direct samenhangen, maar het gaat wat mij betreft dan ook om de achterliggende discussie die men wil los maken.
Categorie: Publicatie
DDD en DSL: een mooie combinatie!
Werken met een domeingedreven applicatie architectuur is mooi. Daarnaast zien we nu veel gesproken worden over DSL. Zeker in de Microsoft wereld is dit een hot topic. In dit artikel hebben we kort beschreven hoe DSL’s gebruikt kunnen worden in een domeingedreven ontwikkelomgeving. Het artikel:
DDD en DSL.
Overigens binnen Sogyo hebben een DSL ontwikkeld om NHibernate mappings en configuraties bestanden te genereren. Een goed voorbeeld van een horizontale DSL die vooral veel herhalend werk uit handen neemt. Mocht je hiermee aan de slag willen stuur dan ff een mailtje.
Waar ligt de essentie van jouw software?
Hierboven staat een vraag die je niet dagelijks zult krijgen. Toch is het in de software ontwikkeling wel één van de belangrijkste dingen om bij stil te staan. Waar draait het nu eigenlijk om in je software? Draait je software om de database? Draait het om de User Interface?
Het zou kunnen dat je veel gegevens opslaat en muteert. Dan is de database belangrijk, maar in dat geval betekent dat, dat je veel CRUD-activiteiten uitvoert. Daar ligt immers de kracht van onze relationele databases.
Als het om de UI draait, zijn vanzelfsprekend de schermen die onze gebruikers te zien krijgen van belang. De schermen zijn vaak het aanknopingspunt met de gebruikers van de software: door de functionaliteit te visualiseren, wordt immers voor de gebruiker duidelijk wat de software zou moeten doen.
Dit alles neemt niet weg, dat we de essentie van de meeste software niet terugvinden in de databases of de UI. Om de essentie van software vast te stellen is het handig een blik te werpen op het werk van Fredrik Brooks. In “No Silver Bullet” beschrijft hij het verschil tussen de essential complexity en accidental complexity. Vrij vertaald zegt hij daarin dat we in onze software onderscheid moeten maken tussen de delen die de kernproblematiek (essential) ondersteunen en alle faciliterende logica (accidental). Wanneer we dat relateren aan de software die we maken, dan gaat het in de kern om de logica die onze businessprocessen ondersteunen. De essentie van onze software vinden we dan dus niet terug in de database of UI. Daar willen we immers de businesslogica niet in plaatsen.
Dit maakt dat Domain Driven Design op dit moment zoveel aandacht geniet: alleen in een domeinmodel plaatsen we namelijk puur en alleen alle logica die onze businessprocessen representeert. Om deze kern van logica draait onze software. Dat is de essentie!
Als het domein (met daarin de businesslogica) de essentie is, dan is volgens het denken van Brooks de overige logica slechts faciliterend. Deze overige logica zorgt ervoor dat we in staat zijn ons domein in haar levencyclus te ondersteunen. Anders gezegd: het domein (dat de businessprocessen ondersteunt) maakt de software uniek.
De faciliterende onderdelen zijn niet uniek voor het domein. Daarom kunnen die onderdelen generiek gemaakt worden en makkelijk hergebruikt worden om verschillende domeinen te ondersteunen. Deze logica kan in frameworks belanden, of misschien zelfs in taal. Technieken als Domein Specific Languages maken het mogelijk om deze functionaliteit in tekstuele dan wel visuele talen te plaatsen. Vervolgens kan vanuit deze talen de concrete implementatie genereert worden.
Ondanks het feit dat het soms lijkt dat onze software draait om de database of de schermen, blijkt dat de businesslogica de uiteindelijke kern vormt. Door deze centraal te stellen en onafhankelijk te maken van alle andere code eromheen, leggen we daar de focus op in onze software. De overige onderdelen kunnen we daarna genereren of zoveel mogelijk in standaard frameworks plaatsen. Wanneer je frameworks als Spring of Seam toepast, is het goed om de essentie van je software in de gaten te houden. Zorg er dus voor dat deze frameworks je businessdomein faciliteren!
DDD in de praktijk
Dit artikel is verschenen in de New Stuff (het blad van de SDN) van April 2007. We (Andre Boonzaaijer en ik) zetten in het artikel een aantal implementatie strategieen uiteen. Goed om over na te denken om te zien welke oplossing het beste werkt in je eigen partijk. Download het artikel in PDF DDD in de praktijk.
Domain Driven Design: achtergronden en ervaringen uit de praktijk.
Samen met mijn collega’s Thomas Zeeman en Ralf Wolter heb ik dit artikel geschreven. Met dit artikel hebben we met name een aantal geleerde lessen uit de praktijk willen delen. Tevens hebben we natuurlijk kort nog even aangegeven waarom DDD interessant is. :-). Download hem hier als PDF Domain Driven Design: achtergronden en ervaringen uit de praktijk.
Text mining for portals: Giving words a meaning
Parallel aan mijn werk in praktijk heb ik een Master of Science gevolgd bij CIBIT. Om deze studie af te ronden heb ik onderzocht hoe Text Mining technologie toegepast kon worden voor een organisatie als CIBIT. Vanuit de literatuur heb ik uiteengezet wat Text Mining behelst en vervolgens aan de hand van tools van Autonomy vastgesteld wat deze voor CIBIT konden betekenen. Download de thesis hier in PDF: Text mining for portals: Giving words a meaning.
XML en UDDI: het ontdekken van diensten op het web
Dit artikel is alweer een oude. Ik heb het geschreven toen web services nog populair moesten worden en UDDI nog veel potentie had. Inmiddels weten we wat er van geworden is. Juist weer interessant om de hype en de echte trends te onderscheiden. Download het artikel hier in PDF: XML en UDDI: het ontdekken van diensten op het web.