# DOJ SDLC

DOJ SDLC (Department of Justice Systems Development Life Cycle) is een methode van het ministerie van justitie van de Verenigde Staten voor het ontwikkelen van informatiesystemen. Deze methode bevat procedures en richtlijnen voor het opzetten van projecten, conceptontwikkeling, planning, requirements analyse, ontwerp, ontwikkeling, integratie, implementatie en onderhoud van informatiesystemen binnen het Ministerie van Justitie. Dit model is opgezet volgens de watervalmethode.

## Achtergrond

Het ministerie van justitie besteedt jaarlijks miljoenen dollars aan het ontwerpen, ontwikkelen, implementeren en onderhoud van informatiesystemen. Ook werd de behoefte aan een veilig en betrouwbaar systeem steeds groter, daar er steeds meer vereist wordt van de informatiesystemen. Dit heeft ertoe geleid dat de ministerie van justitie een systematische en uniforme methode heeft ontwikkeld voor het ontwikkelen van informatiesystemen. De doelstellingen zijn:
* Het minimaliseren van de projectrisico's
* Kijken of systeem- en datavereisten nog voldoen aan de huidige eisen gedurende de levenscyclus
* Zo vroeg mogelijk technische fouten opsporen
* Alle kosten vaststellen voor bedrijfskundige beslissingen
* Zorg dragen dat er realistische eisen worden gesteld aan een project
* Het aanbieden van informatie zodat alles beter samenwerkt
* Periodiek nagaan of systemen nog up-to-date zijn
* Voortgang en status meten; en daarop inspelen
* Ondersteuning van resource management en budgetplanning
* Voldoen aan de huidige en toekomstige eisen

## De werkwijze

De DOJ SDLC bevat 10 stages welke 1 voor 1 worden doorlopen tijdens de voortgang van het project. De tiende stage vindt alleen plaats wanneer het project wordt geannuleerd of anderszins wordt stopgezet.

### De initiatiefase (Initiation Phase)

De initiatiefase van het project wordt bereikt wanneer een bedrijf of instelling een softwaresysteem nodig heeft. Er zal een projectmanager aangesteld moeten worden om het project te begeleiden. De benodigdheden van het bedrijf worden samengevat in het conceptvoorstel (Concept Proposal). Wanneer het conceptvoorstel is goedgekeurd begint de volgende stap: de systeemconceptontwikkelingfase. Bij de initiatiefase horen verschillende activiteiten en taken:
* Vaststellen van de mogelijkheid om bedrijfsfuncties te verbeteren.
* Vaststellen van een projectsponsor.
* Vormen van een projectgroep.
* Het documenteren van de inspanningen tijdens deze fase, vastleggen in het conceptvoorstel.
* Goedkeuring van de eerste fase, zodat aan de volgende fase kan worden begonnen.

### Systeemconceptontwikkelingsfase (System Concept Development Phase)

Wanneer de businessbehoeften zijn vastgesteld, worden de kernpunten daaruit gehaald en in een document gezet “Systems Boundary Document”. Dit document zal voor goedkeuring gaan naar een van de leidinggevende om zo te controleren op de gegevens ten aanzien voor de budgettering. Op grond van dit document zal de verdere budgettering afgehandeld worden. Vervolgens wordt de planningfase gestart. Bij de systeemconceptontwikkelingsfase horen de volgende activiteiten en taken:
* Bestuderen en analyseren wat de wensen zijn van de organisatie.
* Het maken van een planning voor het project.
* Formulieren van een project (verwerving) strategie.
* Bestuderen en analyseren van risico’s.
* Verkrijgen van financiële middelen, personeel en bronnen.
* Het documenteren van de inspanningen tijdens deze fase.
* Goedkeuring en feedback op deze fase.

### Planningfase (Planning Phase)

Het vorige concept zal nu uitgediept worden in een nieuw document. Dit document zal beschrijven hoe er in de toekomst gewerkt zal worden met het nieuwe systeem, en hoe dit de gebruikers zal beïnvloeden. Om te zorgen dat het project op tijd en binnen budget afkomt, zal er een plan opgesteld worden waarin de middelen, gereedschappen en activiteiten gepland worden. Ondertussen worden er ook beveiliging en andere risico’s bekeken en onderzocht en waar mogelijk uitgesloten. Taken en activiteiten die behoren tot de planningfase:
* Verfijnen van de werving strategie in het “Systems Boundary Document” (SBD).
* Analyseren van projectschema.
* Maken van interne processen.
* Zorg dragen voor het juiste personeel.
* Opzetten van overeenkomst met opdrachtgevers en belanghebbende organisaties.
* Ontwikkelen van een projectmanagementplan.
* Ontwikkelen van een systeemtechniekmanagementplan.
* Bekijken van haalbaarheid alternatieve systemen.
* Bestuderen en analyseren van beveiligingsaspecten.
* Plannen van de verwerving strategie beschreven in SBD.
* Ontwikkelen van een concept om vast te leggen hoe het systeem zal worden gebruikt.
* Eventueel bijwerken van documentatie.

### Eisenanalysefase (Requirements Analysis Phase)

In deze fase worden de benodigde functies zoals deze waren gedefinieerd in het initiatie verslag meetbaar gemaakt, zodat er een soort taken lijst gemaakt kan worden deze wordt gedocumenteerd. Taken en activiteiten bij eisenanalysefase:
* Analyseren en documenteren eisen of requirements.
* Ontwikkelen van test criteria en opstellen testplan.
* Maken van een controle document om raakvlakken met andere systemen vast te stellen.
* Beleggen van een functionele review, om te zien of de eisen begrepen worden en volledig zijn.
* Bijwerken documentatie.

### Ontwerpfase (Design Phase)

In deze fase wordt de software uitgedacht aan de hand van alle vorige gegevens. Er worden hier sub systemen gemaakt om zo een goede moduleren te krijgen. Waarbij alle subsystemen nog weer worden gemoduleerd, bij al deze modules wordt een gedetailleerde logica schema’s gemaakt en gedocumenteerd. Taken en activiteiten bij ontwerpfase:
* Vaststellen van de omgeving waarin de applicatie ontwikkeld wordt.
* Ontwerpen van de applicatie.
* Maken van handleidingen. Onderhoudshandleiding.
* Bepalen of het ontwerp consistent is met het geheel.
* Vaststellen hoe gebruiker getraind zullen worden.
* Vaststellen van conversie-, migratie- en overgangstrategieën.
* Bekijken van beveiligingsaspecten en risico’s.
* Ontwerpreview, kan de volgende fase gestart worden.
* Aanpassen van de documentatie.

### Ontwikkelingsfase (Development Phase)

De gedetailleerde systemen uit de designfase worden nu omgezet in software, hardware en communicatie. De softwaresystemen worden getest, geïntegreerd en nogmaals getest en de hardware wordt in elkaar gezet en getest. Taken en activiteiten bij ontwikkelfase:
* Codeer en test de software.
* Integratie van de software.
* Voer de softwarekwalificatietest uit.
* Integratie van het systeem.
* Voer de systeemkwalificatietest uit.
* Installatie van de software.
* Documentatie van de softwaregoedkeuring.
* Herzie de vorige documentatie.

### Integratie- en testfase (Integration and Test Phase)

De verschillende componenten worden gekoppeld en door verschillende mensen getest. De eerste test zal een gebruikerstest zijn. Hierna worden nog verschillende tests uitgevoerd ten aanzien van de documenten zodat deze documenten dezelfde opties en functies hebben. Dit houdt in dat er wordt gekeken of er geen informatie verloren is gegaan tijdens het samenvoegen. Taken en activiteiten bij integratie- en testfase:
* Voer de omgevingstest uit.
* Voer de integratietest uit.
* Voer de subsysteem- / systeemtest uit.
* Voer de Veiligheidstest uit.
* Voer de Goedkeuringstest uit.
* Herzie de vorige documentatie.

### Implementatiefase (Implementation Phase)

Nadat de gebruikerstesten succesvol afgerond zijn, wordt het systeem operationeel gemaakt en kunnen de mensen ermee werken. Taken en activiteiten bij implementatiefase:
* Breng de gebruikers van nieuwe implementatie op de hoogte.
* Voer het opleidingsplan uit.
* Voer gegevens invoer of gegevensomzetting uit.
* Installeer het systeem.
* Hou een postimplementatiereview.

### Onderhoudfase (Operations and Maintenance Phase)

In deze fase wordt het systeem in de gaten gehouden en waar nodig wordt het systeem gerepareerd. Ook wordt het systeem uitgebreid en/of aangepast wanneer er functionaliteit bij komt/bij moet komen. Taken en activiteiten bij onderhoudsfase:
* Identificeren van de systeemoperaties.
* Onderhouden van de Gegevens/Softwareadministratie.
* Identificeren van het Probleem- en Wijzigingsproces.
* Systeem onderhoud / softwareonderhoud.
* Herzien van de vorige documentatie.

### Terminatiefase (Disposition Phase)

In deze fase wordt het systeem op een nette manier afgebroken en wordt ervoor gezorgd dat vitale informatie wordt bewaard, zodat het op een later tijdstip eventueel nog hergebruikt kan worden. Taken en activiteiten bij terminatiefase:
* Voorbereiden van het Terminatieplan.
* Archiveren of verplaatsen van de gegevens.
* Archiveren of verplaatsen van de softwarecomponenten.
* Archiveren van de Life-Cycle producten.
* Beëindig het systeem op een ordelijke manier.
* Materialen wegdoen.
* Bereid postterminatiereviewrapport voor.