|
Download
de illustraties
behorende bij het college:
240 KB |
Inleiding
Om in de informatiebehoefte van een bedrijf te voorzien, worden informatiesystemen
gebruikt. Deze informatiesystemen komen tot stand door middel van systeemontwikkeling.
In dit hoofdstuk beschrijven we hoe het proces van systeemontwikkeling
in het algemeen is opgebouwd, hoe we tot een ontwikkelstrategie komen
en welke hulpmiddelen we kunnen gebruiken voor systeemontwikkeling.
Leerdoelen
Na het bestuderen van dit onderwerp wordt verwacht dat u weet:
- Uit welke fasen systeemontwikkeling bestaat.
- Welke disciplines een rol spelen tijdens het systeemontwikkeltraject.
- Welke strategieën in de verschillende fasen van systeemontwikkeling
gebruikt kunnen worden.
- Welke soorten tools bij systeemontwikkeling worden toegepast.
Produkten van systeemontwikkeling
Bij systeemontwikkeling denkt bijna iedereen logischerwijs aan het
ontwikkelen van software en dan met name aan het daadwerkelijk bouwen
van deze software. Systeemontwikkeling omvat echter meer dan slechts
het bouwaspect van software; een moderne methode van systeemontwikkeling
heeft namelijk ook expliciet aandacht voor sociaal organisatorisch aspecten,
zoals weergeven is in onderstaand figuur.
Het figuur laat zien, dat systeemontwikkeling een proces is dat een
multidisciplinair karakter kent. Informatiesystemen horen te worden
ontwikkeld vanuit een informatiebeleid dat geaccepteerd is door het
topmanagement. Op dit informatiebeleid worden een aantal plannen gebaseerd
ten behoeve van de ontwikkelingen van informatiesystemen, infrastructuren
en personele organisaties. Deze ontwikkelingen zullen in projectvorm
worden uitgevoerd waarbij men alert moet zijn op de eventuele onderlinge
beïnvloeding. De feitelijke ontwikkeling van een informatiesysteem
loopt van definitiestudie tot en met de invoering. Na het basisontwerp
worden verschillende werkzaamheden naast elkaar uitgevoerd. Uiterst
rechts staat de bouw van de programmatuur. Indien van toepassing wordt
een gegevensconversie uitgevoerd die vroegtijdig moet worden voorbereid.
Uiterst links staan de werkzaamheden die dienen te worden uitgevoerd
om de organisatorische inbedding van het informatiesysteem aan te passen
en de aansluiting van de programmatuur op de organisatie te bewerkstelligen.
Met de middelste lijn wordt bedoeld dat de gebruiker niet kan gaan rusten
terwijl ‘links’ en ‘rechts’ van hem de organisatiedeskundigen resp.
de bouwers druk bezig zijn. Onder voorbereiding acceptatie valt niet
alleen het opzetten van een acceptatietest, maar ook algemenere zaken
als voorlichting, gebruikerstrainingen en ondernemingsraadachtige zaken.
Acceptatie impliceert immers de bereidheid van de eindgebruikers om
het informatiesysteem te willen gaan gebruiken. Als de acceptatie uiteindelijk
heeft plaatsgevonden en de invoering van het nieuwe informatiesysteem
een feit is, zal het informatiesysteem gebruikt en dus ook beheerd en
onderhouden moeten worden.
In onderstaand figuur laten we globaal zien welke aanpassingen er zijn
bij het bouwen van informatiesystemen door middel van standaardpakketten.
Vooral administratieve informatiesystemen worden vaak gebouwd door middel
van standaardpakketten. Hierbij kunt u denken aan standaardpakketten
van bijvoorbeeld SAP, Baan en Oracle.
Tijdens de systeemontwikkeling ontstaan er een hele reeks produkten,
deze systeemontwikkelprodukten kunnen we onderverdelen in vier groepen:
- Systeemdocumentatie: denk bijvoorbeeld aan gebruikshandleidingen,
gegevensmodellen en procesmodellen.
- Projectdocumentatie: zoals correspondentie, plannen en rapporten.
Deze worden slechts gebruikt tijdens het systeemontwikkeltraject,
terwijl handleidingen en dossiers ook nog blijven bestaan na afloop
van het systeemontwikkeltraject.
- Applicaties en testsets, de werkelijk gebouwde programmatuur en
de testsets om deze programmatuur te testen.
- Overige produkten zoals opgeleide medewerkers en geconverteerde
gegevens.
Onderdelen van systeemontwikkeling
De feitelijke traditionele manier van systeemontwikkeling bestaat zoals
eerder genoemd uit drie hoofdfasen :
- Het beschrijven en ontwerpen van het informatiesysteem
- Het construeren van het informatiesysteem
- Het invoeren van het gebouwde informatiesysteem
We gaan nu op ieder van deze fasen nader in.
Beschrijven
Voordat een informatiesysteem gebouwd gaat worden is het belangrijk
om de functionele eisen en de kwaliteitseisen die aan het te ontwikkelen
informatiesysteem gesteld gaan worden vast te stellen en vast te leggen.
Er zijn een aantal redenen te bedenken waarom het belangrijk is deze
verschillende eisen van te voren vast te leggen:
- Een informatiesysteem kan pas gebouwd worden als er bekend is
wat er gebouwd moet worden.
- Als eisen van te voren niet worden vastgelegd, kan het gebeuren
dat de klant achteraf ontevreden is met wat hij gekregen heeft.
Vooraf is dan namelijk niet afgesproken wat men kon verwachten.
- Een informatiesysteem moet ingebed worden in een organisatie.
Door van te voren te beschrijven hoe het informatiesysteem zal werken,
weet men tijdig welke organisatorische veranderingen plaats moeten
vinden om het informatiesysteem ingevoerd te krijgen.
- Het is voor zowel de gebruiker als voor de persoon die het informatiesysteem
gaat onderhouden belangrijk om kwaliteitseisen aan het informatiesysteem
van te voren vast te leggen. Om een informatiesysteem te kunnen
onderhouden, zullen er onder andere eisen gesteld moeten worden
aan de flexibiliteit, de testbaarheid en de onderhoudbaarheid van
het te bouwen informatiesysteem. Voor de gebruiker is het belangrijk
dat het informatiesysteem efficiënt en effectief werkt en dat
continuïteit gegarandeerd is. Als u meer wilt weten over deze
productkwaliteitseisen en andere kwaliteitseisen, dan verwijzen
we u graag naar hoofdstuk 11 "Kwaliteitszorg".
Er bestaan twee werkwijzen bij het produceren van informatiesysteembeschrijvingen:
- Een analytische werkwijze, waarbij gebruik gemaakt wordt
van abstracties en specificaties.
Om functionele eisen vast te leggen, kunnen verschillende specificatiemethoden
gebruikt worden, zoals Entity-Relationship diagrammen en Dataflow
diagrammen.
- Een experimentele werkwijze, waarbij gebruik gemaakt wordt
van experimenten en prototypes.
Prototyping is een middel dat er voor kan zorgen dat het voor
de gebruikers gemakkelijk wordt om hun eisen kenbaar te maken voor
het informatiesysteem dat gebouwd moet worden. Bij prototypes denken
we bijvoorbeeld aan demonstraties van het gebruiksinterface, zodat
de gebruiker al een beeld kan krijgen hoe het informatiesysteem
volgens de huidig opgegeven eisen zal werken. Ook kunnen we denken
aan een prototype dat de werking van cruciale algoritmen laat zien.
Om tot een systeembeschrijving te komen, moet er vaak worden samengewerkt
tussen allerlei disciplines. Er bestaan in dit geval twee samenwerkingsaanpakken,
namelijk:
- Expert-gestuurd: hierbij is de productie en beoordeling
van de beschrijvingen gescheiden.
- Participatief: hierbij vindt de productie en de beoordeling
van de beschrijvingen door de expert en de andere betrokkenen gezamenlijk
plaats.
Construeren
Als alle eisen uit de voorgaande paragraaf zijn vastgelegd, kan het
informatiesysteem daadwerkelijk gebouwd worden. Tijdens het bouwen
worden als het ware de functionele eisen en de kwaliteitseisen naar
een werkend informatiesysteem (inclusief handmatige procedures) omgezet.
Dit kan op een aantal manieren, namelijk door middel van:
- Programmeren: het ambachtelijk ontwikkelen van software met behulp
van 3e en 4e generatie programmeertalen.
- Genereren: het automatisch genereren van software uit specificaties.
- Configureren: het configureren van generieke pakketsoftware naar
een specifieke situatie.
- Assembleren: het assembleren van (bij voorkeur bestaande) componenten
tot één geheel.
Uiteraard worden voor het ontwikkelen van software ook combinaties
van bovenstaande manieren gebruikt.
Om een informatiesysteem te bouwen (en te testen) zijn een aantal
strategieën voorradig:
- One-shot: het gehele informatiesysteem wordt in een keer
gebouwd en getest.
- Incrementeel: het informatiesysteem wordt in opvolgende
delen gebouwd en getest. Ieder deel bevat een subset aan functionaliteiten.
De eisen voor het informatiesysteem zijn voordat de eerste bouw
plaatsvindt volledig bekend en veranderen nadien ook niet meer.
- Evolutionair: het informatiesysteem wordt in opvolgende
versies gebouwd en getest. Tussen twee versies in kunnen de eisen
aan de beschrijving en bouw van het informatiesysteem veranderen
door opgedane ervaringen bij het testen van het informatiesysteem.
Iedere versie kan hetzij een deel van de functionaliteiten bevatten,
hetzij de gehele set aan functionaliteiten bevatten.
Invoeren
Tijdens de laatste fase van het ontwikkelen van het informatiesysteem
dient het informatiesysteem ingevoerd en ingebed te worden in de organisatie
van de klant. Met invoeren en inbedden bedoelen we het installeren
en operationeel in gebruik nemen van een informatiesysteem, met inbegrip
van de organisatorische veranderingen. Bij organisatie brede en complexe
informatiesystemen kan er voor gekozen worden het informatiesysteem
niet in z’n geheel in één keer in te voeren, maar bijvoorbeeld
het informatiesysteem eerst voor één afdeling in te
voeren. Deze stap kan dan bijvoorbeeld dienen als een pilot, met de
bedoeling het informatiesysteem aan te passen en het installatieproces
te verbeteren zonder dat dit grootschalige gevolgen heeft voor de
gehele organisatie. In de volgende stappen kan de geografisch dekking
dan geleidelijk aan toenemen, totdat in de laatste stap het hele doeldomein
wordt afgedekt.
Ontwikkelstrategieën en ontwikkelmethoden
Uit de vorige paragraaf is gebleken dat het ontwikkelen van een informatiesysteem
bestaat uit drie fasen. In de volgende subparagrafen laten wij u zien
dat voor systeemontwikkeling verschillende strategieën en methoden
bestaan.
Ontwikkelstrategie
We beginnen met een definitie. Een ontwikkelstrategie is een manier
waarop het ontwikkelen van een component van een informatiesysteem
kan worden aangepakt: een globale filosofie over de wijze waarop ontwikkelactiviteiten
en ontwikkelobjecten in de tijd worden geordend. De ontwikkelstrategie
is daarom in feite een combinatie van de strategie voor beschrijven,
de strategie voor construeren en de strategie voor invoeren. Een ontwikkelstrategie
bestaat dan ook uit:
- Een aanpak voor ontwikkeling en beheersing.
- Voorstellen voor risicobeheersing
- Eventuele voorstellen voor veranderingsacties, als de situatie
waarin het informatiesysteem ontwikkeld wordt daar om vraagt.
Het spiraalmodel van [Boehm] erkent deze strategiepunten ook. Het
model laat zien, dat het wenselijk is om softwareontwikkeling te zien
als een cyclisch proces. In iedere cycle komen de fases verzamelen
van eisen, ontwerp, implementatie en testen
naar voren. Het cyclisch proces identificeert eerst het deelprobleem
waaraan het hoogste risico gekoppeld zit en zoekt daarna een oplossing
voor dat probleem. Op deze manier kunnen de totale ontwikkelkosten
in de hand worden gehouden. Zie onderstaand figuur.
Ontwikkelmethoden
Voor het ontwikkelen van informatiesystemen zijn in de loop van de
tijd een aantal methoden ontstaan om informatiesystemen te ontwikkelen.
Per definitie verstaan we onder een ontwikkelmethode een vaste,
weldoordachte manier van handelen om een bepaald resultaat te behalen.
Een gedegen ontwikkelmethode biedt dan ook:
- Verifieerbare resultaten (producten).
- Duidelijke ontwikkelstappen (uitvoer, invoer en de relatie daartussen).
- Per ontwikkelstap en per product:
- Regels en richtlijnen
- Technieken (werkwijzen en afbeeldingswijzen)
- Hulpmiddelen
- Scheiding tussen projectdocumentatie (denk aan projectplannen
en voortgangsrapportages) en systeemdocumentatie (denk aan systeembeschrijvingen
en gebruikershandleidingen etcetera).
Bekende ontwikkelmethoden zijn:
- Lineaire systeemontwikkelmethoden: dit zijn klassieke methoden
voor systeemontwikkeling, zoals bijvoorbeeld de watervalmethode.
Bij de watervalmethode wordt op een lineaire wijze een informatiesysteem
ontwikkeld. Allereerst worden de eisen voor het informatiesysteem
bedacht, vervolgens wordt er van deze eisen een ontwerp gemaakt.
Dit ontwerp wordt vervolgens gebouwd en getest en tenslotte wordt
het informatiesysteem ingevoerd.
- Iteratieve systeemontwikkelmethoden: dit zijn modernere methoden
voor systeemontwikkeling. Net zoals bij lineaire systeemontwikkelmethoden
worden alle fasen van het ontwikkelproces doorlopen (van het definiëren
van de eisen tot aan het invoeren van het informatiesysteem). Het
verschil met de vorige methode is echter dat alle fasen meerdere
keren achter elkaar worden doorlopen. Er wordt als het ware gebruik
gemaakt van meerdere ontwikkelcycli. Tijdens iedere cyclus wordt
het informatiesysteem een stukje uitgebreid. Zo ontstaat na een
aantal cycli het gewenste informatiesysteem.
- Systeemontwikkelmethoden volgens pakketbouw: het bouwen van informatiesystemen
door het toepassen van standaardpakketten bij klanten. Zoals al
eerder in dit hoofdstuk werd aangegeven is pakketbouw met name geschikt
voor het implementeren van administratieve informatiesystemen.
- Componentsgewijze systeemontwikkelmethoden: het bouwen van informatiesystemen
door gebruik te maken van kant en klare componenten. Deze laatste
manier van systeemontwikkeling staat nog in de kinderschoenen, maar
zal in de toekomst waarschijnlijk steeds vaker voorkomen, omdat
het ontwikkelen in componenten er voor kan zorgen dat informatiesystemen
veel sneller gebouwd kunnen worden en veel beter kunnen worden onderhouden,
doordat er gebruik gemaakt wordt van herbruikbare componenten.
Kwaliteit van een informatiesysteem
Zoals al eerder is opgemerkt speelt naast de functionele eisen die
aan een informatiesysteem worden gesteld ook de kwaliteitseisen een
belangrijke rol. Hierbij doet zich de extra moeilijkheid voor dat gebruikers
wel zo'n beetje hun functionele behoefte kunnen formuleren, maar dat
hun kwaliteitsbehoeften veel moeilijker boven tafel te krijgen zijn.
Het is voorts belangrijk om een onderscheid te maken tussen wensen en
eisen. De kwaliteiteisen dienen uiteindelijk te worden omgezet in maatregelen
die zorgen voor de gevraagde kwaliteitseigenschappen.
De cyclus van behoefte, via kwaliteitseisen, naar maatregelen en uiteindelijk
vertaald in eigen schappen dient te worden meegenomen in de ontwikkelcyclus.
We zien in deze figuur dat er een terugkoppeling is tussen eigenschappen
en maatregelen en tussen maatregelen en kwaliteitseisen omdat er soms
wat water bij de wijn dient te worden gedaan.
Tools
Voor de verschillende onderdelen van het systeemontwikkeltraject bestaan
verschillende hulpmiddelen, zo zijn er:
- Analysis & design tools, ofwel upper-CASE-tools: dit zijn tools
die ondersteuning bieden bij de definitiestudie, het maken van een
basisontwerp of het maken van een detailontwerp. Denk bijvoorbeeld
aan: Cap Gemini's SDW, Sterling’s Cool-Gen.
- Development tools, ofwel lower-CASE-tools: dit zijn tools die ondersteuning
bieden bij het programmeren, construeren van software. Denk bijvoorbeeld
aan: Uniface, Powerbuilder, NatStar
- GUI Development tools: dit zijn tools die ondersteuning bieden bij
het ontwikkelen van grafische gebruikersinterfaces. Visual Basic,
Borland Delphi, Visual Java J++
- Repository based tools, ofwel systeemencyclopedieën: met behulp
van systeemencyclopedieën heeft de ontwikkelaar alle systeemdocumentatie
op één plaats. Denk bijvoorbeeld aan: Microsoft Repository
- Tools die een combinatie zijn van bovenstaande tools: denk bijvoorbeeld
aan Designer 2000 van Oracle
Fabrieksmatige aanpak
Tenslotte willen we u in deze paragraaf laten zien wat we in de systeemontwikkeling
verstaan onder een fabrieksmatige aanpak.
Componentsgewijze systeemontwikkeling is een trend die we de laatste
tijd steeds vaker zien. Dit verklaart wellicht waarom de laatste tijd
een fabrieksmatige manier van systeemontwikkeling de aandacht trekt.
Bij het fabrieksmatig ontwikkelen van software denken we aan het snel
construeren van software eventueel met behulp van kant en klare componenten,
dit in tegenstelling tot het ontwikkelen van software op een ambachtelijke
manier. Zoals uit onderstaand figuur blijkt, staat in een softwarefabriek
kennisbeheer en kennisontsluiting centraal. Een softwarefabriek kan
namelijk slechts optimaal werken, als het ontwikkelproces kan steunen
op een goed architectuurraamwerk, waarbij kennisbeheer en kennisontsluiting
centraal staat. In een fabriek worden namelijk waar mogelijk componenten
hergebruikt, ingekocht of zelf geassembleerd met het doel zo snel mogelijk
een kwalitatief hoogwaardig product af te leveren.
Evolutie in het proces van systeemontwikkeling
Zoals in het behandelde hierboven reeds vermeld zijn er drie belangrijke
facetten aan het proces van systeemontwikkeling, gevisualiseerd in het
volgende plaatje, die de aard van systeemontwikkeling danig beïnvloedt
: de aanpak, de ondersteuning en de wijze waarop gebruiker en ontwikkelaar
met elkaar omgaan.
De relatie tussen gebruiker en ontwikkelaar wordt steeds "menselijker",
enerzijds doordat de ontwikkelaar steeds krachtiger hulpmiddelen ter
beschikking krijgt om de werkelijke behoefte bij de gebruiker naar boven
te krijgen, anderzijds ontdekken we steeds betere op de situatie afgestemde
ontwikkelaanpakken waarbij de gebruiker meer tot zijn recht komt.
Dit impliceert dat er aan de systeemontwikkelaar nieuwe stijl ook ander
eisen worden gesteld. Naast voldoende kennis van ontwikkelaanpakken
dient hij te beschikken over een gezonde hoeveelheid "soft skills" en
een goed dosis "hard skills".
Onder soft skills verstaan wij de bekwaamheid om met de gebruiker om
te gaan : vragen, luisteren, formuleren, demonstreren met als doel om
de werkelijke behoefte boven tafel te krijgen. Onder hard skills verstaan
we de bekwaamheden om te kunnen toveren met de hedendaagse toolsets
om te tonen wat de gebruiker in zijn hoofd heeft. De systeemontwikkelaar
evolueert van de introverte programmeur naar een extraverte probleemoplosser.
Historische terugblik op de systeemontwikkeling
In de kinderjaren van de informatietechnologie, de zestiger
jaren, was applicatieontwikkeling een uiterst creatieve doch chaotische
bezigheid. We "krasten" stukjes software zonder gehinderd te worden
door voorschriften van welke aard dan ook. De kwaliteit was sterk afhankelijk
van de individuele vakbekwaamheid van de programmeur. De gebruiker,
voor wie we het feitelijk deden, was elke keer weer verbaasd wat er
uit dit mystieke proces te voorschijn kwam. En als er enig verband te
vinden was tussen wat hij vroeg en wat hij kreeg, was dat mooi meegenomen.
Hij had door schade en schande geleerd dat de grote hoeveelheid "creativiteit"
die bij dit magische proces benodigd was, impliceerde dat de kosten
en het oplevertijdstip volledig onvoorspelbaar waren en altijd hoger
respectievelijk later uitvielen dan hij in zijn stoutste nachtmerries
had verwacht. Vanzelfsprekend mocht hij, simpele ziel, niet meedoen
in dit magisch gebeuren. Hij moest wachten en mocht hopen.
In het decennium daarna, de zeventiger jaren, kwamen de methodologen
aan de macht. De standaardisatie sloeg hard toe. Wij deden alles gestructureerd
: we begonnen met het structureren van het programmeren, gevolgd door
gestructureerd ontwerpen, afgerond door gestructureerd testen en "structured
walkthrough". Het netjes en geordend werken kwam in zwang, een discipline
die ons niet zelden veroordeelde tot de dwangbuis.
Deze ontluistering van het magisch proces had echter niet tot gevolg
dat de gebruiker echt mocht meedoen. Het enige wat van hem werd gevraagd,
was zijn handtekening "liefst met zijn bloed" te zetten onder de gestructureerde
specificaties. Deze werden dan bevroren. Onnodig te zeggen dat de gebruiker
niet warmliep voor de applicatie die hieruit te voorschijn kwam. Bovendien
duurde de ontwikkeling meestal zo lang dat hij allang vergeten was waarvoor
hij de applicatie ook alweer precies nodig had.
In de tachtiger jaren werd het roer overgenomen door de heren
technologen. De automatisering werd los gelaten op de automatisering
zelf. Met vierde-generatiesystemen, CASE-tools, herbruikbare modulen/objecten
en repositories werd getracht een meer fabrieksmatige aanpak te volgen.
De gebruiker werd verleid mee te doen door de introductie van het prototypen,
een soort "trial and error" om hem zijn ware behoefte te ontfutselen.
Ondanks alle technologische hoogstandjes bleef die zelfde gebruiker
zitten met de klassieke problemen: "ik kan eigenlijk niet precies zeggen
wat ik in werkelijkheid nodig heb"; "ik weet niet hoeveel geld de benodigde
applicatieontwikkeling mij echt waard is" en tenslotte "ik heb de applicatie
nu meteen nodig, want ik wil nu mijn bedrijfsgebeuren aanpassen dan
wel innoveren".
Pas in de negentiger jaren is het echt tot ons, informatici,
doorgedrongen dat het ontwikkelen van een applicatie een evolutieproces
is, dat verloopt langs de richting van toenemend inzicht in het wezen
van de op-te-lossen situatie. Daarom werken we tegenwoordig : interactief
(samen met de gebruiker), iteratief (ontwikkelen in een aantal
cycli) en incrementeel (stapsgewijs uitbouwend tot een steeds
grotere bruikbaarheid). Een nieuwe aanpak waarbij dogmatiek is verdreven
door pragmatiek. Voor sommige zaken ga je recht op je doel af omdat
je precies weet wat je wil. Bij andere zaken ben je verkennend bezig
en helpen intensieve workshops om op het juiste pad te blijven. Een
harmonische synthese tussen "slechts kort vooruit kunnen zien wat er
met de business gebeurt" en "toch bepaalde zaken structureel te moeten
regelen". Hierbij geeft een methode ondersteuning voor werkelijke creativiteit
: niet bindend, maar richtinggevend.
Een volwassen benadering van de applicatieontwikkeling impliceert tevens
een veel grotere betrokkenheid van de gebruikers, maar bovenal vergt
het een radicaal andere attitude van de informatici.
De ideale mens volgens Socrates heeft een koel hoofd en een warm hart.
De ideale systeemontwikkelaar in onze perceptie beheerst zowel de soft
skills als de hard skills. Hij kan luisteren, inventariseren, formuleren
en overtuigen. Daarnaast bezit hij de technische handigheid om mogelijke
oplossingen "real life" te tonen. Applicatieontwikkelaars worden gewone
mensen van vlees en bloed met een nuchter verstand. Er is geen plaats
meer voor de introverte vakidioot van vroeger. Maar ook de dirigistische
projectleider uit de voorgaande hiërarchisch getinte periodes heeft
als verschijnsel zijn langste tijd gehad. We zien de noodzaak opkomen
van een facilitator die als een "primus inter pares", zorgt dat een
multidisciplinaire groep deskundigen naar een optimaal einddoel wordt
geloodst.
Eindelijk doemt er een nieuw tijdperk van applicatieontwikkeling op
boven de horizon; een periode waarin gebruiker en ontwikkelaar gezamenlijk
als gelijkwaardige partners verantwoordelijk zijn voor een snellere
en meer flexibele toepassing van informatietechnologie in de bedrijfsvoering.
Teamwerk, waarbij de juiste mix van deskundigheden en persoonlijkheidsprofielen
van cruciaal belang is.
Applicatieontwikkeling wordt een ontdekkingstocht van gebruikers en
informatici die samen ontdekken hoe informatietechnologie bedrijfsprocessen
en werkomstandigheden kan verbeteren. Het nut van applicatieontwikkeling
ligt in een bedrijfsnoodzaak; en moet daarom gerelateerd zijn aan het
veranderen van bedrijfsprocessen en het aanpassen van bedrijfsdoelen.
Dit wordt tegenwoordig vastgelegd in een business case. Door toepassing
van "benefit tracking", als thermometer, wordt de vinger aan de pols
gehouden of het bereiken van de bedrijfsdoelen nog wel adequaat wordt
nagestreefd. Het stapsgewijze implementeren is van wezenlijk belang
om te borgen dat de organisatieverandering de verandering in de ICT
kan bijbenen. Hierbij speelt verwachtingsmanagement een grote rol om,
op voorhand, te regelen dat de ontwikkelde applicatie met applaus zal
worden ontvangen. Het is een belangrijk instrument om frustraties te
voorkomen.
Deze volwassen aanpak voor applicatieontwikkeling plaatst de (toekomstige)
gebruikers weer expliciet in de hoofdrol. De gebruikers dienen immers
een transformatie van hun (persoonlijk) functioneren te ondergaan. Voorts
krijgt de opdrachtgever weer het roer in handen. Adequaat kennismanagement
zorgt dat alle betrokkenen delen in de ervaringen die worden uitgewisseld,
waarmee een fundamenteel leerproces op gang wordt gebracht.
Al met al heeft het vier decennia geduurd voor applicatieontwikkeling
deze mate van volwassenheid heeft bereikt. We zien een nieuwe, vlotte
en leuke methode van applicatieontwikkeling opkomen. Een methode die
toegesneden is op deze hectische tijd waar de veranderingen in het bedrijfsleven
en de maatschappij over elkaar heen struikelen. Een tijd waarin wij
geen tijd meer hebben voor zogenaamde "technische" hoogstandjes, maar
die vraagt om een no-nonsense methode van nuchtere zakelijkheid !
Trends
- We zien bij de gebruikers de behoefte verschuiven van het ontwikkelen
"conform specificatie" naar het ontwikkelen met "fitness for use", of
liever nog "fitness for purpose".
- Gebruikers willen minder in projectvorm werken en meer naar een vorm
van continue verbetering door kleine aanpassingen.
- We zien de opkomst van gebruiksgericht specificeren op grond van "use
cases".
- Bij opdrachtgevers zien wij de behoefte opkomen van "concurrent transformation",
het gelijktijdig transformeren van het bedrijfsgebeuren en de daarbij
behorende informatiesystemen.
- De opdrachtgever heeft minder behoefte aan serieel of lineair werken
bij de ontwikkeling van de informatievoorziening.
- Opdrachtgevers willen liever "kopen" dan "maken". Dit resulteert naar
een steeds groter marktaandeel voor pakketleveranciers in het segment
systeemontwikkeling.
- We zien bij de systeemontwikkelaars een verschuiving optreden van
het maken en bedenken van programmatuur naar het assembleren van ( software
) componenten.
- De hedendaagse systeemontwikkeling zal meer en meer worden opgesplitst
in :
- - verrijking van de infrastructuur
- - applicatieontwikkeling ( applicatie assemblage + componentenbouw
)
- Applicatieontwikkeling zal worden teruggebracht van negen maanden
naar negen weken en wellicht zelfs naar negen dagen (uiteindelijk, via
de principes van ‘ultra-iteratie, zelfs naar 9 uur).
- Dit gebeurt door de toepassing van een methode die bestaat uit een
componentsgewijze ontwikkeling onder architectuur in ultra
korte ontwikkelcycli ( interactief, incrementeel, iteratief
)
- De grens tussen ontwikkeling en onderhoud gaat verdwijnen. We krijgen
een continue verrijking van de functionaliteit van de informatiesystemen.
Technologie, zoals push technology helpt om dit ook logistiek voor elkaar
te krijgen. Reparatie zal geschieden middels diagnose op afstand en
het downloaden van de gerepareerde componenten dan wel interfaces.
- We zien bij methoden, technieken en tools voor de systeemontwikkeling
een tendens optreden naar een striktere scheiding in "structureren"
( notatie techniek als UML ) en "ontwikkelen".
- Systeemontwikkeling wordt websiteontwikkeling; het netwerk wordt de
standaard infrastructuur waarop applicaties gaan draaien
- Applicatieontwikkeling verschuift naar applicatie integratie.
- Expliciete handleidingen gaan verdwijnen : we krijgen intuïtieve
gebruiksinterfaces met aanschouwelijke help-faciliteiten.
- Handmatige procedures worden geheel vervangen door workflow en wizards.
- Projectmanagement in zijn huidige vorm gaat verdwijnen. We krijgen
een faciliterend management over ultra korte ontwikkelcycli ( inclusief
deployment ), steeds gebaseerd op concrete benefit cases.
- In feite impliceert een project dat je een grote ingreep moet doen
in de informatievoorziening. Waarom ? Om een achterstand in te halen
?
- Door de opkomst van het Internet ( Intranet ) zien we Web-enabled
Cyberteams ontstaan. Vooral minder frequent benodigde specialismen kunnen
zo meer efficiënt worden aangewend.
- Kwaliteitszorg en management ten aanzien van de voortgang worden impliciet
meegenomen in de ontwikkelcycli.
- We zullen een vernieuwde aandacht zien voor het echte testwerk ( 100%
coverage op componenten ), geïntegreerd door de hele ontwikkelcyclus
heen, en sterk iteratief uitgevoerd (i.p.v. lineair, aan het eind).
Geautomatiseerde tools zijn bij zo’n aanpak van levensbelang.
Statements
- Verantwoorde systeemontwikkeling geschiedt onder architectuur, waarbij
de business case leidend is.
- Belangrijk voor het succes van het proces van systeemontwikkeling
is het vaststellen van de juist scope. Een hek om de wei !
- Het is belangrijk om alvorens te beginnen met applicatieontwikkeling
de infrastructuur zodanig te verrijken dat de applicatie ontwikkeling
wordt vereenvoudigd.
- Inzicht groeit iteratief, dit impliceert lerend ontwikkelen. De vinger
wordt aan de pols gehouden middels "benefit tracking". Een vorm van
incrementeel invoeren is vaak zeer raadzaam opdat de gebruikers de automatiseerders
kunnen bijhouden.
- Er is grote behoefte naar methoden, waarbij mensen op de voorgrond
staan en techniek naar de achtergrond wordt verwezen.
- Een methode is niet een keurslijf voor de creatieve geest;
het dient een ondersteuning te zijn voor werkelijke creativiteit: dus
niet bindend, maar richtinggevend.
- Er bestaat geen standaardaanpak voor alle problemen; het is
niet juist om altijd vast te houden aan de standaard-deliverables.
- Systeemontwikkeling is geen activiteit die alleen door ontwikkelaars
wordt bedreven; dus niet het alleenrecht van automatiseerders,
noch de hobby van professionals.
- Het is niet professioneel te streven naar een perfecte oplossing;
goed is goed genoeg !
- Het is beslist geen schande om concepten en componenten van
een collega te hergebruiken. Het "not invented here"-syndroom past niet
bij een professionele wijze van systeemontwikkeling.
- Effectieve teaming geeft een hogere produktiviteitswinst dan methoden,
technieken en tools.
- Een over het functionele en technische domein gemeenschappelijke onderliggend
modelleringstaal kan het totale ontwikkelproces drastisch versnellen
en verbeteren.
- De toekomst is aan de slagvaardige "assembleur". Assembleren van de
business functionaliteit in de "front office", assembleren van frameworks
in de 'back office".
Oefeningen
- Onderzoek bij uw bedrijf welke ontwikkelstrategieën gebruikt
worden.
- Hoe kan de gebruikersparticipatie in uw bedrijf geregeld worden?
- Onderzoek voor uw bedrijf welke vormen van automatisering van de automatisering
gebruikt worden.
Vragen
- Noem enkele gedachten / uitgangspunten achter de opbouw van het vijfsporenmodel
van de systeemontwikkeling.
- Welke disciplines zijn nodig bij de verschillende trajecten in het
vijfsporenmodel?
- Waarom is het van belang dat het ontwikkelen van de handmatige procedures
parallel aan het bouwen van het systeem verloopt?
- Schets een alternatief voor de gebruikshandleiding.
- Wat wordt bedoeld met de uitspraak dat bij een evolutionaire ontwikkelstrategie
de grens tussen ontwikkeling en onderhoud verdwijnt?
- Wat is de essentie achter (I)CASE?
Definities
acceptatietest
Een acceptatietest is het formeel beoordelen en testen van één
of meer eindproducten, om te bepalen:
- of deze eindproducten voldoen aan de acceptatiecriteria, zodat de
opdrachtgever tot acceptatie van deze eindproducten kan overgaan,
en
- of de eindproducten op een verantwoorde wijze in gebruik en exploitatie
kunnen worden genomen.
We onderscheiden acceptatietests door verschillende organisaties:
gebruikersorganisatie, onderhoudsorganisatie en verwerkingsorganisatie.
applicatieconversie
Applicatieconversie is het aanpassen en overbrengen van een verzameling
applicaties met behoud van functionaliteit, van een bestaande omgeving
naar een andere omgeving.
gegevensconversie
Gegevensconversie is de omzetting van gegevens van een oud (soms handmatig)
informatiesysteem naar de vorm die wordt vereist door het nieuwe informatiesysteem.
Deze omzetting behelst niet alleen een wijziging van het technische
formaat, maar ook functionele werkzaamheden, zoals schonen, selecteren
en aanvullen.
parallelverwerking
Parallelverwerking is een invoeringsstrategie waarbij het nieuwe informatiesysteem
het primaire informatiesysteem is. De gegevens worden echter gedurende
de proefperiode ook nog met het oude informatiesysteem verwerkt.
proeftuin
Een proeftuin is een nabootsing van een volledig informatiesysteem met
handmatige procedures en organisatorische inbedding.
prototype
Een prototype (van een informatiesysteem) is een experimentele, meestal
beperkte, versie van het informatiesysteem. Het experiment kan zeer
uiteenlopende zaken betreffen. Bijvoorbeeld kan het dienen om de functionaliteit
en toepasbaarheid van een gegeven functionele specificatie te demonstreren,
en daarmee tot accorderen of aanpassen van die functionele specificatie
te komen (IKIWISI-effect). Maar ook om het gedrag en de toepasbaarheid
te onderzoeken van het ontwikkelplatform of van onderdelen van de technische
infrastructuur. Of om een indruk te krijgen van de snelheid (of andere
prestatiekenmerken) van het informatiesysteem. Een prototype is niet
noodzakelijkerwijs een volledig informatiesysteem. Het kan zich bijvoorbeeld
concentreren op het gebruikersinterface, of op een cruciaal algoritme.
In het algemeen is het doel van het experiment: vermindering van risico.
prototyping
Prototyping is het ontwikkelen van een informatiesysteem via één
of meer prototypen.
schaduwdraaien
Schaduwdraaien is een invoeringsstrategie waarbij gedurende een proefperiode
het oude en het nieuwe informatiesysteem beide in gebruik zijn.
systeemencyclopedie
Een systeemencyclopedie is een centrale opslagfaciliteit voor alle systeemdocumentatie.
uitgestelde verwerking
Uitgestelde verwerking is een invoeringsstrategie waarin het oude informatiesysteem
gedurende de proefperiode nog het primaire informatiesysteem is. De
gegevens worden echter achteraf ook in het nieuwe informatiesysteem
verwerkt.
Literatuurverwijzingen
- Rijsenbrij, D.B.B. ( 1993 ), Basisconcepten in systeemontwikkeling
: Informatie 35 nr. 11 pp. 664-678
- Rijsenbrij D.B.B., Vlasblom G. ( 1992 ), Resultaatgerichte systeemontwikkeling
: Informatie 34 nr. 2 pp. 81-93.
- Delen G.P.A.J., Rijsenbrij D.B.B. ( 1987 ), Vierde generatie systeemontwikkeling
: Informatie 29 nr. 5 pp. 422-428.
- Vlasblom G., Rijsenbrij D.B.B. ( 1994 ), Flexibilisering van de
methodologie van systeemontwikkeling : Informatie 36 nr. 3 pp.158-167.
Vlasblom G, Rijsenbrij D.B.B. and Glastra M. ( 1995 ), Flexibilization
of the methodology of system development : Information and Software
Technolgy Volume 37 number 11 pp. 595-607.
- Fokkinga L., Glastra M.H., Huizinga H. ( 1996 ), LAD Het lineair
ontwikkelen van informatiesystemen, Academic Service.
- Tolido R.J.H. ( 1998 ) : IAD Het evolutionair ontwikkelen van informatiesystemen,
Academic Service.
- Krugten-Elgersma P., Hoogenboom M. ( 1998 ) : ITC Gids Iterative
Transformation Cycles; een iteratieve ontwikkelaanpak, Academic
Service.
|