Use Case - Webbkurs

Download Report

Transcript Use Case - Webbkurs

UML
Unified Modeling Language
•1
UML – kort historik
 1980-talet: Många OO-metoder
 Stora skillnader inom
 Notation
 Begrepp
 Omfång
 Svåra att jämföra
 Unified Modeling Language
 enad eller likriktad
•2
UML – kort historik
 Kortfattat kan UML beskrivas så här:
 UML är ett visuellt språk för att specificera, konstruera och
dokumentera ingående delar i ett system.
 UML är ett generellt modelleringsspråk i den mening att det går
att använda för olika verksamhetsområden och för olika tekniska
plattformar.
 Historik:
 UML 2.0 – utökning som lanserades stegvis mellan 2003 och
2005
 De som mest aktivt deltog i framtagande av UML var:
 Grady Booch
 Jim Rumbaugh
 Ivar Jacobson
 Ansvaret för vidareutveckling har OMG (Object Management
Group) där vidare specifikationsarbete sker i form av en
community.
•3
UML – kort historik
 Målet är att UML ska




Kunna beskriva alla typer av system
Kunna utökas vid behov
Kunna tolkas entydigt av en maskin
Kombinera styrkorna från tidigare OO-notationer
•4
UML – kort historik
 Några egenskaper hos UML som modelleringsspråk:
 UML är ett visuellt modelleringsspråk.
 UML består av en stor uppsättning element och regler för
hur elementen kopplas samman.
 14 olika diagramtyper finns identifierade i UML 2.2,
tidigare var det 9 stycken.
 Elementen har en definierad syntax och semantik, vilket
gör att det kan kallas för ett språk.
 UML är utökningsbart
•5
Genomgång av UML
 UML är ingen metod
 Beskriver därför inte
 Arbetssteg (omfattning / ordning)
 Projektfaser
 Rollfördelning (ansvar)
 Leveransobjekt
 Övrig dokumentation
 Stödjer alla faser i mjukvaruutveckling
 Metodoberoende
•6
Elementen i UML
 Språket UML byggs upp av ett antal element och
regler för hur dessa element kopplas samman.
•7
Diagram i UML 2.2
•8
Allmän UML-notation
 En notering kan göras var som helst i ett diagram.
Antingen som en fristående notering eller kopplad till
ett element via en streckad linje.
•Note
•Note
 Använd noteringar för att:
 Förklara och informera läsaren.
 Förklara det som inte är uppenbart.
 Skriva kodfragment eller text som beskriver ett beteende
eller en begränsning.
•9
Allmän UML-notation
 Ramar (Frames) är en nyhet i UML 2.0.
 De används för att rama in grupper av samverkande
element eller för att att referera till andra sådana
grupper.
 rama in hela diagram.
 rama in delar av diagram, exempelvis sekvensdiagram.
•10
•Så här ritas en klass
•Klassnamn
•instansvariabler
•metoder
•Klass utan
•instansvariabler
•Klassnamn
•metoder
•Så här ritas en
instans
•Klass på designnivå
•Djur
•namn
•fördelseår
•hämtaNamn
•hämtaÅlder
•Klass på implementationsnivå
•Djur
•private String namn
•private int födelseår
•public String hämtaNamn()
•public int hämtaÅlder()
•:Klassnamn
•variabelnamn = värde
•11
Klassdiagram
 Klassdiagrammet är ett strukturbeskrivande diagram som
används för att visa en statisk bild över modellelement
och deras inbördes relationer.
 Klassdiagram är det mest centrala diagrammet i UML
 Visar klasserna som ingår i systemet
 Visar relationer mellan klasser (arv, aggregat, associationer)
 Beskriver systemets statiska struktur
 Vad används det till?
 Definiera vilka data som systemet ska hantera
 Definiera hur data kan modifieras
 Vad uppnås?
 Verksamhetsförståelse
 Ansvarsfördelning mellan klasser
•12
Klassdiagram
 Klassdiagram kan användas i många olika sammanhang
där strukturelement och deras relation ska modelleras.
 Kodgenerering och kodvisualisering:
 Objektorienterad kod och klassdiagram har mycket gemensamt
och historiskt sett är den kopplingen kärnan i de verktyg som
stödjer UML. Objektorienterad kod kan visualiseras med UML
och från klassdiagram kan kod genereras.
 Verksamhetsmodellering:
 Konceptuella modeller för att beskriva verksamheter är lämpliga
att beskriva i form av klassdiagram.
•13
Klassdiagram
Class
Generalization
Association
Dependency
ClassName
Interface
<<interface>>
InterfaceName
Interface
Realization
Aggregation
Composition
•14
Klassdiagram
 Klass
 Företeelse i verksamheten
 Ritas som en tredelad rektangel
 Namn, attribut och operationer skrivs ut
 Första rutan i rektangeln får inte vara tom. (Klass Namn)
Person
-name : String
-age : int
 Attribut
 Egenskap för en klass
 Har en datatyp
 Värden sätts i objekt av klassen
 Exempel: sträng, heltal
 Namnet bör spegla vilka data som lagras
 Synlighet (prefix före namn):
 Public (+)
 Private (-)
 Protected (#)
•15
Klassdiagram
 Operation
 Kan vara
 Kommando – ändrar objektets tillstånd
 Fråga – returnerar data om tillståndet (get)
 Kan ha en eller flera parametrar med varsin datatyp
•VisibilityForOperationsClass
+ publicOperation()
- privateOperation()
# protectedOperation()
 Objekt
 Förekomst av en klass
person : Person
name : String = Alex Jones
age : int = 25
•16
Association
 Association (A har/använder B)
 Visar att klasserna känner till varandra
 Statisk relation mellan två eller fler klasser
 Rak linje innebär obestämd eller dubbelriktad association.
Innebörd bestäms i projektet.
 Enkelriktad association ritas som en pil
 Associationens namn bör spegla relationens syfte
 Placeras nära linjen
 Inte obligatoriskt
 Verb
 Roll




Visar hur en klass uppfattas av en annan klass
Kan namnges (substantiv)
Varje association har två roller (en för varje riktning)
Skriv namnet nära klassen som rollen avser (på en
associationslinje)
 Exempel: Ägare, Kund, Lärare
•17
Ex Roller
Person
Bil
äger
1
Ägare
*
Egendom
Person
Mor
1
1
Far
Föräldraskap
•18
Association
•ClassA
•ClassC
•ClassE
•ClassG
•ClassI
•ClassK
•ClassB
•ClassD
•ClassF
•ClassH
•ClassJ
•ClassL
 Exempel på diverse relationer mellan klasser





ClassA är beroende av ClassB.
ClassC har en ospecificerad koppling till ClassD.
ClassE känner till ClassF
Båda klasserna känner till varandra.
Aggregat används för att visa på en struktur med “whole/part”-relation. ClassJ är
en del av klassen ClassI
 Påminner om aggregat men vid komposition kan inte ClassL existera om inte ClassK
finns.
•19
Association
 Multiplicitet
 Visar hur många objekt av en klass som kan kopplas ihop
med objekt av en annan klass
 Anges vid associationslinje
Employee
Multiplicitet
 Asterix (*) = godtyckligt många
 <min>..<max> = intervall
1
 Exempel:





*
0..*
2, 3, 7
1..7
4..*
1..2
Computer
•20
Aggregat
 Aggregering (är en del av)
 Visar att ett modellelement (en klass) är en del av ett
annat modellelement (en annan klass)
 Starkare form än association mellan klasser
 Samma notationsmöjligheter (multiplicitet, roller, etc)
 Visas som en streck med diamant
Work Team
1
1..10
-member
Person
•21
Aggregat
 Ifylld diamant (komposition) avser att ett objekt av
en klass kan endast existera som del av ett objekt av
en annan klass. Förstörs huvudobjektet förstörs även
delarna (composition)
1
1
Chassi
Bil
1
1
Motor
1
4
Hjul
•22
Aggregat
 Exempel på komposition
Listbox
*
Window
1
*
Button
*
Menue
•23
Generalisering /Specialisering (Arv)
 Specialisering /Generalisering (är)
 Visar att en klass ärver egenskaper och beteenden från en
annan klass
Animal
 Specialfall av association
 Abstrakta klasser: saknar instanser
Mammal
Fordon
Cat
Bil
Horse
Buss
Grundregel för pilar: Den som pekar är den som utför en aktiv handling.
•24
Klassdiagram
 Exempel
Hinge
Door
-Passage
Room
-size
*
*
-isOpen : bool
-color : String
+open()
+close()
+isOpen()
+getColor()
+setColor(in color : String)
*
1
-
1
Lock
-isLocked : bool
*
+lock()
+unlock()
+isLocked()
Glass Door
-isBreakable : bool
+isBreakable() : bool
•25
Klassdiagram
 Mål / Ideal
 Visar hur användarna tänker kring sin verksamhet
 Beskriver användarnas språk
(jämför med begreppsmodellering)
 Visar hur centrala begrepp hänger ihop
•26
Klassdiagram
 Objektdiagram




Instanciering av ett klassdiagram
Visar en ögonblicksbild över tillståndet i ett system
Kan klargöra komplicerade klasstrukturer
Behöver inte alltid tas fram
•27
Tillståndsdiagram
 Vad är det?
 Beskriver totala dynamiken för en klass (beteende)
 Behövs inte för enkla klasser
 Händelseorienterat
 Vad används det till?
 Hitta alla tillstånd för objekt av klassen
 Beskriva klassens levnadscykel över samtliga
användningsfall
 Identifiera alla giltiga övergångar mellan tillstånd
 Vad uppnås?
 Hantering av komplicerad dynamik
•28
Tillståndsdiagram
 Tillståndet hos bok objektet kan ändras när en kopia av
boken lånas.
 Tillståndet kan ändras från att vara utlåningsbar (det
finns en kopia i biblioteket) till ej utlåningsbar (alla
kopiorna är utlånade eller reserverade). Vi kan visa detta
med ett tillståndsdiagram.
•29
Tillståndsdiagram
•30
Ex. tillståndsdiagram - kontantuttag
sätt in kort
Kort insatt
begär kod
Väntan på kod
förkasta
betalning
mata in kod
Kod inmatad
avbryt
Belopp godkänt
Kod accepterad
godkänn belopp
Väntan på belopp
Belopp valt
välj belopp
Belopp ej godkänt
•31
Ex. tillståndsdiagram - telefon
Active
TimeOut
lift receiver / getDialTone
DialTone
do/ playmessage
dial digit(n)[incomplete]
do/ playdial tone
dial digit(n)
Dialing
dial digit(n)[invalid]
Idle
Invalid
do/ playmessage
Connecting
Pinned
Busy
busy
connected
caller hangsup / disconnect
do/ playbusytone
Talking
Ringing
do/ playringingtone
•32
Övning klassdiagram
 Böcker och tidskrifter
 Biblioteket innehåller böcker och tidskrifter.
 Det kan finnas flera kopior av samma bok.
 Endast biblioteksanställda får låna tidskrifter.
•33
Lösningsförslag
•34
Use Case
 Use Case är användarfall som





visar systemet ur användarnas synvinkel
beskriver en bestämd uppgift som görs i ett system
består av ett diagram och en textbeskrivning
ska skapa ett mervärde för systemets aktörer
lätt modell att komma igång med
 Use Case-Diagrammet
 visar relationen mellan olika
användningsfall
 visar hur aktörerna använder användningsfall
•35
Use Case
 Vad används det till?




Hitta systemets användare
Identifiera användarnas krav
Definiera systemets funktioner
Identifiera delsystem
•36
Use Case
•37
Use Case
Notation:
•Primär aktör
Informationsflöde
(dubbelriktat)
•Sekundär aktör
Informationsflöde
(enkelriktat)
<Actor>
<Actor>
Funktionsnamn
•Ett användningsfall
(Use Case)
•Include
Nyttjande av användningsfallet
Systemets namn
•Systemet
•Extends
Utökning av användningsfall
•38
Use Case
 Aktör
 Primär aktör i förhållande till systemet
 Motsvarar en roll som användaren spelar
 En användare kan ha många roller
 Flera användare kan ha samma roll




<Actor>
Använder systemet direkt
Erhåller värden från systemet
Behöver inte vara en person
Exempel: Kund, Tidrapporteringssystem
 Sekundär aktör
 Underhåller eller övervakar systemet
 Gör systemet tillgängligt för primära aktörer
 Exempel: Lagerpersonal, systemklocka
<Actor>
•39
Use Case
 Användningsfall (Use Case)
 Ett användningsfall är en specificerad uppgift en aktör kan
utföra i systemet
 Uppbyggt av ett antal scenarier
 Scenario: dialog mellan aktör och systemet
 Normalfall / undantag
 Tillsammans utgör alla användningsfall systemets
funktionalitet
 System
 Definierar omfånget (gränsen) för systemet
 Kan vara vilken sorts system som helst
 Exempel: Lagerhanteringssystem
•40
Use Case
 Informationsflöde (dubbelriktat)
 En ömsesidig påverkan mellan en aktör och ett
användningsfall (relation)
 Funktionen är beroende av de data som användaren matar
in
 Exempel: Aktörens val avgör vilka skärmbilder som visas
och vilken information som presenteras, därefter gör
aktören nya val, etc.
 Informationsflöde (enkelriktat)
 Informationsflöde från ett användningsfall till en aktör
(eller omvänt)
 Symbolen används för att visa att informationen är
enkelriktad
 Exempel: Rapport skrivs ut till kund (info)
•41
Use Case
•A include B
 Beroende (include)
 Ett including användningsfall inkluderar
ett annat användningsfall
 Beroende (extend)
•A extend B
 Används för att utvidga ett
användningsfall med innehållet i ett
annat användningsfall
 Notationen används ofta för att
beskriva undantag och felhantering i
modellen
•42
Use Case-diagram
Varuleverans (system)
Uses
Beräkna kostnad
Fakturering
Extends
Registrera order
Kund
Plocka ihop
beställning
Registrera
förstagångsanvändare
Leverera varor
Budfirma
Lagerarbetare
Uses kan ses i gamla diagram, i de nyare heter relationen <<include>>
•43
Use Case-diagram
•44
Use Case-diagram
 Realiseras av systemets klasser
 Genom samarbete
 Realiseringen visas i övriga UML-diagram
 Hur användningsfall ska dokumenteras i detalj
beskrivs inte i UML
•45
Use Case-diagram
 Fallgropar?
 Göra ostrukturerade / tvetydiga textbeskrivningar
 Klassiska fällor: synonymer, homonymer, syftningsfel
 För många användningsfall
 Beskriva användningsfall som inte levererar mervärde till
någon aktör
•46
Övning 1 - Use Case
 Vid en bensinstation kan man tanka sin bil och betala
i en automat, antingen med kontokort eller kontant.
 Vilka aktörer och användningsfall kan finnas i detta
system.
•47
Övning 2 - Use Case
 Vilka scenarier kan du hitta för systemet i övning 1?
Beskriv något av scenarierna närmare.
•48
Lösningsförslag
 Övning 1
 Aktörer: kund, bensinbolag (det datorsystem hos
bensinbolaget som kontrollerar bensinkort och
registrerar köp). Eventuellt en administratör till
bensinbolagets system.
 Användningsfall: Tankning med kontant betalning,
tankning med kontokortsbetalning. Ett eller flera
användningsfall som hanterar administration av
systemet.
•49
Lösningsförslag
Tanka med kort
Kund
Bensinbolag
Tanka kontant
Sätta bensinpris
Admin
•50
Lösningsförslag








Övning 2
Två vanliga scenarier:
En kund betalar kontant och tankar
En kund betalar med kort och tankar.
Mer ovanliga scenarier:
En kund betalar kontant och glömmer att tanka
En kund betalar med kort men har glömt sin PIN-kod
En kund vill betala kontant men automaten
accepterar inte sedeln, o.s.v.
 Det finns fler av dessa mer ovanliga scenarier
beroende på alla faktorer som kan gå fel.
•51
Lösningsförslag
 Noggrannare beskrivning av tanka med kontokort:
 En kund anländer till bensinstationen. Textfönstret i
bensinautomaten visar ”Välkommen, sätt in ditt kort”.
 Kunden sätter in sitt kort i automaten.
 Automaten läser kortet, visar ”Ange PIN-kod” i
textfönstret.
 Kunden trycker in sin kod.
 Automaten läser koden, kontrollerar kortet och koden
hos bensinbolaget och finner att de är giltiga.
 Automaten visar ”Tag ditt kort och tanka” i textfönstret.
 Kunden väljer oktantal vid bensinpumpen och tankar.
 Automaten får uppgifter om tankningen från
bensinpumpen och registrerar köpet hos Bensinbolaget.
•52
Sekvensdiagram
 Vad är det?
 Visar hur objekt samarbetar för att lösa en uppgift
 Motsvarar vanligtvis ett användningsfall
 Operationerna visas i tidsordning
 Vad används det till?
 Beskriva systemets beteende (dynamik)
 Skapa arbetsfördelning mellan klasser (ansvar)
 Identifiera saknade klasser
53
Sekvensdiagram
 Vad uppnås?
 Överblick
 Händelser
 Meddelande-flöden (mönster)
 Samarbete mellan komponenter
 Verksamhetsförståelse
 Fallgropar?
 Göra för komplicerade sekvensdiagram
•54
Sekvensdiagram
 Objekt
window
 Deltar i samarbete för att lösa
arbetsuppgift
 Klassnamnet kan skrivas ut
 Exempel: fönster : Fönster
 Livslinje för objektet (lifeline)
 Tidsaxel
 Meddelande
open()
 Skickas mellan objekten
 Metodnamn obligatoriskt
 Kan ha parametrar (inom parentes)
•55
Sekvensdiagram
 Aktivitet
recordPlayer
 Ritas som vertikal rektangel längs livslinjen
 Anges då ett objekt utför arbete i flödet
 Resultatet av ett meddelande-anrop
 Villkor
 Måste gälla för att meddelandet ska sändas
[unlocked]
open()
 Retur-meddelande
valuesOK()
 Retur tillbaka till anroparen
 Visa bara returvärde om det förtydligar
beskrivningen
•56
Sekvensdiagram
 Objektet upphör (destruktion)
 Anger att objektet slutar existera
 Görs på eget initiativ eller resultat av anrop
 Visas som ett kors längs livslinjen
close()
 Asynkront meddelande
 Anroparen väntar inte på retur
 Meddelande (vanligt anrop)
•57
Sekvensdiagram
:Klass1
:Klass2
:Klass3
1. metodnamn
2. metodnamn
3. * metodnamn
•58
Ex. Sekvensdiagram – vad händer när man klickar
på en sökknapp i ett fönster
:Användare
:Sökknapp
:KnappKommando
:Söktextruta
:Modell
:Fönster
•klick
•actionPerformed
•getText
•sökData
•visaSökresultat
•59
Ex. Sekvensdiagram -öppna dörr med en kod
Keypad
Door Control Unit
Security System
Lamp Controller
Door
key pressed(1)
key pressed(5)
key pressed(3)
key pressed(enter)
verify code(153)
code accepted()
light()
open()
•60
•61
Aktivitetsdiagram
 Aktivitetsdiagram beskriver en följd av händelser i ett system, med
hjälp av aktiviteter. Aktivitetsdiagram är en speciell form av
tillståndsdiagram, som bara (eller i huvudsak) innehåller aktiviteter.
 Aktivitetsdiagram liknar procedurella flödesdiagram, med skillnaden
att alla aktiviteter är klart länkade till objekt.
 Aktivitetsdiagram hör alltid ihop med en klass, en operation eller
ett användningsfall.
 Aktivitetsdiagram stöder sekvens- samt parallella aktiviteter.
Parallell körning representeras med ikonen Dela upp/samla ihop,
och det är inte viktigt för aktiviteter som kör parallellt i vilken
ordning de utförs (de kan köras samtidigt eller en i taget).
 Aktivitet
 En aktivitet är ett enda steg i en process. En aktivitet är ett tillstånd i
systemet med intern aktivitet och åtminstone en utgående
övergång. Aktiviteter kan också ha mer än en utgående övergång,
om de har olika villkor.
•62
Några andra typer av diagram


Samarbetsdiagram
Samarbetsdiagram visar växelverkan mellan objekt som deltar i en speciell
situation. Det här är mer eller mindre samma information som visas i
sekvensdiagram, men där läggs vikten vid hur växelverkan sker i tiden, medan
samarbetsdiagram lägger vikten vid sambanden mellan objekten och deras
topologi.


Komponentdiagram
Komponentdiagram visar programkomponenter (antingen komponentteknologier
som Kparts, CORBA-komponenter eller Java Beans eller bara delar av systemet som
är klart urskiljbara) och artefakterna de består av, som källkodsfiler,
programbibliotek eller relationsdatabastabeller.
Komponenter kan ha gränssnitt (dvs. abstrakta klasser med operationer) som
tillåter association mellan komponenter.



Utplaceringsdiagram (deployment diagram)
Utplaceringsdiagram visar komponentinstanserna vid körning och deras
associationer. De omfattar noder, som är fysiska resurser, typiskt en enskild dator.
De visar också gränssnitt och objekt (klassinstanser).
•63