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

Like dokumenter
UKE 11 UML modellering og use case. Gruppetime INF1055

Fra krav til objekter. INF1050: Gjennomgang, uke 05

Use Case-modellering. INF1050: Gjennomgang, uke 04

Spesifikasjon av Lag emne

Fra krav til objektdesign

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

UML 1. Use case drevet analyse og design Kirsten Ribu

Ansvarsdrevet OO: CRC og UML Sekvensdiagrammer

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

Objektorientering og UML. INF1050: Gjennomgang, uke 06

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

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

Kap3: Klassemodellering

Fra krav til modellering av objekter

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

UML-Unified Modeling Language

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

GJENNOMGANG UKESOPPGAVER 6 MER OM OBJEKTORIENTERING OG UML

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

Tittel Objektorientert systemutvikling 2

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

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

UNIVERSITETET I OSLO

INF1010 UML. Marit Nybakken 26. januar 2004

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

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

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

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

Oppgave 1: Multiple choice (20 %)

INF1000: Forelesning 7

Mer$om$objektorientering$og$UML

INF1000: Forelesning 7. Konstruktører Static

Eksamen INF

INF 1050 BRUK AV MODELLERINGSVERKTØYET RATIONAL ROSE

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

Use case drevet design med UML

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

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

Utvikling fra skallet og inn

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

Prosjektrettet systemarbeid

1 Kodegenerering fra Tau Suiten

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

Løsningsforslag til Case. (Analysen)

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

Kravspesifikasjon med UML use case modellering. Erik Arisholm

GJENNOMGANG UKESOPPGAVER 7 REPETISJON

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

IN2001: Kravhåndtering, modellering, design

DELLEVERANSE 1 INF2120 V06

STE6221 Sanntidssystemer Løsningsforslag

Modellering av data. Magnus Karge, Kartverket

SRD. Software Requirements and Design GLIS. Cecilie Dortea Gløsmyr, Espen Buø og Henrik Lie

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

UNIVERSITETET I OSLO Institutt for informatikk. INF2120: ICU - a surveillance system, Drop 1. gisleal, eivindjo, tanxn, behrozm

Eksamen 2013 Løsningsforslag

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

Obligatorisk oppgave 5: Modellering av krav

OOA & D. Analyse av problemområde klasser, klassediagram struktur atferd. 14 mars Tone Bratteteig

Produktrapport Gruppe 9

Forside Eksamen INF1055 V17

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

Forkurs INF1010. Dag 2. Andreas Færøvig Olsen Tuva Kristine Thoresen

INF Obligatorisk innlevering 7

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

INF2120 Prosjektoppgave i modellering. Del 1

Analyse av problemområdet

Systemutvikling - oppsummering. Alexander Nossum blog.eksplisitt.net 22. mai 2006

INF Forelesning oppsummering forts. Et meget enkelt banksystem. Oppsummering om klasser, objekter, pekere og.

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

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

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

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

EKSAMENSFORSIDE SKRIFTLIG EKSAMEN

Løsningsskisse, eksamen J2EE og distribuerte systemer 19.mai 2004

INF Oblig 2. Hour Registration System (HRS)

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

Gruppe 43. Hoved-Prosjekt Forprosjekt

Universitetet i Oslo Institutt for informatikk. Leveranse 2 - inf2120. Gruppe 9. Mads Andre Bergdal Neeru Bhardwaj Saqib Riaz Trond Arne Sørby

Kravspesifikasjon med. Erik Arisholm

UNIVERSITETET I OSLO

class Book { String title; } class Dictionary extends Book { int wordcount; } class CartoonAlbum extends Book { int stripcount; }

Beskjed fra Skagestein

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet Institutt for informatikk

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Tilstandsmaskiner med UML og Java

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

2 Om statiske variable/konstanter og statiske metoder.

Introduksjon til objektorientert programmering

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen

Arv. Book book1 = new Book(); book1. title = "Sofies verden" class Book { String title; } class Dictiona ry extends Book {

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet

IN& &april&2019. Modellering*av*krav. Yngve&Lindsjørn. IN1030&'>Systemutvikling'>&Modellering&av&krav 1

19. januar 2012 Noen punkter fra i går

UNIVERSITETET I OSLO

Oblig 4Hybelhus litt mer tips enn i oppgaven

Fra problem til program

Transkript:

Universitetet i Oslo Institutt for informatikk Eskild Busch UML hefte 6. desember 2000

Innhold Dette heftet tar for seg deler av UML som er sentralt i kurset IN29. Use case-, sekvens-, tilstand- og klassediagrammer, samt noe av deres indre funksjonalitet, vil bli behandlet i dette heftet. Eksemplene her er kun ment å vise ulike modelleringsfunksjonaliteter i de respektive diagrammer i UML, og ikke ment å være en korekt modellering av et system. PÅ figurene i dette heftet har jeg satt på lapper med nummer, disse numre er beskrevet under tilhørende diagram. iii

Innhold Use case 2 Sekvensdiagram 3 3 Tilstandsdiagram 5 4 Klassediagram 7 Figurer Eksempelpåusecasediagramm... 2 2 Eksempelpåsekvensdiagramm.... 5 3 Eksempelpåtilstandsdiagramm... 7 4 Eksempelpåklassediagramm.... 0 iv

Use case Et use case (ellipse) presenterer en del av funksjonaliteten til et system. Det kan være funksjonaliteten til et system, subsystem eller for en klasse slik den opptrer for en bruker utenfor systemet. Diagrammet viser er en overordnet funksjonalitet ved systemet, dvs generelle hendelser i systemet. I figur er New Customer et use case som inneholder en generalisering av flere hendelser som kommer til å skje i det ferdige systemet. Aktøren Clerc starter denne hendelsen. En aktør (strekmann) trenger nødvendigvis ikke å være en bruker, men kan være et system i seg selv. Aktøren kan ikke være det systemet som skal modelleres. Det er viktig å ikke tenke objekter og programmering, men i stedet uttrykke alle de generelle bruksmønstre (use case) som vil skje med systemet. Det vil si at man skal lage en generell hendelse som kan involvere flere objekter i det ferdige systemet. Man bruker så et eller fleresekvensdiagram for å vise hendelsesforløpet til et slikt use case, der man viser flyten av data/meldinger/kontroll mellom objekter. Videre følger en forklaring til de nummererte firkantene i figur.. Se figur. En pil med fylt pilhode uttrykker at kommunikasjon kun kan gå en vei. Dette brukes typisk når aktøren skal sette i gang en hendelse, og ikke trenger tilbakemelding fra systemet. 2. Se figur. Use case Balance er en spesialisering av use case Check acount. Dette er en vanlig arving, der Check acount er foreldre use case og Balance barnet. Balance inneholder oppførselen til Check acount, samt muligheten for egne spesielle hendelser, altså en spesialisering. 3. Se figur. I use case New Customer skal det i tillegg til å registrere en ny kunde, også forekomme opprettelse av en ny konto. Dvs. denne type pil med label:include, sier at Create Acount skal være en del av det å opprette New Customer. 4. Se figur. En strek mellom en aktør og et use case betyr at dette er en assosiasjon. Denne assosiasjonen utrykker at en aktør er en deltager i dette use case, f.eks instanser av aktøren og instanser av use case kan kommunisere med hverandre. 5. Se figur. I use case Redraw Card, tillegges use case Check Acount spesielle egenskaper. En User skal sjekke kontoen sin. Dersom det av en

grunn er satt en inndragning av dette kortet fra banken, skal use case (Redraw Card) skje som en hendelse i systemet. Med andre ord kan man tillegge et use case spesielle hendelser dersom det oppstår et behov for det. I tillegg kan man bruke dette use case i forbindelse med andre use case i systemet. Dersom man vil spesifisere hva som skal trigge dette use case, så kan man angi dette som en label ved siden av pilen. Figur Eksempel på use case diagramm. User Clerc Balance. Amount 4 5 Check acount Balance New Customer extend include Redraw Card Om feil kode 3 ganger Create Acount 2 3 2

2 Sekvensdiagram Et sekvensdiagram viser mønsteret av interaksjon mellom ulike objekter, samt tid og kontroll aspekter ved et system. Man bruker det til å modellere komplekse løsninger i domenet der man utvikler systemet, og tar gjerne utgangspunkt i use case diagrammer. Dersom man har modellert use case for et system, så bør man lage et eller flere sekvensdiagram for hvert av de. Sekvensdiagrammet er en todimmensjonal fremvisning, der man har tiden vertikalt og interaksjonen mellom objekter horisontalt. Hver sekvens kan bare ha en som starter hendelsen, men man kan ha flere sekvenser i et diagram. Dvs. man kan ha aktør objekt objekt aktør. Videre følger en forklaring til de nummererte firkantene i figur 2.. Se figur 2. Dette er et eksempel på 4 funksjonaliteter. Den tykke pilspissen indikerer dette et metodekall eller en flyt av kontroll. Metodekallet på log_on skal ha en returverdi, Boolean. Denne returverdien trenger ikke å angis som en pil (se punkt 7), da den er angitt som Metode_Kall:Returverdi. Objektet System er et objekt som eier en egen prosess, og kan starte egne aktiviteter. Kallet på log_on(), skal ligge som en metode i en klasse som heter System, dvs. når man skriver en label på en pil av denne typen, skal denne ligge i klassen pilspissen peker på, som en metode. 2. Se figur 2. Disse to objektene er vanlige objekter, som er en instans av en klasse. Disse har ikke mulighet til å eie sine egne prosesser. Dvs at objektene er vanlige objekter i det kommende programmet, og har kun en tilstand. 3. Se figur 2. Setter en tidsbestemmelse på hendelsen. I dette tilfellet skal man ha sjekket om kontonummeret er ledig på en tid som er mindre en 5 sekunder. 4. Se figur 2. X : Terminerer et objekt som ikke trengs lenger. Dvs. etter å ha sjekket om kontonummeret er ledig, kan man frigjøre dette objektet. Det er ingen hensikt å la det eksistere lenger. 5. Se figur 2. En åpen pil betyr at det sendes et asynkront signal, i dette tilfellet har systemet utført det brukeren ber om. Og angir at den er klar for en ny oppgave. Denne typen pil forventer et svar fra bruker. 3

6. Se figur 2. Rektangelet viser hvor lenge objektet er aktivt. Der pilen kommer inn til objektet blir det aktivert (aktivert er her ment som at man bruker objektet), og lengden på rektangelet viser hvor lenge det er aktivt. Mange forbinder dette med tidsforløpet til et objekt, noe jeg syntes er feil. Grunne til dette er at et objekt kan leve lenge i et system uten å være aktivit. 7. Se figur 2. Denne typen pil er en annen måte å angi returverdi på. Dvs. man kan angi returverdier på denne måten eller som vist i.. I eksempelet returnerer jeg hele objektet Customer. 8. Se figur 2. Denne typen pil indikerer en asynkron kommunikasjon mellom objekter. I dette eksemplet har jeg satt den til å gi en melding til Clerc når han har forsøkt å opprette en Acount 5 ganger. Da skal man avbryte og returnere til Clerc med meldingen something is wrong. Denne type pil forventer ikke svar fra bruker. 4

Figur 2 Eksempel på sekvensdiagramm. Clerk 2 :System :Customer log_on():boolean create_new_user() create_acount():acount If Boolean=false 5 times: something is wrong Customer controll() 7 8 5 :Acount 6 chek_nr Boolean 4 :Is_Acount_Free < 5 sek 3 3 Tilstandsdiagram Tilstandsdiagram brukes for å vise dynamiske hendelser for en klasse, et use case, en aktør, et subsystem, en operasjon eller en metode. Det man ønsker å vise frem med et slikt diagram, er livssyklusen for det aktuelle tilfellet. På figur 3 ser dere at dette er noe som skjer i tid. Man har en starthendelse som går inn i en tilstand, i dette eksemplet en sammensatt tilstand. En ansatt kan ha flere funksjoner i denne tilstanden, men av plasshensyn er disse utelatt. Videre har man tilstander utenfor den sammensatte tilstanden. Disse kan også observeres og gå over tid. I tilstandsdiagrammer skal man bruke fortid i den beskrivende label på pilene. En god regel er å bruke ordet ble inne i setningen. Pilen som brukes i denne type diagram, viser hendelsen som tar plass i diagramm- 5

et. Videre følger en forklaring til de nummererte firkantene i figur 3.. Se figur 3. Starttilstanden er den første tilstanden av oppførsel til et objekt eller lignende, etter at det er opprettet. Eksempelet jeg bruker her, har jeg flere slike starthendelser. Den første som ligger utenfor supertilstanden, viser hendelsen når en ansatt blir logget på. Videre er det to nye starttilstander inne i supertilstanden. Grunne til dette er at en ansatt kan velge ulike handlinger i denne supertilstanden. 2. Se figur 3. Seleksjon: man går fra en tilstand til en ny. Dvs. ved hjelp av seleksjon kan man velge å gå over til en annen tilstand. 3. Se figur 3. Disse er med for å vise sekvensielle tilstander. Som navnet sier, så er dette et sekvensielt skifte av tilstander. 4. Se figur 3. Iterasjon: noe som kan skje flere ganger på samme tilstand. (kunde ble registrert, kunde ble slettet). Denne hendelsen kan skje utallige ganger innen en klasse etter at den er blitt initiert, og ikke er avsluttet. I dette eksemplet kan en Clerc gjøre disse operasjonene flere ganger på forskjellige kunder. 5. Se figur 3. Denne kalles en supertilstand. Dens funksjon er å generalisere deler av et diagram. På utsiden av diagrammet kan man behandle denne tilstanden som en enkelt tilstand. 6

Figur 3 Eksempel på tilstandsdiagramm. 4 5 2 Ansatt ble logget på Er logget på Kunde aktiv kunde sjekkes kundeforhold ble aktivisert kunde ble aktiv konto åpnet kunde ble registrert kunde registrert konto ble laget kunde ble registrert(dato) kunde ble slettet(dato) Ansatt ble logget av 3 T T2 T3 T4 4 Klassediagram Klassediagram viser den statiske strukturen for en modell, spesielt de ting som eksisterer (slike som klasser og typer), deres interne struktur, og relasjoner til andre klasser/typer. Typer er en annen form for objekter enn de som kommer fra klasser, de kommer fra objekttyper. Ved hjelp av et klassediagram kan man vise hvordan de ulike klasser/typer er relatert til hverandre. Et klassediagram er en graf av klassifiseringselementer knyttet sammen ved deres statiske relasjon. Merk at et klasse diagram også kan inneholde interfaces, pakker, relasjoner og instanser (slik som objekter eller linker). For hver type objekt eller klasse har man karakteristika (attributter) og prosesser det kan utføre (metoder). Videre følger en forklaring til de nummererte firkantene i figur 4.. Se figur 4. 7

Dette er et symbol som representerer en klasse/objekt, som heter klasse. Klassen er den beskrivende delen for et objekt, disse objekter har lik struktur, oppførsel og relasjon. Modellen er opptatt av å beskrive intensjonen for dette objektet, dvs. regelen som definerer den. Øverste del av den er satt av for å angi navnet på klassen/objektet. Midtre del brukes for attributter, og nederste del er for metoder. 2. Se figur 4. Denne typen symbol er en generalisering. Det er en form for relasjon som brukes mellom et generelt element (foreldre (Person)) og et mer spesifikt element (barnet (Clerc og Customer)). Barnet er fullstendig konsist med det første elementet (foreldre) og i tillegg til å ha ekstra informasjon (metoder og/eller attributter). Denne typen relasjon kan brukes på klasser, pakker, use cases, etc. 3. Se figur 4. Denne typen symbol er en aggregering Det er en form for relasjon der man må spørre seg selv: Er et eller flere av den ene klassens objekter en del av et eller flere objekter av den andres klasse? I eksempelet kan man si det slik: Et System skal ha en eller flere ATM, ogenatm skal være knyttet til et System objekt. Det jeg tenkte når jeg modellerte dette, var at for å ha et System så må man ha en ATM. AltsåerATM en del av det å ha et System. Dvs. her er helheten System klassen/objektet og delen er klasse/objekt ATM. Det som også er viktig å merke seg her, er at en del kan tilhøre mer enn en aggregering, og den kan eksistere uavhengig av helheten. 4. Se figur 4. Denne typen symbol er en komposisjon. Det er en form for relasjon som er lik aggregering, men som er mye strengere. Med komposisjon kan et delobjekt (Acount) kun tilhøre et helhetsobjekt (Customer), og delobjektene er forventet å leve og dø med helhetsobjektet. I eksempelet inngår Acount som et delobjekt av helhetsobjektet Customer. Når Customer objektet blir opprettet, skal man også opprette et Acount objekt som skal eksistere like lenge som Customer eksisterer. Acount kan ikke være i en aggregering eller komposisjon med andre objekter. 5. Se figur 4. Dette er en måte å gruppere klasser inn i et høyere nivå. Pakker/Klynger (Jeg kommer til å bruke ordet pakker her) kan danne sitt eget subsystem. Med dette menes en gruppe klasser som hører sammenogsomkanmodelleresforsegselv.ieksempelettilhører klassene System og ATM (minibank) naturlig sammen i en egen 8

pakke, mens de resterende er klasser som kan være frittstående. Et eksempel til gjelder programmeringsspråket Java. Her er alle pakkene man innhenter gjennom import setningen, pakker. Import java.io.* sier at man skal hente inn pakken java.io, som er en del av hele API til Java, altså et eget subsystem. 6. Se figur 4. Dette symbolet er en assosiasjon. Den beskriver relasjoner mellom instanser av klasser (begge ender kan være knyttet til samme instans, men der de to endene er forskjellige). Man kan ha ulike forhold mellom objektene, en til en, en til mange, mange til en, etc. etc. I eksemplet kan man lese asossiasjonen slik: en Clerc kan ha null til et System, ogetsystem kan ha null til mange Clerc. Dvs.når man er Clerc i dette systemet, skal man være tilknyttet et System objekt, samt at et System objekt kan ha ingen eller mange Clerc objekter. Banksystemet kan eksistere uten å ha noen Clerc. 9

Figur 4 Eksempel på klasse diagramm. 5 6 Bank System 0.. 0..* log_on():boolean Clerc System System has ATM..* ATM is in a System ATM 3 pay_out_money Person name:string = new String(this) 2 Clerc emplyeeid:int..* Customer customernumber:int create_new_user():customer 4 0..*..* IS_Acount_Free Acount check_nr():booean create_acount():acount_id 0