Week 8 - reflectie

reflectie

Maandag - sprint 2 demo - 2e poging

Vandaag dan eindelijk mijn tweede sprint demo.

In een presentatie en met behulp van een demo heb ik de nieuwe functionaliteit toegelicht. De opkomst was heel behoorlijk en ook mijn opdrachtgever Frank was er bij.

Een aantal besproken punten:

Ik heb de collega’s uitgenodigd al eens een kijkje te nemen op de test server en feedback te geven.

Dinsdag - feedback van Matt

Matt heeft me al feedback gegeven:

Het eerste punt is fijn.

Het laatste punt is een kwestie van smaak, maar de tabel vorm is wel wat overzichtelijker dan de timeline view. Aangepast dus.

Het tweede en derde was een bug… bij de ProductRelease is een Product verplicht, maar die kon je nog niet in het edit scherm specificeren. De foutmelding daarvan werd dan weer niet aan de gebruiker getoond… Hier ontstaat scope creep. Ik wil dit fixen en heb het als story toegevoegd aan de planning…

Naast de feedback van Matt ben ik toch ook gaan werken aan een backup mechanisme voor al mijn data. Een tweede story toe gevoegd.

Backup script:

path=%path%;C:\Program Files\7-Zip;

REM Compress Git repositories
7z a %date:~-4,4%-%date:~-10,2%-%date:~-7,2%_hueProductDatabase_gitRepos.7z C:\gitbucket\gb\repositories\bashopman\hueProductDatabase.git C:\gitbucket\gb\repositories\bashopman\hueProductDatabase.wiki.git

REM Compress Database dumps
7z a %date:~-4,4%-%date:~-10,2%-%date:~-7,2%_hueProductDatabase_databases.7z TestServer\hueProductDatabase.sql ProductionServer\hueProductDatabase.sql

REM Compress Jenkins Job config
7z a %date:~-4,4%-%date:~-10,2%-%date:~-7,2%_hueProductDatabase_JenkinsConfig.7z C:\Jenkins\jobs

REM Compress Jenkins Builds
7z a %date:~-4,4%-%date:~-10,2%-%date:~-7,2%_hueProductDatabase_JenkinsBuilds.7z C:\builds

REM Delete this months backup one month ago
rd /s /q \\code1\storage\LightingRD\Louvre\hueProductDatabase_backups\%date:~-7,2%\

REM Give the server time to remove the files
ping 1.0.0.1 -n 1 -w 5000 > NUL

REM Copy data to network
xcopy *.7z \\code1\storage\LightingRD\Louvre\hueProductDatabase_backups\%date:~-7,2%\

Resultaat: voor iedere dag van de maand een folder met daarin de volgende files:

backup files

Woensdag/Donderdag - foreign keys updaten is lastig!

Even toevoegen dat je een Product, SoftwareReleases en een HardwareRelease kunt selecteren voor een ProductRelease. Da’s niet zo moeilijk….

Maar, hoe koppel ik in AngularJS een select aan een javascript array met objecten, zodanig dat deze ook gepost/geput kunnen worden? Stiekum toch wat uitzoekwerk.

En, dan komt de JSON correct binnen op de server, maar hoe maak ik dan Entity Framework wijs dat ie alleen het basis object moet opslaan en niet de gerefereerde objecten (foreign keys)?

Met acties als:

db.Entry(productRelease.Product).State = EntityState.Unchanged;

alleen gaat het niet lukken. Ik moest mijn data model aanpassen:

public int ProductId { get; set; }
public virtual Product Product { get; set; }

public Nullable<int> ApplicationSoftwareReleaseId { get; set; }
public virtual SoftwareRelease ApplicationSoftwareRelease { get; set; }

De virtual properties van de ProductRelease klasse worden niet opgeslagen. Daarvoor worden de ProductId en ApplicationSoftwareReleaseId properties gebruikt. Bij het ophalen van de data, blijven de virtuele properties leeg, tenzij je ze expliciet mee ophaald met een .Include commando:

IQueryable<ProductRelease> queryResult = db.ProductReleases
    .Include(pr => pr.HardwareRelease)
    .Include(pr => pr.Product)
    .Include(pr => pr.ZigBeeBridgeSoftwareRelease)
    .Include(pr => pr.ApplicationSoftwareRelease)
    .Include(pr => pr.ReleasedInSystemRelease)
    .Include(pr => pr.MaximumSystemRelease)
    .Include(pr => pr.MinimumSystemRelease)
    .Where(pr => pr.Id == id);

Het mechanisme is me nu duidelijk en lijkt me zelfs logisch, maar voor ik zover was….

Donderdag middag/Vrijdag - uitbreiden data model

De eerste week al grotendeels voorbij en nu pas tijd voor één van de grotere stories voor deze sprint…

Ben voortvarend begonnen klassen toe te voegen volgens het nieuwe model. Compileren was geen probleem, maar de database migratie scripts crashten de hele tijd en data opvragen resulteert ook in foutmeldingen… Niet te veel tijd aan besteed en opnieuw begonnen, maar dan stap voor stap. Tussendoor testen en dan lukt het wel.

Vrijdag middag - dat gaat niet goed

Ik heb zojuist een blik geworpen op mijn burn-down chart en dat ziet er niet goed uit… Van de 22 geplande story points, zijn er slechts 2 afgerond.

Overigens zijn er wel een paar story points toegevoegd na de start van de sprint:

Kortom, met de beste wil van de wereld ga ik deze sprint niet op tijd afronden…

vrijdag 3 april 2015