Introduction
Overall Description
<Provide a short description of the software being specified and its purpose, including relevant benefits, objectives, and goals. If a separate description of the product scope is available (e.g. in the PvA or SRS), place a link here rather than duplicating its contents here.>
Purpose of this document
< Full description of the main objectives of the SDD document.>
Architectural Overview
<Provide a high level overview of the architectural design, for instance by means of an architectural sketch. Make sure you show at least all sub-systems, and links to external systems. The sketch can be informal. The use of UML is not required.>
Detailed Design Description
<This section contains detailed design documentation of all software components. The content of this section grows iteratively during the sprints. At the end of each sprint, the diagrams shown need to be consistent.>
Deployment Diagram
<Provide a UML deployment diagram showing all physical and virtual nodes used in the system. The diagram must also contain all deployment artifacts used in the system, for instance JAR or WAR files, or web artifacts.>
Database Design
<If your system uses relational databases, make sure you provide a physical datamodel here.>
Design Class Diagram
<Object-oriented sub-systems should be described using a class diagram. If classes or interfaces are used across sub-systems, make sure you mention this in the description of the class diagrams. If your system entails layers, make sure you indicate this in the class diagram, e.g. by means of packages. For each class diagram, make sure you also mention the deployment artifact (from the deployment diagram) it is part of.>
Sequence Diagrams
SD UC1.2 createPlayer
SD UC2.1 createCompetition
Activity and State Diagrams
<This section is optional. If useful, provide activity and/or state diagrams to describe complex work flows and system state transitions>
Design decisions for the sub-systems
USECASE 3
Het beheren van competitiegroepen werkt als volgt: Op het scherm voor competitiebeheer is rechts in beeld achter elke competitie een knop zichtbaar, gelabeld "Groepen". Door op deze knop te drukken wordt de gebruiker naar het groepen-beheerscherm gebracht. Vanuit hier kan de gebruiker nieuwe groepen aanmaken, of bestaande groepen aanpassen en verwijderen. De groepen binnen de geselecteerde competitie staan alfabetisch gelabeld in het midden van het scherm. Alle spelers staan in een tabel aan de linkerkant om toegevoegd te worden aan een competitiegroep.
Op het scherm voor het beheren van competities is een nieuwe knop toegevoegd die de gebruiker naar het scherm voor groepsbeheer van de desbetreffende groep brengt. Als een nieuwe competitie wordt aangemaakt worden (indien relevant) op basis van een standaard aantal een aantal groepen automatisch gegenereerd. Op dit scherm worden CRUD operaties met betrekking tot groepen verwerkt. De gebruiker kan de naam van de groep aangeven, waarna het systeem vervolgens een nieuwe GroupDTO zonder spelers aanmaakt en via de repository toevoegt aan de database.
Er waren voor het implementeren van competitiegroepen geen ingewikkelde beslissingen of oplossingen. Het betreft voornamelijk simpele CRUD-operaties waarvoor de implementatie relatief gemakkelijk is. Wel is voor deze implementatie gekozen om geen gebruik te maken van een servicelaag, omdat alleen de naam van de competitiegroep gedefinieerd kan worden.
USECASE 4
Op het scherm voor het beheren van groepen kunnen spelers aan groepen toegevoegd worden. Dit kan door een groep te selecteren uit de tabel in het midden van het beeld, waarna deze in de rechtertabel uitgebreid wordt weergegeven. Als de groep al spelers bevat worden deze in de rechtertabel afgebeeld. De gebruiker kan nu op de linkertabel op een speler drukken en vervolgens op de pijl naar rechts om deze naar de competitiegroep te verplaatsen. Dit werkt natuurlijk hetzelfde als er een speler uit de competitiegroep gehaald moet worden, dan kan de gebruiker in de rechtertabel een speler aanklikken en vervolgens op de pijl naar links klikken om de desbetreffende speler uit de groep te verwijderen.
Op dit scherm kan de gebruiker een of meerdere spelers van of naar groepen verplaatsen. Door op CRTL + Linker muisklik te drukken kunnen meerdere spelers geselecteerd worden. Aan de hand hiervan stuurt het systeem vervolgens ofwel een enkele of een lijst van DTO's naar de repository, die vervolgens de juiste functie uitvoert om de speler in de groep te zetten of deze eruit te verwijderen. In het geval dat de gebruiker meerdere spelers tegelijkertijd wil invoeren wordt aan de uit te voeren query steeds een nieuwe regel met spelerdata toegevoegd.