Fra krav til objekter INF1050: Gjennomgang, uke 05
Kompetansemål Systemmodellering og systemperspektiv Utvikle abstrakte modeller av et system Ulike modeller representerer ulike perspektiver av systemet Eksternt perspektiv / Interaksjonsperspektiv / Strukturelt perspektiv / Adferdsperspektiv UML-diagrammer Innføring i grunnleggende UML-modellering Klassediagram Sekvensdiagram
Gjennomgang av ukesoppgaver Ukens tema: Fra krav til objekter
Oppgave 1 Modeller et klassediagram. Start med klassen Person, som har følgende innhold: Attributter navn Metoder getnavn() setnavn() adresse getaddresse() setadresse() telefon gettelefon() settelefon() epost getepost() setepost()
Oppgave 1: Løsningsforslag Modeller et klassediagram. UML-representasjon av klasser Form: Rektangel Utforming: Deles i tre Øverste: Klassens navn Midtre: Klassens attributter med type Nederste: Klassens metoder med returverdi
Oppgave 1: Løsningsforslag Modeller et klassediagram. Symboler for synlighet For resten av programmet Settes foran variabelnavn / metodenavn + public - private # protected ~ package
Oppgave 1: Løsningsforslag Modeller et klassediagram. Eksempel: Enkel klasse Hva forteller denne klassen oss? En klasse for studentobjekter Hva er navnet på klassen? Klassen heter Student Hvilke variabler inneholder klassen? Navn, adresse, ID, osv. Hvilke metoder inneholder klassen? Setters og getters
Oppgave 1: Løsningsforslag Modeller et klassediagram. Løsningsforslag: Person
Oppgave 2 Utvid klassediagrammet med klassen Kurs, som har følgende innhold: Attributter kursnavn Metoder setkursnavn() getkursnavn() kurskode registrerdeltaker() getdeltakere()
Oppgave 2: Løsningsforslag Utvid klassediagrammet med klassen Kurs : Løsningsforslag: Kurs
Oppgave 2: Løsningsforslag Utvid klassediagrammet med klassen Kurs : Oversikt over klassene Person og Kurs
Oppgave 3 Utvid klassediagrammet ved å benytte generalisering. Legg til klassen Student som en utvidelse av Person Foreslå særegne attributter og metoder for klassen. Representer i modellen at Student skal kunne ta ett eller flere Kurs.
Oppgave 3: Løsningsforslag Utvid klassediagrammet ved å benytte generalisering: Generalisering i UML Teknikk for å håndtere kompleksitet Vi identifiserer objekter som har flere felleskarakteristikker Lager en generalisert superklasse Eksempel: Både Student og Foreleser er Person Attributter og operasjoner fra superklassen kan assosieres med subklassene Dette foregår gjennom arv Subklassene kan ha særegne karakteristikker
Oppgave 3: Løsningsforslag Utvid klassediagrammet ved å benytte generalisering: Generalisering i UML Generalisering vises med en pil (uten fyll) fra subklassen til superklassen Eksempel: Ulike kontotyper som alle er av type Bankkonto Sparekonto / Brukskonto / Kredittkonto Særegne egenskaper
Oppgave 3: Løsningsforslag Utvid klassediagrammet ved å benytte generalisering: Forslag til klasse Student Særegne attributter Studentnummer (id) Liste over kurs studenten tar Metoder Setters og Getters Kan se for oss flere metoder
Oppgave 3: Løsningsforslag Utvid klassediagrammet ved å benytte generalisering: Utvider klassediagrammet ved generalisering Uttrykk forhold mellom klassene Student og kurs Kurs
Oppgave 3: Løsningsforslag Utvid klassediagrammet ved å benytte generalisering: Forhold mellom klasser Uttrykker hvilke relasjoner som gjelder mellom klassene
Oppgave 4 Utvid klassediagrammet ved å legge til klassen Foreleser. Foreslå særegne attributter og metoder for klassen. Representer i modellen at Foreleser skal kunne holde et Kurs.
Oppgave 4: Løsningsforslag Utvid klassediagrammet ved å legge til klassen Foreleser : Løsningsforslag: Foreleser Særegne attributter Ansattnummer (id) Liste over kurs Metoder Setters og getters
Oppgave 4: Løsningsforslag Utvid klassediagrammet ved å legge til klassen Foreleser :
Oppgave 4: Løsningsforslag Utvid klassediagrammet ved å legge til klassen Foreleser : Foreleser er også en Person
Oppgave 4: Løsningsforslag Utvid klassediagrammet ved å legge til klassen Foreleser : Foreleser kan holde ett eller flere kurs Hvert kurs må ha minst én foreleser
Oppgave 5 Hva er et sekvensdiagram?
Oppgave 5: Løsningsforslag Hva er et sekvensdiagram? Sekvensdiagram Interaksjonsdiagram Modell for interaksjon mellom objektene i et system Tar for seg et gitt bruksmønster (use case) Sekvensdiagrammer viser: Hvilke objekter som inngår i et bruksmønster Interaksjonen mellom objektene / Rekkefølge Data / informasjon som sendes mellom objektene
Oppgave 5: Løsningsforslag Hva er et sekvensdiagram? Eksempel I: Enkelt sekvensdiagram Hva forteller dette sekvensdiagrammet oss?
Oppgave 5: Løsningsforslag Hva er et sekvensdiagram? Eksempel II: Enkelt sekvensdiagram Hva forteller dette sekvensdiagrammet oss?
Oppgave 6 Hvorfor er det nyttig å benytte sekvensdiagrammer?
Oppgave 6: Løsningsforslag Hvorfor er det nyttig å benytte sekvensdiagrammer? Strukturelle modeller Viser hvordan systemer er organisert Klassediagrammer Statisk bilde av klassene i et program Viser oversikt over de ulike komponentene Adferdsmodeller Viser hvordan systemet oppfører seg under kjøring Hva skjer når systemet behandler stimuli fra omgivelsene? Data Må prosesseres av systemet Hendelser Inntreffer og fremkaller en systemrespons
Oppgave 6: Løsningsforslag Hvorfor er det nyttig å benytte sekvensdiagrammer? Sekvensdiagrammer: Nytteverdi Viktig å kunne vise hva som skjer / burde skje ved kjøretid Altså: Viser den dynamiske oppførselen til et program Oversikt over nødvendige klasser og objekter for å gjennomføre et bruksmønster Kan gjøre det enklere å implementere et system Svært kodenært diagram Mulig å generere kode automatisk fra et sekvensdiagram Viser hvordan objektene kommuniserer Oversikt over data som sendes mellom objektene, og rekkefølgen
Oppgave 7 Hvordan kan vi modellere hovedflyt og alternativ flyt i et sekvensdiagram?
Oppgave 7: Løsningsforslag Hvordan kan vi modellere hovedflyt og alternativ flyt i et sekvensdiagram? Modellering av flyt i UML Modellering av disjunkte hendelser Enten utfall A, eller utfall B Ikke begge Eksempel A. Brukeren finnes i systemet B. Brukeren finnes ikke i systemet Representeres med en ALT-blokk
Oppgave 7: Løsningsforslag Hvordan kan vi modellere hovedflyt og alternativ flyt i et sekvensdiagram? Eksempel I: Modellering av flyt i UML
Oppgave 7: Løsningsforslag Hvordan kan vi modellere hovedflyt og alternativ flyt i et sekvensdiagram? Eksempel II: Modellering av flyt i UML
Oppgave 8 Må et sekvensdiagram inneholde de samme objektene som et klassediagram?
Oppgave 8: Løsningsforslag Må et sekvensdiagram inneholde de samme objektene som et klassediagram? Ikke nødvendigvis Klassediagram Modellerer et helt system Inkluderer alle objekter og klasser som inngår i systemet Sekvensdiagram Modellerer et bruksmønster Inkluderer kun de nødvendige klassene
Oppgave 8: Løsningsforslag Må et sekvensdiagram inneholde de samme objektene som et klassediagram? Forhold mellom diagrammene Alt som inkluderes i et klassediagram, må ikke være med i et sekvensdiagram Ikke alt er like aktuelt Alt som inkluderes i et sekvensdiagram, må eksistere i klassediagrammet Alt man benytter seg av MÅ finnes
Oppgave 9 Et bilutleiefirma ønsker et informasjonssystem som kundebehandlerne kan benytte for utleie av biler. La oss se på den tekstlige beskrivelsen av bruksmønsteret for Reserver bil :
Oppgave 9: Tekstlig beskrivelse Navn: Reserver bil Aktør: Kundebehandler Prebetingelser: Ingen Postbetingelser: Leiekontrakt for spesifisert bil og kunde med gitte utleiedatoer er opprettet Hovedflyt 1. Kundebehandler velger tidsintervall (hentedato og returdato) 2. Systemet returnerer en liste over tilgjengelige biler innenfor spesifisert tidsintervall 3. Kundebehandler velger én av bilene 4. Systemet ber om kundenummer og finner kunden i systemet 5. Systemet bekrefter at bilen er reservert for den gitte perioden Alternativ flyt I, steg 2: Ingen tilgjengelige biler i valgt tidsintervall A1.1: Systemet opplyser om at det ikke er tilgjengelige biler i gitt intervall A1.2: Returner til steg 1 i hovedflyten (oppgi nytt tidsintervall) eller avslutt bruksmønsteret Alternativ flyt II, steg 4: Kunden er ikke registrert A2.1: Systemet opplyser om at kunden ikke er registret A2.2: Systemet oppretter ny kunde A2.3: Returner til steg 3 i hovedflyten
Oppgave 9: Sekvensdiagram Lag et sekvensdiagram for hovedflyten og én av de alternative flytene i den tekstlige beskrivelsen
Oppgave 9: Løsningsforslag Lag et sekvensdiagram for hovedflyten og én av de alternative flytene i den tekstlige beskrivelsen I. Identifiser de aktuelle objektene / aktørene Hvilket system er det snakk om? Reservasjonssystem for utleie av biler Har vi eventuelle undersystemer? Bilregister / Kunderegister (avhengig av hvordan systemet er implementert) Har vi eventuelle objekter? Kunde (objekter for de ulike kundene) / Kontrakt (objekt for utleiekontrakt) Hvem skal interagere med systemet? Kundebehandler
Oppgave 9: Løsningsforslag Lag et sekvensdiagram for hovedflyten og én av de alternative flytene i den tekstlige beskrivelsen I. Identifiser de aktuelle objektene / aktørene
Oppgave 9: Løsningsforslag Lag et sekvensdiagram for hovedflyten og én av de alternative flytene i den tekstlige beskrivelsen II. Oppsett (rekkefølgen gis av flyten) Aktøren (Kundebehandler) plasseres til venstre i sekvensdiagrammet Aktøren interagerer med Reservasjonssystemet 1. Kundebehandler oppgir tidsintervall for utleie
Oppgave 9: Løsningsforslag Lag et sekvensdiagram for hovedflyten og én av de alternative flytene i den tekstlige beskrivelsen II. Oppsett (rekkefølgen gis av flyten) Reservasjonssystemet interagerer Først med Bilregisteret 2. Returnerer liste over tilgjengelige biler Deretter med Kunderegisteret 4. Finner kunden i systemet
Oppgave 9: Løsningsforslag Lag et sekvensdiagram for hovedflyten og én av de alternative flytene i den tekstlige beskrivelsen II. Oppsett (rekkefølgen gis av flyten) Kundeobjekt må være på plass før avtalen tegnes Kontrakten opprettes til slutt 5. Systemet bekrefter at bilen er reservert for den gitte perioden
Oppgave 9: Løsningsforslag Lag et sekvensdiagram for hovedflyten og én av de alternative flytene i den tekstlige beskrivelsen II. Oppsett (rekkefølgen gis av flyten) Foreløpig oppsett Har nå et skjelett for hvordan sekvensdiagrammet skal se ut Kan starte å modellere den tekstlige beskrivelsen
Oppgave 9: Løsningsforslag Lag et sekvensdiagram for hovedflyten og én av de alternative flytene i den tekstlige beskrivelsen III. Modeller hendelsesforløpet ved å følge den tekstlige beskrivelsen Rekkefølgen fra hoved- og alternativ flyt Bestemmer rekkefølgen i diagrammet Hvert steg i den tekstlige beskrivelsen er tilnærmet lik en pil i diagrammet Data som sendes mellom objektene reflekteres i diagrammet Metodekall (med parametere) Heltrukket pil Returverdier Stiplet pil Create (for å opprette objekter) Stiplet pil
Oppgave 9: Løsningsforslag Lag et sekvensdiagram for hovedflyten og én av de alternative flytene i den tekstlige beskrivelsen 1. Kundebehandler velger tidsintervall (hentedato og returdato) 2. Systemet returnerer en liste over tilgjengelige biler (oppsøker Bilregister)
Oppgave 9: Løsningsforslag Lag et sekvensdiagram for hovedflyten og én av de alternative flytene i den tekstlige beskrivelsen 3. Kundebehandler velger én av bilene 4. Systemet ber om kundenummer og finner kunden i systemet (Kunderegister)
Oppgave 9: Løsningsforslag Lag et sekvensdiagram for hovedflyten og én av de alternative flytene i den tekstlige beskrivelsen Mulig utfall 1: Kunden finnes Vi oppretter en ALT-blokk for å håndtere alternativ flyt Hivs kunden finnes Returner kunde
Oppgave 9: Løsningsforslag Lag et sekvensdiagram for hovedflyten og én av de alternative flytene i den tekstlige beskrivelsen Mulig utfall 2: Kunden finnes ikke i systemet A2.1: Systemet opplyser om at kunden ikke er registrert A2.2: Systemet oppretter ny kunde
Oppgave 9: Løsningsforslag Lag et sekvensdiagram for hovedflyten og én av de alternative flytene i den tekstlige beskrivelsen 5. Systemet bekrefter at bilen er reservert for den gitte perioden Oppretter en kontrakt med Kunde, Bil, hentedato og returdato Ber om bekreftelse fra kunden og viser denne
Oppgave 9: Løsningsforslag
Oppgave 9: Løsningsforslag Lag et sekvensdiagram for hovedflyten og én av de alternative flytene i den tekstlige beskrivelsen Modellering av sekvensdiagrammer Desto mer detaljert den tekstlige beskrivelsen er Desto enklere blir det å modellere det tilhørende sekvensdiagrammet Tekstlig beskrivelse Viser interaksjon mellom bruker og system! Gir oss informasjon om hvem (bruker) og hva (objekter / metodekall / data) Følg rekkefølgen som gis fra beskrivelsen
Oppgave 9: Løsningsforslag Lag et sekvensdiagram for hovedflyten og én av de alternative flytene i den tekstlige beskrivelsen Tips til modellering av sekvensdiagrammer Utgangspunkt: Bruksmønster Lag en tekstlig beskrivelse (for bruksmønsteret) om denne ikke er gitt Beskriv hendelsesforløpet i detalj Vis interaksjonen Fra beskrivelsen Kartlegg aktører og objekter Følg oppsett gitt av rekkefølgen i beskrivelsen Modeller flyten (piler frem og tilbake) med dette som utgangspunkt Samsvar mellom sekvensdiagram og den tekstlige beskrivelsen
Spørsmål? Ta kontakt Yulai Fjeld ydfjeld @ uio.no Husk å inkludere emnekoden! Andre gruppelærere Delta på gruppetimene
Takk til Foilene er basert på Tidligere presentasjoner laget av Emilie Hallgren og Kristin Brænden Eksisterende forelesningsnotater av Dag Sjøberg og Yngve Lindsjørn Sommerville, I. (2010). Software Engineering (9th Edition). Pearson.
Takk for meg Neste uke : Mer UML-modellering