language-icon Old Web
English
Sign In

IN3405: BSc-project

2011 
HWI Group heeft een websiteframework waar meerdere sites op draaien. Doordat er vele jaren door verschillende personen geschreven is aan de code is het lastig dit framework te onderhouden en verder uit te breiden. Ook is het niet rendabel om een nieuw framework uit het niets te ontwerpen. Daarom moet het huidige systeem geanalyseerd worden en aan de hand van deze analyse moet een nieuwe systeem ontworpen worden. Het feit dat de database vrijwel niet aangepast mag worden, dat het framework meerdere sites moet ondersteunen en dat het parallel met de legacy code gedraaid kan worden vormen restricties voor dit herontwerp. Het eerste onderzoek aan het systeem was een requirements analyse. Gedurende deze fase zijn de requirements van het gehele systeem op een rij gezet. Deze analyse leverde meer dan 300 requirements op. Deze werden teruggebracht tot 16 algemene use cases. Dezelfde abstrahering is ook in het prototype naar voren gekomen, waardoor de code eenvoudiger werd. Vervolgens is de architectuur ontworpen. Deze maakt gebruik van bestaande design patterns, dit om te voorkomen dat het wiel opnieuw uitgevonden wordt. Er zijn twee patterns waar de architectuur zwaar op leunt: dependency injection en het observer pattern. Het voordeel van de eerste is het verminderen van terugkerende code. De tweede pattern houdt in dat objecten zich inschrijven om geactiveerd te worden als een bepaald event plaatsvindt. Dit pattern wordt toegepast wegens de mogelijkheden om het systeem uit te kunnen breiden zonder dat er extra code afhankelijkheden voorkomen. Symfony2 en Doctrine2 vormen een zeer goede basis om een complex systeem, zoals het systeem van HWI Group, te implementeren. Meer over deze basis volgt in de sectie 'Implementatie'. Tijdens het verzamelen van de user requirements was er het vermoeden dat heel veel aspecten van het systeem hetzelfde waren. Gedurende de implementatie bleek dit vermoeden gegrond te zijn. Abstractie speelde een zeer grote rol om de grootte van de codebase naar beneden te trekken. In de meeste gevallen moet een item of een overzicht van items getoond worden. Om hierbij te helpen ontstonden de Item- en OverviewManager. Meer over de abstractie is te vinden in de sectie 'Implementatie'. Het was erg lastig om van tevoren een goede planning te maken. Een nieuw framework brengt namelijk altijd een leercurve met zich mee, en de tijdsduur van het begrijpen van het huidige systeem is ook erg lastig om van tevoren in te schatten. Daarom is er voor besloten om een soort van Agile werkwijze te hanteren. Dit houdt in dat er korte sprints waren en dat het systeem incrementeel werd uitgebreid. Er waren geen dagelijkse bijeenkomsten zoals gebruikelijk is voor een Agile werkwijze. Het voordeel van deze werkwijze is dat ongeacht hoe snel of traag de implementatie zou gaan, het prototype zou altijd werken. We geven HWI Group het advies om zich meer te richten op het documenteren van code. Een mooi moment om documentatie te typen is aan het eind van een sprint, we adviseren dus ook om dit altijd te doen. Verder adviseren we om code review uitgebreid toe te passen. Er moet dus altijd een tweede programmeur zijn die de code van een andere programmeur goedkeurt. In weinig tijd, met een goed team en goede documentatie voor de gebruikte tools is het gelukt om de afspraken aan het bedrijf na te leven. Het prototype biedt meertalige tekst, kan meerdere sites draaien en in parallel met de legacy code werken. Het prototype is dus geslaagd.
    • Correction
    • Source
    • Cite
    • Save
    • Machine Reading By IdeaReader
    0
    References
    0
    Citations
    NaN
    KQI
    []