SCRUM

Definition of Done (DoD)
Criteria waaraan … moeten voldoen
Voorbeeld DoD
- Slagende integratie testen voor service
- Testen belangrijkste paden
- Kunnen laten zien in docker (acceptatie omgeving)
- Slagende unit testen voor de backend
- Frontend werkt
- PO klikt rond en zegt “Oke”
- UI testen slagen (waar nodig)
- Slagende unit testen
- Code review gedaan
- Ook tests
- Code standaarden
- Documentatie up-to-date
- Specflow feature file
- (Swagger)
- (Gebruiksinstructies)
- Build moet groen zijn
- Sonar cube code kwaliteit
Scrumboard
Digitaal scrumboard
Is fijn als:
- Het een open source project betreft met mensen over de hele wereld
- Er teamleden op andere locaties zitten
Fysiek scrumboard
Is fijn als:
- Het team allemaal op dezelfde locatie in dezelfde kamer zit
Voorbeeld board
Kolommen:
- Storymap
- ToDo
- InProgress
- Review
- Done

- Bij de het uitvoeren van de dingen die in het rood staan, is de PO betrokken
- Er zijn andere taken die niet op de storymap staan, maar wel opgenomen worden
Hoogste prioriteit bovenaan
- Diagonale lijn door het board
- Belangrijke taken bevinden zich al in ‘Review’ of zelfs ‘Done’, terwijl onbelangrijke taken misschien nog in ‘ToDo’ staan
Sprint doelen stellen
- Een doel kan zijn: Demo geven aan mensen van finance
- Helpt bij bepaalde kleine keuzes
- Sommige functionaliteit is wat belangrijker
- Sommige schermpjes wat cooler
Keuzes maken
- Er komt een nieuwe service bij
- Architectuur bepalen
- Interactie tussen services
- Schermschetsen bepalen
Branching
Vroeger
Vaak een master branch en een development branch
- Development branch regelmatig mergen met master
- Feature branch vanaf de developer branch en weer terugmergen naar de developer branch
- Task branch baseren op de feature branch en weer terugmergen naar de feature branch

Nu
Short lived feature branches zijn nu in de mode

Voordelen
- Sneller naar productie
- Minder merge conflicten
Nadelen
- Minder stabiel
- Halve features
Continuous delivery
- Het is belangrijk om snel naar productie te kunnen bij continuous delivery
- Het is minder, maar wel belangrijk dat er minder merge conflicten optreden
Feature-toggles
If-statement in de frontend
- Als deze feature enables is, laten we een knopje zien. Anders niet
- Eventueel onderscheid maken tussen test groepen
- Te maken door:
- Config-file
- Toggle-class met booleans
GIT
Bedacht door Linus Torvalds
Basis doelen
- Samen kunnen werken
- Werk dat tegelijk gebeurt moet niet conflicteren
- Alles archiveren
Toen en nu
- Oudere versiebeheer systemen hebben 1 plek waar de waarheid is
- Tegenwoordig heeft iedereen een versie van de waarheid
- Vroeger moest er eerst gecommit worden
- Tegenwoordig wordt er eerst gecommit (lokaal) en daarna gemerged
Hoe werkt GIT?

Objects
Voor ieder object wordt er een hash berekend
- Hierdoor kan je zien of de file corrupt is
- Eerste 2 cijfers de naam van de folder
Hashing
Een hash wordt berkend over bepaalde data. Wijzigt er ook maar een letter, ontstaat er een totaal andere hash
- Bijvoorbeeld een file
- Is one-way
Blob files
- Bijvoorbeeld source code
- Ieder bestand wordt een blob
- Content van file tevoorschijn halen met
git cat-file -p filename
Trees
Verbinden de originele filename en directory met de blob hash
Commit
Bevat:
- Pointer naar een tree
- Pointer naar een vorige commit
- Author
- Degene die de pull request gedaan heeft
- Committer
- Degene die de pull request gecommit heeft
- Commit message
Refs / branches
Een branch is een pointer naar een commit
Working directory
De directory waar je in werkt
Index
Welke files in mijn working directory horen er bij welke objects
Remote tracking branch

Er is een verschil tussen een lokale branch en een remote tracking branch
- Lokaal refereert naar een remote
- Het verschil tussen de lokale en de remote tracking branch kan opgehaald worden
git fetch haalt de remote tracking branch op
git merge merget de remote tracking branch met de lokale branch
git pull doet beide bovenstaande stappen
- Geldt ook voor de master branch
Mergen
fast-forward merge
De pointer hoeft alleen geupdate te worden
Non-fast-forward merge
In featureA is ‘A’ gewijziged en in master is ‘B’ gewijzigd
- Maakt nieuwe tree aan met de gewijzigde ‘A’ en ‘B’
- Maakt een nieuwe commit aan met 2 parent commits
Conflicts
In featureA is ‘A’ gewijzigd en in master is ‘A’ ook gewijzigd
Gebruiken
git add .\Bla.txt maakt een kopie van de file naar de objects folder en maakt een blob
git commit -m "commit message" maakt een tree object aan die verwijst naar de blob(s) en maakt een commit object aan die verwijst naar het tree object
git fetch kopieert remote files en voegt objecten toe
git checkout -b bla maakt een nieuwe branch aan met de naam ‘bla’ en switcht naar deze branch. Aanmaken en switchen kan los gedaan worden:
git branch bla maakt een nieuwe branch aan met de naam ‘bla’
git checkout bla switcht naar branch ‘bla’
git commit -am 'demo' voegt alles toe en doet een commit. Let op: Voegt geen untracked files toe