1.4-Software-Development-Principles

Exam Software Development Principles - 2028-06-08 (Exam)

Introductie

Dit examen bestaat uit drie onderdelen. Deze testen je vaardigheid voor het uitleggen en toepassen van software ontwikkelprincipes.

Merk a.j.b. op dat dit een voorbeeld tekst is. Het toont de structuur van het examen. Er kunnen geen rechten onleend worden aan dit voorbeeld.

Points

Je kunt een totaal van 30 punten behalen. Deze punten zijn als volgt verdeeld:

Component Number of points Time suggestion
Part 1 4 15 min
Part 2 8 30 min
Part 3 18 75 min
Total 30 120 min

Documentatie

De volgende websites staan ter beschikking gedurende de test:

Deel 1: Terminologie [4pt]

Beantwoord de volgende vragen. Schrijf je antwoorden in de file studentAnswers.md. Er is een .md bestand voor Engels en voor Nederlands. Kies welke van deze taal je voorkeur heeft. (Geen andere talen!)

Vraag 1a [2pt]

Wat wordt bedoelt met ****? Beschijf dit concept in jouw eigen woorden. Geef twee voorbeelden.

Schrijf je antwoord in het antwoord bestand van het project.

Vraag 1b [2pt]

Wat wordt bedoelt met ****? Geef ook hiervan twee voorbeelden.

Schrijf je antwoord in het antwoord bestand van het project.

Deel 2: Streams [8pt]

In de resources folder staat een bestand met een lijst van **** en hun karakteristieken. Sommige velden zijn: (DIT IS EEN VOORBEELD!)

Vragen om te beantwoorden [2pt per question]

Er zijn vier methoden zonder zinvolle inhoud (doStreams1(), doStreams2(), etc.) Zij worden gebruikt om informatie over de dataset te tonen.

  1. Tel het aantal entries data **** (Er zijn er ongeveer X.)
  2. Geef een lijst van alle names van **** (Lijst zou onder andere "X" moeten bevatten.)
  3. Bereken de gemiddelde X voor alle ****. (Zou ergens moeten liggen tussen X en Y.)
  4. Geef de lijst van de hoogste Y over alle ****. (Hint: Maak hiervoor gebruik van .flatMap.)

Implementeer de vier methoden met behulp van java streams. Iedere andere implementatie levert geen punten op.

Deel 3: Refactoring [16pts total]

Introductie

In dit onderdeel ga je een nogal slecht geschreven programma verbeteren. De vragen hieronder geven aan wat je precies mag veranderen.

We gaan er vanuit dat je ALLEEN de code van <this-class> veranderd. De Application en de <that-package> klassen zouden geen wijziging nodig moeten hebben.

3a Enums en/of constants [4pt]

De code begint met een lange lijst van “X”. Herschrijf de code zodat je gebruik kunt maken van constanten.

3b Generics [4pt]

Het inlezen van de data levert een ****. Maak deze klasse generiek.

Er zijn een aantal tests die de werking van de lijst kunnen bevestigen. (Zie hoofdstuk 3d Meer Unittests)

3c Dependency injection [4pt]

De **** is de enige manier waarop data kan worden ingelezen. Voeg de mogelijkheid toe om andere bronnen, zoals JSON, of een database te gebruiken. Voor testen is een `****` nodig die een lijst van die **** aanbiedt. Zorg er a.j.b. voor dat de Appliecatie niet langer direct gebruik van de **** nodig heeft.

3d Meer Unit Tests [4pt]

Schrijf tests voor de volgende klassen en situaties:

3e Qualiteit en Leesbaarheid [2pt]

Bij het maken van wijzigingen is het belangrijk om de code te verbeteren:

Voor unittests gelden de volgende regels: