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

Like dokumenter
Use case drevet design med UML

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

UML-Unified Modeling Language

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

UML 1. Use case drevet analyse og design Kirsten Ribu

Use case drevet design med UML. I dag

Mer om objektorientering og UML

IN2001: Kravhåndtering, modellering, design

Mer$om$objektorientering$og$UML

Mer om objektorientering og UML

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

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

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

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

Fra krav til objektdesign

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

Ulike typer prosessmodeller. Systemutvikling. Utviklingsmodeller. Prosessmodell - faser

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

Spesifikasjon av Lag emne

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

Beskjed fra Skagestein

Ansvarsdrevet OO: CRC og UML Sekvensdiagrammer

Krav analyse og objektorientert

UKE 11 UML modellering og use case. Gruppetime INF1055

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

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

Design Patterns - mønstre

Objektorientert design av kode. Refaktorering.

NB! Endring i undervisningsplanen

Objektorientering og UML. INF1050: Gjennomgang, uke 06

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

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

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

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

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

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

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

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

UML klassediagrammer

Fra krav til objekter. INF1050: Gjennomgang, uke 05

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

o UML klassediagrammer

Objektorientert design av kode. Refaktorering.

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

Kravanalyse og objekt-orientert analyse

Design Patterns - mønstre. Kirsten Ribu

Løsningsforslag til Case. (Analysen)

UNIVERSITETET I OSLO

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

Use Case-modellering. INF1050: Gjennomgang, uke 04

Produktrapport Gruppe 9

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

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

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

UNIVERSITETET I OSLO

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

GJENNOMGANG UKESOPPGAVER 6 MER OM OBJEKTORIENTERING OG UML

GJENNOMGANG UKESOPPGAVER 7 REPETISJON

Eksamen INF

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

Gruppenavn. Prosjektnavn Kravdokument For Navn på systemet. Versjon <1.0>

Kravspesifikasjon med UML use case modellering. Erik Arisholm

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

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

Obligatorisk oppgave 5: Modellering av krav

Fra krav til modellering av objekter

Forside Eksamen INF1055 V17

Kap3: Klassemodellering

INF 5120 Modellering med objekter

1 Introduksjon til designmodellen - del B 2

1. Modellering av objektorienterte systemer

Oppgave 1: Multiple choice (20 %)

INF Oblig 2. Hour Registration System (HRS)

INF1010 UML. Marit Nybakken 26. januar 2004

INF Obligatorisk prosjektarbeid INNHOLD:

Kravspesifikasjon. 14. oktober 2002

case forts. Generell interaktor Integer- interaktor Domenemodell Eksemplifisering av modellbasert tilnærming til design av brukergrensesnitt

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

UNIVERSITETET I OSLO

Informasjonsorganisering. Information Architecture Peter Morville & Jorge Arango Kapittel 4, 5 & 6

Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.

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

Use case modellering

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

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

Eksamen 2013 Løsningsforslag

Introduksjon til objektorientert programmering

UNIVERSITETET I OSLO

Innhold. INF1000 Høst Unified Modeling Language (UML) Unified Modeling Language (UML)

Etter uke 9 skal du. Introduksjon til objektorientert programmering. Innhold. Klasser som abstraksjoner

INF1000: Forelesning 7. Konstruktører Static

Klasser, objekter, pekere og UML. INF gruppe 13

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

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

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

Tittel Objektorientert systemutvikling 3

Hvorfor objektorientert programmering? Objektorientert programmering i Python: Introduksjon. Læringsmål uke 7. Undervisning og pensum IN1000

INF Obligatorisk prosjektarbeid

INF1000: Forelesning 7

Transkript:

UML- Use case drevet analyse og design Bente Anda 23.09.2004 23.09.04 INF320 I dag Domenemodeller Sekvensdiagrammer Use case realisering med GRASP patterns Klassediagram - designmodeller 23.09.04 INF320 2

Domenemodell visualisering av konsepter Domenemodellen viser konsepter i applikasjonsdomenet og forholdet mellom dem: ideer, ting, objekter. Domenemodellen beskrives med UML klassediagrammer uten metoder, og utarbeides gjennom flere iterasjoner. Det er bedre å spesifisere for mange konseptuelle klasser enn for få. 23.09.04 INF320 3 Domenemodell forts. 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. 23.09.04 INF320 4

Hvordan finne domeneklasser? 2 forskjellige tilnærminger: Lag en liste over kandidater til domeneklasser (for eksempel basert på liste s.34) Finn substantiver og substantivutrykk i use case beskrivelsene 23.09.04 INF320 5 Finn substantiver i use casene Eksempel: Use case Generer spørreskjema Aktør: Ansatt. Systemet ber om overskrift, innledning og antall spørsmål 2. Ansatt skriver inn nødvendig informasjon 3. Systemet sjekker at alle felt er utfylt 4. Systemet viser et spørreskjema der tekst til spørsmål skal fylles inn 5. Ansatt skriver inn tekst og svaralternativ 6. Systemet sjekker at riktig antall spørsmål har fått tekst 7. Ansatt ber om at spørreskjemaet blir lagret 8. Systemet lagrer spørreskjemaet 23.09.04 INF320 6

Domenemodellering Lag en liste over kandidater til klasser: Spørreskjema, Spørsmål, Svar, Svaralternativ, Overskrift, Innledning, Tekst, Informasjon, Ansatt, Deltaker, Browser, Kunde Ta bort unødvendige klasser Tegn klassene inn i domenemodellen Legg på assosiasjoner for å vise relasjoner Legg til attributter som er nødvendige for å oppfylle kravene 23.09.04 INF320 7 Overordnet domenemodell Spørreskjema Spørsmål Svar Svaralternativ Overskrift Innledning Informasjon Tekst Ansatt Deltaker Kunde Browser 23.09.04 INF320 8

Assosiasjoner En assosiasjon er en relasjon mellom to klasser som viser at det er en sammenheng mellom dem. Brukes i domenemodellen hvis informasjon om relasjonen skal lagres. 23.09.04 INF320 9 Eksempel Assosiasjonsnavn (Kan utelates) Spørreskjema Består av * Spørsmål Assosiasjonen går i begge retninger. 23.09.04 INF320 0

Retningslinjer for assosiasjoner Klasse A og Klasse B er assosiert hvis Et objekt av klasse A sender en beskjed til et objekt av klasse B Et objekt av klasse A oppretter et objekt av klasse B Et objekt av klasse A har attributter hvis verdier er objekter av klasse B eller mengder av objekter av klasse B Et objekt av klasse A mottar en beskjed med et objekt av klasse B som parameter Se assosiasjonsliste i boka s.56 23.09.04 INF320 Forfin domenemodellen Ta bort unødvendige klasser (Tekst, Informasjon) Noen klasser viser seg å være attributter (Overskrift, Innledning) Legg på multiplisitet 23.09.04 INF320 2

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 Eksempel: Lag en klasse Oversikt som viser enkel statistikk som antall svar, deltakerens alder, geografiske tilknytning etc. 23.09.04 INF320 3 Domenemodell med assosiasjoner Kunde Navn Adresse..n Browser Navn Ansatt Navn AnsattID Avdeling 0..n..n Spørreskjema Innledning Overskrift..n 0..n Deltaker Alder Kjønn Bosted..n Oversikt..n Spørsmål Tekst 0 Svar Tekst..n..n Svaralternativ Type 23.09.04 INF320 4

Use case realisering Sekvensdiagrammer visualiserer operasjonene som genereres av aktørene 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 23.09.04 INF320 5 Sekvensdiagrammer Viser hvordan objekter kommuniserer ved hjelp av meldinger (metodekall) Viser hendelsesflyten i use casene Er et redskap for å lage et godt objektdesign Lages parallelt med klassediagrammer 23.09.04 INF320 6

Objektdesign: Ansvarstilordning UML definerer ansvar som en kontrakt i en klasse Ansvar er knyttet til objektet i form av dets oppførsel Handling: Opprette objekt, beregning Kunnskap: Vite om private data, vite om relaterte objekter Ansvar er ikke det samme som metoder, men metoder implementeres for å oppfylle ansvaret Ansvarstilordning: En utfordring under utforming av sekvensdiagrammer 23.09.04 INF320 7 Utforming av sekvensdiagrammer Grensesnittklassen eller aktøren viser grensesnittet mellom system og aktør For kodegenerering må objektene skrives på formen :klassenavn Meldinger (metodekall) vises med piler. For kodegenerering må metodene ligge i klassen som pilen peker på Nytt objekt opprettes med create() NB! create() peker rett på det nye objektet 23.09.04 INF320 8

Grunnleggende notasjon for sekvensdiagram 23.09.04 INF320 9 Klasser og objekter I UML er klasser og objekter illustrert på samme grafiske måte, men navnet er understreket i objektene. Spørsmål :Spørsmål s:spørsmål klasse objekt navngitt objekt 23.09.04 INF320 20

System Sekvensdiagram for Generer spørreskjema Systemet som black box Ekstern aktør Meldinger Retur til forrige melding 23.09.04 INF320 2 Use case vs. system sekvensdiagram Use case Generer spørreskjema Aktør Ansatt. Systemet ber om overskrift, innledning og antall spørsmål 2. Ansatt skriver inn nødvendig informasjon 3. Systemet sjekker at alle felt er utfylt 4. Systemet viser et spørreskjema der tekst til spørsmål skal fylles inn 5. Ansatt skriver inn tekst og svaralternativ 6. Systemet sjekker at riktig antall spørsmål har fått tekst 7. Ansatt ber om at spørreskjemaet blir lagret 8. Systemet lagrer spørreskjemaet 23.09.04 INF320 22

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 23.09.04 INF320 23 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 23.09.04 INF320 24

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 23.09.04 INF320 25 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 23.09.04 INF320 26

Retningslinjer for god objektdesign Design patterns er navngitte retningslinjer for hvordan ansvar skal fordeles i ulike situasjoner Brukes i prosessen med å forfine sekvensdiagrammer GRASP Patterns of General Principles in Assigning Responsibilites = Mønster for problemløsning 23.09.04 INF320 27 Noen GRASP patterns Ekspertprinsippet: La det objektet som har kunnskapen (dataene) også behandle den (Eksempel Spørreskjema ) Kontrollobjektprinsippet: Velg objekt som håndterer systemhendelser (Eksempel: SpørreskjemaHåndterer use case kontrollobjekt) Skaperprinsippet: Legg ansvar for å opprette et nytt objekt i klassen som må vite om objektet (Eksempel: SpørreskjemaGenerator ) 23.09.04 INF320 28

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? Se etter mulige systemklasser i domenemodellen 23.09.04 INF320 29 Eksempel Se i domenemodellen etter en klasse som kan brukes eller utvides til å lage en designklasse, for eksempel klassen Oversikt Lag en systemklasse Oversikt og gi den ansvaret for kunnskap om antall svar med metoden visantallsvar() 23.09.04 INF320 30

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 bruker A-objekter B har data som sendes til A-objektet når det opprettes 23.09.04 INF320 3 Finn systemklasse Se i domenemodellen etter mulige klasser Vi trenger en SpørreskjemaGenerator klasse for å opprette nye skjemaer 23.09.04 INF320 32

Ansvar og sekvensdiagrammer Ansvaret utdypes under utforming av sekvensdiagrammene Et SpørreskjemaGeneratorobjekt har ansvaret for å opprette et nytt spørreskjema 23.09.04 INF320 33 Kontrollobjektprinsippet (Controller) 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: <UseCaseNavn> Håndterer Eksempel: SpørreskjemaHåndterer 23.09.04 INF320 34

Kontrollobjekter Kontrollobjektet er et grensesnittobjekt Kontrollobjekter delegerer oppgaver til andre objekter Hvert use case kan ha et kontrollobjekt 23.09.04 INF320 35 Generer spørreskjema visspørreskjema() 23.09.04 INF320 36

Designmodellen Lag design-klassediagram parallelt med sekvensdiagrammer Lag noen sekvensdiagrammer, oppdater klassediagrammet, utvid sekvensdiagrammet etc. Designklassene er systemklasser, ikke konseptuelle klasser som i domenemodellen 23.09.04 INF320 37 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 23.09.04 INF320 38

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() 23.09.04 INF320 39 Designmodell systemklasser Designmodell Kunde string navn string adresse setinformasjon() visinformasjon() Browser Navn..n..n Ansatt string navn int ansattid string avdeling setinformasjon() visinformasjon() 0..n Spørreskjema string innledning int antallspørsmål setinformasjon() modifiserinformasjon() visskjema()..n 0..n +deltakere Deltaker int alder char kjønn string bosted setinformasjon() visinformasjon()..n..n Spørreskjemagenerator Spørreskjema aktivtskjema Oversikt SpørreskjemaHåndterer Spørreskjema skjema lagrespørreskjema() visspørreskjema() nyttspørreskjema() publiserspørreskjema() slettspørreskjema() nyoversikt() 0..n lagoversikt() visoversikt() visantallsvar()..n..n..n Spørsmål string tekst +svaret Svar string tekst leggtiltekst() endretekst() leggtiltekst() endretekst()..n..n +alternativesvar Svaralternativ string type leggtil() endre() sjekk() 23.09.04 INF320 40

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 23.09.04 INF320 4 Utviklingsprosess - oversikt Domenemodell Ansatt Spørreskjema Spørsmål Domenemodell Use case Generer spørreskjema.. 2. 3. 4. Use case modell Use case modell Systemsekvensdiagram Designmodell SSD Sekvensdiagram Sekvensdiagram Klassediagram Klassediagram 23.09.04 INF320 42

Oppsummering I objektorientert analyse utarbeides use case modell og domenemodell i parallell. 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 sekvensdiagrammene Bruk av patterns kan lette og forbedre designarbeidet 23.09.04 INF320 43