Software Requirements Specification Roux Reinert 18 mei 2011
1
Inhoudsopgave 1 Introduction 1.1 Purpose . . . . . . . . . . . . . . . . . . 1.2 Scope . . . . . . . . . . . . . . . . . . . 1.3 Definitions, acronyms and abbreviations 1.4 References . . . . . . . . . . . . . . . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
2 Overall description 3 Specific requirements 3.1 Guest . . . . . . . . . 3.1.1 Mogelijkheden: 3.1.2 Constraints: . . 3.2 Free member . . . . . 3.2.1 Mogelijkheden: 3.2.2 Constraints: . . 3.3 Gold member . . . . . 3.3.1 Constraints: . .
1 1 1 2 2 3
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
4 4 4 4 5 5 7 9 10
4 Database Requirements
11
5 Design Constraints
11
i
Dit document is een van de verplichte documenten voor het vak SE aan de VUB. Er zal besproken worden welke functionaliteiten het project zal bevatten en wat de vereisten zijn om die functionaliteiten vast te leggen.
1 1.1
Introduction Purpose
Dit document moet dienen als een basis voor de klant en de ontwerpers zodat er minimum functionaliteiten vast gelegd kunnen worden. Verder moet dit document overeen komen met het SPMP en de software vereisten in dat document nader toe lichten.
1.2
Scope
Met de huidige populariteit van smartphones is het interessant om te bekijken hoe games op een vernieuwende manier naar de gebruikers gebracht kunnen worden. Er is natuurlijk de mobiele factor die er voor zorgt dat de smartphone voor virtueel iedereen en overal beschikbaar is en dus een interessant platform vormt om games voor te ontwikkelen. Een aspect dat echter vaak vergeten wordt is dat door de smartphones de games niet meer enkel thuis gespeeld worden maar naar de hele wereld gebracht worden. Dit opent een heel nieuwe mogelijkheid: Location-based Games. Zo kan een spel er bijvoorbeeld uit bestaan door middel van gps locaties een route af te leggen en daar telkens een opdracht uit te voeren of informatie te vergaren. De bedoeling van dit project is het bouwen van een website die location-based games aanbiedt. Gebruikers moeten kunnen registreren en inloggen en vervolgens reeds bestaande games kunnen spelen of zelf hun eigen games starten. Een belangrijk onderdeel van de website zal dan ook de template voor het aanmaken van nieuwe games zijn. Deze template moet het de gebruiker makkelijk maken om zelf games ineen te steken zonder zich daarvoor in een bepaalde programmeer taal te moeten verdiepen.
1
1.3
Definitions, acronyms and abbreviations
• Location-based games Dit zijn computer games die aan de echte wereld gelinkt worden door middel van een bepaalde actie te linken aan een bepaalde locatie. • Wilma Wilma is een multifunctionele linux-server voor de studenten van de faculteit Wetenschappen van de VUB en natuurlijk vooral voor de studenten Informatica. Voor dit project is er ook een speciale gebruiker aangemaakt waar ieder lid van de groep op kan inloggen. Hier zal het project moeten draaien en zullen tevens alle documenten verzameld worden. • VUB Vrije Universiteit Brussel • SE Software Engineering • SPMP Software Project Management Plan • UML Unified Modelling Language • EER Extended Entity Relationship (model)
1.4
References
• Project voorstel (organisatie) • Software Project Management Plan
2
2
Overall description
Het eindproduct zal een website met database zijn waar gebruikers zich kunnen inloggen. Er wordt een onderscheid gemaakt tussen 2 soorten gebruikers: De spelers en de ontwerpers. De eerste groep zal zich gratis kunnen registreren en zal de mogelijkheid hebben om de games op de site te kunnen spelen. Wat deze games helemaal compleet maakt zijn de statistieken die door de site worden bij gehouden alsook de mogelijkheid tot het linken van die resultaten aan sociale netwerken zoals bijvoorbeeld Facebook. Ook zal die groep een beperkte toegang krijgen tot de ontwerp pagina’s zodat men enkele simpele spelletjes ineen zal kunnen steken. Voor het maken van meer gevorderde spelletjes zijn de volledige functionaliteiten van de ontwerp pagina’s nodig. Deze kan je bereiken als je een account van de tweede groep koopt. Men zal dan toegang krijgen tot verschillende templates alsook de mogelijkheid om zelf een template in elkaar te steken. Verschillende intu¨ıtieve formulieren met een vari¨eteit aan opties maken het mogelijk om een eigen dimensie en uitdrukkingskracht aan zo’n template te geven.
3
3
Specific requirements
3.1
Guest
Dit is een gebruiker die niet ingelogd is op de website.
3.1.1
Mogelijkheden:
• inloggen -id1 Er moet een klein formulier met gebruikersnaam en wachtwoord zijn waar de gebruiker tekst kan ingeven. Als de ’login’ knop wordt ingedrukt moet de server in de database gaan kijken of de combinatie van gebruikersnaam en wachtwoord klopt. Als dit het geval is moet de gebruiker op de beveiligde paginas komen. In het andere geval moet er een gepast error bericht komen en moet de gebruiker op de inlog pagina blijven. Prioriteit: Hoogst. • registreren -id2 Ook hier moet een formulier komen waar een gebruiker een gebruikersnaam en wachtwoord kan kiezen. Ook moet er een manier van account verificatie bestaan. Dit kan doormiddel van een bevestigingsmail of een Captcha. Ook moet er een manier bestaan dat de gebruiker zijn wachtwoord juist ingeeft. Dit kan door het wachtwoord mee te geven in de mail of door de gebruiker 2 velden te geven voor zijn of haar wachtwoord en dat die 2 velden dan vergeleken worden. Overigens moet er gecontroleerd worden dat iedere gebruiker maar 1 account heeft. Dit kan gedaan worden door de database te controleren op bepaalde identificerende onderdelen (zoals mail). Verder mag een bepaalde gebruikersnaam maar 1 keer voorkomen. Prioriteit: Hoogst. – verficatie -id3 Prioriteit: Matig. • globale statistieken bekijken -id4 Dit zijn heel minimalistische statistieken over bijvoorbeeld het aantal geregisteerde gebruikers, online gebruikers, actieve gebruikers, gespeelde spellen, lopende spellen, ... Prioriteit: Laag. 3.1.2
Constraints:
• De niet geregistreerde gebruiker mag geen toegang krijgen tot de functionaliteiten van de website, om dit privilege te krijgen dient de gebruiker zich te registreren.
4
3.2 3.2.1
Free member Mogelijkheden:
Eenmaal als de gebruiker succesvol is ingelogd moet hij toegang krijgen tot de hoofdpagina. Succesvol inloggen houdt in dat de gebruiker gekend is door het systeem (een database is hier voor nodig) en dat hij het login formulier correct heeft ingevuld. Als men zich op de hoofdpagina bevindt moet men volgende functionaliteiten ter beschikking hebben: • profielen bekijken -id5 De hoofdpagina zal korte info over de gebruiker zelf bevatten, maar iedere naam van een gebruiker zou een link moeten zijn naar die persoon zijn/haar profiel pagina. Op deze pagina moet dan alle info verschijnen die de gebruiker heeft aangegeven dat publiek mag worden gemaakt. Enkele voorbeelden zijn naam, leeftijd, email adres, huidige spelletjes, scores, links naar andere (sociale) websites, ... Prioriteit: Hoog. • eigen profiel aanpassen -id6 Een gebruiker moet zijn eigen profiel kunnen aanpassen. Er dienen velden voorzien te worden die gerangschikt worden per thema, waar de gebruiker de persoonlijke informatie kan in zetten. Prioriteit: Hoog. • privacy settings -id7 Ook zal er bij elk veld de mogelijkheid zijn om aan te geven hoe publiek deze informatie dient te zijn. (niemand, vrienden of iedereen) Prioriteit: Laag. • games bekijken -id8 Indien men meer info over een spel wil hebben zal men doorgeleid worden naar een pagina die volledig aan 1 spel gewijd wordt en waar alle info over dat spel zal staan. Bijvoorbeeld: een korte omschrijving van de maker van het spel, hoeveel deelnermers er reeds zijn, hoeveel inschrijvingen er nog worden toegelaten, wat de score van het spel is, ... Prioriteit: Hoogst. – hoofdpagina -id9 Op de hoofdpagina zullen ook enkele spelletjes verschijnen. Dit zullen de meest populaire en/of meest recent aangemaakte spelletjes zijn. Prioriteit: Laag. • feedback geven (like/dislike systeem + comment systeem) -id10 Op de game-pagina heeft een gebruiker ook de mogelijkheid om feedback te geven. Indien men het spel reeds gespeeld heeft, kan men een score toekennen aan het spel. (Dit kan in de vorm van een - en een +) Men kan ook commentaar achter laten. Prioriteit: Matig. 5
– sociale controle -id11 Bij deze commentaar moet er een mogelijkheid zijn om misbruik te melden. Zo krijgen we een vorm van sociale controle. Prioriteit: Laag. • games joinen, op invites reageren -id12 Op de game-pagina moet het ook mogelijk zijn om mee te doen aan een spel (indien de maker dit toe laat). Er moet ook een manier bestaan waarop de gebruiker een uitnodiging kan krijgen, dit kan met een mailbox systeem waarbij men een link kan volgen. Of meer gevorderd met een soort ’pop-up’ venster. Prioriteit: Hoogst. • games starten, invites versturen -id13 Een gebruiker moet een spel kunnen starten. Dit doet hij door uit een lijst van mogelijke spellen te kiezen, hier kunnen zelfgemaakte spellen tussen zitten. Als de persoon een spel gekozen heeft dient hij/zij nog de juiste parameters mee te geven (aantal spelers, publiek of enkel uitnodigingen, ...). Prioriteit: Hoog. • uitnodigingen versturen -id14 Spelers moeten elkaar kunnen uitnodigen voor games. En voor spellen die de persoon zelf aanmaakte moeten uitnodingen verstuurd kunnen worden. Hiervoor moet de persoon toegang krijgen tot een lijst met vrienden. Prioriteit: Matig. • priv´ e berichten versturen -id15 Wanneer een speler een profiel van een andere speler bekijkt, heeft hij de mogelijkheid om een bericht te sturen naar deze speler. Per bericht moet er een onderwerp en een inhoud ingevuld worden. Prioriteit: Matig. • priv´ e berichten inbox -id16 Elke speler heeft zijn eigen inbox. Wanneer een nieuwe bericht is verzonden aan deze speler, kan hij dit zien aan het icoontje inbox. Wanneer hij naar de inbox gaat, worden alle berichten weergegeven op datum. Bij elk bericht wordt de afzender, de datum en het onderwerp weergegeven, alsook of het bericht reeds gelezen is. Per bericht zijn er 2 mogelijkheden: we kunnen het bericht lezen of verwijderen. Prioriteit: Matig. • vrienden worden -id17 Wanneer een speler een profiel bekijkt, kan hij deze speler toevoegen als vriend. Als hij dit doet, zal de speler worden toegevoegd aan de vriendenlijst. Zo kan men vlugger naar het profiel van een speler gaan, en moet men deze niets steeds gaan opzoeken in alle spelers. Wanneer we spelers
6
willen uitnodigen voor een game, zal dit ook aan de hand van deze vriendenlijst gebeuren. Prioriteit: Matig. • achievements linken aan sociale netwerken -id18 Tijdens het spel kunnen ’achievements’ behaald worden, deze moeten dan gelinkt kunnen worden aan sociale netwerken. Men dient hiervoor beschikking te hebben tot een lijst met behaalde ’achievements’. Prioriteit: Laag. • Gold membership kopen -id19 Op de hoofdpagina moet ook een linkje te vinden zijn die de gebruiker doorverwijst naar een pagina waar men zich kan registeren als ’Gold Member’. Op deze pagina moet er een formulier ingevuld worden waar men ondermeer facturatie gegevens moet kunnen invullen. Prioriteit: Matig. 3.2.2
Constraints:
Algemeen • Bij het aanpassen van het profiel moet er rekening gehouden worden met de privacy voorkeuren van de gebruiker. • Er moet een duidelijk verschil zijn tussen publieke en private games, die laatste mogen enkel toegankelijk zijn voor gebruikers die een uitnodiging hebben. • Voor de sociale controle kan er groep moderators voorzien worden. Deze moeten toegang kunnen krijgen tot elke pagina op de website (alle games en profielen) zodat zij meldingen van misbruik kunnen controleren. Verder moeten zij dan ook de mogelijkheid hebben om in te kunnen grijpen (berichten verwijderen, ...). Om misbruik door de moderators te voorkomen dienen hun acties in een speciale log te komen. • Bij het lanceren van de site moeten er reeds enkele (kleine) templates voor het maken van kleine/simpele games bestaan. Zodat deze al gebruikt kunnen worden door de free members. Deze templates zullen over tijd aangevuld worden door templates die door de gold members gemaakt worden. Starten van een spel Bij het aanmaken van een spel moeten volgende gegevens beschikbaar zijn: • Een owner (de opstarter van het spel), zo hebben de deelnemers en moderators een contactpersoon. • Uniek ID voor het spel (zo kan de owner unieke links naar zijn spel verspreiden). 7
• De deelnemers aan het spel, zowel het aantal als de personen die mee (mogen) doen. • QR-tags moeten gegenereerd worden, dit moet per spel gebeuren om overlapping te voorkomen. • De owner moet info kunnen toevoegen (voorbeeld: inleidende tekst).
8
3.3
Gold member
Deze member kan templates maken en zo totaal nieuwe spellen bedenken. Hij kan deze dan al dan niet beschikbaar stellen aan free members om vanuit deze templates spellen te starten. • templates maken -id20 Een template is het skelet van een spel. Wij willen aan de makers van spellen uitgebreide mogelijkheden voorzien om hun spel zo uniek mogelijk te maken. Door de structuur die we hieronder beschrijven zal het mogelijk zijn van de meest uiteenlopende soorten spellen vast te leggen. Een wandelroute bestaat simpelweg uit een set Events die bij elke tag een tekstje tonen en eventueel een verwijzing naar een volgende bestemming. Een race kan gemaakt worden door CheckPoints vast te leggen in de user variabelen en Event2 kan dan bijvoorbeeld alleen maar gescand worden als die speler Event1 gepasseerd is. De eindscore wordt dan bepaald door het tijdsverschil tussen het begin en eindpunt. Dit zijn 2 voor de hand liggende voorbeelden, maar er kunnen ook meer ingewikkelde/creatieve spellen bedacht worden. Een template bestaat uit een aantal Events. Een Event is wat er getriggerd wordt als een speler een QR-tag scant. Bij het triggeren van een Event worden de bijhorende Actions van dat Event uitgevoerd. Er zijn verschillende soorten Actions: – ActionPrint(text), deze Action zal een stukje tekst tonen. – ActionImage(image), deze Action zal een afbeelding weergeven. – ActionVariableMath, deze Action voorziet een aantal wiskundige bewerkingen die op een variabele kunnen uitgevoerd worden. – ActionCheckVariable, deze Action laat toe een if-constructie op een variabele uit te voeren. Deze Action wijst dan naar een andere Action IfTrue of IfFalse. – ActionEndGame, deze Action bendigt het spel. – ActionAskInput, deze Action vraagt naar input van de speler (bijvoorbeeld een antwoord op een quiz-vraag) Zoals in de Actions al blijkt moeten er ook variabelen voorzien worden. Dit kunnen globale variabelen zijn, van toepassing op het hele spel (bijvoorbeeld een integer NrOfMinesLeft), of user variabelen, die per speler gelden (bijvoorbeeld een boolean HasPassedCheckpoint).
9
Games worden afgeleid van deze templates. Sommige teksten of numerieke waarden moeten misschien kunnen aangepast worden door de maker van het spel. Dit is bijvoorbeeld het geval bij vragen van een quiz. Daarom kan de maker van een template aangeven of bepaalde waarden een parameter moeten zijn. Bij het maken van een game vanaf deze template zal de spel-maker eerst alle parameters van het spel moeten invullen. Op deze manier kunnen er verschillende games vanuit 1 template gemaakt worden. Prioriteit: Hoog. Mogelijke uitbreiding: online programmeeromgeving om nog meer vrijheid aan de gebruiker te geven om templates te maken.
3.3.1
Constraints:
Algemeen • Er moet een intu¨ıtieve User Interface zijn. • De templates moeten distribueerbaar zijn. maker moet beslissen of zijn template publiek wordt • Als het spel eindigt moet er een winnaar kunnen zijn.
10
4
Database Requirements Het systeem zal gebruik maken van een relationele database.
Alle data die moet worden bijgehouden zal in die database moeten worden bijgehouden, hiervoor dienen minstens volgende tabellen te bestaan: • Users • Games • Templates • Events • Actions • Parameters • Variables Ook dient er een functionaliteit voorzien te worden om op consistente manier de database te backuppen.
5
Design Constraints • Het ontwerp moet modulair zijn zodat er veel ruimte is voor uitbreidingen. • De web interface moet simpel en aantrekkelijk zijn. • Er moet gekozen worden voor een object-ge¨orienteerde programmeertaal. Er is gekozen voor Java. • Er moet met open software gewerkt worden. • De keuze voor bepaalde bibliotheken of hulpmiddelen moet afhangen van betrouwbaarheid en openheid. • Het systeem moet eenvoudig te installeren zijn en draaien op de wilma machine. • Elke design keuze zal moeten worden gemodelleerd in UML. • Het database design moet voldoen aan een EER model.
11