...
Voor de applicatie is ook een deployment diagram opgesteld met daarin alle servers waar de applicatie op komt te draaien. Hierbij zijn een aantal design keuzes gemaakt die in het kopje eronder staan verantwoord.
...
Decision | Description |
---|---|
Problem/Issue | Backend code moet zoveel mogelijk losgekoppeld worden en los van elkaar werken. |
Decision | Er is besloten om een lagen-structuur in de backend aan te brengen, waarbij alle features worden opgedeeld over resources, services, dto's, dao's en data mappers. |
Alternatives | In plaats van de huidige lagen-structuur, had er gekozen kunnen worden om bijvoorbeeld alle code die bij een feature hoort bij elkaar te plaatsen. Dus bijvoorbeeld een folder voor alle componenten die te maken hebben met het reserveren van een werkplek. |
Arguments | De huidige lagen-structuur geeft duidelijk overzicht van welke componenten in de backend afhankelijk zijn van welke andere componenten. Dit maakt het makkelijker om bestaande code te hergebruiken over meerdere features, en om te garanderen dat de afhankelijkheid binnen lagen klein blijft. |
Decision | Description |
---|---|
Problem/Issue | Er moest een framework gekozen worden om de backend in te maken. |
Decision | Er is gekozen om Spring Boot te gebruiken voor de backend. |
Alternatives | Het alternatief zou zijn om bijvoorbeeld weer JAX RS te gebruiken net als bij DEA. |
Arguments | Spring Boot is een volledig framework wat makkelijk te leren en gebruiken is. Ook was de voorkeur vanuit de opdracht dat Spring Boot zou worden gebruikt. |
Decision | Description |
---|---|
Problem/Issue | Er moet data in de vorm van JSON worden opgehaald uit- en gestuurd naar de front-end. |
Decision | Er is besloten om de communicatie met de front-end zoveel mogelijk af te handelen via DTO's. Dit betekend dat er bijvoorbeeld een DTO bestaat om een verlof aanvraag naar de front-end van het verlof overzicht te sturen, en ook een DTO voor de verlofkeuring die vanuit de front-end naar de backend wordt gestuurd (in dit geval wordt er JSON opgestuurd die automatisch naar de gespecificeerde DTO wordt omgezet). |
Alternatives | In plaats van DTO's zou het mogelijk zijn om de JSON code zelf op te bouwen in de backend. Of om bijvoorbeeld meer path-variabelen te gebruiken. |
Arguments | Zelf de JSON opbouwen zou een stuk foutgevoeliger zijn, omdat op die manier zelf de syntax moet worden geschreven. Met een DTO wordt dit automatisch gedaan en is het alleen van belang dat de naamgeving overeenkomt tussen de front-end en de backend. |
...
Decision | Description |
---|---|
Problem/Issue | Een reis kan worden gedeclareerd met twee locaties, waarbij de afstand door het systeem wordt berekend. Het kan ook worden gedeclareerd met de kilometers, en dan hoeft er niks te worden berekend. |
Decision | Er is besloten om beide methodes te ondersteunen, afhankelijk van het reistype. Zo wordt een OV reis aan de hand van een afstand gedeclareerd, en voor een reis tussen werklocaties kan door de werknemer gekozen worden of hij/zij de afstand wil declareren, of de locaties. |
Alternatives | Het alternatief was om de gebruiker niet van een keuze te voorzien, en bijvoorbeeld altijd de afstand door het systeem te laten berekenen. |
Arguments | Er is besloten om beide methodes te ondersteunen, omdat de automatische berekening gebruikersvriendelijk en betrouwbaar is. Aan de andere kant was in communicatie van de opdrachtgever naar voren gekomen dat ook het declareren aan de hand van kilometers gewenst is. Daarom is gekozen om het allebei te implementeren. |
...