Systemutvikling med UML. Øyvind Stavdahl Institutt for teknisk kybernetikk, NTNU Oktober 2004



Like dokumenter
Motivasjon: Hvorfor modellere? Systemutvikling med UML Del 2 (forelesning 4-6) Repetisjon: Egenskapsrommet. Egenskapsrommet

UML 1. Use case drevet analyse og design Kirsten Ribu

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

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

UML-Unified Modeling Language

19. januar 2012 Noen punkter fra i går

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

UKE 11 UML modellering og use case. Gruppetime INF1055

GJENNOMGANG UKESOPPGAVER 6 MER OM OBJEKTORIENTERING OG UML

Fra krav til modellering av objekter

STE6221 Sanntidssystemer Løsningsforslag

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

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

INF 1050 BRUK AV MODELLERINGSVERKTØYET RATIONAL ROSE

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

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

INF1000: Forelesning 7

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

Klasser, objekter, pekere og UML. INF gruppe 13

Kap3: Klassemodellering

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

Use Case-modellering. INF1050: Gjennomgang, uke 04

INF1000: Forelesning 7. Konstruktører Static

Use case drevet design med UML

Kravspesifikasjon med UML use case modellering. Erik Arisholm

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

MAT1030 Forelesning 30

UNIVERSITETET I OSLO

Spesifikasjon av Lag emne

Løsningsforslag til Case. (Analysen)

UNIVERSITETET I OSLO

Ansvarsdrevet OO: CRC og UML Sekvensdiagrammer

Oppgave 1: Multiple choice (20 %)

Bakgrunn. Kurset krever ingen spesielle forkunnskaper om modellering.

Forelesning 9 mandag den 15. september

Lykke til! Eksamen i fag TDT4140 Systemutvikling NTNU Norges teknisk-naturvitenskapelige universitet

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

Kapittel 4: Logikk (predikatlogikk)

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

La oss først se på problemet med objektorientert tankegang. Se figuren under. Konto

Mer$om$objektorientering$og$UML

Slides made by Sommerville adapted by Letizia Jaccheri This lecture will be filmed

Fra krav til objekter. INF1050: Gjennomgang, uke 05

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

Kodestil i C++ Introduksjon. Navnekonvensjoner. Globale variabler. Simen Hagen

Læringsmål og pensum. Utvikling av informasjonssystemer. Oversikt. Systemutvikling Systemutvikling i seks faser Femstegs prosedyre for programmering

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

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

Objektorientering og UML. INF1050: Gjennomgang, uke 06

INF1300. Grunnbegrepene i ORM: fakta, begreper, roller, faktatyper, broer, entydighetsskranker, totale roller, funksjonelle avhengigheter

Andre sett obligatoriske oppgaver i INF3100 V2013

UNIVERSITETET I OSLO

Del - leveranse Del 2. Inf 2120 fredag Gruppe 1 Knut Johannes Dahle

Oversikt over forelesningen. DFD sentrale konsepter. Intro til Dataflytdiagrammer (DFD) Marakas, kap. 5

Algoritmer og datastrukturer A.1 Filbehandling på bit-nivå

Obligatorisk oppgave 5: Modellering av krav

Uendelige rekker. Konvergens og konvergenskriterier

Produktrapport Gruppe 9

En god presentasjon består av tre deler som henger nøye sammen: Innhold, utforming og framføring.

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

1. Modellering av objektorienterte systemer

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

Leksjon 3. Kontrollstrukturer

Go with the. Niende forelesning. Mye matematikk i boka her ikke så komplisert, men mye å holde styr på.

Informasjonsarkitektens rolle i smidige prosjekter

Romlig datamanipulering

Grafisk kryptografi (hemmelig koding av bilder)

Invarianter, +lstander og li1 mer seman+kk

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

Hvordan designe en ER-modell med MS-VISIO

Kirsten Ribu - Høgskolen i Oslo

Fra krav til objektdesign

Innhold uke 4. INF 1000 høsten 2011 Uke 4: 13. september. Deklarasjon av peker og opprettelse av arrayobjektet. Representasjon av array i Java

Fortsettelses kurs i Word

På lederutviklingsprogrammene som ofte gjennomføres på NTNU benyttes dette verktøyet. Du kan bruke dette til inspirasjon.

SRD GLIS. Cecilie Dortea Gløsmyr, Espen Buø og Henrik Lie

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

2 Grafisk grensesnitt 1

Skjermbilder og veiledning knyttet til «Årlig innrapportering for vannforsyningssystem» basert på oppdaterte skjermbilder pr mars 2016.

UNIVERSITETET I OSLO

10-FAKTOR, Guide til god ledelse og Skodd for framtida. Siri Klevstrand, spesialrådgiver KS Arbeidsgiverpolitikk

Tittel Objektorientert systemutvikling 2

INF Oblig 2. Hour Registration System (HRS)

Kravspesifiseringsprosessen

Endring av e-postoppsett med IMAP til ny e-posttjener

Transaksjonsstandard for virkesomsetningen i Norge. Transportert virke. Versjon 2.0. Desember 2007 SKOG-DATA AS

Transaksjonsstandard for virkesomsetningen i Norge. Business Acknowledge. Versjon 2.0. Desember 2007 SKOG-DATA AS

1. Designe ER-modeller med MS Visio

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

Klasser. Webprogrammering høsten Objekter. Eksempelklasser og -objekter. 2 of :56. 1 of :56

6 ting du bør vite om Office 365

1 Kodegenerering fra Tau Suiten

Sikker Jobbanalyse. Dokumentnr.: POP-PRO-TEN-013. Versjon Dato Versjonsbeskrivelse

TOD063 Datastrukturer og algoritmer

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

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

Modellering av data. Magnus Karge, Kartverket

Kravspesifikasjon med. Erik Arisholm

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

5 TIPS - FÅ RÅD TIL DET DU ØNSKER DEG

Transkript:

Systemutvikling med UML Øyvind Stavdahl Institutt for teknisk kybernetikk, NTNU Oktober 2004

Denne kursbolken er basert på Martin Fowler, UML Distilled, Third Edition Addison-Wesley, 2004. ISBN 0-321-19368-7 Stoffet er primært hentet fra kapittel 1-4 og 9-12

To ord om terminologi Norske ord og begreper bør brukes der de kan brukes UML er et engelsk-basert modelleringsspråk. Norske ord brukes her sporadisk når det er åpenbart hvilket UML-begrep vi snakker om

Innhold 1. Intro til UML SA/SD vs. UML 2. Funksjonskrav: Use case-diagram Sekvensdiagram 3. Informasjons-rommet : Klassediagram 4. Tilstandsrommet : Tilstandsmaskin Aktivitetsdiagram 5. Funksjonsrommet : Kommunikasjonsdiagram Andre UML-diagrammer 6. Et lite eksempel Oppsummering

UML: Unified Modeling Language Standardisert grafisk modelleringsspråk Primært for programvaretunge systemer Mange uavhengige og overlappende språk eksisterte UML er en sammenstilling og formalisering av noen av disse

UML omfatter: 1. En meta-modell Rigorøs definisjon av UMLbegreper Viktig ved bruk av UML som programeringspråk 2. Grafisk notasjon for 13 ulike diagramtyper Activity Class Communication Component Composite structure Deployment Interaction overview Object Package Sequence State machine Timing Use Case

UML is Not Enough! UML - flere diagramer enn de fleste trenger UML standardisert, systemer forskjellige UML passer ikke alltid like godt Bruk bare det du har nytte av! Bryt reglene når det er nyttig!

Tre måter å bruke UML på 1. UML som skisse 2. UML som blåkopi 3. UML som programmeringsspråk

1. UML som skisse Nøkkel: Selektivitet Bare modellere det du trenger akkurat nå Rask konkretisering av ideer Sammenlikning av alternativer Kommunikasjon Kunder Medarbeidere

2. UML som blåkopi Nøkkel: Kompletthet Forward engineering: Alle detaljer som programmereren trenger å vite Backwards engineering: Komplett grafisk innholdsfortegnelse for systemet Typisk automatisert prosess!

3. UML som programmeringsspråk Nøkkel: Modellen er systemet! Systemmodellen utgjør kildekoden Utfordringer: Modellen må inneholder ALT Lavnivå-algoritmer ofte modellert i tekstbaserte prog.-språk Flere måter å modellere oppførsel på i UML Hvilke(n) skal brukes til programmering?

Denne kursbolken: Primært UML som skisse Myk start for nye UML-brukere Bare de viktigste diagrammene

Innhold 1. Intro til UML SA/SD vs. UML 2. Funksjonskrav: Use case-diagram Sekvensdiagram 3. Informasjons-rommet : Klassediagram 4. Tilstandsrommet : Tilstandsmaskin Aktivitetsdiagram 5. Funksjonsrommet : Kommunikasjonsdiagram Andre UML-diagrammer 6. Et lite eksempel Oppsummering

Sammenliking av SA/SD og UML Utviklingsprosess uanvhengig av verktøy Sammenlikner verktøyene i lys av et typisk prosess-rammeverk: Analyse (spec., oppførselsmodell) Konstruksjon ( byggebeskrivelse ) Implementasjon (programmering) Dokumentasjon (for systemvedlikehold)

Egenskapsrommet Én - av uendelig mange - måter å dekomponere systemets egenskaper på Funksjonsrommet (hva systemet skal gjøre) Informasjonsrommet (hva systemet må huske) Tilstandsrommet (hvordan systemet skal reagere)

Analyse: Omgivelser, overordnet funksjon (1/2) SA/SD: Kontekstdiagram UML: Use case-diagram tastatur kortautomat Bensinstyring Bensinkunde Fyll bensin pistolbryter display

Analyse: Omgivelser, overordnet funksjon (2/2) SA/SD: Hendelsesliste UML: Sekvensdiagram Kunde Kortautomat Bensinpistol

Analyse/konstruksjon (1/3): Informasjonsrommet SA/SD: Logisk datamodell UML: Klassediagram farge Bil eies av regnr Bil farge: String regnr: String eier Person Person

Analyse/konstruksjon (2/3): Tilstandsrommet SA/SD: Tilstandstransisjonsdiagram UML: Tilstandsmaskin (aktivitetsd, interaksjonsd.) S1 S1 Hendelse 2 Aksjon 2a Aksjon 2b Hendelse Aksjon 1a Aksjon 1b Hendelse 2/Aksjon 2a, Aksjon 2b Hendelse/ Aksjon 1, Aksjon 1b S2 S2

Analyse/konstruksjon (3/3): Funksjonsrommet SA/SD: Dataflytdiagram UML: Kommunikasjonsdiagram Pros1 Data1 Data2 Pros2 2: data2 Obj1 Obj2 1: Data1

Modellering av funksjonelle systemkrav...eller: hvordan finne ut hva kunden egentlig bestiller, hvordan hun tenker og hvordan hun ønsker å bruke systemet.

Innhold 1. Intro til UML SA/SD vs. UML 2. Funksjonskrav: Use case-diagram Sekvensdiagram 3. Informasjons-rommet : Klassediagram 4. Tilstandsrommet : Tilstandsmaskin Aktivitetsdiagram 5. Funksjonsrommet : Kommunikasjonsdiagram Andre UML-diagrammer 6. Et lite eksempel Oppsummering

Use case-diagrammet Actor Association Use case Fyll bensin Bensinkunde

Use case = bruksmodus Systemet tilbyr et antall funksjoner som er aktuelle for ulike formål, til ulike tider og for ulike aktører Hvert use case er én slik bruksmodus Summen av alle use cases = hele systemets funksjonalitet

Eksempel: veggmontert elektrisk bryter Systemets grense Lysbruker Betjen <<include>> Montér Montør

Actors En Actor representerer en rolle, ikke en entitet (person, system, fysisk enhet) Samme entitet kan utgjøre flere Actors Flere entiteter kan utgjøre samme Actor Alle slags entiteter kan være Actors Personer Systemer eller enheter

Use case-relevant informasjon (1/2) Pre-conditions: Vilkår som må være tilfredsstilt for at use case t kan starte Trigger: Hendelsen som starter use case t

Use case-relevant informasjon (2/2) Guarrantee: Det systemet vil garantere er oppfylt ved avslutningen av use case t Success guarrantee: Det som garantert er oppfylt etter et vellykket scenario Minimal guarrantee: Det som er oppfylt etter et hvilket som helst scenario.

Tekstlig use case-beskrivelse. Eksempel: Montering av bryter Montér Pre-condition: Sikringen er tatt ut. Trigger: Kunde bestiller montering av bryter Suksess-scenario: 1. Montør åpner bryterdekselet 2. Montør fester bryteren til veggen 3. Montør fester ledningene 4. Montør lukker bryterdekselet 5. Montør setter i sikringen 6. Montør betjener bryteren og konstaterer at den virker Utvidelse: 6a: Bryteren virker ikke.1: Montør fjerner sikringen... (kopler fra bryteren...).n: Montør setter i sikringen Suksessgaranti: Bryteren montert og operativ. Minimal garanti: Alle strømførende ledninger isolert eller frakoplet, sikringen satt i.

Hvordan ikke bruke use case-diagrammet Ikke bruk masse tid på å lage et avansert diagram! Ikke prøv å synliggjøre alle spesialtilfeller Ikke bruk avansert notasjon KISS: Keep It Simple and Stupid! - Alt annet er bortkastet tid!

Hvordan bruke use case-diagrammet Betrakt diagrammet som en oversiktlig innholdsfortegnelse for systemets funksjonalitet Detaljene beskrives med tekst eller andre typer diagrammer Dette er den verdifulle informasjonen!

Innhold 1. Intro til UML SA/SD vs. UML 2. Funksjonskrav: Use case-diagram Sekvensdiagram 3. Informasjons-rommet : Klassediagram 4. Tilstandsrommet : Tilstandsmaskin Aktivitetsdiagram 5. Funksjonsrommet : Kommunikasjonsdiagram Andre UML-diagrammer 6. Et lite eksempel Oppsummering

Sekvensdiagrammet

Hva sekvensdiagrammet viser Hvordan en gruppe objekter samarbeider for å realisere en oppførsel Deltakerne i et scenario (sub-sett av et use case) Sekvensen og naturen i meldingsutvekslingen mellom deltakerne Deltakernes livsløp

Notasjonen er nesten selvforklarende

Synkrone vs. asynkrone meldinger Synkron: Senderen må vente til meldingen er utført (typisk: metodekall) Gammel notasjon Sender Ny notasjon Sender Mottaker Mottaker Asynkron: Senderen fortsetter så snart meldingen er sendt (typisk: meldingskø)

Hva sekvensdiagrammet ikke viser iallfall ikke så veldig godt: Løkker (loops, while ) Alternativer (conditionals; if, switch... ) og alt annet som ikke går i ren sekvens.

Loops and Conditionals

Hvordan (ikke) bruke sekvensdiagrammet Illustrere scenarier Ikke komplette/komplekse algoritmer Ikke for presis oppførselsemodellering Unntak finnes Sekvensielle algoritmer Bilateral kommunikasjon (protokoller)

Fra funksjonelle krav til detaljert oppførsel...eller: fra eksternt til internt perspektiv.

Funksjonrommets ortogonale dimensjoner Funksjonsrommet (hva systemet skal gjøre) Informasjonsrommet (hva systemet må huske) Tilstandsrommet (hvordan systemet skal reagere)

Innhold 1. Intro til UML SA/SD vs. UML 2. Funksjonskrav: Use case-diagram Sekvensdiagram 3. Informasjons-rommet : Klassediagram 4. Tilstandsrommet : Tilstandsmaskin Aktivitetsdiagram 5. Funksjonsrommet : Kommunikasjonsdiagram Andre UML-diagrammer 6. Et lite eksempel Oppsummering

Informasjonsrommet : Klassediagram

Klasse Navn Attributter Operasjoner BankKunde - navn: String - konto: KontoNummer - pinkode: Kryptert + hentnavn(): String + hentkontonr(): KontoNummer + sjekkpinkode(pin: PinKode): Boolean

Klassers egenskaper (Properties) - to varianter: Attributter Member-variable Assosiasjoner Referanser (i praksis pekere etc.) til andre klasser Inneholder det direkte informasjonsinnholdet i klassen Informasjon relatert til klassen selv, men inneholdt i de assosierte klassene

Eksempel: attributt vs. assosiasjon Bil farge: String regnr: String * eier 0..1 Person navn: String personnr: Integer adresse: AdrType Attributt Assosiasjon Begge klassene utviser egenskaper som er relevante for Bil.

Hva er forskjellen...? farge regnr Bil eier 0..1 navn Person Bil farge regnr eiernavn An attribute is the ghost of a class without attributes

Forskjellen er... Attributter: små egenskaper (elementære datatyper) Assosiasjoner: mer signifikante ting (egenskaper) som har sine egne attributter

Notasjon Tenk variabeldeklarasjon. Generell notasjon: visbility name: type multiplicity = default {property-string} Kun name er obligatorisk Noen raske eksempler: + farge: String [1..*] = sjokkrosa - pinkode: Digit [4]

Notasjon - Visibility + Public, dvs synlig utenfor klassen - Private, dvs. usynlig utenfor klassen m.fl. Eksempel: - pinkode: Digit [4]

Notasjon - Type Igjen: tenk variabeldeklarasjon. Type angir hva slags data som kan inneholdes i attributten (type er irrelevant for assosiasjoner) Eksempel: alder: Integer finished: Boolean

Notasjon - Multiplisitet 1 Nøyaktig én 0..2 0, 1 eller 2 * 0 eller flere Ingen multiplisitet angitt => 1 Eksempler: Person barn * hender: Hånd [0..2] hår: Hårstrå [*] ektefelle 0..1

Angir tilleggsegenskaper: Notasjon Property-string readonly ordered osv. Kan ikke endres Ordnet mende (dvs. elementenes rekkefølge fast) Eksempel: navn: String = Nemo {readonly}

Bidireksjonelle assosiasjoner (1/2) Person eier 0..1 * Bil Merk to navigerbarhespiler To egenskaper som er forbundet som inverse : Person har egenskapen biler: Bil [*] Bil har egenskapen eier: Person [0..1]

Bidireksjonelle assosiasjoner (2/2) Person eier 0..1 * Bil Hvorfor? Begge klasser avhenger av tjenester fra den andre Spesiell praktisk utfordring: Synkronisering begge referansene må være gyldige til enhver tid

Operasjoner Tenk metodedeklarasjoner. Generell notasjon: visbility name (parameter list): return-type {property-string} Eksempel: + sjekkpinkode(pin: PinKode): Boolean {query}

Notasjon - Property-string Property-string angir tillegsegenskaper for operasjonene: query modifier osv. Endrer ikke klassens tilstand Endrer klassens tilstand Eksempel: + sjekkpinkode(pin: PinKode): Boolean {query} + settpinkode(pin: PinKode): Boolean {modifier}

Til ettertanke Omverdenen aksesserer ofte properties via aksessorer (query-operasjoner). Den som kaller aksessoren kan ikke avgjøre om den mottar eksplisitt lagrede data eller beregnede data. Det er mao. i utgangspunktet ingen direkte korrelasjon mellom UML-begrepene og programkoden.

Til etterlevelse...derfor bør du (utviklingsteamet, bedriften) etablere en praksis som definere en slik korrespondanse. Dette kan bety at du bevisst gjør en begrenset tolkning av UML, og at du kun benytter et subsett av notasjonen.

Notasjon - Generalisering Arv i UML Person Kvinne Mann Frimurer

Avhengighet (Dependency) Client Supplier Sirkeline <<use>> Trigonometrix dependency Scenario: Sirkeline lager sirkler. Til dette trenger hun funksjonalitet som Trigonometrix tilbyr. Hvis Trigonometrix forandrer oppførsel, kan dette få følger for Sirkeline slik at hun også må endre seg. Trigonometrix er derimot helt uavhengig av Sirkeline.

Vær uavhengig! UML 2.0 definerer 10 ulike Dependencies... Fare: Overlessede diagrammer Vis bare signifikante relasjoner Evt. egne diagrammer med fokus på avhengigheter Som skapt for automatisk reverse engineering!!!

Hva så med alt det andre...? Constraint Rules: I UML kan du skrive hva som helst i diagrammet, på et hvilket som helst språk, bare du setter det i krøllparentes: {korrekthetssjekk: alder>0 år} Dessuten har vi kommentarboksen : Se opp for runde former! Sirkeline