Skip to content

Naamgeving van softwareoplossingen, repositories en omgevingen

Doel

Binnen onze organisatie ontwikkelen en beheren we onder andere:

  • websites;
  • webportalen;
  • webapplicaties;
  • integraties;
  • API's;
  • technische services.

Historisch werd iedere Git-repository een omgeving genoemd. Dit is technisch en organisatorisch onjuist.

Omgeving is geen synoniem voor repository

De term omgeving wordt uitsluitend gebruikt voor een context waarin software wordt ontwikkeld, getest of uitgevoerd, zoals:

  • local;
  • development;
  • test;
  • acceptatie;
  • staging;
  • productie.

Een Git-repository is geen omgeving.

Dit document definieert de begrippen en naamgevingsregels die binnen onze organisatie gebruikt moeten worden.

Kernbegrippen

De volgende begrippen worden organisatiebreed gehanteerd:

Begrip Betekenis
Softwareoplossing Het functionele geheel dat wij voor een klant ontwikkelen en beheren
Type De classificatie van een softwareoplossing, zoals website, webportaal, webapplicatie of integratie
Applicatie Een zelfstandig functionerend softwareonderdeel
Component Een technisch onderdeel van een grotere softwareoplossing
Service Een zelfstandig uitvoerbaar technisch proces zonder primaire gebruikersinterface
Repository Een Git-repository waarin broncode en bijbehorende bestanden worden beheerd
Deployment Een uitgerolde en uitvoerbare instantie van een applicatie, component of service
Omgeving De context waarin een deployment draait, zoals acceptatie of productie
Project Een tijdelijk traject waarin een softwareoplossing wordt gerealiseerd of gewijzigd
Systeem Een bestaand intern of extern informatiesysteem, zoals een ERP, CRM of boekhoudpakket

1. Softwareoplossing

Definitie

Een softwareoplossing is het functionele geheel dat wij voor een klant ontwikkelen, leveren en beheren. Dit is het primaire object waarmee software binnen de organisatie en documentatie wordt aangeduid.

Voorbeelden:

  • Orderinvoer Van Rijn Coating
  • Employee Purchase Portal iUsed
  • Productkoppeling ThysToys
  • Corporate website Beumer Packaging
  • Brekz Checkout

Een softwareoplossing kan bestaan uit:

  • één of meerdere applicaties;
  • één of meerdere componenten;
  • één of meerdere integraties;
  • één of meerdere repositories;
  • één of meerdere deployments;
  • meerdere omgevingen.

Gebruik

Gebruik softwareoplossing als overkoepelende term in:

  • klantdocumentatie;
  • interne documentatie;
  • CRM;
  • ClickUp;
  • SLA-documentatie;
  • beheerprocessen;
  • technische inventarisaties;
  • architectuurbeschrijvingen.

Wanneer de context duidelijk is, mag de term worden verkort tot oplossing.

Voorbeeld

name: Orderinvoer Van Rijn Coating
type: web-application
customer: Van Rijn Coating
status: active

2. Type softwareoplossing

Iedere softwareoplossing krijgt een expliciet type.

Ondersteunde typen

Type Technische waarde Definitie
Website website Publiek toegankelijke en hoofdzakelijk contentgerichte toepassing
Webportaal web-portal Afgeschermde toepassing voor klanten, medewerkers, leveranciers of partners
Webapplicatie web-application Interactieve toepassing die een bedrijfsproces ondersteunt
Integratie integration Geautomatiseerde gegevensuitwisseling tussen twee of meer systemen
API api Zelfstandig aangeboden technische interface
Service service Zelfstandig uitvoerbaar technisch proces zonder primaire gebruikersinterface

Classificatieregels

Gebruik website wanneer:

  • de toepassing hoofdzakelijk publieke content toont;
  • bezoekers meestal niet hoeven in te loggen;
  • contentpublicatie het primaire doel is.

Gebruik webportaal wanneer:

  • gebruikers moeten inloggen;
  • de toepassing bedoeld is voor een specifieke gebruikersgroep;
  • de gebruiker toegang krijgt tot persoonlijke, klant- of bedrijfsgegevens.

Gebruik webapplicatie wanneer:

  • gebruikers actief bedrijfsprocessen uitvoeren;
  • de toepassing meer is dan alleen informatievoorziening;
  • functionaliteit, workflows en gegevensverwerking centraal staan.

Gebruik integratie wanneer:

  • de software primair gegevens uitwisselt tussen systemen;
  • er geen primaire gebruikersinterface aanwezig is;
  • synchronisatie, import, export of eventverwerking het hoofddoel is.

Gebruik API wanneer:

  • de technische interface zelfstandig wordt aangeboden;
  • meerdere applicaties of systemen de interface gebruiken;
  • de API een eigen verantwoordelijkheid en lifecycle heeft.

Gebruik service wanneer:

  • de software zelfstandig draait;
  • de software bijvoorbeeld achtergrondtaken, verwerking of automatisering uitvoert;
  • er geen primaire gebruikersinterface aanwezig is.

3. Applicatie en component

Applicatie

Een applicatie is een zelfstandig functionerend onderdeel met een duidelijke functionele verantwoordelijkheid.

Voorbeelden:

  • Checkout frontend
  • Orderbeheerportaal
  • Productbeheerapplicatie
  • Klantenportaal
  • REST API

Een applicatie kan:

  • een eigen repository hebben;
  • onderdeel zijn van een monorepository;
  • zelfstandig worden gedeployed;
  • op meerdere omgevingen draaien.

Component

Een component is een technisch onderdeel van een grotere softwareoplossing.

Voorbeelden:

  • frontend;
  • backend;
  • API;
  • worker;
  • webhook handler;
  • queue consumer;
  • importservice;
  • exportservice;
  • authenticatieservice.

Gebruik component voornamelijk in technische documentatie. Voor functionele of klantgerichte communicatie heeft applicatie of het specifieke type meestal de voorkeur.

Voorbeeld

Softwareoplossing: Brekz Checkout
Componenten:
- Checkout frontend
- Checkout API
- Payment webhook service
- Order export integratie

4. Repository

Definitie

Een repository is een Git-repository waarin broncode, configuratie, documentatie en andere projectbestanden worden beheerd.

Gebruik de termen:

  • repository;
  • Git-repository;
  • code repository.

Gebruik nooit

Gebruik nooit omgeving als synoniem voor repository.

Belangrijk onderscheid

Een repository is niet automatisch:

  • een softwareoplossing;
  • een applicatie;
  • een component;
  • een deployment;
  • een omgeving;
  • een project.

Een softwareoplossing kan meerdere repositories bevatten. Een repository kan ook meerdere applicaties of componenten bevatten, bijvoorbeeld bij een monorepository.

Voorbeelden

flooris/brekz-checkout
flooris/brekz-checkout-frontend
flooris/brekz-exact-export

Documentatievoorbeeld

repositories:
  - name: Checkout backend
    url: github.com/flooris/brekz-checkout
  - name: Checkout frontend
    url: github.com/flooris/brekz-checkout-frontend

5. Deployment

Definitie

Een deployment is een uitgerolde en uitvoerbare instantie van een applicatie, component of service.

Een deployment verbindt de software met:

  • een omgeving;
  • infrastructuur;
  • configuratie;
  • domeinnamen;
  • databases;
  • externe services;
  • een specifieke softwareversie.

Voorbeeld

Applicatie: Employee Purchase Portal
Deployment: iused-employee-portal-production
Omgeving: productie
Server: app-03

Wanneer deployment expliciet vastleggen

Leg deployments expliciet vast wanneer:

  • dezelfde applicatie voor meerdere klanten wordt uitgerold;
  • dezelfde applicatie meerdere instanties heeft;
  • er meerdere landen of labels zijn;
  • software multi-tenant of single-tenant kan worden ingezet;
  • verschillende deployments afwijkende configuraties hebben;
  • infrastructuurbeheer onderdeel is van de documentatie.

6. Omgeving

Definitie

Een omgeving is de context waarin software wordt ontwikkeld, getest, geaccepteerd of gebruikt. De term omgeving mag alleen hiervoor worden gebruikt.

Standaardomgevingen

Omgeving Technische waarde Doel
Local local Ontwikkeling op de lokale werkplek van een developer
Development development Gedeelde ontwikkelomgeving
Test test Technisch en functioneel testen
Acceptatie acceptance Acceptatie door klant, product owner of interne verantwoordelijke
Staging staging Productieachtige omgeving voor deploymentvalidatie
Productie production Daadwerkelijk gebruik door eindgebruikers

Gebruik van development

Een gedeelde developmentomgeving is optioneel. Gebruik deze alleen wanneer daar een concreet doel voor bestaat, bijvoorbeeld:

  • integratietesten tussen meerdere ontwikkelaars;
  • testen met gedeelde externe systemen;
  • demonstreren van werk in uitvoering.

Verschil tussen test, acceptatie en staging

Bedoeld voor:

  • functionele tests;
  • technische tests;
  • QA;
  • geautomatiseerde tests;
  • experimentele configuraties.

Bedoeld voor:

  • beoordeling door klant of product owner;
  • gebruikersacceptatietesten;
  • goedkeuring van opgeleverde functionaliteit.

Bedoeld voor:

  • valideren van een release vóór productie;
  • testen van deploymentprocedures;
  • productieachtige infrastructuur en configuratie;
  • smoke tests vóór livegang.

Acceptatie en staging combineren

Gebruik acceptatie en staging alleen als beide omgevingen een duidelijk verschillend doel hebben.

Voorbeeld

environments:
  acceptance:
    url: https://acceptatie.orders.example.nl
  production:
    url: https://orders.example.nl

7. Project

Definitie

Een project is een tijdelijk traject waarin een softwareoplossing wordt gerealiseerd, uitgebreid, gemigreerd of gewijzigd.

Een project heeft doorgaans:

  • een begin;
  • een eind;
  • een doel;
  • een scope;
  • een planning;
  • een budget;
  • betrokken personen.

Een softwareoplossing blijft na afronding van een project bestaan.

Voorbeeld

Project: Implementatie Orderinvoer 2026
Softwareoplossing: Orderinvoer Van Rijn Coating

Rond één softwareoplossing kunnen meerdere projecten plaatsvinden. Voorbeelden:

  • eerste realisatie;
  • redesign;
  • Laravel-upgrade;
  • migratie naar nieuwe infrastructuur;
  • toevoeging van een nieuwe integratie;
  • performanceverbetering;
  • security-update.

Project is geen permanente naam

Gebruik project daarom niet als permanente naam voor een softwareoplossing.


8. Product

Gebruik de term softwareproduct alleen wanneer de software daadwerkelijk als product wordt ontwikkeld en beheerd.

Kenmerken van een softwareproduct zijn bijvoorbeeld:

  • meerdere klanten gebruiken dezelfde oplossing;
  • er is een eigen roadmap;
  • er is centraal product ownership;
  • er bestaat versiebeleid;
  • functionaliteit wordt generiek ontwikkeld;
  • releases zijn niet uitsluitend gekoppeld aan één klantproject.

Voor klantspecifiek maatwerk heeft de term softwareoplossing de voorkeur.


9. Systeem

De term systeem is breed en kan verwarring veroorzaken.

Een systeem kan namelijk verwijzen naar:

  • een ERP-systeem;
  • een CRM-systeem;
  • een extern platform;
  • een server;
  • infrastructuur;
  • een softwareoplossing;
  • een compleet IT-landschap.

Gebruik systeem voornamelijk voor bestaande interne of externe informatiesystemen.

Voorbeeld:

Bronsysteem: FileMaker
Doelsysteem: Exact Online
Integratie: FileMaker–Exact orderintegratie

Gebruik voor onze eigen software bij voorkeur de preciezere begrippen:

  • softwareoplossing;
  • applicatie;
  • component;
  • service;
  • integratie.

10. Begrippenstructuur

Hanteer waar relevant de volgende hiërarchie:

Klant
└── Softwareoplossing
    ├── Applicatie of component
    │   ├── Repository
    │   └── Deployment
    │       └── Omgeving
    ├── Applicatie of component
    │   ├── Repository
    │   └── Deployment
    │       └── Omgeving
    └── Integratie
        ├── Repository
        └── Deployment
            └── Omgeving

Deze structuur hoeft niet altijd volledig te worden vastgelegd. Voor een eenvoudige website kan de structuur bijvoorbeeld zijn:

Klant
└── Softwareoplossing: Corporate website
    ├── Repository
    └── Omgevingen
        ├── Acceptatie
        └── Productie

Voor een grotere oplossing kan de volledige structuur worden gebruikt.


11. Naamgevingsregels

Softwareoplossing

Gebruik een functionele en herkenbare naam.

Aanbevolen structuur:

<Functionele naam>

Of wanneer extra context nodig is:

<Klantnaam> <Functionele naam>

Goede voorbeelden:

  • Orderinvoer
  • Employee Purchase Portal
  • Productkoppeling
  • Dealerportaal
  • Brekz Checkout
  • Van Rijn Coating Orderinvoer

Vermijd

  • Omgeving 1
  • Nieuwe omgeving
  • Laravel omgeving
  • Website repository
  • Project klantnaam
  • App 2
  • Portal nieuw

Repository

Gebruik een korte technische naam in lowercase kebab-case.

Aanbevolen structuur:

<klant>-<functie>

Eventueel uitgebreid met het component:

<klant>-<functie>-<component>

Voorbeelden:

brekz-checkout
brekz-checkout-frontend
brekz-checkout-api
brekz-exact-export
van-rijn-order-portal
thystoys-mirakl-integration

Voeg geen omgevingsnaam aan de repository toe, tenzij de repository uitsluitend configuratie van die specifieke omgeving bevat.

Vermijd

brekz-production
brekz-acceptance
brekz-environment
brekz-new
brekz-v2

Deployment

Aanbevolen structuur:

<softwareoplossing-of-component>-<omgeving>

Voorbeelden:

brekz-checkout-production
brekz-checkout-acceptance
van-rijn-order-portal-production
thystoys-mirakl-integration-production

Domeinnamen

Koppel domeinnamen aan een deployment en omgeving.

Voorbeeld:

deployments:
  - name: van-rijn-order-portal-acceptance
    environment: acceptance
    url: https://acceptatie.orders.example.nl
  - name: van-rijn-order-portal-production
    environment: production
    url: https://orders.example.nl

12. Aanbevolen documentatiemodel

Gebruik bij voorkeur een vast gegevensmodel voor iedere softwareoplossing.

name: Orderinvoer Van Rijn Coating
type: web-application
customer: Van Rijn Coating
status: active
description: >
  Webapplicatie waarmee productieorders op tablets worden
  geregistreerd en voorzien van foto's.
components:
  - name: Order portal
    type: web-application
    repositories:
      - name: Order portal
        url: github.com/flooris/van-rijn-order-portal
    deployments:
      - name: van-rijn-order-portal-acceptance
        environment: acceptance
        url: https://acceptatie.orders.example.nl
      - name: van-rijn-order-portal-production
        environment: production
        url: https://orders.example.nl
  - name: ERP export
    type: integration
    repositories:
      - name: ERP export
        url: github.com/flooris/van-rijn-erp-export
    deployments:
      - name: van-rijn-erp-export-production
        environment: production

13. Vereenvoudigd documentatiemodel

Voor kleine softwareoplossingen hoeft niet iedere technische laag afzonderlijk te worden beschreven.

name: Corporate website Beumer Packaging
type: website
customer: Beumer Packaging
status: active
repository:
  url: github.com/flooris/beumer-packaging-website
environments:
  acceptance:
    url: https://acceptatie.example.nl
  production:
    url: https://www.example.nl

Gebruik alleen de complexere structuur wanneer de softwareoplossing daadwerkelijk meerdere componenten, repositories of deployments bevat.

Verhouding tot de Omgevingscode-conventie

Binnen de Flooris CRM-documentatie (docs/crm/klanten/) gebruiken we voor de environments: frontmatter een lijstvorm met prefix/url/type (zie CLAUDE.md — Omgeving Prefixes) in plaats van de geneste vorm hierboven. Deze Omgevingscode-prefixen (bv. W3W Website Prod) blijven de standaard voor automatisering en monitoring; de gegevensmodellen in dit hoofdstuk zijn aanvullende documentatietaal en geen vervanging daarvan.


14. Taalgebruik in communicatie

Gebruik in algemene communicatie:

Voor iedere klant beheren we één of meerdere softwareoplossingen. Een softwareoplossing kan bestaan uit meerdere applicaties, componenten, integraties en repositories en kan op meerdere omgevingen draaien.

Gebruik bij een specifieke repository:

De broncode van deze applicatie wordt beheerd in de repository brekz-checkout.

Gebruik bij een specifieke omgeving:

De nieuwe versie is beschikbaar op de acceptatieomgeving.

Gebruik bij een deployment:

De productie-deployment draait op de primaire applicatieserver.

Gebruik niet

De omgeving staat op GitHub.

Gebruik wel

De repository staat op GitHub.

Gebruik niet

We hebben een nieuwe omgeving aangemaakt voor de integratie.

Gebruik wel, afhankelijk van de situatie

We hebben een nieuwe repository aangemaakt voor de integratie.

Of:

We hebben een nieuwe acceptatieomgeving ingericht voor de integratie.


15. Instructies voor AI-agents

Bij het lezen, schrijven of aanpassen van documentatie moet een AI-agent de volgende regels toepassen.

Verplichte regels

  1. Noem een Git-repository altijd een repository of Git-repository.
  2. Gebruik het woord omgeving alleen voor local, development, test, acceptatie, staging of productie.
  3. Gebruik softwareoplossing als overkoepelende term voor wat wij voor een klant ontwikkelen en beheren.
  4. Classificeer iedere softwareoplossing waar mogelijk als: website, webportaal, webapplicatie, integratie, API of service.
  5. Gebruik project uitsluitend voor een tijdelijk realisatie- of wijzigingstraject.
  6. Gebruik product alleen wanneer sprake is van een herhaalbaar softwareproduct met product ownership en een roadmap.
  7. Maak onderscheid tussen: softwareoplossing, applicatie, component, repository, deployment en omgeving.
  8. Corrigeer bestaand taalgebruik waarin een repository ten onrechte een omgeving wordt genoemd.
  9. Behoud bij correcties de oorspronkelijke betekenis en pas alleen de terminologie aan wanneer de context duidelijk is.
  10. Vraag om verduidelijking wanneer uit de context niet blijkt of met "omgeving" een repository, deployment, server of echte softwareomgeving wordt bedoeld.

Interpretatieregel voor bestaande documentatie

Wanneer bestaande documentatie het woord omgeving gebruikt, bepaal dan uit de context wat werkelijk wordt bedoeld.

Voorbeelden:

Bestaande tekst Waarschijnlijke betekenis
De omgeving staat op GitHub Repository
Clone de omgeving naar je Mac Repository
Deploy de omgeving naar productie Applicatie, repository of release
De omgeving draait op server APP-01 Deployment
De omgeving is bereikbaar via acceptatie.example.nl Acceptatieomgeving
Maak een nieuwe omgeving aan in Laravel Forge Site, deployment of serverconfiguratie
De productieomgeving gebruikt database X Productieomgeving

Pas de term alleen automatisch aan als de betekenis voldoende duidelijk is.


16. Samenvatting

De centrale term binnen onze organisatie is:

Softwareoplossing

Een softwareoplossing heeft een type, zoals website, webportaal, webapplicatie of integratie. Een softwareoplossing kan bestaan uit applicaties en componenten. De broncode daarvan wordt beheerd in repositories. De software wordt via deployments uitgerold naar omgevingen zoals acceptatie en productie.

Nooit vergeten

De term omgeving mag nooit als algemene naam voor een Git-repository worden gebruikt.