OUN
Eindtoets Model-driven development (T37111)
Eindtoets Model-driven development Bij de informatiediagrammen dient u de teken- en andere conventies te volgen van het cursusmateriaal. De communicatiewaarde van uw diagrammen wordt betrokken in de beoordeling. Wees attent op mogelijke homoniemen en/of synoniemen in de beschrijvingen. Opgave 1 (10 punten) Figuur 1 toont een (PIM-)informatiemodel voor een informatiesysteem dat betrekking heeft op verkoopwaarden voor tweedehandauto’s. Alle attributen zijn verplicht. Toelichting: − een merk is bijvoorbeeld: Ford of Citroen − een type is bijvoorbeeld: Focus, Ka of AX − een vorm is bijvoorbeeld: 4-deurs sedan (code S4) of 5-deurs hatchback (code H5) − een brandstof is bijvoorbeeld: benzine (code B) of diesel (code D). De structuur van het model is gebaseerd op de aanname dat voor de autobranche de volgende bedrijfsregel geldt: verschillende merken kunnen geen typen hebben met dezelfde naam. De klasse Waarderegel geeft voor een auto van een gegeven type, uitvoering, brandstof en bouwjaar de oorspronkelijke catalogusprijs. Opmerking: het formulier hierbij in het informatieysteem bevat nog een afleidbaar veld met een standaard actuele tweedehands verkoopwaarde, die uit de andere gegevens en uit de actuele datum (’huidige datum’) wordt berekend. Dit veld raakt aan de essentie van het systeem maar is voor deze opgave niet van belang. M erk naam
i
Type naam merk
Vorm i
code naam
Brandstof i u
code naam
i u
Waarderegel type vorm brandstof bouwjaar catalogusprijs FIGUUR 1
i i i i
Informatiemodel autoverkoopwaardesysteem
Opgave: a Geef een PSM-informatiemodel volgens het relationele model (Cathedron-conform, met name wat betreft het gebruik van kunstmatige sleutels). b Geef in het resultaat van onderdeel a de tabel Waarderegel een minimale voorbeeldpopulatie die illustratief is voor de i-regel in het PIM-model. Beperk u tot de kolommen die rechtstreeks met de ikolommen corresponderen.
-1-
OUN
Eindtoets Model-driven development (T37111)
Opgave 2 (25 punten) Casusbeschrijving ‘Begeleidingbijeenkomsten’ Een universiteit voor afstandsonderwijs biedt haar studenten cursussen aan waarvoor ze zich kunnen inschrijven. Figuur 2 geeft hiervoor een eenvoudig informatiediagram. aanbod
vraag
Student
Cursus code titel
nr naam
i u
i
transactie
Inschrijving cursus student startdatum FIGUUR 2
i i
Eenvoudig informatiemodel cursusinschrijving
De bedoeling van deze opgave is dit diagram uit te breiden met meta-informatie die betrekking heeft op de begeleidingcycli die voor veel cursussen worden georganiseerd. We geven hierover de volgende aanvullende beschrijving: De Open Universiteit organiseert meerdere keren per jaar begeleidingscycli. Elke cyclus hoort bij één cursus en staat open voor studenten die voor de cursus staan ingeschreven. Elke cursusinschrijving heeft vanaf de startdatum een onbeperkte geldigheid. Elke cyclus wordt gegeven op een studiecentrum. Elk studiecentrum heeft een unieke code, bijvoorbeeld ASD. Ook heeft een studiecentrum een unieke naam, wat in de praktijk een plaatsnaam is, bijvoorbeeld: studiecentrum ASD heeft als naam Amsterdam. Een begeleidingscyclus betreft een serie bijeenkomsten. Een cyclus heeft een nummer (dat per studiecentrum uniek is) en een startdatum. Een cyclus wordt gegeven door één of meer docenten. Het aantal bijeenkomsten ligt tevoren vast. Een docent heeft een uniek acroniem en een naam. Een cyclus bestaat uit een aantal bijeenkomsten die binnen de cyclus een volgnummer hebben, een datum en een onderwerp (bijvoorbeeld ‘hoofdstuk 3 t/m 6’). Studenten kunnen zich inschrijven voor een bijeenkomst, maar alleen als ze ingeschreven staan voor de betreffende cursus. Standaard krijgt zo’n inschrijving voor een bijeenkomst de status ‘aangemeld’. Aangemelde studenten kunnen zich weer afmelden. Hun inschrijving voor de bijeenkomst wordt dan niet verwijderd, maar de status verandert in ‘afgemeld’. (De docent kan dan deze studenten het materiaal van de bijeenkomst toesturen.) Na afloop van een bijeenkomst wijzigt de docent de status van de aanmeldingen met aanmeldingsstatus ‘aangemeld’ in ‘aanwezig’ of ‘absent’. a Breid op grond van de gegeven beschrijving het informatiemodel van figuur 3 uit. Handhaaf de modulaire opdeling in aanbod, vraag en transactie. b Formuleer, in natuurlijke taal, de aanvullende bedrijfsregel(s).
-2-
OUN
Eindtoets Model-driven development (T37111)
Opgave 3 (15 punten) Een bedrijf voor veredeling van tulpen en variatie van tulpenrassen onderhoudt een systeem met informatie over de door haar gekweekte of gebruikte tulpenrassen. Een tulpenras wordt in het bedrijf kortweg ‘tulp’ genoemd. Elke tulp heeft een unieke naam en een kleur. Veel tulpen, maar niet alle, hebben een genetische ‘oudertulp’, waarvan de betreffende tulp een variant is. De kleuren zijn gestandaardiseerd. a Welk patroon of welke patronen herkent u in deze beschrijving (afgezien van ouderkindpatronen)? Geef een (PIM-)informatiediagram. Welke aanvullende constraint(s) gelden? Formuleer deze in natuurlijke taal. Door gentechnologische vernieuwing (implantatie van genen) verandert er het een en ander in de relevante wereld: een tulp kan meerdere oudertulpen hebben. Bovendien kan een tulp meerdere kleuren hebben. b Dezelfde vragen als bij a, voor de nieuwe situatie.
-3-
OUN
Eindtoets Model-driven development (T37111)
Opgave 4 (20 punten) In deze opgave maakt u een informatiediagram voor de relevante wereld van de verschillende soorten rekeningen die klanten hebben bij de Hypobank (een ‘hypothetische Postbank’). Houd u aan de gegeven beschrijving en laat de ‘werkelijke Postbank’ buiten beschouwing. Beschrijving relevante wereld Hypobank De Hypobank biedt verschillende soorten rekeningen. We beperken ons tot de volgende rekeningsoorten: girorekening (code G), spaarrekening (code S) en kredietrekening (code K). Alle rekeningen hebben een uniek rekeningnummer. Spaarrekeningen en kredietrekeningen zijn gekoppeld aan een girorekening. Bij een girorekening kunnen meerdere spaarrekeningen en/of kredietrekeningen horen. (Alle transacties van en naar een spaarrekening of kredietrekening vinden via de girorekening plaats.) Bij elke rekening hoort één klant. De klant van een spaarrekening en van een kredietrekening is dezelfde als die van de bijbehorende girorekening. Elke klant heeft een uniek klantnummer en een achternaam. Verdere klantgegevens blijven in deze opgave buiten beschouwing. Elke rekening heeft een saldo. (Bij kredietrekeningen is dit het opgenomen bedrag.) Een girorekening heeft een saldo, een ‘plusrente’ (die de laatste jaren steeds 0 was) en een ‘minrente’ voor rood staan. Een spaarrekening heeft een saldo en een plusrente. Een kredietrekening heeft een saldo (het opgenomen bedrag), een kredietlimiet, een opnameruimte, een maandbedrag (voor rente en aflossing) en een minrente (= effectieve rente op jaarbasis). Alle renten zijn gelijk voor alle rekeningen van een bepaalde rekeningsoort. Opgave: a Maak een informatiediagram voor rekeningen (met hun typen) en klanten. Maak gebruik van een generalisatiestructuur. Modelleer alleen op basis van de beschrijving en modelleer dus bijvoorbeeld niet een rentehistorie. Ga uit van de structuur van figuur 3, waarbij Rekening.soort een subklassebepalend atttribuut is. b Omschrijf nauwkeurig welke constraints er bij uw diagram horen. (Laat waardebeperkingen op attributen buiten beschouwing.) Rekeningsoort code naam plusrente op minrente op
i u
{G, S, K}
Rekening ...
FIGUUR 3
Kern van oplossingsdiagram
-4-
OUN
Eindtoets Model-driven development (T37111)
Opgave 5 (30 punten) Gegeven het informatiemodel van figuur 4 voor een organisatie voor thuiszorg. Voor cliënten kunnen aanvragen tot thuiszorg ingediend worden. Na goedkeuring brengen contactpersonen een of meer bezoeken aan de cliënt op basis van een aanvraag. Alle identificerende attributen hebben ‘generate key = yes’ in het model in Cathedron. Client nr naam
i
Tariefgroep nr uurbedrag
i
Aanvraag
{'afgekeurd', 'goedgekeurd', 'in behandeling'}
nr i datum client status /totaalbedrag
Contactpersoon nr naam tariefgroep
i
Bezoek nr i datum aantalUur client contactpersoon aanvraag /bedrag FIGUUR 4
Informatiemodel Thuiszorg
a Elke cliënt wordt maximaal één keer per dag bezocht. Geef aan hoe u deze constraint in het model het beste realiseert. b Attribuuttype Statustype van attribuut Aanvraag.status kent de value rule van figuur 5 voor de toegestane (en voor de weer te geven) waarden.
FIGUUR 5
Value rule
Bij het toevoegen van een nieuwe aanvraag willen we dat status de waarde ‘In behandeling’ toont, datum de huidige dag weergeeft en bedrag de waarde 0.0 heeft. Met welke code kunt u dit realiseren in globale dataset Aanvraag? Geef zowel de CIL- code als de OP-code. c Een bedrijfsregel luidt: als een bezoek op een aanvraag is gebaseerd, moet die aanvraag bestemd zijn voor de cliënt die bezocht wordt. Hoe luidt de formulering van deze regel in OCL ?
-5-
OUN
Eindtoets Model-driven development (T37111)
d Geef een classificatie volgens RuleSpeak en een bijbehorende implementatie in CIL en OP-code van de regel van onderdeel c. Geef duidelijk aan bij welke component de code geplaatst wordt. e Veld bedrag moet read-only zijn en na het posten moet dit veld het juiste bedrag bevatten op basis van het aantal uren en het uurloon van de contactpersoon. Schrijf hiervoor een procedure SetBedrag die het juiste bedrag in veld bedrag zet van de globale dataset Bezoek. f Als een aanvraag gepost wordt, moet ook kolom totaal van tabel Aanvraag aangepast worden van de aanvraag waarop het bezoek betrekking heeft. Moet deze methode bij beforePost of afterPost aangeroepen worden? g Schrijf een procedure SetTotaal die het totaal van Aanvraag bijwerkt. h Het default formulier Bezoek willen we aanpassen. Figuur 6 toont het oorspronkelijke formulier en het gewenste formulier. a
FIGUUR 6
b
Oorspronkelijk formulier (a) en gewenst formulier (b)
In het gewenste formulier staat bij aanvraag het aanvraagnr en het nummer van de bijbehorende client; bedrag is read-only geworden. Ook de weergave van client en contactpersoon zijn gewijzigd. Geef aan welke van deze wijzigingen u kunt realiseren via de Modeler en welke via CIL-code.
-6-