De huidige generatie ontwikkeltools is geschikt voor het snel opleveren van schaalbare two-tier-, three-tier- en multi-tier client/server-applicaties, zo blijkt uit het ‘Multi-tier client/server evaluatieproject’ van Software Engineering Research Centre en Computable. De geëvalueerde ontwikkeltools ondersteunen echter nog niet de ontwikkeling van softwarecomponenten op basis van de ideeën achter gedistribueerde objecten.
Vandaag de dag hebben kampen organisaties nog altijd met een groot aantal problemen bij het gebruik van informatietechnologie. De ontwikkel- en onderhoudskosten van de informatievoorziening van een organisatie zijn hoog. Het beschikbaar stellen van de juiste gegevens op het juiste tijdstip en de juiste plaats vergt veel inspanning. De bestaande informatiesystemen belemmeren het snel invoeren van nieuwe producten en diensten. Het in de lucht houden van de informatiesystemen kost veel geld. Het aanpassen van die systemen aan de veranderende behoefte kost nog meer geld.
Deze problemen bestaan al geruime tijd. Tot voor kort had de software-industrie daar geen concrete oplossing voor. Tot voor kort, want één van de ideeën om deze softwarecrisis op te lossen lijkt navolging te krijgen.
Het concept voor goede informatievoorziening is ontkoppeling. Ontkoppeling houdt in dat de informatievoorziening wordt gerealiseerd middels een stelsel van onafhankelijke softwarecomponenten die via een infrastructuur (middleware) met elkaar communiceren.
Een voorbeeld is de informatiebehoefte van een afdeling administratie die tot taak heeft het loon van een werknemer te berekenen en de geleverde producten te factureren een klant. In die informatiebehoefte voorziet een aantal onafhankelijke softwarecomponenten die onderling communiceren: Administratie, Loonberekening, Facturering, Werknemer, Product, Levering en Klant.
Iedere softwarecomponent biedt middels een interface een aantal diensten aan. Communicatie tussen componenten verloopt altijd via de interfaces. Wanneer een component gebruik maakt van de diensten van een andere component, wordt er tussen die componenten een contract afgesloten. Dit contract bevat afspraken over de beschikbaarheid van de dienst, de gegarandeerde responstijd en andere operationele zaken.
Op een hoger niveau
Softwarecomponenten gaan verder dan de bekende softwaremodules. Bij softwaremodules blijft de ontkoppeling beperkt tot het programma of systeem waartoe de modules behoren. Bij softwarecomponenten gaat het om ontkoppeling op een hoger niveau. Systemen en programma’s bestaan niet meer. Iedere softwarecomponent neemt een specifiek deel van de totale functionaliteit voor zijn rekening. Applicaties ontstaan doordat componenten op een bepaalde manier met elkaar samenwerken.
Het realiseren van de informatievoorziening door middel van een stelsel onafhankelijke softwarecomponenten beperkt de effecten en daarmee ook de kosten van verandering. Doordat applicatielogica en gegevens met andere componenten gedeeld kunnen worden, doen zich minder problemen voor met redundantie en is het mogelijk gegevens op het juiste tijdstip en de juiste plaats beschikbaar te stellen.
Tegenwoordig kan een software-ontwikkelaar kiezen uit een aantal ontwikkeltools voor het ontwikkelen van softwarecomponenten die middels een infrastructuur met elkaar communiceren. Voor Serc (Software Engineering Research Centre) en Computable reden om een evaluatieproject te organiseren om de stand van zaken te inventariseren.
Dat project was het zesde in de serie evaluatieprojecten. Het had tot doel om teams van ontwikkelaars te laten kennismaken met ontwikkeltools voor softwarecomponenten. De vijf voorafgaande evaluatieprojecten hadden betrekking op object-oriëntatie, grafische gebruikersinterfaces, werkstroombeheer en groupware. Naar alle waarschijnlijkheid zal het volgende evaluatieproject in het teken staan van case-tools (computer aided software engineering) voor object-georiënteerd modelleren.
Prototype
Het was niet mogelijk om alle beschikbare ontwikkeltools te evalueren. Daarom is een selectie gemaakt op basis van: het marktaandeel van het ontwikkeltool, de beschikbaarheid van het tool in Nederland en de bereidwilligheid van de leverancier om mee te werken aan het evaluatieproject. Geëvalueerd zijn: Composer (Texas Instruments Software); Dynasty (Value Added Consultancy); Natstar (Natsystems Benelux); Objectstar (Amdahl Nederland); Prolifics (Brink Automatisering); Supernova (Supernova International); Uniface (Compuware); Usoft (Usoft Benelux); en Visualage Generator (IBM Nederland).
Het evaluatieproject was opgedeeld in drie stappen. De eerste stap betrof leren. In deze stap werden de deelnemers van het evaluatieproject bekend gemaakt met de theorie van softwarecomponenten en met de verschillende visies op ontkoppeling door ir. G.M.A. van der Harst en ing. G.F. Florijn. Tevens werd een korte inleiding gegeven door de deelnemende ontwikkeltool-leveranciers.
De tweede stap was experimenteren. Door het oplossen van een door Serc geleverde casus werd vervolgens praktisch geëxperimenteerd met de verschillende ontwikkeltools. De casus bestond uit het realiseren van een prototype van een flexibel factureringssysteem voor het telecommunicatiebedrijf Flextel op basis van een gegeven objectmodel. Het prototype moest de volgende bedrijfsprocessen ondersteunen: het aanmelden van een nieuwe klant; het wijzigingen van prijsafspraken met bestaande klanten; het genereren van marketingoverzichten; en de facturering. Na implementatie van de opdracht moesten drie veranderingen aangebracht worden: het toevoegen van een nieuwe prijsregeling, het vastleggen van factureringsafspraken en het opsporen van zogenaamde vreemde telefoontjes.
Evalueren was de derde stap. Ter afsluiting presenteerde elk ontwikkelteam zijn bevindingen omtrent het realiseren van de casus met het gebruikte ontwikkeltool.
Op basis van de bevindingen wordt de stand van zaken met betrekking tot softwarecomponenten geïnventariseerd. Dit artikel gaat hierna in op deze bevindingen. Eerst wordt stilgestaan bij de visie op ontkoppeling die de verschillende ontwikkeltools hanteren. Vervolgens komen de ontwikkel- en beheeraspecten van de diverse ontwikkeltools aan bod. Een gedetailleerde uitwerking van de resultaten is te vinden in het eindrapport van het evaluatieproject (zie literatuur en kader).
Consistentieproblemen
Hoewel alle tools uitgaan van het ontwikkelen van softwarecomponenten is de wijze waarop deze logisch worden ingedeeld (de ontkoppelingsvisie) verschillend. De tools zijn in te delen in vier categorieën: two-tier client/server; three-tier client/server; multi-tier client/server; en gedistribueerde objecten.
Onder de categorie two-tier client/server vallen de tools Objectstar en Usoft. Beide tools onderscheiden twee typen softwarecomponenten: clients en servers. Grofweg zijn er drie varianten te onderscheiden: de ‘dikke client’-variant, waarbij de applicatielogica op de clients draait; de ‘dikke server’-variant, waarbij de applicatielogica in de server is ondergebracht; en een gedistribueerde variant, waarbij applicatielogica zowel in de clients als in de server is ondergebracht (zie figuur 1).
Doordat bij de ‘dikke client’-variant alle applicatielogica op de client executeert, vindt duplicatie van applicatielogica plaats. Dat brengt distributie- en consistentieproblemen met zich mee. Een ander probleem is de belasting van het netwerk door de grote hoeveelheid gegevens die van de server naar de clients getransporteerd moet worden. Het probleem van de ‘dikke server’-variant is dat de prestaties van de applicatie negatief beïnvloed worden bij een toename van het aantal clients. De gedistribueerde variant lost de prestatie-problemen enigszins op, maar maakt de oplossing door de verdeling van applicatielogica minder inzichtelijk.
Hoewel Amdahl (leverancier van Objectstar) het gebruik van de ‘dikke server’-variant prefereert, zijn alle two-tier client/server-varianten in principe mogelijk met Objectstar. Usoft past de ‘dikke client’-variant toe, waarbij presentatielogica en bedrijfsregels op de client executeren.
In drie typen
Onder three-tier client/server vallen de ontwikkeltools waarbij softwarecomponenten in drie typen worden onderverdeeld. Dat zijn Dynasty, Natstar, Prolifics en Uniface. Bij elk van deze ontwikkeltools gaat het om een presentatie-, een service- en een gegevenslaag. De presentatielaag bevat de presentatielogica-componenten, de servicelaag de applicatielogica-componenten en de gegevenslaag de databaseserver waarin de gegevens worden vastgelegd (zie figuur 1).
Dynasty onderscheidt zich van de drie andere tools doordat op de servicelaag objecten gedefinieerd worden. Hiermee wordt de ontkoppelingsvisie van gedistribueerde objecten benaderd (zie gedistribueerde objecten).
Minder strakke typering
Als derde categorie, multi-tier client/server, worden ontwikkeltools onderscheiden die een minder ‘strakke’ typering van softwarecomponenten voorschrijven. Alleen de presentatielaag en de gegevenslaag zijn vast getypeerd. De lagen ertussen zijn niet getypeerd. Hiermee is het aantal lagen waarin de softwarecomponenten zijn in te delen in principe oneindig. In deze categorie vallen de ontwikkeltools Composer, Supernova en Visualage Generator.
Op andere machines
De laatste categorie, gedistribueerde objecten, gaat n�g een stap verder dan de multi-tier client/server-benadering. Het opdelen van een informatiesysteem in softwarecomponenten geschiedt op basis van de ideeën van object-oriëntatie (OO). Gegevens en functionaliteit die in de andere benaderingen nog van elkaar gescheiden zijn, komen samen in een object. Gedistribueerde objecten kunnen samenwerken met andere objecten buiten het eigen programma. Een gedistribueerd object kan zelfs samenwerken met objecten op andere machines, ongeacht besturingssysteem, netwerk, programmeertaal en hardware. Dit in tegenstelling tot ‘gewone’ objecten van een programma; deze kunnen alleen gebruik maken van de diensten van andere objecten binnen het programma.
Daar de deelnemers van het evaluatieproject duidelijk naar voren brachten dat er behoefte is aan het ontwikkelen van een bedrijfsbrede informatievoorziening middels onafhankelijke, gedistribueerde objecten, is het opvallend dat geen van de geëvalueerde ontwikkeltools onder deze categorie valt.
Bij bovenstaande opdeling moet de volgende kanttekening worden gemaakt: voor three-tier client/server-tools geldt dat het ook mogelijk is om two-tier client/server-applicaties te ontwikkelen. Voor multi-tier client/server-tools geldt dat, naast multi-tier client/server-applicaties, ook three-tier client/server- en two-tier client/server-applicaties opgeleverd kunnen worden. Figuur 2 (onderaan dit document) geeft een overzicht van de visie op ontkoppeling door de verschillende ontwikkeltools.
Ondersteunde fasen
Als de ontwikkeltools bekeken worden naar de ondersteunde fasen van het ontwikkelproces, zijn drie categorieën te onderscheiden: analyse, ontwerp en implementatie; ontwerp en implementatie; implementatie.
De categorie analyse, ontwerp en implementatie omvat tools die zich richten op de ondersteuning van het volledige ontwikkelproces. Dat geldt voor Composer en Natstar. Bij deze tools is het in principe niet nodig om een apart case-tool te gebruiken. Voordeel van deze ondersteuning is dat alle modellen met één tool te maken zijn en deze op één plek (repository) vastgelegd worden. Daarnaast is het met beide tools mogelijk om op basis van de modellen de implementatie te genereren.
In de categorie ontwerp en implementatie vallen ontwikkeltools als Dynasty en Usoft, waarmee het mogelijk is om een deel van het ontwerp met het ontwikkeltool te doen. Beide tools volgen de filosofie dat eerst met een aparte case-tool een gegevensmodel wordt opgebouwd. Op basis van dit gegevensmodel zijn vervolgens in Dynasty objecten en met Usoft bedrijfsregels te modelleren.
De categorie implementatie betreft de overige ontwikkeltools (Objectstar, Prolifics, Supernova, Uniface en Visualage Generator), die zich richten op de implementatiefase. Deze gaan ervan uit dat de analyse- en ontwerp-fase reeds zijn uitgevoerd.
Figuur 3 (onderaan dit document) geeft een overzicht van de ondersteunde fasen van het ontwikkelproces door de verschillende ontwikkeltools.
Afhankelijk van leverancier
Het genereren van softwarecomponenten kan geschieden op basis van gegevensdefinities (bijvoorbeeld in de vorm van gegevensmodellen of objectmodellen) of op basis van gespecificeerde logica (bijvoorbeeld in de vorm van actiediagrammen of bedrijfslogica). De meeste tools genereren op basis van gegevensdefinities: Dynasty, Prolifics, Uniface en Visualage Generator. De tools die genereren op basis van beide zijn Composer, Natstar en Usoft. Bij Objectstar en Supernova is generatie beperkt mogelijk.
Met uitzondering van Objectstar en Usoft bieden alle ontwikkeltools mogelijkheden voor het definiëren van templates. Deze templates bevorderen hergebruik van modellen en code over projecten heen.
Opvallend is dat elke tool zijn eigen programmeertaal en infrastructuur gebruikt. Softwarecomponenten zijn hierdoor niet direct over te zetten naar een ander ontwikkeltool en communicatie tussen deze componenten is niet zonder meer mogelijk. Hierdoor wordt afhankelijkheid van de leverancier gecreëerd. Usoft en Objectstar maken voor de interne communicatie gebruik van Corba (common object request broker architecture). Composer, Dynasty, Supernova en Visualage Generator bieden wel de mogelijkheid om gebruik te maken van ten minste één van de infrastructuurstandaarden voor de communicatie tussen eigen en vreemde componenten (zie figuur 4 onderaan dit document). De communicatie tussen eigen componenten onderling vindt dan plaats door middel van de eigen infrastructuur. Overigens hebben (Prolifics en Uniface Corba- en Dcom-ondersteuning (distributed common object model) aangekondigd voor de toekomst.
Objectmodel platslaan
De partitionering van de softwarecomponenten over de beschikbare machines in de run-time omgeving wordt op twee manieren opgelost. Bij ontwikkeltools als Composer, Natstar en Usoft moeten softwarecomponenten voor een andere partitionering opnieuw gegenereerd of gecompileerd worden. Bij de andere tools, Dynasty, Objectstar, Prolifics, Supernova, Uniface en Visualage Generator, zijn de softwarecomponenten run-time van de ene naar de andere machine over te zetten.
De ontwikkeltools Objectstar, Uniface en Visualage Generator ondersteunen de distributie van softwarecomponenten over de run-time omgeving. Voor de overige tools geldt dat de distributie met de hand moet worden gedaan. In de praktijk betekent dit gebruik maken van speciale distributiesoftware, FTP-faciliteiten of diskettes.
Bij de realisatie van het prototype van het factureringssysteem voor Flextel bleek dat bij de ontwikkeltools Composer en Natstar het gegeven objectmodel direct viel in te voeren doordat beide tools objectmodellering ondersteunen. Bij andere tools was ‘platslaan’ van het objectmodel tot een relationeel datamodel nodig. Dit platslaan bleek de flexibiliteit van het prototype niet ten goede te komen. Het doorvoeren van de veranderingen in het prototype bleek niet eenvoudig.
Applicatie opleveren
Concluderend kunnen we stellen dat de huidige generatie ontwikkeltools geschikt is voor het snel opleveren van schaalbare two-tier-, three-tier- en multi-tier client/server-applicaties. De schaalbaarheid wordt verkregen door een servicelaag en/of transactiemonitor te introduceren tussen de clients en de databaseservers. Hierdoor zijn grotere aantallen transacties mogelijk en kan het aantal clients groeien. De snelheid van het ontwikkelen wordt met name verkregen door de uitgebreide generatiemogelijkheden. Hierdoor valt in relatief korte tijd een complexe gedistribueerde applicatie op te leveren.
De ontwikkeltools zijn momenteel echter minder geschikt voor het ontwikkelen en beheren van bedrijfsbrede two-tier-, three-tier- en multi-tier client/server-oplossingen. Dit omdat de tools niet uitgaan van het opleveren van onafhankelijke softwarecomponenten; ze gaan uit van oplevering van applicaties. De softwarecomponenten worden met behulp van een leveranciersspecifieke programmeertaal ontwikkeld en communiceren middels een leveranciersspecifieke infrastructuur. Weliswaar zijn er ontwikkeltools die de mogelijkheid bieden om middels infrastructuurstandaarden (Corba, DCE, distributed computing environment, of Dcom) te communiceren met andere componenten, maar de communicatie tussen ‘eigen’ componenten blijft middels de leveranciersspecifieke infrastructuur plaatsvinden.
Op dit moment ondersteunen de geëvalueerde ontwikkeltools nog niet de ontwikkeling van softwarecomponenten op basis van de ideeën achter gedistribueerde objecten.
Drs. P.J. Koning is researcher/consultant bij Serc.
Ir. G.M.A. van de Harst is project manager bij Serc.
LITERATUUR
Harst, G.M.A. van der: Multi-tier client/server evaluatieproject. Eindrapport. Serc, juni 1997.
Koning, P.J., G.M.A. van der Harst en G.F. Florijn: Multitier-architectuur biedt flexibiliteit – Onderhoudbare informatievoorziening met behulp van softwarecomponenten. Computable, 7 februari 1997.
EVALUATIERAPPORT ONTWIKKELTOOLS
Van het ‘multi-tier client/server evaluatieproject’ dat Serc (Software Engineering Research Centre) in samenwerking met Computable van 7 tot en met 11 april 1997 organiseerde, is een gedetailleerd eindrapport verschenen (zie literatuur). Het rapport gaat allereerst in op de achtergrond van softwarecomponenten. Vervolgens behandelt het per ontwikkeltool de onderdelen, ontwikkelaspecten, beheeraspecten, gebruiksaspecten en koppelingsaspecten. Daarna gaat het in op het ontwikkelen van softwarecomponenten en op de casussen die de ontwikkelteams hebben uitgewerkt. Ter afsluiting brengt het de stand van zaken in kaart gebracht. Het eindrapport (101 pagina’s, 85 gulden) is te bestellen bij Serc, telefoon: 030-2545412.
Figuur 2. Visie op ontkoppeling I.
Tool | Two-tier | Three-tier | Multi-tier |
Composer | X | X | X |
Dynasty | X | X | |
Natstar | X | X | |
Objectstar | X | ||
Prolifics | X | X | |
Supernova | X | X | X |
Uniface | X | X | |
Usoft | X | ||
Visualage Generator | X | X | X |
Figuur 3. Visie op ontkoppeling II.
Tool | Implementatie | Ontwerp | Analyse |
Composer | X | X | X |
Dynasty | X | X | |
Natstar | X | X | X |
Objectstar | X | ||
Prolifics | X | ||
Supernova | X | ||
Uniface | X | ||
Usoft | X | X | |
Visualage Generator | X |
Figuur 4. Ondersteuning van infrastructuurstandaarden. (Prolifics en Uniface hebben Corba- en Dcom-ondersteuning voor de toekomst aangekondigd.)
Tool | Leveranciers- specifiek | DCE | Corba | Dcom |
Composer | X | X | X | X |
Dynasty | X | X | X | |
Natstar | X | |||
Objectstar | X | |||
Prolifics | X | |||
Supernova | X | X | X | |
Uniface | X | |||
Usoft | X | |||
Visualage Generator | X | X |