Je kent ze wel, de grote reserveringssystemen die websites als Ticketmaster gebruiken. Je klikt de plekken aan waar je graag wilt zitten in een plattegrond, vult je gegevens in, betaalt met iDeal en krijgt binnen een paar minuten je tickets in de mail. Het ontwikkelen van precies zo'n systeem is mijn meesterproef voor O&O. Samen met een klasgenoot maken we een theaterreserveringssysteem voor Speelgroep Tosjopa uit Tegelen.
Zoals je je wel kunt voorstellen, is het maken van zo'n systeem een hele klus. We kunnen natuurlijk niet zomaar beginnen met programmeren. Eerst moeten we goed bedenken hoe we dit gaan aanpakken. Daarom zijn we als eerste begonnen met een brainstorm, waarin we wat zaken op papier hebben gezet.
Onze eerste brainstorm
Vervolgens zijn we begonnen met wat punten uit de brainstorm verder uit te zoeken in uitgebreide oriƫntaties. Hoe maken we een database aan? Hoe laten we de website met deze database communiceren? Hoe voeg ik data toe, verwijder ik deze of pas ik deze aan? Op onder andere deze vragen hebben we antwoorden zitten zoeken. Maar buiten onze vragen over de database en de communicatie hiermee moesten we ook uitzoeken hoe we bijvoorbeeld mails sturen met PHP en hoe we een inlogsysteem konden maken voor beheerders. Alleen al met deze oriƫntaties hebben we zo'n 25 pagina's volgeschreven. Dit is natuurlijk wel voornamelijk code, die de pagina's snel vult.
Vervolgens zijn we verder gegaan met denken. Hoe willen we ons systeem nu echt gaan maken? We begonnen met het aanmaken van het adminpanel. Het adminpanel is de plek waar voorstellingen kunnen worden aangemaakt door beheerders. Ook kunnen hier de voorstellingen aangepast worden en stoelen gratis gereserveerd worden (bijvoorbeeld voor familieleden van de acteurs). Vooral bij die laatste hebben we erg goed moeten opletten. Het reserveren van stoelen mag namelijk niet misgaan. Stel je bijvoorbeeld voor dat twee personen net op hetzelfde moment een stoel willen gaan reserveren. Dan wordt deze stoel dus dubbel gereserveerd en hebben we een probleem.
In de tabel waar alle stoelen voor alle voorstellingen staan is er een kolom genaamd status. Deze kan drie waardes hebben: available, reserved of active. Available en reserved spreken voor zich, available betekent dat de stoel beschikbaar is en reserved betekent dat de stoel al gereserveerd is. Maar wat houdt active dan in? Active is de status die een stoel krijgt als iemand deze op dat moment aan het reserveren is. Nu zul je je misschien afvragen: waarom zet je deze stoel niet gewoon op reserved? Het antwoord op deze vraag is een beetje technisch. Stel: Pietje wil ervoor zorgen dat niemand tickets kan reserveren voor een voorstelling. Hij zou dan alle stoelen aan kunnen klikken, het reserveerproces starten en vervolgens niks doen. Alle stoelen staan op reserved en kunnen dus niet gereserveerd worden, omdat Pietje alle stoelen bezet houdt, maar uiteindelijk nooit zal betalen. Daarom is er de active status. Wanneer een stoel al 15 minuten op active staat en er niks is gewijzigd zal deze automatisch weer op available worden gezet.
Een voorbeeld van een voorstelling waarin stoelen gereserveerd zijn
Er zijn natuurlijk veel meer van dit soort dingen die fout kunnen gaan. Daarom moet alles goed worden getest. Hierbij maken we gebruik van twee soorten testmethodes: black box testing en white box testing. Bij white box testing weet de persoon die het programma test precies hoe het programma in elkaar zit en weet hij of zij dus waar mogelijke zwakheden zijn en kan hier vervolgens specifiek op testen. Bij black box testing is dit anders, hierbij weet de persoon die het programma test totaal niet hoe het programma in elkaar zit. Hij of zij ziet dus alleen de frontend van het programma. Hierdoor zal hij of zij dus dingen proberen waar de programmeur niet over had nagedacht. Het beste is om black box testing met zoveel mogelijk mensen uit te voeren, zodat zoveel mogelijk verschillende scenario's worden getest.
Hoeveel tests je ook uitvoert, er zullen altijd fouten in een programma blijven zitten. Dit is onvermijdelijk. Het is echter onze taak om zoveel mogelijk van deze fouten eruit te halen. Dat zal nog een hele uitdaging worden bij dit project.
Op het moment van schrijven is het adminpanel net af en zijn we begonnen met het reserveren van tickets door bezoekers. Onze deadline is nog een paar weken weg en we lopen voor op schema, dus ik heb alle vertrouwen erin dat we een mooi product neer zullen zetten.