SlideShare ist ein Scribd-Unternehmen logo
1 von 54
Downloaden Sie, um offline zu lesen
Definisanje strukture sistema korišćenjem UML
dijagrama klasa
Analiza i specifikacija informacionih sistema


                  dr Zoran Jeremić
                  zoran.jeremic@gmail.com




                                                1
Sadržaj


 Uvod
 Klase, atributi i operacije
 Relacije
 Generalizacija
 Uputstvo za efikasno modelovanje klasa




                                           2
Proces razvoja sistema

      Faza                     Aktivnost                          Izlaz
                                                             Biznis
Započinjanje     Utvrđivanje poslovnih potreba
                                                             dokumenta
                 Intervjuisanje stejkholdera, istraživanje   Organizovana
Analiza          sistemskog okruženja                        dokumentacija
Dizajn i         Analiza inženjerskih aspekata sistema,      Logički model
specifikacija    definisanje koncepata sistema               sistema
                 Programiranje, testiranje jedinica,         Proverljiv
Implementacija   integrisanje, dokumentovanje                sistem
                                                             Resultati
Testiranje &     Integrisanje svih komponenti, verifikacija, testiranja,
Integracija      validacija, instalacija, obuka              funkcionalan
                                                             sistem
                 Popravljanje bagova, modifikacije,
Održavanje       adaptacija
                                                             Verzije sistema

                                                                             3
Logički model sistema


 Logički model sistema opisuje šta je sistem ili šta sistem
  mora da radi – ne kako će sistem biti implementiran.
 Model može sadržati:
    Modele podataka (npr. dijagram klasa)
    Modele procesa (npr. sekvencijalni dijagram)
    Modele interakcije korisnika (npr. dijagrami slučajeva upotrebe)
 Opisi su realizovani korišćenjem jezika za modelovanje
    Formalnog (ili delimično formalnog)
    Razumljivog (vizuelnog ili tekstualnog)




                                                                        4
Pristupi modelovanju


 Pristupi modelovanju se razlikuju jedan od drugog na
  osnovu viđenja sveta (sistema)
Strukturni modeli            Modeli ponašanja
Fokusirani na opisivanju     Fokusirani na dinamici
strukture sistema – elementi sistema: kako se sistem
koji su fiksni i ostaju      menja tokom vremena
nepromenjeni tokom vremena




                                                         5
Primer iz arhitekture: Model strukturne arhitekture




             Planovi za gradski centar Filadelfije(1953)

                                                           6
Primer iz arhitekture: Modelovanje ponašanja




           Modeli ponašanja Filadelfijskog saobraćaja (1953)
                                                               7
Sadržaj


 Uvod
 Klase, atributi i operacije
 Relacije
 Generalizacija
 Uputstvo za efikasno modelovanje klasa




                                           8
Objektno-orjentisani pristup


 Objekti su abstrakcija entiteta iz realnog sveta ili sistema
          Realni domen                                 Domen modela


                                           autobus

                                modeluje
                                                                      vozilo


                                           automobil

                            modeluje




                                             solja

                         modeluje




                                                                               9
Klase


 Klasa je šablon za stvarne instance u memoriji

                    Produt

               serialNumber
               name
               price
                                       Ime klase
               buy()
               display()
                                       Atributi



                                       Operacije


                                                   10
Atributi - Signatura


 [vidljivost] ime [višestrukost] [: tip] [=početna-vrednost]
  [{osobina-string}]
 vidljivost: prava pristupa atributu        +, -, #

 višestrukost: koliko instanci atributa postoji:
    middleName [0..1] : String, phoneNumber [1..*]
 Tip: tip atributa (integer, String, Person, Course)
 početna vrednost: podrazumevana vrednost atributa
    salary : Real = 10000, position : Point = (0,0)
 svojstvo: predefinisana svojstva atributa
    Changeable, readOnly, addOnly, frozen (C++: const, Java: final)
                                                                   11
Atributi - Primeri


 + isLightOn : boolean = false
 - numOfPeople : int
 mySport
 + passengers : Customer[0..10]
 - id : long {readOnly}




                                   12
Operacije - Signatura


 [vidljivost] ime [(lista-parametara)] [: tip-povratne-
  vrednosti] [{osobina-string}]
 Operacija može imati nula ili više parametara od kojih
  svaka ima sintaksu:
    [direction] name : type [=default-value]
    Direction može biti: in (input paremtar – pozivalac ga ne može
     modifikovati), out (output parametar - nema ulazne vrednosti.
     finalna vrednost je dostupna pozivaocu), inout (ulazni parametar
     koji se može modifikovati)
 Svojstvo:
    {leaf} – konkretna operacija
    {abstract} – ne može se pozivati direktno
    …                                                              13
Operacije - Primeri


 + isLightOn() : boolean
 + addColor(newColor : Color)
 # convertToPoint(x : int, y : int) : Point
 - changeItem([in] key : string, [out] newItem : Item) : int




                                                                14
Vidljivost


 public (+) – spoljašnji objekti mogu pristupiti članu
 private (-) – samo unutrašnje metode mogu pristupiti
  članu
 protected (#) – samo interne metode, ili metode
  specijalizovanih objekata mogu pristupiti članu
             Produt                       Treba težiti da se očuva
                                        najmanja moguća vidljivost
       - serialNumber
       - name
       # price

       + buy()
       + display()
       - swap(x:int,y: int)

                                                                     15
Potpuni prikaz klase


                            <<abstract>>
                               Window
    Stereotip                        {transient        Ograničenja
                                      status=tested}
                +size:Area = (100,100)
                #visibility:Boolean = invisible
                +default-size:Rectangle
                #maximum-size:Rectangle
                 -xptr: XWindow

                +display ()
                +hide ()
                +create ()
                -attachXWindow(xwin:Xwindow*)




                                                                     16
Objektni dijagram


 U dijagramu objekata, modeluju se instance klasa


        Produt                          Apple Ipod : Product
   serialNumber
   name
                                                            Apple IMac : Product
   price
                     In runtime
                                                           name = “IMac 1C”
   buy()                                                   price = 1456 $
   display()                                               serialNumber = 184934
                                    Sony Vaio : Product

                                  name = “Vaio Portable”
                                  price = 2999 $
                                  serialNumber = 113234


    Dijagram klasa                               Objektni dijagram

                                                                                   17
Sadržaj


 Uvod
 Klase, atributi i operacije
 Relacije
 Generalizacija
 Uputstvo za efikasno modelovanje klasa




                                           18
19
Relacije


 Relacija je šablon za konekciju između dve instance.
 Relacije su organizovane u hijerarhiju:
    Zavisnost: ukazuje na relacije između
                                                                Dependency
     klasa u vreme izvršenje
    Asocijacije: postojane relacije
    Kompozicija: celina-deo veze
                                                  Association



                                    Composition                 Aggregation




                                                                          20
Asocijacije


 Objekti na obe strane asocijacije mogu pronaći jedan
  drugog
 Relacija je konzistentna vremenu (osim ako je
  uklonjenja)
            Produt                                       Order

       serialNumber                            orderID
       name            *                   *   date
       price                 includes
                                              checkout()
       buy()                      VišestrukostaddProduct(Product p)
       display()
                                  Ukazuje na kardinalnost
                                              clearAll()

                                  •1:1 – podrazumevano
        Ime + smer čitanja        •3 – tačno 3 objekta
                                  •* (or n) - neograničeno
                                  •1..* - 1 do beskonačno
                                  •3..9 – 3 do 9
                                                                      21
Navigacija


 Ukoliko je asocijacija usmerena, poruke se mogu
  prosleđivati samo u tom smeru.
 Ukoliko asocijacija nema smerove, onda je definisana
  kao dvosmerna asocijacija, a poruke se mogu
  prosleđivati u oba smera.
 Podrazumevano je da su sve relacije usmerene, osim
  ako zahtevi ne diktiraju dvosmerne relacije.
                     Folder                 File


  Zbog čega je usmerena? Na primer, ako
  želimo da znamo fajlove svakog foldera.
  Ipak, nemamo zahtev da znamo folder
  svakog fajla.
                                                         22
Imena uloga


 Imena mogu biti dodata na svaki kraj asocijacije
 Obezbeđuje bolje razumevanje značenja asocijacije
 Posebno je značajna u samo-asociranim klasama.




 Worker   *                  1..*        0..1
               Person                              Company
                             employee   employer

                  0..1
     Manages       Manager

                                                             23
Ograničenja


 Ograničenja su jednostavna svojstva asocijacija, klasa i
  mnogih drugih elemenata u UML-u
 Definiše ograničenja koja implementatori moraju da
  zadovolje

   Window                                 Ograničenja
   length
                                          atributa
   width
            {0.8 ≤length/width≤1.5}




                                                             24
Ograničenja


    Project

                                         Outsource
         *
                                                              *
       Task                      {xor}                             Committee
                                                 memberOf
                                                           {subset}           *
                                                                         chairOf
                                             *
                                                                  boss
Samo jedna od asocijacija može
                                    Employee           0..1
postojati za datu instancu          salary
(značenje “or”)                                        *
                                          {salary < boss.salary}


                                                                                   25
Ograničenja


 Ograničenja se mogu primeniti na skoro svaki element u
  UML dijagramima, korišćenjem:
    Prirodnog jezika
    Matematičke notacije
    OCL (Object Constraint Language)


 Iskazi:
    nepromenljive: interest > 3%
    Preduslovi: pre izršenja pozajmica(), prodaja > 5,000$
    Posledice: nakon izvršenja pozajmica(), periodOtplate= 1 or 10


                                                                      26
Zavisnost


 Obeležena isprekidanom linijom
 Najopštija relacija između klasa
 Ukazuje da objekat utiče na drugi objekat
                              Accounting
                                              SecurityControl
                               System



                                <<creates>>    <<modifies>>
   AccountingSystem kreira
   Receipt objekat
                               Reciept         Order




                                                                27
Zavisnost


 Zavisnost je najapstraktniji tip relacija.
 Svojstva:
    Zavisnost je uvek usmerena (ako određena klasa zavisi od
     druge, to ne znači da važi i obrnuto).
    Zavisnost nema kardinalnost.
 Ako instance dve klase šalju poruke jedna drugoj, ali
  nisu međusobno povezane, onda je zavisnost
  odgovarajuća relacija.
 Tipovi:
    «call»
    «create»
                                                                28
Agregacija


 “Celina-deo” relacija između klasa.
 Sastavljanje klase iz drugih klasa.
    Kombinovana sa “many” – spajanje klase od nekoliko instanci te
     klase
                            Word Processing
                              Document

                         Author
                         fileName
                         Permission
                                                  *
                               *
                                              *       Picture




                     Folder

                  name

                                                                  29
Kompozicija


 Kompozicija je jača forma agregacije
 Sadržani objekti žive i umiru unutar kontejnera
 Kontejner kreira i uništava sadržane objekte
                      Window
                                            Operating
                  close()                    System
                  move()



           0..2                 1




      Slider           Header       Panel




                                                        30
Kompozicija vs. Agregacija

Agregacija                         Kompozicija

Objekat-deo može biti deljen       Objekat-deo je uvek deo
između više objekata-celina        jednog objekta-celine
             0..4   *                                 *
  category              document     Window                 Frame

Objekti-delovi mogu postojati      Objekti-delovi postoje samo
nezavisno (i.e., kardinalnost      kao deo objekta-celine. Kada je
može biti 0..*)                    objekat-celina uništen, i objekti-
                                   delovi su uništeni.
Objekat-celina nije potpuno        Objekat-celina je odgovoran i
odgovoran za objekat-deo           kreira ili uništava objekte-
                                   delove
Sadržaj


 Uvod
 Klase, atributi i operacije
 Relacije
 Generalizacija
 Uputstvo za efikasno modelovanje klasa




                                           32
Generalizacija – definicije

                                                           Super Class
 Super klasa (Osnovna klasa)
       Obezbeđuje zajedničke funkcionalnosti i članove


 Podklasa (Izvedena klasa)                                    …
       Nasleđuje sve atribute i operacije super klase
       Može dodati nove operacije i atribute.
                                                            Subclass
       Može proširiti ili promeniti ponašanje super klase navođenjem
        svoje definicije iste metode (polimorfizam).



                                                                         33
Uvod | Klase | Relacije | Generalizacija | Uputstva
Generalizacija – prednosti
                                                      GraphicComponent


 Modularnost:                                      x : int
                                                    y : int


    Eliminiše detalje
                                                    paint()
                                           repaint()

    Nalazi zajedničke karakteristike između klasa
    Definiše hijerarhije
 Višestruka upotreba:
                                             Button                        Image

                                      caption : String             picture : File

    Omogućava specijalizovanje stanja i ponašanja
                                  press()        paint()




                                                          ImageButton

                                                                                    Polimorfizam
                                                    clickImage()
                       Višestruko
                       nasleđivanje


                                                                                           34
Uputstva za generalizaciju


 Pažljivo posmatrajte slična svojstva između objekata, jer
  ponekad ona nisu tako očigledna
                                                                User Interface

                                                               updateName(...)
 Šta je                                                        updateDesc(...)

 problem
 ovde?

              Document                          Product                             Order                    Worker

           id long
             :                              id long
                                             :                             *     id long
                                                                                  :                      id long
                                                                                                          :
                                                                   *|includes
           name String
                 :                          name String
                                                 :                               name String
                                                                                       :                 name String
                                                                                                               :
           desc String
               :                            desc : String                        desc String
                                                                                     :                   desc String
                                                                                                             :
           subject Subject
                   :                        availability int
                                                       :                         date Date
                                                                                    :                    Salary Float
                                                                                                                 :
                                                                                                         workYears int
                                                                                                                   :
           getCategory() :                  getCategory() :
                                                                                                *
           Category                         Category
                                                                                               Done by } *
                             *
                                                     *
                                 *
                                                 *

                                 Category

                             name String
                                 :
                             importance int
                                      :
                                                                                                                         35
Uputstva za generalizaciju
                                            Resource
      ID i name su                                                           User Interface

      zajednički za                      id long
                                          :
                                         name String
                                               :                           updateName(...)
                                                                           updateDesc(...)
      sve klase                          desc String
                                             :




                                                                                                         Asocijacija je
   Order                        Worker                     Product                   Document            isto kao i
                            Salary Float
                                 :                     availability int
                                                                  :                subject String
                                                                                         :
                                                                                                         svaki drugi
date Date
    :          Done by }
               *        *   workYears int
                                     :                                             date Date
                                                                                      :                  atribut
                            includes }
           *                                           *



                                                                 CategorizedResource                      Category
                                                                                              *     *
                                                                 getCategory() :                        name String
                                                                                                            :
                                                                 Category                               importance int
                                                                                                                  :




                                                                                                                         36
Abstraktne klase


 Klasa koja nema direktne instance
   Obeležava se                    Content
   italic imenima



Ili stereotipom             <<abstract>>
“abstract”                   Article       Picture
                                             1*..
                                                     has picture
                  News           Magazine
                  Article         Article 1*..
                                                                   37
Interfejsi


 Interfejs sakriva unutrašnje ponašanje klase i njena
  obeležja.
 To je zapravo skup pravila koja svaka klasa koja ga
  implementira, mora poštovati.

Implementation             Interface           External Object
 Operation 1 Impl’
   Operation 1       Operation 1 Declaration
                                                Operation 1
                                                 Operation 1
 Operation 2 impl’
   Operation 2       Operation 2 Declaration




       Data
                                                                 38
Terminologija


 Relacija “realizuje”:


              Class1         «interface»
                            ISomething

                          method1()
                          method2()


              Class2




                                           39
Notacija interfejsa



                            «interface»
                         ICommonObject                         Client
                                                             Application
                   uniqueID : ID
                   width : int
                   height : int
                   create()
Realizacija:       move()
                   delete()
Objekat            display()
garantuje da će
izvršiti pravila
definisana u
interfejsu

                                          PowerPoint
                       Equation                        Excel Document
                                          Document



                                                                           40
Sadržaj


 Uvod
 Klase, atributi i operacije
 Relacije
 Generalizacija
 Uputstvo za efikasno modelovanje klasa




                                           41
Kako modelovati?

   Odozdo-gore proces                        Odozgo-dole proces
Započinje stavljanjem svih klasa na       Započinje od sistema kao celine,
papir, a zatim se vrši njihovo            a zatim se vrši njegovo deljenje na
kombinovanje                              klase

                 Product
               Configuration
   Purchase                               Catalogue           Customer
                        Shipping
   Process
                         details

                Category
    Charging                                          Order
    process                Product spec
       Search engine
          results
                           Credit data


                                                                          42
Odozgo-dole metodologija
                                                               Credit card
     Analiza opsega              Catalogue
                                                                validator

 Identifikovanje glavnih
          klasa             Catalogue               Order            Customer

     Identifikovanje
        svojstava                                 Order
                                              id, state...
                                              changeState()
 Identifikovanje metoda                       ship()


 Prerada i normalizacija        Order                               State
          klasa            id                                 started, ended

                                      Order                    Business
  Generalizovanje klasa          id                             Order

        Analiza                    : Order                     : Customer
                                id = 18734                   name = “cohen”

                                                                               43
CRC kartice


 CRC kartice:
    Class, Responsibility, Collaboration




                                            44
Normalizacija




                45
Normalne forme u UML klasama


 Ne-normalizovan model može imati sledeće probleme:
    Podaci su međusobno povezani
    Teško je pojedinačno upravljati elementima podataka
 Normalizacija:
    Skup dizajnerskih strategija
    Obezbeđuje slabo povezan dizajn
 Poreklo: relacione baze podataka
    Ali u dijagramu klase nemamo primarne ključeve




                                                  Ne-normalizovan
                                                       model 46
Prva normalna forma


 Klasa je u 1NF kada je određeno ponašanje (kolekcija
  sličnih atributa) zahtevano od određenog atributa,
  smešteno u sopstvenu klasu




                                                         47
Druga normalna forma


 Klasa je u 2NF kada je u 1NF i kada je zajedničko
  ponašanje koje koristi više od jedne instance klase
  predstavljeno u sopstvenoj klasi




                                                        48
Treća normalna forma


 Sva svojstva moraju zavisiti samo od srži klase




                                                    49
Uputstvo za kreiranje klasa


 Identifikovanje klasa
    Vrlo slično identifikovanju repozitorijuma u dijagramima toka
     podataka. Identifikujte elemente podataka i modelujte ih.
    Razmišljajte o klasama koje upravljaju procesima. Ako su
     operacije previše komplikovane, možemo ih modelovati
     odvojeno.
    Razmišljajte o učesnicima. Da li su sve njihove potrebe
     pokrivene postojećim operacijama.




                                                                     50
Osnovne pretpostavke


 Pristup klasama
    Korisnici mogu izvršiti bilo koju javnu (public) operaciju klase.
    Public metode treba koristiti samo kada je to potrebno.




                                                                         51
Pronalaženje objekata


 Objekti se mogu naći, pretraživati ili locirati bez ikakve
  agregatne klase.




                         Ovo je dovoljno da bi
                         Loan Service
                         pristupio svim
                         instancama klase
                         Book
                                                               52
Uputstva – Modelovanje učesnika


 Najčešća greška je modelovanje učesnika kao klasa
 Treba zapamtiti -
    Učesnici interaguju sa sistemom direktno i nije ih potrebno
     apriori predstavljati.
    Ponekad, sistem čuva podatke o korisnicima, ali to ne znači da
     izvršavaju sve svoje akcije kroz ovu klasu.




                                                                      53
Zadatak: Napraviti dijagram klasa za dati Use case
dijagram




                                                     54

Weitere ähnliche Inhalte

Ähnlich wie T 3.2 definisanje strukture sistema koriscenjem uml dijagrama klasa

T 3.7 modelovanje ponasanja koriscenjem dijagrama aktivnosti
 T 3.7 modelovanje ponasanja koriscenjem dijagrama aktivnosti T 3.7 modelovanje ponasanja koriscenjem dijagrama aktivnosti
T 3.7 modelovanje ponasanja koriscenjem dijagrama aktivnostiZoran Jeremic
 
VET4SBO Level 3 module 3 - unit 2 - v09 srb
VET4SBO Level 3   module 3 - unit 2 - v09 srbVET4SBO Level 3   module 3 - unit 2 - v09 srb
VET4SBO Level 3 module 3 - unit 2 - v09 srbKarel Van Isacker
 
Model podataka.pdf
Model podataka.pdfModel podataka.pdf
Model podataka.pdfVlada Nedic
 
Napredne tehnike razvoja web aplikacija - Zend Framework
Napredne tehnike razvoja web aplikacija - Zend FrameworkNapredne tehnike razvoja web aplikacija - Zend Framework
Napredne tehnike razvoja web aplikacija - Zend FrameworkSaša Stamenković
 
BusinesProcess.pdf
BusinesProcess.pdfBusinesProcess.pdf
BusinesProcess.pdfVlada Nedic
 
Дефинисање-типског-захвата-обраде-грубог-и-завршног-стругања-у-модулу-CManufa...
Дефинисање-типског-захвата-обраде-грубог-и-завршног-стругања-у-модулу-CManufa...Дефинисање-типског-захвата-обраде-грубог-и-завршног-стругања-у-модулу-CManufa...
Дефинисање-типског-захвата-обраде-грубог-и-завршног-стругања-у-модулу-CManufa...DuanTijani
 

Ähnlich wie T 3.2 definisanje strukture sistema koriscenjem uml dijagrama klasa (7)

T 3.7 modelovanje ponasanja koriscenjem dijagrama aktivnosti
 T 3.7 modelovanje ponasanja koriscenjem dijagrama aktivnosti T 3.7 modelovanje ponasanja koriscenjem dijagrama aktivnosti
T 3.7 modelovanje ponasanja koriscenjem dijagrama aktivnosti
 
VET4SBO Level 3 module 3 - unit 2 - v09 srb
VET4SBO Level 3   module 3 - unit 2 - v09 srbVET4SBO Level 3   module 3 - unit 2 - v09 srb
VET4SBO Level 3 module 3 - unit 2 - v09 srb
 
Model podataka.pdf
Model podataka.pdfModel podataka.pdf
Model podataka.pdf
 
Napredne tehnike razvoja web aplikacija - Zend Framework
Napredne tehnike razvoja web aplikacija - Zend FrameworkNapredne tehnike razvoja web aplikacija - Zend Framework
Napredne tehnike razvoja web aplikacija - Zend Framework
 
BusinesProcess.pdf
BusinesProcess.pdfBusinesProcess.pdf
BusinesProcess.pdf
 
Дефинисање-типског-захвата-обраде-грубог-и-завршног-стругања-у-модулу-CManufa...
Дефинисање-типског-захвата-обраде-грубог-и-завршног-стругања-у-модулу-CManufa...Дефинисање-типског-захвата-обраде-грубог-и-завршног-стругања-у-модулу-CManufa...
Дефинисање-типског-захвата-обраде-грубог-и-завршног-стругања-у-модулу-CManufa...
 
Modeli2
Modeli2Modeli2
Modeli2
 

Mehr von Zoran Jeremic

Consuming RESTful Web services in PHP
Consuming RESTful Web services in PHPConsuming RESTful Web services in PHP
Consuming RESTful Web services in PHPZoran Jeremic
 
Consuming RESTful services in PHP
Consuming RESTful services in PHPConsuming RESTful services in PHP
Consuming RESTful services in PHPZoran Jeremic
 
T 4 testiranje softvera i upravljanje kvalitetom
 T 4 testiranje softvera i upravljanje kvalitetom T 4 testiranje softvera i upravljanje kvalitetom
T 4 testiranje softvera i upravljanje kvalitetomZoran Jeremic
 
T 3.1 definisanje zahteva koriscenjem use case dijagrama
 T 3.1 definisanje zahteva koriscenjem use case dijagrama T 3.1 definisanje zahteva koriscenjem use case dijagrama
T 3.1 definisanje zahteva koriscenjem use case dijagramaZoran Jeremic
 
T 2 zivotni ciklus i metodologije razvoja softvera
 T 2 zivotni ciklus i metodologije razvoja softvera T 2 zivotni ciklus i metodologije razvoja softvera
T 2 zivotni ciklus i metodologije razvoja softveraZoran Jeremic
 
T 1 uvod u softversko inzenjerstvo
 T 1 uvod u softversko inzenjerstvo T 1 uvod u softversko inzenjerstvo
T 1 uvod u softversko inzenjerstvoZoran Jeremic
 
Synergy of Performance-Based Model and Cognitive Trait Model in DP-ITS
Synergy of Performance-Based Model and Cognitive Trait Model in DP-ITSSynergy of Performance-Based Model and Cognitive Trait Model in DP-ITS
Synergy of Performance-Based Model and Cognitive Trait Model in DP-ITSZoran Jeremic
 
A Semantic-rich Framework for Learning Software Patterns
A Semantic-rich Framework for Learning Software PatternsA Semantic-rich Framework for Learning Software Patterns
A Semantic-rich Framework for Learning Software PatternsZoran Jeremic
 
Project-based Collaborative Learning Environment with Context-aware Education...
Project-based Collaborative Learning Environment with Context-aware Education...Project-based Collaborative Learning Environment with Context-aware Education...
Project-based Collaborative Learning Environment with Context-aware Education...Zoran Jeremic
 
Semantically-enabled Project-based Collaborative Learning of Software Patterns
Semantically-enabled Project-based Collaborative Learning of Software PatternsSemantically-enabled Project-based Collaborative Learning of Software Patterns
Semantically-enabled Project-based Collaborative Learning of Software PatternsZoran Jeremic
 
A Semantic-rich Framework for Learning Software Patterns
A Semantic-rich Framework for Learning Software PatternsA Semantic-rich Framework for Learning Software Patterns
A Semantic-rich Framework for Learning Software PatternsZoran Jeremic
 
Project-based Collaborative Learning of Software Patterns
Project-based Collaborative Learning of Software PatternsProject-based Collaborative Learning of Software Patterns
Project-based Collaborative Learning of Software PatternsZoran Jeremic
 
A Semantic-rich Framework for Learning Software Patterns
A Semantic-rich Framework for Learning Software PatternsA Semantic-rich Framework for Learning Software Patterns
A Semantic-rich Framework for Learning Software PatternsZoran Jeremic
 

Mehr von Zoran Jeremic (14)

Consuming RESTful Web services in PHP
Consuming RESTful Web services in PHPConsuming RESTful Web services in PHP
Consuming RESTful Web services in PHP
 
Consuming RESTful services in PHP
Consuming RESTful services in PHPConsuming RESTful services in PHP
Consuming RESTful services in PHP
 
T 4 testiranje softvera i upravljanje kvalitetom
 T 4 testiranje softvera i upravljanje kvalitetom T 4 testiranje softvera i upravljanje kvalitetom
T 4 testiranje softvera i upravljanje kvalitetom
 
T 3.1 definisanje zahteva koriscenjem use case dijagrama
 T 3.1 definisanje zahteva koriscenjem use case dijagrama T 3.1 definisanje zahteva koriscenjem use case dijagrama
T 3.1 definisanje zahteva koriscenjem use case dijagrama
 
T 2 zivotni ciklus i metodologije razvoja softvera
 T 2 zivotni ciklus i metodologije razvoja softvera T 2 zivotni ciklus i metodologije razvoja softvera
T 2 zivotni ciklus i metodologije razvoja softvera
 
T 1 uvod u softversko inzenjerstvo
 T 1 uvod u softversko inzenjerstvo T 1 uvod u softversko inzenjerstvo
T 1 uvod u softversko inzenjerstvo
 
PhD Dissertation
PhD DissertationPhD Dissertation
PhD Dissertation
 
Synergy of Performance-Based Model and Cognitive Trait Model in DP-ITS
Synergy of Performance-Based Model and Cognitive Trait Model in DP-ITSSynergy of Performance-Based Model and Cognitive Trait Model in DP-ITS
Synergy of Performance-Based Model and Cognitive Trait Model in DP-ITS
 
A Semantic-rich Framework for Learning Software Patterns
A Semantic-rich Framework for Learning Software PatternsA Semantic-rich Framework for Learning Software Patterns
A Semantic-rich Framework for Learning Software Patterns
 
Project-based Collaborative Learning Environment with Context-aware Education...
Project-based Collaborative Learning Environment with Context-aware Education...Project-based Collaborative Learning Environment with Context-aware Education...
Project-based Collaborative Learning Environment with Context-aware Education...
 
Semantically-enabled Project-based Collaborative Learning of Software Patterns
Semantically-enabled Project-based Collaborative Learning of Software PatternsSemantically-enabled Project-based Collaborative Learning of Software Patterns
Semantically-enabled Project-based Collaborative Learning of Software Patterns
 
A Semantic-rich Framework for Learning Software Patterns
A Semantic-rich Framework for Learning Software PatternsA Semantic-rich Framework for Learning Software Patterns
A Semantic-rich Framework for Learning Software Patterns
 
Project-based Collaborative Learning of Software Patterns
Project-based Collaborative Learning of Software PatternsProject-based Collaborative Learning of Software Patterns
Project-based Collaborative Learning of Software Patterns
 
A Semantic-rich Framework for Learning Software Patterns
A Semantic-rich Framework for Learning Software PatternsA Semantic-rich Framework for Learning Software Patterns
A Semantic-rich Framework for Learning Software Patterns
 

T 3.2 definisanje strukture sistema koriscenjem uml dijagrama klasa

  • 1. Definisanje strukture sistema korišćenjem UML dijagrama klasa Analiza i specifikacija informacionih sistema dr Zoran Jeremić zoran.jeremic@gmail.com 1
  • 2. Sadržaj  Uvod  Klase, atributi i operacije  Relacije  Generalizacija  Uputstvo za efikasno modelovanje klasa 2
  • 3. Proces razvoja sistema Faza Aktivnost Izlaz Biznis Započinjanje Utvrđivanje poslovnih potreba dokumenta Intervjuisanje stejkholdera, istraživanje Organizovana Analiza sistemskog okruženja dokumentacija Dizajn i Analiza inženjerskih aspekata sistema, Logički model specifikacija definisanje koncepata sistema sistema Programiranje, testiranje jedinica, Proverljiv Implementacija integrisanje, dokumentovanje sistem Resultati Testiranje & Integrisanje svih komponenti, verifikacija, testiranja, Integracija validacija, instalacija, obuka funkcionalan sistem Popravljanje bagova, modifikacije, Održavanje adaptacija Verzije sistema 3
  • 4. Logički model sistema  Logički model sistema opisuje šta je sistem ili šta sistem mora da radi – ne kako će sistem biti implementiran.  Model može sadržati:  Modele podataka (npr. dijagram klasa)  Modele procesa (npr. sekvencijalni dijagram)  Modele interakcije korisnika (npr. dijagrami slučajeva upotrebe)  Opisi su realizovani korišćenjem jezika za modelovanje  Formalnog (ili delimično formalnog)  Razumljivog (vizuelnog ili tekstualnog) 4
  • 5. Pristupi modelovanju  Pristupi modelovanju se razlikuju jedan od drugog na osnovu viđenja sveta (sistema) Strukturni modeli Modeli ponašanja Fokusirani na opisivanju Fokusirani na dinamici strukture sistema – elementi sistema: kako se sistem koji su fiksni i ostaju menja tokom vremena nepromenjeni tokom vremena 5
  • 6. Primer iz arhitekture: Model strukturne arhitekture Planovi za gradski centar Filadelfije(1953) 6
  • 7. Primer iz arhitekture: Modelovanje ponašanja Modeli ponašanja Filadelfijskog saobraćaja (1953) 7
  • 8. Sadržaj  Uvod  Klase, atributi i operacije  Relacije  Generalizacija  Uputstvo za efikasno modelovanje klasa 8
  • 9. Objektno-orjentisani pristup  Objekti su abstrakcija entiteta iz realnog sveta ili sistema Realni domen Domen modela autobus modeluje vozilo automobil modeluje solja modeluje 9
  • 10. Klase  Klasa je šablon za stvarne instance u memoriji Produt serialNumber name price Ime klase buy() display() Atributi Operacije 10
  • 11. Atributi - Signatura  [vidljivost] ime [višestrukost] [: tip] [=početna-vrednost] [{osobina-string}]  vidljivost: prava pristupa atributu +, -, #  višestrukost: koliko instanci atributa postoji:  middleName [0..1] : String, phoneNumber [1..*]  Tip: tip atributa (integer, String, Person, Course)  početna vrednost: podrazumevana vrednost atributa  salary : Real = 10000, position : Point = (0,0)  svojstvo: predefinisana svojstva atributa  Changeable, readOnly, addOnly, frozen (C++: const, Java: final) 11
  • 12. Atributi - Primeri  + isLightOn : boolean = false  - numOfPeople : int  mySport  + passengers : Customer[0..10]  - id : long {readOnly} 12
  • 13. Operacije - Signatura  [vidljivost] ime [(lista-parametara)] [: tip-povratne- vrednosti] [{osobina-string}]  Operacija može imati nula ili više parametara od kojih svaka ima sintaksu:  [direction] name : type [=default-value]  Direction može biti: in (input paremtar – pozivalac ga ne može modifikovati), out (output parametar - nema ulazne vrednosti. finalna vrednost je dostupna pozivaocu), inout (ulazni parametar koji se može modifikovati)  Svojstvo:  {leaf} – konkretna operacija  {abstract} – ne može se pozivati direktno  … 13
  • 14. Operacije - Primeri  + isLightOn() : boolean  + addColor(newColor : Color)  # convertToPoint(x : int, y : int) : Point  - changeItem([in] key : string, [out] newItem : Item) : int 14
  • 15. Vidljivost  public (+) – spoljašnji objekti mogu pristupiti članu  private (-) – samo unutrašnje metode mogu pristupiti članu  protected (#) – samo interne metode, ili metode specijalizovanih objekata mogu pristupiti članu Produt Treba težiti da se očuva najmanja moguća vidljivost - serialNumber - name # price + buy() + display() - swap(x:int,y: int) 15
  • 16. Potpuni prikaz klase <<abstract>> Window Stereotip {transient Ograničenja status=tested} +size:Area = (100,100) #visibility:Boolean = invisible +default-size:Rectangle #maximum-size:Rectangle -xptr: XWindow +display () +hide () +create () -attachXWindow(xwin:Xwindow*) 16
  • 17. Objektni dijagram  U dijagramu objekata, modeluju se instance klasa Produt Apple Ipod : Product serialNumber name Apple IMac : Product price In runtime name = “IMac 1C” buy() price = 1456 $ display() serialNumber = 184934 Sony Vaio : Product name = “Vaio Portable” price = 2999 $ serialNumber = 113234 Dijagram klasa Objektni dijagram 17
  • 18. Sadržaj  Uvod  Klase, atributi i operacije  Relacije  Generalizacija  Uputstvo za efikasno modelovanje klasa 18
  • 19. 19
  • 20. Relacije  Relacija je šablon za konekciju između dve instance.  Relacije su organizovane u hijerarhiju:  Zavisnost: ukazuje na relacije između Dependency klasa u vreme izvršenje  Asocijacije: postojane relacije  Kompozicija: celina-deo veze Association Composition Aggregation 20
  • 21. Asocijacije  Objekti na obe strane asocijacije mogu pronaći jedan drugog  Relacija je konzistentna vremenu (osim ako je uklonjenja) Produt Order serialNumber orderID name * * date price includes checkout() buy() VišestrukostaddProduct(Product p) display() Ukazuje na kardinalnost clearAll() •1:1 – podrazumevano Ime + smer čitanja •3 – tačno 3 objekta •* (or n) - neograničeno •1..* - 1 do beskonačno •3..9 – 3 do 9 21
  • 22. Navigacija  Ukoliko je asocijacija usmerena, poruke se mogu prosleđivati samo u tom smeru.  Ukoliko asocijacija nema smerove, onda je definisana kao dvosmerna asocijacija, a poruke se mogu prosleđivati u oba smera.  Podrazumevano je da su sve relacije usmerene, osim ako zahtevi ne diktiraju dvosmerne relacije. Folder File Zbog čega je usmerena? Na primer, ako želimo da znamo fajlove svakog foldera. Ipak, nemamo zahtev da znamo folder svakog fajla. 22
  • 23. Imena uloga  Imena mogu biti dodata na svaki kraj asocijacije  Obezbeđuje bolje razumevanje značenja asocijacije  Posebno je značajna u samo-asociranim klasama. Worker * 1..* 0..1 Person Company employee employer 0..1 Manages Manager 23
  • 24. Ograničenja  Ograničenja su jednostavna svojstva asocijacija, klasa i mnogih drugih elemenata u UML-u  Definiše ograničenja koja implementatori moraju da zadovolje Window Ograničenja length atributa width {0.8 ≤length/width≤1.5} 24
  • 25. Ograničenja Project Outsource * * Task {xor} Committee memberOf {subset} * chairOf * boss Samo jedna od asocijacija može Employee 0..1 postojati za datu instancu salary (značenje “or”) * {salary < boss.salary} 25
  • 26. Ograničenja  Ograničenja se mogu primeniti na skoro svaki element u UML dijagramima, korišćenjem:  Prirodnog jezika  Matematičke notacije  OCL (Object Constraint Language)  Iskazi:  nepromenljive: interest > 3%  Preduslovi: pre izršenja pozajmica(), prodaja > 5,000$  Posledice: nakon izvršenja pozajmica(), periodOtplate= 1 or 10 26
  • 27. Zavisnost  Obeležena isprekidanom linijom  Najopštija relacija između klasa  Ukazuje da objekat utiče na drugi objekat Accounting SecurityControl System <<creates>> <<modifies>> AccountingSystem kreira Receipt objekat Reciept Order 27
  • 28. Zavisnost  Zavisnost je najapstraktniji tip relacija.  Svojstva:  Zavisnost je uvek usmerena (ako određena klasa zavisi od druge, to ne znači da važi i obrnuto).  Zavisnost nema kardinalnost.  Ako instance dve klase šalju poruke jedna drugoj, ali nisu međusobno povezane, onda je zavisnost odgovarajuća relacija.  Tipovi:  «call»  «create» 28
  • 29. Agregacija  “Celina-deo” relacija između klasa.  Sastavljanje klase iz drugih klasa.  Kombinovana sa “many” – spajanje klase od nekoliko instanci te klase Word Processing Document Author fileName Permission * * * Picture Folder name 29
  • 30. Kompozicija  Kompozicija je jača forma agregacije  Sadržani objekti žive i umiru unutar kontejnera  Kontejner kreira i uništava sadržane objekte Window Operating close() System move() 0..2 1 Slider Header Panel 30
  • 31. Kompozicija vs. Agregacija Agregacija Kompozicija Objekat-deo može biti deljen Objekat-deo je uvek deo između više objekata-celina jednog objekta-celine 0..4 * * category document Window Frame Objekti-delovi mogu postojati Objekti-delovi postoje samo nezavisno (i.e., kardinalnost kao deo objekta-celine. Kada je može biti 0..*) objekat-celina uništen, i objekti- delovi su uništeni. Objekat-celina nije potpuno Objekat-celina je odgovoran i odgovoran za objekat-deo kreira ili uništava objekte- delove
  • 32. Sadržaj  Uvod  Klase, atributi i operacije  Relacije  Generalizacija  Uputstvo za efikasno modelovanje klasa 32
  • 33. Generalizacija – definicije Super Class  Super klasa (Osnovna klasa)  Obezbeđuje zajedničke funkcionalnosti i članove  Podklasa (Izvedena klasa) …  Nasleđuje sve atribute i operacije super klase  Može dodati nove operacije i atribute. Subclass  Može proširiti ili promeniti ponašanje super klase navođenjem svoje definicije iste metode (polimorfizam). 33 Uvod | Klase | Relacije | Generalizacija | Uputstva
  • 34. Generalizacija – prednosti GraphicComponent  Modularnost: x : int y : int  Eliminiše detalje paint() repaint()  Nalazi zajedničke karakteristike između klasa  Definiše hijerarhije  Višestruka upotreba: Button Image caption : String picture : File  Omogućava specijalizovanje stanja i ponašanja press() paint() ImageButton Polimorfizam clickImage() Višestruko nasleđivanje 34
  • 35. Uputstva za generalizaciju  Pažljivo posmatrajte slična svojstva između objekata, jer ponekad ona nisu tako očigledna User Interface updateName(...) Šta je updateDesc(...) problem ovde? Document Product Order Worker id long : id long : * id long : id long : *|includes name String : name String : name String : name String : desc String : desc : String desc String : desc String : subject Subject : availability int : date Date : Salary Float : workYears int : getCategory() : getCategory() : * Category Category Done by } * * * * * Category name String : importance int : 35
  • 36. Uputstva za generalizaciju Resource ID i name su User Interface zajednički za id long : name String : updateName(...) updateDesc(...) sve klase desc String : Asocijacija je Order Worker Product Document isto kao i Salary Float : availability int : subject String : svaki drugi date Date : Done by } * * workYears int : date Date : atribut includes } * * CategorizedResource Category * * getCategory() : name String : Category importance int : 36
  • 37. Abstraktne klase  Klasa koja nema direktne instance Obeležava se Content italic imenima Ili stereotipom <<abstract>> “abstract” Article Picture 1*.. has picture News Magazine Article Article 1*.. 37
  • 38. Interfejsi  Interfejs sakriva unutrašnje ponašanje klase i njena obeležja.  To je zapravo skup pravila koja svaka klasa koja ga implementira, mora poštovati. Implementation Interface External Object Operation 1 Impl’ Operation 1 Operation 1 Declaration Operation 1 Operation 1 Operation 2 impl’ Operation 2 Operation 2 Declaration Data 38
  • 39. Terminologija  Relacija “realizuje”: Class1 «interface» ISomething method1() method2() Class2 39
  • 40. Notacija interfejsa «interface» ICommonObject Client Application uniqueID : ID width : int height : int create() Realizacija: move() delete() Objekat display() garantuje da će izvršiti pravila definisana u interfejsu PowerPoint Equation Excel Document Document 40
  • 41. Sadržaj  Uvod  Klase, atributi i operacije  Relacije  Generalizacija  Uputstvo za efikasno modelovanje klasa 41
  • 42. Kako modelovati? Odozdo-gore proces Odozgo-dole proces Započinje stavljanjem svih klasa na Započinje od sistema kao celine, papir, a zatim se vrši njihovo a zatim se vrši njegovo deljenje na kombinovanje klase Product Configuration Purchase Catalogue Customer Shipping Process details Category Charging Order process Product spec Search engine results Credit data 42
  • 43. Odozgo-dole metodologija Credit card Analiza opsega Catalogue validator Identifikovanje glavnih klasa Catalogue Order Customer Identifikovanje svojstava Order id, state... changeState() Identifikovanje metoda ship() Prerada i normalizacija Order State klasa id started, ended Order Business Generalizovanje klasa id Order Analiza : Order : Customer id = 18734 name = “cohen” 43
  • 44. CRC kartice  CRC kartice:  Class, Responsibility, Collaboration 44
  • 46. Normalne forme u UML klasama  Ne-normalizovan model može imati sledeće probleme:  Podaci su međusobno povezani  Teško je pojedinačno upravljati elementima podataka  Normalizacija:  Skup dizajnerskih strategija  Obezbeđuje slabo povezan dizajn  Poreklo: relacione baze podataka  Ali u dijagramu klase nemamo primarne ključeve Ne-normalizovan model 46
  • 47. Prva normalna forma  Klasa je u 1NF kada je određeno ponašanje (kolekcija sličnih atributa) zahtevano od određenog atributa, smešteno u sopstvenu klasu 47
  • 48. Druga normalna forma  Klasa je u 2NF kada je u 1NF i kada je zajedničko ponašanje koje koristi više od jedne instance klase predstavljeno u sopstvenoj klasi 48
  • 49. Treća normalna forma  Sva svojstva moraju zavisiti samo od srži klase 49
  • 50. Uputstvo za kreiranje klasa  Identifikovanje klasa  Vrlo slično identifikovanju repozitorijuma u dijagramima toka podataka. Identifikujte elemente podataka i modelujte ih.  Razmišljajte o klasama koje upravljaju procesima. Ako su operacije previše komplikovane, možemo ih modelovati odvojeno.  Razmišljajte o učesnicima. Da li su sve njihove potrebe pokrivene postojećim operacijama. 50
  • 51. Osnovne pretpostavke  Pristup klasama  Korisnici mogu izvršiti bilo koju javnu (public) operaciju klase.  Public metode treba koristiti samo kada je to potrebno. 51
  • 52. Pronalaženje objekata  Objekti se mogu naći, pretraživati ili locirati bez ikakve agregatne klase. Ovo je dovoljno da bi Loan Service pristupio svim instancama klase Book 52
  • 53. Uputstva – Modelovanje učesnika  Najčešća greška je modelovanje učesnika kao klasa  Treba zapamtiti -  Učesnici interaguju sa sistemom direktno i nije ih potrebno apriori predstavljati.  Ponekad, sistem čuva podatke o korisnicima, ali to ne znači da izvršavaju sve svoje akcije kroz ovu klasu. 53
  • 54. Zadatak: Napraviti dijagram klasa za dati Use case dijagram 54