UC-GEN-PROF-007 — Voorkeuren beheren
1. Kerngegevens
| Veld | Waarde |
|---|---|
| Usecase-ID | UC-GEN-PROF-007 |
| Naam | Voorkeuren beheren |
| Domein | Profiel, voorkeuren en toegankelijkheid |
| Primaire actor | Ingelogde gebruiker |
| Secundaire actor(en) | Systeem, sessieservice, gebruikersinstellingservice, voorkeurenservice, validatieservice, rolcontextservice, logging/auditcomponent |
| Rolcontext | Eigen gebruikerscontext; bij rolgebonden voorkeuren ook de actieve of gekozen rolcontext waarvoor de voorkeur functioneel relevant is |
| Betrokken schermen | SCH-GEN-10-01 — Voorkeuren |
| Gerelateerde usecases | UC-GEN-PROF-001 — Profiel bekijken; UC-GEN-PROF-002 — Profielgegevens wijzigen; UC-GEN-PROF-005 — Toegankelijkheidsinstellingen beheren; UC-GEN-PROF-006 — Toegankelijkheid vóór en na login synchroniseren |
| Primaire entiteiten | Users, UserSettings / algemene voorkeuren |
| Secundaire entiteiten / events | rolcontext, voorkeurendefinitie, verborgen voorkeur, UserPreferencesViewed, UserPreferenceChanged, UserPreferenceChangeRejected, UserPreferenceChangeFailed |
| Gerelateerde popups | POP-GEN-PROF-PREFERENCES-SAVED, POP-GEN-PROF-PREFERENCES-VALIDATION-FAILED, POP-GEN-PROF-PREFERENCES-SAVE-FAILED |
| Popupregister | Ontwerpbronnen — Popup-register |
| MoSCoW | Should have |
2. Omschrijving
Deze usecase beschrijft hoe een ingelogde gebruiker eigen algemene voorkeuren beheert. Voorkeuren zijn gebruikersinstellingen die niet tot de profielgegevens behoren en niet onder toegankelijkheid vallen. Profielgegevens zoals naam, e-mailadres, wachtwoord, niveau en profielfoto blijven onderdeel van de profielpagina of identity-providerflow. Toegankelijkheidsinstellingen blijven onderdeel van de toegankelijkheidspagina en de bijbehorende cookie-synchronisatie.
Voorkeuren beïnvloeden uitsluitend presentatiegedrag, persoonlijke bediening of contextuele weergavekeuzes. Voorbeelden zijn een voorkeursweergave van namen, een persoonlijke sorteervolgorde binnen overzichten of een gebruikerskeuze om een bepaalde waarschuwing niet opnieuw te tonen wanneer die voorkeur functioneel door de applicatie beschikbaar wordt gemaakt.
Voorkeuren veranderen nooit autorisaties, rollen, relaties, niveauautorisaties of de functionele dataset die een gebruiker mag zien. Een voorkeur mag bijvoorbeeld de volgorde of naamrepresentatie in een docentoverzicht wijzigen, maar mag niet bepalen welke leerlingen de docent mag bekijken.
Deze usecase is procesgericht. Exacte veldlabels, layout, volgorde van voorkeuren, dropdownwaarden, schakelaarvormgeving en eventuele responsive details horen in schermdocumentatie. De technische opslagstructuur, instellingstypen, caching, migraties en beheer van voorkeurensleutels worden in TO, database-informatie en SRS als afgeleide specificaties vastgelegd.
3. Scope
Deze usecase beschrijft:
- openen van de voorkeurenpagina vanuit de ingelogde gebruikerscontext;
- tonen van eigen algemene voorkeuren;
- tonen van rolgebonden voorkeuren wanneer deze voor de gebruiker en actieve rolcontext functioneel relevant zijn;
- wijzigen van toegestane en door de gebruiker beheerbare voorkeuren;
- server-side validatie van voorkeurensleutel, gegevenstype, waardebereik, rolcontext en eigenaar;
- direct opslaan van gewijzigde voorkeuren in het gebruikersinstellingendomein;
- direct of bij eerstvolgende relevante schermweergave toepassen van voorkeuren;
- afbakening van verborgen of systeemgestuurde voorkeuren die niet vrij door de gebruiker te beheren zijn;
- foutafhandeling bij ongeldige waarden of mislukte opslag;
- requirements-afleiding voor voorkeurenbeheer.
Deze usecase beschrijft niet:
- wijzigen van profielnaamvelden, niveau of profielfoto;
- wijzigen van e-mailadres, wachtwoord, registratie, sessie of andere identity-providergegevens;
- beheren van toegankelijkheidsinstellingen zoals contrast, dyslexielettertype of lettergrootte;
- synchroniseren van toegankelijkheidsinstellingen met een technische cookie;
- beheerderfunctionaliteit voor verborgen voorkeuren of supportmutaties op voorkeuren van andere gebruikers;
- aanmaken van nieuwe voorkeurensleutels via de GUI;
- wijzigen van autorisaties, rollen, relaties, niveauautorisaties of zichtbare gegevensset;
- featuretogglebeheer of systeeminstellingenbeheer door beheerders;
- account verwijderen, anonimiseren of deactiveren;
- popupteksten, knopteksten of popup-seeddata.
4. Pre-condities
| ID | Voorwaarde |
|---|---|
| PRE-001 | De gebruiker is succesvol ingelogd. |
| PRE-002 | De sessie kan server-side aan precies één interne OefenHub-gebruiker worden gekoppeld. |
| PRE-003 | De voorkeurenpagina is bereikbaar via het profielmenu of een gelijkwaardige ingelogde route. |
| PRE-004 | De toegestane voorkeurensleutels, gegevenstypen, waardebereiken en beheerbaarheid zijn centraal bekend in code of configuratie. |
| PRE-005 | Voor de gebruiker bestaat een UserSettings-record of het systeem kan functionele defaults tonen zonder dat eerst handmatig een record hoeft te bestaan. |
| PRE-006 | Rolgebonden voorkeuren worden alleen getoond wanneer de gebruiker de betreffende rolcontext heeft en de voorkeur voor die context functioneel relevant is. |
| PRE-007 | Verborgen of systeemgestuurde voorkeuren zijn als zodanig herkenbaar en worden niet als vrij bewerkbaar veld getoond. |
| PRE-008 | Frontend-zichtbaarheid wordt niet als beveiligingslaag gebruikt; alle wijzigingen worden server-side gevalideerd. |
5. Post-condities
| ID | Resultaat |
|---|---|
| POST-001 | De gebruiker ziet alleen eigen voorkeuren en alleen beheerbare voorkeuren die voor de eigen context relevant zijn. |
| POST-002 | Gewijzigde voorkeuren zijn server-side gevalideerd op sleutel, type, waarde, eigenaar en context. |
| POST-003 | Toegestane wijzigingen zijn opgeslagen in het gebruikersinstellingendomein. |
| POST-004 | Gewijzigde voorkeuren worden direct toegepast wanneer dit technisch en functioneel kan, of bij de eerstvolgende relevante schermopbouw gelezen. |
| POST-005 | Verborgen of niet-gebruikersbeheerbare voorkeuren zijn niet vrij gewijzigd door de gebruiker. |
| POST-006 | Voorkeuren wijzigen geen rollen, autorisaties, relaties, niveauautorisaties, zichtbare gegevensset, oefenruns, berichten of meldingen. |
| POST-007 | Bij ongeldige invoer wordt niets opgeslagen voor het betreffende veld of de betreffende wijzigingsset. |
| POST-008 | Bij technische opslagfout blijft de laatst succesvol opgeslagen voorkeurenset leidend. |
| POST-009 | De wijziging is functioneel herleidbaar voor logging of audit waar dat voor gebruikersinstellingen vereist is. |
| POST-010 | Bij verlopen sessie wordt de generieke loginflow gebruikt. |
| POST-011 | Bij ontbrekende autorisatie wordt de generieke toegang-geweigerd-afhandeling gebruikt. |
6. Trigger
De usecase start wanneer een ingelogde gebruiker via het profielmenu de pagina Voorkeuren opent, of wanneer de gebruiker op die pagina een beheerbare voorkeur wijzigt en opslaat.
7. Normale processtroom
| Stap | Actor | Scherm / component | Actie | Systeemrespons | Data / regel |
|---|---|---|---|---|---|
| 1 | Gebruiker | Profielmenu | Kiest Voorkeuren. | De applicatie opent de voorkeurenpagina. | Ingelogde route. |
| 2 | Systeem | Sessieservice | Bepaalt de interne gebruiker uit de sessie. | De server heeft een betrouwbare eigen-gebruikerscontext. | Users.Id komt uit sessie, niet uit clientinput. |
| 3 | Systeem | Voorkeurenservice | Bepaalt welke algemene voorkeuren voor de gebruiker beschikbaar zijn. | Alleen beheerbare voorkeuren worden klaargezet voor weergave. | Profiel en toegankelijkheid uitgesloten. |
| 4 | Systeem | Rolcontextservice | Bepaalt welke rolgebonden voorkeuren relevant zijn. | Alleen voorkeuren voor aanwezige en functioneel relevante rolcontexten worden getoond. | Geen wijziging van rol of autorisatie. |
| 5 | Systeem | Gebruikersinstellingservice | Leest bestaande voorkeurwaarden of functionele defaults. | De voorkeurenpagina wordt gevuld met actuele waarden. | UserSettings / voorkeuren. |
| 6 | Systeem | Voorkeurenpagina | Toont algemene en relevante rolgebonden voorkeuren. | De gebruiker ziet beheerbare voorkeurvelden. | Verborgen voorkeuren niet vrij bewerkbaar. |
| 7 | Gebruiker | Voorkeurenpagina | Wijzigt één of meer voorkeuren. | De frontend toont de gewijzigde invoer lokaal. | Nog geen servermutatie. |
| 8 | Gebruiker | Voorkeurenpagina | Slaat de voorkeuren op. | De frontend verstuurt de gewijzigde voorkeurenset of veldmutatie naar de backend. | Command bevat geen vrij gekozen UserId. |
| 9 | Systeem | Autorisatieservice | Controleert dat de wijziging voor de ingelogde gebruiker zelf geldt. | Wijzigingen voor andere gebruikers worden geweigerd. | Objectautorisatie server-side. |
| 10 | Systeem | Validatieservice | Valideert voorkeurensleutel, type, waardebereik, beheerbaarheid en rolcontext. | Alleen toegestane waarden worden geaccepteerd. | Onbekende sleutels worden geweigerd. |
| 11 | Systeem | Gebruikersinstellingservice | Slaat geldige wijzigingen op. | De voorkeuren van de gebruiker worden bijgewerkt. | UserSettings / voorkeurwaarden. |
| 12 | Systeem | Logging / events | Registreert de wijziging volgens centraal loggingbeleid. | De mutatie is herleidbaar zonder gevoelige of overbodige data te loggen. | UserPreferenceChanged. |
| 13 | Systeem | Frontend / voorkeurenpagina | Bevestigt dat de voorkeuren zijn opgeslagen. | De gebruiker krijgt een succesmelding of zichtbare bevestiging. | POP-GEN-PROF-PREFERENCES-SAVED. |
| 14 | Systeem | Relevante schermen | Past de voorkeur direct toe wanneer de voorkeur effect heeft op de actuele schermcontext. | Volgende of actuele schermweergave volgt de voorkeur. | Alleen presentatiegedrag. |
| 15 | Gebruiker | OefenHub | Gebruikt de applicatie verder. | Voorkeuren worden toegepast in de contexten waarvoor ze bedoeld zijn. | Geen autorisatiewijziging. |
8. Alternatieve en exceptionele processtromen
| ID | Vanaf stap | Situatie | Systeemgedrag | Popup / melding | Datamutatie |
|---|---|---|---|---|---|
| ALT-001 | 1 | De gebruiker is niet ingelogd of de sessie is verlopen. | Het systeem gebruikt de generieke loginflow en voert geen voorkeurenmutatie uit. | Generieke loginflow. | Geen. |
| ALT-002 | 2 | De sessie kan niet aan een interne gebruiker worden gekoppeld. | De applicatie gebruikt generieke sessie-/accountfoutafhandeling. | Generieke foutafhandeling. | Geen. |
| ALT-003 | 3 | Er bestaan nog geen opgeslagen voorkeurwaarden. | Het systeem toont functionele defaults en maakt pas opslag aan wanneer de gebruiker een wijziging opslaat. | Geen. | Geen bij alleen bekijken. |
| ALT-004 | 4 | De gebruiker heeft een rolcontext niet. | Voorkeuren die uitsluitend voor die rolcontext gelden worden niet getoond en kunnen niet worden opgeslagen. | Geen. | Geen. |
| ALT-005 | 4 | Een voorkeur is voor de gebruiker niet relevant in de actieve context. | De voorkeur wordt niet getoond of blijft zonder effect in die context. | Geen. | Geen. |
| ALT-006 | 6 | Een voorkeur is verborgen of systeemgestuurd. | De voorkeur wordt niet als vrij bewerkbaar veld getoond. | Geen. | Geen. |
| ALT-007 | 8 | De gebruiker sluit de pagina zonder op te slaan. | Niet-opgeslagen wijzigingen worden niet bewaard. | Eventuele generieke browser-/navigatiewaarschuwing buiten domein. | Geen. |
| ALT-008 | 9 | Het command probeert voorkeuren van een andere gebruiker te wijzigen. | De backend weigert het command. | Generieke toegang-geweigerd-afhandeling. | Geen. |
| ALT-009 | 10 | De voorkeurensleutel is onbekend. | De backend weigert de wijziging. | POP-GEN-PROF-PREFERENCES-VALIDATION-FAILED. | Geen. |
| ALT-010 | 10 | De voorkeur is bekend maar niet door de gebruiker beheerbaar. | De backend weigert de wijziging. | POP-GEN-PROF-PREFERENCES-VALIDATION-FAILED. | Geen. |
| ALT-011 | 10 | De waarde heeft een ongeldig type of valt buiten het toegestane bereik. | De backend weigert de waarde en geeft gebruikersgerichte validatie terug. | POP-GEN-PROF-PREFERENCES-VALIDATION-FAILED. | Geen wijziging voor de ongeldige waarde. |
| ALT-012 | 10 | De rolcontext bij de voorkeur is ongeldig of niet van toepassing op de gebruiker. | De backend weigert de wijziging. | POP-GEN-PROF-PREFERENCES-VALIDATION-FAILED. | Geen. |
| ALT-013 | 11 | Opslaan faalt door technische fout of concurrencyprobleem. | De laatst succesvol opgeslagen voorkeurwaarden blijven leidend. | POP-GEN-PROF-PREFERENCES-SAVE-FAILED. | Geen of rollback van gedeeltelijke mutatie. |
| ALT-014 | 11 | Meerdere voorkeuren worden tegelijk opgeslagen en één waarde is ongeldig. | Het systeem verwerkt de wijzigingsset volgens één consistente validatiestrategie: alles weigeren of alleen geldige waarden verwerken, zoals centraal vastgesteld. | POP-GEN-PROF-PREFERENCES-VALIDATION-FAILED. | Afhankelijk van vastgestelde strategie. |
| ALT-015 | 14 | Een gewijzigde voorkeur kan niet direct in het huidige scherm worden toegepast. | De voorkeur is wel opgeslagen en wordt bij de eerstvolgende relevante schermopbouw toegepast. | De gebruiker krijgt terugkoppeling dat de voorkeur is opgeslagen. | UserSettings bijgewerkt. |
| ALT-016 | 14 | Een voorkeur beïnvloedt alleen presentatie in een specifiek overzicht. | Het effect is alleen zichtbaar in dat overzicht en niet applicatiebreed. | Geen. | Geen extra mutatie. |
| ALT-017 | 12 | Logging of eventregistratie faalt zonder dat opslag faalt. | De functionele voorkeurwijziging blijft geldig; niet-kritieke loggingfouten blokkeren de gebruiker niet. | Geen technische details. | UserSettings blijft bijgewerkt. |
9. Business rules
| ID | Regel |
|---|---|
| BR-UC-GEN-PROF-007-001 | Een gebruiker mag uitsluitend eigen voorkeuren bekijken en wijzigen via de normale voorkeurenpagina. |
| BR-UC-GEN-PROF-007-002 | Voorkeuren zijn geen profielgegevens; naam, e-mailadres, wachtwoord, niveau en profielfoto worden niet via deze usecase gewijzigd. |
| BR-UC-GEN-PROF-007-003 | Voorkeuren zijn geen toegankelijkheidsinstellingen; contrast, dyslexielettertype en lettergrootte worden niet via deze usecase beheerd. |
| BR-UC-GEN-PROF-007-004 | Voorkeuren wijzigen uitsluitend presentatiegedrag, persoonlijke bediening of contextuele weergavekeuzes. |
| BR-UC-GEN-PROF-007-005 | Voorkeuren mogen nooit autorisaties, rollen, relaties, niveauautorisaties of de zichtbare gegevensset wijzigen. |
| BR-UC-GEN-PROF-007-006 | Rolgebonden voorkeuren mogen alleen worden getoond en opgeslagen wanneer de gebruiker de betreffende rolcontext heeft. |
| BR-UC-GEN-PROF-007-007 | Een rolgebonden voorkeur verandert uitsluitend de presentatie binnen die rolcontext en niet de onderliggende rechten. |
| BR-UC-GEN-PROF-007-008 | Verborgen of systeemgestuurde voorkeuren worden niet als vrij bewerkbare gebruikersvelden getoond. |
| BR-UC-GEN-PROF-007-009 | De toegestane voorkeurensleutels, typen, waardebereiken en beheerbaarheid zijn code- of configuratiegedreven. |
| BR-UC-GEN-PROF-007-010 | Onbekende voorkeurensleutels of clientmatig toegevoegde velden worden server-side geweigerd. |
| BR-UC-GEN-PROF-007-011 | Voorkeuren worden persistent per gebruiker opgeslagen. Rolgebonden voorkeuren worden aanvullend aan de relevante rolcontext gekoppeld wanneer dat functioneel nodig is. |
| BR-UC-GEN-PROF-007-012 | Bij technische opslagfout blijft de laatst succesvol opgeslagen voorkeurenset leidend. |
| BR-UC-GEN-PROF-007-013 | Voorkeuren mogen direct effect hebben, maar een preference-effect mag nooit als beveiligingscontrole worden gebruikt. |
| BR-UC-GEN-PROF-007-014 | Foutmeldingen tonen geen GUID's, stacktraces, databasefouten, interne sleutelwaarden of onnodige persoonsgegevens. |
Centrale business rules die hierbij horen:
| BusinessRule-ID | Toepassing |
|---|---|
BR-GEN-SEC-001 | Afgeschermde acties vereisen server-side autorisatie en objectcontrole. |
BR-GEN-SEC-002 | Gebruikersinvoer en clientwaarden worden server-side gevalideerd en veilig verwerkt. |
BR-GEN-PROF-010 | Algemene voorkeuren worden functioneel gescheiden van profielgegevens en toegankelijkheidsinstellingen. |
BR-GEN-PROF-011 | Voorkeuren veranderen geen autorisaties of zichtbare gegevensset, maar uitsluitend presentatiegedrag. |
10. Datavalidatie
| Veld / object | Validatie |
|---|---|
| Sessie | Moet server-side aan precies één interne OefenHub-gebruiker gekoppeld zijn. |
Users.Id | Wordt server-side uit de sessie afgeleid en niet uit clientinput. |
| Voorkeurensleutel | Moet bestaan in de centrale set toegestane voorkeuren. |
| Voorkeurcategorie | Moet behoren tot algemene voorkeuren of een toegestane rolgebonden voorkeur; profiel en toegankelijkheid vallen buiten deze usecase. |
| Beheerbaarheid | De voorkeur moet door de gebruiker zelf beheerbaar zijn. |
| Verborgen voorkeur | Mag niet via de gewone voorkeurenpagina worden gewijzigd. |
| Rolcontext | Moet aanwezig en geldig zijn wanneer de voorkeur rolgebonden is. |
| Waardetype | Moet overeenkomen met het centraal vastgelegde type, zoals boolean, enum, tekst, integer of sorteerkeuze. |
| Enumwaarde | Moet voorkomen in de centraal toegestane waardenlijst. |
| Tekstwaarde | Moet binnen lengte- en karaktergrenzen vallen wanneer tekstuele voorkeuren worden toegestaan. |
| Sorteervoorkeur | Mag alleen toegestane sorteercriteria en sorteerrichtingen bevatten. |
| Naamweergavevoorkeur | Mag alleen toegestane naamrepresentaties bevatten en mag geen extra persoonsgegevens ontsluiten. |
| Wijzigingsset | Moet consistent gevalideerd worden; onbekende of ongeldige velden mogen niet stilzwijgend als geldige voorkeur worden opgeslagen. |
| Logging | Geen wachtwoorden, tokens, secrets, gevoelige headers, ruwe payloads, ExternalId of onnodige persoonsgegevens loggen. |
| Foutmelding | Gebruikersgericht formuleren; geen GUID's, stacktraces, databasefouten of interne sleutelwaarden tonen. |
11. Datamutaties en events
| Stap | Type | Entiteit / event | Mutatie |
|---|---|---|---|
| 2 | Read | sessiecontext | Interne gebruiker uit sessie bepalen. |
| 3 | Read | voorkeurendefinities | Beschikbare algemene voorkeuren bepalen. |
| 4 | Read | rolcontext | Relevante rolgebonden voorkeuren bepalen. |
| 5 | Read | UserSettings / voorkeuren | Bestaande voorkeurwaarden of defaults ophalen. |
| 6 | UI-rendering | voorkeurenreadmodel | Voorkeurenpagina tonen zonder persistente voorkeurmutatie. |
| 8 | Command | UpdateOwnPreferences | Gewijzigde voorkeurenset of veldmutatie aanbieden aan backend. |
| 9 | Autorisatie | objectcontrole eigen gebruiker | Controleren dat alleen eigen voorkeuren worden gewijzigd. |
| 10 | Validatie | voorkeurensleutel, type, waarde en context | Controleren dat de wijziging toegestaan is. |
| 11 | Update | UserSettings / voorkeuren | Geldige voorkeurwaarden opslaan. |
| 12 | Event / logging | UserPreferenceChanged | Registreren dat een voorkeur is gewijzigd. |
| ALT-009/010/011/012/014 | Event / logging | UserPreferenceChangeRejected | Geweigerde wijziging veilig registreren volgens centraal loggingbeleid. |
| ALT-013 | Event / logging | UserPreferenceChangeFailed | Technische opslagfout veilig registreren volgens centraal loggingbeleid. |
12. Geen datamutaties
| Entiteit | Reden |
|---|---|
Users profielnaamvelden | Naamgegevens worden via profielgegevens wijzigen beheerd. |
| E-mailadres / wachtwoord / Keycloak-gegevens | Identity-providergegevens vallen buiten deze usecase. |
| Profielfoto | Profielfoto kiezen is een aparte usecase. |
| Actief niveau | Niveau wijzigen valt onder profielgegevens of verplicht niveau instellen. |
| Toegankelijkheidsinstellingen | Contrast, dyslexielettertype en lettergrootte vallen onder toegankelijkheidsusecases. |
| Technische toegankelijkheidscookie | Cookie-synchronisatie valt onder UC-GEN-PROF-006. |
| Rollen en autorisaties | Voorkeuren wijzigen geen rechten. |
| Relaties | Voorkeuren leggen geen relatie of ontkoppeling vast. |
| Niveauautorisaties | Voorkeuren bepalen geen onderwijscontexttoegang. |
| Oefenruns en voortgang | Voorkeuren wijzigen geen oefendata. |
| Berichten, meldingen en systeemberichten | Voorkeuren maken geen berichten of meldingen aan. |
| Popupdefinities | Er worden geen popuprecords aangemaakt of gewijzigd. |
13. State diagram
Niet van toepassing. Algemene voorkeuren hebben geen zelfstandig statusmodel. De relevante toestand is afgeleid uit de opgeslagen waarde, de voorkeurendefinitie en de rolcontext waarin de voorkeur wordt toegepast.
14. Decision flow
15. Data lifecycle diagram
16. Sequence diagrammen
16.1 Voorkeuren bekijken
16.2 Voorkeur wijzigen
17. Popupverwijzingen
| PopupKey | Moment | Doel |
|---|---|---|
POP-GEN-PROF-PREFERENCES-SAVED | Na succesvol opslaan van voorkeuren. | Bevestigen dat de voorkeuren zijn opgeslagen. |
POP-GEN-PROF-PREFERENCES-VALIDATION-FAILED | Bij onbekende sleutel, ongeldig type, ongeldig waardebereik, niet-beheerbare voorkeur of ongeldige rolcontext. | Gebruiker melden dat de voorkeur niet opgeslagen kan worden. |
POP-GEN-PROF-PREFERENCES-SAVE-FAILED | Bij technische of transactionele opslagfout. | Gebruiker melden dat opslaan niet is gelukt en dat de laatst opgeslagen waarden leidend blijven. |
18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification
| Doeldocument | Afleiding |
|---|---|
| Functioneel Ontwerp | De pagina Voorkeuren is functioneel gescheiden van Profiel en Toegankelijkheid. De pagina toont alleen eigen beheerbare algemene voorkeuren en relevante rolgebonden voorkeuren. |
| Functioneel Ontwerp | Voorkeuren beïnvloeden presentatiegedrag, persoonlijke bediening of contextuele weergavekeuzes, maar wijzigen nooit autorisaties of zichtbare gegevensset. |
| Functioneel Ontwerp | Verborgen of systeemgestuurde voorkeuren, zoals waarschuwingen die vanuit een specifieke flow worden ingesteld, worden niet automatisch als vrij bewerkbaar veld op de voorkeurenpagina getoond. |
| Functioneel Ontwerp | Rolgebonden voorkeuren worden alleen zichtbaar wanneer de gebruiker die rolcontext heeft en de voorkeur in die context betekenis heeft. |
| Technisch Ontwerp: identiteit, authenticatie en rolcontext, autorisatie, Blazor frontend | Voorkeurensleutels, gegevenstypen, waardebereiken, beheerbaarheid en rolcontextkoppeling moeten centraal en server-side valideerbaar zijn. |
| Technisch Ontwerp: identiteit, authenticatie en rolcontext, autorisatie, Blazor frontend | De opslag hoort bij het gebruikersinstellingendomein, maar moet functioneel onderscheid kunnen maken tussen profielgegevens, toegankelijkheid en algemene voorkeuren. |
| Technisch Ontwerp: identiteit, authenticatie en rolcontext, autorisatie, Blazor frontend | Voorkeuren moeten zo worden toegepast dat zij niet als autorisatie- of beveiligingslaag gebruikt kunnen worden. |
| Technisch Ontwerp: identiteit, authenticatie en rolcontext, autorisatie, Blazor frontend | Logging mag voorkeurwijzigingen herleidbaar maken zonder gevoelige waarden, tokens, ExternalId of onnodige persoonsgegevens te loggen. |
| Software Requirements Specification | De gebruiker moet eigen voorkeuren kunnen bekijken en beheerbare voorkeuren kunnen wijzigen. |
| Software Requirements Specification | Het systeem moet onbekende, ongeldige of niet-beheerbare voorkeurmutaties server-side weigeren. |
| Software Requirements Specification | Het systeem moet borgen dat voorkeuren geen rollen, autorisaties, relaties, niveauautorisaties of zichtbare gegevensset wijzigen. |
| Software Requirements Specification | Het systeem moet de laatst succesvol opgeslagen voorkeurenset blijven gebruiken wanneer een opslagpoging mislukt. |
19. SRS-trace
Deze usecase bevat geen normatieve requirementtekst. De centrale eis en acceptatiecriteria staan in de SRS; onderstaande tabel koppelt de usecase-afleiding alleen aan centrale SRS-*- en AC-*-items.
| Usecase-afleiding | Dekt | Usecasecontext |
|---|---|---|
REQ-UC-GEN-PROF-007-001 | SRS-RDM-001 SRS-RDM-008 SRS-ACC-003 AC-RDM-001 AC-RDM-008 AC-ACC-003 | Een ingelogde gebruiker een voorkeurenpagina bieden voor eigen algemene voorkeuren |
REQ-UC-GEN-PROF-007-002 | SRS-ACC-003 SRS-ACC-005 SRS-RDM-008 SRS-NFR-ACC-001 AC-ACC-003 AC-ACC-005 AC-RDM-008 AC-NFR-ACC-001 | Profielgegevens en toegankelijkheidsinstellingen functioneel gescheiden houden van algemene voorkeuren |
REQ-UC-GEN-PROF-007-003 | SRS-AUTH-001 SRS-ACC-003 SRS-RDM-008 AC-AUTH-001 AC-ACC-003 AC-RDM-008 | Eigen voorkeurwaarden ophalen op basis van de server-side sessiecontext |
REQ-UC-GEN-PROF-007-004 | SRS-ACC-003 SRS-RDM-008 AC-ACC-003 AC-RDM-008 | Functionele defaults tonen wanneer nog geen voorkeurwaarde is opgeslagen |
REQ-UC-GEN-PROF-007-005 | SRS-AUTH-001 SRS-ACC-003 SRS-RDM-008 AC-AUTH-001 AC-ACC-003 AC-RDM-008 | Rolgebonden voorkeuren alleen tonen wanneer de gebruiker de betreffende rolcontext heeft |
REQ-UC-GEN-PROF-007-006 | SRS-ACC-003 SRS-RDM-008 AC-ACC-003 AC-RDM-008 | Verborgen of systeemgestuurde voorkeuren niet als vrij bewerkbare gebruikersvelden tonen |
REQ-UC-GEN-PROF-007-007 | SRS-ACC-003 AC-ACC-003 | Bij opslaan controleren dat de wijziging voor de ingelogde gebruiker zelf geldt |
REQ-UC-GEN-PROF-007-008 | SRS-AUTH-001 SRS-ACC-003 SRS-RDM-008 AC-AUTH-001 AC-ACC-003 AC-RDM-008 | Voorkeurensleutels server-side valideren tegen de centrale set toegestane voorkeuren |
REQ-UC-GEN-PROF-007-009 | SRS-AUTH-001 SRS-ACC-003 SRS-RDM-008 AC-AUTH-001 AC-ACC-003 AC-RDM-008 | Voorkeurwaarden server-side valideren op gegevenstype en waardebereik |
REQ-UC-GEN-PROF-007-010 | SRS-AUTH-001 SRS-ACC-003 SRS-RDM-008 AC-AUTH-001 AC-ACC-003 AC-RDM-008 | De rolcontext van rolgebonden voorkeuren server-side valideren |
REQ-UC-GEN-PROF-007-011 | SRS-AUTH-001 SRS-ACC-003 SRS-RDM-008 AC-AUTH-001 AC-ACC-003 AC-RDM-008 | Onbekende voorkeurensleutels weigeren |
REQ-UC-GEN-PROF-007-012 | SRS-AUTH-001 SRS-ACC-003 SRS-RDM-008 SRS-ADM-001 AC-AUTH-001 AC-ACC-003 AC-RDM-008 AC-ADM-001 | Niet-gebruikersbeheerbare voorkeuren weigeren wanneer deze via clientinput worden aangeboden |
REQ-UC-GEN-PROF-007-013 | SRS-ACC-003 SRS-RDM-008 AC-ACC-003 AC-RDM-008 | Geldige voorkeurwijzigingen persistent per gebruiker opslaan |
REQ-UC-GEN-PROF-007-014 | SRS-ACC-003 SRS-RDM-008 AC-ACC-003 AC-RDM-008 | Opgeslagen voorkeuren toepassen in de contexten waarvoor zij functioneel bedoeld zijn |
REQ-UC-GEN-PROF-007-015 | SRS-AUTH-001 SRS-ACC-003 SRS-RDM-008 SRS-REL-001 SRS-CAT-001 AC-AUTH-001 AC-ACC-003 AC-RDM-008 AC-REL-001 AC-CAT-001 | Borgen dat voorkeuren geen autorisaties, rollen, relaties, niveauautorisaties of zichtbare gegevensset wijzigen |
REQ-UC-GEN-PROF-007-016 | SRS-ACC-003 SRS-RDM-008 AC-ACC-003 AC-RDM-008 | Bij opslagfouten de laatst succesvol opgeslagen voorkeurenset blijven gebruiken |
REQ-UC-GEN-PROF-007-017 | SRS-ACC-003 AC-ACC-003 | De gebruiker een begrijpelijke terugkoppeling geven bij succesvolle opslag |
REQ-UC-GEN-PROF-007-018 | SRS-ACC-003 AC-ACC-003 | De gebruiker een begrijpelijke terugkoppeling geven bij validatiefouten |
REQ-UC-GEN-PROF-007-019 | SRS-ACC-003 AC-ACC-003 | De gebruiker een begrijpelijke terugkoppeling geven bij technische opslagfouten |
REQ-UC-GEN-PROF-007-020 | SRS-ACC-003 SRS-TIC-002 SRS-NFR-SEC-001 SRS-NFR-PRV-001 AC-ACC-003 AC-TIC-002 AC-NFR-SEC-001 AC-NFR-PRV-001 | In foutmeldingen geen GUID's, stacktraces, databasefouten, tokens, ExternalId of onnodige persoonsgegevens tonen |
REQ-UC-GEN-PROF-007-021 | SRS-ACC-003 SRS-RDM-008 SRS-NFR-SEC-001 AC-ACC-003 AC-RDM-008 AC-NFR-SEC-001 | Voorkeurwijzigingen veilig kunnen loggen of registreren zonder gevoelige waarden onnodig vast te leggen |
REQ-UC-GEN-PROF-007-022 | SRS-ACC-002 SRS-ACC-003 SRS-RDM-008 AC-ACC-002 AC-ACC-003 AC-RDM-008 | Bij verlopen sessie de generieke loginflow gebruiken en geen voorkeurmutatie uitvoeren |
REQ-UC-GEN-PROF-007-023 | SRS-AUTH-001 SRS-ACC-003 SRS-RDM-008 AC-AUTH-001 AC-ACC-003 AC-RDM-008 | Bij ontbrekende autorisatie de generieke toegang-geweigerd-afhandeling gebruiken en geen voorkeurmutatie uitvoeren |