Download de presentatie
1
Unified Modeling Language
UML Unified Modeling Language
2
Waarom modelleren? Eenduidigheid:
versie 3 Waarom modelleren? Eenduidigheid: Afbeelding zegt meer dan 1000 woorden
3
Agenda <- zie linker kantlijn
4
Verkrijgbaar in elke boekhandel
Naslagwerk Verkrijgbaar in elke boekhandel
5
Programma van Eisen Beschrijft: Doel Bereik Eisen Use Cases
6
Doel Voorbeeld: Doel van een webshop is om klanten via internet producten te laten bestellen
7
beschrijft kort en bondig wat applicatie wel en niet doet.
Bereik beschrijft kort en bondig wat applicatie wel en niet doet.
8
Eisen Wat Niet hoe
9
product aan winkelwagen toevoegen
Use Cases product aan winkelwagen toevoegen verkoper klant bestelling plaatsen betalen via iDeal magazijnbediende bestelling verzenden
10
Alomtegenwoordige taal
Consequente, voor zich sprekende, naamgeving
11
Onduidelijkheden Taak van ontwerper om onduidelijkheden weg te nemen
Logboek t.b.v. traceerbaarheid, bijvoorbeeld voor als later dieper graven
12
Vragen?
13
Oefening Programma van Eisen
Beschrijf voor maatwerksoftware die uw organisatie wil (laten) bouwen: Doel Bereik Maak bereik klein, om kosten en doorlooptijd van realiseren laag te maken Eisen Use cases Dit is de basis voor uw functioneel ontwerp
14
Klassendiagram Doel: aangeven welke gegevens rol spelen
15
Klasse klant bestelling product
16
Object klant bestelling product
17
Attribuut Kleine letters, tenzij taalkundig altijd met hoofdletter
voornaam tussenvoegsel achternaam straat huisnummer huisnummertoevoeging postcode plaats klant bestelling nummer status besteld op product naam merk prijs incl. btw Kleine letters, tenzij taalkundig altijd met hoofdletter
18
Attribuuttypen voornaam : string tussenvoegsel : string
achternaam : string straat : string huisnummer : integer huisnummertoevoeging : string postcode : string plaats : string klant bestelling nummer : integer status : process besteld op : datetime product naam : string merk : string prijs incl. btw : amount in €
19
Optionele attributen klant bestelling voornaam : string [0..1]
tussenvoegsel : string [0..1] achternaam : string straat : string huisnummer : integer huisnummertoevoeging : string [0..1] postcode : string plaats : string klant bestelling nummer : integer status : process besteld op : datetime [0..1] product naam : string merk : string prijs incl. btw : amount in €
20
Enumeratie klant bestelling voornaam : string [0..1] nummer : integer
tussenvoegsel : string [0..1] achternaam : string geslacht : geslacht [0..1] straat : string huisnummer : integer huisnummertoevoeging : string [0..1] postcode : string plaats : string privilegeniveau : privilegeniveau nummer : integer status : process besteld op : datetime [0..1] product naam : string merk : string prijs incl. btw : amount in € «enumeration» geslacht man vrouw «enumeration» privilegeniveau brons zilver goud
21
Associatie klant bestelling product
22
Multipliciteit 1 * * * multipliciteit: Aantal geassocieerde objecten:
klant bestelling product 1 * * * 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
Voorkom kip ei probleem
klant bestelling 1 1..* klant bestelling 1 *
24
Tussenklasse klant bestelling 1 * bestelregel aantal : integer 1 *
product 1 *
25
Composiet = Cascading Delete
klant bestelling 1 * * product bestelregel 1 *
26
Aggregatie klant bestelling * * product bestelregel 1 *
Klant met zijn bestellingen verwijderen? Wilt u deze klant inclusief zijn 5 bestellingen verwijderen? Verwijderen Annuleren
27
Navigeerbaarheid klant bestelling 1 * * product bestelregel 1 *
28
Naam van associatie einde
vanaf transportboeking * 1 plaats naam : string * 1 naar
29
Referentieklasse Enumeratie: Referentieklasse: klant «enumeratie»
privilegeniveau privilegeniveau : privilegeniveau brons zilver goud Referentieklasse: klant 1 * privilegeniveau naam : string
30
Afgeleide attributen klant bestelling
/totaalbedrag bestelling incl. btw : amount in € 1 * * product bestelregel 1 aantal : integer prijs per stuk incl. btw : amount in € /totaalbedrag bestelregel incl. btw: amount in € *
31
Overerving hotelboeking «enumeration» bedgrootte king size queen size
budget size bedgrootte : bedgrootte ontbijt : boolean boeking aantal personen : integer totaalprijs incl. btw: amount in € plaats naam : string 1 * van naar transportboeking vliegreis klasse : vliegklasse «enumeration» vliegklasse business economy busreis
32
Gebruikers en rollen gebruiker gebruikersnaam : string
wachtwoord : password is klant : boolean is magazijnmedewerker : boolean is verkoper : boolean is produktbeheerder : boolean
33
Telefoonnummer type string
34
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
Object Relational Mapping
36
ORM: klasse voornaam : string tussenvoegsel : string [0..1]
achternaam : string klant product naam : string prijs incl. btw : amount in € klassendiagram: id (PK, int, not null) voornaam (varchar, not null) tussenvoegsel (varchar, null) achternaam (varchar, not null) klant product naam (varchar, not null) prijsInclBtw (decimal, not null) database-ontwerp:
37
ORM: 1 op veel associatie
klant bestelling id (PK, int, not null) klantid (FK, int, not null) database-ontwerp: klassendiagram: klant 1 * bestelling
38
ORM: veel op veel associatie
klassendiagram: database-ontwerp: student les studentid (PK, FK, int, not null) lesid (PK, FK, int, not null) student_les id (PK, int, not null) student les * *
39
ORM: 1 op 1 associatie klassendiagram: database-ontwerp: factuur
id (PK, FK, int, not null) id (PK, int, not null) bestelling bestelling 1 0..1 factuur
40
ORM: overerving Delegate
klassendiagram: database-ontwerp: id (PK, FK) bedgrootte overnachting reis afstand boeking id (PK) prijs boeking prijs overnachting reis bedgrootte afstand
41
ORM: overerving roll down
klassendiagram: database-ontwerp: id (PK) prijs bedgrootte overnachting reis afstand boeking prijs overnachting reis bedgrootte afstand
42
ORM: overerving roll up
klassendiagram: database-ontwerp: boeking id (PK) soort prijs bedgrootte afstand boeking prijs overnachting reis bedgrootte afstand
43
Vragen?
44
Oefening Klassendiagram
Maak klassendiagram met: Klassen Associaties Multipliciteiten Attributen Indien nodig: Overerving
45
Processen d.m.v. Activity Diagram
Doel: Laten zien welke processen de objecten van een klasse doorlopen
46
Voorbeeld van bedrijfsproces
proces van bestelling: klant magazijnmedewerker winkelwagen bestellen te betalen betaald betalen versturen verstuurd bestelling nummer : integer status : process besteld op : datetime [0..1]
47
[aantal bestelregels > 0]
Voorwaarde proces van bestelling: klant magazijnmedewerker winkelwagen [aantal bestelregels > 0] bestellen te betalen betaald betalen versturen verstuurd bestelling nummer : integer status : process besteld op : datetime [0..1]
48
Automatische Keuze proces van aanvraagregel: medewerker garagebedrijf
goedkeuring medewerker leasemaatschappij afkeuren nieuw afgekeurd [automatisch afgewezen] handmatig te beoordelen aangevraagd aanvragen [anders] [automatisch akkoord] gereed melden goedgekeurd goedkeuren gereed gemeld
49
Handmatige Keuze proces van aanvraagregel: medewerker garagebedrijf
automatische goedkeuring medewerker leasemaatschappij afkeuren nieuw afgekeurd [automatisch afgewezen] handmatig te beoordelen aangevraagd aanvragen [anders] [automatisch akkoord] gereed melden goedgekeurd goedkeuren gereed gemeld
50
Handmatige Keuze proces van aanvraagregel: medewerker garagebedrijf
automatische goedkeuring medewerker leasemaatschappij nieuw afgekeurd [automatisch afgewezen] handmatig te beoordelen aangevraagd aanvragen [anders] beoordelen [automatisch akkoord] gereed melden goedgekeurd gereed gemeld
51
Impliciete Merge proces van aanvraagregel: medewerker garagebedrijf
automatische goedkeuring medewerker leasemaatschappij nieuw afgekeurd [automatisch afgewezen] handmatig te beoordelen aangevraagd aanvragen [anders] beoordelen [automatisch akkoord] gereed melden goedgekeurd gereed gemeld
52
Verwijderen afh v status
proces van aanvraagregel: medewerker garagebedrijf automatische goedkeuring medewerker leasemaatschappij verwijderd verwijderen nieuw afgekeurd [automatisch afgewezen] handmatig te beoordelen aangevraagd aanvragen [anders] beoordelen [automatisch akkoord] gereed melden goedgekeurd gereed gemeld
53
betalings-herinnering incassobureau inschakelen
Timer proces van factuur: systeem boekhouder te versturen betaald versturen naar klant te betalen betaling koppelen na 1 week betalingsherinnering te versturen betalings-herinnering versturen betalingsherinnering verstuurd na 10 werkdagen incassobureau in te schakelen incassobureau ingeschakeld incassobureau inschakelen
54
Veel Ingangsstatussen
proces van factuur: systeem boekhouder te versturen betaald versturen naar klant te betalen betaling koppelen na 1 week betalingsherinnering te versturen betalings-herinnering versturen betalingsherinnering verstuurd na 10 werkdagen incassobureau in te schakelen incassobureau ingeschakeld incassobureau inschakelen
55
betalings-herinnering incassobureau inschakelen
Geen Ingangsstatus proces van factuur: systeem boekhouder te versturen betaald versturen naar klant te betalen betaling koppelen na 1 week betalingsherinnering te versturen betalings-herinnering versturen betalingsherinnering verstuurd na 10 werkdagen incassobureau in te schakelen incassobureau ingeschakeld incassobureau inschakelen
56
Parallelle activiteiten
proces van bestelling: klant systeem boekhouder magazijn- medewerker winkelwagen verstuurd te versturen bestelling versturen afgehandeld bestellen factuur versturen betaling koppelen betaald te factureren te betalen
57
Eenvoudig subproces afgehandeld proces van bestelling: klant systeem
boekhouder magazijn- medewerker winkelwagen verstuurd te versturen bestelling versturen afgehandeld bestellen proces van factuur: factuur versturen betaling koppelen betaald te factureren te betalen
58
Apart subproces afgehandeld proces van bestelling: klant systeem
magazijn- medewerker winkelwagen verstuurd te versturen bestelling versturen afgehandeld bestellen proces van factuur proces van factuur: systeem boekhouder factuur versturen betaling koppelen betaald te factureren te betalen
59
Signaal proces van bestelling: afgehandeld klant systeem magazijn-
medewerker factuur is betaald winkelwagen besteld te versturen bestellen factuur creëren bestelling versturen verstuurd proces van factuur: afgehandeld systeem boekhouder factuur is betaald te factureren factuur versturen te betalen betaling koppelen betaald
60
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
Schermstroom komt later
Inlogscherm [anders] Inloggen Toon modusloos bericht “gebruikersnaam en/of wachtwoord incorrect”. Overzicht belacties [gebruikersnaam en wachtwoord zijn correct] Volgende belactie Toon debiteur van volgende belactie. Belactie Debiteurdetails Uitloggen Uitloggen
62
Create, Read, Update, Delete komt later
63
Vragen?
64
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
Rollen & Autorisaties Doel:
Aangeven welke rollen gebruikers kunnen hebben, en wat deze gebruikers kunnen (mogen) doen.
66
Zwembanen magazijnmedewerker klant winkelwagen bestellen te betalen
betaald versturen verstuurd proces van bestelling: bestelling nummer : integer status : process besteld op : datetime [0..1]
67
CRUD matrix Create Read Update Delete klant product- beheerder C R U D
magazijn- medewerker R klant eigen C R U D bestelling C R U1D1 eigen bestelregel C R U1D1 eigen product R indien de status van de bestelling ‘winkelwagen’ is 1
68
Attributen in CRUD matrix
klant product- beheerder magazijn- medewerker klant C R U D R eigen R bestelling C R U1D1 R eigen R bestelregel C R U1D1 eigen R R prijs incl. btw R eigen R R product R C R U D R indien de status van de bestelling ‘winkelwagen’ is 1
69
Associaties in CRUD matrix
klant plaats transportboeking van verkoper planner eigen C R U D C R D1 R R U indien de status van de reis ‘nog niet definitief’ is 1 naar plaats naam : string 1 * van naar transportboeking
70
Verwijderen afhankelijk van status
proces van reparatie- of onderhoudsactiviteit: medewerker garagebedrijf automatische goedkeuring medewerker leasemaatschappij verwijderd verwijderen nieuw afgewezen [automatisch afgewezen] aangevraagd handmatig te beoordelen aanvragen [anders] beoordelen [automatisch akkoord] gereed melden akkoord gereed gemeld
71
Vragen?
72
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
Navigatie: Schermstroomdiagram
Doel: Aangeven hoe gebruiker tussen de schermen van de applicatie navigeert
74
wachtwoord zijn correct]
Voorbeeld Schermstroom van debiteurenbeheerder: Inlogscherm [anders] Inloggen Toon modusloos bericht “gebruikersnaam en/of wachtwoord incorrect”. Overzicht belacties [gebruikersnaam en wachtwoord zijn correct] Volgende belactie Toon debiteur van volgende belactie. Belactie Debiteurdetails Uitloggen Uitloggen
75
wachtwoord zijn correct] «pseudostate» menubalk
Hoofdmenu Schermstroom van productbeheerder: Inlogscherm Inloggen toon modusloos bericht “gebruikersnaam en/of wachtwoord incorrect” [anders] [gebruikersnaam en wachtwoord zijn correct] Uitloggen «pseudostate» menubalk Producten Klanten Bestellingen Creëren Annuleren Sluiten Sluiten «popup» Nieuw product «popup» Klant «popup» Bestelling Opslaan Annuleren «popup» Product
76
Navigeren via hoofdvenster...
Product naam Kaas, jong, 1 kilogram prijs incl. btw € 12 Opslaan Annuleren
77
...of via popup Product naam Kaas, jong, 1 kilogram prijs incl. btw €
12 Opslaan Sluiten
78
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
Vragen?
80
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
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
Toevoegen aan winkelwagen
Voorbeeld Startscherm van een klant: Gebruikersaccount aanmaken Inloggen Apple In winkelwagen: Zoek producten 1 x iPad 3G 3 x Magic Mouse € 398 € 195 Prijs inc. btw Product Merk Aantal Totaal inc. btw € 593 iPad Apple € 320 Bestellen iPad 3G Apple € 398 iPhone 4GS Apple € 495 MacBook Air 11 inch 64 GB Apple € 869 MacBook Air 13 inch 128 GB Apple € 999 Magic Mouse Apple € 65 Magic Trackpad Apple € 85 Toevoegen aan winkelwagen
83
Moet kloppen met schermstroom
Schermstroom van een klant: toevoegen aan winkelwagen startscherm bestellen aangegeven aantallen toevoegen aan winkelwagen en aantallen weer leeg maken winkelwagen betalen gebruikersaccount aanmaken [anders] aanmelden gebruikersaccount aanmaken sluiten [ingelogd] inloggen toon modusloos bericht “gebruikersnaam en/of wachtwoord incorrect” betalen «modal» bevestiging betaling [anders] [gebruikersnaam en wachtwoord zijn correct] «modal» betalen via iDeal bevestigen
84
Attributen van klassendiagram
Type van het attribuut: Schermelement: amount textbox met valutateken € boolean checkbox date date picker vrijdag 6 april 2012 ::: datetime of timestamp date picker met tijdbox vrijdag 6 april 2012 ::: 9:15 enumeratie radiogroep of dropdown keuze 1 keuze 2 keuze 3 of keuze 1 keuze 2 integer, float textbox string textbox time tijdbox 9:15
85
Associatie enkelvoudige multipliciteit
klant verkoper * 0..1 Situatie: Schermelement: Weinig elementen om uit te kiezen en genoeg ruimte beschikbaar radio groep keuze 1 keuze 2 keuze 3 Weinig elementen om uit te kiezen en weinig ruimte beschikbaar dropdown keuze 1 keuze 2 keuze 3 Veel elementen om uit te kiezen veld met selecteerknop keuze 1 …
86
Associatie meervoudige multipliciteit
klant verkoper * 0..1 Klanten Klant toevoegen… + Abel de Eerste x Benny van Beverwijk x Dirk Smets x Karel de Grote x Nico de Haas x Peter Pippeling x Stefan Klein Zwaaftink x
87
Duidelijke namen van knoppen
Opslaan? Wilt u de wijzigingen opslaan? Opslaan Niet opslaan Annuleren Opslaan? Wilt u de wijzigingen opslaan? Ja Nee Annuleren
88
Knop uitgrijzen Persoon voornaam tussenvoegsel achternaam *
straat & huisnummer * postcode & plaats * telefoon thuis 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
Helpteksten Nieuwe persoon voornaam tussenvoegsel achternaam
? achternaam straat & huisnummer ? postcode & woonplaats Het huisnummer is inclusief de eventuele toevoeging (bis, III hoog, a, etc.). telefoon thuis telefoon mobiel Creëren Annuleren
90
Defaultwaarden... Nieuw leasecontract Kenteken Ingangsdatum :::
Looptijd 36 maanden Winterbanden Brandstof Benzine Diesel Elektriciteit LPG Opslaan Annuleren
91
... of zekerheid dat bewust invullen
Nieuw leasecontract Kenteken * Ingangsdatum * ::: Looptijd * maanden Winterbanden * Brandstof * Benzine Diesel Elektriciteit LPG Opslaan Annuleren Velden met een * zijn verplicht
92
Niet-modale mededeling
De wijzigingen in klant Nico de Haas zijn opgeslagen. Klanten Klant toevoegen… + Abel de Eerste x Benny van Beverwijk x Dirk Smets x Karel de Grote x Nico de Haas x Peter Pippeling x Stefan Klein Zwaaftink x
93
Bevestigen of ongedaan maken
De klant Jan Jansen is verwijderd ongedaan maken Klanten + Klant toevoegen… Abel de Eerste x Benny van Beverwijk x Dirk Smets x Karel de Grote x Nico de Haas x Peter Pippeling x Stefan Klein Zwaaftink x
94
Het CRUD patroon... + x x x x x x x Producten Nieuw product…
Kaas, belegen, 1 kilogram € 14,- x Kaas, jong, 1 kilogram € 12,- x Kaas, oud, 1 kilogram € 16,- x Kwark, halfvol, 500 gram € 3,- x Kwark, vol, 500 gram € 4,- x Melk, vol, 1 liter € 1,50 x Yoghurt, vol, 1 liter € 2,- x hoofdmenu Producten Creëren Annuleren Opslaan Annuleren Nieuw product Product
95
... CRUD patroon Nieuw product naam Slagroom, vol, 250 gram
prijs incl. btw € 3 Creëren Annuleren Product naam Kaas, jong, 1 kilogram prijs incl. btw € 12 Opslaan Sluiten
96
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
Vragen?
98
Oefening voor schermen
Teken de schermen van uw applicatie Maak schermstroomdiagram consistent ermee Maak alles consistent met eerder getekende diagrammen
99
Bedrijfslogicaregels
100
Meestal onderdeel van model
proces van bestelling: klant magazijnmedewerker bestelling * bestelregel winkelwagen bestellen te betalen betaald betalen versturen verstuurd
101
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
Voorwaarde in bedrijfsproces
backorderen te backorderen [anders] betaald [voldoende in voorraad] versturen te versturen
103
Voorwaarde in schermstroom
Inlogscherm Inloggen [anders] [gebruikersnaam en wachtwoord zijn correct] Overzicht belacties
104
Automatische gebeurtenis
Inlogscherm Inloggen Toon modusloos bericht “gebruikersnaam en/of wachtwoord incorrect”. [anders] [gebruikersnaam en wachtwoord zijn correct] Overzicht belacties
105
Vragen?
106
Oefening voor Bedrijfslogicaregels
Beschrijf de bedrijfslogicaregels van uw applicatie
107
Rapporten & Koppelingen
108
Rapporten Specification by Example Representatieve gegevens
Bijvoorbeeld meerdere exemplaren waar dat mogelijk moet zijn Tonen via schermstroom hoe gebruikers rapport kunnen opvragen
109
Koppelingen tussen systemen
webshop iDeal
110
Afhankelijkheden tussen systemen
controller model view
111
Afhankelijkheden tussen packages
user interface business logic entities
112
Vragen over de hele stof?
113
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
Van ontwerp naar realisatie
115
Scrum sprint 1 sprint 2 etc. sprint planning daily standup
sprint demo retrospective sprint 2 sprint planning sprint demo daily standup retrospective etc. tijd etc.
116
Product Backlog Debiteuren zien Openstaand bedrag van debiteur zien
Facturen zien Betalingen zien Betalingsherinneringen aanmaken Betalingsherinneringen zien Betalingsherinneringen versturen Contactmomenten loggen Contactmomenten zien
117
Rollen in een Scrum proces
product owner scrum master teamlid Het proces Ontwikkelaar Tester Grafisch ontwerper etc. Functioneel ontwerp
118
Iteratieplan sprint 1: Openstaande bedragen inzien
tijd sprint 2: Facturen en betalingen inzien etc. sprint 3: Herinneringen versturen sprint 4: Contactmomenten loggen
119
Modelgedreven Ontwikkeling
Modellen Sjablonen Code generatie Source code van werkende applicatie Modellen Engine Werkende applicatie Runtime interpretatie
120
Oefening Maak een product backlog op basis waarvan uw functioneel ontwerp gebouwd kan worden.
121
Veel modelleerplezier!
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.