Technische Universiteit Delft Faculteit EWI stageverslag BSc-project IN3405
LINKBUILDINGTOOL Auteurs: Lennaert van den Brink #1310429
Begeleidend docent: Peter van Nieuwenhuizen Co¨ ordinator: Bert van Heerde
Cees-Willem Hofstede #1272012
19 augustus 2010
BSc project LINKBUILDINGTOOL
Voorwoord Dit verslag is het resultaat van het BSc project van Lennaert van den Brink en Cees-Willem Hofstede. Het project, bestaande uit een bedrijfsstage, is volbracht bij webdesignbureau Insyde te Delft. Tussen 19 april en 8 juli 2010 is op het kantoor van Insyde gewerkt aan de linkbuildingtool. De insteek van de opdracht was het uitbreiden van deze tool met een betaalsysteem en extra features om zodoende de linkbuildingtool tot een extra inkomstenbron te maken. Hierbij is ons veel vrijheid geboden, zowel in implementatie keuzes als in werkwijze. Daarvan hebben wij dan ook dankbaar gebruik van gemaakt. Tijdens de stage werd besloten het linkbuildingproject binnen Insyde anders aan te pakken dan in eerste instantie gepland was. Ons eindproduct was niet meer een werkende website, die aan het eind van onze stage te vinden zou zijn op www.linkbuildingtool.nl, maar werd meer een showcase van mogelijke nieuwe functionaliteiten voor deze tool en andere projecten van Insyde. De reden hiervoor is dat men bij Insyde zo enthousiast was geworden van alle idee¨en die tijdens deze stage naar boven kwamen, dat er besloten is om na de stage een volwaardig ontwikkeltraject te starten binnen het bedrijf. We vinden het natuurlijk jammer dat onze features niet direct online zijn geplaatst, maar zijn wel erg enthousiast over de komende nieuwe versie en kijken dan ook halsreikend uit naar de release van de nieuwe linkbuildingtool. Naar aanleiding van de stage is ons beiden gevraagd om verder te werken aan de linkbuildingtool. Momenteel wordt er gekeken wat hiervoor de mogelijkheden zijn. Tot slot willen wij de medewerkers van Insyde en onze stagebegeleider bedanken voor het beschikbaar stellen van alle tijd en middelen die benodigd waren in deze stage. Ook willen wij Drs. Peter van Nieuwenhuizen bedanken voor het begeleiden van dit project vanuit de TU delft. Wij kijken terug op een interessante en gezellige stage waarin wij een hoop ervaring hebben opgedaan. Lennaert van den Brink & Cees-Willem Hofstede
i
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
Samenvatting Probleemstelling Dit verslag is onderdeel van de stageopdracht van webdesignbureau Insyde te Delft. De stageopdracht betreft het ontwerpen en implementeren van een betaalsysteem en een uitbreiding van features voor de linkbuildingtool. Linkbuildingtool, te vinden op linkbuildingtoo.nl, is een webtool waarmee het linkbuilding proces georganiseerd kan worden. Linkbuilding is het verwerven van links naar de eigen website, met als doel hoger te komen in de resultaten van zoekmachines voor relevante zoekwoorden. De linkbuildingtool is vooralsnog een gratis te gebruiken tool, maar het snel groeiende aantal accounts heeft Insyde doen besluiten hiervoor een betaalde variant te maken.
Beschrijving van de werkzaamheden Allereerst is binnen dit project ge¨ orienteerd op de wensen van de huidige gebruikers door middel van een gebruikersenquˆete en statistisch onderzoek. Ook is er gekeken naar concurrerende linkbuilding tools en opties voor betaalsystemen. Vervolgens is een lijst features en functionele eisen samengesteld. De features zijn verdeeld in prioriteitsklassen, daar het aantal te groot bleek voor volledige implementatie. Op basis van deze eisen is per feature met hoge prioriteit een ontwerp en implementatie gemaakt. Voor het betaalsysteem is gekozen om PayPal als betaalprovider te gebruiken vanwege de mogelijkheid om recurrente betalingen af te handelen en het feit dat Insyde reeds ervaring had met iDeal implementaties. Voor features is er gekozen om import en export functionaliteiten te implementeren omdat deze veel verzocht werd door invullers van de enquˆete. Daarnaast is op verzoek van de specialist bij Insyde een keywordfunctionaliteit ge¨ımplementeerd en is er een aanzet gemaakt voor het automatisch genereren van rapporten vanuit de tool. Bij het implementeren van dit project is gebruik gemaakt van de talen PHP, Javascript, AJAX en LaTeX.
Resultaten en conclusies Een aantal features zou ingrijpende veranderingen inhouden in de structuur van de linkbuildingtool. Deze voerden te ver om binnen de stage aan te brengen. Echter, Insyde heeft besloten deze features wel te willen implementeren en zal derhalve na de stage een nieuw project beginnen om de tool volledig te herzien en deze features daarin vanaf het begin mee te nemen. Dit houdt in dat het eindproduct van de opdracht niet de lancering van een nieuwe versie van linkbuildingtool is geworden, maar een showcase van een aantal features binnen de huidige tool. Deze features zijn niet openbaar gemaakt, maar worden wel door de specialist binnen Insyde gebruikt tijdens het linkbuilden. Daarnaast is voor het schrijven van commentaar bij de code een systeem opgezet waarmee de code geautomatiseerd kan worden uitgelezen en ge¨ıntegreerd in de ontwikkelomgeving. Dit proces is door Insyde overgenomen en wordt nu gebruikt door de programmeurs. Het betaalsysteem wordt op het moment van schrijven uitgebreid om te worden toegepast in een nieuw project van Insyde.
ii
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
Verklarende woordenlijst Hieronder volgt een overzicht van de in dit document gebruikte termen, afkortingen en hun verklaring.
account-dashboard Dit is een pagina van de linkbuildingtool waar ingelogde gebruikers de status van hun account kunnen bekijken en gegevens kunnen wijzigen. agile programmeermethode Ontwikkelingsmethode gebaseerd op het meerdere malen doorlopen van korte perioden. Deze perioden, iteraties genaamd, zijn in feite kleine projecten waarvan het eindresultaat een bruikbaar stuk code op te leveren. Na iedere iteratie wordt opnieuw afgewogen war de prioriteiten voor het gehele project zijn. De nadruk ligt op directe communicatie, wat tot gevolg heeft dat bij agile programmeermethoden doorgaans minder documentatie wordt gegenereerd. API Een verzameling definities op basis waarvan een computerprogramma kan communiceren met een ander programma of programma-onderdeel. De programmeur hoeft geen details van de functionaliteit of implementatie te kennen, maar weet dankzij de API wel hoe deze kan worden aangesproken. backlink Backlinks zijn inkomende links vanaf andere websites. CMS Content Management System. Wordt gebruikt om de inhoud van bijvoorbeeld een website te beheren. CSE Google Custom Search Engine, een persoonlijke zoekmachine die gebruik maakt van de zoektechnieken van google. De beheerder van een CSE kan aangeven waar de CSE wel en niet in zoekt. IDE Integrated Development Environment. Een ontwikkelomgeving waarin code kan worden geschreven, en direct kan worden gecompileerd en gedebuged. Bij Insyde wordt het IDE Eclipse gebruikt. Insyde Webdesignbureau te Delft. Tevens opdrachtgever. javascript Serverside scripttaal die het mogelijk maakt om samen te werken met de statische html en deze waar nodig aan te passen. jQuery Een javascript bibliotheek die veelgebruikte javascript functionaliteiten combineert en makkelijk beschikbaar maakt. keyword Een keyword staat in het SEO jargon voor een woord waarvan de beheerder van een website graag ziet dat als er op dit woord gezocht wordt, de website zo goed mogelijk gevonden wordt. linkbuilding Het verwerven van links naar een website. Onderdeel van SEO. linkpartner Een website die naar de te optimaliseren website linked. Als wederdienst wordt vaak naar deze website terug gelinked. iii
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL LMT Link Management Tool, het gedeelte van de LBT waarin de gebruiker links kan beheren. MoSCoW methode Methode om gewenste features te prioritiseren. De features worden, op volgorde van prioriteit, onderverdeeld in ”Must have”, ”Should have”, ”Could have”, ”Wont have”[?]. NVP Name Value Pair. Een paar bestaande uit de naam van een variabele en de bijbehorende waarde. PHP Hypertext Preprocessor, scripttaal origineel ontworpen voor het maken van dynamische websites. Tegenwoordig is PHP uitgegroeid tot een volwaardige programmeertaal die ook voor andere toepassingen (zoals het maken desktopapplicaties) gebruikt wordt. PSP Een Payment Service Provider, nodig om online betalingen te kunnen verwerken. SEO Search Engine Optimisation. Voor een website de kans zo groot mogelijk maken om gevonden te worden door bezoekers. shadowbox Wordt gebruikt om afbeeldingen, video’s of webpagina’s te laden in een frame dat bovenop de huidige pagina getoond wordt. Dit wordt veel gebruikt om vaak terugkerende taken makkelijk te tonen. SQL Structured Query Language, database taal om data te beheren in relationele databases. SVN SubVersioN versiebeheer. Wordt gebruikt voor versie beheer van code en verslagen. textarea HTML element, toont een vak waar tekst kan worden ingevoerd. token Een gecodeerde string die verzonden wordt naar een andere computer of server. Het bestaat binnen PayPal uit NVPs die doorgaans een methode en zijn argumenten coderen. tool Een stuk software (al dan niet online) waarmee een specefieke taak kan worden uitgevoerd. TOPDesk Service Management pakket. Wordt in dit project gebruikt bij de planning van activiteiten en taken. URL Uniform Resource Locator, het adres van een website. web-based Een applicatie is web-based wanneer hij niet gedownload hoeft te worden voor gebruik. Webmagi¨ er Het CMS van Insyde. XML Een standaard voor de syntaxis van formele markuptalen waarmee men gestructureerde gegevens kan weergeven in de vorm van platte tekst. Deze representatie is zowel machineleesbaar als leesbaar voor de mens en kan worden gebruikt voor de opslag van gegevens of het versturen hiervan over internet. iv
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL XP Staat voor eXtreme Programming. XP is een agile programmeermethode. Onderscheidende kenmerken zijn test-driven ontwikkeling en paarsgewijs programmeren. Ook zijn bij deze variant de iteraties doorgaans erg kort.
v
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
Inhoudsopgave Voorwoord
i
Samenvatting
ii
Verklarende woordernlijst
iii
I
1
Introductie
1 Linkbuildingtool.nl
1
2 De opdracht
1
3 Projectinrichting
1
4 In dit verslag
2
II
3
Ori¨ entatie
5 Gebruikersonderzoek
3
6 Concurrerende Linkbuilding Tools
5
7 Online Betaalsystemen
6
III
7
Plan van Aanpak
8 Kwaliteitsborging
7
9 Planning
9
IV
Design
11
10 Randvoorwaarden
11
11 Betaalsysteem
12
12 Overige functionaliteiten 12.1 Keywords . . . . . . . . 12.2 CSV import . . . . . . . 12.3 CSV export . . . . . . . 12.4 Rapportage module . . .
V
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
Implementatie
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
14 14 14 15 15
17
13 betaalsysteem
17
14 keywords tool
21
15 CSV import
23
16 CSV export
25 vi
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL 17 Rapportage module
27
18 Skinnable selectfield
29
VI
30
Na de Stage
19 Conclusies
30
20 Aanbevelingen
31
VII
32
VIII
Referenties Appendices
33
A Ori¨ entatieverslag
33
B Plan van Aanpak
57
C Design Document
67
vii
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
Deel I
Introductie 1
Linkbuildingtool.nl
Zoekmachines zijn voor veel mensen het startpunt van het internet. Na een zoekopdracht zal een gebruiker over het algemeen als eerste kijken naar het eerst gegeven resultaat. Mocht dit niet de pagina zijn die wordt gezocht, dan wordt het tweede resultaat bekeken, enzovoort. Website eigenaren hebben er dus baat bij dat hun website zo hoog mogelijk in de zoekresultaten eindigt bij de voor deze website relevante zoektermen (keywords). De kunst van het zo hoog mogelijk komen in de zoekresultaten wordt zoekmachineoptimalisatie genoemd (Engels: Search Engine Optimisation, afgekort met SEO). Een van de factoren die door zoekmachines gebruikt wordt om de volgorde te bepalen is het aantal relevante websites dat naar de gevonden website verwijst (zogeheten “backlinks”). Een van de meest tijdrovende activiteiten van een SEO-er is dan ook het zoeken van linkpartners en het aanmelden van hun site bij deze partners. Om dit proces makkelijker te maken heeft Insyde linkbuildingtool.nl ontwikkeld. Deze linkbuildingtool is een online applicatie en is ontwikkeld op een door Insyde gebouwde kernel. Deze kernel wordt door Insyde gebruikt bij het ontwikkelen van hun websites. Een belangrijk onderdeel van deze kernel is de Webmagi¨er, het Content Management Systeem (CMS) van Insyde.
2
De opdracht
De linkbuildingtool is vooralsnog gratis in het gebruik. Gebruikers moeten hiervoor wel een account aanmaken. Sinds de introductie van een aantal nieuwe features heeft een grote toename in het aantal accounts plaatsgevonden. Door deze toename heeft Insyde zich gerealiseerd dat er meer uit de tool te halen valt en wil graag een betaalde versie van de tool lanceren. Om dit te realiseren heeft Insyde dit stageproject opgezet. Het doel van de stage is het opzetten van een volledig functionerende structuur voor betaalde accounts. Daarnaast is het doel van de opdracht ook om voldoende functionaliteiten te leveren die het betalen voor een account aantrekkelijk maken. De linkbuiding tool is in eerste instantie ontworpen om de taken van de SEO specialist binnen Insyde te helpen bij het uitvoeren van zijn taken. Daarnaast wil Insyde met de tool meer naamsbekendheid verwerven en wil zij de tool gebruiken als extra bron van inkomsten. Vanuit dit doel is een opdracht geformuleerd. De uiteindelijke stageopdracht luidt als volgt: “De linkbuildingtool moet worden uitgebreid met een betaalsysteem waarmee betaalde accounts kunnen worden aangemaakt. Daarnaast moet een betaald account meerwaarde hebben voor de klant. Dit moet gebeuren door middel van functionaliteiten die exclusief zijn voor deze gebruikersgroep. Onderdeel van de opdracht is een onderzoek naar de wensen van de huidige gebruikers. De gekozen extra functionaliteiten moeten vervolgens worden ge¨ımplementeerd.”
3
Projectinrichting
De stagelopers (Cees-Willem Hofstede en Lennaert van den Brink) zijn beiden student aan de TU Delft. Zij doen deze opdracht als onderdeel van hun bachelor eindproject. Zij zijn verantwoordelijk voor de uitvoering van de opdracht. Hieronder vallen zowel het onderzoek naar features, als de implementatie hiervan en van de betaalstructuur. De stagebegeleider vanuit Insyde, Bert van Heerde, is verantwoordelijk voor de begeleiding van de studenten in hun activiteiten bij het bedrijf. Tevens is hij eindverantwoordelijke voor de gemaakte keuzes ten opzichte van de te implementeren oplossing. Daarnaast helpt hij mee in de uiteindelijke beoordeling van de stage. De begeleidend docent (Peter van Nieuwenhuizen) is verantwoordelijk voor het geven van richtlijnen ten
1
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL opzichte van de aanpak en uitvoering van de opdracht. Tevens is hij beoordelend docent. Rapportage zal geschieden door middel van een stageverslag aan het eind van de opdracht. Dit verslag zal tevens worden gepresenteerd aan de begeleiders. Daarnaast zullen tussendoor mondelinge afspraken gemaakt worden tussen de stagelopers en hun begeleiders.
4
In dit verslag
Dit verslag is een documentatie van het doorlopen proces tijdens de stage. Het eerste hoofdstuk biedt een introductie tot de opdracht en linkbuildingtool.nl. In het tweede deel wordt verslag gedaan van de ori¨entatie op de opdracht. Er wordt verslag gedaan van een gebruikersonderzoek, een onderzoek naar concurrerende tools en een ori¨entatie op de verschillende alternatieven voor een betaalsysteem. Het derde deel toont vervolgens een plan van aanpak. Hierin is onder andere een tijdsplanning te vinden. Ook wordt hier aangegeven welke vormen van kwalitietsborging zijn toegepast gedurende het project. Ook wordt in dit deel uitgebreid ingegaan op het ontwerp van het betaalsysteem en de gekozen functionaliteiten. Dit ontwerp wordt onder andere toegelicht met behulp van use-cases en objectmodellen. Deel 4 zal een toelichting geven op de ontwerpen achter de geproduceerde features en systemen. In deel vijf worden de implementaties van deze onderdelen verder toegelicht. Ook is hier onder andere een verantwoording te vinden voor het gekozen betaalsysteem, maar er wordt ook aandacht besteed aan het testen van de implementaties. Tot slot is in het zesde deel een aantal aanbevelingen en conclusies te vinden naar aanleiding van het eindproduct. Deze aanbevelingen richten zich vooral op het gebruiken van de eindproducten bij verdere ontwikkeling van de linkbuildingtool.
2
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
Deel II
Ori¨ entatie In dit hoofdstuk wordt verslag gedaan van de uitgevoerde ori¨entatie op het project. Opgenomen is het resultaat van een gebruikersonderzoek, een vergelijking van concurrerende tools en een ori¨entatie op bestaande online betaalmethoden. Dit hoofdstuk is een samenvatting van het ori¨entatieverslag, dat is opgenomen als appendix A.
5
Gebruikersonderzoek
De vragenlijst Om uit te vinden wat de gebruiker graag verbeterd ziet aan linkbuildingtool.nl is er een vragenlijst opgesteld. De bedoeling van deze lijst is uitvinden welke onderdelen van de tool het meest gebruikt worden, wat de voornaamste gebruikersgroep van linkbuildingtool.nl is en hoe de gebruiker denkt over een betaalde variant. Ook wordt de gebruiker gevraagd mee te denken over nieuwe functionaliteiten. De vragenlijst is met opzet beperkt tot 10 vragen, om de invuller tegemoet te komen. Een volledig overzicht van de gestelde vragen is te vinden in het ori¨entatie verslag. Hierin wordt ook het benaderen van gebruikers omschreven. Uiteindelijk zijn 12 vragenlijsten ingevuld. Dit is een tegenvallend resultaat, maar gelukkig leverden deze vragenlijsten wel relevante resultaten op. Opvallend was bijvoorbeeld dat alle ge-enquˆeteerden iDeal aangeven als de betaalmethode die hun voorkeur geniet. De helft van de geˆenqueteerden geeft aan te willen betalen voor een uitgebreidere versie. Ook werd duidelijk dat de import en export functionaliteit hoog op de prioriteitenlijst gezet kon worden. Deze werd niet alleen door meerdere mensen aangevinkt als onderdeel dat ze graag zouden zien in een nieuwe versie, maar werd zelfs door een aantal personen genoemd als antwoord op de vraag welke functionaliteiten gemist werden in de tool. Tot slot is opvallend dat onder de 12 invullers slechts 2 hobbyisten zitten. Van de overige 10 geven 3 mensen aan in de SEO dienstverlening te zitten en de rest ziet linkbuilding als noodzakelijk onderhoud aan hun website. Belangrijke opmerking bij deze resultaten is wel dat het aantal ingevulde lijsten erg laag is in verhouding met het aantal aangemaakte accounts op linkbuildingtool. Derhalve kunnen deze resultaten niet als feiten beschouwd worden. Ze zullen echter wel dienen als richtlijn.
Gebruikersstatistieken Om te kunnen bepalen hoe de abonnementsstructuur opgezet moet worden voor de betaalde versie is de database ook ondervraagd op het aantal websites dat elke gebruiker aan heeft gemaakt. In tabel 1 is per aantal aangemaakte websites te vinden hoeveel gebruikers een dergelijk aantal websites heeft aangemaakt in de linkbuildingtool. Zoals verwacht hebben de meeste gebruikers slechts 1 website aangemaakt. Echter, er zijn toch een goed aantal gebruikers met meerdere websites en zelfs een aantal gebruikers met meer dan 15 websites. Hieruit valt te concluderen dat de tool een goed aantal actieve gebruikers heeft. Daarnaast is het re¨eel om een beperking in aantal aan te maken websites te gebruiken als onderscheid tussen verschillende abonnementen. Tot slot blijkt ook hieruit dat de tool geschikt is voor SEO dienstverleners, omdat er overduidelijk al een aantal actief zijn op linkbuildingtool.
3
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL Aantal websites 1 2 3 4 5 6-15 16+
Aantal gebruikers 529 71 12 9 10 11 4
Tabel 1: aantal websites per gebruiker
4
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
6
Concurrerende Linkbuilding Tools
Linkbuildingtool is niet de enige in zijn soort. Op het internet zijn vele vergelijkbare tools te vinden, al dan niet commercieel. Om een beeld te krijgen van de linkbuildingmarkt is er onderzoek gedaan naar deze tools. In dit onderzoek is onder andere gekeken naar de kosten van de tools, de gebruiksvriendelijkheid, uitstraling en onderscheidende features. Gekeken is vooral naar de betaalde varianten van de concurrentie, maar ook een aantal gratis tools is meegenomen. In Appendix A, hoofdstuk 2 wordt dit onderzoek uitgebreid omschreven. Hier is ook een overzicht te vinden van de onderzochte tools.
abonnementsstructuur Bij de betaalde tools zijn er twee gangbare abonnementsstructuren te onderscheiden. Enerzijds zijn er tools die een eenmalig bedrag in rekening brengen voor gebruik. Deze variant komt vooral veel voor bij tools met een client die gedownload moet worden en vervolgens vanaf de harde schijf wordt gedraaid. Anderzijds zijn er tools die werken met terugkerende kosten. Vaak maakt een tool onderscheid in verschillende abonnementen per gebruikersgroep. Grofweg wordt de gebruikersgroep onderverdeeld in kleine SEO bedrijven en particuliere webmasters aan de ene kant en grote SEO bedrijven met een groot aantal klanten aan de andere kant. Verschillen in kosten komen voornamelijk tot uiting in aantal gebruikersprofielen, projecten en hoeveelheid links die kan worden opgeslagen. De bedragen voor de eerste klasse liggen doorgaans tussen de $ 10 en $ 30 per maand. Voor de tweede klasse ligt dit tussen de $ 200 en $ 250 per maand.
functionaliteiten Wat betreft functionaliteit wordt het verschil tussen betaalde tools en gratis tools vooral gemaakt op het gebied van beheerfuncties als import en export functionaliteit en geautomatiseerd controleren van backlinks. Interessante features die bij de duurdere varianten naar voren komen zijn vooral op het gebied van rapportage en emailsjablonen. Opmerkelijk is dat een browser plug-in door geen enkele tool echt goed ge¨ıntegreerd is, terwijl deze feature een hoop gebruikersgemak belooft. Als een gebruiker de toolbar van een tool installeert heeft hij altijd de mogelijkheid snel naar de tool te gaan om daar bijvoorbeeld een website aan te melden waar hij bij toeval op terecht kwam. Daarnaast geeft het de gebruiker meer vrijheid in zijn manier van werken, gezien hij niet telkens de website van de tool open hoeft te hebben. De tool van Raven SEO stel wel een toolbar beschikbaar voor haar klanten, maar deze toolbar weigert regelmatig dienst, waardoor het gebruikersgemak verandert in ongemak. Ook in onze enquˆete kwam naar voren dat een aantal gebruikers een dergelijke toolbar op prijs zouden stellen.
uitstraling Vooral bij de uitgebreidere betaalde tools valt op dat de gebruiker in het begin te maken krijgt met een onoverzichtelijke interface met een hoop knoppen direct in beeld. De tools die dit niet hebben voelen gelijk professioneler aan. Het belang van een schone interface voor web apps wordt door Fred Wilson in zijn presentatie “10 golden principles of succesfull web apps”[?] duidelijk gemaakt en is ook zeker van toepassing op de linkbuildingtool. De gemiddelde gebruiker van linkbuildingtool zal zeker meer weten van de wereld van web apps gezien de aard van linkbuilding, maar ook deze gebruiker heeft de keuze uit een hoop alternatieven. Een overzichtelijk uiterlijk kan ervoor zorgen dat een ori¨enterende gebruiker eerder door zal klikken en dus de tool sterker zal overwegen. In hetzelfde kader is de snelheid van de applicatie een belangrijke factor. Opvallend bij enkele grotere pakketten is dat deze een dusdanig zwaar zijn voor de computer, dat de gebruiker niks anders meer kan doen tijdens het wachten op resultaten. Het zou in dat geval een afweging kunnen zijn om een dergelijke zoekactie iets langer te laten duren om de computer te ontzien.
5
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
7
Online Betaalsystemen
Vanuit Insyde zijn een aantal eisen gesteld waaraan een betaalsysteem moet voldoen. De gestelde eisen:
Het systeem moet in staat zijn betalingen automatisch te controleren. Betalingen moeten direct kunnen worden uitgevoerd. Het systeem moeten voldoende veilig zijn. Er moet zowel van binnen als buiten Nederland makkelijk kunnen worden betaald. Het systeem moet integreerbaar zijn in de Insyde kernel.
Op basis van deze eisen is een aantal bestaande systemen voor online betalingen onderzocht. Aangezien het systeem moet worden ge¨ıntegreerd is alleen gekeken naar losstaande systemen en zijn de betaalpakketten achterwege gelaten. De systemen zijn getoetst op kosten, snelheid en gebruikseisen. Na onderzoek zijn een aantal systemen verworpen omdat zij niet voldoen aan de eisen die Insyde gesteld heeft. De Wallie-card, acceptgiro en cash brengen ongewenste kosten met zich mee en vereisen extra administratie. Creditcard, iDeal en PayPal zijn allen wel geschikt bevonden voor implementatie. Zowel iDeal als PayPal bieden een API die het mogelijk maakt een standaard te cre¨eren die gebruikt kan worden in de kernel van Insyde. Een belangrijk nadeel van iDeal is dat dit systeem geen recurrente betalingen ondersteund. Dit botst met het verlangen van Insyde om een betaalsysteem te maken dat zowel directe als recurrente betaalmogelijkheden kent. Daarnaast bestond er binnen Insyde al ervaring op het gebied van iDeal integratie. Daarom is besloten om te gaan voor een betaalsysteem met PayPal.
6
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
Deel III
Plan van Aanpak In dit hoofdstuk wordt aangegeven welke stappen er zijn ondernomen om de kwaliteit van de code te waarborgen. Er wordt uitgelegd voor welke ontwikkelmethode is gekozen en waarom. Vervolgens wordt ingegaan op de gebruikte manier van documenteren en vervolgens zijn enkele ondersteunende maatregelen behandeld. Tot slot wordt ingegaan op de planning die tijdens het project is gehanteerd. In het volledige plan van aanpak in appendix B is extra documentatie te vinden over dit onderwerp.
8
Kwaliteitsborging
Ontwikkelmethode Voor deze stage is gekozen om gebruik te maken van agile ontwikkelmethodes. Kenmerkend voor agile programming methoden is dat het ontwerpproces bestaat uit herhaalde ontwikkelingscycli. Dit feit sluit goed aan op het deel van de opdracht waarin gevraagd wordt meerdere features te ontwikkelen. Door voor elke feature de hele ontwikkelingscyclus opnieuw te doorlopen wordt slechts voor die features ontworpen en ontwikkeld, waardoor voorkomen wordt dat er tijd wordt gestoken in features die uiteindelijk niet afgemaakt kunnen worden. Dat niet alle features die bedacht werden uiteindelijk geprogrammeerd zouden worden was niet ondenkbaar, in verband met de beperkte tijd voor de stage. Een andere reden om agile programming te gebruiken is het feit dat de stage volbracht wordt door 2 personen en de communicatie daartussen vrijwel constant is. Hierdoor vermindert de noodzaak tot documentatie van alle gemaakte keuzes. Voor enkele grotere en belangrijke features is gekozen om eXtreme Programming (XP), een variant van agile programming, te gebruiken. Kenmerkend van XP is het paarsgewijs programmeren. Doordat er constant wordt meegekeken met de programmeur worden fouten eerder opgemerkt. Voordeel hiervan is dat het corrigeren van fouten in een zo vroeg mogelijk stadium een stuk goedkoper is, in termen van tijd, dan wanneer achteraf een fout ontdekt wordt [?]. Daarnaast is specifiek het betaalsysteem een risicovolle feature en is het noodzaak deze met zo min mogelijk fouten te implementeren.
PHPdoc Aan het begin van de stage bestonden er bij Insyde nog geen regels voor documentatie. Dit viel op door het gebrek aan documentatie in de kernel. Hierdoor is het erg lastig voor nieuwe werknemers om te leren werken met de kernel. Ook gaat er relatief veel tijd verloren omdat een werknemer de tijd moet nemen te achterhalen of en hoe een bepaalde functie ge¨ımplementeerd is. Om hier verandering in aan te brengen is besloten gebruik te maken van PHPdoc. PHPdoc is een manier van commentaar schrijven die uitgelezen en geparsed kan worden. Door middel van @ tags kan de gebruiker functies en variabelen defini¨eren, kenbaar maken welke eisen er gesteld worden aan invoervariabelen en concreet maken wat de functie terug geeft. Het grote voordeel van PHPdoc is dat deze stijl van documenteren ge¨ıntegreerd kan worden met Eclipse, het IDE waarmee binnen Insyde wordt gewerkt. Hierdoor ziet een programmeur bij het aanroepen van een functie direct het commentaar wat hierbij is geschreven. Tot slot is een pakket ge¨ınstalleerd dat het commentaar kan uitlezen en met deze informatie een digitale API genereert. Tijdens de stage is deze manier van commentaar bij de code opnemen zo goed bevallen dat ook na de stage dit systeem van kracht zal blijven. Insyde verlangt nu van haar programmeurs dat zij bij hun code dergelijke commentaren schrijven en is ook langzaam maar zeker bezig met het op deze manier documenteren van de bestaande kernel.
Overige hulpmiddelen Binnen Insyde wordt gebruik gemaakt van TOPdesk voor het beheren van de planning. Een gebruiker kan binnen TOPdesk activiteiten aanmaken en aan iemand toewijzen. Zodra aan een activiteit gewerkt is, kan een opmerking worden opgeslagen bij de activiteit. Daarnaast kan worden aangegeven hoe lang 7
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL er aan de desbetreffende activiteit gewerkt is. Binnen de stage is gebruik gemaakt van dit systeem om de verschillende fasen van het project bij te houden. Tevens is het systeem gebruikt om te bepalen welke taken nog open stonden. Daarnaast wordt er gebruik gemaakt van SVN als versiebeheerprogramma. SVN houdt bij door wie en wanneer wijzigingen zijn aangebracht in de code en waarschuwt wanneer twee personen aan de zelfde code hebben gewerkt. Het nadeel van TOPdesk is dat het systeem niet beschikt over een met SVN ge¨ıntegreerde vorm van bugtracking. Hiervoor is geprobeerd een oplossing te zoeken in de vorm van het bugtrackingprogramma Trac. Echter, de aanwezige operatingsystem installatie op de server van Insyde maakte het lastig om aan alle afhankelijkheden van dit programma te voldoen. Daarnaast werd door Insyde aangegeven dat het wenselijk was zo min mogelijk te installeren op deze server. Daarom is ervoor gekozen om toch handmatig bugs bij te houden.
8
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
9
Planning
Tijdens dit project is de planning een aantal keer drastisch veranderd. Oorspronkelijk was de planning als in tabel 2. In deze planning wordt de agile programmeerstijl benadrukt door de herhaalde ontwerp cycli. Daarnaast is te zien dat gedurende het project doorlopend is gerapporteerd, wat geresulteerd heeft in de verschillende tussentijdse documenten. In de eerste, langere, ontwerpfase zou het betaalsysteem worden ontworpen. De volgende ontwerpvakken waren bedoeld voor de verschillende features. fase \week Ori¨entatie Analyse Ontwerp Implementatie Testen Rapportage lage intensiteit
16
17
18
19
gemiddelde intensiteit
20
21
22
23
24
25
26
27
28
29
30
31
32
33
hoge intensiteit
Tabel 2: Oorspronkelijke planning Naarmate de ontwikkeling van het betaalsysteem verder vorderde was er ook meer duidelijkheid omtrent de verschillende features die ge¨ımplementeerd zouden gaan worden. Om de ontwikkeling van deze features in goede banen te leiden is vervolgens een planning gemaakt voor de implementatie hiervan. In overleg met de opdrachtgever is een prioritisering gemaakt van de verschillende features. Deze prioritisering, gebaseerd op de MoSCoW methode (zie verklarende woordenlijst) gaf aan of een functie hoge, gemiddelde of lage prioriteit had. Functies met hoge prioriteit moesten ge¨ımplementeerd worden voor het succesvol afronden van de stage. Functionaliteiten met gemiddelde prioriteit waren interessante features die Insyde graag terug zag in de linkbuildingtool, maar waarvan een deel waarschijnlijk niet ge¨ımplementeerd kon worden in verband met tijdsgebrek. Features met lage prioriteit waren enerzijds idee¨en voor features die nog niet volledig uitgewerkt waren en anderzijds idee¨en die beschouwd werden als niet essentieel voor de linkbuildingactiviteiten. Deze features zouden slechts ontworpen worden op het moment dat alle andere features ge¨ımplementeerd en ge¨ıntegreerd waren. In tabel 3 is de planning terug te vinden. Het idee was dat elke feature gezamenlijk ontworpen zou worden, waarna elk aan een eigen feature zou werken. Dit zou vervolgens door de ander getest worden. Het idee hiervan was zo veel mogelijk features te implementeren, zodat bij het online gaan van de nieuwe versie klanten een goede reden zouden hebben om te kiezen voor de betaalde variant. ma/di week 22 Keywords Log in Varianten Importeren / Exporteren Meerdere link beschrijvingen Email template Zoekfunctie LMT Betalingen Abonnement structuur / privileges Legenda Ontwerp Implementatie Deadline Testen
3
do/vr 4 juni
ma/di week 23
do/vr 11 juni
ma/di week 24
3
2
2
2
3 3
1
1
1
do/vr 18 juni 3 3 1
1
ma/di week 25 2 1
do/vr 25 juni 2 1
ma/di week 26 2 1
do/vr 2 juli 1 2
ma/di week 27
do/vr 9 juli
3 3
3 2 1
1 2 1
1 2 1
2
1 = Cees-Willem 2 = Lennaert 3 = Beiden
Tabel 3: Planning voor de verschillende features (31 mei-9 juli) Tijdens de stage is echter binnen Insyde besloten dat het toch beter is om de linkbuildingtool volledig te herzien. Vooral de implementatie van een client-administrator systeem bleek enorm lastig binnen de huidige database opzet. Hierdoor verschoof de stageopdracht enigszins. In plaats van het uiteindelijk lanceren van een betaalde variant van linkbuildingtool was nu de opdracht om prototypes van features te maken voor in de versie die na de stage ontwikkeld zou worden. Naar aanleiding hiervan is ook besloten om het aantal features waaraan wij zouden werken te verminderen. Hierdoor kon meer aandacht besteed worden aan enkele grote features en kon de tijd worden genomen deze zo goed 9
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL mogelijk te ontwerpen en te implementeren. Daarnaast is besloten om alle features op de XP manier te ontwikkelen en werd er dus volledig paarsgewijs geprogrammeerd. De resulterende planning is terug te vinden in tabel 3 Import Betaalsysteem PDF CSS online zetten
Maandag 21-Jun impl
Dinsdag 22-Jun impl
Woensdag 23-Jun test
Donderdag 24-Jun x
Vrijdag 25-Jun x
Maandag 28-Jun test
Dinsdag 29-Jun deadline
Woensdag 30-Jun
Donderdag 1-Jul
Vrijdag 2-Jul
Maandag 5-Jul
Dinsdag 6-Jul
Woensdag 7-Jul
Donderdag 8-Jul
impl
impl
test
deadline impl
impl
test
deadline
CSS (online)
Legenda Implementatie Deadline Testen Bijzondere activiteit
Tabel 4: Uiteindelijke planning (21 jun-9 juli)
10
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
Deel IV
Design Dit hoofdstuk is een samenvatting van het Design document dat is opgenomen in appendix . Allereerst zal worden ingegaan op alle randvoorwaarden als psuedo requirements en niet-functionele eisen aan het project. Vervolgens zal het ontwerp van het betaalsysteem worden toegelicht. Hierbij komen onder andere de functionele eisen aan bod en zal worden geschetst hoe de klassen met elkaar samenwerken. Tot slot zal voor het viertal grote features het ontwerp worden toegelicht.
10
Randvoorwaarden
Het systeem is gebouwd met de kernel van Insyde als basis. Deze kernel is zo gebouwd dat zowel PHP4 als PHP5 (tot PHP5.3) ondersteund zijn. Dit betekent dat als er iets aan de kernel wordt toegevoegd of gewijzigd, deze compatibiliteit gewaarborgd moet blijven. De tool zelf draait op een PHP5 server. Dit betekent dat code die in het project zelf staat PHP5 moet ondersteunen, maar compatibiliteit met PHP4 is hier niet vereist. Daarnaast wordt gebruik gemaakt van MySQL 4. Dit betekent onder meer dat in SQL-queries geen gebruik gemaakt kan worden van views. Daarnaast moeten alle pagina’s van de tool binnen enkele seconden geladen kunnen worden. Hierbij mogen de snelheid van de internetverbinding en de capaciteit van server buiten beschouwing gelaten worden. De tool dient te werken in alle veelgebruikte browsers en moet bruikbaar zijn als de gebruiker javascript uit heeft staan of als hij gebruik van cookies heeft uitgeschakeld. De gegenereerde HTML code moet valideren volgens de w3c richtlijnen en waar mogelijk aan de Nederlandse webrichtlijnen . Tot slot moeten de gemaakte functies in logische modules worden geplaatst. Het doel is dat de functionaliteiten, met name het betaalsysteem, herbruikbaar zijn en gemakkelijk ge¨ıntegreerd kunnen worden in andere prjecten van Insyde. De functionaliteiten moeten goed te onderhouden zijn en er moet worden geanticipeerd op latere toevoegingen of wijzigingen.
11
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
11
Betaalsysteem
Een van de belangrijkste onderdelen van de stage is het betaalsysteem. Naast standaard beveiligingseisen die gepaard gaan met iets gevoeligs als een betaalsysteem werden er door Insyde nog een aantal andere eisen gesteld aan het betaalsysteem. Het systeem moet zowel directe als recurrente betalingen af kunnen handelen. Het systeem moet kunnen controleren of de betaling succesvol is afgerond en moet deze kunnen factureren. Daarnaast moet voor recurrente betalingen kunnen worden gecontroleerd wanneer de laatste betaling heeft plaatsgevonden en wanneer de volgende betaling plaatsvindt. Als payment provider is gekozen voor PayPal. Om hiermee het betaalsysteem te kunnen opzetten is het van belang hoe de communicatie met PayPal in zijn werk gaat. PayPal stelt twee verschillende API’s beschikbaar aan zijn gebruiker, een zogeheten SOAP API en een NVP API. SOAP staat voor Simple Object Acces Protocol en is een protocol waarmee door middel van XML berichten worden uitgewisseld tussen client en server. NVP staat voor Name-Value Pair en houdt in dat de communicatie verloopt via tokens met daarin per variabele zijn naam en de waarde die de variabele aanneemt. Door de variabele METHOD in te vullen weet de server welke methode hij moet aanroepen. Wij hebben gekozen om gebrruik te maken van de NVP API omdat de code hierdoor leesbaarder is en omdat hiervoor betere documentatie beschikbaar was. Om een recurrente betaling te initi¨eren moeten de volgende stappen doorlopen worden (zie figuur 1). Allereerst moet met de methode SetExpressCheckout (1) de PayPal server op de hoogte gesteld worden van de inkomende betaling. PayPal reageert hierop met een token (2). Dit token wordt gebruikt om de betaling verder mee te identificeren. Vervolgens wordt de gebruiker met dit token verwezen naar de PayPal site (3), waar hij zijn akkoord geeft voor de betaling. Als dit is gebeurt stuurt PayPal de gebruiker weer terug naar de website (4). Door middel van het token kan met de GetExpressCheckoutDetails (5) de gegevens van de betaling opgevraagd worden. Tot slot wordt met DoExpressCheckoutPayment (6) de directe betaling doorgezet en met CreateRecurringPaymentsProfile wordt uiteindelijk de recurrente betaling ge¨ınitieerd. De directe betaling is nodig omdat deze direct geverifieerd wordt, waar een recurrente betaling 24 uur kan duren om actief te worden. Omdat we gelijk de gebruiker toegang willen kunnen geven is ervoor gekozen om de eerste termijn met een directe betaling af te rekenen. Figuur 1: PayPals’ “Recurring Payment flow”
Omdat wij een betaalsysteem willen opzetten waar in de toekomst de gebruiker de keuze krijgt tussen verschillende betaalsystemen moet hiervoor een framework gebouwd worden. In figuur 2 is te zien hoe dit framework in elkaar steekt. De communicatie met de PayPal server zoals die hierboven wordt weergegeven wordt door een klasse genaamd de PayPalService afgehandeld. Het af te rekenen product wordt vertegenwoordigd door een webProductmoduleItem. In dit item staan alle details van een product, waaronder bijvoorbeeld de privileges die de gebruiker krijgt na aanschaffen, maar ook de kosten ervan. Vanuit dit product wordt een zogeheten DefaultPaymentModuleItem gecre¨eerd. De DefaultPaymentModule kan vervolgens aan dit item alle details opvragen die nodig zijn voor de betaling. Ook wordt uit dit item gehaald welke provider de klant heeft gekozen. De module roept vervolgens de juiste methoden aan van de service, die vervolgens alles met de provider afhandelt. Tot slot vertelt de module na afloop aan het account of de betaling geslaagd is, waardoor deze toegang kan krijgen tot de betaalde features.
12
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL WebProductmoduleItem
createPayment
DefaultPaymentModuleItem
DefaultPaymentModule
Account
PaypalService Figuur 2: Het betaalsysteem
13
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
12
Overige functionaliteiten
12.1
Keywords
voordat een gebruiker aan de slag gaat met linkbuildingtool doet hij doorgaans eerst onderzoek naar keywords die mogelijk geassocieerd worden met zijn website. Het resultaat hiervan wordt vervolgens gebruikt in combinatie met de CSE’s van de linkbuildingtool. Het probleem was dat er voor de gebruiker geen manier was om zijn lijst aan keywords in ´e´en keer in te voeren in de linkbuildingtool. Hier is de keyword tool voor bedoeld. Een gebruiker moet in de keyword tool een lijstje kunnen uploaden of copy / pasten. Dit lijstje bestaat uit een aantal regels met op elke regel 1 keyword. Dit lijstje moet kunnen worden gewijzigd of gesorteerd. De keywords uit dit lijstje worden naast het zoekveld van de linkbuildingtool getoond. Door op een woord uit het lijstje te klikken wordt direct op dat woord gezocht, zonder dat eerst nog op enter gedrukt hoeft te worden. Met behulp van vorige en volgende knoppen kan een gebruiker stap voor stap door de keywords heenlopen. Tot slot moet de gebruiker de mogelijkheid krijgen de keywordtool te verbergen en weer te tonen. Deze keuze moet per account onthouden worden. De keywords worden per account opgeslagen. Omdat het hier in feite slechts een lijste met woorden betreft met elk keyword op een nieuwe regel. Het toevoegen van een tekstveld aan het account was voldoende om alle informatie in op te kunnen slaan. Deze lijst kan worden aangepast vanaf het account-dashboard, of direct vanuit het zoekformulier. Om dit te faciliteren is er een vaste pagina aangemaakt waarop de functionaliteit wordt getoond. Deze pagina wordt geladen in een shadowbox. Op deze manier is deze pagina later eventueel ook zeer gemakkelijk te tonen vanaf andere onderdelen van linkbuildingtool. Deze lijst van keywords moet kunnen worden gesorteers. Dit wordt gedaan met javascript. De sorteerknop (die alleen wordt getoond als javascript beschikbaar is) heeft via jQuery een click-event die een sorteeralgoritme uitvoert op de text in het textvak en vervolgens de tekst in het tekstvak overschrijft met het resultaat. Het algoritme dat wordt gebruikt, en hoe dit wordt gekoppeld aan de knop is te zien in codefragment 1 1 2
$ ( '#s o r t k e y w o r d s ' ) . c l i c k ( f u n c t i o n ( ) { v a r k e y w o r d s = $ ( '#k e y w o r d l i s t ' ) . v a l ( ) ;
3 4 5 6 7 8 9 10
}) ;
var keywordLines = keywords . s p l i t (/\ n /) . s o r t ( ) ; var newKeywords = ' ' ; f o r ( v a r i =0; i
' '
;
Codefragment 1: code om met jQuery een sortering uit te voeren op de lijst van keywords
12.2
CSV import
Een van de meest aangevraagde functionaliteiten van de linkbuildingtool was de import en export functionaliteit. Gezien CSV de standaard voor importeren en exporteren van grote databestanden blijkt is gekozen om hiervoor een import functie te maken. Oorspronkelijk moest de gebruiker de mogelijkheid krijgen om een upload bestand van de linkbuildingtool te downloaden, zodat hij in een programma als bijvoorbeeld Microsoft Excel zijn links hierin kon plakken om vervolgens weer te uploaden naar de linkbuildingtool. Omdat echter tijdens de stage besloten werd de focus te verleggen naar een kleiner aantal functionaliteiten is besloten om een import editor te maken, waarin de gebruiker op de website van linkbuildingtool zelf zijn CSV bestand in orde kan maken en dus niet tussendoor naar een ander programma hoeft over te schakelen. Hierdoor wordt de drempel om een dergelijk bestand gereed te maken voor uploaden aanzienlijk verlaagd.
14
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL De import editor wordt getekend door een enkele klasse. De editor bestaat uit een aantal controle elementen bovenaan de pagina en uit een vlak van dynamische grote, bestaande uit tekst-invoer velden. De grootte is afhankelijk van het aantal verplichte velden (er moet ten minste 1 kolom zijn voor elk verplicht veld) en van de data in de door de gebruiker geuploade CSV. Om de verplichte velden te kunnen herkennen worden deze opgevraagd aan de webRegistratieModule. Hierdoor kan de import editor makkelijker in andere websites gehangen worden, omdat slechts deze module hoeft worden aangepast aan de juiste variant. Een belangrijk vraagstuk bij deze editor is de vraag hoe de gebruiker weet wanneer zijn CSV voldoet aan de eisen om ge¨ımporteerd te kunnen worden. Om dit op te lossen is besloten om realtime de gegevens die de gebruiker invoert te controleren door middel van AJAX. Zo zijn er email velden, datum velden en velden die slechts beperkte waarden kunnen aannemen. Deze velden kunnen niet gecontroleerd worden met behulp van lokale functionaliteiten omdat daar geen functie voor beschikbaar is binnen de beschikbare modules. Daarom wordt gebruik gemaakt van AJAX calls. In plaats van aan een lokale module in te schakelen wordt de server gevraagd een specifieke functie toe te passen op de inhoud van een cel en het antwoord terug te sturen. Hierdoor wordt voorkomen dat loze functies worden opgenomen in een module waar ze eigenlijk niet thuis horen. Belangrijk is op te merken dat deze controles geen garantie geven dat de ingevoerde data ook daadwerkelijk klopt op het moment dat de gebruiker kiest om de gegevens op te slaan. Immers, zodra de gebruiker javascript uit heeft staan in zijn browser of er om een of andere reden een fout optreed binnen javascript krijgt hij geen feedback meer over de correctheid van zijn invoer en wordt hij ook niet weerhouden van het indienen ervan. Daarom wordt na het bevestigen van de invoer door de gebruiker het hele bestand nog een keer aan de server kant gecontroleerd. Dit wordt zo lang mogelijk uitgesteld omdat deze bewerking een hoop tijd kan kosten, afhankelijk van de grootte van het bestand. Echter, de snelheid is van minder belang op dit punt, omdat de gebruiker in de tussentijd geen bewerkingen meer kan uitvoeren.
12.3
CSV export
Zodra er gesproken wordt over een import functie is de stap naar een export functie snel gemaakt. Doel van de export functie is dat het voor de gebruiker makkelijk wordt gemaakt om z´ıjn informatie uit de tool te halen. Dit is niet alleen handig als de gebruiker deze informatie wil verwerken buiten de linkbuildingtool, maar helpt ook vertrouwen te kweken bij potenti¨ele gebruikers. Immers, wanneer zij gemakkelijk hun gegevens uit het systeem kunnen halen mochten zij beslissen de linkbuildingtool niet verder te willen gebruiken kunnen zij zonder gevaar beginnen met gegevens invoeren in de tool . Belangrijk is dat de gebruiker kan kiezen om niet alleen het hele project te exporteren, maar ook om slechts een export te maken voor een bepaalde site of van een specifieke categorie. Dit om de gebruiker te faciliteren in het rapporteren naar zijn klanten en het gebruik van externe hulpprogramma’s.
12.4
Rapportage module
Een belangrijk onderdeel van de meeste (duurdere) betaalde linkbuilding tools is een rapportage functionaliteit. Omdat Insyde ook interesse toonde in een goede manier om PDF documenten te genereren vanaf een website werd besloten de rapportage module een hogere prioriteit te geven. Desalniettemin is deze functionaliteit van minder groot belang dan de overige onderdelen met een hoge prioriteit. Een gebruiker moet zelf plaatjes kunnen uploaden voor de header en de footer van het document. Daarnaast moet de gebruiker de mogelijkheid hebben om aan te geven welke categori¨en hij in het rapport wil opnemen en moet hij de mogelijkheid hebben per categorie een begeleidende tekst op te nemen. Tot slot is de bedoeling dat een gebruiker rapporten automatisch op door hem gekozen tijdstippen kan laten genereren en opsturen naar een email adres. Aan het eind van de stage bleken er niet voldoende tij om alle functionaliteit in een werken prototype te verwerken. Het aanmaken van een rapport met logo’s werkt, maar dit automatisch laten doen nog niet. Deze functionaliteit is dan ook nog niet direct toepasbaar in andere projecten zoals de andere
15
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL onderdelen, maar echt een ’proof of concept’. Voor het maken van de pdf wordt gebruik gemaakt van latex. Eerst is onderzocht wat de huidige mogelijkheden waren binnen de kernel van Insyde. Deze bleken helaas niet toereikend om aan alle wensen te kunnen voldoen. Derhalve is besloten uit te zoeken of het mogelijk is om latex te gebruiken. Omdat Insyde de servers waar hun projecten op draaien zelf kunnen beheren stond de mogelijkheid voor latex open, omdat dit moet worden ge¨ınstalleerd op de server. Voor de rapportage is een PDFLatex class gemaakt. Deze class extend de Configureable class uit de kernel van Insyde, zodat het makklijk is om instellingen per site te bepalen en in een loas bestand op te slaan. De class biedt methoden om gegeven een bepaalde text en een latextemplate hier een pdf van te maken. Deze pdf kan worden opgeslagen op de server of direct worden gedownload. In beide gevallen wordt eerst een tijdelijk bestand aangemaakt. Een classdiagram is gegeven in figuur 3. Configureable settings:string[] initSettings():void getIniFilePath():void doLog(messageType:string, message:string):void getIniFilePath():void readIniFile():void set(settingName:string, setting:*string):void initDefaultSettings():void initSettings():void hasSetting(settingName:string):boolean getSetting(settingName:string, giveWarning:boolean, defaultValue:string):string get(settingName:string):string getSettings():string[] setSettings(settings:string[]) PDFLatex pathToPDFLatex:string PDFLatexTempDir:string tmpDir:string createTMPPDF(content:string, debugMode:boolean):string createPDF(sourceDir:string, fileName:string, content:string, debugMode:boolean):string downloadAsPDF(content:string, fileName:string, debugMode:boolean) Figuur 3: de PFLatex class
16
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
Deel V
Implementatie 13
betaalsysteem
Voordat een klant een abonnement kan kopen moet dit abonnement eerst door de beheerder van de website worden aangemaakt. Door de opzet van het systeem met productmoduleItems kan de beheerder via het CMS een abonnement aanmaken (zie figuur 4). Om het abonnement aan te maken moet deze een naam en omschrijving krijgen. Daarnaast moet worden aangegeven wat het abonnement kost en of hij af te rekenen is. Dit laatste is omdat Insyde de mogelijkheid wil hebben delen van de linkbuildingtool gratis beschikbaar te stellen aan recensenten en andere samenwerkende partijen. Door middel van aanvinken kan de beheerder bepalen welke rechten het specifieke abonnement verleent. Als het abonnement is aangemaakt is deze terug te vinden in het abonnementen overzicht (figuur 5).
Figuur 4: Aanmaken van een abonnement
17
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
Figuur 5: Overzicht van aangemaakte abonnementen Om een abonnement aan te schaffen moet de ingelogde klant naar zijn account-dashboard. Hier kan hij vervolgens kiezen welk abonnement hij wil aanschaffen. Omdat in ons systeem nog geen keuze bestaat voor een payment provider wordt de klant standaard doorverwezen naar PayPal (figuur 6).
Figuur 6: PayPals’ log in scherm Nadat de klant hier inlogt met zijn gegevens krijgt hij op het scherm de gegevens van de betaling gepresenteerd door PayPal. Deze gegevens zijn dezelfde als die zijn ingevoerd bij het aanmaken van een abonnement (figuur 7).
18
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
Figuur 7: De gegevens uit het abonnement item gepresenteerd door PayPal Nadat de klant zijn gegevens bij PayPal bevestigt wordt hij weer terug verwezen naar de linkbuildingtool website. Hier krijgt de klant nog een maal een overzicht van de betaling die hij gaat doen en kan hij controleren of alles klopt (figuur 8).
Figuur 8: De laatste controle van de betaling. Als de gebruiker de betaling bevestigt zal deze worden doorgezet bij PayPal en wordt definitief de eerste termijn afgeschreven. Als dit allemaal lukt krijgt de gebruiker direct toegang tot het betaalde deel van de website. Op zijn account-dashboard kan hij zien welk abonnement hij heeft. Daarnaast is hier terug te vinden wanneer de eerste en de laatste betalingen waren en kan hij zien wanneer de volgende termijn wordt afgeschreven. Tot slot kan de gebruiker hier aangeven zijn abonnement stop te willen zetten (figuur 9).
Figuur 9: Overzicht op het account-dashboard.
19
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
Testen Gezien de aard van het betalingssysteem is de feature lastig te testen. Immers, het is niet wenselijk om met echte bedragen transacties uit te voeren om te kijken of deze doorkomen. Gelukkig heeft PayPal hierover nagedacht en heeft zij een zogeheten sandbox omgeving opgezet. In deze omgeving kan een ontwikkelaar virtuele accounts aanmaken voor zowel de klanten als de verkoper. Hierdoor werd het mogelijk om uitgebreid te testen met verschillende scenario’s. Zo is er getest op accounts die te weinig geld hebben voor de eerste termijn, accounts die na verloop van tijd te weinig geld hebben, het stopzetten van abonnementen en het tussentijds afbreken van een betaling. Daarnaast is gekeken hoe waterdicht het systeem is. Gedacht kan worden dat de klant door middel van het aanpassen van de URL het systeem voor de gek kan houden bij terugkeer naar de website van linkbuildingtool. Echter, doordat de tool de gegevens verifi¨eert bij PayPal door middel van het token dat PayPal genereert kan de tool erachter komen of de betaling ook inderdaad succesvol is gebleken. Dit token is overigens zichtbaar voor de klant, maar kan slechts in combinatie met een wachtwoord gebruikt worden. Dit wachtwoord is voor de klant onzichtbaar.
20
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
14
keywords tool
Als op het account-dashboard of op de zoekpagina het keywords bewerken scherm wordt geopend, dan wordt een pagina getoond waarop een formulier wordt getekend met een textarea en een aantal knoppen voor sorteren, opslaan en sluiten, en sluiten (zonder opslaan). Figuur 10 toont hiervan een voorbeeld.
Figuur 10: Het venster waarin de keywords kunnen worden aangepast. De keywords kunnen vervolgens direct bij het zoeken worden gebruikt. Als de keywords nog niet getoond zijn, zoals in figuur 11, kan op de knop ”keywords tonen”worden geklikt. Het resultaat staat is te zien in figuur 12. De keywords kunnen weer verborgen worden door op de knop ”X”te klikken. Hier kan dan door de keywords gebladerd worden. Door op ”keywords bewerken”te klikken opent het venster zoals te zien in figuur 10, waarin de lijst met keywords kan worden aangepast.
Figuur 11: De keywords kunnen worden verborgen.
21
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
Figuur 12: Als de gebruiker de keywords toont dan kan er direct op worden gezocht. Als de gebruiker ervoor kiest om de keywords aan te passen en op te slaan, dan wordt de keuzelijst direct aangepast zodat de nieuwe keywords erin staan. De status van de keywords worden onthouden per account. Dit betekent dat als de gebruiker later opnieuw zoekt, dat de keywords wel of niet worden getoond afhankelijk van de status de laatste keer dat het werd gebruikt. Ook blijven de keywords onthouden.
22
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
15
CSV import
De CSV import is terug te vinden in de Link Management Tool. Zodra de gebruiker op de import knop klikt opent zich een pop-up in een shadowbox. In dit formulier (figuur 13) kan de gebruiker aangeven waar op zijn computer het bestand te vinden is. Daarnaast kan de gebruiker, indien nodig, aangeven welk scheidingsteken hij in zijn bestand hanteert. Tot slot kan de gebruiker een template kiezen voor zijn CSV. Hierdoor kan veel tijd bespaard worden met invullen als het een export betreft van een bekend hulpprogramma.
Figuur 13: In de eerste stap van import kan het bestand worden gekozen, het scheidingsteken en eventueel een template. Zodra de gebruiker op volgende klikt, wordt zijn bestand ge-upload naar de server en wordt de editor opgebouwd. In deze editor (figuur 14) kan de gebruiker vervolgens zijn CSV bestand in orde maken. Hij kan kiezen voor welke site hij deze links wil importeren. Daarnaast kan hij aangeven of hij Amerikaanse of Europese datumnotatie gebruikt. Vervolgens moet de gebruiker per kolom aangeven welke gegevens zich in deze kolom bevinden. Dit doet hij door in het drop-down menu de juiste waarde te selecteren. Als er zich in de kolom gegevens bevinden die niet in het juiste formaat staan, of als een verplichte kolom lege rijen bevat, wordt dit direct zichtbaar gemaakt aan de gebruiker door middel van het rood kleuren van de betreffende velden (figuur 15).
Figuur 14: Het scherm van de importeditor voordat wijzigingen zijn aangebracht.
23
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
Figuur 15: Als bij het opslaan blijkt dat de import niet voltooid kan worden wordt dit duidelijk aangegeven. Door de knop “selecteer rijen met conflict” worden deze rijen geselecteerd. Afhankelijk van de fout kan de gebruiker deze nu corrigeren met behulp van de zogeheten bulk actions. Stel bijvoorbeeld dat hij deze rijen wil verwijderen, dan kiest de gebruiker in de eerste kolom voor de actie “verwijder” en in de tweede kolom voor “geselecteerde rijen”. Als hij nu op uitvoeren klikt, zullen de conflicterende rijen worden verwijderd uit de CSV. Op een zelfde manier kan een gebruiker kiezen voor “wijzig”, “rijen waar leeg” en in kolom “Emailadres beheerder” om een door hem gekozen waarde in te voeren in alle lege rijen in de betreffende kolom. Op deze manier kan een gebruiker in hoog tempo zijn bestand zodanig aanpassen dat deze kan worden ge¨ımporteerd. Als het bestand klaar is klikt de gebruiker op links opslaan. Zodra hij dit doet worden alle links nog een laatste maal gecontroleerd door de server. Mocht er nog een fout optreden, dan wordt de gebruiker terug gevoerd naar de editor met een melding van de fout. Als alles blijkt te kloppen, worden de links opgeslagen en wordt het scherm gesloten.
24
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
16
CSV export
Net als de import functionaliteit is de export functionaliteit te vinden in de Link Management Tool. Zodra de gebruiker op export klikt opent wederom een pop-up in een shadowbox (figuur 16).
Figuur 16: Voor het exporteren kunnen bepaalde voorwaarden worden gesteld aan de data. Allereerst moet de gebruiker kiezen voor welke websites hij wil exporteren. Vervolgens kan hij aangeven welke categorie¨en hij in zijn export wil zien. Daarna kan hij aangeven welke velden hij wil exporteren. Door deze met de muis te slepen (figuur 17) kan hij kiezen in welke volgorde de links in de CSV voor zullen komen.
25
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
Figuur 17: De volgorde van de velden is aan te passen door ze te slepen. Tot slot kan de gebruiker invoeren welke naam hij het bestand wil geven. Zodra de gebruiker op export klikt wordt het bestand gedownload en worden de gemaakte keuzes opgeslagen in het account. Hierdoor kan de gebruiker eenvoudig in een later stadium een export maken met dezelfde instellingen. Dit om te faciliteren in het gebruik van de gegevens bij rapportage.
26
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
17
Rapportage module
Op de “website beheren” pagina in de LMT kan de gebruiker klikken op de knop “rapport downloaden”, te zien in figuur 18.
Figuur 18: Knoppen in LMT. Als dit gedaan wordt, dan opent een shadowbox die een pagina toont met een formulier waarin gegevens ingevuld kunnen worden die nodig zijn voordat het rapport gemaakt kan worden. Een voorbeeld is te zien in figuur 19. De gebruiker heeft de mogelijkheid om een plaatje voor in de header toe te voegen en een plaatje voor de footer. Daarnaast kan gekozen worden welke categorie¨en opgenomen moeten worden in het rapport. Per categorie kan nog een extra tekst worden toegevoegd die in de PDF boven de tabel van de categorie komt te staan. Elke categorie begint op een nieuwe pagina in de PDF.
Figuur 19: Voordat het rapport wordt gedownload kunnen nog logo’s en teksten worden toegevoegd. Zodra alle gegevens naar wens zijn ingevuld drukt de gebruiker op “download rapport” en de pdf kan worden gedownload (zie figuur 20). Een voorbeeld van een rapportage is te zien in figuur 21.
27
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
Figuur 20: De download in firefox onder windows xp.
Figuur 21: De eerste pagina van de PDF gegenereerd door de rapportagemodule.
28
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
18
Skinnable selectfield
Tijdens de implementatie van enkele van de functies bleek dat selectvelden niet in dezelfde stijl werden getekend als de overige elementen. Dit HTML-attribuut toont een lijst met keuze opties. Op meerdere plaatsen wordt dit element in de linkbuilingtool gebruikt. Het blijkt echter dat het uiterlijk van deze elementen niet is aan te passen met CSS zoals andere HTML-attributen. Dit betekent dat het OS bepaalt hoe deze velden eruit zien. Dit is duidelijk zichtbaar in figuur 22
Figuur 22: Standaard zien de selectvelden eruit zoals het OS het definieert. Toen dit genoemd werd bleek het een ergernis te zijn van enkele medewerkers van Insyde dat het aanpassen van het uiterlijk van deze velden niet mogelijk was. Omdat we zelf ook graag wilden dat de linkbuildingtool ook voor het oog prettig is om naar te kijken is besloten kort aandacht aan dit probleem te besteden. Besloten is om een jQuery-plugin te schrijven die het huidige selectveld onzichtbaar maakt en dat er een tekstveld overheen plaatst die niet gewijzigd kan worden. Dit veld is dan wel volledig aan de stijl van de website aan te passen. Doordat het selectveld bovenop het tekstveld ligt werkt het uitklapmenu nog steeds. Als de waarde wordt gewijzigd dan wordt dezelfde tekst in het tekstvak getoond. Er is gekozen om deze functionaliteit als een plugin te maken zodat het eenvoudig in andere projecten kan worden gebruikt. Daarnaast is het ‘aanzetten’ van de functionaliteit heel makkelijk. Een voorbeeld is te zien in codefragment 2. 1 2 3
$ ( function () { $ ( ' s e l e c t ' ) . skinselect () ; }) ;
Codefragment 2: De skinnableselect plugin is zeer makkelijk te gebruiken Als de plugin wordt gebruikt op het voorbeeld uit figuur 23, tezamen met goede definities in de CSS, dan is duidelijk een verbetering te zien. In figuur 23 is te zien dat met de plugin de selectvelden zo weergegeven kunnen worden dat ze niet uit de toon vallen met de rest van de elementen op de pagina.
Figuur 23: Door de skinnableselect plugin te gebruiken kunnen de velden wel een bijpassend uiterlijk krijgen.
29
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
Deel VI
Na de Stage 19
Conclusies
Door de wijzigingen in het project door Insyde halverwege het project is de oorspronkelijke projectopdracht niet volbracht. Immers, op het moment van schrijven staat er geen betaalde variant van de linkbuildingtool online. Het betaalsysteem uit de oorspronkelijke opdracht is echter wel ge¨ımplementeerd. Het is mogelijk om zowel recurrente als directe betaalopdrachten te verwerken. Het systeem is modulair opgezet en kan dus met relatief weinig moeite worden gebruikt in verschillende projecten. Er is echter nog wel een aanpassing nodig om het betaalsysteem geschikt te maken voor onder andere de reeds aanwezige implementatie van een winkelmandje. Hoewel er al wel een systeem is ge¨ımplementeerd waarmee abonnementen verkocht kunnen worden en waarmee gebruikers de juiste rechten kunnen worden toegekend is besloten dit nog niet online te zetten. Dit heeft alles te maken met het feit dat Insyde heeft besloten de linkbuildingtool te herontwikkelen na de stage, zodat bijvoorbeeld in het ontwerp van de tool kan worden meegenomen dat een client-administrator systeem gewenst is. Een dergelijk systeem had tijdens de stage ontwikkeld kunnen worden, maar dit zou betekenen dat de integriteit van het ontwerp zou moeten worden aangepast, met alle risico’s van dien. De nieuwe opdracht was dan ook om een kleiner aantal features zo goed mogelijk te ontwerpen en implementeren. Dit is onder andere goed gelukt bij de import editor. In de oorspronkelijke opzet zou ervoor gekozen worden deze feature zo simpel mogelijk te houden. De verantwoordelijkheid voor een correct import bestand zou bij de gebruiker komen te liggen en die moest er maar voor zorgen dat het bestand het juiste formaat had. Omdat we meer tijd kregen om deze feature te ontwikkelen hebben we goed kunnen nadenken hoe we het de gebruiker zo makkelijk mogelijk konden maken zijn gegevens te uploaden naar de linkbuildingtool. Naar ons idee is dit goed gelukt. De tool werkt intu¨ıtief en door middel van de bulk acties kan een hoop tijd bespaard worden. Ook de export functionaliteit is goed uitgediept. Het sleepbaar maken van de kolommen heeft voor een hoog gebruikersgemak gezorgd. Zowel de import als de export feature zijn onoffici¨eel alsnog online gezet omdat de SEO-er van Insyde, Bert van Heerde, deze functionaliteit gezien had en deze goed kon gebruiken om zijn werk te versnellen. Voor zijn account alleen zijn deze features online beschikbaar gemaakt. De keywordsfunctionaliteit voldoet ook aan alle eisen die gesteld zijn. De feature oogt als een kleine verbetering, maar kan een hoop tijdwinst betekenen bij de activiteiten van SEO-ers. Hij is simpel en intu¨ıtief ge¨ımplementeerd en kan ook gemakkelijk verborgen worden als de gebruiker deze functionaliteit niet wil gebruiken. Tot slot de PDF generator. Deze functionaliteit had aanvankelijk een lagere prioriteit, maar omdat wij hiervoor een goed idee hadden en ontwikkelaars binnen Insyde aangaven een dergelijke generator goed te kunnen gebruiken is besloten om hier aan het eind van de stage toch nog aandacht aan te besteden. De insteek was om te kijken hoe ver we met dit idee konden komen tot het einde van de stage. Uiteindelijk hebben we een werkend prototype kunnen afleveren. Uiteraard kan er aan dit prototype nog een hoop worden verbeterd. De mogelijkheid om een voorpagina, inleiding of conclusie toe te voegen ontbreekt nog en de opmaak van het uiteindelijke document is nog niet perfect. Echter, er is wel aangetoond dat het plan om LaTeX te gebruiken om PDF documenten mee te genereren vanuit PHP levensvatbaar is.
30
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
20
Aanbevelingen
Wij denken dat de linkbuildingtool een groot potenti¨eel heeft om uit te groeien tot een volwaardige concurrent op de markt voor betaalde SEO tools. Wij hebben het aantal gebruikers tijdens de stage zien groeien van ongeveer 800 accounts aan het begin, tot bijna 1250 accounts op het moment van schrijven. Opvallend is dat een groot aantal accounts relatief weinig links aanmaakt. Dit zou kunnen komen omdat gebruikers de tool onduidelijk vinden of omdat zij functionaliteiten missen. Ons advies is om goed na te denken over het uiterlijk van de tool. Een simpel en strak ogend uiterlijk kan een groot verschil maken in aantal gebruikers. Een goed voorbeeld hiervan is de tool van Raven SEO. Deze tool is een van de grootsten in zijn soort maar weet zijn interface overzichtelijk en clean te houden. Gerelateerd hieraan is het advies om goed na te denken over de verschillende te implementeren features. Onze ervaring tijdens de stage, vooral met de import editor, is dat als er veel tijd wordt gestoken in een beperkt aantal features, dat deze features van hoogwaardige kwaliteit zijn. Een klein aantal hoogwaardige features heeft volgens ons een grotere waarde dan een groot aantal kleinere features. Het betaalsysteem mist nog een vertaalslag waarmee bijvoorbeeld een winkelmandje vertaalt kan worden in een paymentitem. Ons advies is om hiervoor een klasse op te zetten die voorziet in deze vertaal stap. Daarnaast zal goed ge¨ ori¨enteerd moeten worden op payment providers om een goede beslissing te kunnen maken over de betaalmogelijkheden die een gebruiker aangeboden zal krijgen. Nu is er gebruik gemaakt van PayPal, omdat gebruik hiervan geen opstartkosten met zich meebrengt. Echter, de betaalmogelijkheden met PayPal zijn beperkt; voor recurrente betalingen moet een account worden aangemaakt. Er is een groot aantal providers en verzamelpakketten op dit gebied. De keuze hiervoor is afhankelijk van het beoogde aantal transacties en de gekozen tarieven voor de abonnementen. Integratie van een dergelijke provider zal geen groot probleem vormen indien dit wordt aangepakt zoals de implementatie van de PayPal service. De PDF generator is een veelbelovende feature. Voor een betaalde versie zal dit onderdeel van groot belang zijn en ons advies is dan ook dit onderdeel goed door te ontwikkelen. Niet alleen kan er nog een hoop gebeuren aan de opmaak en inhoudgerelateerde opties, ook bijvoorbeeld het gepland automatisch genereren van een rapport of het vanuit de tool verzenden hiervan, kunnen voor professionele gebruikers een goede motivatie zijn om voor de linkbuildingtool te kiezen. Zoals eerder gemeld is gebleken dat de documentatie van code binnen Insyde te wensen overlaat. Ons advies is dan ook om gebruik te gaan maken van een systeem als PHPdoc om op een gestructureerde manier geproduceerde code van commentaar te voorzien. Hierdoor moet het makkelijker worden voor nieuwe werknemers om zich in het systeem in te werken en moet het makkelijker worden voor ontwikkelaars om te achterhalen wat een minder vaak gebruikte functie ook alweer precies doet.
31
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
Deel VII
Referenties
32
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
Deel VIII
Appendices A
Ori¨ entatieverslag
33
L. v.d. Brink C.W. Hofstede
Technische Universiteit Delft Faculteit EWI stageverslag BSc-project IN3405
Ori¨ entatieverslag Auteurs: Lennaert van den Brink #1310429
Begeleidend docent: Peter van Nieuwenhuizen Co¨ ordinator: Bert van Heerde
Cees-Willem Hofstede #1272012
19 augustus 2010
BSc project LINKBUILDINGTOOL
Samenvatting In dit document wordt verslag gedaan van de uitgevoerde onderzoeken in het kader van de stage bij Insyde door Lennaert van den Brink en Cees-Willem Hofstede. Ten eerste is er een gebruikersonderzoek uitgevoerd. Door middel van een vragenlijst zijn gebruikers van linkbuildingtool.nl ondervraagd over hun gebruik van de tool en wordt hun mening over een mogelijke betaalde versie gepeild. Vervolgens is er gekeken naar concurrenten van linkbuildingtool.nl. Deze concurrerende tools zijn onderzocht op functionaliteit, maar ook op welke wijze zij hun diensten in rekening brengen bij de klant (indien van toepassing). Ook is gekeken naar de gebruiksvriendelijkheid en uitstraling van deze tools. Tot slot is onderzocht welke betaalmethodes geschikt zijn om te implementeren voor linkbuildingtool.nl. Gekeken is onder ander naar iDeal, PayPal en de Wallie Card. De methoden worden getoetst aan de door Insyde gestelde eisen en er wordt in kaart gebracht welke kosten elk van deze oplossingen met zich mee brengt.
i
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
Verklarende woordenlijst Hieronder volgt een overzicht van de in dit document gebruikte termen, afkortingen en hun verklaring.
Insyde Webdesignbureau te Delft. Tevens opdrachtgever linkbuilding Het verwerven van links naar een website. Onderdeel van SEO SEO Search Engine Optimalisation. Voor een website de kans zo groot mogelijk maken om gevonden te worden door bezoekers. tool Een stuk software (al dan niet online) waarmee in dit geval Linkbuilding bedreven kan worden. keyword Een zoekterm voor een zoekmachine. Dit keyword moet uiteindelijk de website waarvoor geoptimaliseerd wordt als resultaat hebben. Kan ook gebruikt worden om linkpartners op te zoeken linkpartner Een website die naar de te optimaliseren website linked. Als wederdienst wordt vaak naar deze website terug gelinked storneren Het terugtrekken van een gedane betaling. web-based Een applicatie is web-based wanneer hij niet gedownload hoeft te worden voor gebruik. backlink Backlinks zijn inkomende links vanaf andere websites. NVP Name Value Pair. Een paar bestaande uit de naam van een variabele en de bijbehorende waarde. token Een gecodeerde string die verzonden wordt naar een andere computer of server. Het bestaat binnen PayPal uit NVPs die doorgaans een methode en zijn argumenten coderen. NAW gegevens De Naam, het Adres en de Woonplaats.
ii
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
Inhoudsopgave Samenvatting
i
Glossarium
ii
1 Gebruikersonderzoek 1.1 De vragenlijst . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Benaderen gebruikers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3 Gebruikersstatistieken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 1 1 1
2 Tools 2.1 De tools . . . . . . . . . . . . . . . 2.1.1 SheerSeo backlink watchdog 2.1.2 Raven SEO . . . . . . . . . 2.1.3 BuzzStream . . . . . . . . . 2.1.4 Linking 101 . . . . . . . . . 2.1.5 LinkAssistant . . . . . . . . 2.1.6 Backlink Builder . . . . . . 2.1.7 SEO book . . . . . . . . . . 2.1.8 Solo SEO . . . . . . . . . . 2.1.9 Inlink . . . . . . . . . . . . 2.1.10 Advanced Link Manager . . 2.2 Overzicht . . . . . . . . . . . . . . 2.3 Conclusie . . . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
2 2 2 2 2 3 3 3 3 4 4 4 5 5
3 Betaalsystemen 3.1 Voorwaarden van Insyde . . . 3.2 Onderzochte Betaalsystemen 3.2.1 iDEAL . . . . . . . . . 3.2.2 PayPal . . . . . . . . . 3.2.3 Creditcard . . . . . . 3.2.4 Wallie-card . . . . . . 3.2.5 Acceptgiro . . . . . . 3.3 Conclusie . . . . . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
7 7 7 7 8 9 9 10 10
. . . . . . . .
. . . . . . . .
. . . . . . . .
Reference
11
Appendices
12
A Vragenlijst Nederlands
12
B Vragenlijst Engels
14
C Codefragmenten gebruikersonderzoek
16
D Overzicht Linkbuildingtools
19
iii
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
1 1.1
Gebruikersonderzoek De vragenlijst
Om uit te vinden wat de gebruiker graag verbeterd ziet aan linkbuildingtool.nl is er een vragenlijst opgesteld. De bedoeling van deze lijst is uitvinden welke onderdelen van de tool het meest gebruikt worden, wat de voornaamste gebruikersgroep van linkbuildingtool.nl is en hoe de gebruiker denkt over een betaalde variant. Ook wordt de gebruiker gevraagd mee te denken over nieuwe functionaliteiten. De vragenlijst is met opzet beperkt tot 10 vragen, om de invuller tegemoet te komen. De vragenlijsten (nederlands en engels) zijn opgenomen als bijlagen A en B.
1.2
Benaderen gebruikers
Na het opstellen van de vragenlijst moest deze uiteraard worden ingevuld door gebruikers. De eerste opzet was om de vragenlijst achter een call-to-action knop op de website te zetten. Ingelogde gebruikers kregen met deze knop het verzoek de 10 vragen in te vullen. Deze methode leverde echter in een week tijd slechts 2 resultaten op, wat niet voldoende is voor een representatief onderzoek Gezien de geringe opbrengst van de online knop moest er actie ondernomen worden om toch feedback van de gebruiker te krijgen. Er werd in de database opgezocht wat de meest actieve gebruikers waren zodat deze persoonlijk gemaild konden worden met de vraag of zij deze lijst in wilden vullen. Besloten werd een actieve gebruiker te defini¨eren als een gebruiker die in de afgelopen maand ten minste 1 link of website gewijzigd heeft. Om deze resultaten uit de database te verkrijgen is een functie geschreven die de gegevens uit de database ophaalt en de user-objecten teruggeeft, zoals te zien in codefragment 1 in appendix C. Om vervolgens de juiste gebruikers te verkrijgen wordt deze functie aangeroepen zoals te zien in codefragment 2 in appendix C. De uiteindelijke query die geproduceerd werd is te vinden in codefragment 3.
1.3
Gebruikersstatistieken
Om te kunnen bepalen hoe de abonnementsstructuur opgezet moet worden voor de betaalde versie is de database ook ondervraagd op het aantal websites dat elke gebruiker aan heeft gemaakt. In codefragment 4 in appendix C is de functie te vinden die een query maakt voor deze gegevens. De resultaten hiervan gaven per gebruiker het aantal websites aan, maar veel informatiever is per aantal websites de hoeveelheid gebruikers die een dergelijk aantal websites heeft aangemaakt. Om dit te verkrijgen is de code uit fragment 5 in appendix C geschreven. Het resultaat van deze code is te zien in tabel 1 Aantal websites 1 2 3 4 5 6-15 16+
Aantal gebruikers 529 71 12 9 10 11 4
Tabel 1: aantal websites per gebruiker
1
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
2
Tools
Linkbuildingtool is niet de enige in zijn soort. Op het internet zijn vele vergelijkbare tools te vinden, al dan niet commercieel. Om een beeld te krijgen van de linkbuildingmarkt is er onderzoek gedaan naar deze tools. In dit onderzoek wordt onder andere gekeken naar de kosten van de tools, de gebruiksvriendelijkheid, uitstraling en onderscheidende features. In dit verslag wordt eerst per onderzochte tool een korte samenvatting gegeven. Daarna is een tabel opgenomen met per tool de belangrijkste functionaliteiten en eigenschappen.
2.1 2.1.1
De tools SheerSeo backlink watchdog
De Backlink Watchdog van SheerSEO [1] is een eenvoudig ogende, web-based, tool. De focus ligt vooral op het beheren van de backlinks naar de website. De functionaliteit waar de tool zijn naam aan dankt, de backlinks watchdog, is een functie waarmee belangrijke links dagelijks gecontroleerd worden door de tool. Wanneer deze link verandert of wordt verwijderd krijgt de gebruiker automatisch een waarschuwing. Een andere opvallende feature is de optie om de website waarvoor gelinkbuild wordt in de gaten te houden hoe de website scoort op social sites als Digg en Delicious. Rapportage is een opvallend ontbrekende feature in de tool. Wel kunnen er verschillende grafiekjes getekend worden die de voortgang van het link building proces weergeven, maar er is verder geen mogelijkheid deze op te slaan of op een andere manier met derden te delen. Voor gebruik van de tool moet maandelijks betaald worden. SheerSeo maakt hierin onderscheid tussen beheerders van (kleine) websites en SEO dienstverleningsbedrijven. Verschil tussen deze categori¨en zit voornamelijk in het aantal projecten dat de gebruiker aan kan maken. Daarnaast is er voor de kleinere websites een onderverdeling gemaakt in prijsklassen die verschil maken in het aantal keywords en linkpartners dat kan worden opgeslagen.
2.1.2
Raven SEO
De tool van Raven SEO [2] doet heel overzichtelijk en professioneel aan. Direct bij het opstarten wordt de gebruiker de optie geboden om geautomatiseerd te zoeken naar keywords en wordt het eerste project geconfigureerd. De tool bevat een groot aantal onderzoeksfunctionaliteiten waaronder geautomatiseerde beoordeling van websites op kwaliteit en ontwerp. Verder beschikt de tool over uitgebreide rapportage functionaliteiten. Voor vrijwel elk onderdeel is een mogelijkheid tot uitdraaien van een PDF document. Ook is er de mogelijkheid log-ins aan te maken voor klanten die dan kunnen rondkijken in het project zonder de mogelijkheid om dingen te wijzigen. Opvallend aan de tool van Raven is dat er een toolbar beschikbaar is voor firefox. Na installatie echter blijkt deze toolbar niet volledig te functioneren. Vooral de veelbelovende functie om tijdens het bezoeken van een website de huidige pagina toe te voegen als mogelijke linkpartner is zeer interessant maar geeft slechts foutmeldingen. Raven SEO maakt onderscheid in drie categori¨en voor zijn abonnementsstructuur. Voor de eigenaars van kleine websites is voor 19 dollar per maand gebruik te maken van de tool, met als voornaamste tekortkoming een beperking in het aantal rapporten dat kan worden gegenereerd en het aantal projecten. Voor de professionele bedrijven wordt er dan nog onderscheid gemaakt in 2 klassen die voornamelijk verschillen in de hoeveelheid keywords en linkpartners die kunnen worden opgeslagen.
2.1.3
BuzzStream
De tool van BuzzStream [3] is niet makkelijk op proef te gebruiken. Bij het aanvragen van de tool moeten gelijk bedrijfsnaam en creditcardgegevens worden opgegeven. Derhalve is besloten deze tool niet uit te proberen. Wel is op de website het een en ander over de tool te vinden. De tool beschikt over CSV export functionaliteit en de mogelijkheid meerdere projecten aan te maken en ook zegt de
2
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
tool te beschikken over import functionaliteit. Opvallende feature van de tool is dat het opbouwen van linkrelaties kan worden toegewezen aan verschillende werknemers, wat het mogelijk zou maken om georganiseerd met een groep aan het project te werken BuzzStream verdeelt zijn product in 4 prijscategorie¨en die onderling verschillen in het aantal toegestane gebruikers, het aantal projecten en het aantal zoekwoorden.
2.1.4
Linking 101
Voor het Link Management Script van Linking 101 [4] is geen mogelijkheid tot gratis uitproberen. Ook hier is met behulp van informatie op de site wel een klein onderzoek gepleegd. Opvallende feature is dat aan links custom categori¨en kunnen worden toegekend om te helpen bij de organisatie hiervan. Daarnaast beschikt het script over een aanpasbaar email template. Het link management script kost eenmalig een bedrag van A C55,2.1.5
LinkAssistant
De LinkAssistant van SEO PowerSuite [5] bestaat uit een downloadable client. De client oogt georganiseerd en professioneel. Het pakket bevat vele exportmogelijkheden in verschillende formaten. Opvallend is dat de tool gebruik maakt van bijna 400 verschillende zoekmachines bij het zoeken naar linkpartners. Verder heeft de tool een ingebouwde browser en mailclient. Er zijn aanpasbare email templates en rapportage templates. Opvallend is dat deze client behoorlijk veel rekenkracht van de computer vergt. Zodra de wat ingewikkeldere taken uitgevoerd worden, wordt de rest van de computer behoorlijk traag. Daarnaast doet de ge¨ıntegreerde browser aan als overbodige functionaliteit. van de LinkAssistant zijn 2 versies beschikbaar. De goedkopere variant ontbeert de vele rapportage functionaliteiten. Daarnaast is er een abonnementsstructuur voor updates van de client. Deze updates omvatten voornamelijk algoritme updates en feature toevoegingen. Bugfixes blijven gratis. 2.1.6
Backlink Builder
De Backlink Builder van webconfs.com [6] lijkt een tool van en voor hobbyisten te zijn. Bijna alle tekst op de pagina is klikbaar, wat een zeer chaotische indruk wekt. De tool bevat vooral veel kennis op het gebied van SEO en gadgets als een SEO quiz en SEO puzzles en comics. In de tool kunnen zoekwoorden ingevoerd worden en vervolgens suggereert de tool pre- en postfixes voor de zoekwoorden. De tool beschikt niet over een management module. Niet Engelse zoektermen geven heel weinig resultaten en de gevonden resultaten bij zoekwoorden lijken doorgaans laag van kwaliteit te zijn. Aan het gebruik van de tool en de kennisbank eromheen zijn geen kosten verbonden.
2.1.7
SEO book
Ook op de site van SEO book [7] is een hoop informatie omtrent SEO te vinden. Dit lijkt ook hier het main selling point, hoewel de indruk professioneler is dan die van de Backlink Builder. De website is echter niet heel overzichtelijk wat betreft de opzet. De tool van SEO book is een toolbar voor firefox. Met deze toolbar kan de gebruiker van de pagina die hij bezoekt zien wat de waardering van verschillende zoekmachines voor die site is. Daarnaast kan hij met 1 druk op de knop alle overige, voor SEO interessante, statistieken zien (zoals aantal interne en externe links op de pagina en keyword density). Tot slot kan er naar keywords en linkpartners gezocht worden. De firefox plugin bezit geen management functionaliteit, al kunnen de gevonden zoekwoorden wel ge¨exporteerd worden. Aan het gebruik van de toolbar zijn geen kosten verbonden. Wel moet de gebruiker zich registreren.
3
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
2.1.8
Solo SEO
De tool van Solo SEO [8] is nog wel bereikbaar via een directe link. Echter, via de homepage SoloSeo.com is de tool niet meer toegankelijk omdat deze ge¨ıntegreerd gaat worden met het pakket Edge Above. Dit pakket is op het moment van schrijven nog niet toegankelijk. De tool bestaat uit een zoekfunctie voor keywords. Voor de gekozen termen worden vervolgens pre- en postfixes geopperd. Het resultaat is dat deze termen vervolgens ingevuld worden in de gekozen zoekmachine. De tool ontbeert enige management functionaliteit en geeft in feite alleen maar de ingevoerde termen op in een andere zoekmachine. het vermoeden bestaat dat hier ooit een inlog functie aan gekoppeld was om wel mogelijkheid te geven tot management. Dit lijkt namelijk zeer sterk op de aanpak van linkbuildingtool.nl De tool is voor alsnog gratis in gebruik. wel gaat hij blijkbaar binnenkort opgenomen worden in een betaald pakket. 2.1.9
Inlink
De inlink tool [9] is een webbased tool die van een opgegeven URL de inlinks bepaalt (de pagina’s die naar deze pagina linken). Dit is niet zozeer handig om linkbuilding te bedrijven, maar kan wel een goede aanvulling zijn op je linkbuilding activiteiten. Zo is de tool te gebruiken om de link strategi¨en van de concurrent te bekijken en kunnen op die manier nieuwe linkpartners gevonden worden. De tool is vooral quick-and-dirty en omvat verder nog geen export functionaliteit of management opties. Aan het gebruik van de tool zijn geen kosten verbonden.
2.1.10
Advanced Link Manager
De Advanced Link Manager [10] is een downloadable applicatie. Bij het opstarten van deze applicatie wordt de gebruiker geconfronteerd met een grote hoeveelheid knoppen en functies. De tool bevat veel van de bekende functionaliteiten als een rapportagemodule, mail templates en het automatisch zoeken van inkomende links. Daarnaast is in de tool een mailclient ge¨ıntergreerd. Advanced Link Manager bevat een uitgebreide verzameling functionaliteiten, maar schiet wel tekort in overzichtelijkheid. Dit is zeker voor het management gedeelte een nadeel, gezien dat juist bedoeld is overzicht te cre¨eren. De Advanced Link Manager onderscheidt 4 verschillende abonnementen. De goedkoopste variant mist rapportagefunctionaliteit en de mogelijkheid om links te waarderen. Daarnaast beschikt deze over minder management functionaliteiten. De middelste variant beschikt wel over de rapportage functionaliteiten, maar ontbeert de automatische waarderingen. De laatste twee versies beschikken over al deze functionaliteiten. De duurste variant heeft als voordeel dat deze meerdere gebruikers aan kan maken met verschillende privileges.
4
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
2.2
Overzicht
Tabel 6 toont een overzicht van de tools, om makkelijk te kunnen vergelijken. In appendix D is een uitvergrote versie terug te vinden. SheerSeo backlink watchdog 7$ / maand 10$ / maand 15$ / maand 40$ / maand 49$ / maand 199$ / maand Raven SEO $19 / maand $99 / maand $249 / maand BuzzStream 29$ / maand 49$ / maand 129$ / maand 249$ / maand Linking101 A C55 eenmalig LinkAssistant A C99,75 eenmalig A C249,75 eenmalig Backlink Builder gratis webbased tool voornamelijk Engelse SE’s SEO book Firefox Plug-in
Solo SEO gratis webbased tool opgeheven, wordt opgenomen in Edge Above pakket Inlink Analyse tool voor inlinks op site Link Manager Eenmalig $99 + $29 / 12 maanden Eenmalig $199 + $59 / 12 maanden Eenmalig $399 + $119 / 12 maanden Eenmalig $599 + $119 / 12 maanden
projecten
keywords/URLs
gebruikers
1 1 1 1 10 50
20 200 400 400 1000 2500
1 1 1 1 1 1
3 inf inf
1000 50000 150000
1 2 8
3 5 14 30
1500 1500 4000 15000
1 4 12 inf
Export naar Excel Aanwezig Aanwezig Aanwezig Aanwezig Aanwezig Aanwezig naar PDF/CSV 30/maand Aanwezig Aanwezig naar CSV Aanwezig Aanwezig Aanwezig Aanwezig
Import
Backlink checker
Email template
Extra’s
n/a n/a n/a n/a n/a n/a
Aanwezig Aanwezig Aanwezig Aanwezig Aanwezig Aanwezig
n/a n/a n/a n/a n/a n/a
social bookmarking Backlink watcher
Aanwezig Aanwezig Aanwezig
Aanwezig Aanwezig Aanwezig
n/a n/a n/a
firefox toolbar Website analyse zeer uitgebreide rapportage
Aanwezig Aanwezig Aanwezig Aanwezig
Aanwezig Aanwezig Aanwezig Aanwezig
? ? ? ?
?
?
?
Aanwezig
Aanwezig
inf inf
1 1
n/a HTML, TXT, XML en SQL Aanwezig Aanwezig
n/a
inf inf
Aanwezig Aanwezig
Aanwezig Aanwezig
Aanwezig Aanwezig
downloadable client (58,1 mb) meer dan 300 zoekmachines
n.v.t.
n.v.t.
n.v.t.
n/a
n/a
n/a
n/a
Artikelen over SEO SEO comics, quizzes, etc geen management functies
n.v.t.
n.v.t.
n.v.t.
n/a
n/a
n/a
n/a
Artikelen over SEO geen management functies training video’s en forum
n.v.t.
n.v.t.
n.v.t.
n/a
n/a
n/a
n/a
Meerdere zoekmachines
n.v.t.
n.v.t.
n.v.t.
Delicious bookmarks
1 1 1 inf
n/a CSV Aanwezig Aanwezig Aanwezig Aanwezig
n/a
inf inf inf inf
n/a XML, CSV Aanwezig Aanwezig Aanwezig Aanwezig
n/a
inf inf inf inf
Aanwezig Aanwezig Aanwezig Aanwezig
Aanwezig Aanwezig Aanwezig Aanwezig
Rapportage naar html, pdf, xml en csv downloadable client (67,4 mb) automatisch incoming links zoeken blog met SEO artikelen
Tabel 2: vergelijking van de onderzochte tools
2.3
Conclusie
Gezien linkbuildingtool.nl een betaalde service moet gaan worden, zal in deze conclusie vooral uitgegaan worden van de onderzochte betaalde tools. Niet betaalde tools worden daar meegenomen waar zij van waarde zijn. Voor de betaalde tools is er onderscheid te maken in twee betaalstructuren. Er kan gekozen worden om eenmalig een bedrag in rekening te brengen om toegang te krijgen tot de tool en daarnaast kunnen er (maandelijkse) abonnementskosten worden gerekend. De standaard lijkt te zijn dat tools met een downloadable client een vast bedrag in rekening brengen voor deze client en dat verder alle tools maandelijkse abonnementskosten rekenen. Elk van deze tools gaat uit van verschillende gebruikersgroepen waarvoor ze verschillende tarieven rekenen. In ieder geval is er verschil tussen de klasse van kleine, onafhankelijke webmasters en SEO-ers die voor een enkele website werkzaamheden verrichten en de klasse van SEO bedrijven die meerdere projecten moeten beheren. Verschillen in kosten komen voornamelijk tot uiting in aantal gebruikersprofielen, projecten en hoeveelheid links die kan worden opgeslagen. De bedragen voor de eerste klasse liggen doorgaans tussen de $ 10 en $ 30 per maand. Voor de tweede klasse ligt dit tussen de $ 200 en $ 250 per maand. Wat betreft functionaliteit wordt het verschil tussen betaalde tools en gratis tools vooral gemaakt op het gebied van beheerfuncties. Zo beschikt eigenlijk elke betaalde tool wel over import en export functionaliteit. Daarnaast is het geautomatiseerd controleren van backlinks een functionaliteit die niet in een betaalde variant mag ontbreken. Interessante features die bij de duurdere varianten naar voren komen zijn vooral op het gebied van rapportage en email templates. Daarnaast is een interessante toevoeging het hebben van een browser plug-in, gezien dit een hoop gebruikersgemak belooft maar nog in geen enkele tool echt goed werkend is ge¨ıntegreerd.
5
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
Tot slot lijkt er een hoop te winnen op het gebied van uitstraling en gebruiksvriendelijkheid. Vooral bij de uitgebreidere betaalde tools valt op dat de gebruiker in het begin overspoeld wordt met een onoverzichtelijke interface met een hoop knoppen direct in beeld. De tools die dit niet hebben voelen gelijk professioneler aan. Het belang van een schone interface voor web apps wordt door Fred Wilson in zijn presentatie “10 golden principles of succesfull web apps”duidelijk gemaakt en is ook zeker van toepassing op de linkbuildingtool [11]. De gemiddelde gebruiker van linkbuildingtool zal zeker meer weten van de wereld van web apps gezien de aard van linkbuilding, maar ook deze gebruiker heeft de keuze uit een hoop alternatieven. Een overzichtelijk uiterlijk kan ervoor zorgen dat een ori¨enterende gebruiker eerder door zal klikken en dus de tool sterker zal overwegen. In het zelfde kader is de snelheid van de applicatie ook een factor om te overwegen. Opvallend bij enkele grotere pakketten was dat deze een dusdanige aanslag pleegden op de computer, dat de gebruiker niks anders meer kon doen terwijl hij aan het wachten was op zijn resultaten. De afweging om een dergelijke zoekactie iets langer te laten duren om de computer te ontzien is een goede overweging om te maken.
6
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
3
Betaalsystemen
Insyde wil graag een versie van linkbuildingtool.nl lanceren waarin het mogelijk is om betaalde accounts aan te maken. Dit hoofdstuk is een verslag van het onderzoek dat is gedaan naar welke betaalmethodes geschikt zijn voor linkbuildingtool en wat de voorwaarden zijn. In sectie 3.1 wordt gekeken naar de voorwaarden die Insyde stelt. Deze voorwaarden zijn de leidraad in het onderzoek. De betaalsystemen die zijn bekeken zijn uitgewerkt in sectie 3.2. Sectie 3.3 bevat ten slotte een conclusie over de gekozen betaalsystemen.
3.1
Voorwaarden van Insyde
Belangrijk is om vooraf aan het onderzoek te weten wat de voorwaarden van Insyde zijn waaraan het systeem moet voldoen die invloed hebben op de keuze van de gebruikte betaalmogelijkheden. Niet alle eisen zijn nu duidelijk, omdat deze veelal afhankelijk zijn van de uitslag van het onderzoek. Wel zijn enkele wensen duidelijk:
3.2
Het systeem moet in staat zijn betalingen automatisch te controleren. Betalingen moeten direct kunnen worden uitgevoerd. De betaalsystemen moeten voldoende veilig zijn. Er moet zowel van binnen als buiten Nederland makkelijk kunnen worden betaald. Integreerbaar in de Insyde kernel.
Onderzochte Betaalsystemen
Er zijn talloze systemen beschikbaar om internetbetalingen mogelijk te maken. Het is niet wenselijk om afhankelijk te zijn van een externe partij voor de betalingen. Het gekozen systeem moet namelijk makkelijk te integreren zijn in de kernel van Insyde. Daarom bekijken we alleen de systemen die los te integreren zijn. Per systeem bekijken we een aantal belangrijke punten: Kosten Eisen aan het onderliggende systeem (zoals server mogelijkheden) Snelheid van betaling
In de vragenlijst die is opgesteld (zie hoofdstuk 1) zijn een aantal veelgebruikte betaalsystemen genoemd. Dit zijn de systemen waarnaar de aandacht uitgaat in dit onderzoek. 3.2.1
iDEAL iDEAL is een betaalmethode voor Nederlandse rekeninghouders. Het betalen gaat op dezelfde manier zoals mensen gewend zijn van hun eigen internet betaal pakket. Dit draagt al snel bij aan het gevoel van veiligheid, omdat gebruikers kunnen betalen zoals ze gewend zijn.
Voordelen: Iedereen die internetbankiert bij een van de deelnemende banken kan iDEAL direct en gratis gebruiken. Zonder zich daarvoor te registreren, bestanden te downloaden of een account aan te maken. Er zijn 10 miljoen consumenten die gebruik maken van internetbankieren bij ABN AMRO, ASN Bank, Fortis, Friesland Bank, ING, Rabobank, SNS Bank, SNS Regio Bank en Triodos Bank. Gebruikers hebben een vertrouwde, veilige en makkelijke manier om te betalen, in hun eigen internetbankieromgeving. Een betaling met iDEAL is gegarandeerd en niet storneerbaar. Het is direct duidelijk of de betaling is gelukt zodat levering meteen kan plaatsvinden. Geen aansluitkosten en maandelijkse abonnementskosten.
7
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
Nadelen: alleen beschikbaar voor rekeninghouders bij deelnemende banken.
Om een iDEAL integratie mogelijk te maken moet daarvoor een verbinding worden gemaakt met de bank waar de betaling naar moet worden overgemaakt. Er zijn dus voorwaarden waar aan moet worden voldaan die kunnen verschillen per bank. Aangezien de rekening waar de betalingen uiteindelijk naar moeten worden overgemaakt geregistreerd staat bij de ING bank beschouwen we hier alleen de voorwaarden die deze bank stelt [12]. Belangrijk voordeel van iDEAL via de ING is dat geen aansluitkosten en maandelijkse abonnementskosten worden gerekend. Transactiekosten worden wel gerekend [13], waarvan een overzicht te vinden is in tabel 3. Aantal transacties tot 500 per maand 501 tot 1000 per maand meer dan 1000 per maand
Kosten per transactie A C0,75 A C0,70 A C0,65
Tabel 3: iDEAL kosten per transactie
Er zijn twee varianten van het iDEAL systeem, basic en advanced, waarvan tabel 4 een overzicht biedt. Mogelijkheden Verkoop fysieke producten Verkoop van virtuele producten (downloads) Hoog transactievolume Integratie met back-office Betaalproces in eigen ‘look&feel’ Vereisten Basiskennis van programmeren Kennis van PHP, .NET of Java Openssl (of vergelijkbaar pakket) op webserver
Basic 3
Basic 3
Advanced 3 3 3 3 3 Advanced 3 3 3
Tabel 4: iDEAL varianten
3.2.2
PayPal
PayPal is een betaalmethode die internationaal beschikbaar is. Er kan betaald worden met dit systeem door iedereen die een PayPal account heeft. De integratie in een website moet heel makkelijk verlopen. Hiertoe worden enkele mogelijkheden aangeboden. Naast integratie via een van de partners van PayPal en simpele integratie (alleen een knop), is er de mogelijkheid om middels een API een eigen kassa te bouwen met dezelfde ‘look&feel’ van de eigen website. Voor directe betaling via creditcard (zonder PayPal account) kan gebruik worden van een systeem dat vergelijkbaar is met dat van iDEAL (sectie 3.2.1). Eerst moeten een aantal tests worden uitgevoerd om er zeker van te zijn dat de verbinding stabiel en veilig is. Vervolgens kan van een betaling direct worden gecontroleerd of deze geslaagd is en of het juiste bedrag is overgemaakt. Paypal noemt dit de ”Direct Payment flow” waarvan een schematische weergave te zien is in figuur 1.
8
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
Figuur 1: PayPals’ “Direct Payment flow” Paypal biedt een sandbox om de integratie in de website te testen. Op de website van PayPal is een zeer uitgebreide documentatie te vinden over het gebruik van de API. Voordelen: Geen aanvraagprocedure. Zolang je een account hebt kun je betalingen ontvangen. Mogelijkheid om eigen kleuren en logo’s te gebruiken op betaalpagina van PayPal. Betalen gaat snel en gemakkelijk. Sterke beveiliging tegen fraude. geen aansluitkosten en maandelijkse abonnementskosten. Betalingen accepteren uit 190 landen en in 19 verschillende valuta. Directe creditcardbetalingen mogelijk (zie ook sectie 3.2.3), zonder PayPal account. Ontvangen van betalingen voor abonnementen, microbetalingen, donaties of cadeaubonnen verkopen. Nadelen: Paypal account en/of creditcard vereist.
Belangrijk voordeel van PayPal is net als bij iDEAL via de ING, dat geen aansluitkosten en maandelijkse abonnementskosten worden gerekend. Transactiekosten worden wel gerekend, waarvan een overzicht te vinden is in tabel 3. Maandelijks volume ontvangen betalingen A C0,00 - A C2.500,00 A C2.500,01 - A C10.000,00 A C10.000,01 - A C50.000,00 A C50.000,01 - A C100.000,00 meer dan A C100.000,00
Kosten per 3,4% + 2,9% + 2,3% + 1,9% + 1,5% +
transactie A C0,35 A C0,35 A C0,35 A C0,35 A C0,35
Tabel 5: PayPal kosten per transactie
3.2.3
Creditcard
Voor het betalen met een creditcard zijn vele systemen. PayPal (sectie 3.2.2) heeft ook een mogelijkheid om directe betalingen uit te voeren met een creditcard waarvan eerder een figuur werd getoond (figuur 1). De implementatie van dit systeem is vergelijkbaar met dat van iDEAL en biedt gelijkwaardige voordelen, alleen dan internationaal toepasbaar, zolang de gebruiker beschikt over een geschikte creditcard. De kosten zijn gelijk aan normale PayPal betalingen. 3.2.4
Wallie-card 9
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
Wallie-cards zijn te vergelijken met prepaid kaarten voor telefoons. Je kunt kaarten kopen van 5, 10, 20 of 50 euro bij een van de verkooppunten. Op deze kaarten bevindt zich een kraslaag waarachter een 16 cijferige code schuil gaat. Deze code kan worden gebruikt om mee te betalen op websites die betalingen via Wallie-card accepteren. Er zijn ook e-vouchers, dit is een Wallie-card in de vorm van een kassabon. Deze hebben geen kraslaag. Wallie-cards zijn met name geschikt voor betalingen van kleine bedragen. Daarom leent het systeem zich met name voor bijvoorbeeld spelletjes sites waar eenmalig een klein bedrag moet worden betaald om een spelletje te kunnen spelen of om een startkrediet aan te maken. Het bleek niet eenvoudig om informatie te vinden over de implementatie. Het enige dat mogelijk bleek was een formulier invullen op de website van Wallie-card [14]. Later bleek dat implementatie gegevens worden toegezonden zodra alle gegevens zoals rekeningnummer en adres informatie bekend zijn gemaakt aan Wallie-card. Voordelen: Anoniem betalen. Geen enkele directe koppeling met rekeningnummer of creditcard gegevens.
Nadelen:
Kaart met code vereist. Beperkt saldo. Alleen geschikt voor kleine bedragen. Slechte informatievoorziening voor website eigenaren.
Aangezien Wallie-card hoogstwaarschijnlijk ongeschikt is als betaalmethode voor linkbuildingtool en ook Insyde geen heil ziet in het gebruik van dit systeem is besloten geen verdere aandacht te besteden aan deze methode. 3.2.5
Acceptgiro
Hoewel deze betaalmethode is opgenomen in de vragenlijst ter referentie is het niet een wenselijke methode. Het probleem is namelijk dat betalingen niet direct en niet automatisch kunnen worden gecontroleerd vanaf de server. Om die reden wordt er in dit verslag niet verder ingegaan op acceptgiro’s. Om diezelfde reden worden ook betalingen onder rembours en contante betalingen buiten beschouwing gelaten.
3.3
Conclusie
Van de onderzochte betaalsystemen vallen er enkele af. Zo worden Wallie-card, acceptgiro en cash/rembours betalingen niet meer in overweging genomen. Dit omdat de administratie van deze methoden dusdanig veel extra werk betekenen voor Insyde dat het minder interessant wordt om toe te passen, ook vanwege de kosten die dit met zich meebrengt. Methoden als iDEAL en PayPal zijn juist wel geschikt omdat betalingen volledig kunnen worden geautomatiseerd. Wel is verder onderzoek nodig om vast te kunnen stellen wat de exacte voorwaarden zijn aan het systeem dat de methoden implementeert. Ook zal verder moeten worden onderzocht en bedacht hoe bepaalde uitzonderingssituatie kunnen worden afgehandeld, zoals stornering (niet bij iDEAL). Er zijn meerdere methoden om creditcard betaling mogelijk te maken, maar de oplossing met PayPal verdient de voorkeur, omdat het een bewezen methode is met een enorm aantal gebruikers. Zowel iDEAL als PayPal bieden een API die het mogelijk maken een standaard te cre¨eren die gebruikt kan worden in de kernel van Insyde. Door deze methoden te kiezen kan een solide basis worden gelegd voor andere projecten van Insyde die internetbetalingen vereisen. 10
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
Referenties [1] Sheer SEO. Backlinks watchdog. backlinks-watchdog.html, mei 2010.
http://www.sheerseo.com/seo-software/
[2] Raven SEO tools. Link manager for link building. http://raven-seo-tools.com/features/ link-manager, mei 2010. [3] Buzz Stream. Buzz stream link building. http://www.buzzstream.com/link-building, mei 2010. [4] linking101.com. Link exchange script from linking101.com. script.htm, mei 2010.
http://www.linking101.com/
[5] SEO PowerSuite. Linkassistant seo tool. http://www.link-assistant.com/linkassistant/, mei 2010. [6] webconfs.com. Backlink builder. http://www.webconfs.com/backlink-builder.php, mei 2010. [7] SEO Book. Free link building tools: Seo book. http://tools.seobook.com/link-tools/, mei 2010. [8] SoloSEO. Link search tool. http://www.soloseo.com/tools/linkSearch.html, mei 2010. [9] Eric Miraglia. Page inlink analyzer. http://ericmiraglia.com/inlink/, mei 2010. [10] Caphyon. Link popularity software - advanced link manager. seo-software/backlinks-watchdog.html, mei 2010.
http://www.sheerseo.com/
[11] Fred Wilson. 10 golden principles of successful web apps. http://carsonified.com/blog/ business/fred-wilsons-10-golden-principles-of-successful-web-apps/, februari 2010. [12] ING Bank N.V. Algemene voorwaarden inzake ideal. http://www.ing.nl/Images/Algemene_ Voorwaarden_iDEAL_November2009_tcm7-25511.pdf, november 2009. [13] ING Bank N.V. Tarieven zakelijk betalingsverkeer. http://www.ing.nl/Images/ TarievenZakelijkBetalingsverkeer_tcm7-18982.pdf, mei 2010. [14] Wallie-Card. More information form. http://www.wallie.com/index.php?p=merchants&page= information, mei 2010.
11
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
Appendices A
Vragenlijst Nederlands
Beste gebruiker van linkbuildingtool.nl, Momenteel zijn we aan het onderzoeken hoe we van linkbuildingtool een nog beter product kunnen maken. Om die reden zijn wij zeer ge¨ınteresseerd in uw mening. In deze lijst vindt u vragen over uw gebruik van linkbuildingtool. Daarnaast willen we graag weten hoe we de tool nog verder kunnen verbeteren. Tot slot willen we onderzoeken of er naast de huidige versie, markt is voor een uitgebreidere, betaalde variant van linkbuildingtool.nl. Bij voorbaat dank, Insyde 1. Waar kent u linkbuildingtool.nl van?
google andere zoekmachine, namelijk . . . via insyde.nl op aanraden van een bekende anders . . .
2. Waarom doet u aan linkbuilding?
het is een onderdeel van mijn SEO-dienstverlening ik zie het als een noodzakelijk onderdeel van het onderhoudsproces van mijn website(s) het is een hobby anders . . .
3. Welk onderdeel van linkbuildingtool.nl gebruikt u het meest? ... 4. Gebruikt u naast linkbuildingtool nog andere vergelijkbare tools voor linkbuilding? Zo ja, welke? ... 5. Zo ja, wat is de reden dat u naast linkbuildingtool.nl andere tools gebruikt?
bedrijfsstandaard ik mis functionaliteit bij linkbuildingtool.nl uit interesse voor linkbuilding ik ben nog aan het ori¨enteren anders . . .
6. Zijn er onderdelen van linkbuildingtool.nl die u onduidelijk of onhandig vindt? probeer zo duidelijk mogelijk uit te leggen wat u onduidelijk vindt en eventueel hoe u het graag anders zou zien . . . 7. Mist u nog bepaalde functies in de linkbuildingtool.nl? probeer deze functies zo duidelijk mogelijk te omschrijven . . .
12
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
8. Welke van de volgende onderdelen ziet u het liefst in een nieuwe versie van linkbuildingtool.nl? kies er maximaal 3
meerdere inlogvarianten: administrator - client links importeren/exporteren (csv, xml, enz.) rapportagefunctionaliteit email sjabloon (standaardmail voor het versturen van aanvragen) plugin voor de browser standaard linkbeschrijvingen waar uit gekozen kan worden keyword Ranking bij zoekresultaten kennisbank met artikelen over SEO kwaliteitsbeoordeling gevonden links
9. Hoeveel zou u bereid zijn te betalen voor het gebruik van een uitgebreide variant van linkbuildingtool.nl?
. . . per jaar . . . per maand eenmalig . . . niets
10. Welke online betaalmethode heeft in het algemeen uw voorkeur?
iDeal creditcard wallie-card paypal acceptgiro anders . . .
13
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
B
Vragenlijst Engels
Dear user of Linkbuildingtool.nl We are researching how we can improve linkbuildingtool.nl. We would like to hear your opinion on this matter by answering a few questions. These questions will involve your usage of the linkbuilding tool. Also, we are intrested in how to improve upon the tool. Finally, we would like to hear your opinion on a possible paid version of linkbuildingtool.nl with extra features. Thanks in advance, Insyde 1. Where do you know the linkbuildingtool.nl from?
google
a different search engine, namely . . .
through insyde.nl
reccomendation by someone else
other,. . .
2. Why do you perform linkbuilding for your website(s)?
it is part of my SEO services
I think of it as a necessary part of website maintenance
it is a hobby
other, . . .
3. What part of linkbuilding tool do you use the most? ... 4. Besides linkbuildingtool.nl, do you use any similiar tools for link building? If so, wich ones? ... 5. If you use other tools for linkbuilding, why do you use them?
it is the company standard
linkbuildingtool.nl lacks certain functionality
out of intrest in linkbuilding
I am still figuring out which one to use
other, . . .
6. Are there any parts of linkbuildingtool.nl that you think are unclear or uneasy to use? try to descibe as exactly as possible what you think is unclear and how you would like to see it ... 7. Do you miss certain functionality in linkbuildingtool.nl? try to describe this missing functionality as clear as possible . . . 8. Which of the following features would you like to see the most in linkbuildingtool.nl? choose the best 3 multiple log in variants: client - administrator import/export functionality for links (csv, xml, etc.) reporting functionality email template (template for sending link requests) 14
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
browser plugin standard linkdescriptions to choose from keyword Ranking of searchresults knowledge base with articles about SEO quality ranking of found links 9. How much would you be prepared to pay for the useage of extra features in linkbuildingtool.nl?
. . . / year
. . . / month
a one time fee of . . .
nothing 10. When paying online, what method do you most commonly use?
iDeal
creditcard
wallie-card
paypal
giro form
other, . . .
15
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
C 1 2 3 4 5 6 7 8 9
10 11 12 13
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
Codefragmenten gebruikersonderzoek
f u n c t i o n g e t M o s t A c t i v e U s e r s ( $dateFrom , $dateTo , $ n r O f U s e r s = null , $ e x c l u d e U s e r I d s = null ) { global $SYSTEM ; $ r e g i s t r a t i e M o d u l e = $ S Y S T E M −>g e t M o d u l e ( ” w e b r e g i s t r a t i e m o d u l e ” ) ; $ q u e r y = $ t h i s −>g e t Q u e r y ( 1 , f a l s e ) ; $ r e g i s t r a t i e I t e m I n f o = $ r e g i s t r a t i e M o d u l e −>c r e a t e Q u e r y I n f o r m a t i o n ( ) ; $ r e g i s t r a t i e L i n k I t e m I n f o = $ r e g i s t r a t i e M o d u l e −>c r e a t e Q u e r y I n f o r m a t i o n ( ”←web registratiemodulelinkitem ”) ; $ q u e r y −>a d d J o i n ( n e w L e f t J o i n ( $ r e g i s t r a t i e I t e m I n f o , n e w E q u a l s ( $ r e g i s t r a t i e I t e m I n f o −>←g e t F i e l d E x p r e s s i o n ( ” u s e r c r e a t e d ” ) , $ q u e r y −>g e t F i e l d E x p r e s s i o n ( ” u n i d ” ) ) ) ) ; $ q u e r y −>a d d J o i n ( n e w L e f t J o i n ( $ r e g i s t r a t i e L i n k I t e m I n f o , n e w E q u a l s ( ←$ r e g i s t r a t i e L i n k I t e m I n f o −>g e t F i e l d E x p r e s s i o n ( ” u s e r c r e a t e d ” ) , $ q u e r y −>←g e t F i e l d E x p r e s s i o n ( ” unid ” ) ) ) ) ; $ q u e r y −>a d d C o n d i t i o n ( n e w d a t e A f t e r O r E q u a l ( $ r e g i s t r a t i e I t e m I n f o −>g e t F i e l d E x p r e s s i o n ( ”←d a t e c h a n g e d ” ) , $ q u e r y −>g e t V a l u e E x p r e s s i o n ( g e t D a t e ( $ d a t e F r o m ) , ” d a t e ” ) ) ) ; $ q u e r y −>a d d C o n d i t i o n ( n e w d a t e B e f o r e O r E q u a l ( $ r e g i s t r a t i e I t e m I n f o −>g e t F i e l d E x p r e s s i o n ( ”←d a t e c h a n g e d ” ) , $ q u e r y −>g e t V a l u e E x p r e s s i o n ( g e t D a t e ( $ d a t e T o ) , ” d a t e ” ) ) ) ; $ q u e r y −>a d d C o n d i t i o n ( n e w d a t e A f t e r O r E q u a l ( $ r e g i s t r a t i e L i n k I t e m I n f o −>g e t F i e l d E x p r e s s i o n ←( ” d a t e c h a n g e d ” ) , $ q u e r y −>g e t V a l u e E x p r e s s i o n ( g e t D a t e ( $ d a t e F r o m ) , ” d a t e ” ) ) ) ; $ q u e r y −>a d d C o n d i t i o n ( n e w d a t e B e f o r e O r E q u a l ( $ r e g i s t r a t i e L i n k I t e m I n f o −>←g e t F i e l d E x p r e s s i o n ( ” d a t e c h a n g e d ” ) , $ q u e r y −>g e t V a l u e E x p r e s s i o n ( g e t D a t e ( $ d a t e T o ) , ”←date ” ) ) ) ; $ q u e r y −>a d d T o F i e l d L i s t ( n e w C o u n t ( n e w D i s t i n c t ( $ r e g i s t r a t i e I t e m I n f o −>g e t F i e l d E x p r e s s i o n ←( ” unid ” ) ) ) , ” n r w e b s i t e s ” ) ; $ q u e r y −>a d d T o F i e l d L i s t ( n e w C o u n t ( n e w D i s t i n c t ( $ r e g i s t r a t i e L i n k I t e m I n f o −>←g e t F i e l d E x p r e s s i o n ( ” unid ” ) ) ) , ” n r l i n k s ” ) ; $ q u e r y −>a d d G r o u p B y ( $ q u e r y −>g e t F i e l d E x p r e s s i o n ( ” u n i d ” ) ) ; $ q u e r y −>a d d O r d e r ( n e w O r d e r B y T e x t ( ” n r l i n k s ” , f a l s e ) ) ; i f ( $ e x c l u d e U s e r I d s != n u l l && i s a r r a y ( $ e x c l u d e U s e r I d s ) ) { f o r e a c h ( $ e x c l u d e U s e r I d s as $ u s e r I D ) { $ q u e r y −>a d d C o n d i t i o n ( n e w N o t E q u a l s ( $ q u e r y −>g e t F i e l d E x p r e s s i o n ( ” u n i d ” ) , $ q u e r y ←−>g e t V a l u e E x p r e s s i o n ( $ u s e r I D ) ) ) ; } } i f ( $ n r O f U s e r s != n u l l && $ n r O f U s e r s > 0 ) { $ q u e r y −>s e t T o p ( $ n r O f U s e r s ) ; } r e t u r n $ q u e r y −>e x e c u t e ( ) ; }
Codefragment 1: code om de query te genereren die de meest actieve gebruikers opvraagt aan de database en deze teruggeeft
1 2 3 4 5 6
$ u s e r M o d u l e = $ S Y S T E M −>g e t U s e r M o d u l e ( ) ; $ r e g i s t r a t i e M o d u l e = $ S Y S T E M −>g e t M o d u l e ( ” w e b r e g i s t r a t i e m o d u l e ” ) ; $ d a t e F r o m = t i m e ( ) − 60 * 60 * 24 * 3 0 ; // nu , min 30 dagen $ d a t e T o = t i m e ( ) ; // nu $ n r O f U s e r s = 3 0 ; // h o e v e e l u s e r s maximaal g e t o o n d worden $ e x c l u d e U s e r I d s = a r r a y ( 1 , 6 8 7 ) ; // a r r a y b e v a t de i d s van u s e r s d i e n i e t i n h e t r e s u l t a a t ←t e r e c h t komen
7
$ m o s t A c t i v e U s e r S t a g e L i s t = $ u s e r M o d u l e −>g e t M o s t A c t i v e U s e r s S t a g e ( $ d a t e F r o m , $ d a t e T o , ←$nrOfUsers , $excludeUserIds ) ;
Codefragment 2: code die de query genererende functie aanroept
16
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
1 2 3 4 5 6 7 8 9 10 11 12 13
SELECT A 2 9 . * , COUNT( DISTINCT ( A 3 0 . ` u n i d ` ) ) AS n r w e b s i t e s , COUNT( DISTINCT ( A 3 1 . ` u n i d nrlinks FROM w e b _ u s e r m o d u l e i t e m A 2 9 LEFT JOIN w e b _ r e g i s t r a t i e m o d u l e i t e m A 3 0 ON ( A 3 0 . ` u s e r c r e a t e d ` = A 2 9 . ` u n i d ` ) LEFT JOIN w e b _ r e g i s t r a t i e m o d u l e l i n k i t e m A 3 1 ON ( A 3 1 . ` u s e r c r e a t e d ` = A 2 9 . ` u n i d ` ) WHERE ( ( ( ( A 2 9 . ` a r c h i v e d ` = ' ' ) ) OR ( ( A 2 9 . ` a r c h i v e d ` = ' 0 ' ) ) ) AND ( A 3 0 . ` d a t e c h a n g e d ` >= ' 2010−04−07 ' ) AND ( A 3 0 . ` d a t e c h a n g e d ` <= ' 2010−05−07 ' ) AND ( A 3 1 . ` d a t e c h a n g e d ` >= ' 2010−04−07 ' ) AND ( A 3 1 . ` d a t e c h a n g e d ` <= ' 2010−05−07 ' ) AND ( (NOT ( ( A 2 9 . ` u n i d ` = ' 1 ' ) ) ) ) AND ( (NOT ( ( A 2 9 . ` u n i d ` = ' 687 ' ) ) ) ) ) GROUP BY A 2 9 . ` u n i d ` ORDER BY n r l i n k s DESC LIMIT 0 , 30
`)
) AS ←-
Codefragment 3: query die de meest actieve gebruikers opvraagt aan de database 1 2 3 4 5 6 7 8 9
function getWebsitePerUserCount () { global $SYSTEM ; $ q u e r y = $ t h i s −>g e t Q u e r y ( 0 , f a l s e ) ; $ q u e r y −>a d d T o F i e l d L i s t ( n e w C o u n t ( $ q u e r y −>g e t F i e l d E x p r e s s i o n ( ” u s e r c r e a t e d ” ) ) , ” n r s i t e s ” ) ; $ q u e r y −>a d d G r o u p B y ( $ q u e r y −>g e t F i e l d E x p r e s s i o n ( ” u s e r c r e a t e d ” ) , f a l s e ) ; r e t u r n $ q u e r y −>e x e c u t e G e t W r a p p e r ( ) ; }
Codefragment 4: code om de query te genereren die het aantal websites opvraagt dat elke user heeft aangemaakt 1 2 3 4 5
$ w e b s i t e s P e r U s e r W r a p p e r = $ r e g i s t r a t i e M o d u l e −>g e t W e b s i t e P e r U s e r C o u n t ( ) ; $websitePerUserArray = array () ; w h i l e ( $ i t e m = $ w e b s i t e s P e r U s e r W r a p p e r −>s k i p ( ) )
{
6 7
{
8 9
}
10 11 12 13 14
$ f i e l d A r r a y = $ w e b s i t e s P e r U s e r W r a p p e r −>g e t A s s o c i a t i v e A r r a y ( ) ; $nrsites = $fieldArray [ ” n r s i t e s ” ] ; i f ( ! i s s e t ( $websitePerUserArray [ $nrsites ] ) )
}
$websitePerUserArray [ $nrsites ] = 0;
$ w e b s i t e P e r U s e r A r r a y [ $ n r s i t e s ]++;
ksort ( $websitePerUserArray ) ;
Codefragment 5: code om het aantal users te tellen per aantal wesites
17
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
18
L. v.d. Brink C.W. Hofstede
19
Solo SEO gratis webbased tool opgeheven, wordt opgenomen in Edge Above pakket Inlink Analyse tool voor inlinks op site Link Manager Eenmalig $99 + $29 / 12 maanden Eenmalig $199 + $59 / 12 maanden Eenmalig $399 + $119 / 12 maanden Eenmalig $599 + $119 / 12 maanden
SEO book Firefox Plug-in
1500 1500 4000 15000 ? inf inf n.v.t.
3 5 14 30
?
inf inf
n.v.t.
n.v.t.
n.v.t. inf inf inf inf
n.v.t.
n.v.t.
inf inf inf inf
n.v.t.
1000 50000 150000
3 inf inf
n.v.t.
20 200 400 400 1000 2500
1 1 1 inf
n.v.t.
n.v.t.
n.v.t.
n.v.t.
1 1
?
1 4 12 inf
1 2 8
1 1 1 1 1 1
gebruikers
n/a XML, CSV Aanwezig Aanwezig Aanwezig Aanwezig
n/a
n/a
n/a
n/a HTML, TXT, XML en SQL Aanwezig Aanwezig
Export naar Excel Aanwezig Aanwezig Aanwezig Aanwezig Aanwezig Aanwezig naar PDF/CSV 30/maand Aanwezig Aanwezig naar CSV Aanwezig Aanwezig Aanwezig Aanwezig
n/a CSV Aanwezig Aanwezig Aanwezig Aanwezig
n/a
n/a
n/a
Aanwezig Aanwezig
n/a
Aanwezig Aanwezig Aanwezig Aanwezig
Aanwezig Aanwezig Aanwezig
n/a n/a n/a n/a n/a n/a
Import
Aanwezig Aanwezig Aanwezig Aanwezig
n/a
n/a
n/a
n/a
Aanwezig Aanwezig
Aanwezig
Aanwezig Aanwezig Aanwezig Aanwezig
Aanwezig Aanwezig Aanwezig
Aanwezig Aanwezig Aanwezig Aanwezig Aanwezig Aanwezig
Backlink checker
Tabel 6: vergelijking van de onderzochte tools
keywords/URLs
1 1 1 1 10 50
projecten
Aanwezig Aanwezig Aanwezig Aanwezig
n/a
n/a
n/a
n/a
Aanwezig Aanwezig
Aanwezig
? ? ? ?
n/a n/a n/a
n/a n/a n/a n/a n/a n/a
Email template
Rapportage naar html, pdf, xml en csv downloadable client (67,4 mb) automatisch incoming links zoeken blog met SEO artikelen
Delicious bookmarks
Meerdere zoekmachines
Artikelen over SEO geen management functies training video’s en forum
Artikelen over SEO SEO comics, quizzes, etc geen management functies
downloadable client (58,1 mb) meer dan 300 zoekmachines
firefox toolbar Website analyse zeer uitgebreide rapportage
social bookmarking Backlink watcher
Extra’s
D
SheerSeo backlink watchdog 7$ / maand 10$ / maand 15$ / maand 40$ / maand 49$ / maand 199$ / maand Raven SEO $19 / maand $99 / maand $249 / maand BuzzStream 29$ / maand 49$ / maand 129$ / maand 249$ / maand Linking101 A C55 eenmalig LinkAssistant A C99,75 eenmalig A C249,75 eenmalig Backlink Builder gratis webbased tool voornamelijk Engelse SE’s
BSc project LINKBUILDINGTOOL
Overzicht Linkbuildingtools
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
B
Plan van Aanpak
57
L. v.d. Brink C.W. Hofstede
Technische Universiteit Delft Faculteit EWI stageverslag BSc-project IN3405
Plan van Aanpak Auteurs: Lennaert van den Brink #1310429
Begeleidend docent: Peter van Nieuwenhuizen Co¨ ordinator: Bert van Heerde
Cees-Willem Hofstede #1272012
19 augustus 2010
BSc project LINKBUILDINGTOOL
Summary hier komt de samenvatting
i
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
Glossarium Hieronder volgt een overzicht van de in dit document gebruikte termen, afkortingen en hun verklaring.
Insyde Webdesignbureau te Delft. Tevens opdrachtgever CMS Content Management System. Webmagi¨ er Het CMS van Insyde Linkbuilding Het verwerven van links naar een website. Onderdeel van SEO SEO Search Engine Optimalisation. Voor een website de kans zo groot mogelijk maken om gevonden te worden door bezoekers. TOPDesk Service Management pakket. Wordt in dit project gebruikt bij de planning van activiteiten en taken MoSCoW methode Methode om gewenste features te prioritiseren. De features worden, op volgorde van prioriteit, onderverdeeld in ”Must have”, ”Should have”, ”Could have”, ”Would have”. SVN Subversion Repository. Wordt gebruikt voor versie beheer van code en verslagen. IDE Integrated development environment. Een applicatie waarin code kan worden geschreven, gecompiled en gedebugd. Bij Insyde wordt het IDE Eclipse gebruikt.
ii
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
Inhoudsopgave Samenvatting
i
Verklarende woordenlijst 1 Projectopdracht 1.1 omgeving . . . . . . 1.2 doelstelling . . . . . 1.3 opdrachtformulering 1.4 deliverables . . . . . 1.5 eisen en beperkingen
ii . . . . .
1 1 1 1 1 1
2 Aanpak 2.1 voorbereiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 onderzoek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3 ontwikkeling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2 2 2 2
3 projectinrichting en voorwaarden 3.1 Projectinrichting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Randvoorwaarden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3 3 3
4 Planning 4.1 Activiteitenplan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Resource plan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4 4 4
5 Kwaliteitsborging 5.1 Ontwikkelmethode . 5.2 Testplan . . . . . . . 5.3 Overige maatregelen 5.3.1 SVN . . . . . 5.3.2 TOPdesk . . 5.3.3 Trac . . . . . 5.3.4 PHPdoc . . .
5 5 5 5 5 5 5 5
. . . . .
. . . . . . .
. . . . .
. . . . . . .
. . . . .
. . . . . . .
. . . . .
. . . . . . .
. . . . .
. . . . . . .
. . . . .
. . . . . . .
. . . . .
. . . . . . .
. . . . .
. . . . . . .
. . . . .
. . . . . . .
. . . . .
. . . . . . .
. . . . .
. . . . . . .
. . . . .
. . . . . . .
iii
. . . . .
. . . . . . .
. . . . .
. . . . . . .
. . . . .
. . . . . . .
. . . . .
. . . . . . .
. . . . .
. . . . . . .
. . . . .
. . . . . . .
. . . . .
. . . . . . .
. . . . .
. . . . . . .
. . . . .
. . . . . . .
. . . . .
. . . . . . .
. . . . .
. . . . . . .
. . . . .
. . . . . . .
. . . . .
. . . . . . .
. . . . .
. . . . . . .
. . . . .
. . . . . . .
. . . . .
. . . . . . .
. . . . .
. . . . . . .
. . . . .
. . . . . . .
. . . . .
. . . . . . .
. . . . .
. . . . . . .
. . . . .
. . . . . . .
. . . . .
. . . . . . .
. . . . .
. . . . . . .
. . . . .
. . . . . . .
. . . . . . .
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
1
Projectopdracht
1.1
omgeving
De linkbuidling tool is een online bereikbare tool. Deze tool is bovenop een door Insyde ontwikkelde kernel gebouwd. Deze kernel wordt door insyde gebruikt voor alle websites die het bedrijf maakt. Een onderdeel hiervan is het content management system Webmagi¨er. De tool maakt gebruik van de programmeertalen php, javascript, html en css.
1.2
doelstelling
Het doel van de opdracht is het opzetten van een volledig functionerende structuur voor betaalde accounts. Daarnaast is het doel van de oprdacht ook om voldoende functionaliteit te leveren die het betalen voor een account aantrekkelijk maken. De linkbuiding tool is ontworpen om de taken van de SEO specialist binnen insyde te helpen bij het uitvoeren van zijn taken. Daarnaast wil Insyde met de tool meer naamsbekendheid verwerven en wil zij de tool gebruiken als bron van inkomsten.
1.3
opdrachtformulering
De linkbuilding tool moet worden uitgebreid met een betaalsysteem waarmee betaalde accounts kunnen worden aangemaakt. Daarnaast moet een betaald account meerwaarde hebben voor de klant. Dit moet gebeuren door middel van functionaliteiten die exclusief zijn voor deze gebruikersgroep. Onderdeel van de opdracht is een onderzoek naar de wensen van de huidige gebruikers. De gekozen extra functionaliteiten moeten vervolgens worden ge¨ımplementeerd.
1.4
deliverables
Opgeleverd moet worden: • rapport gebruikersonderzoek • implementatie betaalstructuur • implementatie extra features • documentatie niet ge¨ımplementeerde extra features
1.5
eisen en beperkingen
Er moet een gebruikersonderzoek worden gedaan. De resultaten hiervan moeten worden samengevat in een overzichtelijk rapport. Het systeem moet gebouwd worden op de bestaande kernel. Een beperking hiervan is dat de kernel tot php 4 volledig ondersteund. Derhalve kan nog niet gebruik worden gemaakt van met name een aantal object ge¨orienteerde functies. Een eis aan de betaalstructuur is dat deze geen overmatige administratie met zich meebrengt. De tool moet zelf kunnen herkennen en verifi¨eren of een account betaald is of niet. Het functioneel ontwerp moet volledig zijn en voorzien in de implementatie van het geheel. Het moet voor Insyde mogelijk zijn om op basis van het ontwerp het systeem zelf te implementeren, mocht het niet lukken om het geheel te schrijven. Dit voor zowel de extra features als de intergratie van de betaalstructuur. Voor het gehele project zijn 13 weken van 4 dagen per week gereserveerd. De planning van het project moet worden bijgehouden in het programma TOPdesk.
1
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
2 2.1
Aanpak voorbereiding
De linkbuilding tool is gebouwd op een bestaande kernel. Derhalve zullen de stagelopers kennis moeten hebben van de werking van dit systeem. Daarnaast moet uiteraard bekend zijn wat de huidige werking is van de linkbuilding tool en het cms webmagi¨er.
2.2
onderzoek
Er moet kennis verworven worden omtrent de intergratie van betaalstructuren in de tool. Opties die hiervoor onderzocht moeten worden zijn onder andere iDeal, PayPal, Credit card en facturering. Deze kennis zal voornamelijk worden verworven door middel van literatuuronderzoek. Daarnaast moet worden onderzocht wat de wensen van de gebruikers is ten opzichte van nieuwe features voor de tool. Hiervoor zal onder andere een vragenlijst worden voorgelegd aan de huidige gebruikers van het systeem. Deze zal moeten worden verwerkt tot een lijst met mogelijke features. Tevens zal er gekeken worden naar concurrerende systemen en over welke features deze beschikken. Daarnaast moet gekeken worden of en hoe deze systemen omgaan met betaalde accounts. Tot slot wordt er onderzoek gedaan naar de intergratie van een bugtracking systeem. Hoewel Insyde een goed activiteiten-/plannings-systeem heeft (TOPdesk), ontbreekt hierin een directe koppeling met SVN. Dergelijke functionaliteit kan het vinden van bugs aanzienlijk versnellen doordat revisie direct onder elkaar te zien zijn inclusief de wijzigingen. Bovendien kunnen verschillen tussen revisies makkelijker bekeken worden. Verder kunnen in een dergelijk systeem makkelijk zogenaamde issues aangemaakt worden. Hier kunnen bugs worden opgenomen die alle ontwikkelaars kunnen zien. Hiervan kunnen de ontwikkelaars vervolgens weer activiteiten maken in TOPdesk.
2.3
ontwikkeling
Ter ontwikkeling van het systeem zal eerst een verzameling functionele en niet functionele eisen moeten worden samengesteld. Vervolgens zullen voor zowel de betaalstructuur als de extra features use cases moeten worden uitgewerkt. Daarnaast is het wenselijk dat hiervan ook scenario’s worden opgesteld. Van de lijst mogelijke features zal ook een prioritisering worden gemaakt. Dit zal geschieden middels een variant op de MoSCoW methode. Er is gekozen voor een systeem waarin een feature de prioriteit “hoog”, “middel¨of “laag”kan krijgen. Features met hoge prioriteit moeten sowieso worden ge¨ımplementeerd tijdens de stage. Mochten deze voor het eind van de stage naar behoren ge¨ımplementeerd zijn, kunnen de features met prioriteit middel worden opgepakt. De features met lage prioriteit zullen hoogst waarschijnlijk niet tijdens de stage worden voltooid.
2
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
3 3.1
projectinrichting en voorwaarden Projectinrichting
De stagelopers (Cees-Willem Hofstede en Lennaert van den Brink) zijn beiden student aan de TU Delft. Zij doen deze opdracht als onderdeel van hun bachelor eindproject. Zij zijn verantwoordelijk voor de uitvoering van de opdracht. Hieronder vallen zowel het onderzoek naar features als de implementatie hiervan en van de betaal structuur. De stagebegeleider vanuit Insyde (Bert van Heerde) is verantwoordelijk voor de begeleiding van de studenten in hun activiteiten bij het bedrijf. Tevens is hij eindverantwoordelijke voor de gemaakte keuzes ten opzichte van de te implementeren oplossing. Daarnaast helpt hij mee in de uiteindelijke beoordeling van de stage. De begeleidend docent (Peter van Nieuwenhuizen) is verantwoordelijk voor het geven van richtlijnen ten opzichte van de aanpak en uitvoering van de opdracht. Tevens is hij beoordelend docent. Rapportage zal geschieden door middel van een stageverslag aan het eind van de opdracht. Dit verslag zal tevens worden gepresenteerd aan de begeleiders. Tevens zullen tussendoor mondelinge afspraken gemaakt worden tussen de stagelopers en hun begeleiders.
3.2
Randvoorwaarden
De stage zal duren van 19 april 2010 tot 8 juli 2010. Gedurende deze periode zullen beide stagelopers 4 dagen per week van 09:30 tot 18:00 werkzaam zijn op het kantoor van Insyde. Hier zullen zij een eigen werkplek ter beschikking hebben. De benodigde apparatuur en programmatuur zullen door Insyde worden geleverd.
3
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
4 4.1
Planning Activiteitenplan
fase \week Ori¨ entatie Analyse Ontwerp Implementatie Testen Rapportage
16
lage intensiteit
4.2
17
18
19
20
21
22
23
gemiddelde intensiteit
24
25
26
27
28
29
30
31
32
33
hoge intensiteit
Resource plan
Er zal elke twee weken een overleg zijn met drs. Peter van Nieuwenhuizen over de voortgang van de stage. Verder zal elke week een overleg plaatsvinden tussen Bert van Heerden en de stagelopers. Waar nodig zullen afspraken gemaakt kunnen worden met andere werknemers van Insyde.
4
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
5 5.1
Kwaliteitsborging Ontwikkelmethode
In feite bestaat de programmeeropdracht uit twee grote deeltaken: het betaalsysteem en nieuwe features. Gezien de aard van deze twee elementen is ervoor gekozen om gebruik te maken van Agile Programming. Door per nieuwe feature opnieuw het ontwerp proces door te lopen wordt ervoor gezorgd dat aan het eind van het project zo veel mogelijk belangrijke features ontwikkeld zijn. Dit betekent ook dat onderlinge communicatie vooral face-to-face zal verlopen en dat daar dus relatief weinig documentatie van zal komen. Wel zal uiteraard alle code goed gedocumenteerd moeten worden, vooral omdat het product na het project door ontwikkeld moet kunnen worden. Voor het betaalsysteem onderdeel is besloten een specifieke Agile variant, eXtreme Programming (XP) toe te passen. Hiervoor is gekozen omdat ten eerste het betaalsysteem de grootste succesfactor van het project is. Daarnaast is een dergelijk systeem zeer gevoelig en kwetsbaar. Door principes als pairwise programming en test-driven development te introduceren wordt de kans op fouten minimaal gehouden. Tot slot is dit een mooie gelegenheid om een dergelijke methode uit te proberen en te evalueren.
5.2
Testplan
5.3
Overige maatregelen
5.3.1
SVN
Bij de implementatie van de code zal er gebruik worden gemaakt van een versie beheer systeem middels SVN. Dit zodat goed bij te houden is welke wijzigingen er worden gemaakt en zodat er waar nodig gewaarschuwd wordt wanneer onafhankelijk de zelfde code gewijzigd is.
5.3.2
TOPdesk
Bij de planning van het project wordt gebruik gemaakt van het programma TOPdesk. In dit programma kunnen per fase taken gedefini¨eerd worden en deze kunnen aan een persoon worden toegewezen. 5.3.3
Trac
TOPdesk ontbeert een bugtrackingsysteem dat ge¨ıntegreerd is met svn. Het is dus wenselijk om hiervoor een bugtrackingsysteem te introduceren. Dit systeem moet in elk geval ge¨ıntegreerd kunnen worden met SVN. Daarnaast is het aanmaken en bekijken van issues een vereiste. Na een vergelijking van verschillende bugtrackingsystemen [?] blijkt Trac [?] het best op deze wensen aan te sluiten. Echter, wat later bleek is dat trac geen verbinding kan maken met externde svn servers. Aangezien de svn server ge¨ınstalleerd staat op een zeer verouderde ubuntu installatie blijkt het zeer lastig om aan alle depenencies te voldoen. Daarnaast werd aangegeven vanuit Insyde dat er het liefst zo min mogelijk wordt ge¨ınstalleerd op die server. Dit heeft ons doen besluiten voorlopig trac links te laten liggen. 5.3.4
PHPdoc
Om ervoor te zorgen dat de code goed gedocumenteerd wordt overgedragen wordt er gebruik gemaakt van PHPdoc. PHPdoc is een manier van commentaar schrijven bij de code die automatisch geparsed kan worden. Hierdoor is het zeer eenvoudig om volledige documentatie van de code te genereren. Een ander voordeel van deze methode is dat een IDE, zoals bijvoorbeeld Eclipse, dit commentaar uitleest en op basis daarvan suggesties kan doen aan een programmeur die een dergelijk gedocumenteerde functie aan wil roepen.
5
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
C
Design Document
67
L. v.d. Brink C.W. Hofstede
Technische Universiteit Delft Faculteit EWI stageverslag BSc-project IN3405
Design Document Auteurs: Lennaert van den Brink #1310429
Begeleidend docent: Peter van Nieuwenhuizen Co¨ ordinator: Bert van Heerde
Cees-Willem Hofstede #1272012
19 augustus 2010
BSc project LINKBUILDINGTOOL
Samenvatting In dit document zijn de eisen aan de nieuwe versie van Linkbuildingtool vastgelegd. Opgenomen zijn de functionele eisen van de nieuwe features en betaalsystemen, niet functionele eisen en pseudo requirements. Daarnaast zijn functionele verzoeken opgenomen. Tot slot zijn een aantal modellen opgenomen van het te bouwen systeem.
i
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
Verklarende woordenlijst Hieronder volgt een overzicht van de in dit document gebruikte termen, afkortingen en hun verklaring. CMS Content Management System, een systeem waarmee de inhoud van een ander systeem (in dit geval een website) kan worden beheerd. CSE Google Custom Search Engine, een persoonlijke zoekmachine die gebruik maakt van de zoektechnieken van google. De beheerder van een CSE kan aangeven waar de CSE wel en niet in zoekt. LBT Linkbuildingtool, de tool waarvoor ontwikkeld wordt. LMT Link Management Tool, het gedeelte van de LBT waarin de gebruiker links kan beheren. PHP Hypertext Preprocessor, scripttaal origineel ontworpen voor het maken van dynamische websites. Tegenwoordig is PHP uitgegroeid to een volwaardige programmeertaal die ook voor andere toepassingen (zoals het maken desktopapplicaties) gebruikt wordt. SEO Search Engine Optimization, het proces van het verbeteren van het volume van kwaliteitsverkeer naar een website of onderdeel ervan via zoekmachines. SQL Structured Query Language, database taal om data te beheren in relationele databases. URL Uniform Resource Locator, het adres van een website. PSP Een Payment Service Provider, nodig om online betalingen te kunnen verwerken.
ii
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
Inhoudsopgave Samenvatting
i
Verklarende woordenlijst
ii
1 Introductie
1
2 Requirements 2.1 Functionele eisen betalingssystemen 2.2 Functionele eisen gratis versie . . . . 2.2.1 Custom Search Engines . . . 2.2.2 Searchoperators . . . . . . . . 2.2.3 Keywords . . . . . . . . . . . 2.3 Functionele eisen pro versie . . . . . 2.3.1 Meerdere projecten . . . . . . 2.3.2 Log in varianten . . . . . . . 2.3.3 Importeren / Exporteren . . 2.3.4 Rapportagemodule . . . . . . 2.3.5 Meerdere link beschrijvingen 2.3.6 Email template . . . . . . . . 2.3.7 Autofill forms . . . . . . . . . 2.3.8 Keyword ranking . . . . . . . 2.3.9 Onderlinge communicatie . . 2.3.10 URL score systeem . . . . . . 2.3.11 Zoekfunctie LMT . . . . . . . 2.3.12 Common Backlinks . . . . . . 2.3.13 Article directory . . . . . . . 2.3.14 Backlink Alert . . . . . . . . 2.4 Functionele eisen enterprise versie . . 2.4.1 Rapportagemodule . . . . . . 2.4.2 Log in varianten . . . . . . . 2.4.3 Tijdregistratie . . . . . . . . 2.4.4 Toolbar . . . . . . . . . . . . 2.5 Niet-functionele eisen . . . . . . . . . 2.6 Pseudo requirements . . . . . . . . . 2.7 Functionele verzoeken . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
2 2 2 3 3 3 4 4 4 4 4 5 5 5 5 5 6 6 6 6 6 7 7 7 7 7 7 8 8
3 Systeem Modellen 3.1 Use case models . . . . . . . . . . . 3.1.1 Betalingen PayPal . . . . . 3.1.2 Betaling Creditcard Direct 3.1.3 Exporteren .CSV bestand . 3.1.4 Importeren .CSV bestand . 3.1.5 Keywords . . . . . . . . . . 3.2 Sequence diagram . . . . . . . . . . 3.3 Interface model . . . . . . . . . . . 3.4 Object model . . . . . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
9 9 9 10 10 11 12 13 13 13
. . . . . . . . .
iii
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
1
Introductie
In dit document wordt een overzicht gegeven van de eisen aan het nieuwe systeem. In overleg met Insyde is een aantal features opgesteld die interessant zijn voor de Linkbuilding tool. In hoofdstuk 2 is een omschrijving per feature van Insyde vertaald in puntsgewijze eisen. Daarnaast is per feature aangegeven welke prioriteit deze feature heeft. Tot slot zijn ook functionele verzoeken, pseudo requirements en niet-functionele eisen verwoord in dit hoofdstuk. In hoofdstuk 3 zijn modellen te vinden van het te bouwen systeem. Ten eerste zijn hierin scenario’s opgenomen. Vervolgens worden er Use-case modellen gegeven van het gebruik van de features van LBT en het betalen van een account. Tot slot wordt er een model getoond van de voorgestelde interface.
1
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
2
Requirements
De linkbuildingtool is momenteel gratis te gebruiken. Hoewel er een gratis versie beschikbaar blijft moeten er ook onderdelen zijn die alleen beschikbaar zijn voor betalende gebruikers. Er is gekozen om onderscheid te maken tussen drie versies: Gratis versie, met de huidige functies en beperkingen ten opzichte van de betaalde versies. Pro versie, bedoelt voor professionele websitebeheerders die alleen eigen projecten beheren. Deze versie is uitgebreider dan de gratis versie, maar beperkter dan de Enterprise versie. Enterprise versie, bedoeld voor marketingbureau’s en SEO specialisten die meerdere projecten hebben en linkbuilding verzorgen voor hun eigen klanten. Dit is de meest uitgebreide versie.
De functionele eisen die beschreven staan in dit hoofdstuk zijn onderverdeeld per type versie van de linkbuildingtool.
2.1
Functionele eisen betalingssystemen
Prioriteit: hoog Het moet mogelijk zijn om recurrente betalingen aan te maken en af te rekenen. Het moet mogelijk zijn directe betalingen af te rekenen. Van betalingen moet gecontroleerd kunnen worden of de betaling succesvol is afgerond. Voor recurrente betalingen moet kunnen worden gecontroleerd wanneer de volgende betaling plaats vindt. Voor recurrente betalingen moet kunnen worden gecontroleerd wanneer de laatste betaling heeft plaatsgevonden. Recurrente betalingen moeten kunnen worden stopgezet, gepauzeerd en geactiveerd. Elke betaling moet kunnen worden gefactureerd. Het moet voor de beheerder eenvoudig zijn om nieuwe abonnementen of directe betalingen mogelijk te maken.
2.2
Functionele eisen gratis versie
Een gebruikersgroep moet beperkt kunnen worden in het aantal websites dat hij mag aanmaken. Een gebruikersgroep moet beperkt kunnen worden in het aantal links dat hij in totaal mag aanmaken. Als het abonnement van een gebruiker verloopt moet deze bevroren worden. De gebruiker mag zijn project nog wel inzien, maar hij mag geen wijzigingen meer aanbrengen. Er moet een widget komen van de CSE functionaliteit van de tool, zodat gebruikers deze op hun eigen website (of bijvoorbeeld iGoogle pagina) kunnen integreren. Bij de zoekresultaten wordt per link backlink data getoond van Yahoo! Site Explorer, Open Site Explorer, Linkdiagnostics en Majestic SEO. Hier moeten MozRank en PageRank aan toegevoegd worden. De gebruiker kan kiezen of deze data wordt getoond of niet door middel van het aanvinken van een keuze vakje onder de zoekbox. Een gebruiker moet de mogelijkheid krijgen een project te verwijderen.
2
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
2.2.1
Custom Search Engines
Prioriteit: laag Gebruikers moeten kunnen aangeven welke CSE’s zij in de tool getoond zien (zowel standaard CSE’s als user-created CSE’s). Gebruikers moeten zelf gemaakte CSE’s aan de tool kunnen toevoegen. Een gebruiker moet kunnen kiezen of de zelf gemaakte CSE openbaar is of priv´e. Gebruikers moeten een link naar hun eigen website kunnen koppelen aan de door hen gemaakte CSE’s, zodat in de lijst user created CSE’s zichtbaar is wie de CSE gemaakt heeft. Er moet een waardering komen voor user created CSE’s, gebaseerd op het aantal gebruikers dat een dergelijke CSE getoond laat worden in hun account. Een gebruiker moet CSE’s kunnen zoeken op naam, keywords en omschrijving. Er moet documentatie komen over het toevoegen van eigen CSE’s voor gebruikers. Een gebruiker moet verplicht worden de volgende gegevens over zijn LBT in te vullen: CSE code, titel, priv´e/openbaar, omschrijving, taal, keywords, maker, overig. Gebruikers moeten zelf een CSE profiel kunnen aanmaken. Een CSE profiel bevat de samenstelling van verschillende CSE’s. Dit profiel is gekoppeld aan het account. Een CSE profiel moet beperkt worden tot een maximaal aantal CSE’s. Een gebruiker moet beperkt worden tot 10 CSE profielen. Gebruikers moeten een CSE profiel kunnen kiezen waarbinnen ze zoeken.
2.2.2
Searchoperators
Prioriteit: medium In de tool moeten standaard searchoperators worden getoond. Als een gebruiker zoekt op een keyword en daarna op een dergelijke operator klikt wordt direct op die operator gezocht met het ingevoerde keyword. Een gebruiker moet zelf searchoperators kunnen kiezen die zichtbaar zijn in de tool. Gebruikers kunnen een searchoperator profiel saven en inladen. Een gebruiker moet de mogelijkheid krijgen de searchoperators te verbergen en weer te tonen. Deze instelling moet per gebruiker worden onthouden.
2.2.3
Keywords
Prioriteit: hoog Een gebruiker moet een lijstje met keywords kunnen uploaden of copy/pasten. Het lijstje bestaat uit een aantal regels met op elke regel 1 keyword. De keywords moeten boven het zoekveld worden weergegeven. De gebruiker moet het lijstje kunnen wijzigen. Het lijstje keywords moet gesorteerd kunnen worden op alfabetische volgorde. Het lijstje keywords moet met 1 knop gewist kunnen worden.
3
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
Wanneer op een keyword uit het lijstje geklikt wordt, zoekt de tool gelijk op het woord. Er hoeft dus niet op enter gedrukt te worden. Het woord verschijnt in het zoekvak. Er moet door de lijst gelopen kunnen worden door middel van een knop volgende en een knop vorige. De keyword functionaliteit moet door de gebruiker kunnen worden verborgen of getoond. De laatste instelling moet worden onthouden voor het account.
2.3 2.3.1
Functionele eisen pro versie Meerdere projecten
Prioriteit: medium een gebruiker krijgt de mogelijkheid meer dan 1 project aan te maken
2.3.2
Log in varianten
Prioriteit: hoog Er moeten meerdere logins aangemaakt kunnen worden per account. Voor een pro account zijn dit alleen client accounts. Een client heeft alleen het recht om door de administrator gekozen projecten te bekijken.
2.3.3
Importeren / Exporteren
Prioriteit: hoog Een gebruiker moet de mogelijkheid krijgen om links uit de LMT te downloaden in .csv of .xls formaat. De export kan alle links van een project bevatten, maar ook een subcategorie (aan te melden, aangemeld, geplaatst, geweigerd) Een gebruiker moet de mogelijkheid krijgen om links te importeren vanuit een .csv of .xls bestand. Vanaf de site moet een template te downloaden zijn voor het cre¨eren van een upload bestand. De gebruiker hoeft hierin alleen zijn links te plakken.
2.3.4
Rapportagemodule
Prioriteit: medium Gebruikers kunnen door de linkbuildingtool rapporten laten genereren. De gebruiker kan zelf headers en footers uploaden (afmetingen staan vast). De gebruiker kan aangeven van welke website welke categorie¨en hij wil weergeven (aan te melden, aangemeld, geplaatst, geweigerd). De gebruiker kan op de laatste pagina een conclusie, aanbeveling of opmerking opnemen. Van het rapport moet een pdf gemaakt kunnen worden. Het rapport moet per email verzonden kunnen worden. De rapportage en verzending kan volgens planning worden uitgevoerd. Het moet mogelijk zijn een rapport opnieuw te genereren met de zelfde instellingen.
4
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
2.3.5
Meerdere link beschrijvingen
Prioriteit: hoog Het moet voor een gebruiker mogelijk zijn om meerdere linkomschrijvingen voor zijn site op te slaan. Deze feature moet duidelijk aangeven uit hoeveel karakters en woorden de omschrijvingen bestaan, omdat verschillende sites hier verschillende maxima voor hanteren.
2.3.6
Email template
Prioriteit: hoog Het moet mogelijk zijn om vanuit de LMT een mail te sturen naar een webmaster met het verzoek een link naar de huidige site op te nemen. Het mail template moet zo veel mogelijk informatie uit het linkregistratieformulier halen. Per project kunnen meerdere templates opgeslagen worden. De gebruiker kan zelf kiezen welk van de ingevoerde linkbeschrijvingen hij wil gebruiken in het template. De gebruiker moet het mailtje uiteindelijk met zijn eigen client verzenden.
2.3.7
Autofill forms
Prioriteit: medium Een gebruiker moet vanuit de tool geautomatiseerd formulieren kunnen invullen om zijn link op bepaalde websites aan te melden. Mocht dit om technische redenen niet mogelijk zijn, moet de gebruiker door middel van een knop makkelijk de verschillende teksten kunnen kopi¨eren.
2.3.8
Keyword ranking
Prioriteit: medium Het moet mogelijk zijn vanuit de tool te controleren op welke plek in de resultaten de site zich bevindt voor een specifiek zoekwoord.
2.3.9
Onderlinge communicatie
Prioriteit: laag Wanneer de gebruiker in de zoekresultaten op een website van een andere LBT gebruiker komt, kan deze via de tool contact opnemen. De bedoeling is hiermee een shortcut te maken voor de trage offici¨ele weg. De gebruiker wordt hierop geattendeerd door middel van een icoon achter de zoekresultaten.
5
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
2.3.10
URL score systeem
Prioriteit: medium Op de URL aanmeld pagina worden zoekresultaten gewaardeerd op een schaal van 0 t/m 5. De beoordeling vindt plaats op basis van de volgende variabelen:
– Alexa Ranking – PageRank (PR 8-10 = 5; PR 5-7 = 4; PR 4 = 3; PR 2-3 = 2; PR 1 = 1; PR 0 = 0) – Aantal links op aanmeld pagina (1-25 = 5; 26-50 = 4, 51-75 = 3; 76-100 = 2; 100-250 = 1; 250+ = 0) – Type links op aanmeld pagina (harde links versus nofollow, 302 redirect of framed) – MoZrank – Yahoo! Site Explorer (aantal links van buitenaf) – Open Site Explorer (combinatie van waarderingen) De totaalscore is het gemiddelde van deze scores afgerond naar halve waarden (dit is gebruikelijk voor online beoordelingen). De score wordt getoond aan de gebruiker door middel van sterren.
2.3.11
Zoekfunctie LMT
Prioriteit: hoog Er moet binnen een project gezocht kunnen worden naar aangemelde links. Er kan gezocht worden op alle velden van een link (linktekst, url, aanmeldpagina, aangemelde URL, etc.). Links zijn opgedeeld in verschillende categorie¨en (aan te melden, aangemeld, geplaatst, afgewezen). Voor deze categorie¨en moet er een zoekfilter kunnen worden ingesteld. De gebruiker moet een tag kunnen toevoegen aan een link. Op deze tag moet ook weer gezocht kunnen worden.
2.3.12
Common Backlinks
Prioriteit: medium De tool moet van de URLs van concurrenten kunnen onderzoeken of er gedeelde links bestaan.
2.3.13
Article directory
Prioriteit: laag Er moet een directory komen met artikelen over linkbuilding die de gebruiker kan lezen. Het moet voor Insyde eenvoudig zijn nieuwe artikelen toe te voegen.
2.3.14
Backlink Alert
Prioriteit: medium Gebruikers kunnen voor een link een backlink alert instellen. Als de website wijzigt krijgt de gebruiker hiervan een email. De gebruiker kan zelf instellen hoe vaak de gekozen website gecheckt wordt. De kleinste periode is tweewekelijks om server belasting te voorkomen.
6
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
2.4
Functionele eisen enterprise versie
Enterprise gebruikers moeten de mogelijkheid krijgen een project te archiveren. Het wordt niet weggegooid, maar gesloten en ontoegankelijk tot heropenen.
2.4.1
Rapportagemodule
Een enterprise gebruiker kan ervoor kiezen om tijdregistratie op te nemen in het rapport.
2.4.2
Log in varianten
Prioriteit: hoog Er moeten meerdere logins aangemaakt kunnen worden per account. Voor een enterprise account zijn dit client accounts en administrator accounts. Een client heeft alleen het recht om door de administrator gekozen projecten te bekijken, een administrator kan ook wijzigingen aanbrengen.
2.4.3
Tijdregistratie
Prioriteit: medium Gebruikers krijgen de mogelijkheid om bij een project te registreren hoelang ze eraan gewerkt hebben. De tijdregistratie moet gekoppeld worden aan de user, zodat meerdere medewerkers aan een zelfde project tijd kunnen registreren voor die website. Per website moet voor een aantal standaard categorie¨en bijgehouden kunnen worden hoeveel tijd hieraan wordt besteed. Deze categorie¨en zijn:
– Link research – Keyword research – Aanmelden links – Correspondentie met webmasters De gebruiker kan zelf categorie¨en toevoegen. De tijdregistratie kan worden toegevoegd aan de rapportage van de rapportagemodule.
2.4.4
Toolbar
Prioriteit: laag Er moet een toolbar komen waarmee een gebruiker de website die hij bezoekt direct kan opslaan als mogelijke linkpartner.
2.5
Niet-functionele eisen
Het systeem wordt gebouwd met de Insyde kernel als basis.Onderdeel hiervan is het webmagi¨er CMS. De functies die worden gemaakt zijn geplaatst in logisch gekozen modules. De functies (met name het betaalsysteem) moeten zo zijn opgezet dat hergebruik makkelijk is. De geschreven code moet helder en leesbaar zijn of beter gezegd, de code moet goed onderhoudbaar zijn en er moet worden geanticipeerd op eventuele latere toevoegingen en/of wijzigingen.
7
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
De snelheid van de internetverbinding en de capaciteit van de server buiten beschouwing latend, moet de reactietijd van alle pagina’s binnen enkele seconden liggen (meestal ruim onder een seconde) [?]. De tool dient te werken in alle grote browsers (IE7+, Firefox 3+, opera 9.95+, chrome 4+, safari 4+). Alle functies van de tool moeten bruikbaar zijn als de gebruiker javascript en/of gebruik van cookies uit heeft staan. De HTML die wordt gegenereerd moet valideren volgens de w3c richtlijnen [?]. De HTML die wordt gegenereerd moet zoveel mogelijk voldoen aan de Nederlandse webrichtlijnen [?]. De tool draait op een webserver van Insyde.
2.6
Pseudo requirements
De kernel van Insyde is zo gebouwd dat zowel PHP4 als PHP5 (tot PHP5.3) ondersteund zijn. Dit betekent dat als er iets aan de kernel moet worden toegevoegd of gewijzigd dat er gezorgd moet worden dat deze compatibiliteit gewaarborgd blijft. De tool zelf draait op een PHP5 server. Dit betekent dat code die in het project zelf staat PHP5 moet ondersteunen, maar compatibiliteit met PHP4 is hier niet vereist. Omdat in de lokale ontwikkelomgeving gebruik wordt gemaakt van MySQL 4, moet hier rekening mee worden gehouden. Dit betekent onder meer dat in SQL-queries geen gebruik gemaakt kan worden van views.
2.7
Functionele verzoeken
Als een abonnement van een gebruiker verlopen is blijft het eerst gemaakte project van die gebruiker actief. Hij kan hierin wel wijzigingen aanbrengen. Overige projecten worden bevroren. Betaalde accounts moeten van de server voorrang krijgen op niet betaalde accounts om te voorkomen dat betalende klanten de dupe worden van gratis gebruikers. Een cache moet ingebouwd worden om snelheid van de tool te behouden bij grote bewerkingen. (Bijvoorbeeld bij zoekresultaten met meerdere pagina’s de eerste pagina cachen zodra naar de volgende gegaan wordt, zodat deze niet opnieuw gegenereerd moet worden als de gebruiker naar de eerste pagina terug gaat).
8
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
3
Systeem Modellen
3.1 3.1.1
Use case models Betalingen PayPal
Actor: Klant Pro versie. Precondities: De klant heeft een gratis account en is daarop ingelogd. Flow of Events: 1. De gebruiker gaat naar zijn dashboard. 2. De gebruiker klikt op “account informatie” 3. De gebruiker klikt op “bestellen” 4. De gebruiker kiest voor de Pro versie 5. De gebruiker krijgt een pagina te zien met een overzicht van de kosten en baten van de Pro versie. Hij klikt op de knop afrekenen. 6. De gebruiker kiest voor “PayPal” 7. De gebruiker wordt doorverwezen naar de PayPal website. De LBT stuurt met setExpressCheckout de gegevens van de betaling naar PayPal. 8. De gebruiker logt in en handelt de betaling via PayPal af. Paypal verwijst de gebruiker terug naar de website van LBT en geeft de betaalgegevens mee. 9. De LBT site vraagt de gebruikersinformatie op met de methode getExpressCheckoutDetails. 10. De gebruiker controleert de gegevens en bevestigt de betaling. 11. Met de verkregen gegevens gaat LBT over tot het innen van de eerste termijn met de methode doExpressCheckout. 12. Na het afrekenen van de eerste termijn instrueert LBT met de methode createRecurringPaymentsProfile dat de gebruiker een maandelijks abonnement heeft afgesloten. 13. De gebruiker krijgt te zien dat de betaling gelukt is. Hij heeft nu toegang tot de betaalde features van de Pro versie. 14. De gebruiker gaat naar zijn dashboard. 15. De gebruiker klikt op “account informatie”. De LBT vraagt met behulp van de methode getRecurringPaymentsProfileDetails op wanneer de laatste betaling is gedaan en wanneer de volgende betaling plaats zal vinden. De gebruiker kan deze gegevens op de pagina terug zien. 16. De gebruiker besluit dat hij zijn abonnement wil stopzetten. Hij klikt op “annuleer abonnement”. 17. De LBT vraagt of de gebruiker dit zeker weet. De gebruiker bevestigt. 18. De LBT laat met de methode manageRecurringPaymentsProfileStatus aan PayPal weten dat het abonnement is stopgezet. 19. De gebruiker kan nog tot het eind van zijn lopende betaalperiode gebruik maken van de Pro features. 20. Aan het eind van de lopende betaalperiode wordt het account van de gebruiker bevroren. Hij kan nog wel zijn projecten bekijken, maar hij kan deze niet meer wijzigen.
9
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
3.1.2
Betaling Creditcard Direct
Actor: Klant Enterprise versie. Precondities: De klant heeft een gratis account en is daarop ingelogd. Flow of Events: 1. De gebruiker gaat naar zijn dashboard. 2. De gebruiker klikt op “account informatie” 3. De gebruiker klikt op “bestellen” 4. De gebruiker kiest voor de Enterprise 5. De gebruiker kiest voor “Creditcard” 6. De gebruiker vult op de volgende pagina de benodigde gegevens in en maakt een fout in zijn creditcard nummer 7. De gebruiker kiest voor “reken af”. De creditcard gegevens worden gecontroleerd bij de PSP. Een waarschuwing wordt getoond vanwege het incorrecte nummer 8. De gebruiker verbeterd het nummer en kiest opnieuw voor “reken af” 9. LBT stuurt de gegevens naar de PSP. 10. De PSP bevestigd de gegevens en laat dit aan LBT weten. 11. LBT toont alle gegevens en vraagt de gebruiker om een laatste bevestiging. 12. De gebruiker controleert de gegevens en bevestigt de betaling. 13. De LBT stuurt een afreken commando naar de PSP. Deze zet de betaling door en geeft een bevestiging terug. 14. De gebruiker krijgt te zien dat de betaling gelukt is. Hij heeft nu toegang tot de betaalde features van de Enterprise versie. 3.1.3
Exporteren .CSV bestand
Actor: Gebruiker Precondities: De gebruiker heeft een pro of enterprise account is daarop ingelogd. Daarnaast heeft de gebruiker een website aangemaakt in de linkbuildingtool Flow of Events: 1. De gebruiker gaat de Link Management Tool 2. Hij kiest “exporteren” 3. In de popup die verschijnt kiest de gebruiker welke websites hij wil exporteren. 4. Vervolgens kiest hij welke categori¨en er meegenomen moeten worden in de export. 5. Daarna selecteert hij welke gegevens (headers) hij wil exporteren. 6. Door middel van slepen kiest hij in welke volgorde hij de headers wil hebben. 7. Tot slot voert de gebruiker een bestandsnaam naar keuze in. 8. De gebruiker klikt op “export”. 9. De LBT stuurt nu naar de gebruiker het CSV bestand. De gebruiker kiest voor “openen” of “opslaan”. 10
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
10. De gebruiker is tevreden met zijn export en sluit het scherm af. LBT onthoudt de instellingen van de gebruiker en slaat deze op. 11. De gebruiker wil in een later stadium nog een keer zijn gegevens exporteren. Hij opent wederom het export scherm. 12. In het scherm staan de instellingen het zelfde als dat ze stonden bij de laatste keer dat er werd ge-exporteerd. De gebruiker hoeft slechts op “export” te klikken. 3.1.4
Importeren .CSV bestand
Actor: Gebruiker Precondities: De gebruiker heeft een pro of enterprise account is daarop ingelogd. Daarnaast heeft de gebruiker een .csv bestand dat hij wil uploaden Flow of Events: 1. De gebruiker gaat de Link Management Tool. 2. Hij kiest “importeren”. 3. In de popup die verschijnt geeft de gebruiker aan waar het bestand staat dat hij wil uploaden. 4. Daarna geeft hij aan welk scheidingsteken in zijn bestand gehanteerd wordt en klikt op “volgende”. 5. De LBT leest het bestand in en geeft een tabel met de gegevens erin weer aan de gebruiker. 6. De gebruiker ziet dat in zijn .csv bestand nog headers stonden. Hij klikt op het kruisje voor de rij om deze te verwijderen. 7. De gebruiker geeft per kolom aan welke header erboven hoort. 8. Zodra de gebruiker een header kiest met vereiste invoer controleert de LBT de hele kolom op geldigheid. Kolommen met ongeldige waardes worden rood gemarkeerd. 9. De gebruiker ziet dat hij een aantal lege velden heeft in de kolom website. Hij kiest voor de bulkactie “wijzig”. 10. Vervolgens kiest hij voor de optie “rijen waar leeg” en “in kolom website”. 11. Hij voert de naam van de juiste website in en drukt op volgende. De LBT vult in alle lege velden in de juiste kolom deze waarde in en vertelt de gebruiker hoeveel rijen er gewijzigd zijn. 12. De gebruiker bedenkt zich en drukt op “ongedaan maken”. De rijen worden weer leeg gemaakt. 13. De gebruiker drukt op “links opslaan”. De velden kloppen nog steeds niet en de tool constateert dit. 14. In de waarschuwing kiest de gebruiker voor “selecteer rijen met conflict” 15. Hij kiest bij bulkacties voor “verwijder” en “geselecteerde rijen”. 16. Hij drukt op “uitvoeren”. De tool verwijderd alle rijen met conflicten. 17. De gebruiker drukt nogmaals op “links opslaan”.
11
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
3.1.5
Keywords
Actor: Gebruiker Precondities: De gebruiker heeft een pro of enterprise account is daarop ingelogd. Daarnaast heeft de gebruiker een lijstje met keywords verkregen uit zijn keyword onderzoek Flow of Events: 1. De gebruiker gaat naar zijn dashboard. 2. De gebruiker klikt op “keywords bewerken”. 3. In de popup leest de gebruiker dat hij op elke regel 1 keyword in kan vullen. Het lijstje van de gebruiker voldoet hieraan en door middel van knippen/plakken zet hij het lijstje in LBT. 4. De gebruiker wil zijn keywords schematisch aflopen, dus kiest hij voor “sorteer op alfabet”. 5. De gebruiker is tevreden met zijn lijstje en kiest voor “opslaan en sluiten”. 6. De gebruiker kiest voor “links zoeken”. Boven de zoekbalk bevindt zich een dropdown box en de knoppen “vorige” en “volgende”. 7. De gebruiker kiest voor volgende. Het volgende woord uit de lijst wordt direct ingevuld en er wordt op dit keyword gezocht. 8. De gebruiker besluit dat hij een woord halverwege de lijst wil hebben. Hij kiest dit woord uit de dropdown box. Er wordt gelijk op dit woord gezocht en het woord is direct ingevuld. 9. De gebruiker wil toch de functionaliteit niet gebruiken. Hij kiest voor “verberg keywords”. De keyword toolbar wordt verborgen, zodat het scherm wat rustiger oogt. 10. Door op “toon keywords” te klikken komt de balk weer tevoorschijn.
12
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
3.2
Sequence diagram
Figuur 1: Sequence diagram for performing a recurring payment
3.3
Interface model
3.4
Object model
13
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
class: PayPalService -account: string -api environment:string -api password:string -api signature: String -api username: String -doLog(messageType:string, message:string, decode:boolean): void -doLogEmptyResultError(methodName:string): void -getIniFilePath(): void -getTokenFromRequest(): string -initSettings(): void -manageRecurringPaymentsProfile(profileId:string, action:string [, note:string]): string[ ] -postNVPRequest(methodName:string, nvpStr:string [, extraOptions:String[ ] ]): String[ ] +cancelRecurringPaymentsProfile(profileID:int [, note:string]): string[ ] +createRecurringPaymentsProfile(token:string, amount:float, currency:string, period:string, frequency:int, description:string [,initAmount:float, startDate:string, extraOptions:string[ ] ]): string[ ] +doExpressCheckoutPayment(token:string, payerID: string, amount:float, currency:string, type:string, description:string [, extraOptions:string[ ] ]): string [ ] +getExpressCheckoutDetails(token:string): string[ ] +getRecurringPaymentsProfileDetails(profileID:string): string[ ] +getTokenFromRequest(): string +reactivateRecurringPaymentsProfile(profileID:int [, note:string]): string[ ] redirectToPayPal(token:string): void +setExpressCheckout(amount:float, currency:string, type:string, description:string, returnURL:string, cancelURL:string [, extraOptions:string[ ] ]): string[ ] +setExpressCheckoutRecurring(amount:float, currency:string, type:string, description:string, returnURL:string, cancelURL:string [, extraOptions:string[ ] ]): string[ ] +suspendRecurringPaymentsProfile(profileID:int [, note:string]): string[ ]
class: DefaultPaymentModule -displayError(parsedResponse:string[ ]): void +doPayment(): void +doPaypalPayment(payment:DefaultPaymentModuleItem): void +startPaypalPayment(paypelService:PayPalService, payment:DefaultPaymentModuleItem): void +finalizePaypalPayment(paypelService:PayPalService, payment:DefaultPaymentModuleItem): void
class: DefaultPaymentModuleItem +amount: float +currency: string +paymentoption: string +paymenthandler: string +description: string +returnurl: string +cancelurl: string +finalizeurl: string +token: string +period: string +frequency: int +startdate: string +paymenttype: string +extraoptions: array -setReturnURL(contentID:int): void -setCancelURL(contentID:int): void -setFinalizeURL(contentID:int): void -setExtraOptions(extraOptions: string[ ]): void +getReturnURL(): string +getCancelURL(): string +getFinalizeURL(): string +getExtraOptions(): string[ ] +getPaymentHandler(): string +getPaymentOption(): string +register(): void +unregister(): void +showconfirm(): void
class: web productmodule +countAccountsPerAbonnement(): void +getAfrekenbareAbonnementenList(): string[ ]
14
L. v.d. Brink C.W. Hofstede
BSc project LINKBUILDINGTOOL
class: web productmodule item +title: string +afrekenbaar: boolean +longdescription: string +shortdescription: string +amount:float +infoperiodefrequentie: string +period: string +frequency: int +infopermissions: string +permissions: int -protected initCMS(): string[ ] +getCMSGroupOrder(): string[ ] +hasPermission: boolean +createPaymentItem: web paymentmodulerecurringitem +isValidForAction: boolean +showAfrekenLink: void
15
L. v.d. Brink C.W. Hofstede