Molapse: Poor man’s MOLAP Freark van der Berg, (s0139971)
[email protected] Robert Dahmen, (s0113093)
[email protected]
Harold Bruintjes, (s0141844)
[email protected] Sandra Drenthen, (s0146110)
[email protected]
Cecill Etheredge, (s0150207)
[email protected] June 16, 2009
Contents 1 Inleiding 1.1 Aanleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Motivatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3 Vooruitblik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2 2 2 2
2 Analyse 2.1 Domein Analyse . . . . . . . 2.1.1 Probleem/Doel . . . . 2.1.2 Achtergrondinformatie 2.1.3 Gebruikers . . . . . . 2.1.4 Omgeving . . . . . . . 2.2 Requirements . . . . . . . . . 2.2.1 Functionele eisen . . . 2.2.2 Niet-functionele eisen 2.3 Use Case Analyse . . . . . . .
. . . . . . . . .
3 3 3 3 4 4 4 4 5 5
. . . . .
6 6 6 6 7 7
3 Architectureel ontwerp 3.1 Keuzes . . . . . . . . . . . . 3.1.1 Structuur . . . . . . 3.1.2 Talen . . . . . . . . 3.1.3 Libraries . . . . . . . 3.1.4 Implimentatiekeuzes
. . . . .
. . . . . . . . .
. . . . .
. . . . . . . . .
. . . . .
. . . . . . . . .
. . . . .
. . . . . . . . .
. . . . .
. . . . . . . . .
. . . . .
. . . . . . . . .
. . . . .
. . . . . . . . .
. . . . .
. . . . . . . . .
. . . . .
. . . . . . . . .
. . . . .
. . . . . . . . .
. . . . .
. . . . . . . . .
. . . . .
. . . . . . . . .
. . . . .
. . . . . . . . .
. . . . .
. . . . . . . . .
. . . . .
. . . . . . . . .
. . . . .
. . . . . . . . .
. . . . .
. . . . . . . . .
. . . . .
. . . . . . . . .
. . . . .
. . . . . . . . .
. . . . .
. . . . . . . . .
. . . . .
. . . . . . . . .
. . . . .
. . . . . . . . .
. . . . .
. . . . . . . . .
. . . . .
. . . . . . . . .
. . . . .
. . . . . . . . .
. . . . .
. . . . . . . . .
. . . . .
4 Gedetailleerd ontwerp 5 Testen 5.0.5 5.0.6
8
Acceptatietest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Scenario-testen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9 9 10
6 Evaluatie
11
A Begrippenlijst
12
B Literatuur
13
C Diagrammen
14
D Screenshots
15 1
Chapter 1
Inleiding 1.1
Aanleiding
Dhr M. van Keulen is docent van het vak ..... In dit vak wordt MOLAP behandeld. Om de studenten een duidelijk beeld te kunnen geven wat MOLAP inhoud zou de docent graag een tool tot zijn beschikking hebben die MOLAP en de werking ervan kan visualiseren.
1.2
Motivatie
Ruim voor de start van het vak: Ontwerpproject stond de huidige werkgroep al vast. De werkgroep bestaat uit een aantal mensen die graag iets in 3D wilden programmeren en een aantal mensen die liever aan de lagen code eronder wilden werken. Dit ontwerpproject past bij exact met de wensen van de groep. Wat ons extra aansprak aan dit project is dat het resultaat daadwerkelijk gebruikt gaat worden, waardoor het bouwen van de applicatie een stuk interessanter wordt.
1.3
Vooruitblik
Het project is al eens eerder gedaan voor het Ontwerpproject van een andere groep. Deze groep had vooral problemen in het programmeren in 3D. Ons voordeel is dat we een aantal mensen in de groep hebben met ervaring in 3D programmeren, waardoor we op dat gebied minder problemen kunnen verwachten dan de vorige groep. Mede daarom verwachten we een betere applicatie te kunnen schrijven die de docent met trots kan gebruiken in zijn hoorcollege.
2
Chapter 2
Analyse 2.1 2.1.1
Domein Analyse Probleem/Doel
De opdracht was om een MOLAP-applicatie te ontwerpen en te realiseren. Deze dient een onderliggende database in 3D te visualiseren door de data in cubes weer te geven. Deze cubes dienen te kunnen worden geroteerd en daarnaast dienen de meest belangrijke OLAPoperaties uitgevoerd te kunnen worden. Verder zullen er aan aantal voorbeelddatabases gemaakt moeten worden waar de applicatie op zal kunnen draaien.
2.1.2
Achtergrondinformatie
MOLAP (Multidimensional OLAP) is een speciale vorm van OLAP (On-Line Analytical Processing). Hierdoor zal eerst uitgelegd worden wat OLAP is alvorens in te gaan op de vraag wat MOLAP is en waar het voor gebruikt wordt. OLAP Bij bedrijven is OLAP (On-Line Analytical Processing) een methode om inzicht te krijgen en betekenis te halen uit de grote databases die de bedrijven bezitten. Door gegevens te aggregeren en te extraheren kunnen strategie¨en geformuleerd worden en kan een overvloed aan informatie worden gefilterd zodat alleen de gewenste informatie overblijft. De OLAPtoepassingen worden voornamelijk door verkoop- en marketingsafdelingen gebruikt. Dit geeft aan waar OLAP-toepassingen met name geschikt voor zijn: het analyseren van verkoopgegevens per klantengroep, product, regio, enz. MOLAP Zoals eerder genoemd is MOLAP een speciale vorm van OLAP, waarbij gegevens uit een onderliggende database op een multidimentionale spreadsheet worden weergegeven in plaats van op een 2D spreadsheet. Hier kunnen een aantal standaardoperaties zoals Slice, Dice, Roll-up e.d. op gedaan worden om de toegankelijkheid en overzichtelijkheid van de data te verbeteren.
3
Bestaande Software ....
2.1.3
Gebruikers
De te ontwerpen tool is bedoeld voor educatieve doeleinden; het zal worden gebruikt in een hoorcollege om studenten een beeld te geven wat MOLAP is en hoe MOLAP gebruikt kan worden om een overvloed aan informatie inzichtelijk te maken.
2.1.4
Omgeving
De applicatie zal gedraaid worden op de computer van de docent of op de computer in de collegezalen waar er les gegeven wordt. Op deze computers draait zowel Linux als Windows.
2.2 2.2.1
Requirements Functionele eisen
Grafisch R1: Kwaliteit uiterlijk: Het grafische component moet er goed en overzichtelijk uitzien om de werking van MOLAP zo goed mogelijk weer te kunnen geven. De waarden in de cubus, de headers en labels moeten goed leesbaar zijn en het moet duidelijk zijn welke as welke dimensie is. R2: Onderscheidend: visuele elementen moeten eenvoudig onderscheidbaar zijn van elkaar, met in het achterhoofd dat de applicatie getoond zal worden via een beamer. Hierbij valt te denken aan kleuren met duidelijk contrastverschil. R3: Animaties: MOLAP operaties moeten duidelijk geanimeerd worden zodat het duidelijk is wat het resultaat is en hoe dat wordt bereikt. R4: 3-dimensionaal: een cubus is het best geschikte element voor de MOLAP-visualisatie omdat je een 2D spreadsheet kunt voorstellen als een vierkant. Meerdere vierkanten achter elkaar om een derde dimensie te cre¨eren resulteert in een cubus. Database R5: Meerdere voorbeelddatabases: Het is zeer wenselijk om meerdere voorbeelddatabses te kunnen selecteren. Door verschillende voorbeelden te gebruiken kan het begrip van de student toenoemen. Deze voorbeelddatabases hoeven alleen uitgelezen te worden. MOLAP-Operaties R6: Slice ... R7: Dice ... R8: ... ...
4
2.2.2
Niet-functionele eisen
Algemeen R9: Lichtgewicht: De tool moet niet onnodig veel resources gebruiken om ook op langzame computers, die veelal in de collegezalen staan, bruikbaar te zijn. R10: Multiplatform: Om het gebruiksgemak te vergroten en geen systeemeisen op te leggen, moet de tool multiplatform zijn en zowel op Linux als Windows draaien. R11: Onderhoudbaarheid: De broncode van het programma is volledig en juist gedocumenteerd en zal modulair gebouwd worden om het in een later stadium mogelijk te maken een component te vervangen of uit te breiden. R12: Betrouwbaarheid: Het programma is bedoeld voor demonstratiedoeleinden. De database wordt handmatig aangepast en de tool zal uitgaan van het correct en volledig zijn van de gegeven informatie. Gegeven dat aan deze eigenschap voldaan wordt, zal het programma zich goed en foutloos laten schalen. R13: Responsetijd Ondanks dat de tool mogelijk op oudere systemen gebruikt zal gaan worden, moet het systeem vlot en vloeiend reageren op wijzigingen om de werking van MOLAP zo intu¨ıtief mogelijk te laten zien. Hardware R14: Grafische kaart: Vanwege technische limitaties van oudere grafische kaarten is het niet mogelijk om de 3D visualisatie op deze kaarten effici¨ent genoeg te implementeren. De minimale vereisten voor onze applicatie houden daarom onder meer in dat er een NVIDIA GeForce 6 series (of hoger) aanwezig moet zijn in het systeem waarop de applicatie wordt gedraaid. R15: Geheugengebruik: De tool zal gebruikt worden bij databases die klein van grootte zijn met ten hoogste 250 elementen. Omdat het eenvoudig mee te nemen moet zijn zal de tool dan ook niet meer dan 20MB schijfruimte in beslag nemen. Het geheugengebruik zal niet hoger zijn dan 1GB, omdat veel computers niet beschikken over meer dan deze hoeveelheid geheugen. Database R16: Beschikbaarheid: Om tijdens een college bruikbaar te zijn, zou het niet afhankelijk mogen zijn van een internetverbinding of server. De database moet dus bij voorkeur lokaal draaien om de werking te garanderen op plekken waar een van beide eerder genoemde diensten niet beschikbaar is.
2.3
Use Case Analyse
....
5
Chapter 3
Architectureel ontwerp 3.1
Keuzes
Om tot een architectureel ontwerp te komen zijn er een aantal keuzes gemaakt. Deze zijn overzichtelijk opgesomd.
3.1.1
Structuur
Model-view-controller Volgens het ontwerppatroon van Model-view-controller wordt de applicatie in drie componenten verdeeld: Model, View, Controller. Dit patroon sluit goed aan bij de modulaire structuur van onze software. Als bijkomstigheid kunnen de onderdelen verdeeld worden over teamleden van dit project, waardoor iedereen zich kan specialiseren op zijn of haar eigen onderdeel. Uitleg onderverdeling: Het model is een multidimensionale database, welke aangesproken wordt door de controller. De controller geeft vervolgens de opdracht aan de view om deze informatie overzichtelijk weer te geven als een kubus. De gebruiker kan tot slot in de vieuw ook OLAP-operaties uitvoeren. Deze informatie komt bij de controler binnen die aan de database de nieuwe informatie na de bewerking opvraagt en deze vervolgens update op de vieuw.
3.1.2
Talen
C++: Deze programmeertaal is een effici¨ente taal die multi-platform en object geori¨enteerd is. Voor Java is niet gekozen omdat deze zich minder makkelijk aan een database-platform laat koppelen. Daarnaast wordt de performance en lichtgewichtheid gehinderd vanwege de extra lagen tussen de hardware en de applicatie. SQL: Deze taal is de voor ons enige bekende gestructureerde en gestandaardiseerde taal om een database te maken en aan te spreken.
6
Bennu: Voor het controller gedeelte van het programma leek het handig om in plaats van bijvoorbeeld C/C++ gebruik te maken van een scripttaal, omdat deze zich beter leent voor flexibele en eenvoudig on-the-fly aanpasbare code. Een eis aan de mogelijke scripttaal is dat deze crossplatform moet zijn, waardoor onder andere Python, Lua en Bennu geschikte mogelijkheden zijn. Aangezien een teamlid veel positieve ervaring heeft met Bennu (hij is medeontwikkelaar ervan), is er gekozen voor Bennu. Een handige feature van Bennu is het gebruik van processen. Dit zijn semi-threads, die zich binnen ´e´en thread op OS niveau gedragen als meerdere threads. Ze zijn vergelijkbaar met coroutines.
3.1.3
Libraries
SQLite Deze lichtgewichte open-source library laat zich heel gemakkelijk integreren en draait in tegenstelling tot andere programma’s (zoals MySQL en PostgreSQL) op een lokale host in plaats van een server. Het programma slaat de database op in een enkel bestand, welke eenvoudig mee te nemen is. SDL (Simple DirectMedia Layer) SDL is een abstractielaag tussen de applicatie en het besturingssysteem dat het ontwikkelen van platformonafhankelijke software bevordert. Verder is SDL reeds in Bennu ge¨ıntegreerd, waardoor het gebruiken van deze functionaliteit geen extra problemen met zich zou moeten meebrengen. OpenGL Deze API kan gebruikt worden om 3D-weergave te verzorgen. DirectX is ook geschikt hiervoor, maar deze is niet multi-platform. Verder is OpenGL een open standaard die vrij te gebruik is en hebben verschillende teamleden er al ervaring mee.
3.1.4
Implimentatiekeuzes
... ....
7
Chapter 4
Gedetailleerd ontwerp ....
8
Chapter 5
Testen 5.0.5
Acceptatietest
Om in de laatste weken van het project zeker te zijn dat de opdrachtgever en de ontwerpprojectgroep daadwerkelijk op een lijn liggen is er een acceptatietest uitgevoerd op 9 juni 2009. Hier heeft de opdrachtgever de mogelijkheid om de applicatie te testen op verschillende gebieden en kan hij eventueel probleem- en verbeterpunten van de applicatie aangeven. Visualisatie De visualisatie van MOLAP is volgens de opdrachtgever naar behoren uitgevoerd. Het kleurenschema, de labels en de indeling van de GUI is goedgekeurd. Ook vond de docent het meedraaien van de labels een mooie toevoeging op de overzichtelijkheid van de data. De mogelijkheid om aggegraties weer te geven naast de cube werkte tijdens de test niet: De inhoud van de aggegraties waren leeg. Dit probleem werd gelukkig terplekke al opgelost. Aansturing Na een korte introductie van een paar minuten was het voor de opdrachtgever al duidelijk hoe het programma aangestuurd diende te worden. De applicatie reageert op een logische manier op de input van de gebruiker en de animaties werken vloeiend. Standaard MOLAP operaties De database moet kunnen worden gesliced op de gekozen rij, kolom of diepte. Dit zou ook meerdere malen achter elkaar moeten kunnen en als men 2x hetzelfde sliced, wordt de slice ongedaan gemaakt en zie je het oude figuur weer. De grid-orientation-widget voegt de benodigde extra informatie om aan te geven op welke as je de gewenste operaties uitvoert. De docent was daar zeer over te spreken. Alle MOLAP-operaties werkten perfect, behalve de operatie: Dice. Deze liet de gebruiker een bepaalde cube selecteren en bracht deze alleen in beeld. Alle extra informatie van deze cube moet nog worden toegevoegd. Meerdere voorbeelden Het laden van meerdere voorbeelden werkt vlekkeloos. Daar waar in de code een database geladen wordt dient de database aangepast te worden tot 1 van de andere aangeleverde voor-
9
beelddatabases. Als de aplicatie dan opnieuw gestart wordt, wordt het nieuwe voorbeeld geladen. De docent vond dit acceptabel. Verschillende computers / besturingssystemen ....
5.0.6
Scenario-testen
....
10
Chapter 6
Evaluatie ....
11
Appendix A
Begrippenlijst ....
12
Appendix B
Literatuur ....
13
Appendix C
Diagrammen ....
14
Appendix D
Screenshots Om een betere impressie te krijgen referenen we naar Figuur D.1.
Figure D.1: Screenshot of the application
15