Unified Modeling Language UML
Vad händer idag? Föreläsning Introduktion till UML Objekt-orientering Klasser Objekt Use cases UML-diagram Specifikationer Praktisk övning Skapa enkla UML-diagram 2
Vad är UML? Ett generellt objekt-orienterat modelleringsspråk UML 2.0 2002 OMT (Rumbaugh et al.) 1996 UML 1.4 Booch UML 0.9 UML 1.1 1999 1997 OOSE (Jacobson et al.) Catalysis ROOM etc. 3
UML Diagram Collaboration diagram Sequence diagram 4
En UML-modell av ett system Krav Specifikation av beteende och egenskaper (Requirement diagram, Use case diagram) Beteende Omvandla indata till utdata (activity based, Activity diagram) Utför operationer eller ändrar (state based, State chart diagram) Tillhandahåller tjänster (message based, Collaboration diagram, Sequence diagram) Struktur System / komponent hierarki, klassificering och sammankoppling (Class diagram, Component diagram, Deployment diagram) Egenskaper Prestanda och fysiska egenskaper och deras inbördes relationer 5
Varför behövs en modell? För att förstå problemet Grund för diskussioner med beställare/kund/användare Hitta fel, brister, och Find errors and inkonsekvenser För att enkelt skapa kod Begränsningar av modellering? 6
Grundläggande OO koncept Classes / class hierarchy Instances - instans Inheritance - arv Abstraction - abstraktion Object Attributes - egenskaper Methods - metoder Messages 7
Objekt i mjukvarutveckling Enheter som modellerar någon fysisk eller konceptuell enhet En unik identitet ( dedikerat minne ) Ett offentligt gränssnitt Attribut Operationer / metoder Gömd ( inkapslad ) implementation 8
Hierkarkiska beskrivningar av det här och det där Unified Language Modeling det där det där Specialisering av Exempel på det där Helhet för det här Del av det där T yp för det där Gener alisering av 9 det där
OO utveckling Krav Kravspecifikation Use case Analys -> OO modell Class diagram, Collaboration diagram, Sequence diagram, Statechart diagram Designmodell Mjukvara/Hårdvara Class diagram, Collaboration diagram, Statechart diagram Implementation Deployment diagram, Component diagram 10
En klass: Circle Vad kan du göra med en cirkel? Vad kännetecknar en cirkel? Vilka andra liknande objekt finns? 11
En klass: Circle Vad kan du göra med en cirkel? Rita den Fylla den med en färg Vad kännetecknar en cirkel? Radie Färg Vilka andra liknande objekt finns? Rektangel Ellips 12
En klass i UML Attribut Operationer/ Metoder Circle Colour : integer Radius : integer Draw (x,y,r:integer) Move (x,y:integer) Typ 13
Klassbenämning Analys Design 14
Viktiga metoder i alla klasser Constructor skapa ett objekt Get hämta ett värde eller ett innehåll Set ändra ett värde eller ett innehåll Finalize städa upp efter att ett objekt tagits bort ToString returnera en sträng som beskriver objektet på något sätt 15
Klass Template, blueprint, generalised description Basklass, superklass, abstraktion, generalisering Graphical object Underklass ärver från basklassen, specialisering Circle Instantiera ett objekt från en klass (realtd) MyCircle:Circle 16
Klass student Övning Definiera en klass student 17
Klassdiagram - Associationer Association Det finns ett samband mellan två klasser om en instans av en klass måste veta om den andra för att fungera korrekt. Aggregation En association där en klass tillhör en samling av klasser. Generalisering (arv) En arvslänk visar att en klass är en superklass till en annan klass. Multiplicities 0..1 Meaning zero or one instance. The notation n.. m indicates n to m instances. 0..* or * no limit on the number of instances (including none). 1 exactly one instance 18 1..* at least one instance
Exempel Fordon Bil Association Väg Är en del av Extraljus 0..2 Multiplicitet och namngivna associationer 4 Hjul 19
är en sorts :Bil en sorts är en en Fordon sorts speciellt Bil har ett är en del av en :Hjul är ett ett del av Hjul har
Klassdiagram Statisk struktur Visar de olika delarna I ett system och deras inbördes relation associationsklass Person ägare 0..* kund 0..* långivare 0..* Finansinstitut generalisering association Lån ränta villkor Bank Fondbolag boende 0..* Hus 1 0..* 21
Modell av en människa Övning Huvud Vänster tumme Höger tumme Skelettdel Hjärna Sinne Hjärta Själ Kroppsdel 22
Konceptuella objekt Alla objekt behöver inte ha en fysisk mening T.ex. Ett telefonsamtals-objekt Telefon 1 Telefon 2 Telefonsamtal Telefonsamtals-objekt AvslutaSamtal () läggtilldeltagare (t:telefon) Samtalstid () 23
Klasser och Instanser Realtidsspecifika objekt som har samma struktur och beteende klass (Design) Telephone busy : boolean offhook() onhook () ring() phone1:telephone busy = true offhook() onhook () ring() phone2:telephone busy = false offhook() onhook () ring() instanse (realtid) 24
Övning Rita ett klassdiagram för en person som använder en enhet för en tjänst Tips: Tänk på vem, när, var, vad 25
Övning Person -Name : string -Address:String -Id:Interger Device -Type : string -Id:Interger Place -Name : string Time -Name : string Service -Type : string Home Office Mobile Pc 26
Objektorienterad meddelandehantering Draw() MyCircle:Circle Pelle:person Call() Mobile1:telephone 27
Varför ska vi använda objekt? Enkelt att beskriva problem Kan användas på alla abstraktionsnivåer Arkitektur, hårdvara, mjukvara... Återanvändbara Kan användas för samverkande system Nackdelar??? 28
Hur hittar man rätt klasser? Objektorienterad analys Samla och dokumentera krav på systemet och formulera dem i ett antal samverkande objekt som grund för det fortsatta arbetet Förstå problemet relativt oberoende av genomförandet Kunna ställa de rätta frågorna, ge svar Ta reda på vad systemet inte ska göra När är vi färdiga? 29
Mål för (OO) analys Förstå problemet (en) som ska lösas Ställ frågor om problemet och systemet Ge tillräckligt med underlag för att besvara frågor Bestäm vad systemet ska / inte ska göra Försäkra dig om att systemet kommer att tillfredsställa användarnas behov Definiera acceptanskriterier Ge underlag för systemutveckling 30
Hitta objekt & klasser Checklista Domänanalys Lingvistisk analys Rollspel Återanvändning av analysmodeller Erfarenhet 31
Checklistor Människor Platser Saker som går att ta på (fysiska saker) Roller Organisationer Abstrakta saker Händelser Interaktioner... 32
Domänanalys Mål Hitta vanliga objekt / klasser i en särskild domän Hitta risker Görs vid behov Metoder Studera liknande system Litteraturstudie på domänen Prata med domänexperter Bygg en generisk modell av systemen i domänen Bygg en prototyp 33
Lingvistisk analys Skapa en lista över kandidater via analys av texten: Substantiv => objekt / klasser Verb => metoder Adjektiv => attribut... Analysera resultat Behåll bara kandidater som är meningsfulla och användbara i problemdomänen Dokumentera resulterat i klassdiagram Den här metoden är ofta kritiserad Fungerar bra för små dokument 34
Lingvistisk analys: granska kandidater Ta bort synonymer Kasta saker som är utanför systemet Kasta saker som beskriver implementationsdetaljer De flesta egennamn är instanser av klasser Komplexa substantivsatser kan beskriva dolda föremål / klasser Kontrollera verb som används som substantiv Leta efter vara(är en) och verb (har en) Leta efter ägandesubstantiv, masssubstantiv och måttenheter 35
Kravspecifikation SMSme is a wireless device where messages can be displayed. The colour of the device could be red or gold. When a message arrives the user is notified either by a sound or by a vibration. The last message sent or received is always displayed. A constraint is that the display is limited to 4 lines, 20 characters per line. A number of ten messages can be stored and if this limit is reached the device will show a warning message on the display. Each device can be given a unique name. This name will be sent back when a message is acknowledged. The user communicates with SMSme using buttons. 36
Kravspecifikation SMSme is a wireless device where messages can be displayed. The colour of the device could be red or gold. When a message arrives the user is notified either by a sound or by a vibration. The last message sent or received is always displayed. A constraint is that the display is limited to 4 lines, 20 characters per line A number of ten messages can be stored and if this limit is reached the device will show a warning message on the display. Each device can be given a unique name. This name will be sent back when a message is acknowledged. The user communicates with SMSme using buttons 37
Vad är en bra klass? En enda, väldefinierad abstraktion Ansvar kan beskrivas kortfattat och tydligt Namnet kommer från ett substantiv eller adjektiv som på ett bra sätt beskriver abstraktionen Abstraktion av data och funktion Sammanhängande gränssnitt Representerar en uppsättning möjliga realtids-objekt Har tillstånd och beteende 38
Klassdiagram 39
Beskrivning av klassdiagram Klass DateMe Knappar Skärm Kamera Mikrofon Högtalare USB-ingång Batteri Slå av/på Starta speeddejt Avbryta Speeddejt Välja fortsatt kontakt Spela in Spela upp ljud Beskrivning Den fysiska prylen som möjliggör kontakt via videochatt Attribut: För att möjliggöra inmatning av information Monitor som visar digitalt skapas bild Spelar in bild i videoformat Spelar in ljud Spelar upp ljud Hopkopplingsenhet för dator Energikälla Utförande: Slår på/av den fysiska DateMe prylen Startar speeddejt med en annan DateMe användare Avbryter speeddejt med en annan DateMe användare Avgör om man vill få den andra användarens kontaktuppgifter på hemsidan. Eller om man inte vill ha fortsatt kontakt och börja nästa speeddejt med ny användare Ta upp ljudkonverstaionen mellan två DateMe användare Spelar upp ljudkonversation mellan två DateMe användare 40
Vad är ett Use Case? Ett use case är en sekvens av händelser som utförs av ett system, som ger ett mätbart resultat av värden för en viss aktör De viktigaste syftena med use case är att definiera vad ett system ska kunna göra, och att tillåta utvecklare och kund att komma överens om detta 41
Modellbeteende -> Use cases Användarnas krav är viktiga, User-oriented Identifiera användare och andra som interagerar med systemet -> Actor (s) Identifiera vad systemen kan göra för / med aktörer -> Use case(s) Information kan användas både i analys, implementering och test av systemet Scenario - exempel på användningsfall 42
Aktörer (actors) An aktör är någon (eller något) som interagerar med systemet Universitet: Professor Student UMU web server Network support Umeå kommun 43
Use case - grunderna Ett use case är ett beteendemönster för systemet, "Vilka behov har en aktör?" Hur interagerar aktörer och systemet? Read info on the web Student Print article Do exercise 44
Hur hittar man use case och aktörer? Vilka funktioner vill en aktör använda? Behöver aktören läsa, skapa, skriva, ändra? Måste aktörenfå veta något? Vilken I/O finns till/från systemet? Vilka är de primära användarna av ett system? Vem tar hand om tjänster? Vilka andra aktörer berörs av systemet? Vilken maskinvara används/används av systemet? 45
Kursregistrering 46
Register for courses Beskrivning: Detta use case initieras av aktören student. Det ger möjlighet att skapa, granska, ändra och ta bort en kursregistrering för en termin All erforderlig faktureringsinformation sänds till Billing system Aktörer Student, Billing System. Anmärkningar: En student kan registrera sig för högst 4 kurser varje termin. 47
Extends och uses 48
Möjliga problem med use case Risk att man inte bygger ett objektorienterat system Fokus enbart på use case Risk att missta design för krav Ineffektivt system eftersom det endast modellerar hur användaren tror att systemet ska fungera -> behövs designinput Risk för att missa krav Kan missa krav om man enbart designar efter de olika aktörernas use case 49
Beskrivning av Use case Use case Ansvar Data in Data ut Startvillkor Beskrivning Registrera profil (hemsida) Registrera nya användare Personuppgifter + svar på frågor DateMeprofil Att du kan komma åt hemsidan Skapar en profil åt en användare och sparar den I en databas för användare. Undantag Server nere kan inte komma åt hemsidan för att skapa profil 50
Scenario Förädling av use case Många möjliga scenarier för ett use case Kan formuleras som en berättelse Scenario = Use case + startvillkor + slutresultat Exempel: Köpa mjölk Kalle tar två liter mjölk, kassören kontrollerar de två paketen en efter en, priset 20kr visas på en display, Kalle betalar med Visakort och PIN-kod. Pelle tar två liter mjölk, bäst-före-datumet har gått ut för mjölken, kassören matar manuellt in 10 kr, priset visas på skärmen, Pelle betalar 10 kr med en guldtia Observera att interaktioner ovan kan representeras av meddelanden Registrera händelser i use case 51
Sekvensdiagram Fångar dynamiska beteenden (tidsorienterad) Modellerar meddelandeflödet Illustrerar typiska scenarier En typ av interaktionsdiagram 52
Sekvensdiagram grunderna 53
Samarbetsdiagram 54
Samarbetsdiagram - grunderna 55
Tillståndsdiagram Grafisk beskrivning av klassbeteende Beskriver alla möjliga tillstånd och tillståndsändringar som utlöses av yttre stimuli Bra verktyg för att beskriva komplexa objekt livscykler Bra verktyg för att avslöja saknad tillståndsinformation och beteende 56
Tillståndsdiagram Initial pseudostate top top state State Trigger/event Ready Transition go /ctr := 0 Final state Done stop Action 57
Tillståndsdiagram - exempel Hissen börjar på bottenvåningen. Det kan röra sig uppåt eller nedåt. Om hissen är inaktiv på en våning en viss tid rör sig hissen till bottenvåningen. Hissen kan bara stängas av när den är på bottenvåningen. 58
Tillståndsdiagram - exempel Start Bottenvåning Åk upp Åker uppåt Framme Bottenvåning Framme Åk ner Framme Väntande Åk upp Bottenvåning Time out 59
Tillståndsdiagram - användning Fångar dynamiskt beteende (händelseorienterad) Konstrueras under analys och design Syfte Modellera objektets livscykel Modellera reaktiva objekt (användargränssnitt, enheter, etc.) Utvecklat av analytiker, designers och implementerare Tillståndsdiagram Statechart diagram 60
Sammanfattning Objektorientering (OO) Objekt Klasser UML Modellspråk Använder OO 8 olika diagram Ni kommer använda 5 i labben Analys Use case Kravspecification 61