Requirements Engineering - Domeinmodel PDF

Summary

This document is a presentation covering Requirements Engineering and Domain Modeling. It discusses the concepts of classes, attributes, methods, and relationships. The document also includes a practical example of applying these concepts by showcasing how an application such as WhatsApp might be built.

Full Transcript

Requirements Engineering: Domeinmodel Vak code Semester 2 Sprint 6 – Week 2 – College 2 Gegevensmodelleren, hoe zat dat ook alweer? https://app.wooclap.com/HUS2REDOM Agenda 1. Introductie domeinmodel 2. Syntax Klassendiagram Klassen Attributen Relaties 3. Opdracht Leerdoelen Na afloop...

Requirements Engineering: Domeinmodel Vak code Semester 2 Sprint 6 – Week 2 – College 2 Gegevensmodelleren, hoe zat dat ook alweer? https://app.wooclap.com/HUS2REDOM Agenda 1. Introductie domeinmodel 2. Syntax Klassendiagram Klassen Attributen Relaties 3. Opdracht Leerdoelen Na afloop van het college Weet je wat een domeinmodel is en waarom je het gebruikt Ken je de syntax van een domeinmodel Snap je de link tussen domeinmodel en user Draagt bij aan leeruitkomsten stories Kent en begrijpt de basisprincipes Weet je wat een klasse en attributen zijn in een van procesanalyse en domeinmodel en hoe je deze noteert ontwerpmethoden om de samenhang Ken je de verschillende type relaties in van informatiesystemen te kunnen domeinmodellen en wanneer je welke gebruikt analyseren en herontwerpen, zoals UML, BPMN, DMN. Kun je een domeinmodel opstellen voor een specifieke casus Opstellen functioneel ontwerp ANALYSE ANALYSE VALIDATIE Opdracht/kwestie User stories Domeinmodel VALIDATIE Productvisie ANALYSE VERWERKING VERWERKING Use case descriptions Sitemap diagram Bedrijfsprocesanalyse Use case diagram VERWERKING Functioneel ontwerp Visie & Scope Actor descriptions Wireframes 1 Introductie domeinmodel Wat is dan een domeinmodel? Nou dit: Hoog-over weergave van entiteiten en hun onderlinge relatie Klassendiagram Verder te specificeren in een (UML) klassendiagram … In detail met klassen, attributen, methoden en relaties. Nu in woorden Een (UML-genoteerd) domeinmodel is een weergave van alle dingen en begrippen (entiteiten) die belangrijk zijn in de (context van) een ICT-oplossing Wat vind je terug in een domeinmodel? Gegevens Gedrag Relaties Kardinaliteit Unified Modeling Language (UML) In de jaren 90 van vorige eeuw ontstaan Hoofddoel: gemeenschappelijke taal bieden voor het modelleren van softwaresystemen Grote set van modellen voor Class Diagram softwareontwikkeling Sequence Diagram Door te standaardiseren wil UML de Activity Diagram communicatie tussen verschillende State Machine Diagram stakeholders in het Use Case Diagram softwareontwikkelingsproces verbeteren. … Stel: we willen Whatsapp ontwikkelen Welke entiteiten en attributen zouden we dan allemaal verwachten in het domeinmodel gegeven de volgende user stories? Als… …wil ik… …zodat… gebruiker mijn naam, foto en status kunnen andere gebruikers meer over mij te weten instellen komen gebruiker berichten kunnen sturen aan ik privé met iemand kan communiceren individuen gebruiker berichten kunnen sturen aan ik met een groep kan communiceren groepen gebruiker tekst-, foto- en stemberichten ik allerlei soorten communicatie met één app kunnen sturen kan verzorgen … Klasse Klassendiagram Kardinaliteit Soorten relaties (associaties) Klasse Gegevens Methodes/operaties (gedrag) Maar waarom een domeinmodel? Overzichtelijk Wat is de scope van de ICT-oplossing? Verificatie Gaan we het goed ontwikkelen? (juiste gedrag, juiste relaties) Verfijnen van het ontwerp Wat ontbreekt nog? Planning Wat ontwikkelen we wanneer? Validatie Zijn we het juiste aan het ontwikkelen? Documentatie Wat is er al ontwikkeld? Een klassendiagram lijkt op een conceptueel datamodel Klassendiagram Conceptueel datamodel Gegevens én gedrag Alleen gegevens Klassen, attributen, relaties en Entiteiten, attributen en relaties methodes Relaties met kardinaliteit Relaties met kardinaliteit Genoteerd als ERD Genoteerd als UML klassendiagram heeft Reservering registreert Boek heeft Lener heeft Uitlening registreert Exemplaar Deze foto van Onbekende auteur is gelicentieerd onder CC BY-SA 2 Syntax klassendiagram Klassen Attributen Methoden Relaties Er kunnen meerdere instanties worden gemaakt Klasse, Attribuut, Methoden van klasse auto Klasse: Auto Attributen Kleur Kenteken Merk Type Rijden() Parkeren() Methoden Wat is een klasse? Een klasse representeert een fysiek object of een concept uit de werkelijkheid Fysiek object Gebeurtenis Concept Auto Verkoop APK Wat is een attribuut? Attributen zijn eigenschappen die bij een klasse horen Auto Verkoop APK merk verkoopId resultaat type verkoopDatum bouwjaar bedrag kenteken Wat is een methode? Een methode beschrijft gedrag dat bij een klasse hoort Auto Verkoop APK Bijvoorbeeld: merk verkoopId resultaat verkoopDatum - aanmakenFactuur() type bouwjaar bedrag - registrerenVerkoop() kenteken aanmakenFactuur() - registreerKlant() - aanmakenReparatie() … Wat is een instantie? Een instantie is een specifiek exemplaar van een klasse (één regel) Klasse Instantie Auto Ford 11-AA-12 merk Wordt ook een record type Audi 10-TZ-RN of een object bouwjaar genoemd… kenteken Tesla 20-RKT-1 Ford AA-10-ZG Notatie klassen en attributen en methode Naam van klasse in enkelvoud en PascalCase TextMessage Naam van attributen PascalCase textMessageId in camelCase camelCase content snake_case kebab-case setText() Methoden getText() hebben haakjes Attributen hebben een datatype Dynamische datatypen (mogelijke Klant waarden liggen niet vooraf vast) klantId: integer naam: string geboortedatum: date Statisch datatype adres: string (mogelijke waarden liggen vast) woonplaats: string provincie: ProvincieType feliciteerMetVerjaardag() «Enumeration» toonVerkoophistorie() ProvincieType Enumeration = opsomming Groningen gebruik je bij (veelal) korte Friesland lijsten die niet vaak wijzigen Drenthe... Datatype kan ook andere klasse of array zijn Rit Coördinaat startTijd: datetime latitude: float eindTijd: datetime longitude: float startPunt: Coördinaat route: Array tijdZone() bepaalDuur() route: Array bepaalAfstand() Array = reeks Relaties tussen klassen Rit en Coördinaat zijn Rit (impliciet) gerelateerd startTijd: datetime eindTijd: datetime startPunt: Coördinaat route: Array Géén lijn tussen bepaalDuur() Rit en Coördinaat bepaalAfstand() Coördinaat latitude: float longitude: float tijdZone() Relatie liever expliciet Rit Rit Rit “startpunt” startTijd: datetime startTijd: datetime startTijd: datetime en “route” eindTijd: datetime startPunt: Coördinaat eindTijd: datetime startPunt: Coördinaat eindTijd: datetime zijn door route: Array bepaalDuur() bepaalDuur() bepaalAfstand() pijlrichting bepaalDuur() bepaalAfstand() bepaalAfstand() 1 1 onderdeel 0 van klasse route startpunt route 1 Rit 1..n 0..n Coördinaat Coördinaat latitude: float latitude: float longitude: float longitude: float tijdZone() tijdZone() VOORKEUR Relatietypen Associatie Overerving Compositie Verbijzondering van de relatie waarmee je Aggregatie specifiek gedrag de relatie kunt toevoegen Afhankelijkheid Associatie Kardinaliteit (als bij ERD) Relatietypen Bestelling Klant klantId: integer 1 0..n bestelnummer: integer product: string naam: string aantal: integer e-mail: string bedrag: float Gerichte associatie Relatietypen Rit Coördinaat 1 route ritId: integer latitude: float 0..n startTime: datetime longitude: float Relatieattribuut hoort bij klasse van waaruit pijl vertrekt Reflexieve associatie Relatietypen Medewerker personeelsnummer: integer functie: string leidinggevende naam: string e-mail: string Klasse verwijst met attribuut leidinggevende naar zichzelf omdat leidinggevende zelf ook een medewerker is Overerving (inheritance) Relatietypen Subklasse erft alle Message eigenschappen (attributen en Superklasse messageId: integer methoden) van de superklasse sent: datetime isRead: boolean sendMessage() PictureMessage en TextMessage zijn een bijzonder soort Message PictureMessage TextMessage Subklasse picture: BLOB text: string metadata: ExifType Compositie Relatietypen Huis Éen Huis bestaat uit meerdere Kamers. 1..n Kardinaliteit is altijd 1 Kamer De kamers bestaan niet (meer) als het huis niet (meer) bestaat! Aggregatie Relatietypen Éen Klas is een samenstelling Klas van meerdere Studenten. Kardinaliteit is altijd 1 1..n Student De student bestaat ook als de klas niet (meer) bestaat! Afhankelijkheid Het Tentamencijfer is afhankelijk van het bestaan van een Student én een Cursus Relatietypen Cursus Student ingeschrevenVoor cursuscode: string studentnummer: integer cursusnaam: string naam: string docent: string Tentamencijfer Beoordeling alleen mogelijk als student datum: date is ingeschreven voor een cursus cijfer: float Opdracht Hoe maak je een klassendiagram? Stappenplan 1. Klassen vinden 2. Attributen vinden } Ga op zoek naar zelfstandige naamwoorden 3. Datatypen bepalen 4. Relaties (associaties) bepalen 5. Gedrag van de applicatie in klassen onderbrengen 6. Specifiek gedrag in de relaties: Is er sprake van overerving? Is er sprake van afhankelijkheid? Is er sprake van sterk of zwak gekoppelde klassen? Opdracht Een bedrijf wil veel geld verdienen met het beschikbaar maken van een online multiplayer versie van het bekende (TV-)spel “LINGO”. De MVP bestaat alleen uit het raden van het woord, dus zonder score met een ballenbak. Jullie zijn als team gevraagd om hiervoor een UML klassendiagram te maken Breng de klassen, attributen, relaties en methoden in kaart en teken deze op een papier Jullie oplossingen worden door de klas bekeken en er wordt over gestemd Deze foto van Onbekende auteur is gelicentieerd onder CC BY-SA-NC Opdracht (achtergrond) https://www.youtube.com/watch?v=2xo-MbG6mlA&t=250s Opdracht (User stories) Als spelleider wil ik een spelronde kunnen starten, zodat ik een team de kans kan geven om een woord te gaan raden Als speler wil ik onderdeel zijn van een team, zodat ik gebruik kan maken van de gezamenlijke kennis van het team Als team wil ik een woord kunnen spelen in een spelronde (een spelbeurt), zodat ik weet of ik het juiste woord heb geraden Als team wil ik feedback krijgen op een onjuist woord, zodat ik daarmee mogelijk wel het woord kan raden Als spelleider wil ik dat de ronde afloopt als het woord na 5 keer niet juist is geraden, zodat het andere team een volgende ronde kan starten Als spelleider wil ik een spel kunnen spelen op basis van een bepaald aantal letters, zodat er voldoende variatie in het spel ontstaat Als spelleider wil ik een woordenlijst op basis van hoeveelheid letters kunnen inzien, zodat ik inzicht heb in welke woorden allemaal aan bod kunnen komen Opdracht (achtergrond) Er zijn twee teams van ieder twee spelers. Het spel bestaat uit meerdere spelrondes die door één van de teams wordt gespeeld, waarbij spelers beurtelings een vooraf bepaald woord mogen raden, dat uit een aantal letters (5 of meer) bestaat. Feedback wordt als volgt gegeven: de gekozen letters worden gemarkeerd: rood = goede letter op goede plek oranje = goede letter verkeerde plek leeg = verkeerde letter Een spelbeurt is gereed als het woord is geraden óf als dat na 5 pogingen niet is gebeurd. Opdracht 2/2 Iedereen krijgt twee stickers Loop met je groepje langs de modellen Bestudeer de modellen Deel een sticker uit bij modellen die jij het best vindt Model met meeste stickers bespreken we klassikaal Mogelijke oplossing… Let op: er is niet één juiste oplossing! Opdracht: recycle-platform mag door! Na maanden van vergaderen hebben de investeerders eindelijk naar jullie visie en scope document gekeken omtrent het recyclen van sneakers. De investeerders zijn om en zouden graag een functioneel ontwerp te zien krijgen voor het maatwerk systeem voor het recyclen van sneakers. Maak in je groepje: Een domeinmodel voor het systeem o Pak een stift en een van de grote vellen papier o Teken je domeinmodel Ter herinnering: Vanuit SDG-duurzaamheid is een initiatief gestart om oude schoenen te recyclen. Meerdere ophaallocaties met container. Klanten stimuleren deponeren schoenen. 1 keer per maand opgehaald, indien vol extra afspraak Schoenen gesorteerd op merk en type Deel merken terug naar desbetreffende leverancier, een deel Leger des Heils en een deel gerecycled. Winkels krijgen 0,10 EU per kilo  Ieder kwartaal een factuur, eerst volgende maand uitbetaald Klanten verzamelen punten voor korting Check je visie scope document! Samenvatting Een (UML genoteerd) domeinmodel is een weergave van alle dingen en begrippen (entiteiten) die belangrijk zijn in de (context van) de ICT-oplossing Bevat: Gegevens en gedrag Relaties Kardinaliteit Elementen domeinmodel: Klassen Attributen Methodes Relaties (verschillende soorten) Tot de volgende keer

Use Quizgecko on...
Browser
Browser