Introductie
Algemene beschrijving
Dit document beschrijft de ontwerpspecificaties voor een indelingsprogramma voor Schaakvereniging UVS. Het doel van dit programma is om alles van een schaakseizoen te beheren. In een schaakseizoen kunnen verschillende competitie gehouden worden, deze competities in een seizoen staan niet vast. Per competitie zijn er rondes die moeten worden ingedeeld. Deze rondes hebben meerdere spelers waarvan de resultaten ook moeten worden verwerkt tot een ranglijst na elke ronde. Deze gegevens moeten ook worden geüpload naar de WordPress-website van Schaakvereniging UVS.
Userstories
Algemeen
US1: Als wedstrijdleider wil ik leden en gasten kunnen invoeren, updaten en verwijderen in het systeem, zodat ik ze daarna kan toevoegen aan competities.
US2: Als wedstrijdleider wil ik dat de ronde indeling uitgeprint kan worden, zodat de witspelers hierop de resultaten kunnen invullen.
US3: Als wedstrijdleider wil ik dat oude seizoenen kunnen worden bekeken, zodat deze informatie kan worden gebruikt voor statistieken.
US4: Als wedstrijdleider wil ik dat er per lid en gast een spelershistorie wordt bijgehouden.
US5: Als wedstrijdleider wil ik de historie van spelers kunnen inzien zodat oude resultaten altijd beschikbaar blijven.
Competities
US5: Als wedstrijdleider wil ik de mogelijkheid hebben om competities te beheren, zodat ik ze actueel kan houden.
US6: Als wedstrijdleider wil ik leden en gasten kunnen toevoegen aan een competitie, zodat zij kunnen gaan schaken.
US7: Als wedstrijdleider wil ik een competitie een type als periodecompetitie, meerkamp en toernooi kunnen geven , zodat deze het juiste aantal rondes kan krijgen.
US8: Als wedstrijdleider wil ik spelers kunnen indelen in verschillende categorieën of groepen binnen een competitie, zodat de competitie eerlijk en gebalanceerd is.
US9: Als wedstrijdleider wil ik het indeling van een toernooi kunnen genereren, zodat deelnemers hun indeling kunnen bekijken.
US10: Als wedstrijdleider wil ik dat alle informatie die bij een competitie hoort, op de website van de vereniging gepubliceerd kan worden, zodat actuele informatie beschikbaar is.
US11: Als wedstrijdleider wil ik het resultaat van een ronde eenvoudig kunnen invoeren, zodat deelnemers de resultaten kunnen zien.
US12: Als wedstrijdleider wil ik dat de applicatie automatisch de ranglijst bijwerkt nadat een ronde alle resultaten heeft, zodat de ranglijst up-to-date blijft.
US13: Als wedstrijdleider wil ik dat de applicatie automatisch de ratings van de spelers bijwerkt volgens de ratingformule, nadat een ronde alle resultaten heeft.
US14: Als Externe wedstrijdleider wil ik dat de resultaten van externe competities bijgehouden kunnen worden, zodat de rating van spelers altijd up-to-date kan zijn.
US15: Als wedstrijdleider wil ik de globale ranglijst kunnen bekijken zodat duidelijk is hoe goed de leden het doen.
US16: Als wedstrijdleider wil ik de ranglijst van een competitie kunnen bekijken zodat duidelijk is hoe goed de leden het doen.
User Classes and Karakteristieken
Binnen het indelingsprogramma zijn er twee gebruikers: de interne wedstrijdleider en de externe wedstrijdleider van de schaakvereniging. Deze gebruikers krijgen toegang tot het programma door in te loggen met hun eigen gegevens. Ze kunnen alles doen wat het programma zou moeten kunnen. Ze gebruiken het systeem om seizoenen, competities, leden en gasten te beheren.
Operatieomgeving
Het indelingsprogramma zal worden geprogrammeerd in Java en zal moeten werken op de ondersteunde versies van Windows en MacOS besturingssystemen. Er is een bestaande testdatabase waarop de nieuwe database gebaseerd kan worden, maar het zou ook handig zijn als het met een andere database kan werken. Daarom wordt er gebruik gemaakt van de Java Persistence API (JPA), waardoor het relatief eenvoudig wordt om een andere database aan het programma te koppelen.
Design- en Implementatiebeperkingen
Voor dit project zijn er weinig dingen die ons in de weg zullen zitten tijdens het werken. Het enige dat bekend is momenteel is dat de schaakvereniging geen budget heeft vrijgemaakt voor het hosten van een externe database waardoor wij de database lokaal moeten gaan ontwerpen.
Product functionaliteiten
De hoofdfunctionaliteiten van het indelingsprogramma zijn als volgt: de gebruiker moet een seizoen kunnen aanmaken, zodat er een competitie kan worden opgezet. Binnen deze competities zijn er speelrondes die moeten worden ingedeeld in speelparen. Het aantal speelrondes verschilt per competitietype. Nadat deze speelrondes zijn gespeeld, moeten de resultaten worden ingevuld en worden deze gebruikt om ranglijsten te genereren voor de specifieke rondes. Na afloop van een wedstrijd zal ook de rating van de spelers worden aangepast. Aan het einde van een speelronde zullen de resultaten worden geüpload naar de website van UVS.
Actor | Use Case | Brief description |
---|---|---|
Wedstrijdleider | Beheren spelers | De wedstrijdleider moet de mogelijkheid hebben om nieuwe leden en gasten in het systeem in te voeren, zodat ze later kunnen worden toegevoegd aan competities. |
Wedstrijdleider | Startrating vastleggen | De wedstrijdleider wil aan het begin van het seizoen de startrating van elke speler vastleggen, zodat hier na het seizoen mee vergeleken kan worden. |
Wedstrijdleider | Printen ronde indeling | De wedstrijdleider moet de indeling van een ronde moeten kunnen uitprinten zodat de leden op locatie de indeling kunnen zien. |
Wedstrijdleider | Seizoenen bekijken | De wedstrijdleider wil oude seizoenen kunnen bekijken zodat de historie van de club altijd bekeken kan worden. |
Wedstrijdleider | Beheren van competities | De wedstrijdleider wil de mogelijkheid hebben om competities te beheren, zodat deze actueel blijven. |
Wedstrijdleider | Beheren van competitiegroepen | De wedstrijdleider moet groepen kunnen toevoegen aan een competitie, zodat er daarna spelers kunnen worden toegevoegd. |
Wedstrijdleider | Beheren van spelers in competitiegroep | De wedstrijdleider moet in staat zijn om leden en gasten toe te voegen aan een competitiegroep, zodat zij ingedeeld en kunnen deelnemen aan de schaakwedstrijden. |
Wedstrijdleider | Gegevens publiceren op website | De wedstrijdleider wil de ronde indeling, uitslagen en de ranglijst op de website publiceren zodat elk persoon online de gegevens kan bekijken. |
Wedstrijdleider | Ronde resultaten invoeren | De wedstrijdleider wil resultaten van ronden kunnen invoeren zodat de ranglijst anders wordt. |
Wedstrijdleider | Indeling genereren voor competitie | De wedstrijdleider wil automatisch door het systeem een indeling voor de rondes van competities laten genereren. |
Wedstrijdleider | Globale ranglijst bekijken | De wedstrijdleider wil de globale ranglijst bekijken zodat duidelijk is wie het beste is. |
Wedstrijdleider | Groep ranglijst bekijken | De wedstrijdleider wil de ranglijst van een groep bekijken zodat duidelijk is wie het beste is. |
Extern wedstrijdleider | Resultaat externe ronde invoeren | De externe wedstrijdleider wil het resultaat van een externe ronde invoeren zodat de rating van het lid aanpast |
Usecasediagram
Domein Model
Concept | Uitleg | |
---|---|---|
Allround | Ook wel "Meerkamp" genoemd, is een competitietype waarbij 4 spelers in een groep minimaal 1 keer tegen elkaar spelen. | |
Allround | roundType | RoundType is het type "Enkelrondig" of "Dubbelrondig" voor meerkamp, wat inhoud op welke manier de spelers in een meerkampgroep tegen elkaar spelen. |
Tournament | Dit is een competitietype waarbij de spelers in een groep via het zwitsers systeem tegen elkaar spelen, na elke ronde kan de indeling van de volgende ronde pas gemaakt worden. | |
PeriodCompetition | Periodecompetitie is een competitietype waarbij spelers in groepen tegen elkaar spelen, na elke periode promoveren en degraderen spelers naar een andere groep. | |
PeriodCompetition | period | Periode houdt geeft aan voor welke periode de competitie is. |
Competition | Competitie is het algemene concept waarmee all competities bij samenkomen. | |
Competition | name | Naam geeft de naam van de competitie aan. |
Competition | competitionType | De competitie heeft een type, dit kan meerkamp, toernooi of periodecompetitie zijn. |
Competition | startDate | Startdatum geeft de datum waarop de competitie start aan. |
Competition | maxRounds | Max rondes is het maximum aantal rondes die een competitie kan hebben. |
Competition | winPoints | Winpunten is het aantal punten dat je krijgt bij een winst. |
Competition | drawPoints | Gelijkpunten is het aantal punten dat je krijgt bij een gelijkspel. |
Competition | losePoints | Verliespunten is het aantal punten dat je krijgt bij een verlies. |
Competition | unevenPoints | Onevenpunten is het aantal punten dat je krijgt als het aantal personen in de groep oneven is. |
Competition | byePoints | Byepunten is het aantal punten dat je krijg bij een bye. |
Group | Een competitie heeft een aantal groepen waar spelers in zitten. | |
Group | name | Een groep heeft een naam waarmee de groep geidentificeerd kan worden. |
Round | Een groep heeft een aantal ronden waarin wedstrijden zitten. | |
Round | roundNumber | Omdat er verschillende ronden in een competitie kunnen zitten heeft een ronde een rondenummer. |
Round | date | Een ronde heeft een datum waarop hij gespeeld wordt. |
Match | Een wedstrijd is een schaakpartij tussen twee spelers waarbij er een wit is en de andere zwart. | |
Match | result | Het resultaat van een wedstrijd wordt moet opgeslagen worden om bij te houden wie er gewonnen heeft. |
Player | Een speler is een schaker. | |
Player | Rating | De rating van de speler geeft aan hoe goed de speler is. |
Internal player | Een interne speler is een speler die bij de club zit. | |
Internal player | firstName | De voornaam geeft de voornaam van de interne speler aan. |
Internal player | lastName | De achternaam geeft de achternaam van de interne speler aan. |
Internal player | startrating | De startrating geeft de rating van de interne speler aan het begin van het seizoen aan. |
Internal player | playerType | De speler is een Gast of een Lid, afhankelijk van zijn lidmaatschap binnen de club. |
External player | De externe speler is een speler waarover bijna niks bekend is die wordt gebruikt als een speler binnen de club een wedstrijd tegen een speler speelt van een andere club. | |
GlobalRanking | De globalRanking is een ranglijst waarbij alle spelers te zien zijn gesorteerd op de rating. | |
SchemeList | Het schema voor een ronde wordt laten zien in een schemalijst | |
ResultList | Het resultaat van een ronde wordt laten zien in een resultatenlijst | |
ScoreTable | De scoretable laat de totale punten van de spelers in een groep zien. | |
CrossTable | De kruistabel laat de totale punten van de spelers in een groep zien als kruistabel. | |
GroupRanking | De ranglijst laat de punten in een groep zien. |
Use-casebeschrijvingen
Beheren spelers
UC 1.1: Spelers bekijken
Primary actor: Wedstrijdleider | |
Stakeholders and Interests: De voorzitter, omdat hij goed geïnformeerd wil zijn over wie de leden zijn en hoeveel leden er in totaal zijn. | |
Brief description: De wedstrijdleiders willen de spelers kunnen bekijken zodat ze weten wie er in het systeem staat. | |
Preconditions: De wedstrijdleider heeft KlukKluk geopend en heeft het hoofdscherm open. | |
Postconditions (Success Guarantee): De wedstrijdleider ziet alle bekende spelers. | |
Main Success Scenario (Basic Flow): | |
Actor Action | System Responsibility |
1. De wedstrijdleider geeft aan de spelerslijst te willen zien. |
3. Systeem toont invulvelden voor de voornaam, achternaam, rating en type van de speler. |
UC 1.2: Spelers toevoegen
Primary actor: Wedstrijdleider | |
Stakeholders and Interests: De voorzitter, omdat hij wil dat de leden goed kunnen worden ingedeeld d.m.v. het indelingsprogramma. | |
Brief description: De wedstrijdleiders willen leden en gasten registreren binnen het systeem zodat zij ingedeeld kunnen worden binnen competities en toernooien | |
Preconditions: De wedstrijdleider heeft KlukKluk geopend en heeft het hoofdscherm open. | |
Postconditions (Success Guarantee): De wedstrijdleider heeft een nieuwe speler geregistreerd. | |
Main Success Scenario (Basic Flow): | |
Actor Action | System Responsibility |
1. De wedstrijdleider geeft aan de spelerslijst te willen zien. 4. De wedstrijdleider vult de voornaam, achternaam, rating en type van de nieuwe speler in. |
3. Systeem toont invulvelden voor de voornaam, achternaam, rating en type van de speler. 5. Systeem registreert de nieuwe Speler. |
UC 1.3: Spelers verwijderen
Primary actor: Wedstrijdleider | |
Stakeholders and Interests: De voorzitter, omdat hij wil dat de leden goed kunnen worden ingedeeld d.m.v. het indelingsprogramma. | |
Brief description: De wedstrijdleiders willen spelers kunnen verwijderen omdat zij niet meer actief zijn bij de vereniging. | |
Preconditions: De wedstrijdleider heeft KlukKluk geopend en heeft het hoofdscherm open. | |
Postconditions (Success Guarantee): De wedstrijdleider heeft een speler verwijderd. | |
Main Success Scenario (Basic Flow): | |
Actor Action | System Responsibility |
1. De wedstrijdleider geeft aan de spelerslijst te willen zien. 4. De wedstrijdleider geeft aan een speler te willen verwijderen. 6. De wedstrijdleider bevestigt de keuze . | 3. Systeem toont invulvelden voor de voornaam, achternaam, rating en type van de speler. 5. Systeem vraagt of de gebruiker het zeker weet. 7. [keuze = ja] Systeem verwijdert de gekozen speler. |
Extensions (Alternative Flow): Speler wordt niet verwijdert | |
| 7a [keuze = nee] Speler wordt niet verwijdert. Usecase verwijderen stopt. |
UC 1.4: Spelers bewerken
Primary actor: Wedstrijdleider | |
Stakeholders and Interests: De voorzitter, omdat hij wil dat de gegevens van de leden correct in het systeem staan zodat er geen misverstanden kunnen ontstaan.. | |
Brief description: De wedstrijdleiders willen leden en gasten kunnen bewerken omdat de gegevens van de speler anders is. | |
Preconditions: De wedstrijdleider heeft KlukKluk geopend en heeft het hoofdscherm open. | |
Postconditions (Success Guarantee): De wedstrijdleider heeft de gegevens van een speler aangepast. | |
Main Success Scenario (Basic Flow): | |
Actor Action | System Responsibility |
1. De wedstrijdleider geeft aan de spelerslijst te willen zien. 4. De wedstrijdleider geeft aan een speler te willen bewerken.
6. De wedstrijdleider past de gegevens aan en geeft aan te willen opslaan. |
3. Systeem toont invulvelden voor de voornaam, achternaam, rating en type van de speler. 5. Systeem toont de voornaam, achternaam, type en de rating van de speler. 7. Systeem slaat de nieuwe gegevens op. |
System Sequence Diagram
Omdat deze vier usecases allemaal CRUD zijn is er voor gekozen om alleen het aanmaken van een speler uit te werken in een system sequence diagram. De wedstrijdleider vraagt als eerste alle spelers en de invulvelden op, het systeem laat deze vervolgens zien in een tabel. Daarna vult de wedstrijdleider de velden in en maakt een nieuwe speler aan.
Beheren van competities
Use Case 2.1: Competitie aanmaken
Primary actor: Wedstrijdleider | |
Stakeholders and Interests: De voorzitter, omdat activiteiten als competities nieuwe mensen aantrekken om bij de vereniging te betrekken. | |
Brief description: De wedstrijdleider moet een nieuwe competitie kunnen aanmaken, zodat deze kan worden ingezet voor het organiseren van schaakwedstrijden. | |
Preconditions: De wedstrijdleider heeft KlukKluk geopend en heeft het hoofdscherm open. | |
Postconditions (Success Guarantee): De wedstrijdleider heeft een nieuwe competitie aangemaakt. | |
Main Success Scenario (Basic Flow): | |
Actor Action | System Responsibility |
1. De wedstrijdleider geeft aan de competities te willen zien.
|
4. Systeem toont invulvelden voor de naam, soort competitie, aantal rondes, aantal keer dezelfde kleur, aantal punten voor winst, verlies, remise, oneven en vrijgesteld. 6. Systeem maakt een nieuwe competitie aan. |
Use Case 2.2: Competities bekijken
Primary actor: Wedstrijdleider | |
Stakeholders and Interests: Spelers, omdat zij met een duidelijk overzicht gemakkelijk kunnen zien welke competities er zijn voor een inschrijving. | |
Brief description: De wedstrijdleider wilt de competities kunnen bekijken zodat hij alle competities in een ogenblik kan zien. | |
Preconditions: De wedstrijdleider heeft KlukKluk geopend en heeft het hoofdscherm open. | |
Postconditions (Success Guarantee): De wedstrijdleider heeft een nieuwe competitie aangemaakt. | |
Main Success Scenario (Basic Flow): | |
Actor Action | System Responsibility |
1. De wedstrijdleider geeft aan de competities te willen zien. |
|
Use Case 2.3: Competitie bewerken
Primary actor: Wedstrijdleider | |
Stakeholders and Interests: Secretaris, omdat zij actuele informatie willen over de competities zodat er geen misverstanden ontstaan. | |
Brief description: De wedstrijdleider moet een nieuwe competitie kunnen aanmaken, zodat deze kan worden ingezet voor het organiseren van schaakwedstrijden. | |
Preconditions: De wedstrijdleider heeft KlukKluk geopend en heeft het hoofdscherm open. | |
Postconditions (Success Guarantee): De wedstrijdleider heeft een competitie bijgewerkt. | |
Main Success Scenario (Basic Flow): | |
Actor Action | System Responsibility |
1. De wedstrijdleider geeft aan de competities te willen zien. 3. De wedstrijdleider geeft aan een competitie te willen bewerken. 5. De wedstrijdleider vult de bewerkte gegevens van de competitie in. |
4. Systeem toont invulvelden voor de naam, soort competitie, aantal rondes, aantal keer dezelfde kleur, aantal punten voor winst, verlies, remise, oneven en vrijgesteld. 6. Systeem bewerkt de competitie met de nieuwe gegevens. |
Use Case 2.4: Competitie verwijderen
Primary actor: Wedstrijdleider | |
Stakeholders and Interests: Secretaris, omdat zij geen inactieve of incorrecte informatie over de competities willen zodat er geen onduidelijkheden komen. | |
Brief description: De wedstrijdleider moet een competitie kunnen verwijderen als deze niet meer nodig zijn binnen het systeem. | |
Preconditions: De wedstrijdleider heeft KlukKluk geopend en heeft het hoofdscherm open. | |
Postconditions (Success Guarantee): De wedstrijdleider heeft een nieuwe competitie aangemaakt. | |
Main Success Scenario (Basic Flow): | |
Actor Action | System Responsibility |
1. De wedstrijdleider geeft aan de competities te willen zien. 3. De wedstrijdleider geeft aan een competitie te willen verwijderen. 7. De wedstrijdleider bevestigt de keuze. |
4. Systeem vraagt of de gebruiker het zeker weet. 6. [keuze = ja] Systeem verwijderd de gekozen competitie. |
Extensions (Alternative Flow): Competitie wordt niet verwijdert | |
6a [keuze = nee] Competitie wordt niet verwijdert. |
System Sequence Diagram
Omdat deze vier usecases allemaal CRUD zijn is er voor gekozen om alleen het aanmaken van een speler uit te werken in een system sequence diagram, zodat toch duidelijk is hoe het werkt. De wedstrijdleider wil een nieuwe competitie aanmaken, daarom wordt de createCompetition functie aangeroepen.
Beheren van competitiegroepen
Use Case 3.1: Competitiegroepen bekijken
Primary actor: Wedstrijdleider | |
Stakeholders and Interests: De voorzitter, omdat hij goed geïnformeerd wil zijn over de competitiegroepen. De secretaris, omdat hij verantwoordelijk is voor het administratieve werk rondom de competities. | |
Brief description: De wedstrijdleiders willen de competitiegroepen kunnen bekijken zodat ze weten welke er in het systeem staan. | |
Preconditions: De wedstrijdleider heeft KlukKluk geopend en heeft de competities open. | |
Postconditions (Success Guarantee): De wedstrijdleider ziet alle competitiegroepen van de gekozen competitie. | |
Main Success Scenario (Basic Flow): | |
Actor Action | System Responsibility |
1. De wedstrijdleider geeft aan de competitiegroepen te willen zien van de gekozen competitie. |
|
Use Case 3.2: Competitiegroep aanmaken
Primary actor: Wedstrijdleider | |
Stakeholders and Interests: De wedstrijdleiders willen de competitiegroepen kunnen bekijken zodat ze weten welke er in het systeem staan. | |
Brief description: De wedstrijdleider moet een nieuwe competitiegroep kunnen aanmaken, zodat er spelers aan toegevoegd kunnen worden en zo aan de competitie toegevoegd kunnen worden. | |
Preconditions: De wedstrijdleider heeft KlukKluk geopend en heeft de competities open. | |
Postconditions (Success Guarantee): De wedstrijdleider heeft een nieuwe competitiegroep aangemaakt bij een competitie. | |
Main Success Scenario (Basic Flow): | |
Actor Action | System Responsibility |
1. De wedstrijdleider geeft aan de competitiegroepen te willen zien van de gekozen competitie
|
4. Systeem toont invulvelden voor de groepsletter. 6. Systeem maakt een nieuwe competitiegroep aan. |
Use Case 3.3: Competitiegroep bewerken
Primary actor: Wedstrijdleider | |
Stakeholders and Interests: Secretaris, omdat zij actuele informatie willen over de competities zodat er geen misverstanden ontstaan. | |
Brief description: De wedstrijdleider moet een competitiegroep kunnen bewerken, zodat deze aangepast kan worden wanneer dat nodig is. | |
Preconditions: De wedstrijdleider heeft KlukKluk geopend en heeft de competities open. | |
Postconditions (Success Guarantee): De wedstrijdleider heeft een competitiegroep bijgewerkt van een competitie. | |
Main Success Scenario (Basic Flow): | |
Actor Action | System Responsibility |
1. De wedstrijdleider geeft aan de competitiegroepen te willen zien van de gekozen competitie 3. De wedstrijdleider geeft aan een competitiegroep te willen bewerken. 5. De wedstrijdleider vult de bewerkte groepsletter van de competitiegroep in. |
4. Systeem toont een invulveld voor de groepsletter. 6. Systeem bewerkt de competitie met de nieuwe gegevens. |
Use Case 3.4: Competitiegroep verwijderen
Primary actor: Wedstrijdleider | |
Stakeholders and Interests: Secretaris, omdat zij geen inactieve of incorrecte informatie over de competities willen zodat er geen onduidelijkheden komen. | |
Brief description: De wedstrijdleider moet een competitiegroep kunnen verwijderen als deze niet meer nodig is binnen het systeem. | |
Preconditions: De wedstrijdleider heeft KlukKluk geopend en heeft de competities open. | |
Postconditions (Success Guarantee): De wedstrijdleider heeft een competitiegroep verwijderd van een competitie | |
Main Success Scenario (Basic Flow): | |
Actor Action | System Responsibility |
1. De wedstrijdleider geeft aan de competitiegroepen te willen zien van de gekozen competitie 3. De wedstrijdleider geeft aan een competitiegroep te willen verwijderen. 5. De wedstrijdleider bevestigt de keuze. |
4. Systeem vraagt of de gebruiker het zeker weet. 6. [keuze = ja] Systeem verwijderd de gekozen competitiegroep. |
Extensions (Alternative Flow): Competitiegroep wordt niet verwijdert | |
6a [keuze = nee] Competitiegroep wordt niet verwijdert. |
Beheren van spelers in competitiegroep
UC 4.1: Spelers van competitiegroep bekijken
Primary actor: Wedstrijdleider | |
Stakeholders and Interests: De voorzitter, omdat hij wil dat de leden goed kunnen worden ingedeeld in de competities. | |
Brief description: De wedstrijdleiders willen spelers in een competitiegroep bekijken zodat ze weten welke spelers in de groep zitten. | |
Preconditions: De wedstrijdleider heeft KlukKluk geopend en heeft het competitiegroep scherm open. | |
Postconditions (Success Guarantee): De spelers in de competitiegroepen zijn getoond. | |
Main Success Scenario (Basic Flow): | |
Actor Action | System Responsibility |
1. De wedstrijdleider geeft aan de competitiegroepen te willen zien van de gekozen competitie 3. De wedstrijdleider geeft aan de spelers in een groep te willen zien door een competitiegroep te selecteren. | 2. Systeem toont alle groepen van de gekozen competitie 4. Systeem toont de beschikbare spelers die in de groep kunnen en de huidige spelers in de groep. |
UC 4.2: Spelers toevoegen aan competitiegroep
Primary actor: Wedstrijdleider | |
Stakeholders and Interests: De voorzitter, omdat hij wil dat de leden goed kunnen worden ingedeeld in de competities. | |
Brief description: De wedstrijdleiders willen spelers toevoegen in een competitiegroep zodat deelnemers mee kunnen doen aan een competitie. | |
Preconditions: De wedstrijdleider heeft KlukKluk geopend en heeft het competitiegroep scherm open. | |
Postconditions (Success Guarantee): Er zijn nieuwe spelers toegevoegd aan de gekozen competitiegroep. | |
Main Success Scenario (Basic Flow): | |
Actor Action | System Responsibility |
1. De wedstrijdleider geeft aan de competitiegroepen te willen zien van de gekozen competitie 3. De wedstrijdleider geeft aan de spelers in een groep te willen zien door een groepsletter te selecteren. 5. De wedstrijdleider geeft aan welke speler hij wil toevoegen aan de competitiegroep. | 2. Systeem toont alle groepen van de gekozen competitie 4. Systeem toont de beschikbare spelers die in de groep kunnen en de huidige spelers in de groep. 6. Systeem voegt de spelers toe aan de competitiegroep. |
UC 4.3: Spelers verwijderen van een competitiegroep
Primary actor: Wedstrijdleider | |
Stakeholders and Interests: De voorzitter, omdat hij wil dat de leden goed kunnen worden ingedeeld in een competitiegroep. | |
Brief description: De wedstrijdleiders willen spelers kunnen verwijderen van een competitiegroep omdat zij niet meer actief zijn bij de competitie. | |
Preconditions: De wedstrijdleider heeft KlukKluk geopend en heeft het competitiegroep scherm open. | |
Postconditions (Success Guarantee): De gekozen spelers zijn verwijderd uit de gekozen competitiegroep. | |
Main Success Scenario (Basic Flow): | |
Actor Action | System Responsibility |
1. De wedstrijdleider geeft aan de competitiegroepen te willen zien van de gekozen competitie 3. De wedstrijdleider geeft aan de spelers in een groep te willen zien. 5. De wedstrijdleider geeft aan welke speler(s) hij wil verwijderen uit de competitiegroep. | 2. Systeem toont alle groepen van de gekozen competitie 4. Systeem toont de beschikbare spelers die in de groep kunnen en de huidige spelers in de groep. 6. Systeem verwijderd de speler(s) uit de competitiegroep. |
Vastleggen startrating
UC 5: Vastleggen startrating
Primary actor: Wedstrijdleider | |
Stakeholders and Interests: Spelers: deze willen aan het einde van een seizoen hun voortgang kunnen vergelijken met het begin van het seizoen | |
Brief description: De wedstrijdleider wil aan het begin van het seizoen de startrating van elke speler vastleggen, zodat hier na het seizoen mee vergeleken kan worden | |
Preconditions: De wedstrijdleider heeft KlukKluk geopend en heeft het hoofdscherm open. | |
Postconditions (Success Guarantee): Voor elke speler is een startrating vastgesteld in de database, en deze wordt afgebeeld binnen de applicatie | |
Main Success Scenario (Basic Flow): | |
Actor Action | System Responsibility |
1. De wedstrijdleider geeft aan de algemene spelerslijst te willen zien. 3. De wedstrijdleider drukt op de knop om startrating vast te stellen. 5. De wedstrijdleider bevestigt de startrating op te willen slaan. |
2. Systeem toont voornaam, achternaam, rating en type van de bekende spelers. 4. Het systeem toont een pop-up ter bevestiging van het vaststellen van de startratings. 6. [Keuze = ja] Het systeem slaat de huidige ratings van de spelers op als de startrating van het nieuwe seizoen. |
Extensions (Alternative Flow): Startratings moeten niet opgeslagen worden |
|
6a. [keuze = nee] Het systeem sluit de pop-up en de startrating wordt niet vastgelegd. |
Ronde resultaten invoeren
UC 6: Ronde resultaten invoeren
Primary actor: Wedstrijdleider | |
Stakeholders and Interests: Spelers: de spelers die deel hebben genomen aan een match willen dat hun rating up-to-date blijft. | |
Brief description: De wedstrijdleider voert het resultaat van een wedstrijd in voor de interne spelers. Hierna wordt de rating van de interne spelers aangepast. | |
Preconditions: De interne spelers zijn aanwezig in het systeem en ronde is al ingedeeld. | |
Postconditions (Success Guarantee): Het resultaat van de wedstrijden in de ronde is opgenomen in het systeem en de rating van de interne spelers zijn aangepast. | |
Main Success Scenario (Basic Flow): | |
Actor Action | System Responsibility |
1 De wedstrijdleider geeft aan de competitiegroepen te willen zien van de gekozen competitie 3 De wedstrijdleider geeft aan de ronden van een groep te willen zien 5 Systeem geeft aan de wedstrijden van een ronde te willen zien. 7 De wedstrijdleider geeft resultaat van een wedstrijd aan |
2 Systeem geeft lijst van groepen in de competitie 4 Systeem geeft een lijst van rondes van een groep 6 Systeem toont wedstrijden van de ronde. 8 Het systeem berekent de nieuwe rating van de spelers, slaat de nieuwe rating en het resultaat van de wedstrijden binnen de ronde op. |
Resultaat externe ronde invoeren
UC 7: Resultaat externe ronde invoeren
Primary actor: Externe Wedstrijdleider | |
Stakeholders and Interests: Spelers: de speler die deel heeft genomen aan een externe match wil dat zijn rating up-to-date blijft. | |
Brief description: De externe wedstrijdleider voert het resultaat van een externe wedstrijd in voor een interne speler. Hierna wordt de rating van de interne speler aangepast. | |
Preconditions: De interne speler is aanwezig in het systeem. Een externe match heeft plaatsgevonden. | |
Postconditions (Success Guarantee): De rating van de interne speler is aangepast. | |
Main Success Scenario (Basic Flow): | |
Actor Action | System Responsibility |
1. De externe wedstrijdleider geeft aan dat hij het resultaat van een externe wedstrijd in wilt voeren 3. De externe wedstrijdleider geeft de naam van de interne speler 5. De externe wedstrijdleider geeft de rating van de externe speler 7. De externe wedstrijdleider kiest de uitslag van de wedstrijd. 9. De externe wedstrijdleider geeft aan de gegevens op te willen slaan 11. De externe wedstrijdleider geeft aan dat de gegevens kloppen |
2. Het systeem vraagt om de naam van de interne speler 4. Het systeem vraagt om de rating van de externe speler 6. Het systeem vraagt wat de uitslag van de wedstrijd was 8. Het systeem geeft de optie om de gegevens op te slaan 10. Het systeem vraagt met een pop-up of de gegevens kloppen 11. [wedstrijdleider bevestigt] De rating van de interne speler wordt geüpdatet. |
Extensions (Alternative Flow): De wedstrijdleider wijst de input af | |
11b. [wedstrijdleider bevestigt niet] Het systeem bewaart tijdelijk de ingevoerde gegevens en gaat terug naar stap 2 |
Indeling genereren voor competitie
UC8: Indeling genereren voor competitie
Primary actor: Interne Wedstrijdleider | |
Stakeholders and Interests: Spelers: spelers willen ingedeeld worden in een competitie zodat ze kunnen spelen. | |
Brief description: De interne wedstrijdleider geeft aan een competitie indeling te willen genereren waarna het systeem een indeling genereert met de beschikbare spelers en groepen. | |
Preconditions: Er zijn spelers in een competitie/groep ingedeeld. | |
Postconditions (Success Guarantee): Er is een indeling gegenereerd voor de competitie. | |
Main Success Scenario (Basic Flow): | |
Actor Action | System Responsibility |
1. De interne wedstrijdleider geeft aan dat hij een indeling voor een competitie wil laten genereren. |
2. Het systeem kiest het juiste indeel systeem en maakt een indeling |
System Sequence Diagram
Gegevens publiceren op website
UC9: Gegevens publiceren op website
Primary actor: Interne Wedstrijdleider | |
Stakeholders and Interests: Spelers: spelers willen de stand, indeling en uitslagen van wedstrijden en ronden kunnen zien | |
Brief description: De interne wedstrijdleider geeft aan de gegevens van een competitie te willen publiceren op de website waarna het systeem html bestanden genereert en op de website plaatst. | |
Preconditions: De wedstrijdleider heeft het competitiescherm open en er zitten competities in het systeem | |
Postconditions (Success Guarantee): De gegevens van een competitie zijn op de website te zien. | |
Main Success Scenario (Basic Flow): | |
Actor Action | System Responsibility |
3. De wedstrijdleider selecteert een competitie 5. De wedstrijdleider geeft voor de competitie aan de gegevens te willen publiceren |
2. Het systeem toont de competities in het systeem 4. Het systeem selecteert de competitie en maakt de uploadknop klikbaar 6. Het systeem genereert html bestanden 7. Het systeem plaatst de html bestanden op de webserver |
Printen ronde indeling
UC10: Printen ronde indeling
Primary actor: Interne Wedstrijdleider | |
Stakeholders and Interests: Spelers: willen de indeling kunnen bekijken zodat zij kunnen zien tegen wie zij moeten gaan spelen. | |
Brief description: De interne wedstrijdleider geeft aan de indeling van een ronde binnen een competitie uit te willen printen. | |
Preconditions: De wedstrijdleider heeft het competitiescherm open en er zitten competities in het systeem. | |
Postconditions (Success Guarantee): De wedstrijdleider heeft een pdf ontvangen met daarin de indeling van de ronde. | |
Main Success Scenario (Basic Flow): | |
Actor Action | System Responsibility |
1. De wedstrijdleider geeft aan de indeling van een ronde uit te willen printen.
7. De wedstrijdleider selecteert waar deze de PDF wil laten genereren 9. De wedstrijdleider drukt op "PDF genereren" | 2. Het systeem toont de competities in het systeem. 4. Het systeem toont de rondes binnen de competities. 6. Het systeem toont de gekozen ronde van de competitie 8. Het systeem toont het gekozen pad naast de "Browse" knop 10. Het systeem genereert een pdf-bestand met kolommen voor de namen van de witspeler en de zwartspeler, een kolom met de uitslag, de indeling met welke competitie, de hoeveelste ronde en de datum van de ronde. |
Andere functionele eisen (optional)
Code | Description |
FR1 | Het programma moet in staat zijn om alle input die door de gebruiker wordt ingevoerd te valideren voordat hij deze door stuurt naar de database zodat er geen kwaadaardige query's naar de database worden gestuurd. |
Non-functionele eisen
De volgende non-functionele requirements zijn geschreven volgens FURPS.
Usability
Code | Description |
NFR1 | Een gebruiker moet de resultaten van een competitie in kunnen voeren zonder elk lid of resultaat aan te hoeven klikken. |
NFR2 | Een gebruiker moet met minder dan 4 kliks tot de functies kunnen komen. |
NFR3 | Een gebruiker moet de functies kunnen gebruiken zonder pop-up windows tenzij er een foutmelding binnen komt of er een vraag wordt gesteld. |
NFR4 | Het programma moet standalone worden kunnen gelanceerd zodat de gebruiker geen externe webhosting hoeft te onderhouden. |
Reliability
Supportability
Code | Description |
NFR5 | Het programma moet in staat zijn om op een gemakkelijke manier te schakelen tussen verschillende databases, zodat de gebruikers zonder veel moeite tussen verschillende databases kunnen schakelen. |
NFR6 | Het programma moet in staat zijn om te draaien op zowel Windows als MacOS zodat het zoveel mogelijk gebruikers kan ondersteunen door op de meest recente OS'en te kunnen draaien. |
Performance
Code | Description |
NFR7 | Alle schermen moeten binnen minimaal 2 seconden laden |
Security
Code | Description |
NFR8 | SQL-injecties moeten voorkomen worden door prepared statements. |
User interface schetsen
Use case code | Naam | Link |
UC 1 | Spelers beheren | https://xd.adobe.com/view/0a0b6f64-ed0a-4627-b127-86517d217cb5-5f58/?fullscreen |
UC 2 | Beheren van competities | https://xd.adobe.com/view/b81481fb-0e42-49b6-bfe1-cb8dffccd965-ed47/ |
UC 3 & 4 | Beheren van competitiegroepen en beheren van spelers in competitiegroepen | https://xd.adobe.com/view/63beb593-c1ed-4b5b-ae15-0d3a6257fc35-36ed/ |
UC 6: | Ronde resultaten invoeren | |
UC 7 | Resultaat externe ronde invoeren | https://xd.adobe.com/view/ba9fd358-17d6-4903-b4e1-57183531a57a-efcc/ |
UC 10 | Printen ronde indeling |