# System Development Methodology

System Development Methodology (SDM), ofwel Systeem Ontwikkelings Methodologie (Methodiek) is een faseringsmethode. Het wordt voornamelijk gebruikt bij projecten voor ontwikkeling van (geautomatiseerde) informatiesystemen. Deze methode is de laatste jaren aan verandering onderhevig omdat de ontwikkeling van de automatisering niet stilstaat.

## Geschiedenis

In 1970 heeft een bedrijf PANDATA SDM ontwikkeld in opdracht van drie grote Nederlandse bedrijven (AKZO, Nationale Nederlanden en de toenmalige PTT). In 1987 werd SDM verbeterd en is nu bekend als SDM2. SDM2 is onder andere aangepast ten aanzien van vorige versies vanwege 'het steeds groter wordende belang van de ontwikkeling van informatiesystemen voor de totale bedrijfsplanning, (…), het toegenomen bewustzijn ten aanzien van de invloed van informatiesystemen op de organisatie'.
SDM is een methodiek voor het plannen, ontwerpen, bouwen, invoeren en beheren van informatiesystemen. De fasering is 'top down', vanuit een groter geheel wordt het te ontwerpen informatiesysteem steeds gedetailleerder beschreven. Door middel van het toevoegen van systeemontwikkelingtechnieken kan men het ontwerp hiervan beschrijven in modellen, die vervolgens gebruikt worden om het ontwerp te realiseren. SDM is een watervalmethode: een nieuwe fase begint pas als de oude klaar is.

## Opzet methode

SDM is een methodologie die gebaseerd is op fasering. Voor elke fase wordt nauwkeurig vastgelegd wat er is afgesproken met de betrokken partijen en wat er gedaan moet worden in de desbetreffende fase. SDM maakt gebruik van een procesgeoriënteerde aanpak, dit betekent dat deze methode zich voornamelijk bezighoudt met de planning en organisatie van het te maken systeem. Het beheersen van projecten voor systeemontwikkeling is de voornaamste taak van de ontwikkelmethode SDM. De documenten, waarin deze zaken worden vastgelegd, heten mijlpaalproducten.
Het gebruik van mijlpaalproducten is belangrijk om de volgende redenen:
* De voortgang kan goed gevolgd worden. Door deadlines aan de mijlpaalproducten te koppelen, kan gecontroleerd worden of de uitvoering van het project op schema ligt.
* Wanneer een mijlpaalproduct is goedgekeurd door de opdrachtgever, krijgt deze een bepaalde status. De status kan dan niet zomaar terug gedraaid worden. Dit voorkomt dat de opdrachtgever bijvoorbeeld later nog de systeemeisen kan uitbreiden.
* Een mijlpaalproduct kan de opdrachtgever ertoe leiden om het project af te breken. Dit komt veelal voor bij het begin van het project.
De methode maakt gebruik van zeven verschillende fasen, die achtereenvolgend worden uitgevoerd. Aan het einde van elke fase wordt een eindrapport opgesteld. Hierin worden alle conclusies en verantwoordingen vastgelegd met betrekking tot die fase.
Aan de hand van dit eindrapport kan besloten worden of men doorgaat met het project of dat men het project stopt. Dit wordt aangeduid met de kreten "Go" en "NO-GO". Indien er een "NO-GO" plaatsvindt, kan het ook betekenen dat er verbeteringen gedaan moet worden in de fase. Er mag pas begonnen worden met de volgende fase, wanneer er een "Go" plaatsvindt (watervalmethode).

## Fasering

De zeven fasen die sequentieel behandeld worden zijn:

### Informatieplanning

In deze fase wordt het informatieplan geschreven, waarin o.a. het totale systeem wordt beschreven. Dit houdt in dat het geautomatiseerde deel en het handmatige deel hierin voorkomt. Dit plan verschaft duidelijkheid over welke informatiebehoefte er aanwezig is en hoe deze behoefte door het informatiesysteem wordt voorzien.
De mijlpaalproducten voor deze fase zijn:
   * Het rapport situatieanalyse
       Een analyse van het huidige informatiesysteem en/of de huidige situatie.
   * Het rapport informatieplanning
       Plan met afspraken over de toekomstige informatiebehoefte, de verschillende mogelijkheden van automatisering en de consequenties hiervan.

### Definitiestudie

Bij het uitvoeren van deze fase wordt er onderzoek verricht of het realiseren van het project haalbaar is. Om de haalbaarheid van een project te meten, kan men de volgende vragen als leidraad hanteren:
   * Is het ontwikkelen mogelijk en zinvol?
       De kennis en manuren moeten in voldoende mate beschikbaar zijn en is het huidige systeem toe aan vervanging?
   * Is ontwikkelen technisch haalbaar?
       De apparatuur moet beschikbaar zijn voor het systeem. Wanneer men eisen gaat stellen, waaraan de processor niet kan voldoen, kan met behulp van het systeem ook niet aan de eis worden voldaan.
   * Is ontwikkelen economisch verantwoord?
       Indien de kosten, die gemaakt worden met het ontwikkelen en beheren van het systeem, groter zijn dan de winst die ermee wordt behaald, dan is het financieel gezien niet verstandig om te ontwikkelen.
   * Is het nieuwe systeem organisatorisch inpasbaar?
       De mensen, die binnen de organisatie werken, moeten met het toekomstige systeem kunnen werken.
   * Is het ontwikkelen van het nieuwe systeem politiek haalbaar?
       Het nieuwe systeem mag niet in strijd zijn met de wetgeving.
De mijlpaalproducten voor deze fase zijn:
   * Omschrijving van de systeemeisen
       De eisen waaraan het nieuwe systeem moet voldoen. Hierin wordt bepaald wat het nieuwe systeem allemaal moet kunnen, wat in een latere fase weer gecontroleerd kan worden (tijdens / na de realisatie)
   * Het systeemconcept
       Een omschrijving van de hoofdfuncties van het systeem. Hier staat in welke onderdelen geautomatiseerd worden en welke handmatig worden uitgevoerd.
   * Het totaalplan met kosten/baten-analyse
       Hierin wordt beschreven hoe men het systeem gaat bouwen, met welke voorwaarden en welke kosten eraan verbonden zijn. Dit is een erg belangrijk document, op basis hiervan kan besloten worden of bouwen van het nieuwe systeem wel zin heeft.

### Basisontwerp

Het ontwerp van het systeem zal in deze fase plaatsvinden. Aan de hand hiervan wordt er beschreven wat het systeem zal doen. Ook wordt precies aangegeven uit welke subsystemen het toekomstige systeem zal bestaan. Hierdoor zullen de subsystemen apart kunnen worden ontwikkeld en gebouwd. Dit zal de doorlooptijd van het project aanzienlijk doen verkorten. Alle invoer en uitvoer wordt vastgelegd, net zoals de te bewaren gegevensverzamelingen. Voor alle functies wordt vastgesteld bij welk subsysteem ze horen. De koppeling en interfaces met andere systemen worden ook beschreven. Hiervoor wordt onderzocht wat de relatie is met andere systemen, welke functies de andere systemen hebben en welke gegevensuitwisseling er is. Na het vaststellen van de subsystemen wordt er per onderdeel de systeemeisen genoteerd. Ook worden in deze fase de testcriteria en de testgegevens al verzameld alsook de eventuele organisatorische veranderingen.
De mijlpaalproducten voor deze fase zijn:
   * Bepaling basisgegevensstructuur
       Met welke gegevens wordt in het nieuwe systeem gewerkt, hoe worden de gegevens omgezet van het oude naar het nieuwe systeem.
   * Bepaling basisfunctiestructuur
       Wat worden de nieuwe functies van het systeem.
   * Bepaling technische systeemstructuur
       Hoe gaat het systeem er technisch uitzien? Welke apparatuur, programmatuur, bestandsstructuur en wat voor DBMS wordt er gebruikt.

### Detailontwerp

Deze fase borduurt verder op de vorige fase. Het ontwerp, dat is gemaakt in de vorige fase, wordt verder in detail uitgewerkt. Dit wordt gedaan door specifieker te beschrijven wat elk onderdeel van het systeem doet. Het resultaat hiervan is het functioneel ontwerp. Tevens legt men in deze fase vast hoe de beschreven onderdelen gerealiseerd worden. Dit resulteert in het technisch ontwerp.
De mijlpaalproducten voor deze fase zijn:
   * Rapport functioneel ontwerp
       Dit rapport bestaat uit een volledige beschrijving van de functies, van de gegevensstructuur en van de mens/machine interface (welke invoer moet door het nieuwe systeem worden verwerkt en welke uitvoer geproduceerd).
   * Rapport technisch ontwerp
       Hierin staan zaken als beschrijving van de formulieren en procedures (Welke documenten worden gebruikt, hoe ziet de randapparatuur eruit), beeldschermbeschrijvingen (interfaces), opslagstructuur en uit welke hardwarecomponenten zal het nieuwe systeem bestaan (Specificatie componenten).
   * Plan voor systeemtest
       Dit is een gedetailleerd testplan, waarin opgenomen is op welke manier getest wordt, hoe de test eruit zal zien, wie de test uit zal voeren, wie besluit of de test met goed gevolg is afgerond, welke gegevens worden gebruikt (testcriteria en testgevallen) etc.
   * Plan voor acceptatietest
       Deze test is soortgelijk aan de systeemtest, alleen is deze test bedoeld voor de gebruiker c.q. opdrachtgever. De opdrachtgever kan het systeem wel of niet accepteren, aan de hand van deze test.
   * Plan voor realisatie en invoering
       Hierin wordt aangegeven welke mensen en middelen nodig zijn voor de realisatie en invoering en welke werkzaamheden uitgevoerd moeten worden om dit mogelijk te maken.

### Realisatie

In deze fase wordt het systeem daadwerkelijk gebouwd (gerealiseerd). Hiervoor van belang zijn het functioneel ontwerp rapport en het technisch ontwerp rapport. Dit zijn de uitgangspunten waarop het systeem gebaseerd wordt. Ook wordt er in deze fase de benodigde hardware gekocht, worden dus de programma’s geschreven, worden er cursussen gemaakt, wordt het systeem getest, wordt ervoor gezorgd dat de documentatie in orde is en geeft de opdrachtgever zijn eindoordeel middels de acceptatietest. Deze fase is af wanneer het systeem voldoet aan de eisen en uiteindelijk goed is gekeurd door de opdrachtgever; oftewel: wanneer beide tests succesvol zijn verlopen. Hierna wordt het nieuwe systeem bij het bedrijf ingevoerd.
De mijlpaalproducten voor deze fase zijn:
   * Rapport systeemtest
       Hierin staat de uitslag van de systeemtest. Er is getest of de programmatuur goed werkt en of het systeem aan de systeemeisen voldoet.
   * Rapport acceptatietest
       Dit is de uitslag van de acceptatietest. In deze test wordt vastgesteld of het informatiesysteem aan de eisen van de gebruiker voldoet. Als het systeem door de opdrachtgever geaccepteerd wordt, zal deze ook betalen.

### Invoering

Tijdens deze fase wordt het opgeleverde systeem geïnstalleerd bij de opdrachtgever. De cursussen (uit de vorige fase), worden gegeven en het personeel wordt vertrouwd gemaakt met het nieuwe systeem. De gegevens worden in het nieuwe systeem ingevoerd, met een eventuele conversie. De documentatie wordt overhandigd aan de persoon die het nieuwe systeem moet gaan beheren (systeembeheerder). Ook wordt de omgeving waarin het nieuwe systeem moet draaien aangepast.
De mijlpaalproducten voor deze fase zijn:
   * Conversie en invoeringsplan
       Hierin is aangegeven hoe de mogelijke conversie plaatsvindt en hoe de totale invoering moet gebeuren
   * De afgesloten projectdocumentatie
       De totale documentatie die tijdens de ontwikkeling is opgebouwd wordt afgesloten. Deze documentatie zal worden overhandigd aan de systeembeheerder.
   * Het overdrachtsrapport
       Dit is het eindrapport waarmee het systeem overgedragen wordt aan de organisatie.

### Gebruik en beheer

Hoewel de organisatie het systeem volledig gaat overnemen, zijn er nog wel enkele richtlijnen wat betreft gebruik en beheer. Deze regels moeten ervoor zorgen dat het systeem blijft voldoen aan de gestelde eisen. Ook wordt aangegeven hoe defecten en storingen verholpen moeten worden. Bovendien kunnen deze regels belangrijk zijn bij het aanbrengen van verbeteringen. Al deze activiteiten hebben een doorlopend karakter; ze bestaan zolang het systeem bestaat. Deze fase wordt dan ook niet afgerond.
De mijlpaalproducten voor deze fase zijn:
   * Organisatie van gebruik en onderhoud
       Hierin staat beschreven op welke manier gebruik en onderhoud zijn geregeld. Er staat in wie verantwoordelijk voor wat is en wie welke taken op zich heeft genomen.
   * Verschillende gebruiks- en beheersplannen
       Dit is een overzicht van de verschillende gebruiks- en onderhoudsvormen zoals een beveiligingsplan, een rampenplan, een plan voor training van personeel, een onderhoudsplan een plan voor herstel van fouten en een gegevensbeheerplan.
   * Volledige systeembeschrijving
       Een volledig en steeds bijgewerkte beschrijving van het totale systeem is onmisbaar. Aanpassingen zijn mogelijk met behulp van deze beschrijving.
   * Periodiek beoordelingsrapport
       Minstens een keer per jaar is er een rapportage nodig over hoe het systeem op dat moment functioneert. Dit rapport bevat aanbevelingen over toekomstige activiteiten (wijziging, vervanging etc).

## Gebruikte technieken

De SDM methode maakt gebruik van de volgende modelleertechnieken:
* Data Flow Diagram (DFD)
Met deze modelleertechniek wordt een beperkte weergave van een systeem gemodelleerd. Uit deze modellen is af te lezen welke handelingen worden verricht binnen een systeem en met welke gegevens dat gebeurt. Hieruit is niet af te lezen wie iets doet en met welke apparatuur de handeling uitgevoerd wordt.
* Contextdiagram
Als je begint met het maken van DFD’s, is het eerste wat je maakt een globaal plaatje. Dat wil zeggen, je ziet niet wat er binnen in het systeem gebeurt. Dit is het contextdiagram. Een goed uitgangspunt voor dit diagram zijn de systeemeisen. In dit diagram leg je de relaties met de buitenwereld vast en wat tot je systeem behoort (en wat niet). Dit is de systeemgrens.
* Activiteitenschema
Bij elke van de zeven fasen wordt een activiteitenschema gemaakt. Hierin worden alle activiteiten genummerd en weergegeven. Door middel van pijlen wordt het verloop van de activiteiten zichtbaar. Wanneer er bijvoorbeeld een pijl van activiteit 1 naar activiteit 2 loopt, dan wordt activiteit 2 gestart, wanneer activiteit 1 is afgerond.

## Voordelen

* Duidelijke ordening van de verschillende fases;
* Voorkomt het overslaan van belangrijke fasen.

## Nadelen

* Kans op mislukking is groot;
* Kost veel tijd en dus geld;
* In de definitiestudie moet het systeem al volledig worden beschreven;
* Weinig gebruikersparticipatie.
* Inefficiënt werken
Bron: Systeemontwikkeling deel1: statische informatiesystemen door: D.T.G.P. Vogelaars en J.J. Merk.

## Voetnoot

$^1$: bron: Turner, W.S., R.P. Langerhorst, G.F. Hice, H.B. Eilers, E.Remmerde, A.A. Uijttenbroek, SDM - System Development Methodology, Rijswijk, 1990