Motivasjon: Hvorfor modellere? Systemutvikling med UML Del 2 (forelesning 4-6) Øyvind Stavdahl Institutt for teknisk kybernetikk, NTNU Oktober 2004 Avmystifisere systemets kompleksitet Skaffe oversikt Systematisere, dele opp i Rutinearbeid Arbeid som krever nytenkning/kreativitet Husk: du betales for å få ting til å virke KISS Keep It Simple and Stupid! Repetisjon: Egenskapsrommet Funksjonsrommet (hva systemet skal gjøre) Egenskapsrommet Forslag til ny dekomposisjon, tilpasset en objektorientert begrepsverden 1 hvordan delsystemene skal utveksle informasjon (samarbeide) Informasjonsrommet (hva systemet må huske) Tilstandsrommet (hvordan systemet skal reagere) Komposisjonsrommet hva systemet må kunne huske og kunne gjøre, samt hvordan Informasjon og funksjoner er gruppert i delsystemer) Oppførselsrommet hvordan delsystemene skal reagere 1 Inndelingen er hentet fra Nina Strand, En tilpasing av UML for Real-Time Systemer. Institutt for informatikk, Universitetet i Oslo, 2004 1
Egenskapsrommet Hvilke UML-modeller tilsvarer dette? Klassediagram Oppførselsrommet Komposisjonsrommet Kommunikasjonsdiagram Tilstands diagram 1. Intro til UML SA/SD vs. UML 2. Funksjonskrav: Use case-diagram 3. Komposisjonsrommet : Klassediagram Innhold 4. Oppførselsrommet : Tilstandsmaskin 5. : Kommunikasjonsdiagram Andre UML-diagrammer 6. Et lite eksempel Oppsummering Oppførselsrommet Tilstandsdiagram = Tilstandsmaskin Tilstandstransisjonsdiagram State chart Petri-nett Tilstandsrommet Informasjonsrommet Tilstands diagram Kjært barn mange navn og notasjoner 2
Et tilstandsdiagram viser oppførselen til......det du trenger å modellere oppførselen til! Tilstandsdiagrammet Eksempel: Safe med hemmelig lås Systemet Et delsystem Spesifikasjon/oppførselsmodell, fjernt fra koden transisjon Initiell Pseudotilstand Wait Safe closed Candle moved [door closed] / reveal lock open Key turned [candle in] / open safe Lock Instanser av en gitt klasse Kode-nært Key turned [candle out] / release killer rabbit tilstand Slutt-tilstand Transisjoner - syntaks Hvis denne hendelsen inntreffer......og denne betingenlsen er oppfylt...... foretar systemet denne aktiviteten og skifter tilstand. Transisjoner i praksis I et typisk hendelsesdrevet system: Innkommende melding Status for et_eller_annet Ett eller flere prosedyrekall trigger_signature [guard] / activity byte sendt [flere i kø] / send neste byte 3
Ulike tilstander ulike reaksjoner på hendelser Interne aktiviteter På middagsbesøk Elg i sikte / ta bilde På besøk i zoologisk hage Elg i sikte [uten rød topplue] / skyt På jakt entry / hils pent på vertskapet exit / si pent farvel tilbud om mat [plass til mer] / takk ja tilbud om mat [stappmett] / takk nei tilbud om dessert / takk ja Interne aktiviteter vs. selvtransisjoner Interne aktiviteter trigger ikke entry- og exit-aksjoner! tilbud om dessert / takk ja Aktivitetstilstander og do-activities Tilstander der systemet (objektet) er i kontinuerlig aktivitet: På middagsbesøk entry / hils pent på vertskapet exit / si pent farvel do / Spis maten din tilbud om mat [plass til mer] / takk ja tilbud om mat [stappmett] / takk nei 4
Aktivitetstilstander og do-activities Aktivitetenes varighet Do-aktiviteter er pr.def. preemptive! Do-aktiviteter tar tid Når/hvis aktiviteten er ferdig, skjer pr.def. transisjonen uten trigger do / Spis maten din Må rope på elgen / rop på elgen [maten var god] / Takk for maten do / Spis maten din Må rope på elgen / rop på elgen [maten var god] / Takk for maten Vanlige aktiviteter er momentane (derfor ikke preemptive). Nøstede tilstander Innhold Hvis flere tilstander har samme transisjoner og interne aktiviteter: sulten middag dessert-tid dessert stappmett 1. Intro til UML SA/SD vs. UML 2. Funksjonskrav: Use case-diagram 3. Komposisjonsrommet : Klassediagram 4. Oppførselsrommet : Tilstandsmaskin 5. : Kommunikasjonsdiagram Andre UML-diagrammer Må rope på elgen / rop på elgen Ikke mer dessert igjen 6. Et lite eksempel Oppsummering 5
Oppførselsrommet met Tilstandsrommet Informasjonsrommet Tilstands diagram Viser sekvenser av aktiviteter arbeidsgangen i systemets virkemåte Egner seg best på overordnet nivå større deler av systemet større deler av systemets funksjonalitet Derfor: Mer relevant for analyse enn for konstruksjon. mets elementer Partisjoner i aktivitetsdiagrammet 6