From 140a045afcb204a145bf3f993dd74e86e5ea5758 Mon Sep 17 00:00:00 2001 From: Frank Niessink Date: Tue, 22 Oct 2024 17:12:53 +0200 Subject: [PATCH] "OWASP ZAP" hernoemd naar "ZAP by Checkmarx" in alle documenten. Closes #945. --- Content/Maatregelen/M16/Maatregel.md | 2 +- .../Template-Inhoud.md | 2 +- .../Template-Inhoud.md | 2 +- .../Kwaliteitsplan/Template-Inhoud.md | 2 +- .../PvA-Realisatiefase/Template-Inhoud.md | 2 +- Content/Wijzigingsgeschiedenis.md | 1 + docs/wip/ICTU-Kwaliteitsaanpak-Checklist.xlsx | Bin 36750 -> 36766 bytes ...aliteitsaanpak-Wijzigingsgeschiedenis.html | 2 +- docs/wip/ICTU-Kwaliteitsaanpak.docx | Bin 574638 -> 574653 bytes docs/wip/ICTU-Kwaliteitsaanpak.html | 2 +- docs/wip/ICTU-Kwaliteitsaanpak.pptx | Bin 1149379 -> 1149379 bytes docs/wip/ICTU-Template-Compacte-Voorfase.docx | Bin 212600 -> 212600 bytes ...ate-Detailtestplan-Softwarerealisatie.docx | Bin 215558 -> 215566 bytes docs/wip/ICTU-Template-Generiek.docx | Bin 209857 -> 209857 bytes ...-Template-Globaal-Functioneel-Ontwerp.docx | Bin 212002 -> 212002 bytes ...Template-Inwerkplan-Kwaliteitsmanager.docx | Bin 214441 -> 214449 bytes docs/wip/ICTU-Template-Kwaliteitsplan.docx | Bin 225677 -> 225685 bytes ...mplate-Plan-van-Aanpak-Realisatiefase.docx | Bin 218907 -> 218915 bytes ...CTU-Template-Plan-van-Aanpak-Voorfase.docx | Bin 217307 -> 217307 bytes ...emplate-Software-architectuurdocument.docx | Bin 213934 -> 213934 bytes docs/wip/Neutraal-Template-Generiek.docx | Bin 30872 -> 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 -> 48839 bytes 24 files changed, 8 insertions(+), 7 deletions(-) diff --git a/Content/Maatregelen/M16/Maatregel.md b/Content/Maatregelen/M16/Maatregel.md index 1c470399..b6fcc669 100644 --- a/Content/Maatregelen/M16/Maatregel.md +++ b/Content/Maatregelen/M16/Maatregel.md @@ -16,7 +16,7 @@ ICTU adviseert en ondersteunt voor de genoemde taken onderstaande tools. Project 8. controleren van de configuratie op aanwezigheid van bekende kwetsbaarheden in configuratie: OpenVAS (Vulnerability Assessment System), 9. controleren op aanwezigheid van bekende kwetsbaarheden in externe software: OWASP (Open Web Application Security Project) Dependency-Check en/of Dependency-Track, 10. statische controle van de software op aanwezigheid van kwetsbare constructies: SonarQube, -11. dynamische controle van de software op aanwezigheid van kwetsbare constructies: OWASP ZAP (Zed Attack Proxy), +11. dynamische controle van de software op aanwezigheid van kwetsbare constructies: ZAP (Zed Attack Proxy) by Checkmarx, 12. controleren van container images op aanwezigheid van bekende kwetsbaarheden: Trivy, 13. testen van performance en schaalbaarheid: JMeter en Performancetestrunner, 14. testen op toegankelijkheid van de applicatie: Axe, diff --git a/Content/Templates/Detailtestplan-Softwarerealisatie/Template-Inhoud.md b/Content/Templates/Detailtestplan-Softwarerealisatie/Template-Inhoud.md index 485f73d2..0643ccac 100644 --- a/Content/Templates/Detailtestplan-Softwarerealisatie/Template-Inhoud.md +++ b/Content/Templates/Detailtestplan-Softwarerealisatie/Template-Inhoud.md @@ -30,7 +30,7 @@ Binnen het project worden door ICTU de volgende testsoorten onderscheiden en toe + **Handmatig regressietest:** Het handmatig uitvoeren van fysieke testgevallen om de werking van de bestaande functionaliteit te controleren. Deze testgevallen zijn veelal te complex om te automatiseren. * Niet-functionele testen: + **Performancetesten:** Het testen van de snelheid van afhandeling van bepaalde functies van het systeem onder een vooraf gedefinieerde belasting. Performancetesten vinden bij voorkeur plaats in een productie-like omgeving, maar kunnen ook in een niet-productie-like omgeving plaatsvinden ten behoeve van het volgen van de relatieve performance van verschillende versies van de software. Er vinden zowel een loadtest (normale en piekbelasting), als een duurtest (normale belasting voor langere tijd), als een stresstest (verhogen van de belasting totdat het systeem het begeeft) plaats. De Kwaliteitsaanpak schrijft voor dat er tijdens de realisatiefase performancetesten worden uitgevoerd. Deze worden bij voorkeur automatisch uitgevoerd. Belangrijk is dat de performancetest die op de testomgeving wordt uitgevoerd, niet vanzelfsprekend representatief is voor de productieomgeving. Dit betekent dat een opdrachtgevende organisatie op de eigen productieomgeving een performancetest moet (laten) uitvoeren om te controleren dat er aan de gestelde performance-eisen is voldaan. - + **Securitytesten:** Security- en penetratietesten uitgevoerd door een externe partij. Normaliter worden deze minimaal twee maal per jaar of met elke grote release uitgevoerd en niet elke sprint. Securitytesten vinden bij voorkeur plaats in een productie-like omgeving, maar kunnen ook in een niet-productie-like omgeving plaatsvinden ten behoeve van het testen van de beveiliging van de software zelf. De securitytest is inclusief een review van de broncode. Tijdens de realisatie draaien standaard al de volgende securitytesttools mee in de geautomatiseerde pijplijn: SonarQube, OWASP Dependency-Check en/of Dependency-Track, OWASP ZAP en OpenVAS; de bevindingen die uit deze tools komen worden meteen tijdens de realisatie van het systeem opgepakt. + + **Securitytesten:** Security- en penetratietesten uitgevoerd door een externe partij. Normaliter worden deze minimaal twee maal per jaar of met elke grote release uitgevoerd en niet elke sprint. Securitytesten vinden bij voorkeur plaats in een productie-like omgeving, maar kunnen ook in een niet-productie-like omgeving plaatsvinden ten behoeve van het testen van de beveiliging van de software zelf. De securitytest is inclusief een review van de broncode. Tijdens de realisatie draaien standaard al de volgende securitytesttools mee in de geautomatiseerde pijplijn: SonarQube, OWASP Dependency-Check en/of Dependency-Track, ZAP by Checkmarx en OpenVAS; de bevindingen die uit deze tools komen worden meteen tijdens de realisatie van het systeem opgepakt. * **Integratietesten:** Tijdens deze test wordt de onderlinge verwerkingswijze tussen de verschillende applicaties getest. Denk hierbij aan gewijzigde applicaties die samen werken met ongewijzigde applicaties. Indien van toepassing zullen hier ook externe systemen bij betrokken worden, in de vorm van stubs. Integratietesten zijn normaal gesproken geautomatiseerde tests. Als onderdeel van de integratietesten wordt getest of de software kan omgaan met fouten in andere applicaties en na een herstart goed blijft functioneren. * **Gebruikersacceptatietest (GAT):** In tegenstelling tot de ‘traditionele’ watervalmethode biedt agile ontwikkelen meer ruimte voor de gebruiker om te participeren in het ontwikkeltraject. Tijdens elke sprint wordt nieuwe functionaliteit gedemonstreerd door het Scrumteam in een demo-omgeving. {opdrachtgevende organisatie} en/of beheerorganisatie kan een GAT-testomgeving beschikbaar stellen waar gebruikers kunnen werken met de nieuwe applicaties. Bevindingen worden tijdens trainingen of workshops verzameld om in de backlogs verwerkt te worden. De product owner prioriteert vervolgens deze bevindingen. * **Usabilitytesten:** Het doel van deze test is om te bepalen hoe gemakkelijk / toegankelijk het systeem is in het gebruik ervan. Onderdeel van deze test is de toegankelijkheidstest; hiermee wordt bepaald in welke mate de software voldoet aan de wettelijke vereisten van de Web Content Accessibility Guidelines (WCAG2.2) en eventuele aanvullende toegankelijkheidseisen. Deze toegankelijkheidstesten worden waar mogelijk geautomatiseerd uitgevoerd. De toegankelijkheidseisen die niet geautomatiseerd getest kunnen worden, worden periodiek handmatig getest. diff --git a/Content/Templates/Inwerkplan-Kwaliteitsmanager/Template-Inhoud.md b/Content/Templates/Inwerkplan-Kwaliteitsmanager/Template-Inhoud.md index 125486c7..73ac7251 100644 --- a/Content/Templates/Inwerkplan-Kwaliteitsmanager/Template-Inhoud.md +++ b/Content/Templates/Inwerkplan-Kwaliteitsmanager/Template-Inhoud.md @@ -174,7 +174,7 @@ Acties (week 3): * Je hebt toegang tot het versiebeheersysteem van je project (GitLab of Azure DevOps) * Je hebt toegang tot de build server van je project (GitLab CI, Azure DevOps of Jenkins) * Je hebt toegang tot je project in [Jira](https://jira.ictu-sd.nl/jira/) -* Je hebt toegang tot de securityrapportages in de build pipeline (OWASP Dependency-Check, OWASP ZAP, OpenVAS) +* Je hebt toegang tot de securityrapportages in de build pipeline (OWASP Dependency-Check, ZAP by Checkmarx, OpenVAS) * Je hebt toegang tot de toegankelijksrapportage (Axe) in de build pipeline * Je hebt toegang tot de testrapportages in de build pipeline (Robot Framework, JUnit, Cypress, etc.) * Je hebt toegang tot de Dependency-Track instantie van je project diff --git a/Content/Templates/Kwaliteitsplan/Template-Inhoud.md b/Content/Templates/Kwaliteitsplan/Template-Inhoud.md index a3c4a6c3..330904eb 100644 --- a/Content/Templates/Kwaliteitsplan/Template-Inhoud.md +++ b/Content/Templates/Kwaliteitsplan/Template-Inhoud.md @@ -280,7 +280,7 @@ Quality-time rapporteert over de geautomatiseerde performancetesten. Als de vera De eisen aan de beveiliging worden in de documenten projectstartarchitectuur en niet-functionele eisen gedefinieerd. De in te richten testen dienen aan te tonen dat aan de gestelde beveiligingseisen wordt voldaan. -De geautomatiseerde broncodereviews en rapportages uit Quality-time bevatten diverse metrieken voor beveiligingsaspecten, zoals de OWASP Top-10-criteria. De applicatie wordt gescand met behulp van SonarQube, OWASP Dependency-Check en/of Dependency-Track, OWASP ZAP en OpenVAS. +De geautomatiseerde broncodereviews en rapportages uit Quality-time bevatten diverse metrieken voor beveiligingsaspecten, zoals de OWASP Top-10-criteria. De applicatie wordt gescand met behulp van SonarQube, OWASP Dependency-Check en/of Dependency-Track, ZAP by Checkmarx en OpenVAS. Om de beveiliging van de software te testen kan deze met enige regelmaat getest worden door een externe partij. Het MTP beschrijft de gekozen aanpak. diff --git a/Content/Templates/PvA-Realisatiefase/Template-Inhoud.md b/Content/Templates/PvA-Realisatiefase/Template-Inhoud.md index e8efe425..32b5105a 100644 --- a/Content/Templates/PvA-Realisatiefase/Template-Inhoud.md +++ b/Content/Templates/PvA-Realisatiefase/Template-Inhoud.md @@ -29,7 +29,7 @@ ICTU levert de volgende producten en diensten op: Binnen de scope van de opdracht valt de {ontwikkeling en/of het onderhoud} van {het product}, inclusief: * Ontwikkel, test- en demo-omgevingen, -* Engineering tools voor versiebeheer (GitLab of Azure DevOps), bouwen en testen (Azure DevOps, GitLab en/of Jenkins), kwaliteitscontrole (SonarQube), beveiligingscontrole (SonarQube, OWASP Dependency-Check en/of Dependency-Track, OWASP ZAP, OpenVAS), toegankelijkheid (Axe), performancetesten (JMeter) en integrale kwaliteitsrapportage (Quality-time), +* Engineering tools voor versiebeheer (GitLab of Azure DevOps), bouwen en testen (Azure DevOps, GitLab en/of Jenkins), kwaliteitscontrole (SonarQube), beveiligingscontrole (SonarQube, OWASP Dependency-Check en/of Dependency-Track, ZAP by Checkmarx, OpenVAS), toegankelijkheid (Axe), performancetesten (JMeter) en integrale kwaliteitsrapportage (Quality-time), * {Als operationeel beheer onderdeel is van de dienstverlening:} Uitrollen in de productieomgeving (Ansible), container registry (Harbor), performance monitoring (APM), security monitoring ({vul aan met concreet product}), controle van kwetsbaarheden in frameworks ({vul aan met concreet product}), controle van images van containers (Trivy), registratie van incidenten bij gebruik en beheer (Topdesk of Jira). * Backlog management tools (Jira en/of Azure DevOps), * Beveiligings- en performancetesten in de ICTU-testomgevingen. ICTU voert deze tests uit voordat een nieuwe versie van de software wordt opgeleverd. {Beschrijf hier eventuele andere afspraken met de opdrachtgevende organisatie}. diff --git a/Content/Wijzigingsgeschiedenis.md b/Content/Wijzigingsgeschiedenis.md index a4c561fe..471ac922 100644 --- a/Content/Wijzigingsgeschiedenis.md +++ b/Content/Wijzigingsgeschiedenis.md @@ -20,6 +20,7 @@ ## Alle documenten * "OWASP Dependency-Check" consistent gespeld. +* "OWASP ZAP" hernoemd naar "ZAP by Checkmarx". # Versie 4.0.0, 26 april 2024 diff --git a/docs/wip/ICTU-Kwaliteitsaanpak-Checklist.xlsx b/docs/wip/ICTU-Kwaliteitsaanpak-Checklist.xlsx index 385f83a4ba563c3368b65318d895c7ad635871e3..01e52ec6b8c6151dfc68222b3100a561351e82b3 100644 GIT binary patch delta 24558 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%0A8i@W5WP^FtbRG|~x8HfnQgQ`trhBI@#P z#3ewI>TgxZi>81OeWzFGCPnhQ`-D!RuKu&nn*cZ6eZV7h0Oc+Y4wCS5dPj#&d#Fa( z8!a7c223)Q%Vj(Mv0l$*K*?X!UCs67Cy7pc#5T_fA2WYVIM$L1RAmikaqq9c#NE(E zC{`o=J56EemH5nRr2YFRJ%YgMvHU)l=|-U)Z-Hk@N02!}|6gn?Fu)YZGH!$h zeNfnU~EO9YU`RV%JPuIglRUe_UMwA zD0oyoMl3@_1-nR{-y0pRNyH@#pzxOFXt$UvXtWV?ygZ-~2z{%EKabciY z2AONp44a!NQ9FZc=hm_4txyG6l1SyQo^q9N;e2r`*KeEp+{)+p*z;N-sOr<7D_NanRAxy z*VTbli3$B8Yn!4Cb6o!unS;89^Mi@t6Npetfkkz;Y)&VFx`VR@rf7Vc8P4S9E=PY% z_oTxZC$Ta3B&!9_78Ou_+d3S$=&a6ykzt8o*V9%O^CwpP0Kv{*aC z!b3|#ZX$XAb*bmH10{II_nV#d=!66Lm11pp~C(kWf6L{-5qaIz`)KPt#-N>f$~dU zjYnf5oWZO0^p(VA));ai0=Ws|wPw5gcdC{&?}Ys4V|ES)vEQ^no44)cVt0`Kz2!z+ zaTG9#vo8c(6Oik3JU%qbU>sNwGDaLg{nq!E&`I&wy*IIJzqjB47~URP6ggZ7cWX`vZzN^hRWZoNL^HXL+Cx1RwQnOHkZn3`OuE z5+9!qj?mCPa5@viMdOx?hQ&$LJVaqJq*TCpYL$qvsfb^ZTcK3@LESM^_|)KYPpWmq z1t0m|lRl~pWw)Hl>1xU?@rDXiUg=<+&(NdXyOO>xHg8@g1IrvZvju=l7a~j zJX+sW__|1kYk7#vbmFxF`M6K|$lGa=V;{&Y1z^XxXXRt^^t@W2rX=NkPH9eND_R&b z^1#US>oD@B{{qyfA^#?x0mt08pP>1(8;YX?350#DR*6pl063G!jWrzKp4*%o4gdfu zD*yl#00000000000001hfy{7|-f$L^E{-Yz8IxI#IsxjFl#W0G%ZHQKhb5Eyjt~Uu d-Ql^D504fB*pnuYJ^?I~Wsf5U>WcsX000xFL8t%# delta 24522 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 diff --git a/docs/wip/ICTU-Kwaliteitsaanpak-Wijzigingsgeschiedenis.html b/docs/wip/ICTU-Kwaliteitsaanpak-Wijzigingsgeschiedenis.html index 848a0a0a..847af859 100644 --- a/docs/wip/ICTU-Kwaliteitsaanpak-Wijzigingsgeschiedenis.html +++ b/docs/wip/ICTU-Kwaliteitsaanpak-Wijzigingsgeschiedenis.html @@ -1,5 +1,5 @@ -ICTU Kwaliteitsaanpak Softwareontwikkeling versie wipICTU logo

ICTU Kwaliteitsaanpak Softwareontwikkeling

Wijzigingsgeschiedenis

Versie wip, 08-11-2024

[Unreleased]

Kwaliteitsaanpak

  • 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. Tevens de ontbrekende link naar het template Mastertestplan toegevoegd.

Samenvatting Kwaliteitsaanpak

  • 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.

Wijzigingsgeschiedenis

  • 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.

Alle documenten

  • "OWASP Dependency-Check" consistent gespeld.

Versie 4.0.0, 26 april 2024

Kwaliteitsaanpak

  • Het hoofdstuk 'Begrippenkader' is verwijderd. De begrippen die hierin werden besproken staan ook in de bijlage 'Terminologie'. Het hoofdstuk 'Leeswijzer' verwijst nu naar deze bijlage.
  • Op relevante plekken zijn verwijzingen naar templates, self-assessment checklist en wijzigingsgeschiedenis toegevoegd.
  • Paragraaf 3.5 "Evolutie van de aanpak zelf" verwijderd uit hoofdstuk 3 "Leeswijzer". Deze tekst staat ook al in hoofdstuk 2 "Doelstellingen en uitgangspunten".
  • In M01 "Het project levert in elke fase vastgestelde producten en informatie op": Een kolom toegevoegd aan de tabel met daarin de verantwoordelijke organisatie per regel van de tabel. Hiermee is de paragraaf "Verantwoordelijkheden" overbodig en verwijderd. De opmerking in de paragraaf "Verantwoordelijkheden" over onderzoek naar her te gebruiken software verplaatst naar de paragraaf over de plannen van aanpak. De testplannen uitgesplitst naar MTP en detailtestplannen zodat deze apart kunnen worden ingevuld in de self-assessment. Onder het kopje Vrijgaveadvies, opgenomen dat het de verantwoordelijkheid van de opdrachtgevende organisatie is om te organiseren dat betrokken partijen informatie aanleveren voor het vrijgaveadvies. De informatie die de opdrachtgevende organisatie dient aan te leveren ook opgenomen in de tabel en daaronder verwezen naar M31.
  • De titel van maatregel M02 is veranderd van "Het project zorgt dat het product continu aan de kwaliteitsnormen voldoet" in "Het project bewaakt continu dat het product aan de kwaliteitsnormen voldoet". Continue aan alle kwaliteitsnormen voldoen is in de praktijk onmogelijk (zie ook M08 "Het project maakt technische schuld inzichtelijk en lost deze planmatig op"). Hiermee is de overlap met M06 "Het project meet kwaliteitsnormen geautomatiseerd en frequent" zo groot dat deze laatste maatregel is komen te vervallen.
  • In maatregel M10 "Het project kent een wekelijks projectoverleg" de bewaking van actie- en besluitenlijst en risicolog door Quality-time verwijderd, aangezien Microsoft Planner, dat de meeste projecten gebruiken, niet door Quality-time wordt ondersteund.
  • De naam van maatregel M14 "Het project bereidt samen met opdrachtgever en belanghebbenden de realisatie voor" veranderd in "M14: Het project bereidt samen met opdrachtgevende organisatie en betrokken partijen de realisatie voor". Daarnaast toegevoegd dat bij significante wijzigingen aan de projectkaders de voorfase geheel of deels opnieuw wordt uitgevoerd.
  • In maatregel M16 "Het project gebruikt tools voor vastgestelde taken" toegevoegd dat projecten de genoemde tools of gelijkwaardige alternatieven gebruiken. Verder GitLab SAST verwijderd uit de lijst van tools, Dependency-Track toegevoegd en SonarQube en OWASP ZAP over twee regels verspreid zodat ze apart kunnen worden ingevuld in de self-assessment. Daarnaast M16 verplaatst naar het hoofdstuk "Producten".
  • De scope van maatregel M29 "ICTU zorgt dat een project verantwoord kan starten" gereduceerd tot het organiseren van de interne dienstverlening voor aanvang van een project en de titel hieraan aangepast: "ICTU organiseert voor aanvang van een project de interne dienstverlening". Tevens een opmerking over externe dienstverlening toegevoegd.
  • De naam van maatregel M31 "Het project beschikt over vastgestelde informatie" veranderd in "Het project beschikt over actuele vastgestelde informatie" en de tekst van de maatregel hieraan aangepast. Een extra kopje "Afspraken tussen opdrachtgevende organisatie en beheerpartij" toegevoegd. Toegevoegd dat de opdrachtgevende organisatie na start van een project de PSA uitwerkt in een solution architectuur.
  • Maatregel M35 "Het project hanteert een agile architectuuraanpak" toegevoegd.
  • De bijlage 'Wijzigingsgeschiedenis' verplaatst naar een los document in PDF- en HTML-formaat.

Samenvatting Kwaliteitsaanpak

  • Een HTML-versie van de samenvatting toegevoegd aan de set van documenten zodat er een toegankelijk alternatief is voor de PDF-versie van de samenvatting.

Template Mastertestplan

  • Een neutraal template Mastertestplan toegevoegd aan de set van templates.

Template Niet-Functionele Eisen

  • Axe-core bijgewerkt naar de laatste versie in de tabel met de WCAG 2.2 succescriteria.

Template Kwaliteitsplan

  • Paragraaf 3.1.4 "Werkwijze" hernoemd naar "Ontwikkelproces", overeenkomstig maatregel M05 "Het project hanteert een iteratief en incrementeel ontwikkelproces".
  • De tekst over kwaliteitsnormen uit paragraaf 3.1.4 ondergebracht in een nieuwe paragraaf 3.1.5 "Bewaken van kwaliteitsnormen". Een alinea toegevoegd met afspraken over hoe/aan wie de kwaliteitsmanager rapporteert over het al dan niet behalen van de kwaliteitsnormen.
  • In paragraaf 5.3.3 "Broncodereviews", de term pull request vervangen door merge request omdat dat de terminologie is die in GitLab wordt gebruikt.
  • Koppeling tussen use cases, logische testgevallen, user stories en epics minder strikt gemaakt in bijlage D "Gebruik van Jira".

Template Detailtestplan

  • Template detailtestplan hernoemd naar Template detailtestplan softwarerealisatie om duidelijk te maken dat het alleen gericht is op softwarerealisatie en niet op andere onderwerpen waarvoor een detailtestplan zou kunnen worden gemaakt zoals infrastructuurtesten.

Template Inwerkplan Kwaliteitsmanager

  • Verwijzingen naar Eco1 verwijderd.
  • URLs naar ICTU-bronnen bijgewerkt.

Alle templates

  • De labels voor te vervangen teksten geuniformeerd om zoek-en-vervang te vereenvoudigen: {de opdrachtgevende organisatie} vervangen door {opdrachtgevende organisatie}, {(de) applicatie} en {(het) systeem} vervangen door {het product}, {projectnaam} door {het project}, {productnaam} door {het product}, {samenwerkende partijen} door {partijen}, {referentie} door {documentreferentie} en in de colofons aan {naam} ook de rol toegevoegd (bijvoorbeeld {naam projectleider beheerorganisatie}).
  • Waar relevant Dependency-Track toegevoegd aan genoemde beveiligingstools.
  • Waar gesproken wordt over vrijgaveadvies de tekst aangepast zodat duidelijk is dat ICTU het vrijgaveadvies niet zelf maakt, maar informatie ten behoeve van het vrijgaveadvies oplevert.
  • WCAG bijgewerkt naar versie 2.2.

Self-assessment checklist

  • Het mogelijk gemaakt bij maatregelen met submaatregelen ook de hoofdmaatregel te scoren.

Alle documenten

  • De term "DevOps-werkwijze" vervangen door "operationeel beheer" of door "operationeel en/of applicatiebeheer" op de plekken waar het gaat over de dienstverlening en niet zozeer over de aanpak.
  • De term "high level design" (HLD) vervangen door "infrastructuurarchitectuur" (IA) of waar beide termen werden gebruikt HLD verwijderd. Het HLD-template hernoemd naar IA-template.
  • "Beheerorganisatie" en "beheerpartij" werden door elkaar gebruikt. Alle voorkomens van beheerpartij vervangen door beheerorganisatie.
  • De term "opdrachtgever" vervangen door "opdrachtgevende organisatie" waar dat bedoeld werd. Opdrachtgever en opdrachtgevende organisatie toegevoegd aan de terminologie bijlagen.
  • De term "Testplan softwarerealisatie" vervangen door "Detailtestplan softwarerealisatie".

Versie 3.0.1, 4 april 2023

Kwaliteitsaanpak

  • In M01 toegevoegd dat het ICTU-kwaliteitsplan waar nodig aansluit op het overkoepelende kwaliteitsplan van de opdrachtgever.
  • Bij M02 ontbrak (een verwijzing naar) de self-assessment als activiteit om aan de kwaliteitsnormen te voldoen.
  • Bij M16 is Jira ook van toepassing bij applicatiebeheer en niet alleen bij DevOps.
  • De criteria uit NPR 5325 in M34 zijn niet SMART. Toegevoegd dat project en opdrachtgever de criteria voor overdracht aanscherpen.
  • Referenties naar 'zeepkist' als communicatiekanaal verwijderd.
  • De link naar de toegankelijkheidsverklaring was niet correct.
  • Definitie voor 'operationeel beheer' toegevoegd aan de bijlage 'Terminologie'.

Template Kwaliteitsplan

  • Het Jira-type "Systeemfunctie" verwijderd uit bijlage D omdat dit niet meer gebruikt wordt.

Self-assessment checklist

  • Een deel van de tekst van maatregel M05 was weggevallen.

Versie 3.0.0, 28 februari 2023

Kwaliteitsaanpak

  • HTML-versie van de Kwaliteitsaanpak toegevoegd als toegankelijk alternatief voor de PDF-versie.
  • Op meerdere plekken in de Kwaliteitsaanpak de gebruikte rollen aangescherpt of verbeterd door bijvoorbeeld ICTU te vervangen door project, team door Scrumteam en projectleider door software delivery manager.
  • Bij maatregel "Het project levert in elke fase vastgestelde producten en informatie op" (M01): software bill of materials toegevoegd als op te leveren informatie, toegevoegd dat al het werk van het Scrumteam via de product backlog loopt, deploymentdocumentatie verbreed tot documentatie voor deployment en operationeel beheer en, tenslotte, broncode en regressietest verplaatst naar de nieuwe maatregel "Het project draagt software beheerst over" (M34).
  • Bij maatregel "Het project levert in elke fase vastgestelde producten en informatie op" (M01): de due diligence activiteiten afgesplitst naar een nieuwe maatregel "Het project onderzoekt de kwaliteit van over te nemen software" (M32).
  • De maatregel "Het project implementeert nieuwe versies van de Kwaliteitsaanpak binnen de gestelde termijn" (M09) is vervallen en gecombineerd met maatregel "Het project voert periodiek een self-assessment uit ten aanzien van de Kwaliteitsaanpak" (M28).
  • Bij maatregel "Het project gebruikt tools voor vastgestelde taken" (M16): de lijst van verplichte tools en ondersteunde tools gelijk getrokken, de genoemde tools bijgewerkt en software bill of materials toegevoegd als taak.
  • Bij maatregel "Het project voert periodiek een self-assessment uit ten aanzien van de Kwaliteitsaanpak" (M28): de rol van de kwaliteitsmanager bij het uitvoeren van de self-assessment toegevoegd.
  • Nieuwe maatregel "ICTU organiseert periodiek een gezamenlijke self-assessment ten aanzien van de Kwaliteitsaanpak" (M33) toegevoegd.
  • Nieuwe maatregel "Het project draagt software beheerst over" (M34) toegevoegd.
  • Kruisverwijzingen tussen maatregelen verwijderd om de onderhoudbaarheid van de tekst te vergroten.
  • Versioneringsstrategie voor de Kwaliteitsaanpak toegegoegd aan de leeswijzer.
  • De term 'standup' vervangen door de officiële term 'daily scrum'.
  • De Scrumrollen toegevoegd aan de bijlage 'Terminologie'.

Samenvatting Kwaliteitsaanpak

  • Gebruik dezelfde volgorde van de maatregelen in de samenvatting als in de gehele Kwaliteitsaanpak.

Template Niet-Functionele Eisen

  • Paragraaf "Relaties met andere documenten" verder uitgewerkt.
  • In de paragraaf "Over dit document" handreiking voor het scherp formuleren van eisen toegevoegd.
  • Axe-core bijgewerkt naar de laatste versie in de tabel met de WCAG 2.1 succescriteria.
  • Template neutraal gemaakt (ICTU logo's verwijderd) omdat dit document een verantwoordelijkheid van de opdrachtgever is.
  • Kolommen aan eisentabellen toegevoegd om eisen toe te wijzen aan systeemonderdelen en verantwoordelijke partijen.

Template High Level Design

  • Template neutraal gemaakt (ICTU logo's verwijderd) omdat dit document een verantwoordelijkheid van de opdrachtgever is.

Template Kwaliteitsplan

  • In de beschrijving van het vrijgaveadvies "testresultaten" vervangen door toetsing van functionele en niet-functionele eisen.
  • Paragraaf over linters, checkers en formatters toegevoegd aan het hoofdstuk "Kwaliteitsmaatregelen realisatiefase".
  • Paragraaf over broncodereviews specifieker gemaakt.
  • De scope van de paragraaf over certificeringen uitgebreid zodat ook externe testen en toetsen eronder vallen.

Template Generiek

  • Een neutrale versie van het generieke template toegevoegd.

Template Compacte Voorfase

  • Een template toegevoegd voor het vastleggen van de uitkomsten van een compacte voorfase. Dit template is bedoeld om functionele eisen, niet-functionele eisen, ontwerp en plan van aanpak voor de realisatiefase vast te leggen bij een project waar het maken van aparte en uitgebreidere (HLD, SAD, NFE, etc.) documenten niet nodig is. Dit zijn typisch interne ICTU-projecten met beperkte omvang.

Alle templates

  • Beheerpartijrollen toegevoegd aan colofon.

Alle documenten

  • Voor toepassing van de DevOps-werkwijze zijn uitzonderingen, extra maatregelen en extra rollen toegevoegd.
  • Verwijzingen naar Checkmarx vervangen door verwijzingen naar SonarQube.

Versie 2.4.0, 12 januari 2022

Kwaliteitsaanpak

  • De titel van maatregel "Het project levert in elke fase vastgestelde informatie over het product op" (M01) veranderd in "Het project levert in elke fase vastgestelde producten en informatie op" zodat de titel beter past bij de scope van de maatregel.
  • Bij maatregel "Het project levert in elke fase vastgestelde producten en informatie op" (M01): de tabel uitgebreid met product backlog, en de lopende tekst aangevuld en aangepast opdat deze consistent is met de tabel.
  • Bij maatregel "Het project zorgt dat het product continu aan de kwaliteitsnormen voldoet" (M02): "Ook zorgt het project dat de performance van de software regelmatig wordt getest." toegevoegd.

Template Kwaliteitsplan

  • Bijlage met periodieke (kwaliteits)controles toegevoegd.
  • Beschrijvingen van release notes en performancetest toegevoegd.

Template Niet-Functionele Eisen

  • Axe-core bijgewerkt naar versie 4.3 in de tabel met de WCAG 2.1 succescriteria.

Template Plan van Aanpak Realisatiefase

  • UX: aanpassing producten uit de voorfase; verantwoordelijkheden van rol UX-designer aangevuld.
  • Toelichting op te maken afspraken voor: release notes, vrijgaveadvies, beveiligingstest, performancetest.
  • In hoofdstuk Verwachte inzet ICTU een tabel toegevoegd met te verwachten kosten voor door ICTU te benutten diensten.

Template Plan van Aanpak Voorfase

  • UX: te realiseren producten toegevoegd: interactie-ontwerp (UX), wireframe, mockup, prototype, animatie.

Template Generiek

  • Definities toegevoegd: release notes en vrijgaveadvies.

Self-assessment checklist

  • Invulinstructie uitgebreid.
  • Duidelijk gemaakt dat als maatregelen submaatregelen hebben alleen de status van submaatregelen hoeft te worden ingevuld.

Inwerkplan Kwaliteitsmanager

  • Inwerkplan voor de rol van kwaliteitsmanager toegevoegd.

Versie 2.3.0, 14 mei 2021

Kwaliteitsaanpak

  • Verwijzingen naar BIRT en de Releasemanager verwijderd uit de maatregel "Het project gebruikt tools voor vastgestelde taken" (M16) omdat deze tools niet meer ondersteund worden.
  • Manifest verwijderd omdat de inhoud grotendeels terugkomt op andere plekken in de Kwaliteitsaanpak.

Samenvatting Kwaliteitsaanpak

  • Een samenvatting van de Kwaliteitsaanpak als los document toegevoegd.

Presentatie Kwaliteitsaanpak

  • Een presentatie van de Kwaliteitsaanpak als los document toegevoegd.

Alle templates

  • Lijst van reviewers toegevoegd aan colofon.
  • Leeswijzer uitgebreid met een beschrijving van de (standaard) bijlagen van de templates.
  • Hoofdstuk "Managementsamenvatting" toegevoegd.

Template Detailtestplan

  • Verwijzingen naar BIRT en de Releasemanager verwijderd.

Template Globaal Functioneel Ontwerp

  • Template aangepast naar het gebruik van use cases om de functionaliteit te beschrijven.
  • Kaders die niet relevant waren voor een GFO verwijderd.

Template Niet-Functionele Eisen

  • Tabel met de WCAG 2.1 succescriteria toegevoegd. Per succescriterium geeft de tabel aan of Axe-core, en zo ja met welke regels, het succescriterium geautomatiseerd kan controleren.

Template Kwaliteitsplan

  • Het kwaliteitsplantemplate sprak van een verantwoordingsparagraaf in alle documenten, maar deze paragraaf zat niet in de andere templates. Deze verantwoordingsparagrafen waren bedoeld om de eisen traceerbaar te maken. Omdat niet alle projecten dit nodig hebben, en er andere manieren in gebruik zijn om eisen traceerbaar te maken (bijvoorbeeld een losse administratie in Confluence) is de tekst over verantwoordingsparagrafen vervangen door een optionele paragraaf over tracering van eisen die nader kan worden ingevuld.
  • Uit de bijlage "Gebruik van Jira" is de paragraaf "Velden in Jira" verwijderd omdat deze out-of-date en incompleet was en bovendien niet ging over velden in Jira, maar over metrieken die met behulp van de informatie in Jira gemeten kunnen worden. In plaats van deze paragraaf verwijst het kwaliteitsplantemplate naar de lijst op GitHub van metrieken die Quality-time kan meten.
  • Uit de bijlage "Gebruik van Jira" is het issue type "Sprint bug" verwijderd omdat bugs die tijdens sprints worden gevonden normaal gesproken niet worden vastgelegd in Jira.
  • Uit de bijlage "Gebruik van Jira" is het issue type "Custom issue" verwijderd omdat custom issues optioneel zijn en in de praktijk te weinig worden toegepast om apart te beschrijven.
  • Het hoofdstuk "Kwaliteitsmaatregelen projectafsluiting" bevatte een lijst van activiteiten voor de software delivery manager. Die activiteiten zijn verplaatst naar het template plan van aanpak realisatiefase. De kwaliteitsmaatregelen bij projectafsluiting zijn beperkt tot een controle door de kwaliteitsmanager van de uitvoering van die activiteiten.

Template Plan van Aanpak Voorfase

  • Paragraaf over projectafsluiting toegevoegd.

Template Plan van Aanpak Realisatiefase

  • Paragraaf over projectafsluiting en bijlage met activiteiten voor projectafsluiting toegevoegd.

Alle documenten

  • Vervang 'privacy impact analyse' door 'privacy impact assessment' en 'business impact analyse' door 'business impact analysis' zodat beide termen consequent op dezelfde manier geschreven worden.

Versie 2.2.0, 27 januari 2021

Kwaliteitsaanpak

  • Afdeling ICTU Software Realisatie vervangen door de afdelingen ICTU Software Diensten en/of ICTU Software Expertise.
  • ICTU ondersteunt alleen nog Quality-time als kwaliteitssysteem; HQ verwijderd.
  • Leeswijzer uitgebreid met uitleg over beschrijvend en voorschrijvend karakter van de Kwaliteitsaanpak.
  • Nieuwe maatregel "Het project beschikt over vastgestelde informatie" (M31) toegevoegd die beschrijft welke informatie de opdrachtgever aan een project beschikbaar stelt.
  • Bij maatregel "Het project levert in elke fase vastgestelde informatie over het product op" (M01) met een plaatje de relaties tussen de voorfase producten toegelicht.
  • De maatregel "Het project is gesplitst in een voorfase en een realisatiefase" (M14) hernoemd naar "Het project bereidt samen met opdrachtgever en belanghebbenden de realisatie voor".
  • De maatregel "ICTU geeft de voorkeur aan open source tools" (M15) is verwijderd. De inhoud van M15 is verplaatst naar "ICTU biedt ondersteuning voor verplicht gestelde tools" (M18). Reden is dat de voorkeur voor open source geen apart uitvoerbare maatregel is, maar deel uitmaakt van de ondersteuning van projecten met tools.
  • Bij maatregel "Het project gebruikt tools voor vastgestelde taken" (M16) performancetesttools toegevoegd.
  • Maatregel "ICTU zorgt dat een aantal vastgestelde tools snel beschikbaar is voor een project" (M17) verwijderd omdat projecten deze tools ofwel via de kantoorautomatisering van ICTU kunnen gebruiken of zelf kunnen draaien in de afgeschermde digitale omgeving zoals beschreven bij M19.
  • Bij maatregel "Het project laat de beveiliging van het ontwikkelde product periodiek beoordelen" (M26) beter toegelicht onder welke voorwaarden de beveiligingstesten alleen door de opdrachtgever kunnen worden uitgevoerd.
  • Bijlage "Risico's van softwareontwikkeling" verwijderd vanwege de overlap met de bijlage "Relatie met NEN NPR 5326".

Template Projectvoorstel Voorfase

  • Template veranderd in een template voor een plan van aanpak voor de voorfase. Gebruik voor projectvoorstellen het ICTU-brede template.

Template Projectvoorstel Realisatiefase

  • Template veranderd in een template voor een plan van aanpak voor de realisatiefase. Gebruik voor projectvoorstellen het ICTU-brede template.

Template Kwaliteitsplan

  • Toegevoegd bij projectafsluiting dat VPN-keys, LDAP-accounts, Jira-accounts en werkstations moeten worden opgeschoond.
  • Bij projectafsluiting de verantwoordelijke rol aangepast naar software delivery manager, conform Maatregel 27 in de Kwaliteitsaanpak.
  • Het hanteren van codeerstandaarden toegevoegd aan de kwaliteitsmaatregelen tijdens de realisatiefase.

Versie 2.1.0, 2 september 2020

Kwaliteitsaanpak

  • M30 ontbrak in de bijlage met het overzicht van alle maatregelen.
  • Link naar Kwaliteitsaanpak op ICTU-website toegevoegd.

Alle templates

  • Rubriceringsmogelijkheid conform Besluit Voorschrift Informatiebeveiliging Rijksdienst Bijzondere Informatie 2013 (VIRBI 2013) toegevoegd.
  • Rubriceringsniveau, rubriceringsduur en totaal aantal bladzijden conform VIRBI 2013, bijlage 1, eis 6J toegevoegd.
  • Link naar Kwaliteitsaanpak op ICTU-website toegevoegd in de bijlage over de Kwaliteitsaanpak.

Template Projectvoorstel Realisatiefase

  • Projectvoorstel Realisatiefase template toegevoegd dat als basis kan dienen voor een projectvoorstel voor het uitvoeren van een realisatiefase aansluitend aan een voorfase.

Generiek template

  • Generiek template toegevoegd dat als basis kan dienen voor documenten waarvoor nog geen specifiek template is.

Template Kwaliteitsplan

  • Paragrafen 1.2, 1.5 en 1.6 uitgebreid met standaard teksten.
  • Stakeholder management vervangen door het bescheidener identificeren van belanghebbenden en belangen.

Template Niet-Functionele Eisen

  • Link naar Nederlandse vertaling van WCAG 2.1 toegevoegd aan het NFE-template.

Versie 2.0.0, 29 april 2020

  • Naam van de Kwaliteitsaanpak veranderd van "Kwaliteitsaanpak ICTU Software Realisatie" naar "ICTU Kwaliteitsaanpak Softwareontwikkeling". Waar relevant "softwarerealisatie" veranderd in "softwareontwikkeling".
  • Maatregelen, waar mogelijk, compacter geformuleerd.
  • Maatregelen herverdeeld over de drie maatregelhoofdstukken.
  • De maatregel "Het project levert in elke fase vastgestelde informatie over het product op" (M01) beknopter geformuleerd en toelichting op documenten uitgebreid.
  • Bij de maatregelen "Het project zorgt dat het product continue aan de kwaliteitsnormen voldoet" (M02), "Het project maakt technische schuld inzichtelijk en lost deze planmatig op" (M08) en "Het project gebruikt tools voor vastgestelde taken" (M16) naast HQ ook Quality-time vermeld.
  • Bij de maatregel "Het project maakt technische schuld inzichtelijk en lost deze planmatig op" (M08) toegevoegd dat projecten regelmatig en voldoende tijd besteden aan het voorkomen en oplossen van technische schuld.
  • Bij de maatregel "Het project gebruikt tools voor vastgestelde taken" (M16) versiebeheer toegevoegd, met als concrete tools GitLab en Azure DevOps.
  • Explicieter aandacht besteed aan gebruikskwaliteit in de maatregelen "Het project levert in elke fase vastgestelde informatie over het product op" (M01) en "Het project zorgt dat het product continue aan de kwaliteitsnormen voldoet" (M02). ISO 9241-210 opgenomen als standaard die ICTU hanteert voor gebruikskwaliteit.
  • De maatregel "Betrokkenheid bij inzet" (M22) verwijderd.
  • De maatregel "Implementatie van wijzigingen aan de kwaliteitsaanpak en -normen" (M24) verwijderd.
  • Nieuwe maatregel toegevoegd voor het starten van projecten: "ICTU zorgt dat een project verantwoord kan starten" (M29).
  • Nieuwe maatregel toegevoegd voor risicomanagement: "Projecten identificeren, mitigeren en bewaken risico's" (M30).
  • Termen aangepast: 'projectverantwoordelijke' is vervangen door 'projectleider', 'projectenorganisatie' en 'projectorganisatie' door 'ICTU' en 'realiserend team' door 'projectteam'.
  • De beschrijving van de rollen van software delivery manager en kwaliteitsmanager aangescherpt.
  • Waar relevant bij de rationale van maatregelen verwezen naar overeenkomende risicobeheersmaatregelen uit de NPR 5326.
  • Referenties aan de Baseline Informatiebeveiliging Rijksdienst (BIR) omgezet naar de Baseline Informatiebeveiliging Overheid (BIO).
  • Referenties aan tools geactualiseerd.
  • Tekstuele en stilistische verbeteringen.
  • Actielijst toegevoegd aan self-assessment spreadsheet.
  • Generatie van documenttemplates is onderdeel van de Kwaliteitsaanpak.

Versie 1.3.1, 1 mei 2019

  • M14: Maatregeltitel ingekort zodat paginanummers in de inhoudsopgave niet overlappen.

Versie 1.3, 5 april 2019

  • Overbodig kopje in de wijzigingsgeschiedenis van de generieke versie verwijderd.
  • Bijlage met afkortingen toegevoegd.
  • M07: Toegankelijkheidstests toegevoegd.
  • M10: Aanwezigen bij periodiek projectoverleg aangepast.
  • M16: Een tool voor het testen van toegankelijkheid toegevoegd.
  • M01: Wbni, EN 301 549 en WCAG 2.1 als bron voor niet-functionele eisen toegevoegd. Toegankelijkheidsverklaring als mogelijke deliverable genoemd.
  • M05: Iteratief en incrementeel ontwikkelproces: Sprint retrospective en sprint backlog toegevoegd.
  • M16: Axe toegevoegd.
  • WCAG 2.1 toegevoegd aan bijlage C: Documenten voor M01.

Versie 1.2, 1 augustus 2018

  • M01: Op te leveren producten: Niet alle producten hoeven door het project te worden gemaakt.
  • M02: Continu voldoen aan kwaliteitsnormen: Zo snel mogelijk voldoen aan kwaliteitsnormen in plaats van altijd.
  • M13: Gebruik van NEN-ISO/IEC 25010: Verduidelijkt dat het om het toepassen van NEN-ISO/IEC 25010 in projecten gaat en verplaatsen naar hoofdstuk Producten.
  • M19: Afgeschermde digitale omgeving: De titel van de maatregel verduidelijkt naar "afgeschermde digitale omgeving".
  • M25: De inhoud is verplaatst naar M01: Op te leveren producten, M25 zelf is vervallen.
  • M28: Self-assessment: Maatregel met betrekking tot self-assessment toegevoegd.
  • Tekstuele en stilistische verbeteringen.
  • Manifest toegevoegd.
  • ICTU-specifieke invulling van maatregelen aangepast aan nieuwe organisatiestructuur en rollen zoals die in 2018 gelden.
  • In M16: Verplichte tools, de verwijzing naar ICTU-specifieke SonarQube kwaliteitsprofielen verwijderd omdat ICTU de standaard Sonar Way kwaliteitsprofielen gebruikt.

Versie 1.1, 7 november 2017

  • BIR-maatregelen toegevoegd.

Versie 1.0.2, 9 mei 2017

  • Eerste publicatie.