Project presentation of team CWA1 (2011-2012).
Project AtLast (acronym for Another Tool for Learning Analysis and Study Tracking) is an application which allows students to track their activities and efforts, follow up their progress and derive insight in their study progress through statistics.
Try out our application at https://projectatlast.appspot.com/
About Project AtLast
- Blog: http://projectatlast.wordpress.com/
- Wiki: http://ariadne.cs.kuleuven.be/mediawiki/index.php/CWA1-1112
7. Iteratieve ontwikkeling
• eerste iteratie Ontwerpen
– aanmelden en registreren
– activiteiten opvolgen Implementeren
Evalueren
• tweede iteratie
– milestones aanmaken en opvolgen
– grafieken aanmaken en weergeven
Inleiding Ontwerp Interface Data Besluit
8. Ontwerpmethodologie
Klant Ontwikkelaar
scenario’s
Functionaliteit use cases
interface mockup
klassendiagram
Entiteiten domeinmodel
datamodel
Inleiding Ontwerp Interface Data Besluit
9. Uitvoering
Interface
Use case controllers
Model
Persistentie
Inleiding Ontwerp Interface Data Besluit
10. Functionaliteit
Klant Ontwikkelaar
scenario’s
Functionaliteit use cases
interface mockup
klassendiagram
Entiteiten domeinmodel
datamodel
Inleiding Ontwerp Interface Data Besluit
11. Aandachtspunten
Gebruiker
Vrijheid in Gebruiks-
gebruik vriendelijk
Inleiding Ontwerp Interface Data Besluit
12. Gebruiksvriendelijkheid
Klant Ontwikkelaar
Interface mockup Use cases
• ruwe voorstelling van • beschrijving interacties
gebruikersinterface gebruiker ↔ systeem
1. Student indicates he wants to
add a new milestone.
2. System asks the user to choose
between a milestone about study
or free time activities. It does
select study activity as default.
3. Student agrees with this default.
4. System retrieves a list of all
courses in which the user is
enrolled.
5. User chooses a course from the
list.
6. …
Inleiding Ontwerp Interface Data Besluit
14. Probleem
Vrijheid in Gebruiks-
gebruik vriendelijk
• veel verschillende • snelle invoer
parameters
• veel mogelijke • eenvoudig te
combinaties begrijpen
Inleiding Ontwerp Interface Data Besluit
15. Oplossing
• automatisch
uitgeschreven
doelstelling
• adaptieve interface
• opties in lijstweergave
Inleiding Ontwerp Interface Data Besluit
17. Entiteiten
Klant Ontwikkelaar
scenario’s
Functionaliteit use cases
interface mockup
klassendiagram
Entiteiten domeinmodel
datamodel
Inleiding Ontwerp Interface Data Besluit
18. Entiteiten
Klant Ontwikkelaar
Domeinmodel Klassendiagram en datamodel
• uit reële wereld • klassendiagram
= weergave van
implementatie
Student
• datamodel
1 = welke gegevens worden
volgt waar opgeslagen?
0..*
Vak
Inleiding Ontwerp Interface Data Besluit
19. Van query tot grafiek
Query met App Engine Grafiek
• geeft lijst van activiteiten • heeft nood aan
– numerieke gegevens
– groeperingen
Inleiding Ontwerp Interface Data Besluit
20. Van query tot grafiek
Welk pakket is verantwoordelijk?
Inleiding Ontwerp Interface Data Besluit
21. Van query tot grafiek
• groeperen d.m.v. stamboom
Alle activiteiten Query
Per vak Analyse Economie
Per type Theorie Oefeningen Oefeningen
Inleiding Ontwerp Interface Data Besluit
22. Activity slices
• slechts één veld met ongelijkheden
per query
• probleem: twee ongelijkheden nodig om
tussen twee data te selecteren
• oplossing: discretiseren
– opsplitsen in schijfjes van één uur (slices)
– één datum toewijzen aan elke slice
• bonus: selecteren op weekdag of uur
Inleiding Ontwerp Interface Data Besluit
23. Activity slices
Wat is de totale studieduur?
zoekinterval
Activiteit 1 Activiteit 2 Activiteit 3
Met slices
Activiteit 1 Activiteit 2 Activiteit 3
Inleiding Ontwerp Interface Data Besluit
24. Quota’s van App Engine
• quota’s per 24 uur
• quota overschreden
– applicatie offline
– boze klanten en boze baas
• oplossing?
Apply more caching!
Inleiding Ontwerp Interface Data Besluit
Beide functionaliteiten horen thuis bij het query pakket.Groeperen is sorteren van data en hoort thuis bij query, niet bij grafiek.Data omzetten naar numerieke resultatenQuery is verantwoordelijk voor het verwerken van data.Numerieke resultaten zijn ook nodig voor milestonen (mocht dit niet in query gebeuren)Graph en milestone zouden twee keer hetzelfde moeten doen (code duplicatie)Graph zou dan methoden voor milestones moeten aanroepen of omgekeerd (logisch incoherent)De berekeningen gebeuren met een Parser.Relaties:Grafieken laten Query gegevens opvragen en verwerken, grafieken halen resultaten op uit de boom.Milestones laten Query gegevens opvragen en numeriek resultaat berekenen, milestones vergelijken resultaat met doel.
Standaard App Engine query geeft een lijst terug.Onze query geeft een boom terug.Ieder element in de boomHeeft een sleutelnaam gekregen van groeperingKan verder gegroepeerd wordenBladBevat lijst van activiteitenTakBevat andere takken of bladenGeen limiet op aantal subgroepenEnkel gelimiteerd door weergavemogelijkheden van grafieken