1.21k likes | 1.55k Views
UML. U nified M odeling L anguage. versie 3. Waarom modelleren?. Eenduidigheid: Afbeelding zegt meer dan 1000 woorden. Agenda. <- zie linker kantlijn. Naslagwerk. Verkrijgbaar in elke boekhandel . Programma van Eisen. Beschrijft: Doel Bereik Eisen Use Cases. Doel.
E N D
UML Unified Modeling Language
versie 3 Waarom modelleren? Eenduidigheid: Afbeelding zegt meer dan 1000 woorden
Agenda <- zie linker kantlijn
Naslagwerk Verkrijgbaar in elke boekhandel
Programma van Eisen Beschrijft: • Doel • Bereik • Eisen • Use Cases
Doel Voorbeeld: Doel van een webshop is om klanten via internet producten te laten bestellen
Bereik beschrijft kort en bondigwat applicatie wel en niet doet.
Eisen • Wat • Niet hoe
Use Cases product aan winkelwagen toevoegen bestelling plaatsen verkoper klant betalen via iDeal bestelling verzenden magazijnbediende
Alomtegenwoordige taal Consequente, voor zich sprekende, naamgeving
Onduidelijkheden Taak van ontwerper om onduidelijkheden weg te nemen Logboek t.b.v. traceerbaarheid, bijvoorbeeld voor als later dieper graven
Oefening Programma van Eisen • 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 Beschrijf voor maatwerksoftware die uw organisatie wil (laten) bouwen:
Doel: aangeven welke gegevens rol spelen Klassendiagram
Klasse product klant bestelling
Object product klant bestelling
Attribuut product klant bestelling naam merk prijs incl. btw nummer status besteld op voornaam tussenvoegsel achternaam straat huisnummer huisnummertoevoeging postcode plaats Kleine letters, tenzij taalkundig altijd met hoofdletter
Attribuuttypen klant bestelling voornaam : string tussenvoegsel : string achternaam : string straat : string huisnummer : integer huisnummertoevoeging : string postcode : string plaats : string nummer : integer status : process besteld op : datetime product naam : string merk : string prijs incl. btw : amount in €
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 nummer : integer status : process besteld op : datetime [0..1] product naam : string merk : string prijs incl. btw : amount in €
Enumeratie klant bestelling voornaam : string [0..1] 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 «enumeration» privilegeniveau man vrouw brons zilver goud
Associatie product klant bestelling
Multipliciteit product klant bestelling 1 * * *
Voorkom kip ei probleem klant bestelling 1 1..* klant bestelling 1 *
Tussenklasse klant bestelling 1 * 1 * product bestelregel aantal : integer 1 *
Composiet = Cascading Delete klant bestelling 1 * * product bestelregel 1 *
Aggregatie klant bestelling * * product bestelregel 1 * Klant met zijn bestellingen verwijderen? Wilt u deze klant inclusief zijn 5 bestellingen verwijderen? Verwijderen Annuleren
Navigeerbaarheid klant bestelling 1 * * product bestelregel 1 *
Naam van associatie einde vanaf transportboeking plaats * 1 naam : string 1 * naar
Referentieklasse Enumeratie: klant «enumeratie» privilegeniveau privilegeniveau : privilegeniveau brons zilver goud Referentieklasse: 1 * klant privilegeniveau naam : string
Afgeleide attributen klant bestelling /totaalbedrag bestelling incl. btw : amount in € 1 * * product bestelregel aantal : integer prijs per stuk incl. btw : amount in € /totaalbedrag bestelregel incl. btw: amount in € 1 *
Overerving «enumeration» bedgrootte boeking aantal personen : integer totaalprijs incl. btw: amount in € king size queen size budget size van transportboeking plaats hotelboeking 1 * 1 bedgrootte : bedgrootte ontbijt : boolean naam : string * naar «enumeration» vliegklasse busreis vliegreis business economy klasse : vliegklasse
Gebruikers en rollen gebruiker gebruikersnaam : string wachtwoord : password is klant : boolean is magazijnmedewerker : boolean is verkoper : boolean is produktbeheerder : boolean
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.
ORM: klasse klassendiagram: database-ontwerp: klant klant id (PK, int, notnull) voornaam (varchar, notnull) tussenvoegsel (varchar, null) achternaam (varchar, notnull) voornaam : string tussenvoegsel : string [0..1] achternaam : string product product id (PK, int, notnull) naam (varchar, notnull) prijsInclBtw (decimal, notnull) naam : string prijs incl. btw : amount in €
ORM: 1 op veel associatie database-ontwerp: klassendiagram: klant klant id (PK, int, notnull) 1 * bestelling bestelling id (PK, int, notnull) klantid (FK, int, notnull)
ORM: veel op veel associatie klassendiagram: database-ontwerp: les student id (PK, int, notnull) id (PK, int, notnull) student les * * student_les studentid (PK, FK, int, notnull) lesid (PK, FK, int, notnull)
ORM: 1 op 1 associatie klassendiagram: database-ontwerp: bestelling bestelling id (PK, int, notnull) 1 0..1 factuur factuur id (PK, FK, int, notnull)
ORM: overerving Delegate klassendiagram: database-ontwerp: boeking boeking id (PK) prijs prijs overnachting reis overnachting reis bedgrootte id (PK, FK) bedgrootte id (PK, FK) afstand afstand
ORM: overerving roll down klassendiagram: database-ontwerp: boeking prijs overnachting reis id (PK) prijs bedgrootte id (PK) prijs afstand overnachting reis bedgrootte afstand
ORM: overerving roll up klassendiagram: database-ontwerp: boeking boeking id (PK) soort prijs bedgrootte afstand prijs overnachting reis bedgrootte afstand
Oefening Klassendiagram • Maak klassendiagram met: • Klassen • Associaties • Multipliciteiten • Attributen • Indien nodig: Overerving
Processen d.m.v. Activity Diagram • Doel: Laten zien welke processen de objecten van een klasse doorlopen
Voorbeeld van bedrijfsproces proces van bestelling: klant magazijnmedewerker winkelwagen bestellen te betalen betalen versturen betaald bestelling verstuurd nummer : integer status : process besteld op : datetime [0..1]
Voorwaarde proces van bestelling: klant magazijnmedewerker winkelwagen [aantal bestelregels > 0] bestellen te betalen betalen versturen betaald bestelling verstuurd nummer : integer status : process besteld op : datetime [0..1]
Automatische Keuze proces vanaanvraagregel: medewerker garagebedrijf automatische goedkeuring medewerker leasemaatschappij afkeuren nieuw afgekeurd [automatisch afgewezen] handmatig te beoordelen aangevraagd aanvragen [anders] [automatisch akkoord] goedgekeurd gereed melden goedkeuren gereed gemeld
Handmatige Keuze proces vanaanvraagregel: medewerker garagebedrijf automatische goedkeuring medewerker leasemaatschappij afkeuren nieuw afgekeurd [automatisch afgewezen] handmatig te beoordelen aangevraagd aanvragen [anders] [automatisch akkoord] goedgekeurd gereed melden goedkeuren gereed gemeld
Handmatige Keuze proces vanaanvraagregel: medewerker garagebedrijf automatische goedkeuring medewerker leasemaatschappij nieuw afgekeurd [automatisch afgewezen] handmatig te beoordelen aangevraagd aanvragen beoordelen [anders] [automatisch akkoord] goedgekeurd gereed melden gereed gemeld