1. Introduction
1.1. Overall Description
Het HR portaal die voor JDI Smart Web Applications gerealiseerd wordt, dient het huidige verlof-, bezetting- en reiskostendeclaratie systeem efficiënter te maken. Het hoofddoel van de beoogde software is om over te stappen van losse documenten, naar een centraal systeem dat al deze werknemersinformatie zal bijhouden. Het voordeel van een centraal systeem is dat de huidige processen automatisch worden, waardoor de developers niet zelf de product owner en hr hoeven te e-mailen. Het gaat hierbij om informatie voor ongeveer 20 werknemers, en 10 documenten. Team Perlman gaat het nieuwe portaal volledig bouwen, aangezien er nog geen systeem bestaat (alleen losse spreadsheats met de hr informatie erop). De grootste prioriteit van het HR portaal ligt bij het registreren van de bezetting en declaraties, en er zouden in de toekomst nieuwe flows toegevoegd moeten kunnen worden. Lagere prioriteit ligt bij de implementatie van Slack omdat dit ook door een ander ontwikkelteam wordt onderzocht.
1.2. User Classes and Characteristics
Hier volgen de actors/user classes die een rol hebben binnen het hr portaal.
1.2.1.1. Werknemer
De werknemer is de hoofdgebruiker van het nieuwe portaal. Werknemers gebruiken het portaal om verlof aan te vragen, om hun werkplek aan te geven en om hun reiskostenvergoeding te declareren. Voor het verlof kan een aanvraag worden ingediend die terechtkomt bij de werkgever.
1.2.1.2. Werkgever
De werkgever heeft alle rechten en mogelijkheden die van toepassing zijn op de werknemer, en daarbij kan de werkgever ook het portaal beheren. De werkgever kan de werkplekken en reiskosten inzien, en heeft een overzicht van alle werknemers. Ook kan de werkgever verlofaanvragen van werknemers goed- of afkeuren. De werkgever heeft ook toegang tot alle CRUD operaties in het portaal.
1.3. Operating Environment
Vue.js, mysql en spring boot ondersteunen allemaal de meest gebruikte operating systems zoals Windows en Linux. Het doel is hierdoor om het portaal op alle moderne operating systems en versies (vanaf 2012) te ondersteunen, zodat werknemers en werkgevers het portaal vanuit hun eigen devices kunnen bereiken. Het portaal heeft verder ook geen externe afhankelijkheden en is niet afhankelijk van de bestaande JDI website. De enige limitatie is dat het portaal alleen op desktop wordt ondersteund, dit betekent dat het niet goed bestuurbaar zal zijn op mobiele apparaten. Tijdens de duur van het project is alles locaal gedraait op de systemen van de developers, dit bestaat uit een mix van windows 10, 11 en mac os. De backend heeft gedraait via inteliJ, aangezien het een springboot applicatie is, is het erg makkelijk om deze te te runnen.
1.4. Design and Implementation Constraints
Het portaal zal gebruikmaken van vue.js en java springboot, dus alle Perlman developers moeten deze tools beheersen. Voor de achterliggende database wordt gebruikgemaakt van MySQL. Het portaal zal niet speciaal voor mobiele apparaten beschikbaar worden dus de developers mogen geen functionaliteit implementeren die afhankelijk is van een mobiele OS.
1.5. Product Functions
Het HR-portaal dient de huidige handmatige documentatie van JDI te vervangen. De hoofd functionaliteit van de applicatie is: het reserveren van een beschikbare werkplek; een declaratie kunnen maken op basis van de afstand tussen de gebruikers huis adres en het kantoor, welke berekend wordt met een API; en verlof aanvragen doen en deze goed laten keuren door een product owner en lead link.
2. Domain Model
Voor het HR-portaal is er een domein model opgesteld om het domein waarin we werken in kaart te brengen, deze ziet er uit als volgt:
2.1. Glossary
In deze glossary volgt een beschrijving van alle concepten in bovenstaand model.
2.1.1. Werkplek
Een werkplek is een plek binnen JDI waar werknemers hun werk kunnen doen. Een werkplek heeft een code ter identificatie. Ook heeft de werkplek een grootte, dit geeft aan hoeveel werknemers er in de plek passen.
De werkplek heeft een locatie, waarmee aangegeven wordt waar de werkplek zich bevindt.
2.1.2. Locatie
Zoals de naam al zegt, is een locatie een locatie. Een locatie heeft een naam en een locatie bevindt zich in een stad.
2.1.3. Route
Een route is een route tussen twee locaties. Van een route wordt een afstand bijgehouden, deze afstand wordt berekend door een API.
2.1.4. Werknemer
Een werknemer heeft een set van inloggegevens (bestaande uit een gebruikersnaam en een wachtwoord) waarmee hij/zij bij het HR portaal kan inloggen. Een werknemer heeft ook nog NAW (naam, adres, woonplaats) gegevens. Verder heeft een werknemer ook een aantal uren verlof tot zich. Ook heeft de werknemer 3 waardes om bij te houden of ze wel of niet een beheerder, lead link of product owner zijn.
2.1.5. Werktijden
Werktijden houdt bij op welke tijden een werknemer werkt en op welke dag dit is.
2.1.6. Werknemer op werkplek
Werknemer op werkplek houdt bij op welke werkplek een werknemer zich bevind op een datum.
2.1.7. Tokens
Tokens houden de tokens bij van een geslaagde inlog poging van een gebruiker. Hiervan wordt ook een expires bijgehouden.
2.1.8. Reiskosten declaratie
Reiskosten declaratie hoort bij een werknemer die een declaratie heeft aangemaakt. Hiervan word bijgehouden voor welke datum deze declaratie geld, voor welke afstand dit was, het bedrag dat vergode wordt, een eventuele opmerking en een optionele bijlage die geupload kan worden. De afstand van een declaratie wordt berekend door een API en het bedrag wordt berekend aan de hand van de afstand en het type declaratie dat is aangemaakt.
2.1.9. Tarief
Tarief houdt bij welk bedrag hoort bij welk type.
2.1.10. Afstand bereken systeem
Voor de reiskosten declaratie is een systeem beschikbaar om de afstand van een reis te berekenen. De reiskosten declaratie maakt gebruik van dit systeem om de afstand berekening door de externe API uit te laten voeren.
2.1.11. Afstand API
Het bovenstaande afstand bereken systeem is gekoppeld aan een externe API die de afstanden terug kan geven. Deze API heeft route informatie om op die manier de afstand te kunnen bepalen.
2.1.12. Verlof aanvraag
Een verlof aanvraag is een manier voor werknemers om verlof aan te vragen. Iedere aanvraag is door 1 werknemer ingediend. Bij een aanvraag hoort een aanvraag code, waarmee de aanvraag geïdentificeerd kan worden. De aanvraag zelf wordt opgenomen als 'aanvraag'. Na het indienen van de aanvraag gaat deze naar Slack, voor de beoordeling.
3. Use-case Model
Na overleg met de opdrachtgever zijn er een aantal use cases opgesteld en fully dressed uitgewerkt in het volgende hoofdstuk. Hierin is bij iedere use case de happy flow en alternative flows opgenomen. De CRUD use cases zijn niet opgenomen in de fully dressed uitwerkingen van de use cases aangezien dit alleen maar gaat over het beheren van bepaalde aspecten in de applicatie.
4. Use-case Descriptions
4.1. Use case 1: Handmatig declareren reiskosten
4.1.1. Fully-dressed use case description
Primary actor: Werknemer |
|||||||
Stakeholders and Interests: Werkgever |
|||||||
Brief description: Werknemer geeft voor een reis de gegevens op en hiermee wordt een nieuwe reis declaratie gemaakt. |
|||||||
Preconditions: De werknemer is ingelogd. |
|||||||
Postconditions (Success Guarantee): Declaratie is in het declaratie overzicht terug te zien. |
|||||||
Main Success Scenario (Basic Flow): |
|||||||
Actor Action |
System Responsibility |
||||||
1 | Werknemer wil reis declareren. | 2 | Systeem vraagt wat voor type reis het was. | ||||
3 | Werknemer geeft het type reis aan. | 4 | Systeem kijkt naar het type om de benodigde gegevens te vragen. | ||||
5 | Systeem vraagt declaratie gegevens aan de werknemer. | ||||||
6 | Werknemer vult gegevens over de reis in. | 7 | Systeem verwerkt de declaratie. | ||||
Extensions (Alternative Flow): |
|||||||
|
5a | Reistype die door de werknemer ingevuld is, is niet valide. Ga terug naar 3. | |||||
6a | Werknemer vult onvolledige of onjuiste gegevens in. | 7a | Systeem geeft een bericht dat de gegevens niet in orde zijn. Ga terug naar 6. |
4.1.2. System Sequence Diagram
4.2. Use case 2: Invullen flexwerkplek schema
4.2.1. Fully-dressed use case description
Primary actor: Werknemer |
|||||||
Stakeholders and Interests: Werkgever |
|||||||
Brief description: Werknemer geeft aan welke dagen de werknemer op kantoor of thuis gaat werken. Bij het invullen van de dagen op kantoor geeft de werknemer aan op welke werkplek er wordt gewerkt. Na het invullen wordt het schema bijgewerkt. |
|||||||
Preconditions: Werknemer is ingelogd op het portaal. |
|||||||
Postconditions (Success Guarantee): Bezetting is ingevuld en het schema is bijgewerkt door het systeem. |
|||||||
Main Success Scenario (Basic Flow): |
|||||||
Actor Action |
System Responsibility |
||||||
1 | Werknemer wilt bezetting doorgeven. | 2 | Systeem geeft een overzicht van de werkplekken (voor de huidige week) | ||||
3 | Werknemer geeft aan op welke dag en welke plek de werknemer gaat werken. | 4 | Systeem werkt het schema bij. | ||||
5 | Systeem geeft aan dat het schema bijgewerkt is. | ||||||
Extensions (Alternative Flow): |
|||||||
3a | Werknemer wilt het schema voor een andere week invullen, werknemer selecteert geeft aan voor welke week het schema ingevuld gaat worden. Ga terug naar stap 2. | 4a |
Werknemer geeft een ongeldige werkplek door, systeem geeft een foutmelding. Ga terug naar stap 3. |
||||
3b | Werknemer geeft niks door, eind use case. |
4.2.2. System Sequence Diagram
4.3. Use case 3: Aanvragen verlof
4.3.1. Fully-dressed use case description
Primary actor: Werknemer |
|||||||
Stakeholders and Interests: Werkgever |
|||||||
Brief description: De werknemer vult in het verlofformulier in welke datum het verlof begint en tot wanneer het verlof duurt, ook geeft deze een reden voor het verlof aan. Als alles goed is wordt het opgestuurd naar een prodcuct owner en/of lead link. |
|||||||
Preconditions: Werknemer is ingelogd. |
|||||||
Postconditions (Success Guarantee): Verlof is aangevraagd en opgeslagen in het systeem |
|||||||
Main Success Scenario (Basic Flow): |
|||||||
Actor Action |
System Responsibility |
||||||
1 | Werkenemer wil verlof aanvragen. | 2 | Systeem geeft de gebruiker het verlof aanvraag formulier. | ||||
3 | Werknemer vult de dagen in wanneer het verlof zal plaatsvinden. | 4 | Systeem slaat de aanvraag op. | ||||
Extensions (Alternative Flow): |
|||||||
3a |
Werknemer neemt een paar uur verlof op, werknemer geeft ook de tijden aan wanneer het verlof plaats gaat vinden. | 4a | Systeem error, ga terug naar stap 2. |
4.4. Use case 4: Beoordelen verlof
4.4.1. Fully-dressed use case description
Primary actor: Leadlink of Product owner. |
||||||
Stakeholders and Interests: Werknemer. |
||||||
Brief description: Primary actor beoordeelt verlof aanvraag met een eventuele onderbouwing. |
||||||
Preconditions: Er is een verlofaanvraag aanwezig, actor heeft voldoende rechten, actor is ingelogd. |
||||||
Postconditions (Success Guarantee): Beoordeling opgeslagen in het systeem. |
||||||
Main Success Scenario (Basic Flow): |
||||||
Actor Action |
System Responsibility |
|||||
1 | Actor wil een verlof aanvraag beoordelen. | 2 | Systeem toont het overzicht met openstaande verlofaanvragen. | |||
3 | Actor selecteert de aanvraag die beoordeelt gaat worden. | 4 | Systeem toont de popup met de verlofdata. | |||
5 | Actor geeft aan of het verlof wordt goed- of afgekeurd. | 6 | Systeem verwerkt de beoordeling en slaat de gegevens op. |
5. Other functional requirements
Code |
Description |
---|---|
OFR1 | Het systeem maakt elke dag automatisch declaraties voor alle gebruikers op basis van hun ingevulde werkplekken. |
OFR2 |
Het systeem berekent voor elke werknemer de afstand van hun huis naar werk en slaat deze op als een route om API requests minimaal te houden. |
6. User stories
Story | Use Case | Omschrijving |
---|---|---|
1 | UC2 | Als werkgever wil ik dat werknemers kunnen aangeven op welke flexwerkplek bezet wordt, zodat er een overzicht is van beschikbare werkplekken. |
2 | UC1 | Als werknemer wil ik de mogelijkheid om reiskosten te declareren, zodat ik een reiskostenvergoeding krijg. |
3 | UC3 | Als werknemer wil ik verlof aan vragen zodat ik vrije dagen kan opnemen (op een digitale manier). |
4 | UC4 | Als werkgever wil ik de optie hebben om een verlof verzoek van een werknemer goed/af te keuren. |
5 | UC4 | Als werkgever wil ik een Slack koppeling zodat ik werknemers een bericht met goed/afkeuring kan sturen voor het aangevraagde verlof. |
6 | UC5 | Als zowel werkgever als werknemer wil ik een overzicht hebben van alle werkplekken met alle werknemers die zich daarop hebben ingeschreven. |
7 | UC6 | Als werkgever wil ik de optie hebben om werknemers te beheren zodat ik nieuwe werknemers kan aannemen, gegevens kan veranderen of oude werknemers kan verwijderen. |
8 | UC7 | Als werkgever wil ik de optie hebben werkplekken te beheren zodat ik niewe werplekken kan toevoegen, gegevens kan veranderen of oude kan verwijderen. |
7. Non-functional Requirements
Uitgaand van de FURPS+ methode, zijn er een aantal categorieën waaronder de non-functionele requirements opgedeeld kunnen worden. Het gaat om;
- Usability
- Reliability
- Performance
- Supportability
- Security
De F van functionality is hierbij expres weggelaten, omdat dit functionele requirements zijn, dus deze horen niet in dit onderdeel. Hieronder volgen overzichten met per categorie de requirements die daarbij horen.
7.1. Usability
Code |
Description |
---|---|
NFR1 | Het portaal moet vanaf de eerste keer direct duidelijk zijn en navigeerbaar voor gebruikers. Acties zoals het indienen van een verlof aanvraag moeten binnen een paar minuten te leren zijn. |
NFR2 | Het systeem moet bruikbaar zijn voor mensen met kleurenblindheid. Dit betekent dat tekst en knoppen voldoende contrast hebben, zodat het voor iedereen leesbaar is. |
NFR3 | Als gebruikers iets invullen wat niet mogelijk is, of vergeten een veld in te vullen, moet dit via een duidelijke error worden aangegeven. |
NFR4 | Icoontjes en afbeeldingen moeten duidelijk en onmiddellijk te begrijpen zijn. Icoontjes moeten dus niet te abstract zijn. |
NFR5 | Voor alle functionaliteit moet het mogelijk zijn om het ongedaan te maken. |
NFR6 | Er moet een logische flow tussen tools en pagina's bestaan. |
7.2. Reliability
Code |
Description |
---|---|
NFR7 | Iedere werknemer en werkgever moet toegang hebben tot het portaal zolang ze bij JDI werken. |
NFR8 | Aan de hand van constraints moet inconsistentie in de data voorkomen worden. |
7.3. Performance
Code |
Description |
---|---|
NFR9 | Responstijd voor iedere pagina is maximaal 1 seconde. |
NFR10 | De database queries moeten binnen 0.5 seconde klaar zijn. |
NFR11 | Als nieuwe gegevens worden opgegeven (werkplek registratie, verlof aanvraag, etc), mag het niet langer dan 0.5 seconde duren voordat de gebruiker een confirmatie terugkrijgt. |
7.4. Supportability
Code |
Description |
---|---|
NFR12 | Issues die ervoor zorgen dat het portaal niet goed beschikbaar is moeten binnen 1 werkdag opgelost kunnen worden. |
7.5. Security
Code |
Description |
---|---|
NFR13 | Persoonsgegevens van werknemers zijn alleen inzichtelijk voor werkgevers en niet voor andere werknemers. |
NFR14 | Wachtwoorden worden gehashed, zodat ieder wachtwoord alleen bekend is bij de gebruiker waar die bijhoort. |
NFR15 | Het HR Portaal mag geen code uitvoeren die in de door gebruiker ingevoerde data staat. |
NFR16 | De 'beheren werknemers' tools moeten alleen beschikbaar zijn voor ingelogde werkgevers. |
NFR17 | Beoordelen van verlofaanvragen moet alleen beschikbaar zijn voor ingelogde werkgevers. |
NFR18 | De database moet alleen via het portaal te bereiken zijn, dus mensen die geen toegang hebben tot het hr portaal hebben ook geen toegang tot de database. |
NFR19 | Werknemers mogen alleen het portaal gebruiken, en moeten geen toegang hebben tot de achterliggende code. |
8. User interface sketches
Bij het uitmeten en overeenkomen van bepaalde functionaliteit wilden we dat er zo realistisch mogelijke interface schetsen gemaakt werden. Hierbij hielden we rekening met het feit dat de schetsen zo snel mogelijk gemaakt moesten worden.
De schetsen zijn ontworpen in Figma, een ontwerptool die snel prototypen mogelijk maakt. Ook heeft het een functie om minimale routing toe te laten, zodat je bepaalde pagina's kan doorlopen op de schetsen.
Er zijn uiteindelijk schetsen gemaakt voor alle grote user stories, en hier zijn meerdere ideeën voor uitgewerkt zodat er gekozen kan worden uit de beste ontwerpen.
Hieronder hebben we een paar van onze schetsen meegenomen. De rest is te vinden op onze figma pagina: https://www.figma.com/file/bZ1V3uCUNXimto2wN58CuT/JDI-Oose
User | Edits | Comments | Last Update |
---|---|---|---|
Gino Janssen | 27 | 11 | 876 days ago |
Thijmen Schoonbeek | 27 | 5 | 878 days ago |
Connor Newton | 18 | 43 | 878 days ago |
Auto Mation | 12 | 0 | 942 days ago |
Niels Hoeven, van der | 8 | 5 | 877 days ago |
Tobias Feld | 2 | 0 | 875 days ago |
1 Comment
Connor Newton
wat of dat?
Add Comment