Fra krav til modellering av objekter

INF1050: Systemutvikling
14. februar 2017
Fra krav til modellering av objekter
Førstelektor Yngve Lindsjørn
INF1050 -> Systemutvikling -> Fra krav til modellering av objekter
1
Temaer i dagens forelesning
 System-modellering og systemperspektiv
 Objektorientert perspektiv
 UML diagrammer
 Bruksmønster (Use-Case)
 Sekvensdiagram
 Klassediagram
 Aktivitetsdiagram
 Tilstandsdiagram
 Modelldrevet tilnærming
INF1050 -> Systemutvikling -> Fra krav til modellering av objekter
2
Systemmodellering
 Det sentrale med systemmodellering er å utvikle abstrakte
modeller av et system, der hver modell representerer
ulike perspektiver av systemet
 Systemmodellering er viktig for å forstå funksjonaliteten i
et system og modellene brukes til å kommunisere med
kundene og til dokumentasjon
 Grafisk notasjon er viktig, og er i dette kurset i hovedsak
basert på notasjoner gitt i UML (Unified Modeling
Language)
UML: http://www.omg.org/gettingstarted/what_is_uml.htm
Bok: Martin Fowler: UML distilled
INF1050 -> Systemutvikling -> Fra krav til modellering av objekter
3
Grafiske modeller
 Et godt hjelpemiddel i diskusjonen om systemet
 Ikke komplette eller ukorrekte modeller kan være OK så
lenge formålet er å bidra til diskusjon
 Brukes ofte som en sentral del i dokumentasjon av et
eksisterende system
 Modeller bør representere systemet korrekt, men trenger
ikke være komplett
 En detaljert systembeskrivelse kan brukes til å
implementere systemet
 Modellen må både være korrekt og komplett
INF1050 -> Systemutvikling -> Fra krav til modellering av objekter
4
E-resept –systemer og meldingsflyt
hentet fra e-resept arkitektur versjon 2.71
Dette diagrammet er
en sentral del i
dokumentasjonen
av e-resept systemet
INF1050 -> Systemutvikling -> Fra krav til modellering av objekter
5
Modeller
 En modell er en abstrakt oversikt av et system
 Ser bort fra alle detaljene
 Systemmodeller blir laget for å vise et systems




kontekst,
interaksjon,
struktur og
adferd (”behavior”).
INF1050 -> Systemutvikling -> Fra krav til modellering av objekter
6
Systemperspektiver
 4 ulike perspektiver
 Eksternt perspektiv, der du modellerer konteksten til
systemet
 Interaksjonsperspektiv, der du modellerer interaksjonen
mellom et system og omgivelsene, eller mellom
komponentene i et system
 Strukturelt perspektiv, der du modellerer organisasjonen
systemet inngår i eller datastrukturen som brukes av
systemet
 Adferdsperspektiv, der du modellerer systemets adferd og
hvordan systemet reagerer på hendelser
INF1050 -> Systemutvikling -> Fra krav til modellering av objekter
7
Kontekstmodeller
 Kontekstmodeller viser hvordan et
system relaterer seg til andre systemer
og prosesser
INF1050 -> Systemutvikling -> Fra krav til modellering av objekter
8
Kontekstmodell – MHC-PMS
Pasientdatabase
System
Rapportering
System
Tilgangsrettigheter
System
MHC-PMS System
Statistikk
System
Foreskriving
System
Avtale
System
INF1050 -> Systemutvikling -> Fra krav til modellering av objekter
9
Medical Health Care – Patient
Management System
MHC-PMS
Lokalt system
MHC-PMS
Lokalt system
MHC-PMS
Lokalt system
MHC-PMS - Server
Pasientdatabase
Beskrivelse av MHC-PMS: Lærebok kapittel 1.3.2. Denne er hentet fra figur
1.6
INF1050 -> Systemutvikling -> Fra krav til modellering av objekter
10
Interaksjonsmodeller
 Modeller av interaksjoner er viktig for å identifisere
brukerkrav
 Bruksmønstre og sekvensdiagrammer er sentrale
teknikker og diagrammer som brukes i interaksjonsmodeller
INF1050 -> Systemutvikling -> Fra krav til modellering av objekter
11
Bruksmønster- og sekvensdiagram
 Bruksmønster diagrammer (Use Case diagrams) og
sekvensdiagrammer brukes til å beskrive interaksjonen
mellom brukere og systemer.
 Bruksmønstre beskriver interaksjonen mellom et
system og eksterne aktører
 Sekvensdiagrammer legger til mer informasjon for
hvert bruksmønster og viser også interaksjon mellom
objekter – kall på metoder
INF1050 -> Systemutvikling -> Fra krav til modellering av objekter
12
Bruksmønstre i MHC-PMS som involverer
medisinsk saksbehandler
Registrer pasient
Avregistrer pasient
Se pasientinfo
Saksbehandler
Overfør pasientinfo
Kontakt pasient
Hentet fra figure 5.5 i lærebok
INF1050 -> Systemutvikling -> Fra krav til modellering av objekter
13
Sekvensdiagram “Se pasientinfo ”
P : Pasientinfo
D:
MHCPMS-DB
A : Autorisasjon
: Medisinsk
saksbehandler
1: SePasientinfo (PID)
2: Report (Info, PID, UID)
3: Autorisasjon(Info, UID)
4: Autorisasjon
Alt
Autorisasjon ok
5: Pasientinfo
Autorisasjon feilet
6:5 Feilmelding (Ingen aksess)
INF1050 ->Systemutvikling-> Fra krav til modellering
14
Sekvensdiagram for “overfør pasientdata”
: Medisinsk
saksbehandler
P : Pasientinfo
A : Autorisasjon
D:
MHCPMS-DB
: Pasientdatabasesystem
Logg inn()
ok
Alt
OppdaterInfo()
Oppdater Pasientdatabase(UID)
Autoriser(TF, UID)
Autorisasjon
Oppdater(PID)
Oppdater OK
Melding (OK)
Oppdater Sammendrag
Sammendrag (UID)
Autoriser(TF, UID)
Autorisasjon
Create
S :
Sammendrag
Oppdater(PID)
Oppdater OK
Melding (OK)
Logg ut()
INF1050 -> Systemutvikling -> Fra krav til modellering av objekter
15
E-resept: Lege (rekvirent)sender individuell
søknad om refusjon til HELFO
Merk: Her er dialogen mellom pasient og lege (rekvirent) også med som meldinger selv om dette ikke er metodekall
INF1050 -> Systemutvikling -> Fra krav til modellering av objekter
16
E-resept: Beskrivelse av at rekvirent sender
individuell søknad om refusjon til HELFO
1. I dialog mellom pasient og lege (rekvirent) avklares at
det er behov for å sende individuell søknad om refusjon
2. Rekvirent spør om en søknad skal sendes på vegne av
pasienten.
3. Pasienten gir samtykke knyttet til at legen sender
søknad til HELFO på vegne av pasienten og at
rekvirent eventuelt får kopi av vedtaksbrev (avhengig av
pasientens samtykke)
4. Rekvirent registrerer søknad om refusjon i EPJsystemet (rekvirent vil ofte lage en reseptkladd i samme
prosess, slik at både resept og søknad sendes).
5. Rekvirent verifiserer og signerer søknaden
…..Etc.
INF1050 -> Systemutvikling -> Fra krav til modellering av objekter
17
Strukturelle modeller
 Strukturelle modeller av et programvaresystem
viser organiseringen av systemet ved å vise
systemets komponenter og relasjonen mellom
komponentene
 Klassediagrammer brukes til å definere den statiske
strukturen av klasser og deres assosiasjoner
INF1050 -> Systemutvikling -> Fra krav til modellering av objekter
18
Klassediagrammer
 Klassediagrammer blir brukt i utviklingen av systemmodeller
for å vise klasser i systemet og assosiasjoner mellom disse
klassene
 En klasse kan bli sett på som en generell definisjon
(mønster) av objekter som er instanser av klassen
 En assosiasjon mellom to klasser angir at det er en
forbindelse mellom disse klassene
 Ved utvikling av modeller i den tidlige fasen av
systemutviklingsprosessen, vil objekter som regel
representere (være en modell av) noe i den virkelige verden,
som en pasient, en doktor, en bil eller en bankkonto.
INF1050 -> Systemutvikling -> Fra krav til modellering av objekter
19
Eksempel (også brukt i INF1010)
class Bank
I en bank skal vi kunne legge inn en ny kunde, fjerne en
kunde, sette inn penger på en kundes konto og finne
forvaltningskapitalen til banken (summen av alle
beløpene på alle kontoene)
class BankData
Alle kontoene blir administrert av klassen BankData
class Konto
Attributter (data) og metoder for en konto
INF1050 -> Systemutvikling -> Fra krav til modellering av objekter
20
UML – klassediagram
Bank
Bankdata
1
1
1
0..*
Konto
INF1050 -> Systemutvikling -> Fra krav til modellering av objekter
21
Java datastruktur
Bank-objekt
BankData-objekt
Mange Konto-objekter
INF1050 -> Systemutvikling -> Fra krav til modellering av objekter
22
Klasser og assosiasjoner i MHC-PMS
Spesialist
1
+Henvist til
1..*
Tilstand
+Diagnostisert til
1..*
+Henvist fra
Pasient
1..*
1..*
Fastlege
1
1..*
+Deltar i
1..*
+Foreskriver
Konsultasjon
1..*
1..*
+Bruker
Medisinering
1..*
1..*
+Foreskriver
1..*
Klinikklege
INF1050 -> Systemutvikling -> Fra krav til modellering av objekter
1..*
Behandling
23
Klassen konsultasjon med flere detaljer
INF1050 -> Systemutvikling -> Fra krav til modellering av objekter
24
Generalisering
 Generalisering er en teknikk vi benytter oss av for å
håndtere kompleksitet
 I stedet for å lære alle detaljene til hvert eneste objekt
plasserer vi objektene i mer generelle klasser (person,
dyr, bil, hus etc.) og fokuserer på hva som er
karakteristisk ved disse klassene
 Dette gir oss muligheten til å se at ulike objekter har
felles karakteristikker, for eksempel at både pasient og
lege er personer
INF1050 -> Systemutvikling -> Fra krav til modellering av objekter
25
Generalisering
 Det er ofte nyttig å undersøke klassene i et system for
å se om det er mulighet for generalisering
 I objektorienterte språk, som Java, er generalisering en
del av språket – gjennom såkalt arvemekanisme
(”inheritance”)
 Attributter og operasjoner (metoder) som er assosiert
med ”superklasser” er også assosiert med ”subklasser”
gjennom arv. Subklassene vil så legge til mer
spesifikke attributter og operasjoner
INF1050 -> Systemutvikling -> Fra krav til modellering av objekter
26
Eksempel - generalisering
Lege
Klinikklege
Spesialist
Fastlege
Teamlege
Legepraktikant
INF1050 -> Systemutvikling -> Fra krav til modellering av objekter
Kvalifisert lege
27
Adferdsmodeller (”behavioral” models)
 En adferdsmodell er en modell av dynamikken i et
system ved kjøring av systemet. Modellen viser hva
som skjer ved respons på stimuli.
 To typer stimuli
 Data. Systemet fanger opp data som må prosesseres
 Hendelser. En hendelse som trigger systemet og fører til
prosessering. En hendelse har ofte assosierte data i
tillegg, men ikke nødvendigvis
INF1050 -> Systemutvikling -> Fra krav til modellering av objekter
28
Datadrevet modellering
 Mange forretningssystemer er primært drevet av data.
Systemene blir kontrollert av input av data, med få
eksterne hendelser
 Datadrevne modeller viser sekvensen av handlinger
som er involvert i prosesseringen av ”inputdata” og
generering av ”outputdata”
 Modellene er spesielt nyttige under
kravspesifikasjonsfasen og brukes til å vise ”end-toend” prosessering av systemet
INF1050 -> Systemutvikling -> Fra krav til modellering av objekter
29
Aktivitetsdiagram ordreprosessering
INF1050 -> Systemutvikling -> Fra krav til modellering av objekter
30
Ordreprosessering som
sekvensdiagram
V : Varelager
O : Ordre
OR :
Ordreregister
: Leverandør
: Innkjøpsansvarlig
fyllInnOrdre()
validerOrdre()
Oppdater(mengde)
Lagre()
Send()
INF1050 -> Systemutvikling -> Fra krav til modellering av objekter
31
Hendelsesdrevet (“Event-driven”)
modellering
 Mange systemer er drevet av ”hendelser”, med minimal
data prosessering
 Modellene viser hvordan et system reagerer på
eksterne og interne hendelser
 Baseres på antagelsen av at systemet har et endelig
antall tilstander og at hendelser (stimuli) fører til at
systemet går fra en tilstand til en annen
INF1050 -> Systemutvikling -> Fra krav til modellering av objekter
32
Tilstandsdiagram for mikrobølgeovn
Full kraft
do/ Sett kraft=600
Tidsangiver
Full kraft
Tall
Sett tid
Venter
do/ Vis tid
Operasjon av
mikrobølgeovn
Halv kraft Full kraft
do/ Hent tall
exit/ Sett tid
Avbryt
Dør lukket
Halv kraft
Tidsangiver
Aktivert
Halv kraft
do/ Vis "Klar"
Dør åpen
Dør lukket
do/ Sett kraft=300
Venter
do/ Vis tid
Dør åpen
Deaktivert
do/ Vis "Venter"
INF1050 -> Systemutvikling -> Fra krav til modellering av objekter
33
Tilstandsdiagram for virkning av ovn
Operasjon av mikrobølgeovn
Sjekk
Varm opp
OK
do/ Kjør mikrobølgegenerat...
do/ Sjekk status
Feil på dreieskive
Timeout
Stråle/elektrode feil
Alarm
Ferdig
do/ Vis feilmelding/hendels...
do/ Signal gis i 5 sek
INF1050 -> Systemutvikling -> Fra krav til modellering av objekter
34
Tilstander og stimuli for mikrobølgeovn
Stimuli
Beskrivelse
Halv kraft (300 W) Brukeren har trykket halv kraft knappen
Full kraft (600 W)
Brukeren har trykket full kraft knappen
Tidsinnstilling
Brukeren har trykket en av de forhåndsgitte
tidsinnstillingene
Tall
Brukeren har trykket et tall på tastaturet
Åpen dør
Døra er ikke lukket
Dør lukket
Døra er lukket
Start
Brukeren har trykket startknappen
Kanseller
Brukeren har trykket kanseller knappen
INF1050 -> Systemutvikling -> Fra krav til modellering av objekter
35
Modelldrevet systemutvikling
 I modelldrevet utvikling (model-driven engineering MDE) er det modellene i seg selv som er målet og
“output” fra utviklingsprosessen
 Kode og programmer blir generert automatisk fra
modellene
 Tilhengere av MDE hevder at dette gjør at ingeniører
og utviklere ikke trenger å kunne detaljer innen
programmering, plattformer etc.
INF1050 -> Systemutvikling -> Fra krav til modellering av objekter
36
Bruk av modell-drevet utvikling
 Fordeler
 Høyere abstraksjonsnivå
 Automatisk kodegenerering gjør det enklere og rimeligere
å tilpasse systemer til nye plattformer
INF1050 -> Systemutvikling -> Fra krav til modellering av objekter
37
Bruk av modell-drevet utvikling
 Ulemper
 Abstraksjonsmodeller er ikke nødvendigvis det riktige for
implementering
 Mange hevder koden er lite effektiv og endringer i koden
er nødvendig
 Vanskelig å holde modellen oppdatert ved endringer og
feilretting
INF1050 -> Systemutvikling -> Fra krav til modellering av objekter
38
“Executable” UML
 Den fundamentale ideen bak modell-drevet systemutvikling er
at det er mulig med en komplett automatisk transformasjon fra
modell til kode.
 Dette er mulig innefor UML 2, og kalles Executable UML eller
xUML
 En domenemodell identifiserer de overordnede prinsippene,
Domenemodellen bruker UML klassediagram og inkluderer
objekter, attributter og assosiasjoner.
 Klassemodeller, der klasser defineres sammen med attributter og
metoder (operations i UML)
 Tilstandsmodeller hvor et tilstandsdiagram assosieres med hver
klasse og brukes til å beskrive livssyklusen til klassen
INF1050 -> Systemutvikling -> Fra krav til modellering av objekter
39
Smidige metoder og modell-drevet utvikling
 Mange brukere av modell-drevet utvikling hevder at
metoden understøtter en iterativ tilnærming og derfor
passer godt innen smidig metodikk
 Svært omfattende modellering tidlig i prosessen er i
motsetning til idealene til “agile manifesto”, og det er få
utviklere innen smidig metodikk som føler seg
komfortabel med modell-drevet utvikling
INF1050 -> Systemutvikling -> Fra krav til modellering av objekter
40