Oefenopgave 1 Flashcards

1
Q

Leg uit wat er met ‘iteratie’ bedoeld wordt.

A

Een iteratie is een korte periode met vastgesteld tijd (timebox) waarin een (deel)product gepland, gemaakt, getest en opgeleverd wordt.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Beschrijf de verantwoordelijkheden van de product owner.

A

De product owner heeft de volgende verantwoordelijkheden:

  • Beheer van de product backlog: toevoegen, verwijderen, aanpassen, prioriteren van product backlog items.
  • Elk product backlog item helder omschrijven zodat het developmentteam de product backlog items begrijpt tot het niveau dat nodig is.
  • Ordenen/prioriteren van product backlog items zodat de items met de meeste toegevoegde waarde het eerst ontwikkeld worden.
  • Maximaliseren van de waarde van het te maken (eind)product.
  • Ervoor zorgen dat de product backlog zichtbaar, transparant en duidelijk is voor iedereen. Deze toont ook waar het scrumteam als volgende aan gaat werken.
  • Plannen van releases.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Leg uit wat met een zelforganiserend en multidisciplinair developmentteam bedoeld wordt.

A

Een zelforganiserend developmentteam managet zijn eigen inspanningen in plaats van te worden aangestuurd of geregisseerd door anderen. Het bepaalt zelf hoe het de product backlog moet omzetten in incrementen van mogelijk te bouwen functionaliteiten. Het team is multidisciplinair omdat het alle benodigde vaardigheden heeft om als team een product increment te kunnen maken.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Waarom moet de product owner een businessgeoriënteerd persoon zijn?

A

De rol van product owner is businessgeoriënteerd omdat hij/zij een langetermijnvisie heeft betreffende de toekomst van de organisatie. Hij/zij kan uitleggen welke rol het te ontwikkelen product binnen die visie kan spelen en hoe het businesswaarde toe kan voegen voor de organisatie.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Leg uit waarom in scrumprojecten geen projectmanagersrol voorkomt.

A

De verantwoordelijkheden voor projectmanagement zijn verdeeld over de drie rollen in scrum: de product owner, de scrum master en het developmentteam. Er is geen gecentraliseerd projectmanagement in scrum.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Wat kan een oorzaak zijn als in een burndown chart al een paar dagen een horizontale lijn zichtbaar is en hoe moet het worden opgelost?

A

Er kunnen twee oorzaken zijn:

Het product backlog item is te groot van omvang waardoor er geen vooruitgang zichtbaar is en de lijn horizontaal doorloopt. De oplossing is om het item op te delen in kleinere items.

Het betrokken teamlid of de teamleden zitten met een knelpunt in de omzetting naar programmatuur en verzuimen dit te melden en te vragen om hulp. De scrum master moet ze begeleiden in het vinden van een oplossing.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Wat gebeurt er met items die aan het einde van de sprint nog niet klaar zijn en wat als alle geplande items voortijdig klaar zijn?

A

Items die aan het einde van de sprint nog niet klaar zijn, gaan terug naar de product backlog. Zodra het team dit ziet aankomen, kunnen zij de product owner vragen welke items bij voorkeur in de huidige sprint afgerond moeten worden.

Als alle items voortijdig klaar zijn, kan een keuze gemaakt worden welke items (bovenaan in de sprint backlog) alsnog toegevoegd kunnen worden in de huidige sprint.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Waar dient product backlog refinement voor en waar bestaat het uit?

A

Product backlog refinement bestaat uit het analyseren en reviseren van de product backlog items, waarbij de nodige details worden toegevoegd, schattingen worden gemaakt en er opnieuw wordt geordend. Het dient om product backlog items klaar te hebben om in de volgende sprint uit te voeren.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Wanneer is er sprake van een escaped defect en hoe ontstaat deze?

A

Een escaped defect is een fout in de software die pas in de gebruiksfase ontdekt wordt. Deze is ontstaan door onzorgvuldig programmeren tijdens de sprint en onzorgvuldig testen voorafgaand aan de oplevering van het ontwikkelde product.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Wat is het verschil tussen een Definition of Ready en een Definition of Done?

A

Een Definition of Ready is een lijst met zaken waaraan product backlog items moeten voldoen voordat ze klaar zijn om in een sprint te worden opgenomen. Een Definition of Done is een lijst die eisen beschrijft waaraan een item moet voldoen om het aan het increment toe te kunnen voegen. Hierbij gaat het om zaken als documentatie, tests en acceptatiecriteria die voor elk item gelden.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Wat is een essentieel verschil in de taken van een componententeam en een featureteam?

A

Het verschil tussen componententeams en featureteams heeft te maken met de manier waarop het ontwikkelingswerk is georganiseerd binnen een organisatie, vooral binnen een agile context. Hier zijn de essentiële verschillen in de taken van componententeams en featureteams:

Componententeam:

Focus op specifieke technologische componenten:
    Een componententeam is gespecialiseerd in een specifieke technologische component, module of laag binnen het systeem. Elk team heeft expertise in een bepaald aspect van de technologie, zoals databases, gebruikersinterfaces, services, enz.

Verantwoordelijk voor onderhoud en verbetering:
    Componententeams zijn vaak verantwoordelijk voor het onderhoud, de verbetering en de doorontwikkeling van de specifieke technologische componenten waarvoor ze zijn toegewezen. Ze werken aan het optimaliseren van de prestaties en het beheersen van technische schuld binnen hun toegewezen domein.

Minder directe betrokkenheid bij eindgebruikersfunctionaliteiten:
    Hoewel componententeams cruciaal zijn voor de onderliggende infrastructuur en technologie, hebben ze mogelijk minder directe betrokkenheid bij het leveren van volledige eindgebruikersfunctionaliteiten. Ze richten zich meer op de technische aspecten en kunnen minder zichtbaar zijn voor eindgebruikers.

Featureteam:

End-to-end verantwoordelijkheid voor features:
    Een featureteam heeft de verantwoordelijkheid voor end-to-end ontwikkeling van functionaliteiten die waarde toevoegen voor de eindgebruiker. Dit omvat zowel de frontend als de backend, evenals andere aspecten zoals gebruikerservaring en kwaliteitsborging.

Cross-functionele samenstelling:
    Featureteams zijn cross-functioneel samengesteld en bevatten verschillende disciplines, zoals ontwikkelaars, testers, ontwerpers en andere benodigde rollen. Deze teams zijn ontworpen om autonoom te werken en kunnen een feature van concept tot implementatie beheren.

Directe betrokkenheid bij eindgebruikersbehoeften:
    Featureteams hebben directe betrokkenheid bij het begrijpen van eindgebruikersbehoeften en het leveren van functionaliteiten die aan die behoeften voldoen. Ze werken vaak in korte ontwikkelingscycli (bijvoorbeeld sprints in Scrum) en leveren regelmatig werkende software.

Focus op waarde voor de klant:
    Het belangrijkste doel van featureteams is om waarde te leveren aan de klant door nieuwe functionaliteiten en verbeteringen aan bestaande functionaliteiten. Ze richten zich op de behoeften van eindgebruikers en proberen continu waarde toe te voegen aan het product.

In organisaties waarin zowel componententeams als featureteams worden gebruikt, is het belangrijk om een goede samenwerking en communicatie te handhaven. Het streven is vaak om een evenwicht te vinden tussen het behouden van technologische expertise en het leveren van waarde aan eindgebruikers op een efficiënte en flexibele manier.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Leg het principe van split and seed uit. Wanneer wordt dit toegepast en welk nadeel heeft dit principe?

A

Het principe van “split and seed” verwijst naar een strategie in softwareontwikkeling waarbij een groot, complex project wordt opgedeeld in kleinere delen die parallel kunnen worden ontwikkeld door afzonderlijke teams of ontwikkelaars. Elke afzonderlijke eenheid, of “split,” kan vervolgens onafhankelijk worden ontwikkeld, getest en geïntegreerd. Dit proces helpt bij het versnellen van de ontwikkeling en het minimaliseren van afhankelijkheden.

Toepassing van “Split and Seed”:

Parallelle ontwikkeling: Teams werken parallel aan verschillende delen van het project, waardoor de ontwikkelingstijd wordt verkort.
Onafhankelijke ontwikkeling: Elke "split" kan onafhankelijk worden ontwikkeld zonder directe afhankelijkheid van andere eenheden.
Tijdsbesparing: Het zorgt voor tijdsbesparing doordat teams gelijktijdig kunnen werken in plaats van sequentieel.

Nadeel van “Split and Seed”:
Een potentieel nadeel van het principe van “split and seed” is het beheer van integratie en coördinatie tussen de verschillende eenheden. Als de afhankelijkheden tussen de splits niet goed worden beheerd, kan het samenvoegen van de afzonderlijke delen tot een volledig werkend product complexer en tijdrovender worden. Dit vereist nauwgezette coördinatie om ervoor te zorgen dat alle eenheden naadloos kunnen worden geïntegreerd.

Bovendien kan het opsplitsen van een project in te kleine eenheden leiden tot te veel overhead, omdat er meer coördinatie en communicatie nodig is om ervoor te zorgen dat alle teams synchroon lopen. Het is daarom belangrijk om een evenwicht te vinden en de grootte van de splits zorgvuldig te overwegen, zodat de voordelen van parallelle ontwikkeling niet teniet worden gedaan door overmatige complexiteit en coördinatieproblemen.

In het algemeen is het principe van “split and seed” een nuttige strategie, maar het vereist een zorgvuldige planning en coördinatie om ervoor te zorgen dat de voordelen worden gemaximaliseerd en de nadelen worden geminimaliseerd. Het is ook belangrijk om regelmatig integratietests uit te voeren om ervoor te zorgen dat de afzonderlijke eenheden goed samenkomen en samenwerken zoals bedoeld.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

In een groot project zijn meerdere scrumteams actief. Het einde van de sprint nadert en de sprint review moet voorbereid worden. Geef een voorbeeld hoe een sprint review bij geschaalde scrum uitgevoerd kan worden.

A

In een geschaalde Scrum-omgeving, waar meerdere Scrum-teams samenwerken aan een groot project, is het belangrijk om de Sprint Review zorgvuldig te plannen om een effectieve en gestroomlijnde beoordeling van de geleverde waarde te garanderen. Hier is een voorbeeld van hoe een Sprint Review in een geschaalde Scrum-omgeving kan worden uitgevoerd:

Voorbereiding:
    Voorafgaand aan de Sprint Review komen de Scrum Masters en Product Owners van alle betrokken teams bijeen om de agenda te bespreken en ervoor te zorgen dat de teams goed zijn voorbereid. Ze delen informatie over de geleverde functionaliteiten en bepalen welke teams welke items zullen presenteren.

Agenda:
    De Sprint Review begint met een korte inleiding door de Product Owner of de Release Train Engineer (afhankelijk van het gekozen schaalmodel, bijv. SAFe). De agenda kan er als volgt uitzien:
        Welkom en introductie: Korte opening door de Product Owner of Release Train Engineer om het doel van de Sprint Review uit te leggen.
        Algemene update: Een korte samenvatting van de voortgang van het gehele programma of project.
        Team-updates: Elk Scrum-team presenteert de voltooide items van hun backlog, inclusief werkende software en eventuele demonstraties van nieuwe functies.
        Feedback en discussie: Een open discussie over de gepresenteerde items, inclusief feedback van belanghebbenden.

Rotatie van Teams:
    Om ervoor te zorgen dat alle teams de gelegenheid krijgen om hun werk te presenteren, kunnen de teams roteren van sprint tot sprint. Bijvoorbeeld, in Sprint 1 kunnen Team A, Team B en Team C presenteren, en in Sprint 2 kunnen Team B, Team C en Team D presenteren.

Demo's en Presentaties:
    Elk Scrum-team voert live demo's uit van de voltooide items. Ze kunnen hun successen, uitdagingen en geleerde lessen delen. Belangrijk is dat deze demo's niet alleen de voltooide functies laten zien, maar ook de context en waarde achter de functionaliteit benadrukken.

Feedback en Discussie:
    Na elke presentatie is er tijd voor vragen, feedback en discussie. Belanghebbenden, inclusief vertegenwoordigers van andere teams, kunnen input geven en inzichten delen. Dit bevordert een gedeeld begrip van de voortgang en stelt teams in staat om van elkaar te leren.

Lessen en Verbeteringen:
    Aan het einde van de Sprint Review is er een korte discussie over eventuele lessen die zijn geleerd en mogelijke verbeteringen voor de volgende sprint. Deze reflectie draagt bij aan continue verbetering.

Het succes van een geschaalde Sprint Review hangt af van een goede coördinatie tussen de betrokken teams, effectieve communicatie en een focus op het leveren van waarde aan de klant. Het faciliteren van een open en collaboratieve sfeer tijdens de review draagt bij aan een succesvolle afsluiting van de sprint en bereidt de teams voor op de volgende iteratie.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Scrum is gebaseerd op de theorie van empirische procesbesturing. Leg uit wat dit is en beschrijf de pijlers die het fundament vormen van de implementatie van empirische procesbesturing.

A

Scrum is inderdaad gebaseerd op de theorie van empirische procesbesturing, ook wel bekend als empirisme. Empirisme is een aanpak waarbij beslissingen worden genomen op basis van ervaring en waarnemingen in plaats van op theoretische overwegingen. Het richt zich op het leren door te doen en het aanpassen van het proces op basis van voortschrijdend inzicht. De drie pijlers die het fundament vormen voor de implementatie van empirische procesbesturing binnen Scrum zijn:

Transparantie:
    Transparantie verwijst naar de zichtbaarheid van het werk en de processen voor alle betrokkenen. Het idee is dat iedereen die belang heeft bij het resultaat van het project dezelfde informatie moet hebben. Dit omvat het delen van alle relevante informatie over de voortgang, obstakels, prestaties en planning. Transparantie helpt bij het nemen van weloverwogen beslissingen en bevordert een gedeeld begrip binnen het Scrum-team en met belanghebbenden.

Inspectie:
    Inspectie houdt in dat het Scrum-team en belanghebbenden regelmatig de voortgang en de resultaten van het werk inspecteren. Dit gebeurt tijdens de inspectie-evenementen van Scrum, zoals de Sprint Review en de Sprint Retrospective. Door regelmatig te inspecteren, kan het team snel reageren op veranderingen en leren van eerdere ervaringen. Inspectie bevordert een continu aanpassingsproces.

Aanpassing:
    Aanpassing is de derde pijler en verwijst naar de mogelijkheid om het proces aan te passen op basis van de inspectieresultaten. Als gevolg van inspectie kan het Scrum-team zijn aanpak, doelen of planning aanpassen om beter in te spelen op veranderende omstandigheden of nieuwe inzichten. Aanpassing is de sleutel tot het realiseren van continue verbetering en het leveren van steeds betere resultaten.

Deze drie pijlers werken samen om een iteratieve en adaptieve benadering van softwareontwikkeling te ondersteunen. Binnen het Scrum-framework worden de Scrum-evenementen (zoals Sprint Planning, Daily Scrum, Sprint Review en Sprint Retrospective) en de artefacten (zoals de Product Backlog en de Increment) gebruikt om deze pijlers te ondersteunen en de principes van empirische procesbesturing toe te passen. Het cyclische karakter van de sprints in Scrum biedt herhaalde kansen om te inspecteren, aan te passen en transparantie te handhaven gedurende het hele ontwikkelingsproces.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Een lid van het developmentteam zit met een knelpunt waar hij en zijn collega’s niet direct een oplossing voor hebben. Hij weet dat er in een ander team aan hetzelfde project iemand werkt die daar meer kennis van heeft en mogelijk kan helpen. Wat is de beste manier om deze issue aan te pakken?

A

In een Scrum-omgeving wordt samenwerking aangemoedigd, en het aanpakken van knelpunten en uitdagingen is een gezamenlijke verantwoordelijkheid van het ontwikkelingsteam. Als een teamlid een knelpunt heeft en weet dat iemand in een ander team mogelijk kan helpen, zijn er verschillende manieren om dit aan te pakken:

Informele communicatie:
    Het betreffende teamlid kan informeel contact opnemen met de persoon in het andere team via communicatiemiddelen zoals chat, e-mail of directe gesprekken. Dit is een snelle manier om te informeren of er kennis beschikbaar is en om te vragen om eventuele hulp of advies.

Scrum of Scrums:
    Als de betrokken teams deelnemen aan een Scrum of Scrums-overleg, kan het knelpunt worden besproken tijdens deze vergadering. De teams komen samen om te praten over de voortgang, mogelijke obstakels en afhankelijkheden. Dit is een gelegenheid om samen te werken en problemen op te lossen.

Gedeelde Sprint Review of Retrospective:
    Als de teams betrokken zijn bij een gezamenlijke Sprint Review of Retrospective, kan het knelpunt worden besproken tijdens deze gelegenheden. Dit biedt een gestructureerde ruimte om ervaringen te delen en samen oplossingen te bedenken.

Scrum Master als facilitator:
    De Scrum Master van het team kan als facilitator optreden en helpen bij het opzetten van de communicatie tussen de teamleden. Hij of zij kan ervoor zorgen dat de juiste mensen bij elkaar komen en dat het gesprek gericht is op het vinden van oplossingen.

Gebruikmaken van gezamenlijke tools en platforms:
    Als teams gebruikmaken van gedeelde platforms, zoals gezamenlijke chatkanalen, projectmanagementtools of kennisdelingssystemen, kan het teamlid de kwestie daar delen om de aandacht van het andere team te trekken.

Teamleden betrekken bij Scrum-evenementen:
    Als het mogelijk is, kan het teamlid deelnemen aan de relevante Scrum-evenementen van het andere team om de kwestie direct te bespreken en samen te werken aan een oplossing.

Ongeacht de gekozen aanpak is het belangrijk dat het delen van kennis en samenwerking wordt aangemoedigd binnen de organisatie. Het Scrum-team moet zich bewust zijn van het belang van het oplossen van knelpunten en het delen van expertise om de algehele effectiviteit van het ontwikkelproces te verbeteren.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Het nadeel van pair programming is dat er twee personen aan dezelfde programmacode werken (kostenfactor). Toch zijn er voordelen aan en wordt het toegepast. Wat zijn de voordelen en wat is de relatie met de busfactor?

A

Pair programming, waarbij twee programmeurs samen aan dezelfde computer werken, heeft inderdaad enkele nadelen, waaronder de kostenfactor die je noemt. Echter, veel organisaties en teams omarmen pair programming vanwege de verschillende voordelen die het biedt:

Voordelen van Pair Programming:

Kennisdeling:
    Pair programming bevordert de directe uitwisseling van kennis tussen teamleden. Ervaringen, inzichten en best practices worden in realtime gedeeld, wat bijdraagt aan de ontwikkeling van vaardigheden en expertise binnen het team.

Verbeterde Codekwaliteit:
    Door twee mensen samen te laten werken, worden potentiële fouten sneller opgemerkt en gecorrigeerd. Dit leidt tot verbeterde codekwaliteit, omdat code wordt gereviewd en besproken terwijl deze wordt geschreven.

Snellere Probleemoplossing:
    Het delen van ideeën en het samenwerken aan complexe problemen kan leiden tot snellere en effectievere oplossingen. Het directe overleg tussen de programmeurs kan helpen om obstakels en uitdagingen snel te overwinnen.

Continue Feedback:
    Pair programming biedt voortdurende feedback tussen teamleden. Dit maakt het mogelijk om in realtime te reageren op wijzigingen in vereisten, technologische uitdagingen of andere factoren die van invloed kunnen zijn op het ontwikkelingsproces.

Minder Fouten in de Codebase:
    Doordat fouten tijdens het schrijven worden geïdentificeerd en gecorrigeerd, kunnen deze minder waarschijnlijk de codebase binnensluipen. Dit resulteert in minder defecten en verbetert de stabiliteit van de software.

Relatie met Busfactor:
De busfactor verwijst naar het risico dat een project loopt als slechts een beperkt aantal mensen (bijvoorbeeld één persoon) het kritieke kennisniveau bezit dat nodig is om een specifiek deel van het systeem te onderhouden. Pair programming helpt dit risico te verminderen, omdat het de kennisdeling vergroot. Als teamleden voortdurend samenwerken en kennis delen, is er minder kans dat cruciale kennis geconcentreerd is bij één persoon.

Door pair programming toe te passen, dragen teamleden bij aan een verhoogde busfactor. Als iemand om welke reden dan ook niet beschikbaar is, is er een grotere kans dat andere teamleden de code begrijpen en onderhouden, omdat ze al bekend zijn met de delen waar ze samen aan hebben gewerkt.

Hoewel pair programming inderdaad extra kosten met zich meebrengt, wordt het vaak beschouwd als een investering in codekwaliteit, kennisdeling en teameffectiviteit, wat op de lange termijn de productiviteit en het vermogen van het team om met veranderingen om te gaan, kan verbeteren.

17
Q

Beschrijf wat test-driven development (TDD) is en welke voordelen het heeft.

A

Test-Driven Development (TDD) is een softwareontwikkelingspraktijk waarbij het schrijven van tests vóór de implementatie van de feitelijke code plaatsvindt. Het TDD-proces omvat de volgende stappen:

Schrijven van een Test:
    Voordat ontwikkelaars beginnen met het schrijven van productiecode, schrijven ze eerst een test die de gewenste functionaliteit van de code beschrijft. Deze tests zijn doorgaans eenvoudig en specifiek.

Uitvoeren van de Test:
    De ontwikkelaar voert de geschreven test uit. Aangezien er nog geen productiecode is geschreven, zou de test moeten mislukken.

Implementatie van de Code:
    Nu schrijft de ontwikkelaar de minimale hoeveelheid code die nodig is om de test te laten slagen. Het doel is om alleen de code te schrijven die nodig is om aan de huidige testvereisten te voldoen.

Uitvoeren van de Test opnieuw:
    Na het schrijven van de productiecode wordt de test opnieuw uitgevoerd. Als de code correct is geïmplementeerd, zou de test nu moeten slagen.

Refactoring:
    Als de tests slagen, kan de ontwikkelaar overgaan tot refactoring van de code om deze te verbeteren, te optimaliseren of aan te passen, terwijl ervoor wordt gezorgd dat de tests blijven slagen.

Herhalen:
    Dit proces wordt herhaald voor elke nieuwe functionaliteit of wijziging in de code.

Voordelen van Test-Driven Development (TDD):

Vroege Detectie van Fouten:
    Omdat tests worden geschreven voordat de productiecode is geïmplementeerd, worden fouten en bugs vroegtijdig ontdekt. Dit maakt het mogelijk om problemen aan te pakken voordat ze zich verspreiden en dieper in het systeem doordringen.

Betere Codekwaliteit:
    TDD bevordert het schrijven van modulaire, herbruikbare en goed gestructureerde code. Het dwingt ontwikkelaars om na te denken over het ontwerp van hun code en om kleine, goed geteste eenheden te creëren.

Toegenomen Vertrouwen:
    Omdat elke wijziging in de code wordt ondersteund door tests, hebben ontwikkelaars meer vertrouwen dat hun wijzigingen geen onbedoelde negatieve gevolgen hebben voor de bestaande functionaliteit.

Snellere Ontwikkeling:
    TDD kan leiden tot een snellere ontwikkeling omdat het herkennen en oplossen van fouten vroeg in het proces minder tijd kost dan het later in het ontwikkelingsproces doen.

Gemakkelijker Onderhoud:
    Tests fungeren als documentatie voor de code en zorgen ervoor dat de codebase gemakkelijker te begrijpen en te onderhouden is, zelfs als ontwikkelaars wisselen of als er veranderingen in het project plaatsvinden.

Faciliteert Veranderingen en Refactoring:
    TDD maakt het gemakkelijker om veranderingen aan te brengen in de code en ondersteunt refactoring zonder het risico van onbedoelde fouten.

Focus op Functionaliteit:
    Het schrijven van tests helpt bij het definiëren van de verwachte functionaliteit voordat de implementatie begint, waardoor de focus op de bedrijfsvereisten wordt gehouden.

Al met al bevordert TDD een gestructureerde, kwalitatief hoogwaardige en responsieve ontwikkelingsaanpak die de algehele robuustheid van software verbetert.

18
Q

Leg uit wat refactoring is, waarom het nodig is en geef aan wat de relatie met technical debt is.

A

Refactoring:
Refactoring is het proces van het aanpassen en herstructureren van bestaande code zonder de externe functionaliteit ervan te veranderen. Het doel van refactoring is om de leesbaarheid, onderhoudbaarheid en efficiëntie van de code te verbeteren zonder de werking ervan te beïnvloeden. Het is een essentiële praktijk in softwareontwikkeling om de codekwaliteit te handhaven en voortdurende verbeteringen mogelijk te maken.

Waarom is Refactoring Nodig:

Codekwaliteit Verbeteren:
    Naarmate een project evolueert, kan de code complexer worden en kunnen stukjes code minder duidelijk zijn. Refactoring helpt de codekwaliteit te verbeteren door deze duidelijker en begrijpelijker te maken.

Onderhoud Vergemakkelijken:
    Goed onderhouden code is gemakkelijker te begrijpen en aan te passen. Refactoring vereenvoudigt de code en vergemakkelijkt het onderhoud, waardoor het gemakkelijker wordt om nieuwe functies toe te voegen of bestaande functies aan te passen.

Fouten Identificeren en Oplossen:
    Tijdens het refactoringproces kunnen ontwikkelaars fouten in de code identificeren en corrigeren. Door verbeteringen aan te brengen in de structuur van de code, kunnen verborgen fouten aan het licht komen.

Efficiëntie Verhogen:
    Efficiënte code draagt bij aan betere prestaties van de applicatie. Refactoring kan gericht zijn op het optimaliseren van de code om de uitvoeringstijd te verkorten en de algehele efficiëntie te verhogen.

Beter Begrip van Code:
    Refactoring helpt ontwikkelaars om een beter begrip te krijgen van de code. Het kan onnodige complexiteit elimineren en duidelijkheid brengen in de logica van de code.

Relatie met Technical Debt:

Technical debt verwijst naar de accumulatie van versnelde ontwikkeling als gevolg van het kiezen voor snelle en gemakkelijke oplossingen in plaats van grondige en duurzame implementaties. Wanneer ontwikkelaars concessies doen om snel code te leveren, kan er technische schuld ontstaan, wat kan leiden tot moeilijk te onderhouden code.

Refactoring is een essentiële praktijk om technische schuld aan te pakken. Door code te refactoren, verminderen ontwikkelaars de technische schuld door de codebasis te verbeteren en te optimaliseren. Refactoring helpt om:

Onnodige complexiteit te verminderen: Door de code te vereenvoudigen, wordt de technische schuld verminderd.

Leesbaarheid te verbeteren: Goed leesbare code is gemakkelijker te onderhouden, waardoor de technische schuld afneemt.

Efficiëntie te vergroten: Geoptimaliseerde code draagt bij aan het verminderen van technische schuld en verbetert de algehele prestaties.

Kortom, refactoring is een krachtig instrument om technische schuld te beheren en de codekwaliteit op peil te houden in het voortdurende evolutieproces van een softwareproject.

19
Q

Wat is een kenmerkend verschil tussen een traditionele (waterval)projectaanpak en de aanpak van DSDM op het gebied van tijd, kosten, kwaliteit en scope?

A

DSDM (Dynamic Systems Development Method) en de watervalmethode vertegenwoordigen twee verschillende benaderingen voor projectmanagement en softwareontwikkeling. Hier zijn enkele kenmerkende verschillen tussen de traditionele (waterval)projectaanpak en de DSDM-aanpak op het gebied van tijd, kosten, kwaliteit en scope:

  1. Tijd:Waterval:
    In de watervalmethode wordt het project in opeenvolgende fasen uitgevoerd, waarbij elke fase afhankelijk is van de voltooiing van de vorige fase. Dit kan leiden tot lange doorlooptijden voordat het eindproduct wordt opgeleverd.DSDM:
    DSDM bevordert een iteratieve en incrementele aanpak. Het project wordt opgedeeld in korte iteraties (timeboxes) met snelle opleveringen van werkende software. Dit resulteert in een kortere time-to-market in vergelijking met de watervalmethode.
  2. Kosten:Waterval:
    Kosten worden vaak pas duidelijk in latere fasen van het project, wat het risico van onverwachte kosten met zich meebrengt. Eventuele wijzigingen na de start van de ontwikkeling kunnen kostbaar zijn.DSDM:
    DSDM probeert veranderingen te beheren door ze in vroege stadia te identificeren en op te nemen. Door frequente feedback en samenwerking met belanghebbenden wordt verwacht dat onverwachte kosten verminderen.
  3. Kwaliteit:Waterval:
    Kwaliteitscontrole vindt vaak plaats aan het einde van het project. Eventuele fouten die later worden ontdekt, kunnen kostbaar zijn om te corrigeren.DSDM:
    Kwaliteit wordt gedurende het hele ontwikkelingsproces gehandhaafd. Regelmatige reviews en inspecties worden uitgevoerd, waardoor problemen vroegtijdig kunnen worden geïdentificeerd en aangepakt.
  4. Scope:Waterval:
    De scope van het project wordt over het algemeen in het begin van het project vastgesteld en is moeilijk te wijzigen naarmate het project vordert. Eventuele veranderingen vereisen vaak herzieningen en kunnen leiden tot vertragingen.DSDM:
    DSDM erkent dat de scope kan evolueren en probeert dit op te vangen door middel van flexibele aanpak en frequente iteraties. Belanghebbenden worden betrokken bij het bepalen en aanpassen van de scope gedurende het project.

In het algemeen zoekt DSDM naar een evenwicht tussen tijd, kosten, kwaliteit en scope door flexibiliteit en iteraties te introduceren. De watervalmethode is daarentegen meer rigide en lineair. De keuze tussen beide methoden hangt af van de aard van het project, de vereisten van belanghebbenden en de flexibiliteit die nodig is gedurende de ontwikkeling.

20
Q

Uw team gebruikt een Kanban-bord. Wat moet er gebeuren om de doorstroming te bevorderen als alle werkitems in een bepaalde kolom van een Kanban-bord op ‘Done’ staan en er geen pullsignaal komt van de kolommen daarachter?

A

Als alle werkitems in een bepaalde kolom van een Kanban-bord op ‘Done’ staan en er geen pullsignaal komt van de kolommen daarachter, kan het duiden op een aantal mogelijke situaties. Hier zijn enkele stappen die je kunt overwegen om de doorstroming te bevorderen:

Analyseer de Bottleneck:
    Onderzoek waarom er geen pullsignaal is van de kolommen na 'Done'. Identificeer mogelijke bottlenecks of knelpunten die de doorstroming belemmeren. Het kan zijn dat er een bepaalde stap is die trager verloopt dan andere, waardoor het systeem wordt vertraagd.

Betrek het Team:
    Bespreek de situatie met het team en vraag naar hun inzichten. Het kan zijn dat teamleden specifieke problemen of uitdagingen zien die de doorstroming beïnvloeden. Een gezamenlijke analyse kan waardevolle informatie opleveren.

Herzie de WIP-limieten:
    Controleer de Work In Progress (WIP)-limieten voor elke kolom op het Kanban-bord. Als een kolom WIP-limieten heeft bereikt, kan dit de doorstroming belemmeren. Overweeg de limieten aan te passen op basis van de capaciteit van het team en de optimale doorstroming.

Verwijder Blokkades:
    Identificeer en verwijder eventuele blokkades of obstakels die de doorstroming belemmeren. Blokkades kunnen van invloed zijn op het soepel verplaatsen van werkitems door het proces. Maak gebruik van een blokkadebord of een andere visuele methode om blokkades te signaleren en aan te pakken.

Herzie het Proces:
    Overweeg het huidige proces te herzien en te optimaliseren. Zijn er stappen die kunnen worden geëlimineerd of vereenvoudigd? Zijn er nieuwe manieren om efficiënter te werken? Betrek het team bij deze evaluatie om diverse perspectieven te verzamelen.

Implementeer Continue Verbeteringen:
    Moedig het team aan om een cultuur van continue verbetering te omarmen. Identificeer mogelijkheden voor verbeteringen en experimenteer met kleine aanpassingen om de doorstroming te bevorderen. Pas de verbeteringen indien nodig aan op basis van feedback en resultaten.

Focus op Samenwerking:
    Zorg voor een goede samenwerking tussen teamleden en afdelingen. Communicatie en samenwerking zijn essentieel voor een soepele doorstroming. Overweeg het organiseren van regelmatige overlegmomenten om knelpunten te bespreken en op te lossen.

Door deze stappen te volgen, kun je beter inzicht krijgen in de oorzaken van eventuele doorstroomproblemen en gerichte maatregelen nemen om de doorstroming te bevorderen binnen het Kanban-systeem.