Background for the header
To the home page of the University of Antwerp

 

 

LORE / Teaching / SRe2LIC / Opdracht 2007

Terug naar SRe2Lic.

An English version is available HERE.

Context | Opdracht | Resultaat

Context

StatCVS is een open source software systeem dat statistieken over een module in een Concurrent Versions System repository genereert. Ook voor Subversion , een alternatief voor CVS, werd een soortgelijk software systeem opgemaakt, StatSVN genaamd.

StatSVN erft een deel features van StatCVS, maar biedt zelf ook een aantal nieuwe features aan. Een opsomming van deze features staat beschreven op de StatSVN wiki.

Naast het gebruik van een log-bestand als de standaard invoer, maakt StatSVN ook van een verbinding met de repository gebruik voor het ophalen van informatie. Deze informatie wordt in StatCVS echter opgehaald uit het log-bestand.

Opdracht

Als reengineering-team wordt jullie gevraagd om de implementatie van StatSVN en StatCVS te herstructureren zodat deze een identieke interface voor het ophalen van de gemeenschappelijke informatie implementeren.

Dit betekent dat de keuze van de informatie-bron, waaruit StatSVN en StatCVS hun informatie ophalen, een implementatie-detail wordt.

Concreet vragen we jullie om volgende activiteiten uit te voeren, en daarover te rapporteren in jullie projectverslag:


[Design recovery]

reverse engineering

  1. Breng het ontwerp van de implementatie van StatSVN en StatCVS, wat het ophalen van de gemeenschappelijke informatie betreft, in kaart. Met gemeenschappelijke informatie bedoelen we die informatie die zowel StatSVN als StatCVS ophalen, ofwel uit het log-bestand, ofwel uit de connectie met de repository. Geef hierbij duidelijk aan hoe dit ontwerp in de architectuur van StatSVN en StatCVS geplaatst is.


[Design]

design

  1. Stel een generisch ontwerp voor dat de diensten voor het ophalen van de gemeenschappelijke informatie tussen StatSVN en StatCVS beschrijft. Uit deze interface moet duidelijk zijn dat de keuze voor het gebruik van het log-bestand of de repository connectie een implementatie-detail is. Deze interface vormt meteen een functionele specificatie voor de testen. Gezien deze voor te stellen interface door zowel StatSVN als StatCVS gedeeld zal worden, kan je door het hergebruiken van de testen aantonen dat beide projecten wat dat deel betreft functioneel identiek zijn.


[Management]

management

  1. Inschatting van de effort vereist voor (i) de refactoring benoodzaakt om deze voorgestelde interface in werking te stellen; en (ii) de benodigde aanpassingen en uitbreidingen van de testen.


[Refactoring]

refactoring

  1. Refactor de huidige implementatie van StatSVN en StatCVS zodat beiden gebruik maken van de voorgestelde interface.

  2. Pas de testen van een van beide projecten aan teneinde een adequate coverage van het ophalen van de gemeenschappelijke informatie te verzekeren voor, tijdens en na het refactoren. Deze testen moet je kunnen hergebruiken voor beide projecten.


Daarvoor zullen jullie een aantal technieken moeten toepassen die in de lessenreeks zijn aangeboden. Deze zijn:

  • Analyse:
    • Duplicated Code Analysis
    • Mining Software Repositories
    • Metrics and visualization
  • Herstructurering:
    • Testing
    • Refactoring

In dit project leggen we de nadruk op een weloverwogen, systematische analyse van het voorgelegde probleem, de oplossingsruimte en de oplossing die jullie kiezen. De software reengineering sessies zijn zo opgesteld dat ze jullie op een dergelijk project voorbereiden. We stimuleren jullie om de voor- en nadelen van de technieken uit de sessies af te meten op hun bruikbaarheid in deze opdracht, en weloverwogen gebruik van te maken van de geziene analyse-technieken. Uiteraard mag je ook andere analyse-technieken toepassen

Voor het refactoring-deel leggen we sterk de nadruk op testen. Onze minimumvereisten hierbij zijn devolgende:

  • Zoek uit in welke mate de huidige aanwezige testen je feedback zullen geven op je refactoring-stappen. Kwantificeer dit.
  • Beargumenteer waarom deze testen hiervoor (in)adequaat zijn, en pas indien nodig de testen zo aan dat ze wel adequaat zijn. Wees efficiënt bij tijdsinvesteringen in testen.

Resultaat

Om aan te tonen dat je in deze opdracht geslaagd bent, zal je volgende zaken moeten kunnen aantonen:

  • Je hebt een selectie gemaakt van drie analyse-technieken (bv. analyse van duplicate code, mining repositories, metrics of visualizatie zoals gezien in de lab sessies, maar andere technieken die niet gezien zijn, zoals dynamische analyse, mogen ook), en deze drie technieken op een weloverwogen, systematische wijze toegepast. Je hebt in je verslag duidelijk aangegeven (bv. via screenshots, resultaten van analyse van de output van technieken) hoe je de resultaten van de analyse-technieken gebruikt hebt.

  • Je hebt bovenstaande 5 activiteiten (onderverdeeld in (i) Design Recovery; (ii) Design; (iii) Management en (iv) Refactoring) uitgevoerd en besproken in je projectverslag.

  • De toegepaste herstructureringen zijn gedragsbehoudend.

    • Je kan de mapping aantonen tussen elk van de klassen uit de oorspronkelijke structuur en de nieuwe structuur.
    • Het compilatie-proces verloopt foutloos.
    • De testen draaien foutloos en bewijzen concreet dat het ophalen van de gemeenschappelijke informatie tussen StatSVN en StatCVS correct verloopt.

Nota: uiteraard is het ook dit jaar mogelijk om eigen project-voorstellen in te sturen. Deze voorstellen zullen door ons worden goedgekeurd indien ze een goede oefening vormen op de reengineering-technieken die we in de lessenreeks gezien hebben. Zo is het steeds mogelijk om bv. een software-systeem dat je voor je thesis, of voor een ander vak hebt geschreven of gebruikt, te reengineeren.

 

Valid HTML 4.01! Valid CSS!

 Lab On REengineering - Antwerpen, last modified 16:19:07 11 June 2007