Wat is de designfase?
De designfase binnen de SSDLC richt zich op het omzetten van de verzamelde requirements naar een technisch ontwerp van het systeem. Het gaat hierbij zowel om de architectuur op hoog niveau als om het detailontwerp van componenten, interfaces en datastructuren. De designfase vormt de brug tussen wat het systeem moet doen (requirements) en hoe het systeem technisch gerealiseerd gaat worden (implementatie).
Casus
In het project van een online leerplatform is uit de requirementsfase gebleken dat gebruikers hun voortgang willen zien en dat data opgeslagen moet worden binnen de EU. In de designfase wordt dit uitgewerkt in componenten zoals een “Voortgangsdienst” en een “Databaseconnector” waarbij ook rekening wordt gehouden met schaalbaarheid, dataconsistentie en versleuteling van gegevens.
Hoe zit de designfase in elkaar?
1. Doel van de fase
Het doel is om een technisch ontwerp te maken dat de specificaties uit de requirementsfase omzet in een realiseerbare en onderhoudbare software-architectuur.
2. Activiteiten binnen de fase
- Ontwerpen van systeemarchitectuur (logisch en fysiek)
- Uitwerken van componentmodellen en interfaces
- Toepassen van design patterns
- Keuze maken voor technologieën, tools en frameworks
- Maken van modelleringsdiagrammen zoals UML, C4 en DFD
3. Betrokken rollen
- Software architect
- Developers
- Security architect
- UX-designer (voor wireframes en flows)
- Product owner (voor validatie van ontwerpbeslissingen)
4. Op te leveren resultaten
- Architectuurdiagrammen (bijv. C4, componentdiagrammen)
- Klassendiagrammen, sequentiediagrammen, toestandsdiagrammen
- API-specificaties
- Beveiligingsontwerp (bijv. autorisatie-structuur, encryptie)
- Ontwerpdocument (technisch ontwerp met toelichting)
- Wireframes of UI-flowdiagrammen
5. Beveiligingsfocus
- Ontwerpen van veilige interfaces
- Toepassen van beveiligingsprincipes zoals “least privilege”
- Vastleggen van beveiligingsmaatregelen (bijv. hashing, logging, toegangscontrole)
- Ontwikkelen van een threat model o.b.v. STRIDE
6. Modelleertechnieken of tools
- UML (klassendiagram, sequentiediagram, state diagram)
- C4-model (voor context, containers, componenten, code)
- DFD (voor gegevensstromen)
- Tools: PlantUML, Structurizr, Enterprise Architect, Figma (voor UI flows)
7. Feedbackloops of iteraties
- Architectuurreview door team of externen
- Validatiesessies met stakeholders
- Iteratief verfijnen in SCRUM-sprints of op basis van proof-of-concept
8. Communiceerbaarheid van tussenresultaten
- Gebruik van modellen op verschillende abstractieniveaus (C4-niveaus)
- Annotaties en toelichtingen bij diagrammen
- Wireframes voor visuele interactie
- Versies op maat: voor management (hoog niveau), voor development (detailniveau)
9. Traceerbaarheid
- Ontwerpelementen verwijzen naar requirements (bijv. UC-02 → Module X)
- Traceability matrix met koppeling tussen use cases, componenten en interfaces
- Herleidbaarheid van ontwerpbeslissingen naar eisen of risico’s
10. Testmogelijkheden of controlepunten
- Ontwerp wordt geëvalueerd op testbaarheid (design for testability)
- Testscenario’s kunnen worden afgeleid uit sequentie- en toestandsdiagrammen
- Beveiligingsaspecten worden getoetst aan beveiligingseisen uit vorige fase
11. Voorbeelden of casus
Voorbeeld:
Vanuit de use case “Reserveren afspraak” wordt in het ontwerp een module “AfspraakService” gedefinieerd met methodes zoals
MaakAfspraak()
enAnnuleerAfspraak()
. Een sequentiediagram laat zien hoe deze service communiceert met de database en het notificatiesysteem.Daarnaast bevat het ontwerp een klassendiagram waarin entiteiten als
Afspraak
,Gebruiker
enTijdslot
worden beschreven.
12. Betekenis voor de volgende fase
De designfase vormt de input voor de implementatiefase. Developers gebruiken het technisch ontwerp als blueprint voor het schrijven van code. De ontwerpbeslissingen bepalen hoe de software wordt opgebouwd, welke patronen gevolgd worden en hoe interfaces samenwerken. Een goed ontwerp voorkomt interpretatieverschillen, maakt de software schaalbaar en goed onderhoudbaar, en zorgt ervoor dat beveiligingsmaatregelen al in de architectuur verweven zijn.
Hoe gebruik je de designfase?
De designfase gebruik je om een brug te slaan tussen eisen en implementatie. Je zet de verzamelde requirements om in een technisch ontwerp dat richting geeft aan de ontwikkeling, beveiliging en toekomstbestendigheid van het systeem. Een goed ontwerp zorgt ervoor dat ontwikkelaars weten wat ze moeten bouwen en hoe ze dat op een gestructureerde manier kunnen doen.
In de praktijk gebruik je deze fase om:
- Eisen te vertalen naar modules, services en interfaces die passen binnen een schaalbare architectuur.
- Beveiliging vanaf het begin te integreren in de architectuur, met bijvoorbeeld versleuteling, toegangscontrole en threat modeling.
- Afstemming te realiseren tussen disciplines, zoals UX, security en development.
- Technologie- en patroonkeuzes te onderbouwen, zodat het project haalbaar en onderhoudbaar blijft.
- Testbaarheid en uitbreidbaarheid in te bouwen, bijvoorbeeld via duidelijke sequentiediagrammen en componentgrenzen.
- Gebruiksvriendelijke interactie en flows te ontwerpen met wireframes en UI-diagrammen.
Door het ontwerp iteratief af te stemmen met stakeholders en ontwikkelaars, verklein je de kans op misverstanden en leg je een stevig fundament voor efficiënte ontwikkeling en veilige software.
Volgende stap: Uitleg SSDLC Developmentfase