From b192f5fdba5fb8453e0acdd086f62af8813794cf Mon Sep 17 00:00:00 2001 From: Frank Niessink Date: Tue, 22 Oct 2024 16:45:16 +0200 Subject: [PATCH] In maatregel M01 "Het project levert in elke fase vastgestelde producten en informatie op" verduidelijkt dat de aparte detailtestplannen die onder verantwoordelijkheid van het project door een derde partij worden uitgevoerd doorgaans de vorm hebben van een offerteaanvraag gemaakt door ICTU en een offerte met plan van aanpak gemaakt door de leverancier. Closes #953. --- Content/Maatregelen/M01/Maatregel.md | 2 +- Content/Wijzigingsgeschiedenis.md | 1 + docs/wip/ICTU-Kwaliteitsaanpak-Checklist.xlsx | Bin 36696 -> 36744 bytes .../ICTU-Kwaliteitsaanpak-Samenvatting.html | 2 +- ...aliteitsaanpak-Wijzigingsgeschiedenis.html | 2 +- docs/wip/ICTU-Kwaliteitsaanpak.docx | Bin 574569 -> 574613 bytes docs/wip/ICTU-Kwaliteitsaanpak.html | 2 +- docs/wip/ICTU-Kwaliteitsaanpak.pptx | Bin 1149378 -> 1149378 bytes docs/wip/ICTU-Template-Compacte-Voorfase.docx | Bin 212600 -> 212600 bytes ...ate-Detailtestplan-Softwarerealisatie.docx | Bin 215559 -> 215558 bytes docs/wip/ICTU-Template-Generiek.docx | Bin 209857 -> 209857 bytes ...-Template-Globaal-Functioneel-Ontwerp.docx | Bin 212002 -> 212001 bytes ...Template-Inwerkplan-Kwaliteitsmanager.docx | Bin 214441 -> 214440 bytes docs/wip/ICTU-Template-Kwaliteitsplan.docx | Bin 225677 -> 225677 bytes ...mplate-Plan-van-Aanpak-Realisatiefase.docx | Bin 218907 -> 218907 bytes ...CTU-Template-Plan-van-Aanpak-Voorfase.docx | Bin 217307 -> 217307 bytes ...emplate-Software-architectuurdocument.docx | Bin 213935 -> 213934 bytes docs/wip/Neutraal-Template-Generiek.docx | Bin 30873 -> 30872 bytes ...l-Template-Infrastructuurarchitectuur.docx | Bin 33000 -> 33000 bytes .../wip/Neutraal-Template-Mastertestplan.docx | Bin 206266 -> 206266 bytes ...traal-Template-Niet-Functionele-Eisen.docx | Bin 48839 -> 48838 bytes 21 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Content/Maatregelen/M01/Maatregel.md b/Content/Maatregelen/M01/Maatregel.md index cb4ac716..a2fa85bf 100644 --- a/Content/Maatregelen/M01/Maatregel.md +++ b/Content/Maatregelen/M01/Maatregel.md @@ -107,7 +107,7 @@ Beschikbare templates: De testplannen bestaan uit een mastertestplan (MTP), gemaakt op basis van een productrisicoanalyse (PRA), en detailtestplannen. Het doel van een mastertestplan is om betrokkenen bij het testproces te informeren over de strategie, aanpak, activiteiten, inclusief de onderlinge relaties en afhankelijkheden, en de op te leveren producten met betrekking tot het testtraject. Het mastertestplan beschrijft deze strategie, aanpak, activiteiten en eindproducten, die in de detailtestplannen verder worden gedetailleerd. -De opdrachtgevende organisatie is verantwoordelijk voor het mastertestplan. Het project maakt een detailtestplan voor de testsoorten die tijdens de realisatiefase door het project worden uitgevoerd. Voor testen die onder verantwoordelijkheid van het project door een derde partij worden uitgevoerd, denk aan penetratietesten en evaluaties van gebruikskwaliteit, worden aparte detailtestplannen gemaakt. +De opdrachtgevende organisatie is verantwoordelijk voor het mastertestplan. Het project maakt een detailtestplan voor de testsoorten die tijdens de realisatiefase door het project worden uitgevoerd. Voor testen die onder verantwoordelijkheid van het project door een derde partij worden uitgevoerd, denk aan penetratietesten en evaluaties van gebruikskwaliteit, worden aparte detailtestplannen gemaakt. Deze hebben doorgaans de vorm van een offerteaanvraag gemaakt door ICTU en een offerte met plan van aanpak gemaakt door de leverancier. Logische testgevallen worden vastgelegd en gekoppeld met use cases en user stories. Fysieke testgevallen worden vastgelegd in het formaat van de gebruikte tooling en gekoppeld met de logische testgevallen. Op basis hiervan worden testrapportages gegenereerd die laten zien dat alle use cases en user stories zijn getest en dat die tests zijn geslaagd. diff --git a/Content/Wijzigingsgeschiedenis.md b/Content/Wijzigingsgeschiedenis.md index 052b57eb..80b4b569 100644 --- a/Content/Wijzigingsgeschiedenis.md +++ b/Content/Wijzigingsgeschiedenis.md @@ -5,6 +5,7 @@ * Een Word-versie toegevoegd, om het makkelijker te maken wijzigingsvoorstellen in te dienen. * De PDF-versie wordt niet langer gemaakt. De software (wkhtmltopdf) om de PDF te genereren wordt niet meer onderhouden. Overstappen op een andere oplossing kost te veel tijd. Indien nodig kunnen gebruikers de HTML-versie zelf naar PDF exporteren met behulp van een webbrowser. * Een inhoudsopgave toegevoegd aan de HTML-versie. +* In maatregel M01 "Het project levert in elke fase vastgestelde producten en informatie op" verduidelijkt dat de aparte detailtestplannen die onder verantwoordelijkheid van het project door een derde partij worden uitgevoerd doorgaans de vorm hebben van een offerteaanvraag gemaakt door ICTU en een offerte met plan van aanpak gemaakt door de leverancier. ## Samenvatting Kwaliteitsaanpak diff --git a/docs/wip/ICTU-Kwaliteitsaanpak-Checklist.xlsx b/docs/wip/ICTU-Kwaliteitsaanpak-Checklist.xlsx index 5ab1d2756d589819cb7c226aae9eb0b9c9e0da6b..07cbb9499b246adbbd9eb6017162d9376de8baca 100644 GIT binary patch delta 22325 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%0DTLYhm+vs6|$+MTq!~3Vnqc6W@P>HKS(gpTT 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�jWyz zw)6R#Xkzn`P1LB>PAQm6$xD4F3jcY4;!c&qb8X@#@u!Yl<4Ve9WEy|quyaA;T3tXzhWa%_Y0LUO_6a0~+i+TOmAGy> z9~zF4E-pjuHPMqKy3CawoTD|*x)6P1@)ZT|9vrv=3n$!#=AC{X7?;y;BAVA>{F0e1 zu23d_wZNkM*P?-XR2M2%#-bQE8}l#q#@o_fiXGyPwWw&n$G)7Bap2ZRmc$;NEK?&= z!pTX6o@@ko2rNuYb(0V`j}m$ctIg)sJW8=NH1=-RZ%OUM38Cbo^Uzy2GVgxsJZ49l z@*udgNB|_AV_VPt3=zr_DhKjXqqWJin0BOp?=jWI*`T%1z3qA+iFhwn0_AK|%&9#k zwzgiUTzTs>gLiWDk!RtU>`ZN_N1*6Bj=rVb1->p`vkBOXuwa5LF`V_8R3?^C%+f?&{(6ev+YIlL`_YK5@t( zr3uZ1=E_5o5aP)(IDPo?M38lg>9dl5;m}e@&&{mHQ*cGed#{3R)cc%hg1%^oT=hfm ze82++d~;qqf`8KYPe>S(CH+OiXZ~6N#aIzOm4dCPR5hXkHg#Sk5AHv>e<%L=c|cW8 zPnCbNm^KOe51FeY8T ziz@)o`2~xCX zXW-i|Myq8&1|}MMUlIiBdVQAAbiIya9fw;*?nOcc z8%}*jZ6n6?t(j4rd-sq=hcX=0t(H+!{1Cdq-3^+lD873j>VxvQK72S}<&ERiOf!9~ ze#lXAh^u{QK5nu)@nz!)}(4CFLS{eurTU1?6%Q2_Mt{e>vQRN zQLSGtdHjZF{)V3rcx2F7;_(|xyH#$d1g}q$Rnlh#1B7@w2Y?@ z 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 delta 22273 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 diff --git a/docs/wip/ICTU-Kwaliteitsaanpak-Samenvatting.html b/docs/wip/ICTU-Kwaliteitsaanpak-Samenvatting.html index f0d6b5b0..20c57549 100644 --- a/docs/wip/ICTU-Kwaliteitsaanpak-Samenvatting.html +++ b/docs/wip/ICTU-Kwaliteitsaanpak-Samenvatting.html @@ -1,5 +1,5 @@ -ICTU Kwaliteitsaanpak Softwareontwikkeling versie wipICTU logo

ICTU Kwaliteitsaanpak Softwareontwikkeling

Samenvatting

Versie wip, 02-08-2024

Inleiding

De overheid is in hoge mate afhankelijk van informatiesystemen voor de uitvoering van haar taken. Veel van die informatiesystemen zijn dusdanig specifiek dat de benodigde software “op maat” gemaakt moet worden. De totstandkoming van op maat gemaakte software is meestal een complex proces, waarin vele belangen en behoeften worden afgewogen en afgezet tegen de mogelijkheden die technologie biedt. Eenmaal operationeel zal een informatiesysteem verantwoord onderhouden moeten worden; behoeften en technologie veranderen in de loop van de tijd.

Overheidsprojecten waarin software wordt ontwikkeld of onderhouden kampen nog vaak met vertraging, budgetoverschrijding of een eindresultaat met te lage kwaliteit. Zo concludeerde de commissie-Elias in haar eindrapport: "De Rijksoverheid heeft haar ICT (Informatie- en communicatietechnologie)-projecten niet onder controle". Eén van de fundamentele problemen is dat de risico's, die inherent zijn aan softwareontwikkeling, door organisaties nog onvoldoende worden herkend, erkend en gemitigeerd. Dit terwijl de risico's bij de ontwikkeling van software, binnen het ICT-domein, algemeen bekend zijn en er ook voor veel risico's passende maatregelen bestaan.

ICTU heeft jarenlange ervaring met het realiseren van software en past de opgedane ervaring toe bij de ontwikkeling van nieuwe software. Die ervaring is vastgelegd in een werkwijze, deze “ICTU Kwaliteitsaanpak Softwareontwikkeling”, die telkens wordt aangepast en aangevuld op basis van de praktijk.

ICTU is ervan overtuigd dat het bouwen van duurzame software, die goed aansluit bij de behoeften van gebruikers en andere belanghebbenden, bijdraagt aan betere informatiesystemen en een betere dienstverlening door de overheid. Dienstverlening die betrouwbaar moet zijn voor burgers, bedrijven en ambtenaren. Om samen met opdrachtgevende organisaties passende oplossingen te realiseren ontwikkelt ICTU daarom software volgens een agile proces. En om de duurzaamheid en betrouwbaarheid te bevorderen besteedt ICTU standaard aandacht aan beveiliging, privacy, performance, gebruikskwaliteit en toegankelijkheid. De Kwaliteitsaanpak dient daarvoor als leidraad, maar de aanpak voorziet ook in mogelijkheden om het project en het eindproduct aan te passen aan de specifieke situatie.

Om projecten, die software realiseren volgens de Kwaliteitsaanpak, efficiënt en effectief te ondersteunen, heeft ICTU twee gespecialiseerde afdelingen in het leven geroepen. Deze afdelingen staan projecten bij door middel van kennis, menskracht en technische hulpmiddelen. Zo profiteren projecten van schaalgrootte en hergebruik van inzichten.

Met behulp van de ICTU Kwaliteitsaanpak Softwareontwikkeling heeft ICTU samen met andere overheden inmiddels enige tientallen projecten succesvol uitgevoerd. ICTU wil deze aanpak graag aanvullen met de ervaringen en geleerde lessen van andere organisaties en deze overdraagbaar maken en breder uitdragen. Om die reden stelt ICTU deze Kwaliteitsaanpak aan iedereen beschikbaar via https://www.ictu.nl/kwaliteitsaanpak en heeft zij, samen met normalisatie-instituut NEN en partijen uit overheid en markt, een praktijkrichtlijn “Risicobeheersing bij ontwikkeling en onderhoud van maatwerksoftware” [NEN NPR 5326:2019] gepubliceerd, die mede is gebaseerd op de ICTU Kwaliteitsaanpak Softwareontwikkeling.

Doelstellingen

De ICTU Kwaliteitsaanpak Softwareontwikkeling heeft drie doelstellingen:

  1. Opdrachtgevende organisaties helpen bekende risico's bij softwareontwikkeling, zoals technische schuld, vertraging en defecten, zo veel mogelijk te voorkomen.
  2. ICTU helpen om software te ontwikkelen die de missie van ICTU, namelijk bijdragen aan een betere digitale overheid, ondersteunt.
  3. De overheid als geheel helpen bij het zo goed mogelijk ontwikkelen van software.

De Kwaliteitsaanpak zelf is geformuleerd in de vorm van maatregelen die elke software-ontwikkelende organisatie kan treffen om risico's van softwareontwikkeling te mitigeren en de kans op succesvolle softwareontwikkelprojecten te vergroten. De maatregelen zijn gebaseerd op geleerde lessen uit de praktijk van ICTU.

De Kwaliteitsaanpak is een evoluerende aanpak, gebaseerd op de ervaringen die ICTU continu opdoet in de projecten waarin ICTU samen met opdrachtgevende organisaties maatwerksoftware ontwikkelt en onderhoudt. ICTU hanteert daarbij de vuistregel dat als tenminste 80% van de projecten minstens 80% van de tijd een bepaalde werkwijze hanteren, voor die werkwijze een maatregel in de Kwaliteitsaanpak wordt opgenomen. Maar het kan ook voorkomen dat maatregelen om andere redenen landen in de Kwaliteitsaanpak; denk aan het toegankelijk maken van software dat wettelijk verplicht is. Zie ook de wijzigingsgeschiedenis in PDF-formaat of HTML-formaat.

De maatregelen vormen het startpunt voor de aanpak van ieder ICTU-softwareproject, waarbij ruimte wordt geboden voor variatie of alternatieve invulling. Bijvoorbeeld stelt de Kwaliteitsaanpak: software wordt minimaal bij iedere grote release of tenminste twee keer per jaar onderworpen aan een beveiligingstest door beveiligingsexperts die ICTU daarvoor inhuurt (zie M26: Het project laat de beveiliging van het ontwikkelde product periodiek beoordelen). Een alternatief is dat de opdrachtgevende organisatie de verantwoordelijkheid neemt voor het laten uitvoeren van beveiligingstests. Hierover maakt de projectleider nadere afspraken met de opdrachtgever.

De Kwaliteitsaanpak is dus zowel voorschrijvend als beschrijvend. Voorschrijvend omdat ICTU verwacht dat projecten die maatwerksoftware ontwikkelen en onderhouden de aanpak toepassen, en alleen aanpassen als daar een goede reden voor is, en mits dat wettelijk is toegestaan. Tegelijkertijd is de aanpak beschrijvend omdat de meeste maatregelen voortkomen uit de bestaande werkwijzen van de projecten. Zoals blijkt uit de self-assessment die ICTU regelmatig uitvoert op de toepassing van de Kwaliteitsaanpak.

Maatregelen

Hieronder zijn alle maatregeldefinities uit de Kwaliteitsaanpak opgenomen. Zie de Kwaliteitsaanpak zelf voor een uitgebreidere beschrijving van de maatregelen, inclusief context en rationale.

Producten

M31: Het project beschikt over actuele vastgestelde informatie
Voor een goede uitvoering van het project is specifieke informatie nodig. De opdrachtgevende organisatie zorgt dat het project bij de start van de voorfase inzicht heeft in de informatie die typisch wordt vastgelegd in een projectstartarchitectuur, business impact analysis en privacy impact assessment. Waar nodig werkt de opdrachtgevende organisatie de informatie bij tijdens de voorfase en realisatiefase.
M01: Het project levert in elke fase vastgestelde producten en informatie op
Iedere projectfase levert specifieke informatie op. De voorfase levert inzicht in de functionele en niet-functionele eisen, ontwerp en architectuur, testplannen, operationele risico's, en benodigde kwaliteitsmaatregelen. Deze informatie wordt tijdens de realisatiefase waar nodig bijgewerkt. De realisatiefase levert één of meerdere werkende versies van de software met regressietests, aangevuld met een vrijgaveadvies, release notes en installatiedocumentatie.
M32: Het project onderzoekt de kwaliteit van over te nemen software
Als tijdens een project bestaande software dient te worden afgebouwd, onderhouden en/of herbouwd, vindt een onderzoek plaats naar de kwaliteit van deze software.
M02: Het project bewaakt continu dat het product aan de kwaliteitsnormen voldoet
Projecten bewaken zo snel mogelijk vanaf de start de door het project en ICTU vastgestelde kwaliteitsnormen en voldoen daar zo snel en goed mogelijk aan. De kwaliteit van producten, die nog niet zijn afgerond of nog niet aan de normen voldoen, wordt door het project bewaakt. Het voldoen aan de kwaliteitsnormen is onderdeel van de Definition of Done en herstel van de kwaliteit wordt planmatig opgepakt.
M03: Het project zorgt dat het product traceerbaar aan eisen voldoet
Eisen zijn wederzijds traceerbaar naar bewijsmateriaal, zoals logische testgevallen, dat de eis gerealiseerd is; dat wil zeggen dat geadministreerd is bij welke eis bewijsmateriaal hoort en vice versa. Dit wordt waar mogelijk met tooling ondersteund.
M13: Het project gebruikt ISO-25010 voor de specificatie van productkwaliteitseisen
Voor specificatie en documentatie van vereiste en gewenste kwaliteitseigenschappen, de niet-functionele eisen, maken projecten gebruik van de terminologie en categorisering uit NEN-ISO/IEC 25010. Projecten gebruiken NEN-ISO/IEC 25010 om te controleren of alle relevante kwaliteitseigenschappen van het op te leveren eindproduct worden meegenomen in de ontwikkeling en/of onderhoud van het product.
M04: Het project borgt de correcte werking van het product met geautomatiseerde regressietests
Regressietests - tests die verifiëren of eerder ontwikkelde software nog steeds correct werkt na wijzigingen in de software of aansluiting op andere externe koppelvlakken - zijn geautomatiseerd.
M07: Het project gebruikt een continuous delivery pipeline om het product te bouwen, testen en op te leveren
Er is een geautomatiseerde continuous delivery pipeline die aantoonbaar correct werkt en de software bouwt, installeert in de testomgevingen, test op functionele en niet-functionele eigenschappen en oplevert, al dan niet inclusief installatie in de productieomgeving.
M16: Het project gebruikt tools voor vastgestelde taken
ICTU stelt het gebruik van tools verplicht voor de volgende taken:
  1. backlog management en agile werken,
  2. inrichten en uitvoeren van een continuous delivery pipeline,
  3. monitoren van de kwaliteit van broncode,
  4. versiebeheer van op te leveren producten,
  5. release van software,
  6. maken van testrapportages,
  7. maken van kwaliteitsrapportages,
  8. controleren van de configuratie op aanwezigheid van bekende kwetsbaarheden,
  9. controleren van door de applicatie gebruikte versies van externe software op aanwezigheid van bekende kwetsbaarheden,
  10. statische controle van de software op aanwezigheid van kwetsbare constructies,
  11. dynamische controle van de software op aanwezigheid van kwetsbare constructies,
  12. controleren van container images op aanwezigheid van bekende kwetsbaarheden,
  13. testen van performance en schaalbaarheid,
  14. testen op toegankelijkheid van de applicatie,
  15. produceren van een "software bill of materials" (SBoM),
  16. opslaan van artifacten,
  17. registratie van incidenten bij gebruik en beheer, en
  18. bij het uitvoeren van operationeel beheer; uitrollen van de software in de productieomgeving.
M08: Het project maakt technische schuld inzichtelijk en lost deze planmatig op
Technische schuld is inzichtelijk en wordt planmatig aangepakt. De kwaliteitsmanager is verantwoordelijk voor het inzichtelijk maken van de technische schuld. De software delivery manager is verantwoordelijk voor het planmatig aanpakken van de technische schuld en zorgt dat het Scrumteam regelmatig en voldoende tijd heeft om technische schuld te voorkomen en op te lossen. Het Scrumteam is verantwoordelijk voor het zoveel mogelijk voorkomen van technische schuld en voor het identificeren van technische schuld die toch optreedt.
M26: Het project laat de beveiliging van het ontwikkelde product periodiek beoordelen
Projecten laten periodiek de beveiliging van de ontwikkelde software beoordelen. Een beveiligingsexpert onderzoekt de code zowel geautomatiseerd als handmatig op veelvoorkomende kwetsbaarheden en op het voldoen aan voorgeschreven beveiligingsnormen. Overheidsspecifieke beveiligingsnormen of -raamwerken, zoals de BIO (Baseline Informatiebeveiliging Overheid), bieden een basis voor de beoordeling. Bevindingen uit de beveiligingstest worden vastgelegd als onderdeel van de werkvoorraad voor het ontwikkelproces.

Processen

M14: Het project bereidt samen met opdrachtgevende organisatie en betrokken partijen de realisatie voor
Projecten hebben een voorbereidingsfase, "voorfase" genoemd, voorafgaand aan de realisatiefase. Voor het uitvoeren van de voorfase zijn vertegenwoordigers van de opdrachtgevende organisatie, de beoogde beheerorganisatie en andere partijen betrokken die meewerken aan het realiseren van een deel van de op te leveren producten. Het doel van de voorfase is beeld krijgen van de te realiseren oplossing, van de risico's die zich tijdens realisatie kunnen voordoen en van de kaders waarbinnen de oplossing moet passen; tijdens de realisatiefase vinden bouw en onderhoud van de software en actualiseren en afronden van documentatie plaats.
M21: Het project selecteert medewerkers op basis van kwaliteit
Bij de inzet van medewerkers gaat kwaliteit boven andere aspecten, zoals beschikbaarheid, prijs en doorlooptijd.
M23: Het project zorgt voor de aanwezigheid van ervaring met de Kwaliteitsaanpak
De software delivery manager zorgt ervoor dat bij nieuwe projecten wordt gestart met ten minste twee projectleden die bekend zijn met de Kwaliteitsaanpak.
M05: Het project hanteert een iteratief en incrementeel ontwikkelproces
Projecten werken iteratief en incrementeel; dit betekent dat een project in korte iteraties werkt, waarbij elke iteratie een werkende versie van de software oplevert die extra waarde vertegenwoordigt voor de opdrachtgevende organisatie. Behalve de software werkt het project ook iedere iteratie alle andere producten bij. Elke iteratie worden verwachtingen en werkelijke resultaten vergeleken en wordt de werkwijze aangescherpt op basis van inzichten en bevindingen.
M35: Het project hanteert een agile architectuuraanpak
Tijdens de voorfase verwerkt het project de door de opdrachtgevende organisatie opgestelde projectstartarchitectuur (PSA) in een eerste versie van het softwarearchitectuurdocument (SAD). Tijdens de realisatiefase werkt het project het SAD bij op basis van nieuwe inzichten.
M10: Het project kent een wekelijks projectoverleg
De projectleider organiseert een periodiek projectoverleg. Dit overleg vindt wekelijks plaats en duurt niet langer dan een uur. Vereiste aanwezigen zijn de projectleider, de software delivery manager, de Scrummaster, een vertegenwoordiger uit elk van de Scrumteams en de kwaliteitsmanager van het project; andere aanwezigen kunnen zijn: de projectarchitect en de product owner. De agenda voor dit overleg bestaat ten minste uit de volgende onderwerpen: mededelingen, actie- en besluitenlijst, personele zaken, planning en voortgang, kwaliteit en architectuur, risico's en aandachtspunten.
M28: Het project voert periodiek een self-assessment uit tegen de actuele versie van de Kwaliteitsaanpak
De projectleider organiseert periodiek een self-assessment tegen de actuele versie van de Kwaliteitsaanpak en zet verbeteracties uit, waar nodig.
M30: Het project identificeert, mitigeert en bewaakt risico's
Het project identificeert, mitigeert en bewaakt projectspecifieke risico's voorafgaand aan en tijdens de projectuitvoering. Het project houdt een risicolog bij met geïdentificeerde risico's. De uitkomsten van de "Doordacht-van-Start-sessie", die al voorafgaand aan de start van het project wordt uitgevoerd, vormen het startpunt van deze risicolog. Risico's die tijdens de voorfase worden geïdentificeerd, bijvoorbeeld bij de productrisicoanalyse, worden toegevoegd aan de risicolog. Ook bij de start van de realisatiefase worden risicosessies gehouden met (vertegenwoordigers van) de belanghebbenden om verdere risico's te identificeren. Het project identificeert en implementeert mitigerende maatregelen danwel accepteert expliciet de geïdentificeerde risico's. Het project bewaakt de risicolog en uitvoering van de mitigerende maatregelen tijdens het IPO.
M34: Het project draagt software beheerst over
Als de software op enig moment door een andere partij dan ICTU verder ontwikkeld en/of onderhouden zal worden, draagt het project zorg voor een beheerste overdracht. Beheerdocumentatie, broncode en testmiddelen zijn van dusdanige kwaliteit en compleetheid dat de andere partij de software efficiënt en effectief kan doorontwikkelen en/of onderhouden.
M27: Het project sluit projectfasen en zichzelf expliciet af
Afsluiting van een projectfase gebeurt expliciet en gecontroleerd: alle producten, zoals documentatie, broncode, referentiedata en credentials, die in de af te sluiten fase nodig waren of zijn opgeleverd, worden gearchiveerd. Indien er geen volgende fase is voorzien op korte termijn, dienen alle producten van de laptops van de projectmedewerkers verwijderd te worden.

Organisatie

M29: ICTU organiseert voor aanvang van een project de interne dienstverlening
Voordat ICTU een softwareontwikkelproject start, dat gaat werken conform de Kwaliteitsaanpak, maakt de beoogde ICTU-projectleider afspraken met de afdelingen ICTU Software Diensten (ISD) en ICTU Software Expertise (ISE) over de af te nemen dienstverlening.
M19: ICTU biedt projecten een afgeschermde digitale omgeving
ICTU geeft de projecten de beschikking over eigen, afgeschermde digitale omgevingen, waarbinnen ze de door het project ontwikkelde software en tools kunnen installeren en waartoe op een beheerste manier toegang wordt verleend.
M18: ICTU biedt ondersteuning voor verplicht gestelde tools
ICTU zorgt voor technische en functionele ondersteuning aan projecten bij het gebruik van alle verplichte tools.
M11: ICTU beheert, onderhoudt en implementeert de Kwaliteitsaanpak en kwaliteitsnormen
ICTU beheert, onderhoudt en implementeert de Kwaliteitsaanpak en de kwaliteitsnormen. Aanpassingen zijn gebaseerd op praktijkervaring, nieuwe inzichten en nieuwe mogelijkheden voor meting en analyse. Iedere medewerker kan wijzigingsvoorstellen indienen bij ICTU. ICTU behandelt de wijzigingsvoorstellen, kiest de te nemen actie bij elk wijzigingsvoorstel en legt de wijzigingsvoorstellen en besluiten vast.
M12: ICTU publiceert nieuwe versies van de Kwaliteitsaanpak en normen periodiek en op een vaste locatie
ICTU publiceert periodiek een nieuwe versie van de Kwaliteitsaanpak en/of de kwaliteitsnormen op een vaste, bekende locatie.
M33: ICTU organiseert periodiek een gezamenlijke self-assessment ten aanzien van de Kwaliteitsaanpak
ICTU organiseert periodiek een gezamenlijke self-assessment ten aanzien van de Kwaliteitsaanpak die inzicht geeft in de huidige status van de Kwaliteitsaanpak en aanleiding kan geven tot het nemen van maatregelen om de Kwaliteitsaanpak en de ondersteuning daarvan door ICTU te verbeteren.