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



UserEditsCommentsLast Update
Gino Janssen 2711876 days ago
Thijmen Schoonbeek 275878 days ago
Connor Newton 1843878 days ago
Auto Mation 120942 days ago
Niels Hoeven, van der 85877 days ago
Tobias Feld 20875 days ago

  • No labels

1 Comment

Write a comment…