Bij het modelleren/refactoren van een functionaliteit wil je zo flexibel mogelijk zijn, waarbij je je wilt houden aan onder andere het design principle Open-Closed Principle (OCP). Je weet dat bepaalde zaken zullen veranderen, zorg er dan ook voor dat het model dit ondersteunt.
Wat helaas hierin veelal ontbreekt, is de specifieke domeinkennis om de veranderlijkheden te onderkennen. Met als gevolg dat je (te) vaak werkt volgens het principe take the first bullet terwijl je dit met een beetje voorkennis had weten te voorkomen.
De meeste domeinkennis moet nog steeds bij de mensen uit de business komen, maar om met onze modelleertermen aan te komen werkt vaak niet verhelderend. Neem bijvoorbeeld de term points of extensibillity.
Ik pleit er voor om de term extensibillity in deze te veranderen in change. De term change spreekt over het algemeen meer tot de verbeelding van degenen met domeinkennis. Het dwingt de gedachten de richting van de toekomst te kiezen. Welke zaken gaan veranderen. Buiten uitbreidingen, wat is veranderlijk in het geheel.
Binnen het kader van Agile en XP staat verandering in een hoog vaandel. De uitdrukking embrace change -Kent Beck- dient zich dan ook meteen weer aan.
Als ontwikkelaar moet je rekening houden met elk punt in je ontwerp dat aan verandering onderhevig kan zijn. Het is met deze kennis dat we op de juiste plekken de juiste patterns kunnen toepassen om op veranderingen te anticiperen.
Ik hoor graag wat jullie hiervan denken…