Use case drevet design med UML



Like dokumenter
UML- Use case drevet analyse og design. Domenemodeller Sekvensdiagrammer Use case realisering med GRASP patterns Klassediagram - designmodeller

UML-Unified Modeling Language. Prosess-oversikt. Use case realisering

UML-Unified Modeling Language

Use case drevet design med UML. I dag

I dag UML. Domenemodell visualisering av konsepter. Eksempel. Hvordan finne domeneklasser?

UML 1. Use case drevet analyse og design Kirsten Ribu

Use case modellen. Use case modellering i analysefasen. Hva er en Aktør? Hva er et Use case?

Use case modellen. Use case modellering i analysefasen. Hva er en Aktør? Hva er et Use case? Use case modellering. Eksempel

Mer om objektorientering og UML

IN2001: Kravhåndtering, modellering, design

Mer om objektorientering og UML

Krav analyse og objektorientert

Mer$om$objektorientering$og$UML

IN2000:&Kravhåndtering,&modellering,&design

God objektorientert design Flere UML diagrammer UML Distilled kap. 7,8, 9 Using UML, kap. 11, 12, 14 Kirsten Ribu

Spesifikasjon av Lag emne

Ansvarsdrevet OO: CRC og UML Sekvensdiagrammer

Use Case-modellering. INF1050: Gjennomgang, uke 04

Hensikten med denne delen av kurset. Objektets egenskaper. Objektorientering hva er det? Best practises ved programvareutvikling. Kravspesifikasjonen

Ulike typer prosessmodeller. Systemutvikling. Utviklingsmodeller. Prosessmodell - faser

Fra krav til objektdesign

Spesifikasjon av Lag emne. Kursregistrering bruksmønstermodell (ny versjon) Dagens forelesning. Fra krav til objektdesign

UKE 11 UML modellering og use case. Gruppetime INF1055

Oppsummering av hovedområdene i kurset LO 135A Kirsten Ribu

Spesifikasjon av Lag emne. Kursregistrering bruksmønstermodell. Dagens forelesning. Fra krav til objekter

Kravanalyse og objekt-orientert analyse

Gruppenavn. Prosjektnavn Beskrivelse av design For Navn på systemet. Versjon <1.0>

Metode for ansvarsdrevet OO. Dagens forelesning. Delegering av ansvar i en trelagsarkitektur

Løsningsforslag til Case. (Analysen)

Beskjed fra Skagestein

Spesifikasjon av Lag emne. Kursregistrering g bruksmønstermodell. Dagens forelesning. Fra krav til objekter

Modellering av krav. INF1050: Systemutvikling 11. februar Universitetslektor Yngve Lindsjørn

Produktrapport Gruppe 9

Fra krav til objekter. INF1050: Gjennomgang, uke 05

Hva gjøres i design? 19. september 2002, Tore Berg Hansen, TISIP

Objektorientering og UML. INF1050: Gjennomgang, uke 06

Modellering av krav. INF1050: Systemutvikling 07. februar Førstelektor Yngve Lindsjørn

Design Patterns - mønstre

UKE 13 Mer UML modellering. Gruppetime INF1055 Julie Hagen Nilsen & Maria Stolinski

Objektorientert design av kode. Refaktorering.

Kravspesifikasjon med UML use case modellering. Erik Arisholm

Use case modellering

Prosjektgruppen: Gjermund Gartmann Tommy Jansson Margrethe Store. Prosjektledelse: Margrethe Store Kvalitetssikring: Tommy Jansson

GJENNOMGANG UKESOPPGAVER 4 USE CASE MODELLERING HELGA NYRUD & KRISTIN BRÆNDEN

NB! Endring i undervisningsplanen

Design Patterns - mønstre. Kirsten Ribu

Forside. Eksamen i IN1030 for Våren Ingen hjelpemidler tillatt.

GJENNOMGANG UKESOPPGAVER 7 REPETISJON

Objektorientert design av kode. Refaktorering.

Universitetet i Oslo Institutt for informatikk. Eskild Busch. UML hefte

UNIVERSITETET I OSLO

Kravspesifikasjon. 14. oktober 2002

Leveranse 2. September 27, 2002

Hensikten med denne delen av kurset. Objektorientering hva er det? Objektets egenskaper. Best practises ved programvareutvikling

UNIVERSITETET I OSLO

Eksamen INF

OptimalJ-kurs UIO Oppsummering av kurset. De ulike modellene egenskaper og formål

Metode for ansvarsdrevet OO med UML. Dagens forelesning. Hovedflyt for Meld på kurs. Delegering av ansvar i en trelagsarkitektur

Obligatorisk oppgave 5: Modellering av krav

GJENNOMGANG UKESOPPGAVER 6 MER OM OBJEKTORIENTERING OG UML

Metode for ansvarsdrevet OO. Dagens forelesning. Delegering av ansvar i en trelagsarkitektur

Unified Modeling Language (UML) Kravspesifikasjon med UML use case modellering. UML diagrammer. Notasjon som støtter opp under modellbasert

Tom Røise IMT2243 : Systemutvikling 1. IMT2243 Systemutvikling 26. februar Klassediagrammet. Klasse

Dagens forelesning. o Litt mer om design med UML sekvensdiagrammer. Sentralisert og delegert kontrollstil

UML klassediagrammer

Kravspesifikasjon med. UML diagrammer. systemutvikling. Dokumentasjon av systemets krav, arkitektur, design og implementasjon

1 Introduksjon til designmodellen - del B 2

Metode for ansvarsdrevet OO med UML. Dagens forelesning. Hovedflyt for Meld på kurs. Delegering g av ansvar i en trelagsarkitektur

Dagens forelesning. o Litt mer om design med UML sekvensdiagrammer. Sentralisert og delegert kontrollstil

o UML klassediagrammer

Metode for ansvarsdrevet OO. Dagens forelesning. Delegering av ansvar i en trelagsarkitektur

Innholdsfortegnelse INNHOLDSFORTEGNELSE... 2 REVISJONSOVERSIKT...4 INTRODUKSJON MED FORUTSETNINGER... 5

Kravspesifikasjon med. Erik Arisholm

Etter uke 6 skal du. Introduksjon til objektorientert programmering. Hva skjedde ~1967? INF1001. Grunnkurs i objektorientert programmering

INF 5120 Modellering med objekter

INF Oblig 2. Hour Registration System (HRS)

Hva gjøres i analysen? 2. oktober 2001, Tore Berg Hansen, TISIP

Innhold uke 7. Objektorientert programmering i Python: Introduksjon. Lite tilbakeblikk: Programflyt og skop. Lite tilbakeblikk: Funksjoner er uttrykk

INF 1050 BRUK AV MODELLERINGSVERKTØYET RATIONAL ROSE

Kapittel 7 & 8. Kravspesifikasjoner & Data design. Thomas Tjøstheim og Thomas Edvinsen. 20 September Kapittel 7 & 8 p.1/20

Gjennomgang av eksamen IN1030 Gruppe 4

Forside Eksamen INF1055 V17

Forfattere: Daníelsdóttir, Drífa Meland, Maiken Mijalkovic, Biljana Svendsen, Simen H. Gruppelærer: Zarei, Amir Hossein. 5.

AMS-case. Eksemplifisering av modellbasert. tilnærming til design av brukergrensesnitt

University of Oslo Department of Informatics. INF Modellering med objekter Oblig 2, V2004. Skrevet av:

programeksempel Et større En større problemstilling Plan for forelesingen Problemstillingen (en tekstfil) inneholdt ordet "TGA"

Dagens forelesning. Java 13. Rollefordeling (variant 1) Rollefordeling (variant 2) Design av større programmer : fordeling av roller.

Model Driven Architecture (MDA) Interpretasjon og kritikk

Prosjektrettet systemarbeid

UNIVERSITETET I OSLO

Introduksjon til objektorientert programmering

Utvikling fra skallet og inn

Prosjektoppgave våren 2007

INF1050 Systemutvikling

Gjennomgang av prøveeksamen. Gruppetime INF1055 Julie Hagen Nilsen & Maria Stolinski

Object interaction. Innhold. Abstraksjon Grunnleggende programmering i Java Monica Strand 3. september 2007.

MARE NOSTRUM. Del 2 Kravspesifikasjon

INF Obligatorisk prosjektarbeid INNHOLD:

Læringsmål uke 7. Objektorientert programmering i Python: Introduksjon. Innhold uke 7. Lite tilbakeblikk: Programflyt og skop

Fra krav til modellering av objekter

Transkript:

Use case drevet design med UML Bente Anda 26.09.2005 23.09.04 INF3120 1 I dag Domenemodeller System sekvensdiagrammer Operasjonskontrakter GRASP patterns Designmodeller med sekvens- og klassediagram 26.09.05 INF3120 2 1

Domenemodell Domenemodellen brukes i objekt-orientert analyse Domenemodellen viser konsepter i applikasjonsdomenet, konseptuelle klasser, og forholdet mellom dem: ideer, ting, objekter. Hensikten med domenemodellen er å forstå konseptene og få en oversikt over terminologi. 26.09.05 INF3120 3 Domenemodell forts. Domenemodellen beskrives med UML klassediagrammer uten metoder, og utarbeides gjennom flere iterasjoner. Use case modell og domenemodell utformes parallelt. Domenemodellen fanger opp informasjonen om entiteter som er beskrevet i use casene. Use casene presiseres ved utforming av domenemodellen. Domenemodellen er et viktig verktøy for å sjekke at use casene er beskrevet med riktig detaljeringsnivå. Det er bedre å spesifisere for mange konseptuelle klasser enn for få. 26.09.05 INF3120 4 2

Hvordan finne domeneklasser? Lag en liste over kandidater til klasser: 2 forskjellige tilnærminger: Lag en liste over kandidater til domeneklasser (for eksempel basert på liste s.140-141) Finn substantiver og substantivutrykk i use case beskrivelsene Ta bort unødvendige klasser Noen klasser kan vise seg å være attributter. 26.09.05 INF3120 5 Assosiasjoner En assosiasjon er en relasjon mellom to klasser som viser at det er en sammenheng mellom dem. En assosiasjon kan ha et navn Brukes i domenemodellen hvis informasjon om relasjonen skal lagres. Hver ende av assosiasjonen kalles en rolle, en rolle kan ha: Multiplisitet Navn Navigasjon 26.09.05 INF3120 6 3

Eksempel Assosiasjonsnavn Spørreskjema 1 Består av 1 * Spørsmål Assosiasjonen går i begge retninger. Liste over mulige assosiasjoner på s. 155 26.09.05 INF3120 7 Attributter Inkluder de attributter som det må lagres informasjon om i følge use casene Attributter er vanligvis datatyper, f.eks int, Boolean, string, dato Modeller konsepter som klasser, ikke attributter. Hvis det er tvil, lag en klasse 26.09.05 INF3120 8 4

Domenemodell for restaurantsystemet 26.09.05 INF3120 9 System sekvensdiagrammer System sekvensdiagrammer visualiserer operasjonene som genereres av aktørene. System sekvensdiagrammene identifiserer nødvendig input til use casene (brukergrensesnitt, kommunikasjon med andre systemer) Input til konstruksjon av system sekvensdiagrammene er domenemodellen (utgangspunkt for klasser) og use case. 26.09.05 INF3120 10 5

Eksempel: Spørreskjemagenerator Kravspesifikasjon: Et meningsmålingsinstitutt ønsker å få laget et system der spørreskjema er på Internett/Web. Systemet skal gjøre det enkelt å legge et spørreskjema ut på Web, enkelt for andre å fylle ut skjemaene på Web. Svarene skal lagres på et format som kan eksporteres til andre verktøy (f eks "strukturert tekst" som kan importeres til et regneark). Deltakerne skal kunne lagre svarene underveis og fortsette utfyllingen av skjemaet senere. Til noen av spørsmålene er det nødvendig å lese en del tekst. Meningsmålingsinstituttet ønsker å ha en enkel oversikt over svarene som er kommet inn, f eks hvor mange som har svart på de ulike spørsmålene. Det som skal lages er altså ikke et enkelt spørreskjema på Web, men en spørreskjema-generator" for Web. 26.09.05 INF3120 11 Domenemodell med assosiasjoner 26.09.05 INF3120 12 6

Use case og system sekvensdiagram Use case Generer spørreskjema 1. Ansatt ber om å få opprette nytt spørreskjema 2. Systemet ber om overskrift, innledning og antall spørsmål som spørreskjemaet skal bestå av. 3. Ansatt skriver inn nødvendig informasjon 4. Systemet sjekker at alle felt er utfylt 5. Systemet viser et spørreskjema der tekst til spørsmål skal fylles inn. 6. Ansatt skriver inn tekst og evnt. svaralternativ til hvert av spørsmålene 7. Systemet sjekker at riktig antall spørsmål har fått tekst 8. Ansatt ber om at spørreskjema blir lagret 9. Systemet lagrer spørreskjemaet Loop: Ansatt opprettspørreskjema leggtilinfo(overskrift, innledning, antall) skjema, tekstfelt leggtilspørsmål(tekst,svaralternativ) antall lagre() :Spørreskjemagenerator 26.09.05 INF3120 13 Operasjonskontrakter Kontrakter med pre- og post betingelser på operasjoner i use casene for å gjøre use casene mer presise. Prebetingelser beskriver forutsetningene for å gjennomføre operasjonen. Postbetingelser beskriver endringer i tilstandene til objektene i domene modellen. 26.09.05 INF3120 14 7

Eksempel på kontrakt Operasjon: leggtilinfo(overskrift, innledning, antall) Kryssreferanse: Use case Generer spørreskjema Prebetingelse: Et nytt spørreskjema er opprettet Postbetingelser: - spørreskjema.overskrift er blitt overskrift - spørreskjema.innledning er blitt innledning - antall spørsmål er opprettet og assosiert med spørreskjema 26.09.05 INF3120 15 Sekvensdiagrammer Interaksjonsdiagrammer er det fremste verktøyet for tilordning av ansvar til objektene Vi fokuserer her på sekvensdiagrammer For hvert use case lages et sekvensdiagram for normal hendelsesflyt og komplekse og hyppig forekommende variasjoner Stegene i use casene vises som meldinger som sendes mellom objektene Sekvensdiagrammene viser hvordan objekter kommuniserer ved hjelp av meldinger (metodekall) Sekvensdiagrammene lages parallelt med klassediagrammer 26.09.05 INF3120 16 8

Forts. sekvensdiagrammer: fra krav til design Et UML sekvensdiagram viser hendelsesflyten i et use case viser interaksjoner (samarbeid) mellom objekter i systemet viser rekkefølgen på meldingene (abstrakt) som sendes mellom objektene kan brukes til å identifisere metodene (konkret) til objektene i systemet 26.09.05 INF3120 17 Objekt design Hvilke er de riktige objektene? Hva er ansvarsområdene til objektene, hva skal de vite og hva skal de gjøre? Hvem samarbeider objektene med? Objektene i er av typene kant-, kontrol- og entitetsobjekter Entitetsobjekter holder data Modellerer varig informasjon og assosiasjoner Ofte abstraksjoner av entiteter i den virkelige verden (domene-klasser) Kan finnes ved å lete etter substantiver i kravspesifikasjoner Kantobjekter kommuniserer med omverdenen Modellerer systemets grensesnitt Kontrollobjekter kontrollerer interaksjonene i hele systemet eller i et use case Modellerer oppførsel til et eller flere use case Håndterer kontrollflyten Merk også at en klasse betyr forskjellige ting avhengig av perspektiv 26.09.05 INF3120 18 9

Objektdesign: Ansvarstilordning Ansvar er knyttet til objektet i form av dets oppførsel Handling: Opprette objekt, beregning, initiere handlinger i andre objekter, kontrollere og koordinere handlinger i andre objekter. Kunnskap: Vite om private data, vite om relaterte objekter, vite om ting som det kan utlede eller beregne Ansvar er ikke det samme som metoder, men metoder implementeres for å oppfylle ansvaret 26.09.05 INF3120 19 Kjennetegn på god design En god utforming gjør den jobben den er ment å gjøre En god utforming er enkel og elegant Eleganse innebærer å finne akkurat riktig abstraksjonsnivå En god utforming er gjenbrukbar, utvidbar og enkel å forstå Et godt objekt har et lite og veldefinert ansvarsområde Et godt objekt skjuler implementasjonsdetaljer fra andre objekter - Grady Booch 26.09.05 INF3120 20 10

Modularisering Høy kohesjon Et objekt skal bare ha ansvar for relaterte ting Lav kobling Et objekt skal ha samarbeid med et begrenset antall andre objekter 26.09.05 INF3120 21 Høy kohesjon Kohesjon er et mål på hva slags ansvar et objekt har og hvor fokusert ansvaret er Et objekt som har moderat ansvar og utfører et begrenset antall oppgaver innenfor ett funksjonelt område har høy kohesjon Objekter med lav kohesjon har ansvar for mange ting innen ulike funksjonelle områder 26.09.05 INF3120 22 11

Lav kobling Kobling er et mål på hvor sterkt et objekt er knyttet til andre objekter Et objekt med sterk kobling er avhengig av mange andre objekter noe som kan gjøre endring vanskelig 26.09.05 INF3120 23 Patterns Patterns er navngitte retningslinjer for hvordan ansvar skal fordeles i ulike situasjoner. Patterns representerer sammenstilling av erfaring Patterns brukes i prosessen med å forfine sekvensdiagrammer GRASP Patterns of General Principles in Assigning Responsibilites = Mønster for problemløsning Sentrale patterns er Ekspertprinsippet, Kontrollobjektprinsippet og Skaperprinsippet 26.09.05 INF3120 24 12

Ekspertprinsippet (Information Expert) Problem: Hva er det generelle prinsipp for å tilordne ansvar til objekter? Løsning: La det objektet som har kunnskapen (dataene) også behandle den. Hvordan: Begynn med å formulere ansvarsområdet: Hvilket objekt har ansvar for å vite om det totale antall svar på undersøkelsen? Hvilket objekt har ansvar for å ha oversikt over alle bookingene? Se i domenemodellen etter en klasse som kan brukes eller utvides til å lage en designklasse. Det finnes en klasse Oversikt i domenemodellen, lag en designklasse Oversikt og gi den ansvaret for kunnskap om antall svar med metoden visantallsvar(). Det finnes ingen klasse som har oversikt over alle bookingene, lag en designklasse Restaurant og gi den ansvaret for dette. 26.09.05 INF3120 25 Skaperprinsippet (Creator) Problem: Hvem er ansvarlig for å opprette nye objekter? Løsning: La det objektet som må vite om de nye objektene lage dem Hvordan: Gi klasse B ansvaret for å opprette et objekt av klasse A dersom ett av følgende er sant: B inneholder A-objekter B registrerer A-objekter B bruker A-objekter B har data som sendes til A-objektet når det opprettes 26.09.05 INF3120 26 13

Forts. skaperprinsippet Se i domenemodellen etter mulige klasser Designklassen Restaurant oppretter bookinger Vi trenger en SpørreskjemaGenerator klasse for å opprette nye skjemaer 26.09.05 INF3120 27 Kontrollobjektprinsippet (Controller) Problem Hvem er ansvarlig for å håndtere systemhendelser (en hendelse som genereres av en ekstern aktør)? Løsning: Tilordne ansvar for å håndtere en systemhendelse til en av følgende klasser: En klasse som representerer systemet eller subsystemet (fasadekontroller) En klasse som representerer et use case scenario der systemhendelsen forkommer ofte Navn: SpørreskjemaHåndterer håndterer use caset Generer spørreskjema Bookingsystem håndterer alle use casene i restaurantsystemet Kontrollobjekter delegerer oppgaver til andre objekter 26.09.05 INF3120 28 14

Generer spørreskjema 26.09.05 INF3120 29 Designmodellen Lag design-klassediagram parallelt med sekvensdiagrammer Lag noen sekvensdiagrammer, oppdater klassediagrammet, utvid sekvensdiagrammet etc. Designklassene er systemklasser, ikke konseptuelle klasser som i domenemodellen 26.09.05 INF3120 30 15

Framgangsmåte for designmodellering Identifiser klasser ved å gå gjennom alle sekvensdiagrammene Klassenavnene er inspirert av navn i domenemodellen Legg til metodenavn ved å analysere sekvensdiagrammene Eks: Meldingen leggtiltekst() sendes til Spørsmåls-objektet. Objektet må derfor inneholde en leggtiltekst() metode 26.09.05 INF3120 31 Fra domenemodell til designmodell Noen av objektene som kommuniserer via meldinger hentes fra domenemodellen Domenemodell konseptuelle klasser danner grunnlag for objekter og objektnavn i designmodellen Spørreskjema Overskrift Spørsmål Tekst Spørreskjema overskrift: String setoverskrift() visskjema() Spørsmål tekst: String leggtiltekst() 26.09.05 INF3120 32 Designmodell systemklasser 16

Designmodell for spørreskjemagenerator 26.09.05 INF3120 33 Ansvarsfordeling Spørreskjemagenerator: Lager nye spørreskjemaer, publiserer dem og viser oversikter. Spørreskjema: Kjenner sin egen overskrift, innledning og sine spørsmål Spørsmål: Kjenner sine egne tekster og kan modifisere disse Svar:Kjenner sitt eget svar og kan modifisere dette SpørreskjemaHåndterer: Kontrollobjekt som koordinerer objektene Svaralternativer: Kjenner lovlige svar på et gitt spørsmål. Oversikt: Vet om innholdet i besvarelsene og lager statistikk 26.09.05 INF3120 34 17

Oppgave Utvid domenemodellen til en designmodell for restaurantsystemet 26.09.05 INF3120 35 Oppsummering I objektorientert analyse utarbeides use case modell og domenemodell i parallell. System sekvensdiagrammer visualiserer interaksjonen mellom aktør og system og nødvendig input til systemet. Operasjonskontrakter kan gjøre use casene mer presise. Scenariene i et use case realiseres gjennom objekter som samarbeider. Dette illustreres i sekvensdiagrammer. Klassediagrammer og sekvensdiagrammer utarbeides i parallell, designklasser og metoder finnes ofte fra sekvens-diagrammene Bruk av patterns kan lette og forbedre designarbeidet 26.09.05 INF3120 36 18

Løsning oppgave 5 (22/9) - Record arrival (Registrer ankomst) og Record walk-in (Registrer ankomst uten reservasjon) Actor Head waiter Extension points Walk-in customer, step 2 Main success scenario 1. The head waiter performs the Display bookings use case 2. The head waiter confirms arrival for a selected booking 3. The system records this and updates the display, marking the customer as having arrived Actor Head waiter Extension points None Main success scenario 1. The head waiter creates a walk-in booking by entering the time of the booking, the number of covers and the table number 2. The system records and displays the new booking 26.09.05 INF3120 37 Forts. løsning oppgave 5 - Transfer table (Bytt bord) Actor Head waiter Extension points None Main success scenario 1. The head waiter performs the Display bookings use case 2. The head waiter changes the table allocation of the booking 3. The system records the alteration and updates the display 26.09.05 INF3120 38 19