deel 2

H5

H6

H7

H8

H9

H10

H11

T
O
O
L
S

 


HOOFDSTUK 10 : Vijfde generatie ontwikkeltools

10.1 De evolutie van ontwikkelsoftware

Zonder vierde-generatie software is iteratief ontwikkelen niet denkbaar. Het succes van het ontwikkelen van systemen met vierde generatie softwareproducten, wordt bepaald door het vermogen van de betreffende organisatie om zich aan te passen aan de eisen die de software-omgeving stelt.

Om de plaats van vierde generatie talen (4GL's) in de ontwikkeling van de computertalen beter te begrijpen is een stukje geschiedenis onontbeerlijk.

Eerste generatie talen bestonden uit machinecodeinstructies. De computers werden destijds geprogrammeerd met nullen en enen of met groepjes nullen en enen (hexadecimale getallen).

Tweede generatie talen worden ook wel assemblertalen genoemd. Ze zijn in de vijftiger jaren ontstaan uit mnemonische codes voor de machine-instructies, waarmee het programmeren op een (voor de mens) begrijpelijkere wijze kon gebeuren. De assemblertalen waren computer-gebonden, hetgeen inhield dat er geen faciliteiten waren om een programma over te zetten naar een computer van een andere leverancier.

Derde generatie talen, uit de jaren zestig en zeventig, waren de zogenaamde hogere programmeertalen zoals FORTRAN, COBOL, C en Pascal. Door dit soort talen te gebruiken konden computers voor het eerst geprogrammeerd worden zonder vérgaande kennis van de specifieke machine-instructies, registers, e.d. Het werd mogelijk om programma's naar andere computers over te zetten zonder veel aanpassingen. Dit leidde tot hardware-onafhankelijke programmeertalen.


Vierde generatie talen zijn eigenlijk geen talen meer. Er is sprake van een aantal hulpmiddelen om systemen te ontwikkelen en in productie te houden. Er kan daarom beter gesproken worden over vierde generatie software (4GS) in plaats van vierde generatie taal (4GL). Een definitie van vierde generatie software zou kunnen luiden:

Het geheel van gereedschappen waarmee op een snelle en efficiënte
wijze applicaties kunnen worden ontwikkeld en beheerd.

Naast programmageneratoren en vraagtalen zijn er talloze andere producten die het bouwproces van een applicatie kunnen versnellen. Ook alle vormen van CASE-tools behoren volgens bovenstaande definitie tot de vierde generatie software.

Het eind van van de vierde generatie wordt ingeluid wanneer we het gehele proces van systeemontwikkeling van begin tot het einde geautomatiseerd hebben. Wanneer integrated CASE (ICASE) werkelijkheid is geworden, zullen geleidelijk de systemen van de vijfde generatie ontstaan. De leveranciers van DBMS'en, 4GL's en CASE-tools zullen van elkaars producten gebruik moeten gaan maken om het systeemontwikkelproces volledig te automatiseren. Deze integratie van vierde generatie software vormt een enorm probleem.

Misschien heeft BMW de beste motor, een Saab de beste carrosserie en een Alfa Romeo het fraaiste interieur; dit wil echter niet zeggen dat een combinatie van deze onderdelen de ideale auto oplevert. Zo is het ook in de automatisering. Wie kiest voor een database-architectuur van een bepaalde fabrikant sluit daarmee vaak toepassingen van tools van andere fabrikanten uit. De meeste softwareleveranciers brengen een zo compleet mogelijk pakket op de markt dat in principe in alle behoeften van de programmeur voorziet. Bepaalde gereedschappen zijn uitstekend te noemen, andere stellen teleur.


10.2 Kenmerken vierde generatie software

Nog steeds zijn veel automatiseerders niet overtuigd van de kracht van vierde generatie talen (software). Deze nieuwe talen zouden niet flexibel genoeg zijn. Men voelt zich beperkt in de mogelijkheden die men gewend was in traditionele derde generatie omgevingen of om andere redenen durft men de overstap niet aan.

Wat zijn de belangrijkste verschillen tussen de derde en vierde generatie software?

Vierde generatie software is meer probleemgericht dan talen van eerdere generaties. Bij de eerste drie generaties talen moest de systeembouwer zich meer bezighouden met de techniek dan met het eigenlijke op te lossen probleem.

Doordat men meer afgeschermd is van de techniek kan men sneller opgeleid worden dan in de klassieke talen. Opleiding is echter meer nodig in gegevens- en functieanalyse.

Eindgebruikers kunnen veel intensiever bij het ontwikkelingstraject worden betrokken omdat door de opkomst van vierde generatie software prototyping mogelijk is geworden. Bovendien kunnen sommige opvraagfuncties zelfstandig door de eindgebruiker worden opgezet en uitgevoerd.

Met vierde generatie software kan veel sneller ontwikkeld worden en veranderingen kunnen sneller worden aangebracht. De snelheidsverbetering is echter voor elke organisatie en voor elk probleem niet even groot. Heeft men de organisatie zo ingericht dat veelvuldig gebruik kan worden gemaakt van standaard bouwblokken in tweede of derde generatie talen of van routines die steeds hergebruikt worden (die standaardstukken worden dus beheerd, los van de applicaties), dan is de snelheidsverbetering slechts gering. Vierde generatie software vraagt meer computerkracht, soms zelfs aanzienlijk meer, dan de talen van de eerste drie generaties.

De vierde generatie hulpmiddelen die in het iteratieve ontwikkelproces ter beschikking staan veranderen zo snel van functionaliteit dat geen enkele ontwikkelaar nog in staat is zich regelmatig de vraag te stellen of hij wel de juiste hulpmiddelen gebruikt.

Aan de andere kant doen de leveranciers van deze hulpmiddelen er alles aan om zoveel mogelijk gebruikers te `creëren'. Ze brengen nieuwe (volgens hun eigen zeggen verbeterde) versies op de markt die de ontwikkelaar het leven (zijn werk) moet veraangenamen.


10.3 Volgende generatie ontwikkeltools


Het is nog niet duidelijk wanneer we van vijfde generatie software (cq talen) mogen spreken. Sommigen denken dat als er niet meer geprogrammeerd hoeft te worden in de traditionele zin we in de vijfde generatie beland zijn. Beter kan in dit geval van een `post 4GL-omgeving of taal' gesproken worden. Ook wanneer er optimaal gebruik wordt gemaakt van objectorientatie (OO) kan er nog steeds sprake zijn van software van de vierde generatie. Sommigen vinden dat wanneer er werkelijk (kunstmatige) intelligentie ingebouwd zit we mogen spreken van vijfde generatie software. En dat zullen dan zeker geen talen meer zijn zoals we die hebben leren kennen uit voorgaande generaties. De verwachting is dat we tot de volgende eeuw zullen moeten wachten voordat hulpmiddelen van dit type software in de praktijk bruikbaar zijn. De overgang zal overigens geleidelijk gaan.

De vraag wanneer software `van de vijfde generatie' genoemd mag worden is niet nieuw. In de jaren '80 was dit zelfs een politiek vraagstuk. Van overheidswege werd onderzoek naar deze nieuwe generatie software gestimuleerd. Toen heerste er de overtuiging dat deze nieuwe generatie gebaseerd moest zijn op kunstmatige intelligentie. In Europa en in Japan zijn projecten uitgevoerd maar op de titel `vijfde generatie' kon geen product echt aanspraak maken.

Het advies- en onderzoeksburo Butler Bloor heeft een rapport gepubliceerd, getiteld: Leading edge development tools. Hierin wordt een twintigtal ontwikkeltools vermeld die zij onder de noemer `vijfde generatie' scharen. Het argument om een tool van de vijfde generatie te mogen noemen, vinden ze in het feit dat met deze nieuwe ontwikkelhulpmiddelen applicaties gebouwd kunnen worden, die de eerdere generaties niet aankunnen. De hier bedoelde nieuwe producten hebben gemeen dat ze op de één of andere wijze zijn gebaseerd op een objectarchitectuur. Ze onderscheiden zich door nieuwe elementen, zoals klasse-structuur, overerving (inheritance) en polyformisme (de mogelijkheid om verschillende betekenissen aan een operator toe te kennen).


Door de objectoriëntatie valt een applicatie tusen een client en een server op elk gewenst punt te splitsen (dit heet application partitioning). Dit in tegenstelling tot 4GL's die deze scheiding alleen kunnen aanbrengen op het punt waar SQL-calls worden gemaakt. Om niet-SQL-processen op een server te plaatsen moet worden gebruik gemaakt van zaken zoals stored procedures. Een stored procedure is net als een database trigger een programmamodule die wordt opgeslagen in de database. Het verschil zit in het aanroepen ervan. Een stored procedure moet expliciet worden aangeroepen.

Butler Bloor noemt ook het gebruik van een repository in plaats van een data dictionary revolutionair. Deze repositories bevatten vele aspecten van de in hoofdstuk 2 beschreven ATI-repository.

De toekomst zal moeten uitwijzen of deze nieuwe generatie ontwikkelsoftware algemeen aanvaard als vijfde generatie zullen worden. Butler Bloor onderscheidt in zijn rapport een viertal categorieën ontwikkeltools:

1. Gebaseerd op IBM-mainframe
2. Tools voor het bouwen van grote client/server-systemen
3. Tools gebaseerd op een 4GL
4. Zuivere objectgeoriënteerde ontwikkelomgevingen

Deze indeling is voor een objectieve discussie erg zinvol. Wanneer een nieuw project gestart wordt, dient men zich als eerste af te vragen welk soort systeem er gebouwd gaat worden. Op grond daarvan worden de bijbehorende tools geselecteerd.