Uitbreiding van het Agora Kwaliteitsmanagementsysteem Risicoanalyses



Vergelijkbare documenten
icafe Project Joeri Verdeyen Stefaan De Spiegeleer Ben Naim Tanfous

Uitbreiden van het AGORA Kwaliteitsmanagementsysteem Psychosociale risisco s, maand- en jaarverslagen

Inhoudsopgave Disclaimer... 3 Voorwoord... 4 Inleiding... 5 Het downloaden van XAMPP... 7 Het installeren van XAMPP... 8 Joomla installeren op

icafe Een digitaal bestelsysteem voor de horeca Joeri Verdeyen Stefaan De Spiegeleer Naim Ben Tanfous

XAMPP Web Development omgeving opzetten onder Windows.

VMBO-ICT-Route examen 2009 Naam: Marc Schattorie Datum:

Bottleball Onderzoeksverslag MovingMonsters. Uitgevoerd door Arno Classens

Test Joomla op je PC 1

Voordat er optimaal gebruik gemaakt kan worden gemaakt van Magister 5 via het web, kan deze FAQ mogelijk van pas komen.

Connect Social Business. Plan van Aanpak voor mijn stage bij ConnectSB

Koppeling met een database

Connect Social Business

Xampp Web Development omgeving opzetten onder Windows.

Les 15 : updaten van gegevens in de database (deel2).

Connect Social Business. Plan van Aanpak voor mijn stage bij ConnectSB

Easy Business Tools - Multi-user module

Grafisch ontwerp. Referenties.

Release Notes CheQpoint 2.0. Versie 30. Efficiency through innovation

PHP-OPDRACHT SITE BOUWEN

Software Test Plan. Yannick Verschueren

9. MYSQL. Daarin zien we het administratie paneel van mysql.

C a s e S t u d y Y i f e C o n t a c t i n f o r m a t i e

Zicht - Content Management Systeem een algemene beschrijving

Projectplan. Elektronica-ICT Artesis. Auteur: Coopman Tom Interne Promotor: Peeters Tom Externe Promotor: Delepierre Bruno, Adforce

Inhoudsopgave... 1 Disclaimer... 3 Voorwoord... 3 Inleiding... 5 Het downloaden van XAMPP... 7 Het installeren van XAMPP... 8 Joomla installeren op

Technisch ontwerp. Projectteam 6. Project "Web Essentials" 02 april Versie 2.1.0

Meehelpen met de ontwikkeling van nieuwe of verbetering van bestaande spellen. Pag. 1

HANDLEIDING DMS Plugin Installatie, configuratie & werking

Naam project Lost And Found Animals Lokaal gehost Percentage van het totaal geleverde werk 1 Cindy Jansen 50% 2 Eline Steyvers 50%

Midi PDF Bladmuziek lezer

Behaal je diploma secundair onderwijs

Opdrachtformulering (pagina 3 van 7)

Les 12 : database koppeling, opmaken van template, webstructuur en afdrukken van gegevens. (deel2).

Sophie van Solinge CMS32

De voordelen van Drupal

Efficy Mobile Efficy Mobile is een nieuwe interface van Efficy voor mobiele toestellen ter intentie van gebruikers die met Efficy werken onderweg.

Beschrijving functioneel en technisch design van de website

SMART- Leerdoel Mathijs de Bok Emotion - RMM42

Foto web applicatie documentatie

Inhoudsopgave. versie 0.8

Over PHP. PHP en MySQL. 1.1 Inleiding. In dit hoofdstuk maak je kennis met PHP. Hoe werkt deze

DrICTVoip.dll v 2.1 Informatie en handleiding

Op basis van klanten-,product-,barcodegegevens wordt automatisch een barcode document aangemaakt

Het definitieve prototype van Foliostory zal op basis van een usability test getest worden.

Project plan. Erwin Hannaart Sander Tegelaar

16. Web Station. In dit hoofdstuk komen de volgende onderwerpen aan bod:

Swhite bvba Frankrijklei 104 bus Antwerpen. flux.be. Flux webdesign. Versie 1.0.2

SHAREPOINT ONLINE (SAMEN-)WERKEN IN DE WOLKEN. - Workshop SharePoint 1

4.4 Voeg ruimtes toe Hoe ga jij te werk? 1. Over LEVIY. 4.5 Aanwezigen Zijn er aanwezigen bij de DKS-controle? 2. Algemene definities. 3.

Project verslag. Erwin Hannaart Sander Tegelaar

Kies File>New>Blank Page>PHP. Je kunt eventueel nog een stylesheet koppelen. Definieer nu eerst een site! Dat betekent: Site>New Site

JOBSITE Handleiding ( )

Voor vragen: of mail naar

Is APEX a worthy substitute for Oracle Forms?

VKblog-importer : De gebruiksaanwijzing.

WEBSITE-DESIGN CHRIS VERMAAS & FJODOR VAN SLOOTEN B

owncloud Het alternatief tegen grote gluurders

15 July Betaalopdrachten web applicatie gebruikers handleiding

Drupal lokale installatie op Windows 7.

Connect Social Business

Het opzetten van deze applicatie

Acht stappen voor JSF

Samen op zoek naar proeven

Software Test Plan. Yannick Verschueren

Installatie handleiding

En hoe gaan ze dit allemaal terugvinden?

Software Design Document

De werkelijke namen en beschikbaarheid van menuopdrachten kunnen per mobiel platform verschillen. De stappen kunnen ook verschillen.

Het Wepsysteem. Het Wepsysteem wordt op maat gebouwd, gekoppeld aan de gewenste functionaliteiten en lay-out van de site. Versie september 2010

Selenium IDE Webdriver. Introductie

Handleiding X-keys XK-24 installatie en gebruik

Stappenplan. De ontwikkeling van een interface doorloopt bij Studio Wolf vier stappen. Deze stappen verduidelijken de weg naar het eindresultaat.

InterSmart: A Twitter based quiz application for PowerPoint audiences

LES 3: XAMPP OF MAMP. Lesoverzicht:

WordPress in het Kort

REDACTEUREN HANDLEIDING

We moeten de accommodaties selecteren die 3 sterren hebben, en in land met ID 10 zitten.

Meer over het Windows browser-keuzescherm

Bijlage 4: Bruikbaarheids test

Handleiding voor Zotero versie 2.0

TYPISCHE KENMERKEN VAN EEN CLOUDDIENST

In dit hoofdstuk maak je kennis met PHP. Hoe werkt deze. programmeertaal? En hoe is het ontstaan? Ook leer je welke editors

Scarabee Vereniging Brochure

Handleiding Mezzedo.nl

Releasebeschrijving e-former versie 7.0

Net2 kaarten bedrukken

Inventus Software. Antum Secured Mail / Message System. Gebruikershandleiding

Het besturingssysteem of operating system, vaak afgekort tot OS is verantwoordelijk voor de communicatie van de software met de hardware.

SnelStart. Stappenplan. SBR btw-aangifte met SnelStart 12. Datum: Versie: 0.5 Status: Definitief Auteur: Selfservice

A.C. Gijssen. 0.3 PHP en MySQL

Handleiding afdrukken rotariaat CAMPUS NOORD Informaticadienst Scholengroep Sint-Rembert v.z.w. Kevin Baert Loes Casteleyn Michiel Seys

inquire QMS Online enquêtes in een handomdraai

Handleiding installatie Enecsys uitlezen op een Synology NAS

Software Requirements Specification

STRABRECHT COLLEGE WORDPRESS WEBSITE

SQL SERVER Werking van Database Snapshots

OP WEG MET TYP-TOP ONLINE

Transcriptie:

Scriptie ingediend tot het behalen van de graad van PROFESSIONELE BACHELOR IN DE ELEKTRONICA-ICT Uitbreiding van het Agora Kwaliteitsmanagementsysteem Risicoanalyses Ikhlas Berrazi Departement Wetenschappen en Techniek Opleiding Elektronica-ICT Academiejaar 2014-2015 Interne promotor: Yves Masset Externe promotor: Alain Naets Versie: 11 juni 2015

Dankwoord Jan Van Ocken is het hoofd van Coprant VZW, hij heeft er voor gezorgd dat er informatie rond preventie en rond het project beschikbaar was. Dankzij hem konden we kennis maken met andere personen in het onderwijs die werken als preventieadviseur, zo konden doelgerichte vragen stellen over wat zij verwachten dat het project zou moeten kunnen. Hier bovenop werd er de mogelijk gegeven om een basisopleiding in de veiligheidskunde niveau 3 te kunnen volgen. Door deze 7-daagse opleiding kregen we nog een betere kadering binnen preventie in het onderwijs. Zonder Alain Naets was het tevens niet mogelijk om het project tot een goed einde te brengen. Zijn technische kennis van de technologieën die we gebruikten, kon hij op een duidelijke manier overbrengen. Met onze vragen konden we ook altijd bij hem terecht. Ook dank aan Sebastian Plachytka, mijn medestudent, om van de stage-periode toch een leerrijke en leuke tijd van te maken. Zijn rustige zelve heeft me regelmatig geholpen om zelf ook rustig te blijven bij technische problemen die bleven aanslepen. Antwerpen, 11 juni 2015 Ikhlas Berrazi i

Inhoudsopgave Dankwoord i 1 Situering 1 2 Bespreking 2 2.1 Risicoanalyses.................................. 2 2.1.1 Wat is een risicoanalyse?........................ 2 2.1.2 Evaluatiemethoden............................ 4 2.1.3 Concurrentie............................... 6 2.1.4 Doelstellingen.............................. 7 2.2 Technologieën.................................. 8 2.2.1 Talen................................... 8 2.2.2 PHP................................... 8 2.2.3 Javascript................................ 10 2.2.4 MySQL.................................. 12 2.2.5 OWASP................................. 13 2.2.6 Apache.................................. 13 2.2.7 CSS................................... 13 2.3 Software..................................... 14 2.3.1 PHP Designer 8............................. 14 2.3.2 USB Webserver............................. 14 2.3.3 Chrome/Firefox............................. 14 2.3.4 Firebug Extentie............................. 14 2.3.5 Owncloud................................ 15 3 Problemen 16 3.1 Kennismaking Agora code............................ 16 3.2 Troubleshooting................................. 17 4 Resultaten 19 ii

INHOUDSOPGAVE iii 4.1 Beginsituatie................................... 19 4.1.1 Hiërarchie Agora............................. 20 4.2 Werking..................................... 21 4.2.1 Administrator.............................. 21 4.2.2 Coördinerende Preventieadviseur.................... 21 4.2.3 Lokale Preventieadviseur......................... 22 4.3 Bereikte doelstellingen.............................. 23 5 Besluit 24

Lijst van figuren 2.1 Voorbeeld Evaluatiemethodes.......................... 3 a Voorbeeld Agora startscherm...................... 4 b Voorbeeld LPA overzicht........................ 4 2.3 Voorbeeld kleur-methode............................ 4 2.4 Voorbeeld Evaluatiemethodes.......................... 5 a Voorbeeld Risicomatrix......................... 5 b Voorbeeld Kinney-methode....................... 5 2.6 Voorbeeld Evaluatiemethodes in RIE...................... 5 a Voorbeeld Risicomatrix in RIE..................... 9 b Voorbeeld Kinney-methode in RIE................... 9 2.8 Voorbeeld PHP Structuur............................ 9 a Voorbeeld index.php structuur..................... 12 b Voorbeeld Switch Case structuur.................... 12 2.10 Voorbeeld SQL Injection............................ 12 iv

Hoofdstuk1 Abstract Binnen het onderwijs zijn niet enkel leerkrachten en administratieve werknemers nodig, maar elke school heeft ook een preventieadviseur. Deze persoon zorgt ervoor dat de school in orde is met al zijn wettelijke verplichtingen, controles... Tevens zorgt deze persoon voor het jaar actieplan van een school, hierin staan al twee zaken die de school moet uitvoeren om aan de veiligheidsnormen te voldoen en de verbeteringen/herstellingen die ze moeten uitvoeren. Om al die zaken te vergemakkelijken en overzichtelijk te maken, heeft Jan Van Ocken Coprant vzw. opgericht. Coprant heeft tevens het initiatief genomen om informatie over de wetgeving rond welzijn op school en andere doelgerichte informatie rond zorgsystemen te verzamelen in een overzichtelijke website http://www.welzijn-op-school.be. Dankzij de vzw. kan Jan zijn kwaliteitsmanagementsysteem Agora verkopen aan scholen voor een zeer voordelige prijs, namelijk 65 euro per jaar. Door een kleine 65 euro jaarlijks te betalen, krijgt de preventieadviseur op school recht op het gebruik van de bestaande webapplicaties zoals WeVeCo, Werk Verplichte Controles, waarbij de adviseurs een overzicht krijgen van de reeds uitgevoerde verplichte controles. Inbreuken op die controles worden meteen naar Taakbeheer overgebracht. Dit is zoals de naam het zegt een overzicht van alle uit te voeren herstellingen/veranderingen. Het gehele portaal is gegroeid uit enkele ideeën van Jan Van Ocken. Hij fungeert als coördinerende preventieadviseur van verschillende scholengroepen, wat hem dus verantwoordelijk maakt over de vele adviseurs onder hem. Voor de technische uitwerking werkt Jan Van Ocken samen met ontwikkelaar Alain Naets, die zelf ook een achtergrond heeft als preventieadviseur. De applicatie die ik ga verzorgen is het deel Risicoanalyses. Een Risicoanalyse is een overzichtsdocument met allerlei criteria waar een bepaald(e) voorwerp of locatie aan moet voldoen. Indien dit niet het geval is, wordt het risico geëvalueerd. Aan de hand van deze evaluatie zal het risico berekend worden, vervolgens kan bepaald worden of het toestel/werkomgeving veilig is en het werk kan worden voortgezet of moet worden stopgezet. Hierbij kan de gebruiker zelf risicoanalyses aanmaken of reeds bestaande sjablonen kan gebruiken om in te vullen en automatisch rapporten te genereren, waar vroeger alles werd afgedrukt ingevuld en opnieuw moest ingegeven worden om dan weer af te drukken en te klasseren. 1

Hoofdstuk2 Bespreking 2.1 Risicoanalyses 2.1.1 Wat is een risicoanalyse? Wikipedia: " Een risicoanalyse is een methode waarbij nader benoemde risico s worden gekwantificeerd door het bepalen van de kans dat een dreiging zich voordoet en de gevolgen daarvan: Risico = Kans x Gevolg. De risicoanalyse is de eerste stap binnen het risicomanagementproces." Een risicoanalyse is dus een document dat je gaat opmaken om bepaalde risico s te gaan evalueren. Binnen de preventie wordt dit ook een audit genoemd. Als preventieadviseur is het de bedoeling dat je op regelmatige tijdstippen controles gaat uitvoeren. Dit kunnen controles zijn op arbeidsmiddelen zoals helmen, ladders en stellingen enzovoort, maar ook op locaties zoals een klaslokaal of een stookruimte. Hiervoor moest de gebruiker eerst ofwel een sjabloon afdrukken, invullen en dan weer overtypen ofwel zelf een controle maken, afdrukken,invullen en overtypen. Dit was en is voor de gebruikers van Agora een tijdrovende job. Het is dus de bedoeling van mijn applicatie dat dit proces wordt vereenvoudigt. Binnen Agora zijn er drie mogelijke niveau s admin, coördinerende preventieadviseur (CPA) en de lokale preventieadviseur (LPA). Op het hoogste niveau kan de gebruiker risicoanalyses aanmaken en deze worden dan gedeeld met al de CPA s die onder hem staan. De admin kan ook voorstellen om een gemaakte risicoanalyse, gemaakt door een CPA, goedkeuren, zodat de rest deze ook kan zien en gebruiken. Vervolgens op CPA niveau kan de gebruiker ook analyses aanmaken en delen met de personen die onder hem staan. Tevens kan hij ook voorstellen goedkeuren die van de lokale adviseurs komen alsook voorstellen doen naar de admin zoals eerder besproken. Het is de bedoeling 2

HOOFDSTUK 2. BESPREKING 3 dat de lokale adviseur de effectieve analyse gaat uitvoeren en beschikt dus over de meeste functionaliteiten. Hij kan een analyse aanmaken, voorstel doen aan zijn CPA, analyses van zijn CPA en zijn admin toevoegen aan zijn eigen analyses zodat hij ze kan beheren en wijzigen. Vervolgens kan de lokale adviseur een analyse invullen. Deze wordt in de browser zelf ingevuld, de antwoorden daarvan worden ook weggeschreven naar de databank, zodat de gebruiker zijn werk kan hervatten als hij geen tijd heeft om de audit in zijn geheel in te vullen. Bij overtredingen is het nodig dat de adviseur een evaluatie gaat doen van het risico. Dit kan nu door ofwel een risicograaf, waarbij a.d.h.v. een gekleurde matrix het risico kan inschatten en kan zien wanneer het werk moet worden stopgezet. Een tweede mogelijkheid is om de Kinney methode toe te passen (wordt in 2.1.2 verder toegelicht). Hier moet de gebruiker enkele waardes ingeven per onderdeel en uit die waardes worden m.b.v. enkele formules het risico berekend en weergegeven op het scherm. De gebruiker heeft telkens een overzicht van de beschikbare, ingevulde, bezig met invullen, inactieve, inactieve ingevulde audits. Op elk niveau is het mogelijk om eigen audits te wijzigen, vragen en onderdelen toe te voegen. Het geheel is gericht op gebruikers die niet veel kennen van een computer en alles ziet er dus heel minimalistisch uit. Tevens gaat het volledig verder op de styling en gebruik van de reeds bestaande applicaties. (a) Voorbeeld Agora startscherm (b) Voorbeeld LPA overzicht Figuur 2.1: Voorbeeld Evaluatiemethodes

HOOFDSTUK 2. BESPREKING 4 2.1.2 Evaluatiemethoden Bij een risicoanalyse hoort een evaluatie van dat risico. Dit is om te bepalen hoe groot het risico is in verhouding met de problemen die zich kunnen voordoen. Hiervoor kunnen dan preventiemaatregelen voor worden genomen om het risico te verminderen en/of de schade te beperken. Een risico uitsluiten is meestal zo goed als onmogelijk. Er zijn verschillende soorten methodes om een risico te evalueren. Bijvoorbeeld de standaard ja - nee - niet van toepassing-vraag, waarbij de gebruiker simpel kan zeggen of het een risico vormt of niet en hierbij eventueel opmerkingen geeft. Daarnaast heb je ook nog de Kinney-methode, dit is één van de meest gebruikte methodes binnen de preventiedienst. Hierbij wordt gekeken naar drie begrippen: de waarschijnlijkheid, blootstelling en de ernst van een risico. Met behulp van deze drie waardes wordt er een bepaald risicogetal berekend. R = W x B x E Het berekende getal zal je dan moeten vergelijken met het risico in een legende. Hierin staan de maatregelen die bij dat risico moeten genomen worden. Vervolgens voert men na het advies dat men geeft, nog eens de Kinney-methode uit om het restrisico te berekenen. Dit is het getal dat het risico weergeeft, nadat de preventiemaatregel zou zijn toegepast. De risicomatrix is ook nog een risico-evaluatiemethode, die aan de hand van de kans en het effect dat een risico heeft, berekent welk risico er aanwezig is. Als laatste heb ik nog een derde evaluatiemethode toegevoegd aan de applicatie, de kleur evaluatie. Hierbij kan de gebruiker een kleur kiezen die overeenstemt met het risico. De kleuren gaan van groen tot rood. Groen stelt dat er geen risico is en rood, een groot risico. Hierbij kan de gebruiker ook een preventiemaatregel en een scenario ingeven. Figuur 2.3: Voorbeeld kleur-methode

HOOFDSTUK 2. BESPREKING 5 De applicatie die ik ontwikkeld heb, biedt de gebruiker duidelijk meer dan de concurrenten op gebied van het evalueren van een risico. Er is nog een extra uitbreiding waar ik aan begonnen ben, maar niet heb kunnen afmaken. Dit was dat de gebruiker zelf zijn eigen risicomatrix kon aanmaken. De gebruiker zou zelf het aantal rijen en gradaties kunnen kiezen in zijn risicomatrix. Door een uitgebreide testperiode heb ik dit onderdeel niet kunnen afmaken. Momenteel is er code geschreven voor het aantal rijen en gradaties en van deze input wordt een multidimensionale array gemaakt, waarvan vervolgens een tabel wordt weergegeven volgens de ingegeven waardes. Wat er nog moet gebeuren is bij elke cel van de tabel een kleur en een waarde meegeven. Alsook de headers van de tabel definiëren. (a) Voorbeeld Risicomatrix (b) Voorbeeld Kinney-methode Figuur 2.4: Voorbeeld Evaluatiemethodes (a) Voorbeeld Risicomatrix in RIE (b) Voorbeeld Kinney-methode in RIE Figuur 2.6: Voorbeeld Evaluatiemethodes in RIE

HOOFDSTUK 2. BESPREKING 6 2.1.3 Concurrentie Er is een beperkt aanbod aan programma s die aan risico-evaluatie. Enkele voorbeelden zijn: Infrarisk irisk Riscan iauditor irisk en Infrarisk zijn grote Enterprise Risico Management systemen en bijgevolg ook niet toepasbaar binnen het onderwijs. Vervolgens heb je ook nog Riscan, dit is een eerder verouderd programma dat enkel degelijk werkt op Windows XP en voornamelijk gebruikt wordt door de organisatie de Broeders van Liefde. Zij houden zich voornamelijk bezig met de aspecten zorg en onderwijs. Als laatste heb je nog iauditor. Dit leek in het begin een geduchte tegenstander van de applicatie die ik heb gemaakt. Na veel onderzoek bleek dat iauditor veel mogelijkheden had, als je ervoor betaalde. Dit was echter een groot nadeel omdat je de aankoop per toestel moest doen en niet per school of scholengemeenschap kon regelen. Een uitgebreid pakket kostte al 55 euro zonder de maandelijkse kost van 5 euro per gebruiker. Enkele voorbeelden hiervan waren dat je audits kon delen met andere gebruikers, een score kreeg per audit, op je tablet kon werken en dat de applicatie offline beschikbaar was. Er was in het begin onderzoek gedaan naar export mogelijkheden van iauditor naar JSON data en deze vervolgens importeren binnen Agora. Echter bleek dit vrij tot zeer onmogelijk om dit werkende te krijgen binnen de gegeven tijd en de andere vereisten en doelstellingen die nog behaald moesten worden. De applicatie heeft geen echte risico-evaluatie, enkel een ja - nee - niet van toepassing-beoordeling. Dit is een serieuze beperking binnen de preventie. Enkele sterktes dat de applicatie had zoals de mogelijkheid om afbeeldingen op te laden bij inbreuken en daarbij een opmerking toegeven, alsook het doorgeven van verschillende audits naar andere personen, zijn opgenomen in mijn applicatie.

HOOFDSTUK 2. BESPREKING 7 2.1.4 Doelstellingen Projectplan Wat zijn de doelstellingen van je project.gebruik het SMART-principe: Specifiek: Ontwikkel een deelapplicatie voor het agora-project voor de veiligheidsinspectie. Meetbaar: Zorg ervoor dat de applicatie op een webbrowser kan geladen worden en verbonden is met de server. Acceptabel: De veiligheidsinspecteur moet hiermee kunnen werken. Realistisch: Applicatie moet begrijpbaar zijn voor de gebruiker. Tijdgebonden: Applicatie moet ten laatste op 29 mei af zijn. Effectief Applicatie op 3 verschillende niveau s: Admin - CPA - School Audits kunnen worden aangemaakt op elk niveau Audits kunnen worden bekeken op elk niveau Audits kunnen worden doorgegeven vanop elk niveau Audits kunnen worden geaccepteerd op CPA en Admin niveau Audits kunnen worden gedeactiveerd op elk niveau Audits kunnen worden ingevuld op LPA niveau Audits kunnen worden afgedrukt op elk niveau Vragen en onderdelen kunnen worden aangemaakt op elk niveau Er is een overzicht van elke soort audit te zien LPA kan audits van CPA toevoegen, CPA kan audits van Admin toevoegen Gebruiker kan een afbeelding toevoegen bij het invullen van een vraag Gebruiker kan antwoorden geven op vragen Gebruiker kan evaluatiemethodes invullen Er kan een hiërarchie worden toegevoegd in de vragen Bij de afdruk zien we bij het afdrukken van een lege audit een bruikbare audit Bij afdruk ingevulde audit komen antwoorden en evaluatiemethodes zichtbaar Er wordt een overzicht gegeven van afbeeldingen in de afdruk Er wordt een overzicht gegeven van alle inbreuken

HOOFDSTUK 2. BESPREKING 8 2.2 Technologieën 2.2.1 Talen Bij het programmeren, wordt er meestal gebruik gemaakt van verschillende computertalen. Om dit project tot een goed einde te brengen, was er kennis van HTML, PHP, MySQL en JavaScript vereist. Deze zijn in een beknopte basiscursus aan bod gekomen doorheen de voorbije semesters. Zo werd voor PHP, HTML en JavaScript een project webtechnologie volbracht. Hoewel deze uitwerking vrij basic was, gaf het wel een duidelijke leidraad om mee verder te gaan. Je was al bekend met de syntax en moet de specifieke termen en de kenmerken die met de desbetreffende talen gepaard gaan. Voor het MySQL gedeelte waren er slechts enkele lessen toegewijd om deze syntax te leren kennen. Hiervoor was er meer inspanning nodig om complexere query s te begrijpen en te creëren. 2.2.2 PHP Het gehele Agora platform is zo goed als helemaal in PHP geschreven. Dit omdat je met PHP, zo goed als alles kan bereiken. Sinds de nieuwe versie van PHP, PHP5 is het mogelijk om beter te programmeren. Dit doordat deze versie object geörienteerd programmeren ondersteund wordt. Doordat PHP ook server-sided is, worden enkel de resultaten weergegeven voor de gebruiker. Alle berekeningen worden op de server uitgevoerd, dit is positief voor de computergebruiker binnen het onderwijs. PHP werkt ook heel goed samen met relationele databanken zoals MySQL. Structuur De structuur van het programma kan je beschrijven als een grote IF-lus om na te zien of je recht hebt op de code, door gebruik te maken van sessie variabelen en een switchcase. Als je recht hebt op de code, dan krijg je eerst de index pagina te zien, vervolgens bij het drukken op een knop, wordt er Javascriptcode aangeroepen die vervolgens met behulp van jquery post data gaat pushen naar PHP aan de hand van post variabelen. Deze variabelen worden opgevangen door PHP en in een PHP variabele gestoken. Vervolgens wordt er met die variabele in de switch case doorlopen. In onderstaande afbeeldingen ziet u eerst een overzicht van hoe het process loopt van het begin van de applicatie totdat je iets op je scherm te zien krijgt. Vervolgens krijg je een visueel overzicht van de manier van werken van de switch case. Hoe de gebruiker begint en hoe de data dan via PHP, naar Javascript, terug naar PHP en uiteindelijk weer naar de gebruiker terug komt.

HOOFDSTUK 2. BESPREKING 9 (a) Voorbeeld index.php structuur (b) Voorbeeld Switch Case structuur Figuur 2.8: Voorbeeld PHP Structuur

HOOFDSTUK 2. BESPREKING 10 DomPDF DomPDF is een PHP klasse die er voor zorgt dat je PHP, HTML data wordt omgezet naar een PDF bestand. Door alle data in een php variabele te steken, kan deze variabele worden geconverteerd naar PDF code. Met behulp van vier lijnen code in je php bestand, wordt je webpagina in een pdf document gedownload. $dompdf->load_html($html);//html variabele laden $dompdf->render();//het renderen van de pdf $pdf = $dompdf-> output();//de pdf code opslaan als string in de variabele $pdf $dompdf->stream("afdruk.pdf",array( Attachment =>0));//PDF weergeven 2.2.3 Javascript Javascript wordt gebruikt om onze webapplicatie wat meer dynamisch te maken en functionaliteit aan knoppen te geven. Door de javascript files te includen in de index.php file, kon ik elke functie oproepen. Doordat Javascript voornamelijk een client-side scripting tool is, wordt de code pas uitgevoerd en opgehaald wanneer het nodig is. Er is geen gebruik gemaakt van nieuwe frameworks zoals Meteor 1, omdat dan elke bestaande applicatie opnieuw zou moeten bekeken worden en indien nodig aangepast. Er moet ook rekening mee gehouden worden dat de applicatie binnen een school gebruikt moeten worden en daar is de ICT meestal niet zo goed vertegenwoordigd. Oude computers met Windows XP en trage processoren zijn daar niet onbekend. Om deze compatibiliteit te bewaren is er geprogrammeerd naar deze gebruikers. Hierbij wordt ook aangeraden om Agora enkel binnen Google Chrome te gebruiken, dit omdat Chrome in-app updates heeft en de beste ondersteuning biedt voor Javascript op oudere computers. Agora wordt continu getest in Chrome, andere browsers hebben de gewoonte om langer Javascript code te onthouden in het geheugen waardoor bij het opnieuw openen de oude en foute Javascript code gebruikt wordt. Dit is bij Chrome niet het geval. jquery jquery is een zeer handige, gebruiksvriendelijke JavaScript bibliotheek. In de reeds bestaande webapplicaties binnen Agora wordt al zeer gretig gebruik gemaakt van jquery en jquery UI. Het hele platform is opgebouwd met allerhande dialog boxes, accordions, modal forms en meer jquery UI Widgets. Dit zijn extensies die gemakkelijk kunnen worden aangeroepen met weinig code. Zo kan je bijvoorbeeld van een simpel venster een accordion maken door in Javascript dit toe te definëren: $(function() { $( "#IDvanDIV" ).accordion(); }); 1 https://www.meteor.com

HOOFDSTUK 2. BESPREKING 11 Ajax made easy Dankzij jquery AJAX methodes kan er op een snelle en minder complexe manier gecommuniceerd worden met de webserver. Normaal gezien zou je als je data naar de webserver zou willen sturen deze moeten verzenden via JSON. Dit is nu niet meer nodig. Je kan gemakkelijk een gehele form serialiseren en deze met een functie doorsturen naar de server. Bijvoorbeeld: $.post("jq/rieanalyses.php",$("#keuzeamlokaalformid").serialize(), function(data) { auditinvullen( openvragen,id) $( #dialog2 ).dialog("close"); }); Hierbij definieer je het php bestand, vervolgens de id van de form die je wil serialiseren en tijdens het serialiseren, kan je ook nog andere functies aanroepen die moeten worden uitgevoerd. Zoals je hier ziet wordt de functie auditinvullen aangeroepen en wordt de vorige dialog gesloten. jquery UI jquery UI is zoals eerder al vermeld verantwoordelijk voor een groot deel van het visuele beeld dat de gebruiker te zien krijgt. Er is voornamelijk gebruik gemaakt van de volgende widgets: Accordions en Dialogs. Dit omdat de gebruiker deze lay-out nu eenmaal gewoon is, is er ook in deze stijl verder geprogrammeerd. DataTables Dankzij deze 2 plugin voor jquery, krijgen tabellen een degelijke opmaak met een zoek/filter veld, dat de hele tabel doorzoekt. qtip2 qtip2 3 wordt gebruikt binnen Agora om extra informatie over een bepaald onderwerp zichtbaar te maken door met de muis over een element te gaan. 2 https://www.datatables.net 3 http://qtip2.com

HOOFDSTUK 2. BESPREKING 12 2.2.4 MySQL Voor de gegevensverwerking wordt er gebruik gemaakt van een Apache MySQL server. Om gegevens heen en weer naar de databank te sturen. Hiervoor zijn query s nodig zoals bijvoorbeeld select, insert, insert select, join query s. Om veiligheidsredenen zorgen we ervoor dat er steeds een check gebeurd dat bij communicatie met de server de juiste gegevens gebruikt worden. Dit doen we door de gegevens weg te schrijven naar een aparte php-pagina en vervolgens daarvan een superglobal maken, zodat deze overal waar de php geincludeerd is, gebruikt kan worden. Ook wordt er rekening gehouden met de OWASP Top 10 4, namelijk op de eerste plaats staat Injectie. SQL Injection is een manier om op fraudeleuze wijze gegevens uit een databank te kunnen halen door zoekquery s in de input velden te typen. Dit doen we door volgende code bij de MySQL statements te zetten: $response=mysqli_query($link,$query); $teposten = mysqli_real_escape_string($link, $_POST[ naamteposten ]); In onderstaande afbeelding zie je een voorbeeld van hoe een simpele query kan worden ingegeven in een browser om verborgen gegevens uit de databank uit te lezen. Figuur 2.10: Voorbeeld SQL Injection Verder is er voor de MySQL Storage Engine in het begin gekozen voor MyISAM, omdat deze een zeer snelle reactie tijd heeft voor select query s uit te voeren. Maar een mindere performantie heeft voor insert en update queries. Deze wordt in de grote vakantie omgezet naar InnoDB, omdat deze gebruik maakt van Row-level-blocking. Hierbij worden de rijen die gebruikt worden vastgezet, zodat deze niet kunnen worden aangesproken door andere processen. Dit zorgt voor een beteren performantie voor simultane insert en update query s. 4 https://www.owasp.org

HOOFDSTUK 2. BESPREKING 13 2.2.5 OWASP Open Web Application Security Project is een non-profit organisatie die zich inzet om de beveiliging van de webapplicaties duidelijker zichtbaar te maken voor zowel de programmeur als voor de gebruiker. Dit doen ze onder andere door een website ter beschikking te stellen waarin de tester verschillende beveiligingsniveaus kan instellen. Tijdens het programmeren is er bewust rekening gehouden met twee aspecten SQL injectie en code zichtbaar maken enkel voor de personen die er recht toe hebben. De SQL injectie wordt tegengegaan door elke query te beveiligen met volgende code: mysqli_real_escape_string(); Het laatste wordt gecontroleerd door sessievariabelen in PHP en een if-statement. Enkel alleen als er een juiste sessievariabele is, dan wordt de code zichtbaar en uitgevoerd. 2.2.6 Apache De server waar de applicatie op draait, is een Linux server, wat voor verschillende compatibiliteit problemen heeft gezorgd. Omdat de eigen code geschreven is op een Windows Apache server. Een voorbeeld van een probleem was de hoofdlettergevoeligheid die Linux heeft en Windows niet. Alsook werden sommige query s anders uitgevoerd op de Linux server als op de Windows server. 2.2.7 CSS Er is reeds een standaard css reeds beschikbaar voor heel Agora, de enige uitbreiding hierbij is een hover om een originele afbeelding te laten zijn wanneer je met de muis over de afbeelding gaat.

HOOFDSTUK 2. BESPREKING 14 2.3 Software 2.3.1 PHP Designer 8 PHP Designer is een programma waarbij je de mogelijkheid hebt om in heel veel talen te coderen. Deze ondersteunt bijvoorbeeld PHP, JavaScript, HTML en CSS. Dus alle talen die we nodig hebben in een gratis programma met een simpele versie Intellisense. Dit zorgt er voor dat de software je suggesties geeft als je aan het coderen bent. In het begin werd er geopteerd om Dreamweaver CS6 te gebruiken, maar deze gaf net iets te veel overhead voor het doel van het project. Door een te groot geheugengebruik bij het builden van de HTML en PHP code, zijn we overgeschakeld op hetzelfde programma dat Alain gebruikt. 2.3.2 USB Webserver De webserver is een Apache, MySQL webserver die je vanop je USB stick kan draaien, zonder installatie! En door zijn kleine bestandsgrootte, loopt het programma ook nog heel vlot. De user interface is tevens heel minimalistisch en to-the-point. Een veld om de poorten aan te passen en om ze aan te zetten. Een enorm voordeel tov. Xampp of Mammp, waarbij je een installatiebestand van tussen de 100 en de 200 MB moet downloaden en installeren en veel meer instellingen vereist voor hetzelfde doel. 2.3.3 Chrome/Firefox Omdat we onze code continu moeten testen, staan onze browsers ook heel de tijd open om onze code te visualiseren. Dankzij de ingebouwde functies van de browsers zoals broncode weergeven en element inspecteren, kunnen we snel zien welke functies we aanroepen en of de variabelen de correcte waarden hebben. Om Agora optimaal te gebruiken wordt het gebruik van Chrome aangeraden. Dit is omdat deze in-browser updates heeft en zo goed als alle extensies die nodig zijn al heeft ingebouwd. Andere browsers zullen ook kunnen werken met Agora, maar een optimale werking zal niet kunnen gegarandeerd worden, omdat bij andere browsers aan externe factoren kan liggen dat de applicatie niet werkt. 2.3.4 Firebug Extentie Dankzij deze uitgebreide website debugger, kon ik snel mijn JavaScript code nazien op fouten en zien hoe de website communiceert met de server. Ook kon de HTML en de CSS snel worden gewijzigd, zeer handig om dit snel even na te zien in de browser zelf.

HOOFDSTUK 2. BESPREKING 15 2.3.5 Owncloud Op de preventiedienst had Alain op hun server ruimte voor ons gereserveerd met behulp van het Owncloud programma. Dit doet ongeveer hetzelfde als DropBox, Copy en OneDrive, met het verschil dat je het kan draaien op je persoonlijke server. Hierin moesten we ook al onze code zetten, zodat er op de eerste plaats een backup van is op de lokale server en ten tweede dat Alain ten alle tijde onze vooruitgang kon zien. Een handig weetje over Owncloud is dat deze ook versie geschiedenis ondersteund! Hiermee kan je in een duidelijke tijdslijn zien wat je hebt aangepast in je code.

Hoofdstuk3 Problemen 3.1 Kennismaking Agora code Agora is reeds een bestaand platform met werkende applicaties. De applicatie die ontwikkeld werd, moest naadloos kunnen werken op het Agora platform. Dit zorgde er voor dat er eerst moest gekeken worden naar de bestaande code. De eerste weken werd er veel tijd geïnvesteerd in het bestuderen en vooral het begrijpen van de bestaande code. Hierbij werd een testapplicatie aangeboden waarin "gespeeld"mocht worden. Dit was nodig om de huidige manier van werken te begrijpen. Documentatie code Er was echter nog een groot struikelblok bij het testen en bestuderen van de bestaande applicatie. De code die werd gegeven en ook alle code die al ooit geschreven is, is dat deze ongedocumenteerd is. En bijgevolg ook onduidelijk voor andere programmeurs. Hierdoor werd het groeiproces op een negatieve manier beïnvloed. Na een maand kwam echter wel een rendement van de geïnvesteerde tijd. De applicatie groeide sneller en sneller. En er was ook duidelijker resultaat te zien. 16

HOOFDSTUK 3. PROBLEMEN 17 3.2 Troubleshooting Bij technische problemen kon er niet telkens hulp gevraagd worden en moest er bijgevolg zelf gezocht worden naar een oplossing. Bij herhaaldelijke problemen werd er een patroon opgesteld dat werd afgelopen om zo snel tot een oplossing te komen. Hieronder een overzicht per technologie hoe er bepaalde problemen werden verholpen. PHP Binnen PHP zijn er niet veel problemen geweest. Het enige dat regelmatig roet in het eten kwam gooien, waren ID s die niet werden doorgegeven of die ineens leeg waren. Als dit probleem zicht voordeed, werd er vanaf het begin de ID weergegeven op het scherm met een beschrijving "begin + ID ën zo verder, stap per stap waar de waarde ID ingevuld zou moeten zijn. Zo kon er snel worden gezien in welke stap dat de ID niet werd meegegeven. MySQL De meestvoorkomende problemen die zich voordeden waren query s die niet correct werden uitgevoerd en array s die leeg waren. Om dit probleem op te volgen werd er na de nodige query s, een print gezet om de query weer te geven op het scherm. Zo kon er gezien worden of de variabelen die in de query werden meegegeven, juist zijn. Vervolgens werd de query gekopiëerd en geplakt in PHPmyAdmin. PHPmyAdmin is een visuele weergave van de inhoud van de databank. Zo werd de query uitgevoerd op de databank zelf en krijg je de meest accurate resultaten terug. Javascript Binnen Javascript zijn er nog verschillende plugins zoals jquery, DataTables en qtip2. DataTables werd voornamelijk gebruikt bij de opmaak van alle overzichtstabellen. Een probleem dat hiermee werd ondervonden, dat je per tabel telkens een eigen stuk code moest aanroepen. Echter omdat er meer dan negen tabellen zijn, zou dit betekenen dat er minstens negen keer dezelfde code zou voorkomen. Elk stuk code zou ook een eigen tabel aanspreken, dus deze dubbele code was niet zo snel weg te werken. Om deze dubbele code te vermijden werd alle code in een functie gestoken die elke keer opnieuw werd aangeroepen met een unieke ID die dan de juiste tabel opmaakt. Vooraleer qtip2 effectief in gebruik werd genomen, was er al onbewust gebruik gemaakt van het "titleättribuut dat qtip2 gebruikt. Dit gaf dus dat als je met de muis over je pagina ging, dat er continu tekstvelden tevoorschijn kwamen, die enkel zichtbaar zouden moeten zijn voor de programmeur. Binnen jquery zijn er nog twee onderdelen jquery zelf en jquery UI. Voor jquery zelf zijn er regelmatig problemen geweest dat bepaalde ID s niet werden doorgegeven naar PHP of naar andere functies of dat een bepaalde functie niet werd aangeroepen. Deze problemen werden op een gelijkaardige manier verholpen als bij PHP, maar dan met een "console.log()-functie die er voor zorgde dat je alles goed kon volgen in de debugger console welke waarden er aanwezig waren en welke functies werden aangeroepen. Voor de UI variant werden er verkeerde widgets aangesproken of niet uitgevoerd. Bijvoorbeeld er werd gecodeerd dat een accordion zou moeten openen, maar deze opende niet. Als deze