1 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
UML
Unified Modeling Language
2 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Waarom modelleren?
Eenduidigheid:
Afbeelding zegt meer dan 1000 woorden
versie 3
3 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Agenda
<- zie linker kantlijn
4 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Naslagwerk
Verkrijgbaar in elke boekhandel
5 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Programma van Eisen
Beschrijft:• Doel• Bereik• Eisen• Use Cases
6 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Doel
Voorbeeld: Doel van een webshop is om klanten via internet producten te laten bestellen
7 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Bereik
beschrijft kort en bondigwat applicatie wel en niet doet.
8 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Eisen
• Wat
• Niet hoe
9 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
klant
magazijnbediende
verkoper
product aan winkelwagen
toevoegen
bestelling plaatsen
bestelling verzenden
Use Cases
betalen via iDeal
10 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Alomtegenwoordige taal
Consequente, voor zich sprekende,naamgeving
11 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Onduidelijkheden
Taak van ontwerper om onduidelijkheden weg te nemen
Logboek t.b.v. traceerbaarheid, bijvoorbeeld voor als later dieper graven
12 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Vragen?
13 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Oefening Programma van Eisen
• Doel• Bereik
Maak bereik klein, om kosten en doorlooptijd van realiseren laag te maken
• Eisen• Use casesDit is de basis voor uw functioneel ontwerp
Beschrijf voor maatwerksoftware die uw organisatie wil (laten) bouwen:
14 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Klassendiagram
Doel: aangeven welke gegevens rol spelen
15 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Klasse
klant bestelling product
16 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Object
klant bestelling product
17 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Attribuut
voornaamtussenvoegselachternaamstraathuisnummerhuisnummertoevoegingpostcodeplaats
klant bestelling
nummerstatusbesteld op
product
naammerkprijs incl. btw
Kleine letters, tenzij taalkundig altijd met hoofdletter
18 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Attribuuttypen
voornaam : stringtussenvoegsel : stringachternaam : stringstraat : stringhuisnummer : integerhuisnummertoevoeging : stringpostcode : stringplaats : string
klant bestelling
nummer : integerstatus : processbesteld op : datetime
product
naam : stringmerk : stringprijs incl. btw : amount in €
19 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Optionele attributen
voornaam : string [0..1]tussenvoegsel : string [0..1]achternaam : stringstraat : stringhuisnummer : integerhuisnummertoevoeging : string [0..1]postcode : stringplaats : string
klant bestelling
nummer : integerstatus : processbesteld op : datetime [0..1]
product
naam : stringmerk : stringprijs incl. btw : amount in €
20 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Enumeratie
voornaam : string [0..1]tussenvoegsel : string [0..1]achternaam : stringgeslacht : geslacht [0..1]straat : stringhuisnummer : integerhuisnummertoevoeging : string [0..1]postcode : stringplaats : stringprivilegeniveau : privilegeniveau
klant bestelling
product
nummer : integerstatus : processbesteld op : datetime [0..1]
naam : stringmerk : stringprijs incl. btw : amount in €
«enumeration»privilegeniveau
bronszilvergoud
«enumeration»geslacht
manvrouw
21 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Associatie
klant bestelling product
22 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Multipliciteit
1 * * *
klant bestelling product
multipliciteit: Aantal geassocieerde objecten:
1 precies 1 (afkorting van 1..1)
0..1 0 of 1
* 0 of meer (is afkorting van 0..*)
1..* 1 of meer
23 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Voorkom kip ei probleem
klant bestelling
1 1..*
klant bestelling
1 *
24 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Tussenklasse
klant bestelling
product
1 *
*
1 *
bestelregel
aantal : integer
1
25 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Composiet = Cascading Delete
klant bestelling
product
1 *
*bestelregel
1 *
26 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Aggregatieklant
product*
bestelregel
1 *
*
Klant met zijn bestellingen verwijderen?
Wilt u deze klant inclusief zijn 5 bestellingen verwijderen?
Verwijderen Annuleren
bestelling
27 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Navigeerbaarheid
klant bestelling
product
1 *
*
bestelregel
1*
28 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Naam van associatie einde
transportboeking plaats
naam : string1*
1*naar
vanaf
29 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Referentieklasse
privilegeniveau : privilegeniveau
klant «enumeratie»privilegeniveau
bronszilvergoud
Enumeratie:
Referentieklasse:
privilegeniveau
naam : string
klant1
*
30 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Afgeleide attributen
klant bestelling
product
1 *
*bestelregel
1*
aantal : integerprijs per stuk incl. btw : amount in €/totaalbedrag bestelregel incl. btw: amount in €
/totaalbedrag bestelling incl. btw : amount in €
31 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Overervingboeking
aantal personen : integertotaalprijs incl. btw: amount in €
hotelboeking
«enumeration»bedgrootte
king sizequeen sizebudget size
bedgrootte : bedgrootteontbijt : boolean
busreisvliegreis
klasse : vliegklasse
«enumeration»vliegklasse
businesseconomy
plaats
naam : string
1*
van
1*naar
transportboeking
32 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Gebruikers en rollen
gebruikersnaam : stringwachtwoord : passwordis klant : booleanis magazijnmedewerker : booleanis verkoper : booleanis produktbeheerder : boolean
gebruiker
33 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Telefoonnummer type string
34 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Layout van diagram
Maak de layout van diagrammen zo, dat de letters voldoende groot zijn als je ze op een beamer of in een ontwerpdocument toont.
35 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Object Relational Mapping
36 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
ORM: klasse
voornaam : stringtussenvoegsel : string [0..1]achternaam : string
klant
productnaam : stringprijs incl. btw : amount in €
klassendiagram:
id (PK, int, not null)voornaam (varchar, not null)tussenvoegsel (varchar, null)achternaam (varchar, not null)
klant
productid (PK, int, not null)naam (varchar, not null)prijsInclBtw (decimal, not null)
database-ontwerp:
37 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
ORM: 1 op veel associatie
klant
bestelling
1
*
klassendiagram:
klant
bestellingid (PK, int, not null)klantid (FK, int, not null)
id (PK, int, not null)
database-ontwerp:
38 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
ORM: veel op veel associatie
klassendiagram:
student les* *
database-ontwerp:
student les
studentid (PK, FK, int, not null)lesid (PK, FK, int, not null)
student_les
id (PK, int, not null) id (PK, int, not null)
39 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
ORM: 1 op 1 associatie
klassendiagram:
bestelling
factuur
1
0..1
database-ontwerp:
factuurid (PK, FK, int, not null)
id (PK, int, not null)bestelling
40 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
ORM: overerving Delegate
klassendiagram:
bedgrootteovernachting reis
afstand
boekingprijs
database-ontwerp:
id (PK, FK)bedgrootte
overnachting reisid (PK, FK)afstand
boekingid (PK)prijs
41 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
ORM: overerving roll down
klassendiagram:
bedgrootteovernachting reis
afstand
database-ontwerp:
id (PK)prijsbedgrootte
overnachting reisid (PK)prijsafstand
boekingprijs
42 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
ORM: overerving roll up
klassendiagram:
bedgrootteovernachting reis
afstand
boekingprijs
database-ontwerp:
boekingid (PK)soortprijsbedgrootteafstand
43 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Vragen?
44 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Oefening Klassendiagram
• Maak klassendiagram met:• Klassen• Associaties• Multipliciteiten• Attributen• Indien nodig: Overerving
45 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Processen d.m.v. Activity Diagram
• Doel: Laten zien welke processen de objecten van een klasse doorlopen
46 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Voorbeeld van bedrijfsproces
magazijnmedewerkerklant
winkelwagen
bestellen
te betalen
betalen betaald versturen
verstuurd
proces van bestelling:
bestelling
nummer : integerstatus : processbesteld op : datetime [0..1]
47 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Voorwaarde
magazijnmedewerkerklant
winkelwagen
bestellen
te betalen
betalen betaald versturen
verstuurd
proces van bestelling:
bestelling
nummer : integerstatus : processbesteld op : datetime [0..1]
[aantal bestelregels > 0]
48 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Automatische Keuzeproces van aanvraagregel:
automatischegoedkeuring
medewerkerleasemaatschappij
medewerkergaragebedrijf
nieuw
aanvragen
gereed melden
goedgekeurd
afkeuren
[and
ers]
handmatigte beoordelenaangevraagd
[automatischakkoord]
gereed gemeld
afgekeurd[automatischafgewezen]
goedkeuren
49 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Handmatige Keuze
automatischegoedkeuring
medewerkerleasemaatschappij
medewerkergaragebedrijf
nieuw
aanvragen
gereed melden
goedgekeurd
afkeuren
proces van aanvraagregel:
[and
ers]
handmatigte beoordelenaangevraagd
[automatischakkoord]
gereed gemeld
afgekeurd[automatischafgewezen]
goedkeuren
50 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Handmatige Keuze
automatischegoedkeuring
medewerkerleasemaatschappij
medewerkergaragebedrijf
nieuw
aanvragen
gereed melden
goedgekeurd
beoordelen
proces van aanvraagregel:
[and
ers]
handmatigte beoordelenaangevraagd
[automatischakkoord]
gereed gemeld
afgekeurd[automatischafgewezen]
51 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Impliciete Merge
automatischegoedkeuring
medewerkerleasemaatschappij
medewerkergaragebedrijf
nieuw
aanvragen
gereed melden
goedgekeurd
beoordelen
proces van aanvraagregel:
[and
ers]
handmatigte beoordelenaangevraagd
[automatischakkoord]
gereed gemeld
afgekeurd[automatischafgewezen]
52 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Verwijderen afh v status
automatischegoedkeuring
medewerkerleasemaatschappij
medewerkergaragebedrijf
nieuw
aanvragen
gereed melden
goedgekeurd
beoordelen
proces van aanvraagregel:
[and
ers]
handmatigte beoordelenaangevraagd
[automatischakkoord]
gereed gemeld
afgekeurd[automatischafgewezen]
verwijderenverwijderd
53 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Timer
boekhoudersysteem
te betalen betaling koppelen
betaald
proces van factuur:
versturen naar klant
betalings-herinneringversturen
te versturen
na 1 week
na 10 werkdagen
incassobureau inschakelen
incassobureauingeschakeldincassobureau in te schakelen
betalingsherinnering te versturen
betalingsherinnering verstuurd
54 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Veel Ingangsstatussen
boekhoudersysteem
te betalen betaling koppelen
betaald
proces van factuur:
versturen naar klant
betalings-herinneringversturen
te versturen
na 1 week
na 10 werkdagen
incassobureau inschakelen
incassobureauingeschakeldincassobureau in te schakelen
betalingsherinnering te versturen
betalingsherinnering verstuurd
55 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Geen Ingangsstatus
boekhoudersysteem
te betalen betaling koppelen
betaald
proces van factuur:
versturen naar klant
betalings-herinneringversturen
te versturen
na 1 week
na 10 werkdagen
incassobureau inschakelen
incassobureauingeschakeldincassobureau in te schakelen
betalingsherinnering te versturen
betalingsherinnering verstuurd
56 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Parallelle activiteiten
boekhouder magazijn-medewerker
systeemklant
winkelwagen
te versturen bestellingversturen
proces van bestelling:
factuur versturen betaald
te betalen
betaling koppelen
te factureren
bestellen
verstuurd
afge
hand
eld
57 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Eenvoudig subproces
boekhouder magazijn-medewerker
systeem
proces van factuur:
klant
winkelwagen
te versturen bestellingversturen
proces van bestelling:
factuur versturen betaald
te betalen
betaling koppelen
te factureren
bestellen
verstuurd
afge
hand
eld
58 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Apart subproces
systeem
boekhoudersysteem
magazijn-medewerker
klant
winkelwagente versturen bestelling
versturen
proces van bestelling:
factuur versturen betaald
te betalen
betaling koppelen
te factureren
bestellen
verstuurd
afge
hand
eld
proces van factuur
proces van factuur:
59 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Signaal
magazijn-medewerker
systeemklant
winkelwagen
bestellenbesteld factuur
creëren
te versturen bestelling
versturen
afgehandeldproces van bestelling:
factuur is betaald
verstuurd
boekhoudersysteem
betaaldte betalen betaling koppelen
proces van factuur:
factuur is betaald
factuurversturen
te factureren
afgehandeld
60 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Layout van diagram
Maak de layout van diagrammen zo, dat de letters voldoende groot zijn als je ze op een beamer of in een ontwerpdocument toont.
61 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Schermstroom komt later
Uitloggen
Inlogscherm
Overzicht belacties
[gebruikersnaam enwachtwoord zijn correct]
Inloggen
[and
ers]
Toon modusloos bericht “gebruikersnaam en/of wachtwoord incorrect”.
Volgende belactie
Toon debiteur van volgende belactie.
UitloggenBelactie
Debiteurdetails
62 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Create, Read, Update, Delete komt later
63 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Vragen?
64 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Oefening voor Processen
• Inventariseer van welke klassen in uw applicatie de objecten een bedrijfsproces doorlopen
• Teken voor elk van deze klassen:• voor elke gebruikersrol die in het proces iets
doet een zwembaan• de activiteiten• tussen deze activiteiten de statussen in de
vorm van pijlen• Indien dit weinig processen zijn: vraag docent om
extra oefeningen
In StarUML teken je een guard d.m.v. Annotation > Text
65 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Rollen & Autorisaties
Doel:• Aangeven welke rollen gebruikers kunnen hebben,• en wat deze gebruikers kunnen (mogen) doen.
66 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Zwembanen
magazijnmedewerkerklant
winkelwagen
bestellen
te betalen
betalen betaald versturen
verstuurd
proces van bestelling:
bestellingnummer : integerstatus : processbesteld op : datetime [0..1]
67 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
CRUD matrix
klant
klant eigenC R U D
product R
bestelling C R U1D1
eigen
bestelregel C R U1D1
eigen
indien de status van de bestelling ‘winkelwagen’ is1
magazijn-medewerker
R
R
R
R
product-beheerder
C R U D
R
R
R
Create Read Update Delete
68 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Attributen in CRUD matrix
klant
bestelling
product
bestelregelprijs incl. btw
product-beheerderklant
magazijn-medewerker
C R U1D1
eigenC R U D
C R U1D1
R
R
eigen
eigen
indien de status van de bestelling ‘winkelwagen’ is1
eigen
C R U D R
R
R
R
R
R
R
R
R
69 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Associaties in CRUD matrix
klant
plaats
transportboekingvan
verkoperklant planner
eigenC R U D
C R D1
R
R Ueigen
indien de status van de reis ‘nog niet definitief’ is1
eigen
C R U DR
R
R
R
R
R
R
naar R Ueigen
RR
plaatsnaam : string
1*van
1*naar
transportboeking
70 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Verwijderen afhankelijk van status
proces van reparatie- of onderhoudsactiviteit:
automatischegoedkeuring
medewerkerleasemaatschappij
medewerkergaragebedrijf
nieuw
aanvragen
gereed melden
akkoord
beoordelen
[and
ers]
handmatigte beoordelenaangevraagd
[automatischakkoord]
gereed gemeld
afgewezen [automatischafgewezen]
verwijderen
verwijderd
71 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Vragen?
72 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Oefening Rollen & Autorisaties
• Maak CRUD matrix voor uw applicatie
• Waar nodig, aparte rijen voor attributen en associaties
• Wanneer alleen op eigen objecten, geef dit dan aan met het woord ‘eigen’
• Als andere beperkingen, voetnoten
73 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Navigatie: Schermstroomdiagram
Doel:• Aangeven hoe gebruiker tussen de schermen van
de applicatie navigeert
74 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Voorbeeld
Uitloggen
Inlogscherm
Overzicht belacties
[gebruikersnaam enwachtwoord zijn correct]
Inloggen
[and
ers]
Toon modusloos bericht “gebruikersnaam en/of wachtwoord incorrect”.
Volgende belactie
Toon debiteur van volgende belactie.
UitloggenBelactie
Debiteurdetails
Schermstroom van debiteurenbeheerder:
75 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Hoofdmenu
Inlogscherm
Producten
[gebruikersnaam enwachtwoord zijn correct]
Inloggen
[and
ers]
«pseudostate» menubalk
toon modusloos bericht “gebruikersnaam en/of wachtwoord incorrect”
Klanten Bestellingen
«popup»Nieuw product
AnnulerenCreëren
«popup»Product
AnnulerenOpslaan
«popup»Klant
«popup»Bestelling
Uitloggen
Sluiten Sluiten
Schermstroom van productbeheerder:
76 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Navigeren via hoofdvenster...
Product
prijs incl. btw
naam Kaas, jong, 1 kilogram
12
Opslaan Annuleren
€
77 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
...of via popup
Product
prijs incl. btw
naam Kaas, jong, 1 kilogram
12
Opslaan Sluiten
€
78 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Layout van diagram
Maak de layout van je diagrammen zo, dat ze grote letters hebben als je ze op een beamer wilt laten zien.
79 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Vragen?
80 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Oefening voor Schermnavigatie
• Teken het hoofdmenu van uw applicatie
• Teken de schermstroomdiagrammen voor uw applicatie
StarUML toont een choice als een cirkel i.p.v. een diamant
81 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Schermen
Doel:• Aangeven wat je ziet op de schermen,
• en hoe ze werken
Mooie vormgeving valt buiten bereik van deze cursus, dus besteed daar nu geen tijd aan!
82 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Voorbeeld
In winkelwagen:
InloggenGebruikersaccount aanmaken
1 x iPad 3G3 x Magic Mouse
Totaal inc. btw
Bestellen
Apple Zoek producten
iPadiPad 3G
iPhone 4GSMacBook Air 11 inch 64 GB
MacBook Air 13 inch 128 GBMagic Mouse
Magic Trackpad
MerkProductPrijsinc. btw Aantal
€ 320
€ 398€ 495€ 869€ 999
Apple
AppleAppleAppleApple
Toevoegen aan winkelwagen
€ 398€ 195
€ 65Apple
€ 85Apple
€ 593
Startscherm van een klant:
83 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Moet kloppen met schermstroom
aanmelden
startscherm
inloggen
[and
ers]
toevoegen aanwinkelwagen
toon modusloos bericht “gebruikersnaam en/of wachtwoord incorrect”
bestellen
winkelwagen
«modal»betalen via
iDeal
[ingelogd]
[and
ers]
betalen
gebruikersaccountaanmaken
gebruikersaccountaanmaken
[gebruikersnaam enwachtwoord zijn correct]
betalen
bevestigen
sluiten
aangegeven aantallentoevoegen aan winkelwagen en
aantallen weer leeg maken
«modal»bevestiging
betaling
Schermstroom van een klant:
84 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Attributen van klassendiagram
boolean
enumeratie
integer, floatstring
Schermelement:Type van het attribuut:
checkbox
radiogroep of dropdown
textboxtextbox
amount textbox met valutateken €
datetime of timestamp date picker met tijdbox
date date picker vrijdag 6 april 2012 :::
vrijdag 6 april 2012 :::
time tijdbox
9:15
9:15
keuze 1keuze 2
keuze 1keuze 2keuze 3
of
85 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Associatie enkelvoudige multipliciteit
klant verkoper
* 0..1
Schermelement:Situatie:
Weinig elementen om uit te kiezen engenoeg ruimte beschikbaar
radio groep
keuze 1 …
keuze 1keuze 2keuze 3
keuze 1keuze 2keuze 3
Weinig elementen om uit te kiezen enweinig ruimte beschikbaar
dropdown
Veel elementen om uit te kiezen veld met selecteerknop
86 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Associatie meervoudige multipliciteit
klant verkoper
* 0..1
Abel de EersteBenny van Beverwijk
Dirk SmetsKarel de Grote
Nico de HaasPeter Pippeling
Stefan Klein Zwaaftink
Klanten Klant toevoegen…
x+
xxxxxx
87 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Duidelijke namen van knoppen
Opslaan?
Wilt u de wijzigingen opslaan?
Opslaan Niet opslaan Annuleren
Opslaan?
Wilt u de wijzigingen opslaan?
Ja Nee Annuleren
88 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Knop uitgrijzen
tussenvoegsel
postcode & plaats *
telefoon thuis
Persoonvoornaam
straat & huisnummer *
achternaam *
telefoon mobiel
Opslaan Annuleren Velden met een * zijn verplicht
Opslaan is niet mogelijk omdat er geen achternaam, straat, huisnummer, postcode en plaats is ingevuld.
89 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Helpteksten
tussenvoegsel
postcode & woonplaats
telefoon thuis
Nieuwe persoonvoornaam
straat & huisnummer
achternaam
telefoon mobiel
Creëren Annuleren
?
?
Het huisnummer is inclusief de eventuele toevoeging
(bis, III hoog, a, etc.).
90 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Defaultwaarden...
Ingangsdatum
Brandstof
Nieuw leasecontractKenteken
Winterbanden
Looptijd 36
Opslaan Annuleren
:::maanden
BenzineDieselElektriciteitLPG
91 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
... of zekerheid dat bewust invullen
Ingangsdatum *
Brandstof *
Nieuw leasecontractKenteken *
Winterbanden *
Looptijd *
Opslaan Annuleren
:::maanden
BenzineDieselElektriciteitLPG
Velden met een * zijn verplicht
92 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Niet-modale mededeling
Abel de EersteBenny van Beverwijk
Dirk SmetsKarel de Grote
Nico de HaasPeter Pippeling
Stefan Klein Zwaaftink
Klanten Klant toevoegen…
x+
xxxxxx
De wijzigingen in klant Nico de Haas zijn opgeslagen.
93 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Bevestigen of ongedaan maken
Abel de EersteBenny van Beverwijk
Dirk SmetsKarel de Grote
Nico de HaasPeter Pippeling
Stefan Klein Zwaaftink
Klanten Klant toevoegen…
x+
xxxxxx
De klant Jan Jansen is verwijderd. ongedaan maken
94 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Het CRUD patroon...
Kaas, belegen, 1 kilogram € 14,-Kaas, jong, 1 kilogram € 12,-
Kaas, oud, 1 kilogram € 16,-Kwark, halfvol, 500 gram € 3,-
Kwark, vol, 500 gram € 4,-Melk, vol, 1 liter € 1,50
Yoghurt, vol, 1 liter € 2,-
Producten Nieuw product…
x+
xxxxxx
Producten
hoofdmenu
Nieuw product
AnnulerenCreëren
Product
AnnulerenOpslaan
95 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
... CRUD patroon
Nieuw product
prijs incl. btw
naam Slagroom, vol, 250 gram
3
Creëren Annuleren
€
Product
prijs incl. btw
naam Kaas, jong, 1 kilogram
12
Opslaan Sluiten
€
96 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Layout van diagram
Maak de layout van schermen zo, dat de letters voldoende groot zijn als je ze op een beamer of in een ontwerpdocument toont.
97 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Vragen?
98 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Oefening voor schermen
• Teken de schermen van uw applicatie
• Maak schermstroomdiagram consistent ermee
• Maak alles consistent met eerder getekende diagrammen
99 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Bedrijfslogicaregels
100 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Meestal onderdeel van model
bestelling
*bestelregel
magazijnmedewerkerklant
winkelwagen
bestellen
te betalen
betalenbetaald
versturen
verstuurd
proces van bestelling:
101 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Soms in tekst beschrijven
Voorbeeld
Als een klant voor € 1000 (excl. btw) of meer tegelijk bestelt, krijgt hij 2% korting.
Altijd kort en duidelijk beschrijven!
102 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Voorwaarde in bedrijfsproces
versturen[v
oldo
ende
in v
oorr
aad][anders]
backorderen
te backorderen
te versturenbetaald
103 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Voorwaarde in schermstroom
Inlogscherm
Overzicht belacties
[gebruikersnaam enwachtwoord zijn correct]
Inloggen
[and
ers]
104 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Automatische gebeurtenis
Inlogscherm
Overzicht belacties
[gebruikersnaam enwachtwoord zijn correct]
Inloggen
[and
ers]
Toon modusloos bericht “gebruikersnaam en/of wachtwoord incorrect”.
105 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Vragen?
106 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Oefening voor Bedrijfslogicaregels
• Beschrijf de bedrijfslogicaregels van uw applicatie
107 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Rapporten & Koppelingen
108 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Rapporten
• Specification by Example
• Representatieve gegevens• Bijvoorbeeld meerdere exemplaren waar dat
mogelijk moet zijn
• Tonen via schermstroom hoe gebruikers rapport kunnen opvragen
109 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Koppelingen tussen systemen
webshop
iDeal
110 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Afhankelijkheden tussen systemen
model view
controller
111 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Afhankelijkheden tussen packages
user interface
business logic
entities
112 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Vragen over de hele stof?
113 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Oefening
• Maak uw functioneel ontwerp volledig en correct
• Maak voorbeelden van de te genereren rapporten
• Geef aan welke systemen een rol spelen
• Geef de afhankelijkheden tussen deze systemen weer
In StarUML teken je een interface als interface + association, en wordt een dependency op een interface op een andere manier getoond.
114 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Van ontwerp naar realisatie
115 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Scrum
sprint 1
sprint planning
sprint demo
daily standup
retrospective
daily standupdaily standupetc.
tijd etc.
sprint 2
sprint planning
sprint demo
daily standup
retrospective
daily standupdaily standupetc.
116 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Product Backlog
Openstaand bedrag van debiteur zien
Facturen zien
Betalingsherinneringen versturen
Contactmomenten loggen
Debiteuren zien
Betalingen zien
Betalingsherinneringen aanmaken
Betalingsherinneringen zien
Contactmomenten zien
117 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Rollen in een Scrum proces
product owner scrum master
Het proces
teamlid
Ontwikkelaar
Tester
Grafisch ontwerper
etc.Functioneel ontwerp
118 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Iteratieplan
sprint 1: Openstaande bedragen inzien
tijd
sprint 2: Facturen en betalingen inzien
etc.
sprint 3: Herinneringen versturen
sprint 4: Contactmomenten loggen
119 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Modelgedreven Ontwikkeling
Modellen
Sjablonen
Code generatie
Source code van werkende
applicatie
Modellen
Engine
Werkende applicatieRuntime interpretatie
120 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Oefening
• Maak een product backlog op basis waarvan uw functioneel ontwerp gebouwd kan worden.
121 Hendrik Jan van RandenInleiding UML
Realisatie
Klassen
Processen
Rollen
Navigatie
Schermen
Logica
Koppelen
Eisen
Inleiding
Veel modelleerplezier!