Voor het geval u het vergeten was: case staat voor ‘computer aided software engineering’. De term voelt ouderwets aan. Waarschijnlijk omdat deze categorie producten de laatste jaren weinig tot geen aandacht gekregen heeft. Dat zou het komende jaar wel eens kunnen veranderen.
Niet omdat de bestaande markt van case-tools meer aandacht zal krijgen, maar omdat de ide-omgevingen (‘integrated development environment’) voor diverse programmeertalen UML adopteren en daarmee langzaam tot case-tools transformeren. En dit kan leiden tot de wederopstanding van case, maar dan wel case in een nieuw jasje.
Case-tools waren voor de analist wat de compiler voor de programmeur was. Het was het soort tool waarmee een analist allerlei specificaties kon registreren. Een belangrijke eigenschap van deze tools was dat ze specificatie en implementatie geheel gescheiden hielden. De taal waarin gespecificeerd werd, was onafhankelijk van de taal waarin geïmplementeerd (lees geprogrammeerd) werd.
Specialist Carma McClure voorspelde in haar boek ‘Case is software automation’ dat in de eerste helft van de jaren negentig deze tools net zo gewoon zouden zijn voor softwareontwikkeling als compilers en programmeertalen dat daarvoor waren. Voor de duidelijkheid: zij schreef dit boek in 1989. Achteraf de toekomst voorspellen is gemakkelijk, vooraf is duidelijk heel moeilijk, want nu kunnen we zeggen dat ze er geheel naast zat. Het is niet het verwachte succes geworden.
Wat niet voorspeld is, is de vele aandacht in de afgelopen jaren voor programmeertalen als C, C++, Java en Visual Basic. In deze wereld is er dan ook veel veranderd. In het begin kon een compiler alleen gestart worden door deze op besturingssysteemniveau aan te roepen. Met aparte editors werd code ingevoerd. Programmeurs waren continu bezig te switchen tussen de editor, de compiler en de linker.
De jongere generatie programmeurs kan zich deze bewerkelijke methode waarschijnlijk niet eens meer herinneren. Hun eerste ervaring was ongetwijfeld met een ‘integrated development environment’ (ide). Binnen deze geïntegreerde omgeving kan de programmeur coderen, testen, compileren en linken. Als mijn geheugen mij niet bedriegt was Turbo Pascal van Borland onder MS/Dos de eerste programmeurvriendelijke ide. Uiteraard steekt die toenmalige ide schril af bij huidige producten als IBM’s Visual Age for Java, WebGain’s Visual Café, Sygel’s Wonder Machine en Microsofts Visual Studio. Maar goed, alle begin is moeilijk.
De ide’s zijn nu in de volgende fase aanbeland. Hoe mooi, krachtig en productief ze ook zijn, het tijdvretende programmeren blijft bestaan. Nog steeds moeten we vele regels code schrijven. Dit is bewerkelijk, kost veel tijd en maakt onderhoud tot een probleem. Tevens is er geen scheiding tussen specificatie en implementatie. Dus als de in gebruik zijnde programmeertaal niet meer bevalt, kan de bestaande code niet zo maar omgezet worden naar een andere taal. Kies je voor een taal, dan zit je er heel lang aan vast, vraag maar aan de bedrijven die nog Cobol-code hebben draaien.
Lange tijd heeft er een groot, gapend gat bestaan tussen de wereld van het specificeren van een systeem met bijvoorbeeld UML-technieken en het programmeren van de uiteindelijke code. Hoe de uiteindelijke automatische omzetting van UML-specificaties naar programmacode moest verlopen, was onduidelijk. Iedereen moest zelf maar op zoek naar de ‘missing link’. Er bestond dan ook geen koppeling tussen programmacode en specificaties. Een verandering van de code werd niet automatisch naar de specificaties doorgevoerd, met alle gevolgen van dien.
Met de nieuwe generatie ide’s komen deze twee werelden eindelijk bij elkaar. Als we kijken naar nieuwe versies van producten als jDeveloper van Oracle, OptimalJ van Compuware en Describe van Embarcadero, dan zien we hier een uitgebreide ondersteuning van UML. UML-specificaties zijn hier op te voeren om vervolgens te gebruiken voor het genereren van Java-code. Programmeurs kunnen programma’s ontwikkelen zonder zelfs één regel code van hun favoriete programmeertaal te zien. De ide is case-tool geworden.
Buiten dat het genereren van code de productiviteit verbetert, ontstaat tevens de gewenste scheiding van specificatie en implementatie. Hierdoor blijft de weg open naar andere implementaties ofwel programmeertalen. Door met UML het systeem te specificeren, bestaat er een mogelijkheid om wel andere programmeertalen te genereren.
Met deze mogelijkheid om code te genereren, wordt een droom van de oude ‘case tool’-leveranciers werkelijkheid. Natuurlijk, tools als Cool:Gen van CA doen het al jaren, maar de meeste ‘case tools’ hielden op bij het documenteren en controleren van de specificaties. De vertaling naar een implementatietaal moest met de hand uitgevoerd worden. Misschien was dit gemis wel één van de reden waarom ‘case tools’ momenteel niet zo succesvol zijn als tien jaar geleden werd gedacht.
Binnenkort zal het gevecht tussen deze nieuwe ide’s losbarsten. De belangrijkste onderscheidende vermogens zullen zijn de ondersteuning voor UML- of UML-achtige technieken, de kwaliteit van de gegenereerde code en welke programmeertalen gegenereerd kunnen worden. Eén taal genereren is leuk, meerdere talen genereren is de toekomst.
De kans dat de nieuwe ide de rol van case-tool zal overnemen is groot. Misschien wordt het daarom ook tijd voor een nieuwe naam. Mijn idee is idea (‘integrated development environment and analysis’).
Rick F. van der Lans is onafhankelijk adviseur, een internationaal bekend spreker en auteur van diverse boeken, tevens gespecialiseerd in softwareontwikkeling, datawarehousing en internet.