# Onderlegger / Checklist C24 (Crebo 25998) met gewichten

## Kerntaak 1

### B1-K1-W1 - Stemt opdracht af, plant werkzaamheden en bewaakt de voortgang

#### Rubrics

1. De opdracht, doelen en planning zijn afgestemd. **(Weight: 33%)**
2. De kandidaat houdt bij welke werkzaamheden zijn uitgevoerd, welke nog uitgevoerd moeten worden en gaat na of de planning in gevaar komt. **(Weight: 33%)**
3. De kandidaat signaleert afwijkingen in de doelen en planning, meldt dit en zoekt (in overleg) naar een (tussen)oplossing. **(Weight: 34%)**

#### Onderlegger

*() nummers verwijzen naar rubics*

1. Opdracht is beschreven (1). **(Weight: 20%)**
2. Doelen zijn beschreven (1). **(Weight: 20%)**
3. Planning is beschreven (1, 2). **(Weight: 20%)**
4. Indien er een opdrachtgever is, dan is er ook afgestemd (1). **(Weight: 10%)**
5. Projectvoortgang is bewaakt (2, 3). **(Weight: 15%)**
6. Project bijsturing is uitgevoerd en beschreven (3). **(Weight: 15%)**

#### Checklist

*(nummers verzijzen naar onderlegger en rubic)*

- Is er beschreven **wat** er gemaakt moet worden; hoe ziet het **eindproduct** eruit? (O1, R1) **(Weight: 12%)**
- Is er beschreven **voor wie** het is bedoeld; wie gaan ermee werken? (O1, R1) **(Weight: 8%)**
- Welke functionaliteiten moeten **minimaal** werken? (O1, R1) **(Weight: 10%)**
- Zijn **alle gewenste functionaliteiten** beschreven? (O1, R1) **(Weight: 10%)**
- Welke **technische uitgangspunten** zijn er (techniek, taal, frameworks)? (O1, R1) **(Weight: 10%)**
- Welk **doel** dient het project? Welk probleem wordt opgelost en hoe wordt gemeten of dat gelukt is? (O2, R1) **(Weight: 15%)**
- Bevat de planning duidelijke **taakbeschrijvingen**, plus per taak een geschatte **tijd**, **deadline**, **verantwoordelijke** en **resultaatbeschrijving**? (O3, R1) 
    - Taken zijn nooit groter dan 1 dag (8 uur). (O3, R1) **(Weight: 5%)**
    - Er is voor minimaal 40 uur programmeerwerk gepland (per persoon). **(Weight: 5%)**
- Is van elke taak bijgehouden **wanneer** deze is **begonnen**, door **wie** en **wanneer** deze **klaar** was? (O5, R2) **(Weight: 10%)**
- Welke **wijzigingen** zijn er in de planning gemaakt tijdens de uitvoering en zijn deze **onderbouwd**? (O5, R2) 
    - Waarom is het gewijzigd? (O5, R2) **(Weight: 3%)**
    - Wat waren de opties en waarom is deze optie gekozen? (O5, R2) **(Weight: 3%)**
    - Is er overleg geweest en zo ja, met wie? (O4, R3) **(Weight: 4%)**

### B1-K1-W2 - Maakt een technisch ontwerp voor software

#### Rubrics

1. De eisen, wensen en technische randvoorwaarden zijn vertaald naar een passend, eenduidig en volledig (deel)ontwerp. **(Weight: 40%)**
2. Er is gebruikt gemaakt van relevante of toepasselijke schematechnieken (bijv. activiteitendiagram, klassendiagram, ERD, use case diagram). **(Weight: 30%)**
3. De gemaakte keuzes in het ontwerp zijn onderbouwd met steekhoudende argumenten die passen bij de praktijkrichting. **(Weight: 30%)**

#### Onderlegger

*() nummers verwijzen naar rubics*

1. Alle functionalieiten zijn beschreven (1) **(Weight: 30%)**
2. Alle technische randvoorwaarden zijn beschreven (1) **(Weight: 25%)**
3. Het ontwerp bevat passende en relevante schema's (zoals ERD, activiteitendiagram, use case, flowdiagram) (2)  
    **(Weight: 25%)**
4. Alle ontwerpkeuzes zijn onderbouwd met (functionele of technische) argumenten (3).  
    **(Weight: 20%)**

#### Checklist

*(nummers verwijzen naar onderlegger en rubric)*

- Zijn **alle** functionele **eisen** en **wensen** compleet beschreven? (O1, R1) **(Weight: 12%)**
- Zijn alle **technische** randvoorwaarden volledig en correct vastgelegd (bijv. taal, framework, devices, API's, database)? (O2, R1) **(Weight: 10%)**
- Is **per eis** of wens aantoonbaar aangegeven hoe deze is vertaald naar het **ontwerp**? (O1, R1) **(Weight: 10%)**
- Zijn **alle** schermen/componenten/modules uitgewerkt in tekst, schets, mockup of wireframe? (O1, R1) **(Weight: 10%)**
- Zijn de datastromen, interacties en relaties tussen onderdelen duidelijk beschreven (flowchart)? (O1, R1) **(Weight: 8%)**
- Bevat het ontwerp minimaal **3 relevante** en **juiste** schema's (ERD, activiteitendiagram, use case, flowdiagram)? (O3, R2)  
    **(Weight: 15%)**
- Zijn de gebruikte benamingen **consistent** tussen schema's, tekst, datamodel en ontwerp? (O1, R1) **(Weight: 5%)**
- Is bij elke ontwerpkeuze een inhoudelijke en logische **motivatie** gegeven (functioneel of technisch onderbouwd)? (O4, R3) **(Weight: 10%)**
- Zijn **alternatieve** ontwerpopties overwogen en is beschreven waarom een bepaalde keuze is gemaakt? (O4, R3) **(Weight: 10%)**
- Is het ontwerp voldoende gedetailleerd zodat een **andere ontwikkelaar** het systeem kan bouwen zonder extra uitleg? (O1, R1/R2) **(Weight: 10%)**

### B1-K1-W3 - Realiseert (onderdelen van) software

#### Rubrics

1. Er is voldoende inhoud van de functionaliteiten gerealiseerd binnen de gestelde/geplande tijd. **(Weight: 25%)**
2. De opgeleverde functionaliteiten voldoen aan de eisen en wensen. **(Weight: 25%)**
3. De kwaliteit van de code is goed. **(Weight: 25%)**
4. Versiebeheer is effectief toegepast. **(Weight: 25%)**

#### Onderlegger

*() nummers verwijzen naar rubics*

1. De geplande functionaliteiten zijn binnen de afgesproken tijd gerealiseerd of er is duidelijk verantwoord waarom dit niet volledig gelukt is (1). **(Weight: 15%)**
2. Er wordt ten minste 40 uur verantwoord voor dit werkproces. (1) **(Weight: 10%)**
3. De gerealiseerde functionaliteiten werken volgens de vooraf opgestelde eisen, wensen en acceptatiecriteria (2). **(Weight: 15%)**
4. Edge cases, foutafhandeling en uitzonderingssituaties zijn functioneel juist afgehandeld (2). **(Weight: 10%)**
5. De code heeft een duidelijke structuur (3) **(Weight: 10%)**
6. De code volgt relevante best practices (bijv. DRY, SRP, scheiding van concerns, herbruikbare functies, valide input-checks) (3). **(Weight: 10%)**
7. De opmaak van de code is netjes (inspringen). (3) **(Weight: 5%)**
8. Er is voldoende zinvol commentaar toegevoegd. (3) **(Weight: 5%)**
9. De naamgeving van variabelen, functies, methods en classes is consistent en duidelijk (3)  
    **(Weight: 5%)**
10. De kandidaat heeft commit-historie die laat zien dat er regelmatig, logisch en stapsgewijs gewerkt is (4). **(Weight: 5%)**
11. Commits bevatten betekenisvolle commit messages die duidelijk maken wát er is veranderd en waarom (4). **(Weight: 5%)**
12. De kandidaat gebruikt branches, merges en/of pull requests op een manier die past bij de omvang van het project (4). **(Weight: 5%)**

#### Checklist

*(nummers verwijzen naar onderlegger en rubric)*

- Zijn de geplande functionaliteiten gerealiseerd binnen de afgesproken tijd, of is duidelijk verantwoord waarom dit niet gelukt is? (O1, R1) **(Weight: 10%)**
- Is er **minimaal 40 uur** aan werkzaamheden verantwoord binnen dit werkproces? (O2, R1) **(Weight: 5%)**
- Werken **alle** opgeleverde functionaliteiten volgens de vooraf opgestelde eisen en wensen? (O3, R2)  
    **(Weight: 15%)**
- Zijn **edge cases**, foutafhandeling en uitzonderingssituaties correct en functioneel afgehandeld? (O4, R2) **(Weight: 10%)**
- Is de code logisch gestructureerd en duidelijk opgezet waarbij de code is opgedeeld in een duidelijke **directory-structuur** en is de code zinvol is **opgedeeld** in **bestanden**? (O5, R3) **(Weight: 10%)**
- Volgt de code relevante **best practices** (DRY, SRP, scheiding van concerns, herbruikbare functies, inputvalidatie)? (O6, R3) **(Weight: 10%)**
- Is de code **netjes** opgemaakt, inclusief correct **inspringen**? (O7, R3) **(Weight: 5%)**
- Is er voldoende **zinvol commentaar** toegevoegd waar dat nodig is? (O8, R3) **(Weight: 5%)**
- Zijn **namen** van o.m. variabelen, functies, methods en classes **consistent** en **duidelijk** gekozen? (O9, R3) **(Weight: 5%)**
- Laat de **commit-historie** zien dat er **regelmatig**, logisch en stapsgewijs gewerkt is? (O10, R4) **(Weight: 10%)**
- Bevatten commits betekenisvolle **commit messages** die duidelijk maken wát en waarom iets is aangepast? (O11, R4) **(Weight: 10%)**

### B1-K1-W4 - Test software

#### Rubrics

1. De kandidaat heeft passende testvormen en testmethodieken gekozen. **(Weight: 35%)**
2. De kandidaat heeft voor alle toegewezen of geplande functionaliteiten testscenario's of testcases gemaakt. **(Weight: 35%)**
3. Het testrapport bevat testresultaten van alle functionaliteiten. Alle resultaten worden voorzien van de juiste conclusies. **(Weight: 30%)**

#### Onderlegger

*() nummers verwijzen naar rubics*

1. Je voert ten minste één integratietest uit. (1) **(Weight: 15%)**
2. Er is minimaal één geautomatiseerde test uitgevoerd met een geschikte tool (bijv. Selenium, Playwright of een alternatieve testtool). (1)  
    **(Weight: 15%)**
3. Er is risk-based getest: op basis van een risicoanalyse zijn de belangrijkste tests als eerste uitgevoerd. (1) **(Weight: 10%)**
4. Voor alle toegewezen of geplande functionaliteiten zijn testscenario's of testcases opgesteld met duidelijke input, stappen en verwachte output. (2) **(Weight: 15%)**
5. De testcases bevatten zowel happy flows, edge cases als foutgevallen. (2) **(Weight: 10%)**
6. Je bepaalt waar performance een risico kan vormen en voert indien relevant performance-gerelateerde tests uit. (1/2 – optioneel afhankelijk van opdracht) **(Weight: 5%)**
7. Testscenario's zijn volledig en zo beschreven dat een andere tester ze onafhankelijk kan uitvoeren. (2) **(Weight: 10%)**
8. Het testrapport bevat de resultaten van alle uitgevoerde tests, inclusief datum, testomgeving en eventuele bijzonderheden. (3) **(Weight: 10%)**
9. Bij elk testresultaat is duidelijk aangegeven of de test geslaagd is, inclusief een toelichting bij afwijkingen. (3) **(Weight: 5%)**
10. Er zijn juiste en logische conclusies getrokken op basis van de testresultaten, inclusief aanbevelingen of vervolgstappen. (3) **(Weight: 5%)**

#### Checklist

*(nummers verwijzen naar onderlegger en rubric)*

- Is er ten minste één **integratietest** uitgevoerd? (O1, R1) **(Weight: 15%)**
- Is er minimaal één **geautomatiseerde test** uitgevoerd met een geschikte tool (bijv. Selenium, Playwright)? (O2, R1)  
    **(Weight: 15%)**
- Is er risk-based getest op basis van een vooraf uitgevoerde **risicoanalyse**? (O3, R1) **(Weight: 10%)**
- Zijn er voor **alle**  functionaliteiten testscenario's of testcases opgesteld? (O4, R2) **(Weight: 15%)**
- Bevatten de testcases **happy flows**, **edge cases** en **foutgevallen**? (O5, R2) **(Weight: 10%)**
- Zijn **performance**-gerelateerde tests uitgevoerd? (O6, R1/R2) - *moet dit?* **(Weight: 5%)**
- Zijn de testscenario's **volledig** en zo beschreven dat een andere tester ze **onafhankelijk** kan uitvoeren? (O7, R2) **(Weight: 10%)**
- Bevat het testrapport **resultaten** van alle uitgevoerde tests, inclusief datum, omgeving en bijzonderheden? (O8, R3) **(Weight: 10%)**
- Is bij elk testresultaat duidelijk aangegeven of de test **geslaagd** is en is er een **toelichting** bij afwijkingen? (O9, R3) **(Weight: 5%)**
- Zijn er **logische** en **correcte conclusies** getrokken op basis van alle testresultaten, inclusief **aanbevelingen** of vervolgacties? (O10, R3) **(Weight: 5%)**

### B1-K1-W5 - Doet verbetervoorstellen voor de software

#### Rubrics

De kandidaat analyseert systematisch alle beschikbare informatiebronnen voor mogelijke aanpassingen aan de software. **(Weight: 35%)**

De kandidaat interpreteert en vertaalt wensen, reacties, testresultaten en/of meldingen naar realiseerbare verbetervoorstellen. **(Weight: 35%)**

De kandidaat stelt vast welke werkzaamheden benodigd zijn, evenals een haalbare planning. **(Weight: 30%)**

#### Onderlegger

*() nummers verwijzen naar rubics*

1. <span style="color: rgb(149, 165, 166);">Alle relevante informatiebronnen zijn systematisch verzameld en geanalyseerd (bijv. testresultaten, foutmeldingen, logs, gebruikersfeedback, codekwaliteit, performancegegevens). (1) **(Weight: 15%)**</span>
2. <span style="color: rgb(149, 165, 166);">De kandidaat toont aan dat de informatieobjectief en volledig is geïnterpreteerd (bijv. clustering van problemen, oorzaakanalyse, categorisatie). (1) **(Weight: 10%)**</span>
3. <span style="color: rgb(149, 165, 166);">Er is een duidelijke probleemanalyse gemaakt, inclusief onderliggende oorzaken (root cause analysis). (1) **(Weight: 10%)**</span>
4. <span style="color: rgb(149, 165, 166);">Wensen, reacties, testresultaten of meldingen zijn vertaald naar één of meerdere concrete, haalbare verbetervoorstellen. (2) **(Weight: 15%)**</span>
5. <span style="color: rgb(149, 165, 166);">De verbetervoorstellen zijn functioneel en technisch onderbouwd, inclusief motivatie waarom deze verbeteringen waardevol zijn. (2) **(Weight: 10%)**</span>
6. <span style="color: rgb(149, 165, 166);">Elk verbetervoorstel bevat een duidelijke beschrijving van de impact en gevolgen voor gebruikers, data, functionaliteit of onderhoud. (2) **(Weight: 10%)**</span>
7. <span style="color: rgb(149, 165, 166);">Er is onderscheid gemaakt tussen kleine verbeteringen en grotere wijzigingen (bijv. quick wins vs. major improvements). (2) **(Weight: 5%)**</span>
8. <span style="color: rgb(149, 165, 166);">Er is per verbetervoorstel vastgesteld welke werkzaamheden nodig zijn (bijv. analyse, ontwerp, codewijziging, testen, documentatie). (3) **(Weight: 10%)**</span>
9. <span style="color: rgb(149, 165, 166);">De benodigde tijd, afhankelijkheden en risico's zijn ingeschat en beschreven. (3) **(Weight: 5%)**</span>
10. <span style="color: rgb(149, 165, 166);">Er is een haalbare planning opgesteld voor de realisatie van de verbeteringen (bijv. volgorde, prioriteit, tijdsinschatting, sprintplanning). (3) **(Weight: 10%)**</span>

#### Checklist

*(nummers verwijzen naar onderlegger en rubric)*

1. <span style="color: rgb(149, 165, 166);">Zijn alle relevante informatiebronnen verzameld en systematisch geanalyseerd (zoals logs, testresultaten, foutmeldingen, gebruikersfeedback)? (O1, R1) **(Weight: 15%)**</span>
2. <span style="color: rgb(149, 165, 166);">Is de verzamelde informatie objectief en volledig geïnterpreteerd (bijv. clustering, patronen, oorzaken)? (O2, R1) **(Weight: 10%)**</span>
3. <span style="color: rgb(149, 165, 166);">Is er een duidelijke probleemanalyse gemaakt, inclusief onderliggende oorzaken (root cause analysis)? (O3, R1) **(Weight: 10%)**</span>
4. <span style="color: rgb(149, 165, 166);">Zijn wensen, reacties, testresultaten of meldingen vertaald naar concrete, haalbare verbetervoorstellen? (O4, R2) **(Weight: 15%)**</span>
5. <span style="color: rgb(149, 165, 166);">Zijn de verbetervoorstellen functioneel en technisch onderbouwd? (O5, R2) **(Weight: 10%)**</span>
6. <span style="color: rgb(149, 165, 166);">Bevat elk verbetervoorstel een duidelijke beschrijving van de impact (gebruikers, data, functionaliteit, onderhoud)? (O6, R2) **(Weight: 10%)**</span>
7. <span style="color: rgb(149, 165, 166);">Is onderscheid gemaakt tussen kleine verbeteringen (quick wins) en grotere wijzigingen? (O7, R2) **(Weight: 5%)**</span>
8. <span style="color: rgb(149, 165, 166);">Is per verbetervoorstel vastgesteld welke werkzaamheden nodig zijn (ontwerp, code, testen, documentatie)? (O8, R3) **(Weight: 10%)**</span>
9. <span style="color: rgb(149, 165, 166);">Zijn tijdsinschatting, afhankelijkheden en risico's beschreven? (O9, R3) **(Weight: 5%)**</span>
10. <span style="color: rgb(149, 165, 166);">Is een haalbare planning opgesteld voor de uitvoering van de verbeteringen (volgorde, prioriteit, tijdsinschatting)? (O10, R3) **(Weight: 10%)**</span>