Ga naar inhoud

Softwareontwikkeling

Versie: 1.0 Eigenaar: Head of Architecture Goedgekeurd door: Directie Harborn Datum laatste review: 2025 Reviewfrequentie: Jaarlijks


Doel

Deze procedure beschrijft het softwareontwikkelingsproces bij Harborn, van specificatie tot productie-deployment. De procedure borgt dat user stories veilig worden ontwikkeld, gereviewed en gedeployeerd, met speciale aandacht voor beveiliging (OWASP), kwaliteit en klanttevredenheid.

Toepassingsgebied

Deze procedure is van toepassing op alle softwareontwikkelingsactiviteiten bij Harborn, inclusief nieuwe features, bugfixes en wijzigingen aan bestaande systemen.


Processtappen

1. Specificatie

  • User stories worden aangemaakt en geprioriteerd in ons ticketsysteem, en afgestemd op epics conform de initiële klantverzoeken.
  • User stories worden gevalideerd met de klant om te bevestigen dat ze voldoen aan hun verwachtingen. Schriftelijke goedkeuring wordt bijgehouden door de story te 'plannen' in het ticketsysteem.
  • In deze fase wordt de complexiteit van de user story geschat in story points (relatieve maat voor complexiteit, onzekerheid en benodigde tijd).
  • Stories die betrekking hebben op de beschikbaarheid, integriteit of vertrouwelijkheid van data worden besproken in de team-refinement met leden die de context van de wijziging kennen, zodat de gekozen aanpak veilig is.

2. Ontwikkeling

  • User stories worden opgepakt door ontwikkelaars.
  • Ontwikkeling en eerste testronden vinden lokaal plaats, op het werkstation van de ontwikkelaar.

3. Pull/merge request

  • Wanneer een user story klaar is, maakt de ontwikkelaar een pull/merge request aan om aan te geven dat de wijzigingen gereed zijn voor samenvoeging met de hoofdbranch.
  • Het pull request activeert de CI-pipeline, die een statische code-review bevat.

Beveiligingscheck bij een pull request:

Beveiligingsbeoordeling met OWASP-focus

  • Controleer de code op veelvoorkomende beveiligingskwetsbaarheden, met bijzondere aandacht voor de OWASP Top Ten (SQL-injectie, XSS, CSRF, e.d.).
  • Zorg dat gebruikersinvoer correct wordt gevalideerd, gesaneerd en geëscaped.
  • Controleer op potentiële beveiligingsmisconfiguraties (bijv. blootgestelde gevoelige informatie zoals API-sleutels of wachtwoorden, of te ruime bestandsrechten).
  • Verifieer dat authenticatie- en autorisatiemechanismen correct zijn geïmplementeerd en dat gebruikers passende toegangscontroles hebben.

Gegevensbescherming en privacy

  • Beoordeel hoe gevoelige gegevens worden behandeld in de codewijzigingen. Zorg dat gevoelige informatie versleuteld wordt opgeslagen en verzonden.
  • Controleer op naleving van gegevensbeschermingsregelgeving (bijv. AVG/GDPR, HIPAA) indien van toepassing.
  • Controleer logging- en foutafhandelingsmechanismen om blootstelling van gevoelige gegevens in logs of foutmeldingen te voorkomen.

Externe afhankelijkheden en bibliotheken

  • Controleer eventuele externe bibliotheken of afhankelijkheden die zijn geïntroduceerd. Zorg dat ze up-to-date zijn en geen bekende beveiligingskwetsbaarheden bevatten.
  • Beoordeel de rechten en toegangsniveaus die worden gevraagd door externe componenten. Zorg voor minimale toegang (least privilege).
  • Gebruik lockfiles om te garanderen dat dependency-versies in productie altijd overeenkomen met die gebruikt tijdens ontwikkeling.

4. Code review

  • De code wordt gereviewd door een andere teamlid.
  • Ontwikkelaars worden aangemoedigd ook een AI-review toe te voegen, strikt als aanvulling en nooit als vervanging van een menselijke review.
  • Alle feedback wordt verwerkt en opgelost vóórdat de voorgestelde wijzigingen onderdeel worden van de codebase.

5. Deployment naar stagingomgeving

  • Via een pipeline wordt de software automatisch gedeployeerd naar de stagingomgeving.
  • De klant wordt uitgenodigd het eindresultaat te testen op de stagingomgeving. Schriftelijke goedkeuring wordt bijgehouden door de story te 'opleveren' (delivering) in het ticketsysteem.

6. Controle op kwetsbaarheden in afhankelijkheden

  • Gebruikte bibliotheken worden continu gecontroleerd op kwetsbaarheden.
  • Er is tooling beschikbaar die ontwikkelaars waarschuwt bij kwetsbaarheden die gepatcht moeten worden.

7. Deployment naar productieomgeving

  • Via een pipeline wordt de software automatisch gedeployerd naar de productieomgeving.
  • Deployment van stories vindt alleen plaats nadat de klant, of de product owner namens de klant, de user story heeft geaccepteerd door deze te 'opleveren' in het ticketsysteem.

8. Testen van de productieomgeving

  • Een reeks handmatige tests wordt uitgevoerd om te controleren dat het productiesysteem zonder problemen draait.

Risico's

Risico Kans Impact Beheersmaatregel
Onvolledige of onduidelijke user stories M H Stories worden gevalideerd met de klant en goedgekeurd in het ticketsysteem; complexiteit wordt vroeg geschat
Beveiligingsgevoelige stories niet met de juiste teamleden besproken M H Team-refinement meetings omvatten relevante leden voor beschikbaarheid, integriteit en vertrouwelijkheid
Ontwikkelaar slaat lokaal testen over vóór pull request L H Teamcultuur en tooling ondersteunen lokaal testen vóór PR-indiening
Statische code-analysetool faalt of is verkeerd geconfigureerd L H CI-pipeline voert automatisch statische analyse uit op elk PR
OWASP-kwetsbaarheden niet gedetecteerd M H Beveiligingsreview-checklist inclusief OWASP Top Ten; menselijke reviewer als aanvulling
Ongevalideerde externe afhankelijkheden introduceren kwetsbaarheden M H Lockfiles gebruiken; continue monitoring van dependency-kwetsbaarheden
Reviewer mist kritiek beveiligingsprobleem M H Gebruik van gestructureerde beveiligingschecklist bij elke code review

Rollen en verantwoordelijkheden

Rol Verantwoordelijkheid
Head of Architecture Proceseigenaar; bewaakt architectuur- en beveiligingskwaliteit
Ontwikkelaar Voert ontwikkeling, lokale tests en pull request uit
Code reviewer Beoordeelt pull requests conform de beveiligingschecklist
Product Owner / Klant Valideert user stories en accepteert deliverables
DevOps / IT-beheer Beheert CI/CD-pipelines en deployment-omgevingen

Gerelateerde beleidsregels

Gerelateerde controls