Eindrapport Nahnisim
2013-2014
1
Sim Jacobs Han Mermans Niels Mangelschots Niels Maes 3e Jaar Toegepaste Informatica Thomas More Geel
2
VOORWOORD Deze analyse is gemaakt in het kader van het vak Businessproject en businesscommunicatie in de opleiding Toegepaste Informatica aan de Thomas More Hogeschool Kempen te Geel. Het is opgesteld in een samenwerking tussen Sim Jacobs, Niels Maes, Niels Mangelschots en Han Mermans. Wij willen enkele mensen bedanken voor hun hulp bij het tot stand brengen van dit document. Allereerst bedanken we de jeugddienst van de stad Turnhout, vooral Loes omdat zij ons van alle nodige informatie voorzag. Ook bedanken we bij deze onze coaches Els Peetermans en Dirk De Peuter voor hun steun bij het schrijven van de inhoud.
3
MANAGEMENTSAMENVATTING Dit document bevat een uitgebreide analyse die steun biedt bij de creatie van een webapplicatie die het beheer van de jeugddienst van de stad Turnhout zal vergemakkelijken. De beschrijving van de functionele eisen bevat een opsomming van alle eisen waaran de applicatie zal moeten doen. Deze eisen zullen ook een prioriteit meekrijgen dankzij het toepassen van de MoSCoW-‐ methode. Zo worden de eisen van zowel de webapplicatie als de website beschreven, maar ook de integratie met de sociale netwerksite Facebook. Vervolgens vindt u een volledig uitgewerkt datamodel dat weergeeft hoe de data van de leden zal worden bijgehouden. Een datamodel stelt de tabellen in de database en hun relaties visueel voor. De relaties zullen ook worden beschreven en tenslotte wordt ook visueel weergegeven wat personen met verschillende bevoegdheden zullen kunnen doen met het systeem in het Use Case Diagram. Aangezien de jeugddienst van Turnhout momenteel Excel-‐bestanden gebruikt bij het organiseren van hun werking is er ook onderzoek gedaan naar het importeren van Excel-‐gegevens. Hoe dit wordt mogelijk gemaakt wordt verder beschreven in dit document. Beveiliging van de gevoelige gegevens in de database stond bovenaan het prioriteitenlijstje. Daarom wordt ook beschreven hoe hier de nodige aandacht aan wordt geschonken. Omdat Facebook zo gigantisch populair is bij jongeren kan enige vorm van integratie in deze webapplicatie niet ontbreken. Daarom is er ook uitgebreid onderzocht welke van de vele nuttige features die Facebook aanbiedt op deze webapplicatie van toepassing zouden kunnen zijn. Om te kiezen uit de vele verschillende programmeertalen en databasemanagementsystemen is een Weighted Ranking Methode toegepast. Deze vorm van vergelijken geeft de gekozen criteria elk een wegingsfactor waarmee de score die aan de mogelijke keuze wordt gegeven vermenigvuldigd wordt. Zo krijg je een zo objectief mogelijke vergelijking.
4
INHOUDSTAFEL VOORWOORD ..................................................................................................... 2 MANAGEMENTSAMENVATTING ........................................................................... 3 INHOUDSTAFEL .................................................................................................. 4 INLEIDING ......................................................................................................... 7 1
FUNCTIONELE EISEN ........................................................................... 8
1.1 1.2 1.2.1 1.2.2 1.2.3 1.2.4 1.3 1.3.1 1.3.2
Beschrijving functionele eisen ............................................................. 8 Applicatie ............................................................................................. 8 Ledenlijst beheren ...................................................................................8 Activiteiten beheren.................................................................................8 Gesprekken beheren ................................................................................8 Statistieken genereren .............................................................................8 Mailsysteem ......................................................................................... 8 Inleiding ................................................................................................8 osTicket .................................................................................................9
1.4 1.4.1 1.4.2 1.5 1.6
Website ............................................................................................... 9 Registratie .............................................................................................9 Activiteitenkalender .................................................................................9 Integratie Facebook ........................................................................... 10 MoSCoW ............................................................................................ 10
1.3.2.1 1.3.2.2 1.3.2.3 1.3.2.4
Beschrijving ...................................................................................................................... Installatie en implementatie ................................................................................................ Prijs ................................................................................................................................. Conclusie ..........................................................................................................................
9 9 9 9
2
DATAMODEL ....................................................................................... 11
2.1 2.2 2.3 2.4
Relationeel schema ............................................................................ Attributenlijst .................................................................................... Relatiebeschrijvingen ........................................................................ Use Case Diagram ..............................................................................
3
INVOEGEN EXCEL-GEGEVENS IN DATABASE ...................................... 17
3.1 3.2 3.3
Wat is een CSV bestand?.................................................................... 17 Voorbeeld CSV bestand ...................................................................... 17 Voordelen .......................................................................................... 17
4
ENCRYPTIE ........................................................................................ 18
4.1 4.1.1 4.1.2 4.2
Methode: Salt..................................................................................... 18 Voorbeeld ............................................................................................ 18 Waarom encrypten van data? ................................................................. 18 Risico’s .............................................................................................. 18
5
ANALYSE FACEBOOK .......................................................................... 19
5.1 5.1.1 5.1.2 5.1.3 5.2 5.2.1
Sociale plug-ins ................................................................................. 19 Like Button........................................................................................... 19 Send Button ......................................................................................... 19 Comments ........................................................................................... 19 Facebook API’s .................................................................................. 20 Open Graph API .................................................................................... 20
5.3
Conclusie ........................................................................................... 21
5.2.1.1 5.2.1.2
11 12 14 16
Social Graph .................................................................................................................... 20 Voorbeeld ........................................................................................................................ 20
6
ANALYSE PROGRAMMEERTALEN ........................................................ 22
6.1 6.1.1
Aanbod van verschillende talen ......................................................... 22 PHP ..................................................................................................... 22
5 6.1.1.1 6.1.1.2
Voordelen ........................................................................................................................ 22 Nadelen ........................................................................................................................... 22
6.1.2.1 6.1.2.2
Voordelen ........................................................................................................................ 23 Nadelen ........................................................................................................................... 23
6.1.2 6.1.3
6.1.3.1 6.1.3.2
6.1.4
6.1.4.1 6.1.4.2
6.1.5
6.1.5.1 6.1.5.2
6.2 6.2.1 6.2.2 6.2.3 6.3
ASP.NET .............................................................................................. 23 Ruby ................................................................................................... 24
Voordelen ........................................................................................................................ 24 Nadelen ........................................................................................................................... 24
Python ................................................................................................. 24
Voordelen ........................................................................................................................ 25 Nadelen ........................................................................................................................... 25
Java .................................................................................................... 25
Voordelen ........................................................................................................................ 26 Nadelen ........................................................................................................................... 26
Een keuze maken ............................................................................... 26 Kostprijs .............................................................................................. 26 Weighted Ranking Method ...................................................................... 26 Weighted Ranking Method - Verklaring ..................................................... 28 Conclusie ........................................................................................... 28
7
ANALYSE DATABASEMANAGEMENTSYSTEMEN ................................... 29
7.1 7.1.1
Aanbod van verschillende databasemanagementsystemen ................ 29 Microsoft Access.................................................................................... 29
7.1.2
MySQL ................................................................................................. 30
7.1.1.1 7.1.1.2 7.1.2.1 7.1.2.2
7.1.3
7.1.3.1 7.1.3.2
7.1.4
7.1.4.1 7.1.4.2
7.1.5
7.1.5.1 7.1.5.2
7.2 7.2.1 7.3
Voordelen ........................................................................................................................ 29 Nadelen ........................................................................................................................... 29 Voordelen ........................................................................................................................ 30 Nadelen ........................................................................................................................... 30
Microsoft SQL Server ............................................................................. 30
Voordelen ........................................................................................................................ 30 Nadelen ........................................................................................................................... 30
Oracle Database.................................................................................... 31
Voordelen ........................................................................................................................ 31 Nadelen ........................................................................................................................... 31
SQLite ................................................................................................. 31
Voordelen ........................................................................................................................ 31 Nadelen ........................................................................................................................... 31
Een keuze maken ............................................................................... 32 Weighted Ranking Method - Verklaring ..................................................... 32 Conclusie ........................................................................................... 33
8
SUB TOOLS STATISTIEKEN GENEREREN ............................................. 34
8.1 8.1.1 8.1.2 8.1.3 8.2 8.2.1 8.2.2 8.2.3 8.3 8.3.1 8.3.2 8.4 8.5 8.5.1 8.5.2
Google Charts .................................................................................... 34 Voordelen ............................................................................................ 34 Nadelen ............................................................................................... 34 Voorbeelden ......................................................................................... 34 Chart.js .............................................................................................. 35 Voordelen ............................................................................................ 35 Nadelen ............................................................................................... 35 Voorbeelden ......................................................................................... 35 WRM .................................................................................................. 36 Resultaat ............................................................................................. 36 Verklaring ............................................................................................ 36 Conclusie ........................................................................................... 36 Bootstrap ........................................................................................... 37 Voordelen ............................................................................................ 37 Voorbeelden ......................................................................................... 37
9
REEDS BESCHIKBARE PAKKETTEN ..................................................... 38
9.1 9.2 9.2.1
Wat is SQL injectie, sessionhacking en XSS-scripting? ....................... 38 Framework ........................................................................................ 38 CodeIgniter .......................................................................................... 38
9.2.1.1
Voordelen ........................................................................................................................ 38
6 9.2.1.2
Nadelen ........................................................................................................................... 38
9.2.2.1 9.2.2.2 9.2.2.3
Voordelen ........................................................................................................................ 39 Nadelen ........................................................................................................................... 39 Conclusie ......................................................................................................................... 39
9.2.2
9.3 9.3.1
9.3.1.1 9.3.1.2 9.3.1.3
9.3.2
9.3.2.1 9.3.2.2 9.3.2.3
9.3.3
9.3.3.1 9.3.3.2 9.3.3.3
9.4
Symfony2 ............................................................................................ 39
Content managementsystemen .......................................................... 39 Joomla ................................................................................................. 39
Voordelen ........................................................................................................................ 39 Nadelen ........................................................................................................................... 39 Conclusie ......................................................................................................................... 39
Drupal ................................................................................................. 40
Voordelen ........................................................................................................................ 40 Nadelen ........................................................................................................................... 40 Conclusie ......................................................................................................................... 40
Apex ................................................................................................... 40
Voordelen ........................................................................................................................ 40 Nadelen ........................................................................................................................... 40 Conclusie ......................................................................................................................... 40
WRM .................................................................................................. 41
BESLUIT…. ....................................................................................................... 42 LITERATUURLIJST............................................................................................ 43
7
INLEIDING De jeugddienst van Turnhout is een vereniging die zich inzet voor de jongeren in Turnhout. Ze organiseren wekelijks spelletjes, gaan met de kinderen op reis en zijn een contactpunt voor de jongeren. Bij het organiseren van activiteiten, reizen en het bijhouden van jongeren komen natuurlijk een heleboel administratieve zaken bij kijken. Deze worden momenteel bijgehouden in een Excel-‐document. Dit document omvat allerlei informatie van de kinderen en activiteiten. Na verloop van tijd wordt zo’n bestand te groot en dus te omslachtig om mee te werken. Het was overduidelijk dat de jeugddienst nood had aan een nieuw systeem dat beter omgaat met informatie. Een systeem dat alle informatie in verband met kinderen en activiteiten bijhoudt, zorgt voor een betere communicatie met de jeugd, in een grafische vorm alle bijgehouden informatie kan tonen en nog veel meer. Daarom werd de hulp van de studenten van 3Ti ingeroepen. Het is onze opdracht om een project te analyseren dat eventueel uitgewerkt kan worden tot een webapplicatie die de jeugddienst kan gebruiken. De teksten en diagrammen over deze analyse staan volledig uitgewerkt in dit document. Het is via dit document dat we onze visie willen tonen aan de jeugddienst van Turnhout. We bespreken de verschillende aandachtspunten die de dienst ons heeft opgedragen. Elk aandachtspunt is geanalyseerd en verwerkt. Hierdoor ontstaat er een document waarin alle tools staan beschreven die nodig zijn voor de uitwerking van de applicatie. We beginnen met het bespreken van de functionele eisen die de jeugddienst heeft opgesteld. Op basis van deze eisen creëren we een MoSCoW-‐overzicht dat duidelijk maakt welke eisen voorrang krijgen en welke eventueel kunnen afvallen in geval van tijdsnood. Het datamodel dat van toepassing is wordt ook volledig besproken en gevolgd door het use case diagram. Deze geeft een beeld van wat de gebruikers allemaal moeten kunnen met het systeem. Hierna begint de eigenlijke analyse van mogelijke oplossingen voor het systeem. We bespreken onder meer de integratie van de bestaande Excel-‐documenten in het nieuwe project, hoe we de veiligheid kunnen garanderen doormiddel van encryptie en hoe de integratie van verschillende Facebook plug-‐ins en API’s van toepassing zijn voor de applicatie. In het geval van het ontwikkelen van een nieuw systeem bekijken we ook de keuze van programmeertalen en welke hiervan de meest voordelige is. We doen ook een onderzoek naar eventuele bestaande pakketten die handig kunnen zijn voor het project. We bekijken hierbij onder andere de beschikbare CMS-‐systemen die op het internet te vinden zijn.
8
1
FUNCTIONELE EISEN
1.1
Beschrijving functionele eisen
•
•
Applicatie o Ledenlijst beheren (toevoegen, bekijken, aanpassen, verwijderen) o Activiteiten beheren (toevoegen, bekijken, aanpassen, verwijderen) o Gesprekken beheren (toevoegen, bekijken, aanpassen, verwijderen) o Statistieken genereren o Mailsysteem Website o Registratie voor leden o Activiteitenkalender
1.2
Applicatie
1.2.1
Ledenlijst beheren
Om een goed overzicht te bewaren van de leden zal de jeugddienst jongeren kunnen toevoegen aan hun ledenlijst. De detailgegevens van de leden zullen kunnen bekeken en aangepast worden. Er zal ook een profielfoto kunnen worden toegevoegd. Deze profielfoto kan ook worden aangepast. Wanneer er een lid verhuist zal hij/zij verwijderd kunnen worden uit de lijst. Van elk lid wordt ook bijgehouden wie de ouders zijn, en wie zijn broers of zussen zijn. Kinderen kunnen worden gesorteerd en gezocht op basis van verschillende criteria. Bij overschrijding van een bepaalde leeftijd zal een lid niet meer onder de vleugels van de jeugddienst vallen en bijgevolg een andere status krijgen of verwijderd worden uit de lijst. 1.2.2
Activiteiten beheren
Van de georganiseerde activiteiten zullen ook een aantal gegevens kunnen worden bijgehouden. Zo zijn er de naam, datum en plaats van de activiteit, maar ook een lijst van benodigdheden voor de organisatie en een lijst van aanwezigen. Er zullen activiteiten kunnen worden bekeken, aangepast, toegevoegd en verwijderd worden. 1.2.3
Gesprekken beheren
Indien nodig voeren de medewerkers van de jeugddienst gesprekken met leden die het nodig hebben. Van deze gesprekken wordt ook informatie bijgehouden. 1.2.4
Statistieken genereren
Om het stadsbestuur te overtuigen van het nut van hun werking wenst de jeugddienst statistieken te kunnen voorleggen. Deze statistieken kunnen worden gegenereerd uit de database.
1.3
Mailsysteem
1.3.1
Inleiding
Om vlot te werken zou het handig zijn als het mailverkeer ook in de web applicatie wordt verwerkt. Het is mogelijk een lijstje van inkomende mails weer te geven en aan de hand van enkele clicks de binnenkomende post door te geven aan de bevoegde medewerkers. Deze mensen kunnen dan de vraag beantwoorden of de informatie verwerken binnen dezelfde applicatie.
9
1.3.2
osTicket
1.3.2.1
Beschrijving
osTicket is een plugin die het mogelijk maakt om een mailsysteem in je applicatie te implementeren indien er gebruik wordt gemaakt van PHP en MySQL. Uit de afweging van de te gebruiken programmeertalen blijkt dat een implementatie van osTicket zeker mogelijk is binnen de webapplicatie. 1.3.2.2
Installatie en implementatie
De installatie wordt via een stappenplan uitgelegd op de website http://osticket.com/wiki/Home. Na de installatie zal osTicket moeten geconfigureerd worden. Ook hiervoor is een handleiding te vinden op de website. Om mails te versturen zal je altijd een e-‐mailadres nodig hebben. osTicket kan geconfigureerd worden met een Gmailadres. 1.3.2.3
Prijs
osTicket biedt verschillende paketten aan. •
•
•
•
1.3.2.4
Gratis: o Zelf hosten o Ondersteund door de gebruikersgemeenschap Basis: o 2 MB Attachments o Ondersteuning via telefoon en e-‐mail Standaard: o 4 MB Attachments o Ondersteuning via telefoon en e-‐mail Premium: o 8 MB Attachments o Ondersteuning via telefoon en e-‐mail o Vebeterde beveiliging Conclusie
Indien er gekozen wordt om een applicatie in PHP te maken en MySQL te gebruiken voor de database kan osTicket gebruikt worden. Het belangrijkste voordeel hiervan is dat er rechtstreeks vanuit de applicatie zal kunnen gecommuniceerd worden. De informatie die gebruikt wordt zal binnen de applicatie kunnen blijven. De omslachtigheid van de installatie en implementatie kan mogelijk als nadeel gezien worden. Maar een installatie vindt natuurlijk maar één keer plaats.
1.4
Website
1.4.1
Registratie
Potentiële gebruikers zullen zich ook zelf kunnen registreren, om zoveel mogelijk mensen te bereiken. 1.4.2
Activiteitenkalender
Alle gebruikers zullen een activiteitenkalender kunnen bekijken die gevuld wordt vanuit de database.
10
1.5
Integratie Facebook
Om voor een goede communicatie te zorgen tussen de jeugddienst en de jongeren kijken we naar de integratie van Facebook. Het zou via Facebook mogelijk zijn om de website meer bekend te maken onder de jeugd door gebruik te maken van Like-‐ en Deelknoppen en reacties.
1.6
MoSCoW
Functionele eis Applicatie Ledenlijst beheren (toevoegen, bekijken, aanpassen, verwijderen) Activiteiten beheren (toevoegen, bekijken, aanpassen, verwijderen) Gesprekken beheren (toevoegen, bekijken, aanpassen, verwijderen) Statistieken genereren Mailsysteem Website Registratie voor leden Activiteitenkalender Facebook
MoSCoW toekenning Must have Must have Should have Must have Could have Must have Could have Should have
11
2
DATAMODEL
2.1
Relationeel schema
12
2.2
Attributenlijst Reclame
id Naam
Autonummering String ReclamePerActiviteit
id ActiviteitId reclameId
Autonummering Number Number Activiteit
id soortActiviteitId rapportId datum beginUur eindUur omschrijving uitleg prijsPerPersoon geldActiviteit inschrijvenOpVoorhand
Autonummering Number Number Date Date Date Text Text Double Double Boolean SoortActiviteit
id omschrijving
Autonummering Text ActiviteitPerGroep
id activiteitId groepId
Autonummering Number Number Groep
id naam
Autonummering Text ActiviteitPerBuurt
id activiteitId buurtId
Autonummering Number Number Buurt
id gemeenteId naam
Autonummering Number Text Aanwezigheid
id activiteitId jongerenId gespot
Autonummering Number Number Boolean PersoneelPerActiviteit
id personeelId
Autonummering Number
13
activiteitId
Number Personeel
id gemeenteId naam voornaam email adres GSM functie
Autonummering Number Text Text Text Text Text Text Familie
id jongereId broerOfZusId
Autonummering Number Number Jongere
id groepId buurtId jongereId gemeenteId heeftFamilie naam voornaam adres telefoon GSM Geboortedatum Email datumRegistratie facebook geslacht foto
Autonummering Number Number Number Number Boolean Text Text Text Text Text Date Text Date Text Char Blob JongerePerRapport
id jongereId rapportId
Autonummering Number Number Rapport
id opmerking titel datum laatsteWijziging
Autonummering Text Text Date Date PersoneelPerRapport
id rapportId personeelId
Autonummering Number Number Opvolging
id jongereId titel
Autonummering Number Text
14
omschrijving opgelost
Text Boolean Gemeente
id naam postcode
Autonummering Text Text JongerePerVoogd
id jongereId voogdId
Autonummering Number Number Voogd
id buurtId naam voornaam functie contactnummer notities
2.3
Autonummering Number Text Text Text Text Text
Relatiebeschrijvingen
1.
Reclame ! Activiteit a. Een soort reclame kan voor meerdere activiteiten gebruikt worden en een activiteit kan meerdere soorten reclame hebben. 2. Activiteit ! SoortActiviteit a. Een activiteit is van een bepaalde soort en een soortactiviteit hoort bij meerdere activiteiten. 3. Activiteit ! Groep a. Een activiteit kan voor meerdere groepen worden georganiseerd en voor een groep kunnen meerdere activiteiten gemaakt worden. 4. Activiteit ! Buurt a. Een activiteit kaan doorgaan in meerdere buurten en in een buurt kunnen meerdere activiteiten georganiseerd worden. 5. Activiteit ! Personeel a. Een activiteit kan georganiseerd worden door meerdere personeelsleden en een personeelslid kan bij meerdere activiteiten helpen. 6. Activiteit ! Jongere a. Bij een activiteit kunnen meerdere jongere aanwezig zijn en een jongere kan bij meerdere activiteiten aanwezig zijn. 7. Activiteit ! Rapport a. Een activiteit heeft 1 rapport en een rapport gaat over 1 activiteit. 8. Jongere ! Groep a. Een jongere kan maar in 1 groep zitten en in 1 groep kunnen meerdere jongeren zitten. 9. Jongere ! Familie a. Een jongere kan 0 of meerdere broers of zussen hebben (familie) en een familie heeft sowieso 1 jongere. 10. Jongere ! Opvolging a. Een jongere heeft 1 of meerdere opvolgingen en een opvolging hoort bij 1 jongere. 11. Jongere ! Voogd a. Een jongere kan meerdere voogden hebben en een voogd kan meerdere jongere hebben.
15
12. Jongere ! Rapport a. Een jongere kan op meerdere rapporten staan en een rapport kan meerdere jongere hebben. 13. Jongere ! Gemeente a. Een jongere woont in 1 gemeente en in een gemeente kunnen meerdere jongeren wonen. 14. Jongere ! Buurt a. Een jongere woont in 1 buurt en in een buurt kunnen meerdere jongeren wonen. 15. Personeel ! Rapport a. Een personeelslid kan op meerdere rapporten staan en een rapport kan meerdere personeelsleden hebben. 16. Personeel ! Gemeente a. Een personeelslid woont in 1 gemeente en in een gemeente kunnen meerdere personeelsleden wonen. 17. Buurt ! Gemeente a. Een buurt hoort bij 1 gemeente en in een gemeente zijn er meerdere buurten. 18. Voogd ! Buurt a. Een voogd woont in 1 buurt en een in een buurt kunnen meerdere voogden wonen.
16
2.4
Use Case Diagram
17
3
INVOEGEN EXCEL-‐GEGEVENS IN DATABASE
Het invoegen van bestaande Excel-‐gegevens is noodzakelijk en word mogelijk gemaakt met behulp van een MySQL databank. Sla het Excel-‐bestand op als een CSV-‐bestand en maak gebruik van de phyMyAdmin importeer functie.
3.1
Wat is een CSV bestand?
Een CSV-‐bestand is een specificatie voor tabelbestanden. De informatie word gescheiden door komma’s, daarom noemen mensen het ook wel eens een kommagescheiden bestand. Het bestand bestaat alleen uit tekst die wordt gescheiden door komma’s en enters. Met behulp van het programma Excel kan je dus sheets exporteren naar CSV-‐formaat.
3.2
Voorbeeld CSV bestand
voornaam,naam,adres,geslacht Verheyen,Mieke,”Markt 15”,m Mertens,Toon,”Molenstraat 18”,m
3.3
Voordelen
Aangezien er in het verleden veel is gewerkt met Microsoft Excel is de functie een groot voordeel. Elk aparte Excel-‐bestand dat al bestaat kan gemakkelijk in de databank worden geïmporteerd.
18
4
ENCRYPTIE
Om de veiligheid van data te optimaliseren stellen wij voor om wachtwoorden en gevoelige gegevens zoals naam, adres en aanwezigheid te encrypteren volgens een veilige methode. Een gewoon MD5, SHA1, NTLM algoritme gaat het een aanvaller niet moeilijk maken om deze data te decrypteren. Daarom gebruiken we beter een methode die het de aanvaller moeilijker maakt om data buit te maken. De beste methode om data te beschermen is door de webapplcatie alleen in een privaat netwerk beschikbaar te maken.
4.1
Methode: Salt
Genereer een random string van 3 karakters of meer en plak deze voor het wachtwoord. Nu heb je een wachtwoord met drie random tekens vooraan. Bedenk een vaste variabele van minimum 7 karakters of meer die je niet zult opslaan in de database maar enkel in de broncode van je applicatie. Plak deze nogmaals vooraan het wachtwoord met de drie random tekens. Deze vaste variabele kan je bekijken als de decryption key dus bewaar deze op een veilige plek. 4.1.1
Voorbeeld
Random salt Static salt Wachtwoord String
mMJ 24#NS@!mKQH ikbenloes mMJ24qNS@mKQHikbenloes
Hashed values ikbenloes123 5295b83efb74c00623946ff0cffbac9f mMJ24qNS@mKQHikbenloes 9afafccafceb781c1131d77daaa617ec Met deze methode voorkomen we voor een groot deel dat de aanvaller de uiteindelijke decryption key in handen kan krijgen. Als de aanvaller ontdekt dat de eerste drie karakters niet van toepassing zijn is er wel een probleem. We kunnen de lengte van elke random salt string verschillend maken maar dan moeten we dit opvangen in de applicatie omdat het dan meermaals moet decrypteren en wachten op een positief resultaat. Het decrypteert dan een eerste keer met -‐3 karakters vooraan, als deze actie faalt probeert het te decrypteren met -‐4 en zo verder tot er een positief resultaat is. Bewaar nooit een salt string in de databank! Dit maakt het aanvallers makkelijk. 4.1.2
Waarom encrypten van data?
Aanvallers kunnen de databank rechtstreeks binnendringen door middel van de meest gebruikte methode namelijk sql-‐inject scripts. Door authenticatie te omzeilen in de sql-‐query worden gegevens buitgemaakt zonder enige tussenkomst van de webapplicatie zelf. Je bent nooit 100% beschermd tegen exploits maar je moet het de aanvallers het wel zo moeilijk mogelijk maken. Mochten ze de databank kunnen lezen waarin alle gevoelige data is geëncrypteerd dan kunnen ze het niet lezen zonder de decryption key.
4.2
Risico’s -‐
Root access op de webserver o Oplossing: aparte encrpyie/decryptie server
19
5
ANALYSE FACEBOOK
Facebook is zonder twijfel de bekendste en meest gebruikte social website die momenteel bestaat. Het is dus niet verwonderlijk dat de jeugddienst van Turnhout Facebook wil gebruiken als onder meer een communicatiemiddel. Facebook biedt voldoende plug-‐ins en API’s die vrij gebruikt kunnen worden in de te ontwerpen webapplicatie. Slechts een drietal van de aangeboden plug-‐ins zijn van toepassing op de website. Daarnaast is er ook een API beschikbaar die zeker en vast gebruikt kan worden om zo het delen van artikels te vergemakkelijken.
5.1
Sociale plug-‐ins
Facebook biedt een hele reeks aan sociale plug-‐ins die interessant kunnen zijn voor de webapplicatie van de Jeugddienst Turnhout. Omdat de jeugddienst vooral met een jong publiek werkt, is het een goed idee om integratie van Facebook te overwegen. We bespreken enkel elementen die van toepassing kunnen zijn voor het project. 5.1.1
Like Button
De Like-‐knop van Facebook zorgt ervoor dat mensen snel bepaalde zaken kunnen delen met familie en vrienden. Een simpele klik op de knop zal bepaalde stukken van een website ‘liken’ delen met Facebook waardoor ze gezien kunnen worden door vrienden. De Like-‐knop is vooral handig om ervoor te zorgen dat bepaalde stukken van de website meer aandacht krijgen. Als een gebruiker een bepaalde pagina interessant vindt en deze dus ‘liket’ dan zullen zijn of haar vrienden op de hoogte worden gebracht van de bestaande pagina. Dit kan bijvoorbeeld gebruikt worden om de site van de jeugddienst te promoten. 5.1.2
Send Button
Via de Send-‐knop is het voor een gebruiker mogelijk om inhoud van de website naar één of meerdere vrienden te versturen via een privaat Facebook-‐bericht. De Send-‐knop is in het Nederlands beter bekend onder ‘Delen’. Hoe kan dit van toepassing zijn voor de jeugddienst? Als een gebruiker van de website bevriend is met iemand die graag op vakantie wil gaan maar hiervoor niet genoeg budget heeft, kan deze gebruiker in een privébericht de voordelige vakantieactiviteit doorsturen naar deze vriend. Hierdoor wordt enkel de vriend in kwestie op een discrete manier op de hoogte gebracht. 5.1.3
Comments
De Comments-‐plugin laat gebruikers toe om op eender welke pagina commentaar te plaatsen. Dit is vooral handig om op een snelle en eenvoudige manier een commentaarsectie toe te voegen op een pagina. Comments zijn in het Nederlands beter herkenbaar onder de naam ‘Reacties’. Op deze manier is het mogelijk om rechtstreeks per pagina of per voorgestelde activiteit feedback te krijgen van de gebruikers. De Comments-‐plugin kan ook gebruikt worden om voorstellen te krijgen van de gebruikers over toekomstige activiteiten. Gebruikers kunnen reageren op de commentaar van anderen en deze ook ‘liken’. Als er dus een voorstel wordt gedaan en andere gebruikers zijn hiermee eens, zal men dit sneller kunnen afleiden door het aantal ‘likes’ van de geplaatste commentaar.
20
5.2
Facebook API’s
Niet alleen biedt Facebook een reeks sociale plug-‐ins, het bedrijf stelt ook een resem API’s beschikbaar. Hoewel er tien API’s tot onze beschikking staan, is er slechts één van toepassing op de webapplicatie van de jeugddienst, namelijk de Open Graph API. 5.2.1
Open Graph API
Dankzij Open Graph is het mogelijk om externe site te integreren in de zogenaamde Social Graph. In een Open Graph worden websites gezien als een object waardoor het mogelijk is voor gebruikers om connecties te leggen tussen websites en Facebook. Het Open Graph protocol zorgt voor een manier om bepaalde inhoud gestructureerd aan te bieden zodat deze altijd op de zelfde manier wordt uitgelezen door verschillende sociale media sites zoals Facebook en Google+. Dit klinkt ingewikkeld maar is het totaal niet. Het implementeren van Open Graph gebeurt door het toevoegen van enkele meta-‐elementen in de head van de website. Dankzij Open Graph heeft u meer controle over hoe de inhoud van uw website getoond wordt op sociale media. Het is onder meer mogelijk om te bepalen welke afbeelding, titel, omschrijving en url gebruikt worden. 5.2.1.1
Social Graph
Via de Open Graph is het mogelijk om inhoud van een website te integreren met de Social Graph. Deze Social Graph van Facebook houdt de connectie bij tussen gebruikers, pagina’s en andere objecten. Het is technisch gezien een database met de relaties tussen alles en iedereen op de welbekende sociale website. Deze sociale grafiek is de kern van Facebook aangezien elke foto, reactie, prikbord update en veel meer hierin wordt opgeslagen. Elke keer wanneer de functionaliteit van Facebook uitbreidt wordt ook deze sociale grafiek groter, complexer en waardevoller. 5.2.1.2
Voorbeeld
Om duidelijk te maken hoe simpel het is om gebruik te maken van Open Graph wordt er gebruik gemaakt van een voorbeeld van de nieuwssite deredactie.be. Dit stukje code komt uit de broncode van een artikel die op de website te vinden is. De code zorgt ervoor dat het artikel dat op Facebook wordt gezet er netjes uitziet. Facebook gaat dus op zoek naar deze meta-‐tags om het artikel op te maken. Zijn deze tags niet aanwezig dan is het mogelijk dat Facebook verkeerde informatie toont. <meta property="og:site_name" content="deredactie.be" /> <meta property="og:type" content="article" /> <meta property="og:title" content=""Voor de werknemers én de klant zal niets veranderen"" /> <meta property="og:description" content="De directie van BNP Paribas Fortis beklemtoont dat de verkoop door de Belgische staat van zijn belang in de bank aan het Franse BNP Paribas, geen gevolgen zal hebben voor de klant." /> <meta property="og:url" content="http://www.deredactie.be/permalink/1.1778475"/> <meta property="og:image" content="http://www.deredactie.be/polopoly_fs/1.1509135!image/949133456.jpg_gen/derivatives/landsca pe670/949133456.jpg" />
21
De getoonde code geeft volgend resultaat op de Facebookpagina van deredactie.be.
5.3
Conclusie
Facebook biedt een heleboel tools die heel nuttig zijn voor de webapplicatie van de Jeugddienst. Drie ervan kunnen we perfect implementeren, namelijk de Like-‐ en Deelknop en de Reactie-‐sectie. De overige plug-‐ins die worden aangeboden zijn niet van toepassing voor de jeugddienst van Turnhout. De te implementeren plug-‐ins zijn niet alleen heel handig, ze zijn tegelijkertijd makkelijk te implementeren in de applicatie. Niet alleen zijn plug-‐ins van toepassing, ook springt er een API uit die aangeboden wordt door Facebook die een plaats vindt in de applicatie van de jeugddienst. Via de Open Graph API krijgen we een correcte opmaak als we artikels op Facebook plaatsen. Net als de plug-‐ins is ook deze API zeer makkelijk te installeren. Dankzij de hele Facebook-‐implementatie zijn we ervan overtuigd dat de website zo een breder publiek zal aanspreken. Aangezien de meeste jongeren actief zijn op Facebook, kunnen zij onmiddellijk nieuws ontvangen over de jeugddienst. Ook kunnen ze de nodige reacties geven aan bepaalde ideeën of evenementen.
22
6
ANALYSE PROGRAMMEERTALEN
De keuze van een programmeertaal mag niet onderschat worden. Het is dankzij deze taal dat de gebruiker interactie heeft met het complete systeem. Het is dus vanzelfsprekend dat een analyse van verschillende programmeertalen belangrijk is. Deze analyse gebeurt door de verschillende talen te vergelijken met elkaar en de voor-‐ en nadelen per taal op te sommen. We kijken onder meer naar de schaalbaarheid, het onderhoud en vooral de prijs van de verschillende programmeertalen. Uiteindelijk stellen we een WRM-‐methode op die één programmeertaal selecteert die het best te gebruiken is voor het ontwikkelen van de webapplicatie.
6.1
Aanbod van verschillende talen
De keuze van een programmeertaal bij het ontwikkelen van een webapplicatie is een zeer belangrijke beslissing. Aangezien er vele verschillende talen beschikbaar zijn, is het belangrijk om hiertussen een vergelijking te maken. Een overzicht van de belangrijkste talen vindt u hieronder. 6.1.1
PHP
PHP is speciaal ontwikkeld voor het opzetten van webapplicaties en is één van de meest voorkomende programmeertalen in dit gebied. Dit komt vooral omdat PHP freeware is waardoor veel onafhankelijke programmeurs hiermee werken. PHP is een zeer populaire programmeertaal. Meer dan 81% van alle websites die gebruik maken van een server-‐side programmeertaal draaien PHP. Enkele bekende sites die PHP gebruiken zijn onder andere Google, Facebook, YouTube en Yahoo. Op het moment van schrijven zijn er 166 PHP-‐jobs beschikbaar in België volgens de website van VDAB. Deze populariteit komt mede dankzij de open source licentie die PHP hanteert. Dit wil zeggen dat de broncode van PHP gepubliceerd is en vrij beschikbaar is voor het publiek. Iedereen kan de broncode dus vrij kopiëren en aanpassen zonder dat men auteursrechten moet betalen. Door deze open source licentie is het opstellen van een PHP-‐project ook zeer goedkoop. 6.1.1.1
Voordelen
−
PHP draait op alle systemen. Dit is één van de redenen waarom PHP zo populair is; je hebt geen dure licentie nodig van Windows Server om een webapplicatie, geschreven in PHP, te ondersteunen. PHP draait namelijk op Linux wat een opensource besturingssysteem is. Hierdoor kan men al veel geld besparen. Dit betekent niet dat als je Windows hebt je geen PHP mag draaien.
−
Een belangrijk punt is dat PHP gratis is. Je moet geen licentie betalen om gebruik te maken van deze populaire taal. PHP is vrij te downloaden van het internet waardoor het ook populair is bij startende programmeurs die net in de bedrijfswereld zijn terechtgekomen.
−
PHP gaat goed hand in hand met MySQL-‐databases. Deze zouden veel sneller zijn dan de andere databases die beschikbaar zijn op de markt. Een ander pluspunt is dat een MySQL-‐database makkelijk te integreren is in PHP-‐applicaties.
−
Er zijn gigantisch veel libraries die toegevoegd kunnen worden aan PHP waardoor te taal extra aantrekkelijk is voor de verschillende benodigdheden in de industrie.
6.1.1.2 −
Nadelen
Hoewel PHP makkelijk is om te leren, is het dom om te denken dat een beginner meteen complexe sites kan ontwikkelen. Er zijn natuurlijk een heleboel frameworks beschikbaar die het werkproces versnellen.
23
Maar we moeten in het achterhoofd houden dat een beginnend team een bepaalde tijd nodig zal hebben om de voordelen van beschikbare tools te selecteren voor elk project. 6.1.2
ASP.NET
ASP.NET is de opvolger van ASP en is onderdeel van het .NET framework van Microsoft. In tegenstelling tot PHP is ASP.NET niet open source maar propriëtaire software. Slechts één individu of een bedrijf heeft de exclusieve auteursrechten op de software. Mensen kunnen dus niet zomaar de broncode kopiëren en aanpassen. Met andere woorden uitgelegd is ASP.NET niet gratis en moet er dus een som geld op tafel gelegd worden voordat je er gebruik van kan maken. ASP.NET kan enkel geïnstalleerd worden op systemen waarop het besturingssysteem Windows draait. Als men deze programmeertaal wil gebruiken, kan men dus beter gebruik maken van Windows Server. Het is echter mogelijk om een beperkte vorm van ASP.NET te draaien op een Linux machine. De functionaliteiten zijn dan wel niet allemaal beschikbaar. Meer dan 21% van alle websites die een server-‐side programmeertaal gebruiken, maken gebruik van ASP.NET. Sites die gebruik maken van ASP.NET zijn onder andere Live.com en MSN.com die allebei eigendom zijn van Microsoft. De website van VDAB biedt ons 308 jobs voor het ontwikkelen van ASP.NET. 6.1.2.1
Voordelen
−
Ontwikkeling in ASP.NET is zeer makkelijk met de bestaande server controls die beschikbaar zijn. Hierdoor is er minder code nodig in vergelijking met andere programmeertalen om bepaalde functies te schrijven. Deze controllers zijn ingebouwd in Visual Studio waardoor je deze niet als aparte plug-‐ins moet toevoegen.
−
ASP.NET maakt gebruik van master pages. Een master page kan ervoor zorgen dat elke webpagina op de site dezelfde lay-‐out heeft en zich hetzelfde gedraagt. Het is dan mogelijk om aparte pagina’s te creëren met telkens een andere inhoud. Wanneer een gebruiker dan één van deze pagina’s opvraagt zal deze pagina fuseren met de master page. Hierdoor krijg je de lay-‐out die je hebt geschreven in de master page en de inhoud van de aparte webpagina in één uiteindelijke resultaatpagina.
−
Met ASP.NET is het niet nodig om de volledig ontwikkelde webpagina’s te kopiëren naar de hosting server. Met deze programmeertaal is het voldoende om enkel de dll-‐bestanden te hosten op de server. Dit zorgt ervoor dat de broncode niet in het openbaar beschikbaar is op de hosting server wat een extra vorm van beveiliging voor de code met zich meebrengt.
6.1.2.2
Nadelen
−
Zoals eerder aangehaald, is ASP.NET niet gratis. Voor de ontwikkeling van ASP-‐code moet je Visual Studio aankopen. De goedkoopste versie, Visual Studio 2013 Professional, heeft een prijskaartje van € 646. Er zijn ook gratis pakketten te verkrijgen maar die bieden niet de verwachte voordelen. Kleine projecten zijn misschien wel mogelijk maar als men toekomstgericht wil werken en openstaat voor grotere projecten, is men uiteindelijk toch verplicht om over te stappen naar een betaalde versie van Visual Studio.
−
ASP.NET draait niet op alle beschikbare systemen, enkel en alleen op Windows-‐besturingssystemen. Er is een versie beschikbaar voor Linux maar deze biedt niet alle oorspronkelijke functionaliteiten die deze taal te bieden heeft.
24
6.1.3
Ruby
Ruby is een programmeertaal ontworpen om op een snelle en makkelijke manier objectgeoriënteerd te programmeren. Om Ruby te gebruiken voor de ontwikkeling van webapplicaties moeten we gebruik maken van de Ruby on Rails framework. Ruby hanteert een BSD-‐licentie waarbij de gebruikers de naam van auteur en licentie moeten vermelden als de software gebruiken in hun eigen producten. Ze mogen ook niet zonder toestemming de naam van de auteurs in advertentiemateriaal gebruiken. Ruby is te gebruiken op verschillende platforms zoals Windows en Linux. De taal wordt ongeveer door 0,5% van de websites, die gebruikmaken van een server-‐side programmeertaal, gebruikt. Enkele voorbeelden van websites die ontwikkeld zijn in deze taal zijn onder andere Hulu, Github en Howcast. Als we zoeken naar Ruby-‐ontwikkelaars vinden we slechts 10 jobs op de website van VDAB. 6.1.3.1
Voordelen
−
Als je zoekt naar de voordelen van Ruby springt er altijd één naar de voorgrond, namelijk snelheid. In Ruby kan je in een kleinere periode grote projecten afronden. Waar het bij andere talen zo’n 12 weken duurt, kan een Ruby-‐project al in zes weken afgerond zijn.
−
Hoewel Ruby ontwikkeld is om te draaien op Linux, kan je ook Ruby-‐applicaties laten werken op Windows.
−
Net zoals PHP hoeft men geen licentie te betalen om gebruik te maken van Ruby.
−
Al sinds het ontwerp van Ruby, is deze taal ontwikkeld om volledig object georiënteerd te zijn en vooral in het voordeel te werken van de programmeurs. Een functie geschreven in zo’n 10 lijnen PHP-‐code kan in 3 lijnen samengevat worden in Ruby.
6.1.3.2
Nadelen
−
Ruby was oorspronkelijk niet ontwikkeld voor webapplicaties maar eerder voor het ontwikkelen van scripts met een makkelijke leesbaarheid. Hierdoor heeft Ruby niet dezelfde materniteit die je zou verwachten van een server-‐side programmeertaal zoals Java en PHP.
−
De populariteit van Ruby is vele malen kleiner in vergelijking met PHP en ASP.NET. Dit kan een probleem vormen als je stuit op een programmeerprobleem. Er zijn veel minder communities die je met deze fout kunnen helpen.
−
Het is moeilijker om een server te vinden die Ruby on Rails ondersteunt. Degenen die deze taal ondersteunen zijn ook nog eens een heel stuk duurder. Men betaalt net niet het dubbele voor Ruby-‐ hosting dan met PHP-‐hosting.
6.1.4
Python
Naast het gebruik als een scriptingtaal, is Python ook een programmeertaal die vooral focust op een goede leesbaarheid. De syntax van Python zorgt ervoor dat men bepaalde functies in minder code kan uitdrukken in vergelijking met andere programmeertalen zoals C. We zullen gebruik moeten maken van het framework Django als we Python willen gebruiken voor het ontwikkelen van een webapplicatie. Python hanteert een licentie waarbij ontwikkelaars vrij de broncode van de taal mogen aanpassen. Dit doet denken aan een open source licentie maar dat is bij Python niet het geval. De Python-‐licentie is gebaseerd op het BSD-‐licentie wat vergelijkbaar is met de licentie van Ruby.
25
Het ontwikkelen van een webapplicatie in Python is dus redelijk goedkoop. Dit is zeker het geval als we in acht nemen dat Python meerdere platforms ondersteunt. Hierdoor kan er bijvoorbeeld gebruik gemaakt worden van Linux waardoor we zo goed als geen kosten hebben aan het besturingssyteem. Hoewel het ontwikkelen in Python redelijk goedkoop is, maken slechts 0,2% van de websites die gebruikmaken van een server-‐side programmeertaal gebruik van Python. Het webframework Django wordt vooral gebruikt door krantensites. Enkele bekende websites die gebruik maken van Python zijn onder meer Instagram, support.mozilla.com en de welbekende Britse krantensite The Guardian. Net als Ruby, zijn er slechts weinig jobaanbiedingen beschikbaar op de website van VDAB als we zoeken naar Python-‐ontwikkelaars. Zo zijn er slechts 18 jobs beschikbaar in België. 6.1.4.1
Voordelen
−
De syntax van Python is duidelijk en goed leesbaar wat ervoor zorgt dat Python een goede programmeertaal is voor beginners.
−
Python draait niet alleen op meerdere systemen, het heeft ook op de verschillende platforms dezelfde interface. Dit komt omdat het ontwerp van Python niet perse ontwikkelt met één enkel systeem in gedachte. Het zou dus mogelijk zijn om een Python-‐programma op te stellen op een Mac, te testen op een Linux-‐machine en deze te laten hosten door een Windows-‐systeem.
−
Het opstellen van een Python webapplicatie is vrij goedkoop aangezien men geen licentie moet betalen voor het gebruik ervan.
6.1.4.2
Nadelen
−
Python zou traag zijn in vergelijking met andere programmeertalen. Dit is in sommige gevallen niet echt een nadeel maar als snelheid een must is, is men toch genoodzaakt om een andere taal te zoeken.
−
De kwaliteit van de Python-‐documentatie is minder goed in vergelijking met die van PHP of Java. Dit is een probleem als je bepaalde functies wil opzoeken. Voor het aanleren van een nieuwe programmeertaal is goede documentatie wel vereist.
−
Er zijn niet veel Python-‐ontwikkelaars aanwezig op de markt. Het is veel gemakkelijker om een Java-‐ of een PHP-‐ontwikkelaar te vinden. Dit wil dus ook zeggen dat bestaande Python-‐ontwikkelaars duurder zijn in vergelijking met andere ontwikkelaars.
−
Net als Ruby is het hosten van Python bijna twee keer zo duur als PHP hosting. Het aantal hosting servers die Python ondersteunen is ook veel kleiner in vergelijking met PHP-‐hosting.
6.1.5
Java
Eén van de meest bekende programmeertalen is zonder meer Java. Het is een klasse-‐gebaseerde en objectgeoriënteerde taal die de zogenaamde WORA-‐regel (“write once, run anywhere”) hanteert. Java-‐ applicaties worden gecompileerd tot een bytecode-‐bestand dat op eender welke computer architectuur werkt zolang het systeem Java kan draaien. Om gebruik te maken van Java als programmeertaal voor de ontwikkeling van webapplicaties zullen we gebruik moeten maken van de JavaServer Pages Standard Tag Library (JSTL) wat een onderdeel is van Java EE. Java hanteert de zogenaamde GNU General Public License waardoor ontwikkelaars alles met de software mogen doen wat ze willen zolang dat ze dat recht ook doorgeven aan anderen. De auteurs van de software moeten ook vermeld worden. Java is dus uiteindelijk freeware. Net zoals de meeste programmeertalen die al besproken zijn, is Java te gebruiken op meerdere platforms zoals Linux, Mac en Windows.
26
Java kent een gebruik van 2,7% bij websites die gebruik maken van een server-‐side programmeertaal. Enkele bekende websites die gebruik maken van Java zijn onder andere LinkedIn, Ebay en Adobe.com. Java is een zeer populaire taal onder de ontwikkelaars. Dit is ook af te leiden als we zoeken naar het aantal jobaanbiedingen op de site van VDAB. Er zijn zo’n 469 jobs beschikbaar voor Java-‐ontwikkelaars. 6.1.5.1
Voordelen
−
Het ontwikkelen van een webapplicatie in Java is goedkoop aangezien je geen licentiekosten moet betalen om gebruik te maken van de code.
−
Terwijl PHP vooral geschikt is voor kleinere projecten, is Java ideaal voor de grote opdrachten omwille van zijn schaalbaarheid. Een voorbeeld van een drukbezochte website die gebruik maakt van Java is Gmail van Google. Ook Twitter maakt momenteel gebruik van Java. Deze sociale netwerksite was oorspronkelijk geschreven in Ruby maar is, omwille van schaalbaarheid, overgestapt naar Java webdevelopment.
−
Java is platformonafhankelijk, wat ervoor zorgt dat Java op alle systemen die momenteel beschikbaar zijn kan draaien.
6.1.5.2
Nadelen
−
Java is niet de beste keuze voor kleine projecten. Gebruik maken van Java voor een website met slechts één database is te veel werk voor zo’n klein resultaat. Dit doe je beter in een andere taal.
−
Het vinden van een hostingserver die Java webapplicaties kan hosten is zeer moeilijk in vergelijking met andere programmeertalen.
6.2
Een keuze maken
Nu elke taal uitgebreid is besproken met de voornaamste voor-‐ en nadelen per taal, is het mogelijk om bepaalde talen te schrappen waarbij de voordelen niet opwegen tegen de nadelen. 6.2.1
Kostprijs
De kostprijs is één van de belangrijkste punten die invloed hebben op de keuze van een programmeertaal. De jeugddienst heeft een budget ter beschikking maar het is niet de bedoeling om dit al volledig op te gebruiken door een verkeerde programmeertaal te gebruiken. Als we de verschillende talen vergelijken op basis van de kostprijs, valt er één taal op, namelijk ASP.NET. Voor de ontwikkeling van ASP.NET ben je verplicht om Visual Studio Professional 2013 aan te kopen. Deze ontwikkelomgeving kost maar liefst € 646. Hiernaast draait een ASP-‐systeem enkel op een Windows-‐ besturingssysteem waarvoor je ook moet betalen. Omwille van deze hoge kostprijs kunnen we ASP.NET schrappen uit de lijst van overwegende programmeertalen. De voordelen van deze taal wegen niet op tegen de nadelige kostprijs. 6.2.2
Weighted Ranking Method
Om één uiteindelijke taal te selecteren maken we gebruik van de Weighted Ranking Method. Hierbij geven we de criteria waarop we vergelijken punten. Des te belangrijker de criteria, des te meer punten deze criteria kan opleveren. De taal die uiteindelijk de meeste punten heeft, zal gebruikt worden voor het project. We vergelijken de programmeertalen op volgende criteria en bijhorende punten: − −
Kostprijs van de hosting: 10 punten Schaalbaarheid: 5 punten
27
− −
Onderhoud: 5 punten Beschikbare ontwikkelaars: 5 punten
Bij de kostprijs van de hosting kijken we naar de totale prijs die de jeugddienst zou moeten betalen als men de website wil hosten. Onder de schaalbaarheid verstaan we hoe makkelijk het is om de site uit te breiden. Des te beter de schaalbaarheid, des te hoger de score. We bekijken ook het onderhoud van de site en hoe makkelijk het is om de applicatie in deze taal te onderhouden. We hebben nagekeken hoeveel ontwikkelaars beschikbaar zijn per programmeertaal. Indien er meer ontwikkelaars zijn stijgt de score. Omdat we een lage kostprijs van het gebruik van een programmeertaal zeer belangrijk vinden krijgt dit criterium de hoogste score, namelijk een tien. De overige criteria zijn minder belangrijk in vergelijking met de kostprijs.
28
Met deze criteria en bijhorende punten krijgen we het resultaat in de volgende WRM-‐tabel:
Criteria Kostprijs van hosting Schaalbaarheid Onderhoud Beschikbare ontwikkelaars Totaal 6.2.3
Gewicht 10 5 5 5 25
PHP 80% 50% 75% 80% 18,25
Ruby 40% 40% 75% 30% 11,25
Python 40% 50% 75% 40% 12,25
Weighted Ranking Method -‐ Verklaring
Criteria Kostprijs van hosting
PHP Prijs ligt laag in vergelijking met andere talen
Ruby De prijs bij Ruby is bij het dubbele van PHP-‐hosting
Python Net als Ruby; dubbele van PHP
Schaalbaarheid
Matig schaalbaar
Slecht schaalbaar, sites stappen na een tijd over op een andere taal.
Matig schaalbaar
Onderhoud
Matig te onderhouden Veel PHP-‐ ontwikkelaars op de markt
Matig te onderhouden Zeer weinig ontwikkelaars voor Ruby
Matig te onderhouden Weinig ontwikkelaars voor Python
18,25
11,25
12,25
Beschikbare ontwikkelaars
Totaal
6.3
Java 20% 80% 75% 90% 14,25
Java Bijna geen hosts beschikbaar voor Java Zeer schaalbaar in vergelijking met de andere talen Matig te onderhouden Zeer veel Java-‐ ontwikkelaars aanwezig 14,25
Conclusie
Door verschillende programmeertalen te vergelijken met elkaar hebben we een uiteindelijke keuze kunnen maken. We deden een onderzoek naar PHP, ASP.NET, Ruby, Python en Java waaruit PHP als beste taal is gekomen. Volgens ons is deze taal de beste voor de situatie. Het is de bedoeling dat de gekozen programmeertaal gebruikt zal worden tijdens het ontwikkelen van de webapplicatie van de jeugddienst. We hebben een taal kunnen kiezen door de voor-‐en nadelen van elke taal te vergelijken met de andere talen. Hierdoor kregen we een long list van de verschillende talen. Daaruit hebben we al kunnen besluiten welke talen eventueel gebruikt kunnen worden en welke niet. Een belangrijke factor waar we naar gekeken hebben is de kostprijs van de taal. Het opstellen van een applicatie als die van de jeugddienst mag in onze ogen niet te duur zijn. Hierdoor viel ASP.NET al weg aangezien men al een aardige som geld moet neertellen om in deze taal te ontwikkelen. Na het filteren van de talen creëerden we een WRM-‐tabel waarin deze talen beter met elkaar vergeleken konden worden. Door elk criterium een score te geven en deze per taal op te tellen krijgen we zo een winnende taal. Hieruit is gebleken dat PHP de meest voordelige taal is voor deze applicatie. Deze taal is in onze ogen de beste programmeertaal die gebruikt moet worden tijdens de ontwikkeling van het project.
29
7
ANALYSE DATABASEMANAGEMENTSYSTEMEN
Het is belangrijk dat we gebruik maken van een databasemanagementsysteem (DBMS). In dit databasemanagementsysteem zullen alle gegevens terecht komen die van belang zijn voor dit project. Met behulp van een databasemanagementsysteem kunnen we alle belangrijke gegevens opvragen. Zo kunnen we de gegevens opvragen van alle leden van bij de jeugddienst, wie er allemaal werkt op de jeugddienst, …
7.1
Aanbod van verschillende databasemanagementsystemen
De keuze van een databasemanagementsysteem bij het ontwikkelen van een webapplicatie is zeer belangrijk. Er bestaan veel verschillende databasemanagementsystemen. Hieronder wordt een vergelijking gemaakt tussen de verschillende systemen. 7.1.1
Microsoft Access
Microsoft Access is een relationele database-‐applicatie van Microsoft. Microsoft Access wordt meestal gebruikt door gebruikers die niet al te veel kennis hebben van het maken van een database. Access gebruikt dan ook een grafische interface en dit maakt het gemakkelijker. Met Access is het mogelijk om een front-‐end te bouwen. Een front-‐end houdt in dat het mogelijk is om formulieren, pagina’s en rapporten te maken. We kunnen Access verkrijgen als onderdeel van Microsoft Office Professional. Het programma werd Access genoemd tot versie 2002. Momenteel is de naam veranderd naar Microsoft Office Access. 7.1.1.1 -‐ -‐ 7.1.1.2 -‐ -‐ -‐ -‐ -‐
Voordelen De kostprijs van Access is niet zo groot vergeleken met andere databasemanagementsystemen. Access is gemakkelijk te gebruiken. Access werkt met een wizard waardoor je gewoon alles stap voor stap kan maken. Je hebt geen ervaring nodig met databases om het programma te gebruiken. Nadelen Het is niet mogelijk om met meerdere mensen in een keer te werken aan functionaliteiten. Alle informatie van de database wordt opgeslagen in één bestand. Hierdoor zullen reports, query’s en forms trager werken. Access is een heel gemakkelijke database, we kunnen hier niet alles in doen. Dit databasemanagementsysteem is niet uitgebreid. Elke database kan maximaal bestaan uit 2GB. Access kan niet omgaan met veel data, dit wil zeggen dat wanneer we dicht bij het maximum zitten alles wat trager zal lopen.
30
7.1.2
MySQL
MySQL is een opensource-‐managementsysteem. Om een database op te bouwen, gegevens eruit halen of te onderhouden gebruiken we SQL (Structured Query Language). In het begin werd MySQL vooral gebruikt voor internettoepassingen zoals gastenboeken en fora, dit werd meestal gecombineerd met PHP. Momenteel wordt bijna altijd MySQL gebruikt voor internettoepassingen. Ook wordt MySQL voortaan gebruikt voor standalone software. Voorbeelden van websites die gebruik maken van MySQL zijn: -‐ Wikipedia -‐ Google -‐ Youtube 7.1.2.1
-‐ -‐ -‐ -‐ -‐ -‐ -‐ 7.1.2.2 -‐ -‐ -‐ -‐ -‐ 7.1.3
Voordelen
MySQL is volledig gratis. MySQL biedt een zeer hoge prestatie. Ondersteunt een groot aantal embedded applicaties die MySQL zeer flexibel maakt. Zeer snel. Gemakkelijke syntax. Goede management tool (phpMyAdmin). Compatibel met meerdere besturingssystemen. Nadelen MySQL kan nog wat verfijnd worden. Er kan nog wat gewerkt worden aan de faciliteiten van MySQL. MySQL ondersteunt geen heel grote database. Transacties worden niet efficiënt afgehandeld. Ondersteunt geen foreign keys. Microsoft SQL Server
Microsoft SQL Server is ook een databasemanagementsysteem dat ontwikkeld is door Microsoft. Hiervoor wordt ook SQL gebruikt (dit is dan ook de meest gebruikte databasetaal). Microsoft SQL Server wordt voornamelijk gebruikt door organisaties die gebruik maken van een kleine tot middelgrote database. Microsoft SQL Server is ontwikkeld uit Sybase. Het concurreert in deze markt met producten van grote bedrijven zoals: Oracle, IBM en Sybase. 7.1.3.1
-‐ -‐ -‐ -‐ -‐ -‐ 7.1.3.2 -‐
Voordelen
Microsoft SQL Server is zeer gemakkelijk om te gebruiken (gemakkelijker dan MySQL). Dit databasemanagementsysteem biedt meer functies aan dan MySQL. Microsoft SQL Server werkt samen met .NET frameworks. Data kan gerepareerd worden nadat bijvoorbeeld de stroom uitvalt. Het is mogelijk om een volledige database te repareren. Goede beveiliging. Nadelen
Zeer duur (onbetaalbaar voor kleine bedrijven).
31
-‐ 7.1.4
Microsoft SQL Server is enkel compatibel met Windows. Oracle Database
Ook Oracle Database is een databasemanagementsysteem. Oracle Database was de eerste database die gebruik maakt van SQL. Een Oracle Database biedt ondersteuning aan een groot aantal besturingssystemen. Oracle heeft een eigen ERP-‐lijn (Enterprise Resource Planning) opgebouwd. De naam van deze ERP-‐lijn is Oracle E-‐Business Suite. Met deze software is het mogelijk om de ondersteunende processen in organisaties te beheren. 7.1.4.1
-‐ -‐ -‐ -‐ 7.1.4.2
-‐ -‐ 7.1.5
Voordelen
Het is mogelijk om zeer grote databanken aan te maken. Deze databanken zijn zeer goed beveiligd. Oracle database is altijd online. Oracle database werkt zeer snel. Nadelen
Zeer duur. Ingewikkeld om het te onderhouden. SQLite
SQLite is ook een databasemanagementsysteem. Ook SQLite maakt gebruik van SQL. Bij SQLite is er geen serverinstallatie nodig. SQLite is ontwikkeld door D. Richard Hipp, Dan Kennedy and Joe Mistachkin. 7.1.5.1
-‐ -‐ -‐ -‐ -‐ -‐
7.1.5.2
-‐ -‐ -‐
Voordelen
Geen serverinstallatie nodig. Het volledige relationeel model wordt opgeslagen in 1 bestand. SQLite is compatibel met de meest gangbare besturingssystemen. Geen MySQL database op de server nodig, het gebruikt eigen opslaggeheugen. Het is gemakkelijk om de database op te slagen. SQLite kan gebruikt worden met programma’s die geschreven zijn in C of PHP of andere programmeertalen. Nadelen
SQLite is traag. Bij SQLite is het mogelijk dat een database maximaal 2GB kan zijn. Het is niet mogelijk om de database aan te passen met meerdere gebruikers tegelijkertijd.
32
7.2
Een keuze maken
Nu dat we de voor-‐ en nadelen hebben besproken van de meest gebruikte databasemanagementsystemen kunnen we nu de weighted ranking method toepassen. Door gebruik te maken van de weighted ranking method is het mogelijk om het beste databasemanagementsysteem eruit te halen. We vergelijken de databasemanagementsystemen op volgende criteria en bijhorende punten: -‐ -‐ -‐ -‐ -‐ -‐
Kostprijs van het product: 10 punten Onderhoud: 5 punten Beveiliging: 5 punten Grote van de database: 5 punten Gebruiksvriendelijkheid: 5 punten Compatibiliteit: 5 punten
Criteria Gewicht Kostprijs van het product 10 Onderhoud 5 Beveiliging 5 Grote van de database 5 Gebruiksvriendelijkheid 5 Compatibiliteit 5 Totaal 35 7.2.1
Microsoft Access
Microsoft SQL Oracle MySQL Server Database SQLite
70% 70% 60% 40% 80% 20% 20,5
100% 80% 60% 60% 80% 100% 29
0% 80% 100% 100% 80% 20% 19
0% 30% 0% 60% 100% 60% 100% 40% 50% 80% 100% 100% 17,5 20
Weighted Ranking Method -‐ Verklaring
Criteria Kostprijs van het product Onderhoud Beveiliging Grootte van de database
Microsoft Access
MySQL
De kostprijs van Access is niet zo groot vergeleken met andere Vrij gemakkelijk te onderhouden Voldoende beveiligd
Gratis Gemakkelijk te onderhouden Voldoende beveiligd Ondersteunt geen heel grote Maximum 2GB databases
Microsoft SQL Server
Zeer duur Gemakkelijk te onderhouden Zeer goed beveiligd Mogelijk om een grote database te gebruiken
Oracle Database
Zeer duur Zeer moeilijk te onderhouden Zeer goed beveiligd Mogelijk om een grote database te gebruiken
SQLite De kostprijs is iets groter als die van Microsoft Access De onderhoud in SQLite valt mee Voldoende beveiligd
Maximum 2GB
Gebruiks-‐ Zeer Zeer Zeer Niet zo Zeer vriendelijkheid gebruiksvriendelijk gebruiksvriendelijk gebruiksvriendelijk gebruiksvriendelijk gebruiksvriendelijk Compatibiliteit
Compatibel met Microsoft
Compatibel met alles
Compatibel met Compatibel met Microsoft alles
Compatibel met alles
33
7.3
Conclusie
Door de verschillende databasemanagementsystemen met elkaar te vergelijken hebben we uiteindelijk een keuze kunnen maken. Volgens ons is MySQL het beste databasemanagementsysteem voor dit project. MySQL werkt nauw samen met PHP wat een groot voordeel is aangezien PHP als beste uit de programmeertalen kwam. MySQL maakt gebruik van PHPMyAdmin. Dit databasemanagementsysteem hebben we gekozen door gebruik te maken van de Weighted Ranking ste methode. MySQL had een score van 29/35 waardoor deze als 1 eruit kwam. Het de databasemanagementsysteem dat op de 2 plaats eindigde was Microsoft Access met 20,5/35. Wij raden dus aan om MySQL als databasemanagementsysteem te gebruiken.
34
8
SUB TOOLS STATISTIEKEN GENEREREN
8.1
Google Charts
Google Charts is een webtool die developers in staat stelt om statistieken te genereren en deze te integreren in de webpagina. Website: https://developers.google.com/chart Google Charts libraries zijn toegankelijk voor volgende platformen: -‐ -‐ -‐ -‐ -‐ -‐ 8.1.1 -‐ -‐ -‐ 8.1.2 -‐ 8.1.3
Java (Google Chart API wrapper & charts4j) C#.NET (nqchart) Ruby (gchart) PHP (gchartphp) Python (google-‐chartwrapper) Perl (Google::Chart) Voordelen Gratis Veel keuze in grafiektypes Mogelijkheid om kaarten en QR codes te genereren Nadelen Google gelimiteerde API requests (25 000 per dag) Voorbeelden
35
8.2
Chart.js
Chart.js is de concurrent van Google Charts, het maakt gebruik van javascript om statistieken te integreren in de website maar ze gaan alleen nog een stap verder. Website: http://www.chartjs.org 8.2.1 -‐ -‐ -‐ -‐ 8.2.2 -‐ 8.2.3
Voordelen Makkelijker te personaliseren Gratis Animatie Duidelijke documentatie Nadelen Niet bekend genoeg voor een help community Voorbeelden
36
8.3
WRM
8.3.1
Resultaat
Kostprijs van hosting Schaalbaarheid Onbeperkt Design Totaal 8.3.2
Google Charts 100% 75% 50% 60% 19,25
Chart.js 100% 60% 100% 90% 22,50
Verklaring
Kostprijs van hosting Schaalbaarheid Onbeperkt Design Totaal
8.4
Gewicht 10 5 5 5 25
Google Charts
Chart.js
Gratis Makkelijk uitbreidbaar en aanpasbare code Gelimiteerd tot 25 000 API requests per dag Mooie diagrammen maar kan beter 19,25
Gratis Niet geschikt voor hele grote projecten Ongelimiteerd gebruik Oogt zeer professioneel 22,50
Conclusie
Beide tools voldoen aan de eisen voor dit project maar Chart.js biedt je wel meer mogelijkheden in design. Google Charts biedt je meer specifieke mogelijkheden maar die hebben we in deze applicatie niet nodig. Daarentegen ben je gelimiteerd op API requests van Google. Daarom stellen we voor om Chart.js te gebruiken.
37
8.5
Bootstrap
Bootstrap is een front-‐end framework dat de ontwikkeling van webapplicaties vergemakkelijkt. Website: http://www.getbootstrap.com Volgende componenten zijn gemakkelijk te ontwikkelen: -‐ -‐ -‐ -‐ -‐ -‐ -‐ 8.5.1 -‐ -‐ -‐ 8.5.2
Forms Buttons Dialoogvenster Navigatie menu Breadcrumbs Alerts Afbeelding carousel Voordelen Personaliseerbaar Bespaart designtijd Laat de website professioneel ogen Voorbeelden
38
9
REEDS BESCHIKBARE PAKKETTEN
Hierbij gaan we op zoek naar bestaande systemen die alle functies aanbieden die we nodig hebben om deze applicatie goed op te bouwen. Door het gebruik van beschikbare pakketten drijven we de veiligheid van de applicatie op. Frameworks bieden bijvoorbeeld bescherming tegen SQL injectie, sessionhacking, XSS scripting en nog veel meer. De bedoeling van een scripting framework is om het wiel niet opnieuw uit te vinden maar het wel aangenamer te laten rijden.
9.1
Wat is SQL injectie, sessionhacking en XSS-‐scripting?
Kwaadwilligen gebruiken deze methodes om informatie buit te maken van webapplicaties. Bij XSS-‐scripting wordt getracht het systeem niet-‐geautoriseerde uitvoer te laten genereren waarbij logingegevens van gebruikers of andere gevoelige informatie te vinden zijn. Het zijn dus methodes die we absoluut willen voorkomen bij het bouwen van deze webapplcatie.
9.2
Framework
9.2.1
CodeIgniter
CodeIgniter is een open source ready-‐to-‐go framework geschreven in PHP en staat bekend om zijn gebruiksgemak en snelheid. Het verscheen in 2006 op de markt en is gemaakt door EllisLab. Alle functionaliteiten die deze applicatie nodig heeft zijn ter beschikking in het framework. Volgende functies zullen worden gebruikt: • • • • • • 9.2.1.1 -‐ -‐ -‐ 9.2.1.2 -‐
Sessiebeheer ZIP-‐compressie Gegevensvalidatie en HTML formulieren FTP Mailfunctie XSS filters Voordelen Het framework maakt gebruik van de MVC-‐methode (model, view en controller) wat de programmeurs in staat stelt om de PHP-‐code gescheiden te houden van de HTML-‐code. Extreem snel omdat CodeIgniter bewust klein wordt gehouden. De volledige zipfile van dit framework is 1.6 MB groot en dat maakt het zo snel. Er zijn veel informatie en voorbeelden te vinden in the user guide beschikbaar op hun website. Nadelen Omdat het net zo klein wordt gehouden mis je sommige basisfunctionaliteiten die je in andere frameworks wel vindt.
39
9.2.2
Symfony2
Het Symfony2 framework is een meer uitgebreid framework dat momenteel zeer populair is. Het begon allemaal met Symfony dat nu al geëvalueerd is naar de huidige versie. 9.2.2.1 • • 9.2.2.2 • 9.2.2.3
Voordelen Het integreren van CMS-‐systemen is ondersteund. Grote online documentatie en IRC-‐gemeenschap Nadelen Geen tegenover CodeIgniter. Conclusie
Voor deze applicatie raden we aan om CodeIgniter te gebruiken. Dit framework biedt alle functionaliteiten aan die we nodig hebben. Daarentegen is het ook klein en makkelijk te onderhouden, updaten en beveiligen.
9.3
Content managementsystemen
Content managementsystemen maken het de eindgebruiker makkelijk om de inhoud van webpagina’s te beheren. Alle inhoud wordt aanzien als een artikel dat gemakkelijk met een content editor kan worden gewijzigd. Om dit aan te passen is geen HTML kennis vereist. 9.3.1
Joomla
Joomla is een open source content managementsysteem dat geschreven is in PHP en werkt met een MySQL database. Met behulp van vele plug-‐ins kan je makkelijk blogs, RSS-‐feeds en meer tonen. 9.3.1.1 • • • 9.3.1.2 • • • 9.3.1.3
Voordelen Navigatie systeem Dynamische lay-‐out Geavanceerde administratiemogelijkheden Nadelen Complex Betaalde plugins Betaalde templates Conclusie
Joomla is een uitstekende tool om deze applicatie mee te bouwen maar als je gebruik wil maken van goede templates waarbij alle CSS instellingen al zijn ingesteld, moet je betalen. Het draaien van een CMS systeem kost meer energie en servercapciteit. Daarom stellen wij voor om geen gebruik te maken van CMS systemen voor deze applicatie omdat het meer draait om het vergaren en beheren van informatie.
40
9.3.2
Drupal
Drupal is een open source content managementsysteem geschreven in PHP. Met deze handige tool kan je eenvoudige en complexe websites opzetten. Drupal maakt het de eindgebruiker makkelijk om inhoud van zijn/haar website te wijzigen. Het CMS-‐systeem draait op Windows, Mac en Linux. 9.3.2.1 -‐ -‐ -‐ -‐ -‐ -‐ 9.3.2.2 -‐ -‐ 9.3.2.3
Voordelen Grote schaalbaarheid Flexibiliteit Open source Wordt gebruikt bij grote bedrijven Zoekmachine vriendelijk Meer gratis plugins Nadelen Niet makkelijk te gebruiken voor beginners Joomla concurrent is overzichtelijker Conclusie
Bij een ontwikkeling van een webapplicatie houd je altijd best een CMS systeem in het achterhoofd maar bij deze applicatie is dit niet nodig. Alle functies kunnen gemakkelijk worden geïmplementeerd in een framework en gepersonaliseerd worden. CMS systemen kunnen ook worden gepersonaliseerd maar dit is niet zo eenvoudig als je gebruik zou maken van een framework. 9.3.3
Apex
Apex, beter bekend als Oracle Application Express, is een software-‐ontwikkelingsomgeving ontworpen voor Oracle databanken. Met dit ontwikkelingsplatform kan je op een snelle manier een webapplicatie bouwen. Apex wordt ondersteund op de volgende platformen: • Linux •
Mac OS X Server
•
Solaris
•
Windows
9.3.3.1 • • 9.3.3.2 • • 9.3.3.3
Voordelen Rapid application development Veiligheid van gegevens Nadelen Aankopen oracle databank Gelimiteerd Conclusie
De kosten die moeten worden gemaakt om te kunnen beginnen met een Apex-‐project zijn niet haalbaar voor dit project. We proberen de kosten zo laag mogelijk te houden met behulp van open source software.
41
9.4
WRM Kostprijs Onderhoud Schaalbaarheid Documentatie Plugins Totaal
Gewicht 10 5 5 3 2 25
CodeIgniter 80% 55% 50% 80% 30% 16,25
Sympfony2 80% 65% 60% 75% 40% 15,8
Joomla 50% 75% 70% 60% 90% 15,85
Drupal 30% 75% 80% 40% 80% 13,55
Apex 20% 75% 80% 40% 60% 12,15
Kostprijs
CodeIgniter Gratis
Sympfony2 Joomla Gratis Betaalde plugins
Onderhoud Gemiddeld Gemiddeld Schaalbaarheid Hangt van de Makkelijker geschreven als CI code af Documentatie Plugins Totaal
Zeer uitgebreid Weinig 16,25
Zeer uitgebreid Gemiddeld 15,8
Makkelijk Zeer makkelijk uitbreidbaar, ook voor eindgebruiker Communities
Drupal Betalend
Makkelijk Zeer makkelijk uitbreidbaar, ook voor eindgebruiker Communities
Apex Te duur voor kleine projecten Makkelijk Zeer makkelijk
Weinig te vinden Gratis/betalend Gratis/betalend Betalend 15,85 13,55 12,15
42
BESLUIT…. Na de creatie en implementatie van deze applicatie volgens deze adviezen zal de jeugddienst een makkelijker systeem bezitten om hun leden, activiteiten en bestuur te beheren. Activiteiten zullen in een kalenderoverzicht kunnen geraadpleegd worden, nieuwe leden zullen zich zelf kunnen registreren en er zal vanuit de applicatie kunnen gemaild worden. Het stadsbestuur zal zelf statistieken kunnen bekijken die de werking van de jeugddienst grafisch voorstellen. Hopelijk wordt deze analyse dan ook daadwerkelijk omgezet in een webapplicatie en heeft de jeugddienst er nog jaren plezier aan.
43
LITERATUURLIJST −
10 Ways to Add Facebook Functionality to Your Website. (21 december 2011). Opgeroepen op 12 november 20 (Wikipedia, 2013)13, van Social Media Examiner: http://www.socialmediaexaminer.com/10-‐ways-‐to-‐add-‐facebook-‐functionality-‐to-‐your-‐website/
−
Social Plugins. (2013). Opgeroepen op 12 november 2013, van Facebook developers: https://developers.facebook.com/docs/plugins/
−
Open Graph.(2013). Opgeroepen op 19 november 2013, van Facebook developers: https://developers.facebook.com/docs/opengraph/
−
Publish your site content to Facebook wall – Publish Wall Post/ Stream JS API Tutorial. (26 juni 2010). Opgeroepen op 19 november 2013, Facebook: https://www.facebook.com/notes/terabug/publish-‐your-‐ site-‐content-‐to-‐facebook-‐wall-‐publish-‐wall-‐post-‐stream-‐js-‐api-‐tutor/458853348988
−
The Open Graph Protocol. (18 november 2012). Opgeroepen op 19 november 2013, van OGP: http://ogp.me/
−
How to share content of my website on Facebook. (7 december 2012). Opgeroepen op 19 november 2013, van Stack Overflow: http://stackoverflow.com/questions/13761019/how-‐to-‐share-‐content-‐of-‐my-‐ website-‐on-‐facebook
−
Facebook Open Graph META Tags. (25 april 2011). Opgeroepen op 19 november 2013, van The David Walsh Blog: http://davidwalsh.name/facebook-‐meta-‐tags
−
Open Graph: wat, wanneer en hoe? (24 oktober 2012). Opgeroepen op 19 november 2013, van Twinkle: http://www.twinklemagazine.nl/praktijk/2012/10/open-‐graph-‐wat-‐wanneer-‐en-‐hoe/
−
Using Actions. (2013). Opgeroepen op 19 november 2013, van Facebook developers: https://developers.facebook.com/docs/opengraph/using-‐actions/
−
Facebook Social Graph en de Open Graph. (9 november 2011). Opgeroepen op 19 november 2013, van Facebookblog: http://facebookblog.nl/apps/facebook-‐social-‐graph-‐open-‐graph/
−
Social Graph. (juli 2010). Opgeroepen op 19 november 2013, van Wikipedia: http://en.wikipedia.org/wiki/Social_graph
−
PHP vs ASP.net Comparison. (1 augustus 2010). Opgeroepen op 26 november 2013, van Comentum: http://www.comentum.com/php-‐vs-‐asp.net-‐comparison.html
−
ASP.NET Web Development Vs PHP. (24 mei 2013). Opgeroepen op 26 november 2013, van Webigence: http://www.webigence.com/blog/asp-‐dot-‐net-‐web-‐development-‐vs-‐php
−
ASP.NET VS PHP. (30 april 2013). Opgeroepen op 26 november 2013, van Shinju Communications: http://shinju.nl/blog/asp-‐net-‐vs-‐php
−
Comparison of the usage of PHP vs. ASP.NET for websites. (2013). Opgeroepen op 26 november 2013, van W3 Techs: http://w3techs.com/technologies/comparison/pl-‐aspnet,pl-‐php
44
−
Server-‐side programming language statistics. (6 maart 2013). Opgeroepen op 26 november 2013, van Websites Frameworks: http://blog.websitesframeworks.com/2013/03/programming-‐language-‐statistics-‐ in-‐server-‐side-‐161/
−
Why Choose ASP.NET Over PHP? (17 juni 2011). Opgeroepen op 26 november 2013, van Technorati: http://technorati.com/technology/it/article/why-‐choose-‐aspnet-‐over-‐php/
−
Why to Choose PHP for Web Development? (22 september 2013). Opgeroepen op 3 december 2013, van Wikinut: http://business.wikinut.com/Why-‐to-‐Choose-‐PHP-‐for-‐Web-‐Development/mswds3ox/
−
Web Programming with PHP – Why choose PHP? (20 december 2001). Opgeroepen op 3 december 2013, van Paragon Corportation: http://www.paragoncorporation.com/ArticleDetail.aspx?ArticleID=10
−
Why Ruby? (11 mei 2010). Opgeroepen op 3 december 2013, van Scholars’ Lab: http://www.scholarslab.org/research-‐and-‐development/why-‐ruby/
−
Shared Hosting. (2013). Opgeroepen op 3 december 2013, van Openminds: http://www.openminds.be/nl/hosting
−
Django: A Web Framework with Immense Potential. (1 maart 2013). Opgeroepen op 3 december 2013, van Linux For You: http://www.linuxforu.com/2013/03/django-‐a-‐web-‐framework-‐with-‐immense-‐ potential/
−
What are the advantages of Python? (13 augustus 2013). Opgeroepen op 3 december 2013, van Zachisblog: http://zachis.it/blog/what-‐are-‐the-‐advantages-‐of-‐python/
−
osTicket: Support Ticket System. (2013). Opgeroepen op 10 december 2013, van http://osticket.com/front