gravita
Hoofdkade 95, 9503 HD Stadskanaal Tel. & fax: 0599-614815 E-mail:
[email protected] / www.gravita.nl Inschrijfnummer KvK: 02083322 Postbank 4491228 Fiscaalnummer 1345.68.266.B01
Een praktijkvoorbeeld voor een maatwerkoplossing Gravita is sinds de start in september sponsor van pretsite ‘leukeuitjes.nl’. Voor dit doel heeft de softwareafdeling van Gravita in oktober reeds beheersoftware ontwikkeld. Deze beheersoftware bevat het beheer van de gepubliceerde uitjes en evenementen, het aanmaken van de indexpagina’s met een html-generator en een aanmaak voor een databasebestand voor opname op de website (selecties). In februari 2005 heeft de webmaster het plan opgevat om met periodieke prijsvragen één of meerdere uitjes meer publiciteit te geven. De beheerders/exploitanten van de uitjes op de site werken daar graag aan mee. Deze prijsvragen kunnen natuurlijk een aardig beslag leggen op de tijd van de webmaster (medewerkster van Gravita). Aan de softwareafdeling van Gravita de vraag om de handelingen zoveel mogelijk te automatiseren. Er zal worden begonnen met het opstellen van een lijst met functionaliteiteisen (zie 1). Die kan door de opdrachtgever worden gemaakt of door de afdeling automatisering én de opdrachtgever samen. Hierbij moet men bedenken dat het feitelijk de opdrachtgever is die de lijst zou moeten maken. Automatiseringsmedewerkers vinden het werk vaak zó leuk, dat ze vaak allerlei extra mogelijkheden in het programma willen bouwen. En daarmee gaandeweg de prijs enorm opdrijven. Het hoeft niet direct onwil of kwade wil te zijn, maar het is belangrijk om zeer kritisch te kijken of alle opgegeven functionaliteit echt nodig is. Er hangt immers een prijskaartje aan. Met de functionaliteiteisen in de hand dient de afdeling softwareontwikkeling dan een technische uitwerking te maken voor het project (zie 2). Deze dient zo uitgebreid te zijn als nodig is om alle functionaliteit en mogelijkheden aan de opdrachtgever duidelijk te maken. Eerst na bespreking en mogelijk correctie door de opdrachtgever kan zelfs worden begonnen met het uitvoeren van het project. Zodra de opdrachtgever akkoord is met de technische uitwerking kan een definitieve prijs worden vastgesteld (zie 3 en 4). Ten tijde van het publiceren van dit document is de webmaster van leukeuitjes.nl inmiddels al aan de tweede en derde prijsvraag begonnen. De tijd kan, mede door het hier weergegeven programma, tot een minimum worden beperkt. Op dit moment zijn er in totaal al meer dan 1200 deelnemers, en de verwerkingstijd per prijsvraag kan op ongeveer een half uur worden geschat, buiten het maken van de website. Het blijkt nu een succesvolle investering te zijn geweest.
Inhoud 1. 2.
3. 4.
De functionaliteiteisen van de webmaster................2 De technische uitwerking .........................................3 2.1 De schermen ...............................................3 2.2 De bestands en/of databasestructuur..........5 2.3 De applicatiestructuur..................................7 2.4 Hoe nu verder?............................................7 De prijs van het project ............................................7 Het programma ........................................................8
Gravita
een praktijkvoorbeeld: Prijsvragen met leukeuitjes.nl
6 april 2005
1. De functionaliteiteisen van de webmaster (in overleg met afdeling softwareontwikkeling) 1. Het geheel dient per prijsvraag te archiveren en verwijderen zijn; 2. E-mails dienen per stuk of per groep te kunnen worden gescand; 3. Het programma moet goede of foute antwoorden automatisch zoeken; 4. Het programma moet informatie geven over deelnemers en inzage in de e-mail per deelnemer; 5. Het programma moet de mogelijkheid hebben om e-mail mailinglijsten te maken; 6. Het programma moet willekeurig prijswinnaars kunnen kiezen en selecteren 7. Het programma moet altijd direct actuele informatie geven over deelnemers en antwoorden 8. Bij twijfel moet het programma snel geschoond kunnen worden en de e-mails opnieuw verwerken. Bijzonderheden: Ad 1. Het aantal deelnemers kan enorm oplopen. Het is de bedoeling dat het programma, de e-mails en de bestanden alleen gedurende de looptijd van de prijsvraag op schijf aanwezig zijn. Na een back-up dient de gehele map te kunnen worden verwijderd. Ad 2. De webmaster wil, om de bestanden in de map ‘prijsvraag’ overzichtelijk te houden, e-mails zoveel mogelijk per dag in één bestand zetten. Daartoe zal zij meerdere e-mails per dag aan zichzelf mailen als bijlage, en de op die manier ontvangen e-mail exporteren naar de prijsvraagmap. Ad 3. De antwoorden op de prijsvragen zullen zo eenvoudig mogelijk worden gehouden. Volstaan kan worden met een zoekactie in de e-mail body naar trefwoorden. Er kan een maximum van tien mogelijke trefwoorden worden aangehouden. Ad 4. Er zijn een aantal informatieschermen nodig: - informatie bestanden, met naam, datum (en tijd), en aantal e-mails; - informatie alle deelnemers, met naam, e-mail, datum (en tijd), antwoord goed/fout en e-mailbestand; - informatie deelnemers, zoals hiervoor, alleen de goede of alleen de foute antwoorden. Bij de lijsten met deelnemers moet per deelnemer de e-mail kunnen worden getoond. Ad 5. Ondanks het feit dat Gravita (en leukeuitjes.nl) absoluut tegen spammen zijn, en er niet graag aan meewerken, zou het kunnen zijn dat een van de beheerders/exploitanten van de uitjes de deelnemers eenmalig een speciale aanbieding wil doen. Aangezien zo’n gebaar in het voordeel van de deelnemers zou zijn, kan het mogelijk zijn dat de lijst beschikbaar zal worden gesteld. Ook is het mogelijk dat in het kader van de prijsvraag een retourmail wenselijk is. Voor deze redenen dient het in ieder geval mogelijk te zijn dat een .csv wordt aangemaakt. De mailinglijsten dienen een selectie te bevatten voor winnaars en niet-winnaars. Gravita stelt als eis dat voor prijsvragen waarbij nadrukkelijk naar emailadressen wordt gevist, dit aan de deelnemers kenbaar zal worden gemaakt. Ad 6. Het programma geeft de deelnemers een intern volgnummer. Hierdoor kan het programma uit een willekeurige reeks de prijswinnaars selecteren en weergeven. Deze handeling is altijd het sluitstuk van een prijsvraag. Ad 7. Beheerders/exploitanten kunnen, en doen dat meestal ook, vragen stellen over aantalen hits/views en deelnemers. Deze informatie moet direct voorhanden zijn. Ad 8. De uiteindelijke bestandsstructuur moet zeer doorzichtig zijn. De webmaster zal aan de hand van tellingen van e-mail (in emailmappen) de aantallen e-mails en deelnemers controleren. Aangezien email qua data (codetabellen) nogal een frivool medium is, moet het mogelijk zijn om de data te verwijderen en de verwerking opnieuw te starten.
2
Gravita
een praktijkvoorbeeld: Prijsvragen met leukeuitjes.nl
6 april 2005
2. De technische uitwerking De technische uitwerking van een automatiseringsprobleem valt uiteen in drie onderdelen: 2.1. De schermen, wat ziet de gebruiker; 2.2. De bestands en/of databasestructuur; 2.3. De applicatiestructuur, hoe worden de applicaties ingedeeld, plaats van de schermen. 2.4. Hoe nu verder? Het vervolg van het project. Na het aanmaken van elk van de onderdelen dient te worden teruggekeken naar vorige items én de eisen voor wat betreft de functionaliteit. Alvorens met het echte programmeerwerk te beginnen dient het weer besproken te worden met de opdrachtgever, in dit geval de webmaster van ‘leukeuitjes.nl’. 2.1 De schermen Het indelen van de schermen is het belangrijkste onderdeel van een applicatie. Het is doorslaggevend hoe de gebruiker de schermen ziet en begrijpt. Te ingewikkelde schermen kunnen ieder automatiseringproces frustreren, te simpele, en dus teveel schermen zullen de gebruiker niet stimuleren het programma te gebruiken. Het ontwerpen van de schermen is een samenspel tussen de gewenste informatie, de samenhang tussen de informatiedelen en de hoeveelheid informatie. Gravita heeft altijd als regel dat dagelijkse werkzaamheden op één scherm dienen te worden weergegeven. Dagelijkse werkzaamheden betekent hier niet dat de werkzaamheden dagelijks geschieden, maar dat het veel voorkomende werkzaamheden of functies zijn, vaak ook de basisfunctionaliteit genoemd. Mocht er teveel informatie zijn voor één scherm kan eventueel gebruik worden gemaakt van tabbladen, die dan ook weer een logische volgorde moeten hebben met betrekking tot het gebruik. Alvorens tot plaatsing op schermen over te gaan, dienen we eerst de basisinformatie en functies een plaats toe te kennen. Daarvoor maken we grofweg een lijstje met de informatie-items en functieknopjes. Projectinformatie Er zouden per periode wel eens meer dan één prijsvraag tegelijk kunnen zijn uitgeschreven. Dit zou inhouden dat, gezien de eisen van de webmaster, er meerdere mappen tegelijk zijn met het programma. Voor elke prijsvraag één. Daarom zouden we een informatief kader met omschrijving en einddatum van de prijsvraag moeten opnemen. Ter controle, voor bijvoorbeeld een controle na het terugzetten van een backup, de startmap van de prijsvraag. Daarmee kunnen we voorkomen dat de bestanden van prijsvraag 2 worden gebruikt in prijsvraag 1. Ook kunnen we de omschrijving van de prijsvraag opnemen in het mailingbestand, zodat eenvoudige selectie van de emailadressen mogelijk is. Databasegegevens De databasegegevens bestaan uit een aantal soorten informatie en die weer gesplitst naar verwerkt en niet verwerkt. We kunnen daarom de volgende tabel maken om de informatie weer te geven:
Aantal bestanden Aantal e-mails Aantal deelnemers Aantal goed Aantal fout
verwerkt 9999 9999
te verwerken 9999 9999
9999 9999 9999
Deze tabel voldoet aan de gestelde eisen. Het aantal bestanden, e-mails, deelnemers met goede en foute antwoorden zijn in één oogopslag zichtbaar.
3
Gravita
een praktijkvoorbeeld: Prijsvragen met leukeuitjes.nl
6 april 2005
Nu is het zaak om de gewenste functionaliteit toe te voegen per onderdeel:
Aantal bestanden Aantal e-mails Aantal deelnemers Aantal goed Aantal fout [selecties >>>>]
verwerkt 9999 info1 9999
te verwerken 9999 info2 9999
9999 info3 9999 info4 9999 info5 naar bestand
verwerken
Deze tabel geeft nu de gewenste informatie én de functionaliteit weer. De grijze vlakken zullen in het programma knopjes worden waarmee de informatie kan worden opgevraagd. De infoknopjes geven op het scherm een lijst met de betreffende informatie weer. De knop ‘verwerken’ zal de bestanden die ‘te verwerken’ zijn verwerken en optellen in de kolom ‘verwerkt'. Het onderdeel ‘[selecties>]’ geeft de mogelijkheid om de ‘naar bestand’ functie te selecteren voor winnaars of niet-winnaars. De ‘naar bestand’ knop maakt een e-mail mailingbestand aan, met gebruik van de selectie voor winnaars en niet-winnaars (en foute antwoorden). Antwoorden in e-mail De eis was dat er maximaal tien trefwoorden kunnen worden opgegeven voor controle van de verwerkte e-mails. Er dient dus een eenvoudig kader te worden gemaakt met een lijst, waar trefwoorden aan kunnen worden toegevoegd en verwijderd. Informatie De informatieonderdelen, die zijn wat betreft de vraag zijn weergegeven in de tabel bij ‘databasegegevens’ hebben niet echt een raakvlak. De lijsten hoeven dus nooit naast elkaar te worden ingegeven. Het is dus mogelijk om een en hetzelfde deel van het scherm te gebruiken voor het weergeven van de informatie. Bij het opvragen van informatie zal het vorige informatiescherm worden gewist en het nieuwe scherm worden weergegeven. De indeling van het scherm Door nu een inschatting te maken van de hiervoor genoemde onderdelen, kan globaal een schermindeling worden gemaakt. Voor meer ingewikkelde applicaties kunnen de schermen ook direct worden aangemaakt. Er zijn diverse tools en ontwikkelomgevingen waarmee het scherm direct kan worden aangemaakt. Het scherm zal er dan als volgt globaal uitzien:
4
Gravita
een praktijkvoorbeeld: Prijsvragen met leukeuitjes.nl
6 april 2005
De indeling kan eventueel wijzigen als tijdens de volgende onderdelen of bespreking met de opdrachtgever blijkt dat meer data of selectiemogelijkheden nodig zijn. Een tweetal functies komen nu niet voor op het hoofdscherm: - inzien e-mail per deelnemer; - aangeven prijswinnaars. Inzien e-mail per deelnemer Door te dubbelklikken op een deelnemer in het informatiescherm (onderste deel) kan een e-mail op het scherm worden getoond. Hiervoor zal een afzonderlijk scherm voor worden gemaakt. Aangeven prijswinnaars Hier kunnen de willekeurige prijswinnaars worden gekozen én weergegeven. Er kunnen een aantal tot maximaal 10 prijswinnaars worden aangegeven. Het programma zal dat aantal willekeurige waarden opgeven, waarbij geen dubbele mag voorkomen. Van de gekozen nummers zal de naam en emailadres worden weergegeven. Daarna is selectie mogelijk op winnaar en niet-winnaar. Het scherm zal er dan als volgt uitzien:
2.2 De bestands en/of databasestructuur Voor het indelen van de informatie dient te worden bedacht welke mogelijkheden uiteindelijk nodig moeten zijn voor de aangemaakte bestanden. Als er naast het werken met het programma ook andere toepassingen voor de data mogelijk moeten zijn, kan de keuze voor de databasevorm anders worden. Te denken valt onder meer aan een opslag als MS Excelbestand, MS Accesbestand of mogelijk een andere vorm die door al bestaande toepassingen wordt gebruikt. Het voordeel van deze bestandvormen is dat de bestanden ook toegankelijk zijn voor andere programma’s. De nadelen van deze bestandvormen is dat de ontwikkeling meestal meer tijd kost, omdat de bestanden nu meer documentatie vergen en een logische en begrijpelijke opbouw in tabellen en records moeten hebben. De keuze is ook van invloed op de snelheid van de applicatie. De bestandvorm die ontwikkelomgevingen bieden geven doorgaans de hoogste snelheid. Voor ons project ‘prijsvragen’ van Leuke Uitjes kunnen we er van uit gaan dat we de snelste bestandvorm kiezen. Buiten een uitvoer naar informatieschermen en een eventuele mailinglist zal er geen informatie in andere programma’s worden opgenomen. De data blijft altijd onder beheer van de webmaster.
5
Gravita
een praktijkvoorbeeld: Prijsvragen met leukeuitjes.nl
6 april 2005
We verdelen de informatie in hoofdgroepen (bestanden) en velden: hoofdgroep project
bestanden te verwerken
bestanden verwerkt
deelnemers
trefwoorden antwoord Winnaars
velden naam einddatum startmap bestandnaam datum tijd aantal e-mails bestandsgrootte bestandnaam datum tijd aantal e-mails bestandsgrootte datum tijd volgnummer naam e-mail antwoord goed/fout aantal regels e-mail body bestandnaam trefwoord (maximaal 10) volgnummer sleutel deelnemerbestand
sortering
*
*
*1 *2 *3
Daarnaast zal er nog gebruikt worden gemaakt van twee hulpbestanden. Een van die bestanden is het uitvoerbestand voor de mailinglijst. De webmaster heeft hier een keuze gemaakt voor een mailinglist die importeerbaar is in MS Outlook/Outlook Express. De meeste emailprogramma’s zullen geen moeite hebben dit bestand in te lezen. Het bestand kan ook zonder meer in MS Excel of Access worden geïmporteerd. De velden die zijn gebruikt worden zoals verplicht in de eerste regel genoemd, alle velden worden gescheiden door ‘;’. Aangezien vooral Outlook Express gebruikt maakt van voorgedefinieerde velden zullen de volgende velden worden gebruikt: Veldnaam Naam Emailadres Telefoon Telefoon thuis
inhoud naam deelnemer emailadres antwoord 'goed' of 'fout' projectomschrijving
De projectomschrijving is toegevoegd om het selecteren binnen het emailprogramma mogelijk te maken.
Het tweede hulpbestand zal worden aangemaakt om eventuele dubbele emailadressen uit de lijst met deelnemers te verwijderen. Tevens zal het bestand zorgdragen voor sortering op emailadres. hoofdgroep Hulpbestand mailinglijst
velden e-mail naam antwoord goed/fout
sortering *
Opname van e-mail E-mail kent een opmaak in platte tekst, met daar waar nodig opname van een indicatie van een codetabel voor speciale tekens. Opname van de module codetabellen conversie van Gravita zou de kostprijs verhogen met € 300. Aangezien de uiteindelijke databestanden niet gebruikt zullen worden voor andere doeleinden, ligt het voor de hand om hiervan af te zien (op dit moment). E-mails zullen worden gescand als tekstbestanden.
6
Gravita
een praktijkvoorbeeld: Prijsvragen met leukeuitjes.nl
6 april 2005
2.3 De applicatiestructuur Bij grote applicaties kan het aardig puzzelen zijn om de juiste structuur in de programmaonderdelen op te zetten. Er dient een tabel te worden aangemaakt met alle afzonderlijke programmaonderdelen en het gebruik. Ook dient te worden aangegeven welke routines door andere programma’s eventueel kunnen worden hergebruikt. Als één van de programmaonderdelen bijvoorbeeld een functie herbergt die een bepaalde functie uitvoert die later in een ander programma ook weer dient te worden aangeroepen, moet deze worden opgenomen met een duidelijk omschreven werking in een dllbestand. Voor het project ‘prijsvragen’ van Leuke Uitjes is dit niet het geval. De structuur staat volledig op zichzelf en is bovendien zeer eenvoudig. De twee functies die niet op het hoofdscherm staan zijn erg klein. Het ligt daarom voor de hand om alle routines op te nemen in één uitvoerbaar bestand (.exe). Dat bestand bevat dan drie vensters: 1. hoofdscherm; 2. inzage e-mail per deelnemer; 3. keuze en informatie winnaars. 2.4 Hoe nu verder? De technische uitwerking dient geheel met de opdrachtgever en eventueel andere gebruikers te worden besproken. Er kunnen eisen worden toegevoegd of gewijzigd. Eventuele vragen over de uitwerking én de antwoorden dienen te worden opgenomen in de uitwerking. De technische uitwerking is in feite een gespecificeerde opdracht aan de afdeling softwareontwikkeling. Voor externe opdrachten maakt de technische uitwerking deel uit van de offerte in het laatste stadium. Na akkoordverklaring door de opdrachtgever zal er een prijs worden verbonden aan het project. Als die prijs akkoord is zal de afdeling softwareontwikkeling een technische analyse maken, die rechtstreeks kan worden gecodeerd in een programma. Daarna zal de handleiding worden geproduceerd en kan de testfase worden aangevangen. De technische analyse en de broncode van het programma behoren tot de vertrouwelijke gegevens van de afdeling softwareontwikkeling. 3. De prijs van het project De prijs is opgesteld naar een vastgesteld aantal uren met een vast uurtarief. Aangezien het hier een min of meer intern project betreft, zullen we altijd binnen het budget blijven. Uiteindelijk mogen doorberekende prijzen voor programmatuur nooit de hier vermelde prijs overschrijden. Technische uitwerking Gebruikershandleiding Algemene opzet/schermen E-mail scannen Uitvoerbestand mailing Prijswinnaars Informatieschermen Controle en testen Totaal
€ € € € € € € € €
95 90 260 240 45 120 170 360 1380
7
Gravita
een praktijkvoorbeeld: Prijsvragen met leukeuitjes.nl
6 april 2005
4. Het programma Hier zijn screenshots van het uiteindelijke programma in de testfase. In de periode tussen de vaststelling van de prijs en deze eerste testfase is de technische analyse en het coderen van het programma uitgevoerd. De interne test gaat vooraf aan het creëren van een set-up procedure en levering op een CD.
Als het programma wordt gestart zal het direct de startmap scannen op emailbestanden. De verwerkte bestanden zullen worden gecontroleerd en de te verwerken bestanden worden weergegeven onder de kolom te verwerken in het ‘gegevens database’ kader. De titel en einddatum van het project kunnen worden ingegeven, de startmap zal automatisch worden weergegeven in het kader links boven. In dit voorbeeld zijn er al twee trefwoorden ingegeven, ‘software’ en ‘analyse’. Door in het antwoord veld een trefwoord in te geven en op de ‘toevoegen’ knop te drukken zak het trefwoord worden toegevoegd. Door in de lijst een trefwoord aan te wijzen en op de ‘verwijderen’ knop te drukken, zal het trefwoord worden verwijderd. Het onderste deel van het scherm is standaard leeg. We hebben voor dit voorbeeld op de knop ‘info’ naast ‘te verwerken’ geklikt. Het bestand 1 maart 2005.eml is een bestand met 15 e-mails, speciaal voor dit doel aangemaakt. Het bevat zoals zichtbaar 15 emailbestanden.
8
Gravita
een praktijkvoorbeeld: Prijsvragen met leukeuitjes.nl
6 april 2005
Door te drukken op de knop ‘verwerken’ zullen de emailbestanden worden gescand en gecontroleerd. In dit geval zijn de 15 mails natuurlijk compleet en bevat 11 goede antwoorden en 4 foute. Voor dit voorbeeldscherm hebben we op de knop ‘info’ bij verwerkt geklikt, zodat het bestand informatiescherm zichtbaar is in het onderste deel. De ‘info’ knoppen van de deelnemersaantallen geven de volgende scherm op het onderste deel: Info naast ‘Aantal deelnemers’:
Info naast ‘Aantal goed’:
9
Gravita
een praktijkvoorbeeld: Prijsvragen met leukeuitjes.nl
6 april 2005
Info naast ‘Aantal fout’:
Door te dubbelklikken op één van de deelnemers kan de e-mail worden bekeken, als tekstbestand:
10
Gravita
een praktijkvoorbeeld: Prijsvragen met leukeuitjes.nl
6 april 2005
De knop ‘Prijswinnaars’ geeft de mogelijkheid om de prijswinnaars aan te wijzen. Het zal willekeurige waarden kiezen en de bijbehorende prijswinnaars zoeken en weergeven.
Dit zal gebeuren door het aantal prijswinnaars (1-10) in te geven en op de ‘kies winnaars’ knop te drukken. In de software is rekening gehouden met het feit dat de prijsvraagwinnaars eventueel op een andere wijze worden gekozen. Deze kunnen dan op een andere manier in een bestand worden gezet. Dit programma-onderdeel zal in dat geval alleen de namen en emailadressen weergeven. De knop ‘naar bestand’ zal, met gebruikmaking van de selectie voor winnaars en niet-winnaars, het email mailingbestand aanmaken. De naam van het uitvoerbestand kan door de gebruiker worden gekozen of aangewezen. Het bestand zal er als volgt uitzien: Naam;E-mailadres;Telefoon;Telefoon thuis Afdeling software Gravita;
[email protected];fout;Testprijsvraag maart 2005 Anita en Robbie;
[email protected];fout;Testprijsvraag maart 2005 Anita;
[email protected];goed;Testprijsvraag maart 2005 BetaTester;
[email protected];goed;Testprijsvraag maart 2005 Demie;
[email protected];goed;Testprijsvraag maart 2005 D. Nemer;
[email protected];goed;Testprijsvraag maart 2005 Doenenlaten;
[email protected];goed;Testprijsvraag maart 2005 Groep LU;
[email protected];goed;Testprijsvraag maart 2005 Jose;
[email protected];goed;Testprijsvraag maart 2005 M. Mail;
[email protected];goed;Testprijsvraag maart 2005 Ovy;
[email protected];goed;Testprijsvraag maart 2005 Peter;
[email protected];goed;Testprijsvraag maart 2005 P. Sno;
[email protected];fout;Testprijsvraag maart 2005 dePVer;
[email protected];goed;Testprijsvraag maart 2005 Testdeelnemer;
[email protected];fout;Testprijsvraag maart 2005
11