Visie vertaalt zich in softwarearchitectuur


By Han van Roosmalen - Posted on 09 February 2010

Veel succesvolle softwarebedrijven hebben een ding gemeen, Het geheim achter hun succes heet visie. Visie drijft de ontwikkeling van een softwareapplicatie of een software productlijn. Het omzetten van visie in een product is geen rocket-sience je hoeft ook niet de beste programmeurs van de wereld te hebben om het te realiseren.

In verschillende projecten en omgevingen heb ik zowel de waarde als het gemis van een visie mogen ervaren. Als er een visie is dan is het maken van een model en een softwarearchitectuur veel eenvoudiger. Hoewel misschien niet alles aan het begin klip-en-klaar is vallen puzzelstukjes vanzelf op de juiste plek omdat alles logisch lijkt en ook is. Gebeurt dit niet dan is dit een teken aan de wand. Het product wil niet af komen, enthousiasme is tanende, kosten lopen op. Onderhoud wordt een blok aan het been.

Ik was laatst voor een live scan bij een bedrijf dat al ruim 10 jaar softwareapplicaties bouwt, in die 10 jaar is de innovatie beperkt gebleven. Hier en daar is nieuwe functionaliteit bijgebouwd. Soms heeft dit tot een nieuw product geleid. Wellicht was dit meer toeval dan wijsheid. Inmiddels is de technologie waarin de applicaties gebouwd zijn verouderd en wordt bijblijven steeds moeilijker. Ik vermoed zelfs dat als klanten zien dat er modernere producten zijn dat zij een overstap zullen maken.

Onderhoudskosten beginnen uit de hand te lopen en om deze te beteugelen is een jaar of wat geleden besloten om het onderhoud te gaan offshoren naar een voormalige Sovjet staat. Vreemd genoeg is nu het aantal medewerkers direct en indirect fors gestegen, maar lijkt het einde niet in zicht en de productiviteit is ook niet significant toegenomen. Eigen resources worden ingezet om de buitenlandse medewerkers te helpen bij een schier onmogelijke taak. Documentatie ontbreekt, code is in het Nederlands geschreven en voorzien van Nederlands commentaar (als er al commentaar gebruikt wordt). De offshoreders moeten dus naast applicatiekennis op doen ook nog een cursus Nederlands voor anderstaligen volgen.

U zult zich inmiddels afvragen wat heeft dit nu met visie te maken? Welnu, visie had hier het volgende kunnen opleveren:

  1. Als we ons eerder gerealiseerd hadden dat een onderhoudsfase zich had kunnen voorgaan doen, waarom documenteren we dan in het Nederlands?
  2. Als we weten dat technologieën moderniseren, waarom richten we onze softwarearchitectuur dan niet in om dit te realiseren? Dit is niet zo moeilijk als het klinkt. Immers de nieuwste technologieën hebben bijna altijd betrekking t.a.v. oplossingen aan de user interface kant van een applicatie. Wat er onder de user interface in de domein/business laag of de database hangt is veel minder afhankelijk van de grillen van de nieuwste user interface technologie.

M.a.w. als we weten wat de visie t.a.v. een applicatie, dan hebben we ook een handvat om te bepalen of we willen investeren in slimme architecturen. 

Persoonlijk hecht ik veel waarde aan een goed en voldoende flexibel domeinmodel en minder waarde aan een GUI of deze nu opgebouwd is met HTML, Silverlight, Flex of Java Server Faces of een andere modegril. Als de businesslaag staat als een huis voorzien van goede duidelijke interfaces, SOA is wat dat betreft geen must, is het moderniseren van een user interface in veel gevallen snel en eenvoudig te realiseren.

Ik kan dit staven met een ander voorbeeld van een project dat succesvol verlopen is. Het product betreft een geautomatiseerd busstation. U heeft ze waarschijnlijk allemaal wel eens gezien, in een aantal grote steden zijn er zogenaamde dynamische busstations. Door middel van grote borden bij de verschillende haltes wordt de reiziger geïnformeerd over de komende vertrektijden van de diverse buslijnen.

Het project waarin ik betrokken werd was busstation nummer 7. Alle voorgaande busstations hadden allemaal een eigen softwarearchitectuur en het kenmerk dat zij 1 1/2 jaar na te late oplevering nog steeds niet optimaal functioneerde. Is busstation software nu zo complex? Nee eigenlijk niet, maar een beetje visie helpt wel en levert een softwarearchitectuur die er strak en netjes uitziet. Wat wilde de visie? Niet eens zo veel namelijk een domeinlaag die een-op-een overkwam met wat een busstation eigenlijk is, een duidelijk gelaagdheid zodat ander (type) detectieapparatuur aangesloten zou kunnen worden, een display onafhankelijk protocol en verder een generiek domeinmodel waarmee code gegenereerd kan worden. Deze visie is omgezet in een softwareapplicatie die zelfs tussentijds een release opleverde die minister Jorritsma (Verkeer en Waterstaat) met veel bombarie officieel kon openen.

Na deze release is er nog een aantal maanden aan de functionaliteit gewerkt, maar is de architectuur ongewijzigd gebleven. Na oplevering van de eindrelease is de softwareonderhoudsinspanning nihil gebleken en bleken projecten die eerder waren gestart nog steeds niet stabiel. Sterker nog door de visie te hebben en de keuze te maken dat busstations parametriseerbaar zijn is een tweede busstation die in een aantal opzichten sterk leek te verschillen in minder dan twee maanden opgeleverd. De belangrijkste aanpassingen waren een stuk visualisatie van de busstationlayout, andere parameterwaarden in de configuratietabel en wat nieuwe drivers voor specifieke hardware.
 

Taal/Language