Software Engineering – Groep 4 Software Design Description Jeroen Nyckees (Design Manager) Jan-Pieter Hubrecht (Project Manager) 3e Bachelor Computerwetenschappen
[email protected] 11 december 2011
1
Tabel 1: Document geschiedenis v2.0 v1.0 v0.1
10/12/11 13/11/11 12/11/11
Jeroen Nyckees Jan-Pieter Hubrecht Jeroen Nyckees
2
Opmerkingen Aangepast Eindcontrole Kladversie
Inhoudsopgave
Inhoudsopgave 1 Inleiding
5
2 Architectuur 2.1 Multi-tier architectuur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.1 Two-tier architectuur . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6 6 6
3 Decompositie 3.1 conceptuele definitie van het systeem . . . . . . . . . . . . . . . . . . . . . . . . 3.2 codedesign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7 7 8
4 Database 4.1 Entity Relationship Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9 9
5 User Interface 5.1 Gebruikers . . . . . . . . . . . . . . 5.2 Weergave van bezienswaardigheden 5.3 Bezoek afleggen . . . . . . . . . . . 5.4 Databank . . . . . . . . . . . . . .
. . . . . . . . . en wandelingen . . . . . . . . . . . . . . . . . .
3
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
10 10 11 12 12
Referenties
Referenties [1] http://developer.android.com/guide/topics/fundamentals/activities.html. [2] http://en.wikipedia.org/wiki/multitier architecture. [3] http://wilma.vub.ac.be/∼se4 1112/, 2011. [4] IEEE. Software design descriptions - ieee std 1016tm. IEEE Computer Society, 2009.
4
1 Inleiding
1 Inleiding Dit project is in opdracht van Professor Van Der Straeten ter examinatie van de cursus Software Engineering aan de Vrije Universiteit Brussel. De bedoeling is om een Android applicatie te bouwen die functioneert als een interactieve toeristische gids in een bepaalde stad. De gebruiker moet in staat zijn om de nabijgelegen bezienswaardigheden op een vlotte manier te kunnen zoeken en na het lezen van de informatie, eventueel te bezoeken. Door het uitdelen van scores leert de applicatie wandelingen samen te stellen die overeenstemmen met de voorkeuren van de gebruiker. Een gedetailleerd overzicht van de vereisten is terug te vinden in het SRS.
5
2 Architectuur
2 Architectuur De architectuur van de software is het hoogste niveau van design. Op dit niveau wordt beschreven hoe de organisatie van het gehele systeem in zijn werk gaat. Dit niveau abstraheert van de componenten van de software en de onderlinge relaties en kenmerken van componenten.
2.1 Multi-tier architectuur De multi-tier architectuur is een client-server architectuur waarin presentatie, application processing en data-management logisch onafhankelijke processen zijn. Multi-tier architectuur voorziet een model die toelaat om flexibele en herbruikbare applicaties te ontwikkelen. Door het opsplitsen van de applicatie in lagen, moet enkel een specifieke laag aangepast of toegevoegd worden in plaats van de volledige applicatie te herschrijven. 2.1.1 Two-tier architectuur Als conceptuele architectuur voor de stadsgids werd voor werd dus voor een two-tier architectuur gekozen. Dit is een architectuur die uit 2 lagen bestaat. Deze lagen zijn: 1. client-tier (op mobile device) 2. data-tier (op wilma) De client-tier bevat de presentatie en de application logic en de data-tier verzorgt de data access. User
Client Tier Data Tier
Wilma
Figuur 1: 2-tier model
6
3 Decompositie
3 Decompositie 3.1 conceptuele definitie van het systeem Hieronder volgt het UML klassendiagram als conceptuele definitie van het systeem. Profile Language Age PointOfIntrestLog Comment Rating
Constraint ID Comment
HasDone Comment Rating
has PointOfnterest position city
«Includes» 1..*
1
located at
Walk Length Time
located at
is instance of
Type ID
Adress City Country
Figuur 2: UML Klassendiagram
• Profile : Een profiel bevat voor een gebruiker zijn taal, leeftijd, beperkingen, interesses en naam. • Constraint : Een beperking bevat een unieke identifier en een korte beschrijving. • Walk : Een wandeling bevat een aantal POI’s, de totale lengte van de wandeling, de duur van de wandeling, de eventuele beperkingen en interesses. Deze beperking en interesses matchen met diegene die een profiel heeft. • POI : Een POI is een bezienswaardigheid in een stad met een bepaald type. Verder heeft een POI een adres, openingsuren, een naam, een beschrijving en een foto. Een POI houdt net zoals een wandeling ook de eventuele beperkingen en interesses bij.
7
3 Decompositie • Type : De Type klasse wordt gebruikt om het type van een POI aan te duiden. Op die manier kan een Type (vb. McDonalds) in de gedaante van POI’s meerdere keren voor komen in een stad. • Adress : Een Adress bevat een straatnaam, coordinaten, nummer en stad.
3.2 codedesign De applicatie werd opgedeeld in verschillende activities. Hieronder volgt een activity diagram voor het prototype in de eerste iteratie. start
end
LogInAct ivity
Register
Register Activity
LoggedIn Logout
LogIn
HomeAct ivity GPS
GPSActi vity
Figuur 3: Activities Bij het opstarten van de applicatie komt men terecht in de LoginActivity terechts. Wanneer de gebruiker tijdens een vorige sessie ’Remember Md’ aangevinkt heeft dan komt hij direct in de HomeActivity. Anders komt de gebruiker door zijn naam en wachtwoord in te geven in de HomeActivity. Wanneer de gebruiker nog geen profiel had aangemaakt kan hij dat doen door ’Register’ aan te klikken. Wanneer hij zijn naam en wachtwoord heeft ingegeven komt hij ook terecht in HomeActivity. De HomeActivity is het centrale punt van de applicatie, van hieruit wordt doorgedispatcht naar andere activities naargelang wat de gebruiker wil gaan doen. Zo kan men vanuit de HomeActivity naar de GPSActivity. In de GPSActivity staat de logic voor het weergeven van de kaart en het uitstippelen van de weg op die kaart. Uitloggen zorgt ervoor dat men vanuit de HomeActivity terug in de LoginActivity komt.
8
4 Database
4 Database Uiteraard is het niet de bedoeling de volledige database van de applicatie op de Android bij te houden. Daarom zal er met een cache systeem gewerkt worden waarbij een instantie van de database op het Android device wordt bijgehouden. Naargelang de gebruiker meer informatie opvraagt zal via internetconnectie de databank op het Android Device meer opgevuld raken.
4.1 Entity Relationship Model Het database model werd ontwikkeld zodat ondersteuning van meerdere talen mogelijk is. Een user heeft een user een voorkeurstaal die bij het inloggen wordt opgehaald. Wanneer een user een nieuwe gsm heeft dan beschikt hij niet lokaal meer over zijn account waardoor deze informatie verloren gaat. Voor elke entiteit die in verschillende talen moet worden weergegeven werd een aparte entiteit voorzien waarin we de verschillende vertalingen opslaan. Wanneer bijvoorbeeld een beschrijving van een POI gevraagd wordt dan gaat die naargelang de ingestelde taal waarin de applicatie gebruikt wordt weergegeven worden in de correcte taal.
Figuur 4: ERM
9
5 User Interface
5 User Interface In deze sectie wordt de user interface besproken. Er werden mockups gemaakt voor alle activities.
5.1 Gebruikers Bij het opstarten van de applicatie wordt de mogelijkheid geboden om met een bestaand profiel in te loggen of om een nieuw profiel aan te maken.
Figuur 5: Inloggen
Een nieuw profiel registreren zal aan de gebruiker naar een nieuwe activity leiden waarin hij zijn naam, wachtwoord, taal en leeftijd kan opgeven. Indien de gebruiker dit wenst kan hij door op next te klikken in een volgende activity zijn interesses en beperkingen kunnen aangeven. Later is het steeds mogelijk het profiel van de gebruiker aan te passen.
Figuur 6: Registreren van een nieuw profiel
10
5 User Interface
Figuur 7: Interesses en Beperkingen
5.2 Weergave van bezienswaardigheden en wandelingen Eens de gebruiker een profiel aangemaakt heeft krijgt hij de keuze om afzonderlijk bezienswaardigheden te bekijken, een bestaande wandeling te nemen of vrij rond te wandelen (zie 5.3).
Figuur 8: Home
Wanneer hij ervoor kiest om een bestaande wandeling af te leggen dan wordt die wandeling afgebeeld. De weergave van een wandeling bestaat uit een aanduiding van de bezienswaardigheden die in de wandeling vervat zitten op een kaart. Wanneer een bezienswaardigheid geselecteerd wordt, dan wordt de beschikbare informatie over deze bezienswaardigheid aan de gebruiker getoond. Deze informatie bestaat uit afbeeldingen en een tekstuele beschrijving. Indien de gebruiker dit wenst kan hij ook commentaar van andere gebruikers gaan opvragen alsook zelf commentaar geven op de bezienswaardigheden. Verder wordt ook de lengte en
11
5 User Interface duur van de wandeling weergegeven. Indien de gebruiker kiest om bezienswaardigheden afzonderlijk te gaan bekijken worden alle bezienswaardigheden in een lijst weergegeven. Het is mogelijk om in deze lijst te gaan zoeken en filteren op eigenschappen zoals nabijheid, openingsuren, etc. Het selecteren en inspecteren van een een bezienswaardigheid gebeurt op dezelfde manier als wanneer deze vanuit een bestaande wandeling gekozen wordt. Tenslotte kan de gebruiker er voor kiezen zelf een wandeling aan te maken. Hij doet dit door uit de bovenstaande lijst bezienswaardigheden te selecteren. De applicatie berekent dan een weg die gebruiker van de ene bezienswaardigheid naar de andere leidt.
5.3 Bezoek afleggen Eenmaal de gebruiker zijn wandeling gekozen heeft kan hij kiezen om zijn wandeling te starten. De gebruiker wordt dan door pijlen aangeduid op de kaart geleid naar het eerste punt. Wanneer de gebruiker aankomt bij de bezienswaardigheid klikt hij op het aangeduidde punt op de kaart. De beschrijving wordt dan aan de gebruiker getoond.
Figuur 9: Bezoek afleggen
Een vrije rondwandeling houdt in dat op elk moment aan de gebruiker een lijst getoond wordt van bezienswaardigheden gesorteerd op de afstand van de bezienswaardigheid tot de gebruiker. Ook in deze lijst kan men zoeken/filteren.
5.4 Databank Via een eenvoudige webinterface (Ruby On Rails) is het mogelijk om de data te bekijken, aan te passen of toe te voegen aan de bestaande databank.
12