Download as pdf or txt
Download as pdf or txt
You are on page 1of 4

OSS Exam

Exam day, morning

1 English
1.1 Theory
• Q1: When do you say that a software system exhibits Low Coupling? Why is that
important ? How can we check this?

• Q2: Can you give an example of a system or development process where using unit
tests would be useless ?

1.2 Design
Predicting a surge in home brewing, a famous brewery in Leuven wants to launch a new
product to make home brewing easy and capture a large share in that upcoming market.
Key in their effort will be a software application to help the process of brewing beer.
This software application should support the following set of requirements:

• possibility to model raw ingredients, such as water (different kinds, such as tap water
or Spa), barley (such as Conrad, Merit, or Robust), yeast (such as Cerevisiae or
Brettanomyces) and flavours (different varieties of hop, herbs, ...). There is no need
to model the characteristics of these ingredients, only the behaviour needed for the
overall functioning of the application.

• probably the most important part of the software is the recipe. A recipe outlines the
steps that have to be carried out at which point in time and for how long. Steps take
in ingredients or output from another step, and produce output. Brewing consists of
the following main steps (input ≫ output):

– malting: water, barley ≫ mash


– mashing: mash ≫ wort
– boiling: wort, flavours ≫ hopped wort
– fermenting: hopped wort, yeast ≫ beer

1
• two of these steps are actually combinations of smaller steps:

– malting consists of steeping, followed by germination, followed by kilning. What


the steps do is not important, but it is important they are in the correct order,
to know when they start and how long they take.
– boiling has different steps for the adding of the flavours (at what point in time
they are added and in what quantity).

• It should be possible to get the total duration of a recipe and a list of all ingredients
required for that recipe.

Propose a class diagram with an initial design (not code!) that meets these require-
ments. You are allowed to use the provided Design Patterns Reference. You have to focus
on the domain model: the GUI team will be responsible for making a webgui, a desktop
application, and a command-line interface that uses your domain model. The GUI part
therefore does not need to be modelled at all. You cannot use a database (this initial design
will be in-memory).
Explain your class diagram:

• provide a general explanation about your design and major motivating decisions
(maximum 1 page, e.g. one side)

• provide a sequence diagram explaining what happens when a smart playlist is made
with the simple query artist contains ’iron’

• provide a sequence diagram explaining what happens when a smart playlist is asked
what the average song duration is for that playlist

• For the Visitor and the Composite patterns: list their advantages and disadvantages
and your motivation for either using or not using them (maximum 1 page in total,
e.g. one side).

• for each other design pattern used: provide a concise motivation for using that pattern
in spite of its disadvantages (maximum 1 page in total for all patterns, e.g. one side).

Do not forget to write your name, student number, page number and total number of
pages on every page.

2
2 Nederlands
2.1 Theorie
• Vraag 1: Wat zijn de 4 basiselementen van een ontwerppatroon zoals gezien in de
cursus. Bedenk en beschrijf twee patronen op een ander domein dan software ontwerp.

• Vraag 2: Wat is een God Class? Hoe detecteer je een god class? Hoe kun je ze
proberen voorkomen?

2.2 Ontwerp
Een bekende brouwerij uit Leuven voorziet een sterke opleving van de zelf-brouw-markt.
Om meteen een groot gedeelte van die markt in te nemen gaan ze daarom een nieuw
product ontwikkelen om het zelf brouwen van bier sterk te vergemakkelijken. Een heel
belangrijke rol is hierbij weggelegd voor een software programma om het bierbrouwen te
ondersteunen.
De software zou moeten voldoen aan de volgende vereisten:

• het moet mogelijk zijn om basisingrediënten voor te stellen zoals water (verschillende
soorten, zoals kraantjeswater of Spa), gerst (zoals Conrad, Merit, of Robust), gist
(bijvoorbeeld Cerevisiae of Brettanomyces) en smaakmakers (verschillende soorten
hop, kruiden, ...). Het is niet nodig om de karakteristieken van deze ingrediënten te
modelleren, alleen het gedrag relevant voor de applicatie.

• ondersteuning voor recepten. Een recept somt de stappen op die moeten worden
uitgevoerd, op welk tijdstip en met welke duur. Stappen gebruiken ingrediënten of
resultaten van andere stappen, en produceren output. Bierbrouwen bestaat uit de
volgende hoofdstappen (input ≫ output):

– mouten: water, gerst ≫ mash


– schroten: mash ≫ wort
– koken: wort, smaakmakers ≫ gehopte wort
– vergisten: gehopte wort, gist ≫ bier

• twee van deze stappen bestaan eigenlijk uit kleinere stappen:

– bij mouten gebeurt er eerst steeping, gevolgd door ontkiemen, en daarna eesten.
Wat deze stappen juist doen is niet belangrijk, maar wel de volgorde, wanneer
ze starten en hoe lang ze duren.
– het koken bestaat uit verschillende stappen voor het toevoegen van de smaak-
makers (tijdstip waarop ze worden toegevoegd, en in welke hoeveelheid)

3
• het moet mogelijk zijn om de totale duur van een recept te kennen, en een lijst van
alle ingrediënten die nodig zijn voor een bepaald recept.

Maak een initieel ontwerp (geen code!) dat voldoet aan deze vereisten. Je mag de
aangeleverde Design Patterns Reference gebruiken. De focus ligt op het domeinmodel:
het GUI team is verantwoordelijk voor het ontwikkelen van een webinterface, een desktop
applicatie, en een command-line interface die jouw domeinmodel gebruiken. Er moet dus
geen eigenlijke GUI gemodelleerd worden. Je kan geen databank gebruiken (dit initieel
ontwerp is een in-memory ontwerp).
Leg je klasse diagramma uit:

• geef een algemene uitleg over je ontwerp en belangrijkste ontwerpbeslissingen (max-


imum 1 pagina, e.g. 1 bladzijde)

• leg aan de hand van een sequence diagramma uit wat er gebeurd wanneer een slimme
afspeellijst gemaakt wordt met de simpele query artiestnaam bevat ’iron’

• leg aan de hand van een sequence diagramma uit wat er gebeurd wanneer een slimme
afspeellijst gevraagd wordt wat de gemiddelde duur is van de liedjes in de afspeellijst

• Voor het Visitor en het Composite patroon: geef de voor- en nadelen en geef je
motivatie waarom je besloot om ze al dan niet te gebruiken (maximum 1 pagina, e.g.
1 bladzijde).

• voor elk ander gebruikt ontwerppatroon: geef een duidelijke motivatie voor het
toepassen van dat patroon ondanks de nadelen ervan (maximum 1 pagina, e.g. 1
bladzijde).

Vergeet niet om je naam, studentnummer, pagina nummer en totaal aantal pagina’s te


noteren op elke bladzijde.

You might also like