SlideShare una empresa de Scribd logo
1 de 42
Descargar para leer sin conexión
Definisanje zahteva korišćenjem Use Case
dijagrama
Analiza i specifikacija informacionih sistema


                  dr Zoran Jeremić
                 zoran.jeremic@gmail.com




                                                1
Sadržaj


 Uvod
 Use Case dijagrami
 Pisanje slučajeva upotrebe
 Povezivanje slučajeva upotrebe
 Uputstvo za definisanje efektivnih slučajeva upotrebe




                                                          2
Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
Proces razvoja sistema

         Faza                                Aktivnost                      Izlaz
                                                                       Biznis
Započinjanje               Utvrđivanje poslovnih potreba
                                                                       dokumenta
                           Intervjuisanje stejkholdera, istraživanje   Organizovana
Analiza                    sistemskog okruženja                        dokumentacija
                           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
Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
Izvori zahteva


 Početni zahtevi dolaze od korisnika, preko:
      Dokumenta, kao što su RFI/RFP
      Sastanci, izveštaji


 Detaljniji zahtevi dolaze od analitičara, nakon studiranja:
      Domena i cene
      Izvodljivosti (tehničke, organizacione itd)
      Prototipovi


 Konačni zahtevi se ustaljuju kroz iterativni proces.


                                                                4
Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
Zahtevi vs. dizajn


 Zahtevi:
      Šta sistem treba da radi
      Abstraktnije


 Dizajn:
      Kako sistem treba da radi nešto
      Više detalja




                                                      5
Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
Tipovi zahteva


 Vidljivi funkcionalni zahtevi
      “Sistem će korisniku dati gotovinu”
      “Gotovina će se dati korisniku nakon što se izvadi kartica”
 Kvalitativni zahtevi
      “Proces autorizacije ne sme da traje duže od 1 sekunde”
      “Korisnički interfejs treba da bude jednostavan”
 Skriveni zahtevi                                                 Vidljivi
      “Proces održavanja baze podataka                         funkcionalni
                                                                   zahtevi
       će se odvijati svake noći”
                                                        Skriveni
                                                      funkcionalni
                                                        zahtevi
                                                                     Kvalitativni
                                                                      zahtevi
                                                                               6
Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
Sadržaj


 Uvod
 Use Case dijagrami
 Pisanje slučajeva upotrebe
 Povezivanje slučajeva upotrebe
 Uputstvo za definisanje efektivnih slučajeva upotrebe




                                                          7
Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
Slučajevi upotrebe



                                       Use Case


        Učesnik               Slučaj upotrebe u dijagramu   Slučaj upotrebe u tekstu

 Slučaj upotrebe je prikaz interakcije između sistema i
  učesnika.
 Puni model slučajeva upotrebe se sastoji iz:
      Dijagrama – opisuje relacije između slučajeva upotrebe i
       učesnika.
      Dokumenta koji detaljno opisuje svaki slučaj upotrebe.

                                                                                 8
Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
Cilj


 Kreiranje polu-formalnog modela funkcionalnih zahteva
 Analiza i definisanje:
      Domena
      Spoljašnjih interfejsa
      Scenarija i reakcija




                                                          9
Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
Šta čini dobru specifikaciju slučajeva upotrebe?


 Nepostojanje dvosmislenosti
      Svaki zahtev mora biti interpretiran na jedinstven način.
 Kompletnost
      Moraju zadovoljiti sve trenutne zahteve sistema.
 Konzistentnost
      Zahtevi ne smeju biti u konfliktu jedan sa drugim. Ukoliko
       konflikti postoje, moraju se pronaći ustupci.
 Izbegavaju dizajn
      Zahtevi treba da iskažu potrebu, a ne da daju odgovor na nju.
       (Zašto?)


                                                                       10
Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
Slučajevi upotrebe kao sredstvo komunikacije




   Kupci                               Dizajneri      Korisnici
 Slučaj upotrebe treba da stimuliše diskusiju o tome šta
  sistem treba da radi, uglavnom sa ljudima koji su van
  razvojnog tima.




                                                                  11
Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
Jednostavan primer: Bolnički informacioni sistem


                                               Granice
                                               sistema




Učesnik




                                     Slučaj
                     Asocijacija    upotrebe

                                                    12
Pronalaženje učesnika


 Spoljašnji objekti koji proizvode/koriste podatke:
      Moraju služiti kao izvor i odredište podataka
      Moraju biti van sistema




        Ljudi              Mašine           Spoljašnji sistemi Senzori




      Organizacione jedinice                          Baze podataka Štampač
                                                                              13
Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
Učesnici mogu biti generalizovani


 Dete učesnik nasleđuje sve asocijacije slučaja upotrebe



Treba koristiti ako (i samo
ako), specifični učesnik ima
više odgovornosti od
generalizovanog (tj.,
povezan je sa više slučajeva
upotrebe)


                                                       Example




                                                            14
Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
Sadržaj


 Uvod
 Use Case dijagrami
 Pisanje slučajeva upotrebe
 Povezivanje slučajeva upotrebe
 Uputstvo za definisanje efektivnih slučajeva upotrebe




                                                          15
Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
Struktura specifikacije slučaja upotrebe
 Ime

 Učesnici
 Okidač

 Preduslovi

 Posledice



 Uspešni scenario




 Alternativni tokovi

                                                      16
Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
Okidači (triggers)


 Šta aktivira slučaj upotrebe?
 Primeri:
      Korisnik podnosi zahtev
      Korisnik ubacuje karticu
      Sistemsko vreme je 10:00




                                                      17
Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
Preduslovi


 Koje uslove je potrebno da sistem ispuni pre
  započinjanja slučaja upotrebe.
 Primeri:
      Korisnikov račun postoji
      Korisnik ima dovoljno novca na svom računu
      Postoji dovoljno prostora na disku




                                                      18
Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
Posledice

 Posledice predstavljaju rezultat realizovanog slučaja upotrebe.
 Primeri:
    Novac je prenet sa korisnikovog računa
    Korisnik je ulogovan
    Fajl je sačuvan na hard disk
 Minimalne garancije
    Minimalna stvar koju sistem može obećati, čak i kada se
     slučaj upotrebe nije uspešno realizovao.
    Primeri: Novac nije prenet dok autorizaciju nije odobrio
     korisnik
 Uspešne garancije
    Šta se dešava nakon uspešnog izvršenja slučaja upotrebe.
    Primeri: Fajl je sačuvan; Novac je prenet
                                                                    19
Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
Uspešni scenario


 Uspešni scenario je glavna nit priče slučaja upotrebe
 Napisan je pod pretpostavkom da je sve u redu, da nije
  došlo do grešaka ili problema, i vodi direktno ka
  željenom ishodu slučaja upotrebe
 Sastavljen je od niza akcionih koraka
 Primeri:
                                                      Korak
                                                      interakcije
 1. Korisnik unosi ime proizvoda, šifru i opis
                                                         Korak
 2. Sistem proverava šifru proizvoda                     validacije
 3. Sistem dodaje proizvod u bazu podataka i šalje poruku potvrde
                           Korak unutrašnje                   (dodatni) korak
                           promene                            interakcije
                                                                                20
Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
Primer uspešnog scenarija


1.    Korisnik unosi ključnu reč
2. Sistem prikazuje skup rezultata pretraživanja i
   sponzorisane proizvode, pri čemu svaki obuhvata ime,
   kratak opis i cenu
3. Korisnik bira proizvod
4. Sistem prikazuje stranu proizvoda koja obuhvata
   informacije o proizvodu, prikaz i slične proizvode
5. Korisnik dodaje proizvod na šoping listu




                                                          21
Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
Uputstvo za efektivno pisanje


 Koristite jednostavnu gramatiku
 Samo jedna strana (sistem ili                       Sistem                    Učesnik
  učesnik) radi nešto u jednom koraku                     Učesnik traži novac

 Pišite sa ciljne tačke gledišta                          Sistem pita za količinu

      Loše: “Uzmi količinu od korisnika i daj
                                                            Učesnik unosi količinu
       mu novac”
 Bilo koji korak mora voditi do nekog                   Sistem daje novac

  progresa
      Loše: “Korisnik potvrdi na enter dugme”



                                                                                     22
Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
Koraci – nastavak


 Grane:
         Ukoliko korisnik ima više od 10 000 $ na svom računu, sistem
          mu prikazuje listu reklama
         U suprotnom…
 Ponavljanja:
     1.   Korisnik unosi ime artikla koji želi da kupi
     2.   Sistem prikazuje stavke
     3.   Korisnik bira stavke koje želi da kupi
     4.   Sistem dodaje stavke na šoping listu
     5.   Korisnik ponavlja korake 1-4 sve dok ne prijavi da je
          završio


                                                                    23
Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
Slučajevi upotrebe – najčešće greške


 Suviše složeni dijagrami
 Nema sistema
 Nema učesnika
 Previše detalja o korisničkom interfejsu
      “Korisnik unosi username i password, klikne OK ili pritisne Enter”
 Vrlo malo bitnih detalja
        Korisnik obezbeđuje ime
        Korisnik obezbeđuje adresu
        Korisnik obezbeđuje broj telefona
        …

                                                                       24
Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
Alternativni tokovi


 Koriste se da opišu vanredne funkcionalnosti
 Primeri:                                            Polazne tačke
        Greške
        Neuobičajeni ili retki slučajevi
        Otkazi                                          Izuzeci
        Polazne tačke                                                Uspešni    Prečice
                                                                      scenario
        Završne tačke
        Prečice
                                                      Završne tačke




                                                                                   25
Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
Alternativni tokovi - Primer


 Greške:
      “Kućište se nije otvorilo propisno”
      “Bilo koja mrežna greška koja se dogodila između koraka 4 i 7”
      “Bilo koja vrsta greške da se dogodila”

 Neuobičajeni ili retki slučajevi
      “Kreditna kartica je definisana kao ukradena”
      “Korisnik je izabrao da doda novu reč u rečnik”

 Završne tačke
      “Sistem je utvrdio da nema više otvorenih stavki”

 Prečice:
      “Korisnik može napustiti slučaj upotrebe pritiskom na dugme “esc”

                                                                           26
Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
Specifikacija slučaja upotrebe: BIS



 Ime: Ažuriranje podataka o pacijentu

 Učesnici: Zdravstveni radnik
 Okidač: Dolazak pacijenta u ordinaciju

                 Da pacijent ima važeću ličnu
 Preduslovi:
                 kartu i zdravstvenu knjižicu
            U pacijentov karton su uneti
 Posledice:
            podaci o pruženoj usluzi




                                                      27
Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
Specifikacija slučaja upotrebe: BIS (2)



                   1.   Provera identiteta pacijenta uz pomoć
                        lič.karte i zdr. knjižice,
                   2.   Pretraga baze pod. I otvaranje e-
Uspešni
                        kartona ako ga pacijent nema,
scenario           3.   Pružanje usluge pacijentu,
                   4.   Unos podataka o usluzi,
                   5.   Štampanje recepta,

                  1.    Pacijent nema važeću lič.kartu ili zdr.
                        knjižicu, pacijent odlazi.
 Alternativni
                  2.    Pacijent želi da mu usluge pruži drugi
 tokovi                 lekar (koji nije njegov, pacijent ga nije
                        izabrao), pacijent mora da čeka, odlazi.




                                                                    28
Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
Sadržaj


 Uvod
 Use Case dijagrami
 Pisanje slučajeva upotrebe
 Povezivanje slučajeva upotrebe
 Uputstvo za definisanje efektivnih slučajeva upotrebe




                                                          29
Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
Povezivanje slučajeva upotrebe


 Povezivanje omogućava fleksibilnost u specifikaciji
  zahteva
      Izolovanje funkcionalnosti
      Omogućavanje deljenja funkcionalnosti
      Deljenje funkcionalnosti u delove koji se lakše obrađuju
 Koriste se tri vrste relacija:
      Uključuje (Include)
      Proširuje (Extend)
      Nasleđuje (Inheritance)




                                                                  30
Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
“Include” konstrukcija


 Include se koristi u sledećim slučajevima:
      Dekomponovanje složenog ponašanja
      Centralizovanje zajedničkog ponašanja
 Osnovni slučaj upotrebe eksplicitno uključuje ponašanje
  drugog slučaja upotrebe lociranog u svojoj bazi.



                                                        Unos podataka o
       Ažuriranje podataka o            <<include>>
             pacijentu                                izvršenom pregledu

                                                                           primer


                                                                             31
Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
Pisanje Include konstrukcija


 Ako bazni slučaj upotrebe uključuje drugi slučaj
  upotrebe, dodaćemo referencu kao sledeći korak:
     1. Sistem prikazuje karton pacijenta
     2. Zdravstveni radnik unosi podatak o izvršenom pregledu
                       ili
     <include: unos podataka o izvršenom pregledu>




                                                                32
Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
Extend – grafičko predstavljanje


 Osnova slučaja upotrebe može uključiti drugi slučaj
  upotrebe u određenim tačkama, zvanim tačke proširenja.
 Obratite pažnju na smer strelice
      Osnovni slučaj upotrebe ne zna koji slučaj upotrebe ga proširuje




                                           <<extend>>
     Ažur. pod. o pacijentu                             Otvaranje e-kartona
           nema e-karton                                     pacijentu

                                                                          Primer



                                                                                   33
Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
Pisanje Extend konstrukcije


 Scenariji ne uključuju reference
 Umesto toga, oni uključuju tačke proširenja, kao što su:
     Zdravstveni radnik pretražuje b.p. korišćenjem jmbg
     Sistem ne pronalazi traženog pacijenta
     Tačka proširenja: otvaranje e-kartona pacijentu
           ili
     <extension point: otvaranje e-kartona pacijentu>


 Proširenje slučaja upotrebe obuhvata uslove u kojima će se
  proširenje primeniti
      Primer: ako je korisnik upućen na specijalistički pregled
                                                               34
Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
Primer: Bolnički IS




                                                       Otvaranje e-kartona




 Ažuriranje podataka o pacijentu
                                                      Upućivanje na
                                                      specijalistički pregled
                                                                          35
Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
36
Generalizacija između slučajeva upotrebe


 Slučaj upotrebe dete nasleđuje ponašanje roditeljskog slučaja
  upotrebe:
      Interakcija (opisana tekstualno)
      Linkovi slučaja upotrebe (associations, include, extend, generalization)
 Slučaj upotrebe dete može zameniti roditeljski slučaj upotrebe




                                                                         Primer
                                                                                  37
Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
Sadržaj


 Uvod
 Use Case dijagrami
 Pisanje slučajeva upotrebe
 Povezivanje slučajeva upotrebe
 Uputstvo za definisanje efektivnih slučajeva upotrebe




                                                          38
Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
Proces kombinovanja


 Brojno ograničenje:
      Dijagram bi trebalo da sadrži između 3 i 10 osnovnih slučajeva
       upotrebe.
      Dijagram ne bi trebalo da sadrži više od 15 slučajeva upotrebe
       (osnovni + uključeni + prošireni).
 Abstrakcija:
      Svi slučajevi upotrebi bi trebalo da budu na sličnom nivou
       abstrakcije.
 Veličina:
      Slučajeve upotrebe bi trebalo opisati na pola strane ili više.



                                                                        39
Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
Proces deljenja


 Veličina:
      Ako slučaj upotrebe zauzima više od jedne strane, potrebno je
       razmotriti mogućnost korišćenja include/extend
 Slaba zavisnost:
      Ako je zavisnost između dva dela slučaja upotrebe slaba,
       potrebno ih je razdvojiti.



                                             UC




                                                                       40
Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
Još detalja


 Faktori van zajedničke upotrebe koji su potrebni od
  strane više slučajeva upotrebe
      Ako je upotreba neophodna koristite <<include>>
      Ako je osnovni slučaj upotrebe kompletan a upotreba je opciona,
       razmotrite upotrebu <<extend>>
 Dijagram slučaja upotrebe treba da:
      Uključi samo učesnike koji su neophodni




                                                                    41
Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
Definisanje zahteva korišćenjem Use Case
dijagrama
Analiza i specifikacija informacionih sistema


                  dr Zoran Jeremić
                 zoran.jeremic@gmail.com




                                                42

Más contenido relacionado

La actualidad más candente

Prirodni oblici kretanja
Prirodni oblici kretanjaPrirodni oblici kretanja
Prirodni oblici kretanja
Maja Poljakovic
 
Fizika
FizikaFizika
Fizika
fizika
 
Posmatranje u funkciji rešavanja problem situacija u vaspitnoj grupi
Posmatranje u funkciji rešavanja problem situacija u vaspitnoj grupiPosmatranje u funkciji rešavanja problem situacija u vaspitnoj grupi
Posmatranje u funkciji rešavanja problem situacija u vaspitnoj grupi
Danijela Krasic
 

La actualidad más candente (20)

Prirodni oblici kretanja
Prirodni oblici kretanjaPrirodni oblici kretanja
Prirodni oblici kretanja
 
Zivotna stanista
Zivotna stanistaZivotna stanista
Zivotna stanista
 
Prirucnik iz akademskog pisanja
Prirucnik iz akademskog pisanjaPrirucnik iz akademskog pisanja
Prirucnik iz akademskog pisanja
 
Рогљаста и обла тела
Рогљаста  и  обла  телаРогљаста  и  обла  тела
Рогљаста и обла тела
 
Vrsta i sluzba reci. recenica
Vrsta i sluzba reci. recenicaVrsta i sluzba reci. recenica
Vrsta i sluzba reci. recenica
 
Немањићи - 4. разред
Немањићи - 4. разредНемањићи - 4. разред
Немањићи - 4. разред
 
Pitagorina teorema primjena na jednakostranicni trougao
Pitagorina teorema  primjena na jednakostranicni trougaoPitagorina teorema  primjena na jednakostranicni trougao
Pitagorina teorema primjena na jednakostranicni trougao
 
Ogledni cas-iz-srpskog-jezika3
Ogledni cas-iz-srpskog-jezika3Ogledni cas-iz-srpskog-jezika3
Ogledni cas-iz-srpskog-jezika3
 
Osnovni geometrijski pojmovi
Osnovni geometrijski pojmoviOsnovni geometrijski pojmovi
Osnovni geometrijski pojmovi
 
Linearna funkcija i_njen_grafik
Linearna funkcija i_njen_grafikLinearna funkcija i_njen_grafik
Linearna funkcija i_njen_grafik
 
Inovativni časovi (1)
Inovativni  časovi (1)Inovativni  časovi (1)
Inovativni časovi (1)
 
Evaluacija časa
Evaluacija časaEvaluacija časa
Evaluacija časa
 
Oblici reljefa
Oblici reljefaOblici reljefa
Oblici reljefa
 
Infrazvuk i-ultrazvuk
Infrazvuk i-ultrazvukInfrazvuk i-ultrazvuk
Infrazvuk i-ultrazvuk
 
Matematika radni-listovi-draganic487
Matematika radni-listovi-draganic487Matematika radni-listovi-draganic487
Matematika radni-listovi-draganic487
 
Магнети
МагнетиМагнети
Магнети
 
Porodica
PorodicaPorodica
Porodica
 
Bojenje i analiza histoloških preparata
Bojenje i analiza histoloških preparataBojenje i analiza histoloških preparata
Bojenje i analiza histoloških preparata
 
Fizika
FizikaFizika
Fizika
 
Posmatranje u funkciji rešavanja problem situacija u vaspitnoj grupi
Posmatranje u funkciji rešavanja problem situacija u vaspitnoj grupiPosmatranje u funkciji rešavanja problem situacija u vaspitnoj grupi
Posmatranje u funkciji rešavanja problem situacija u vaspitnoj grupi
 

Similar a T 3.1 definisanje zahteva koriscenjem use case dijagrama

Similar a T 3.1 definisanje zahteva koriscenjem use case dijagrama (6)

Janko Jovanović - Proizvod je, u stvari, dizajn - UX dizajn za startape
Janko Jovanović - Proizvod je, u stvari, dizajn - UX dizajn za startapeJanko Jovanović - Proizvod je, u stvari, dizajn - UX dizajn za startape
Janko Jovanović - Proizvod je, u stvari, dizajn - UX dizajn za startape
 
Servisno orijentisana arhitektura - Postavite svoj IT sistem na čvrste osnove
Servisno orijentisana arhitektura - Postavite svoj IT sistem na čvrste osnoveServisno orijentisana arhitektura - Postavite svoj IT sistem na čvrste osnove
Servisno orijentisana arhitektura - Postavite svoj IT sistem na čvrste osnove
 
CaseAlati.pdf
CaseAlati.pdfCaseAlati.pdf
CaseAlati.pdf
 
1
11
1
 
Branko Subotić, PwC Srbija: “IT Strategija - metodološki pristup i praksa”
Branko Subotić, PwC Srbija: “IT Strategija - metodološki pristup i praksa”Branko Subotić, PwC Srbija: “IT Strategija - metodološki pristup i praksa”
Branko Subotić, PwC Srbija: “IT Strategija - metodološki pristup i praksa”
 
ICK6-L2.pptx
ICK6-L2.pptxICK6-L2.pptx
ICK6-L2.pptx
 

Más de Zoran Jeremic

Consuming RESTful services in PHP
Consuming RESTful services in PHPConsuming RESTful services in PHP
Consuming RESTful services in PHP
Zoran 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 kvalitetom
Zoran Jeremic
 
T 3.8 design paterni (c)
 T 3.8 design paterni (c) T 3.8 design paterni (c)
T 3.8 design paterni (c)
Zoran Jeremic
 
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
Zoran Jeremic
 
T 3.6 design paterni (b)
 T 3.6 design paterni (b) T 3.6 design paterni (b)
T 3.6 design paterni (b)
Zoran Jeremic
 
T 3.5 modelovanje stanja koriscenjem uml statechart dijagrama
 T 3.5 modelovanje stanja koriscenjem uml statechart dijagrama T 3.5 modelovanje stanja koriscenjem uml statechart dijagrama
T 3.5 modelovanje stanja koriscenjem uml statechart dijagrama
Zoran Jeremic
 
T 3.4 modelovanje ponasanja koriscenjem uml dijagrama interakcija
 T 3.4 modelovanje ponasanja koriscenjem uml dijagrama interakcija T 3.4 modelovanje ponasanja koriscenjem uml dijagrama interakcija
T 3.4 modelovanje ponasanja koriscenjem uml dijagrama interakcija
Zoran Jeremic
 
T 3.3 design paterni (a)
 T 3.3 design paterni (a) T 3.3 design paterni (a)
T 3.3 design paterni (a)
Zoran Jeremic
 
T 3.2 definisanje strukture sistema koriscenjem uml dijagrama klasa
 T 3.2 definisanje strukture sistema koriscenjem uml dijagrama klasa T 3.2 definisanje strukture sistema koriscenjem uml dijagrama klasa
T 3.2 definisanje strukture sistema koriscenjem uml dijagrama klasa
Zoran Jeremic
 
T 3 uvod u modelovanje koriscenjem uml-a
 T 3 uvod u modelovanje koriscenjem uml-a T 3 uvod u modelovanje koriscenjem uml-a
T 3 uvod u modelovanje koriscenjem uml-a
Zoran 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 softvera
Zoran Jeremic
 
T 1 uvod u softversko inzenjerstvo
 T 1 uvod u softversko inzenjerstvo T 1 uvod u softversko inzenjerstvo
T 1 uvod u softversko inzenjerstvo
Zoran 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 Patterns
Zoran Jeremic
 

Más de Zoran Jeremic (20)

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.8 design paterni (c)
 T 3.8 design paterni (c) T 3.8 design paterni (c)
T 3.8 design paterni (c)
 
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
 
T 3.6 design paterni (b)
 T 3.6 design paterni (b) T 3.6 design paterni (b)
T 3.6 design paterni (b)
 
T 3.5 modelovanje stanja koriscenjem uml statechart dijagrama
 T 3.5 modelovanje stanja koriscenjem uml statechart dijagrama T 3.5 modelovanje stanja koriscenjem uml statechart dijagrama
T 3.5 modelovanje stanja koriscenjem uml statechart dijagrama
 
T 3.4 modelovanje ponasanja koriscenjem uml dijagrama interakcija
 T 3.4 modelovanje ponasanja koriscenjem uml dijagrama interakcija T 3.4 modelovanje ponasanja koriscenjem uml dijagrama interakcija
T 3.4 modelovanje ponasanja koriscenjem uml dijagrama interakcija
 
T 3.3 design paterni (a)
 T 3.3 design paterni (a) T 3.3 design paterni (a)
T 3.3 design paterni (a)
 
T 3.2 definisanje strukture sistema koriscenjem uml dijagrama klasa
 T 3.2 definisanje strukture sistema koriscenjem uml dijagrama klasa T 3.2 definisanje strukture sistema koriscenjem uml dijagrama klasa
T 3.2 definisanje strukture sistema koriscenjem uml dijagrama klasa
 
T 3 uvod u modelovanje koriscenjem uml-a
 T 3 uvod u modelovanje koriscenjem uml-a T 3 uvod u modelovanje koriscenjem uml-a
T 3 uvod u modelovanje koriscenjem uml-a
 
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
 

T 3.1 definisanje zahteva koriscenjem use case dijagrama

  • 1. Definisanje zahteva korišćenjem Use Case dijagrama Analiza i specifikacija informacionih sistema dr Zoran Jeremić zoran.jeremic@gmail.com 1
  • 2. Sadržaj  Uvod  Use Case dijagrami  Pisanje slučajeva upotrebe  Povezivanje slučajeva upotrebe  Uputstvo za definisanje efektivnih slučajeva upotrebe 2 Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
  • 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 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 Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
  • 4. Izvori zahteva  Početni zahtevi dolaze od korisnika, preko:  Dokumenta, kao što su RFI/RFP  Sastanci, izveštaji  Detaljniji zahtevi dolaze od analitičara, nakon studiranja:  Domena i cene  Izvodljivosti (tehničke, organizacione itd)  Prototipovi  Konačni zahtevi se ustaljuju kroz iterativni proces. 4 Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
  • 5. Zahtevi vs. dizajn  Zahtevi:  Šta sistem treba da radi  Abstraktnije  Dizajn:  Kako sistem treba da radi nešto  Više detalja 5 Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
  • 6. Tipovi zahteva  Vidljivi funkcionalni zahtevi  “Sistem će korisniku dati gotovinu”  “Gotovina će se dati korisniku nakon što se izvadi kartica”  Kvalitativni zahtevi  “Proces autorizacije ne sme da traje duže od 1 sekunde”  “Korisnički interfejs treba da bude jednostavan”  Skriveni zahtevi Vidljivi  “Proces održavanja baze podataka funkcionalni zahtevi će se odvijati svake noći” Skriveni funkcionalni zahtevi Kvalitativni zahtevi 6 Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
  • 7. Sadržaj  Uvod  Use Case dijagrami  Pisanje slučajeva upotrebe  Povezivanje slučajeva upotrebe  Uputstvo za definisanje efektivnih slučajeva upotrebe 7 Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
  • 8. Slučajevi upotrebe Use Case Učesnik Slučaj upotrebe u dijagramu Slučaj upotrebe u tekstu  Slučaj upotrebe je prikaz interakcije između sistema i učesnika.  Puni model slučajeva upotrebe se sastoji iz:  Dijagrama – opisuje relacije između slučajeva upotrebe i učesnika.  Dokumenta koji detaljno opisuje svaki slučaj upotrebe. 8 Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
  • 9. Cilj  Kreiranje polu-formalnog modela funkcionalnih zahteva  Analiza i definisanje:  Domena  Spoljašnjih interfejsa  Scenarija i reakcija 9 Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
  • 10. Šta čini dobru specifikaciju slučajeva upotrebe?  Nepostojanje dvosmislenosti  Svaki zahtev mora biti interpretiran na jedinstven način.  Kompletnost  Moraju zadovoljiti sve trenutne zahteve sistema.  Konzistentnost  Zahtevi ne smeju biti u konfliktu jedan sa drugim. Ukoliko konflikti postoje, moraju se pronaći ustupci.  Izbegavaju dizajn  Zahtevi treba da iskažu potrebu, a ne da daju odgovor na nju. (Zašto?) 10 Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
  • 11. Slučajevi upotrebe kao sredstvo komunikacije Kupci Dizajneri Korisnici  Slučaj upotrebe treba da stimuliše diskusiju o tome šta sistem treba da radi, uglavnom sa ljudima koji su van razvojnog tima. 11 Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
  • 12. Jednostavan primer: Bolnički informacioni sistem Granice sistema Učesnik Slučaj Asocijacija upotrebe 12
  • 13. Pronalaženje učesnika  Spoljašnji objekti koji proizvode/koriste podatke:  Moraju služiti kao izvor i odredište podataka  Moraju biti van sistema Ljudi Mašine Spoljašnji sistemi Senzori Organizacione jedinice Baze podataka Štampač 13 Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
  • 14. Učesnici mogu biti generalizovani  Dete učesnik nasleđuje sve asocijacije slučaja upotrebe Treba koristiti ako (i samo ako), specifični učesnik ima više odgovornosti od generalizovanog (tj., povezan je sa više slučajeva upotrebe) Example 14 Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
  • 15. Sadržaj  Uvod  Use Case dijagrami  Pisanje slučajeva upotrebe  Povezivanje slučajeva upotrebe  Uputstvo za definisanje efektivnih slučajeva upotrebe 15 Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
  • 16. Struktura specifikacije slučaja upotrebe Ime Učesnici Okidač Preduslovi Posledice Uspešni scenario Alternativni tokovi 16 Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
  • 17. Okidači (triggers)  Šta aktivira slučaj upotrebe?  Primeri:  Korisnik podnosi zahtev  Korisnik ubacuje karticu  Sistemsko vreme je 10:00 17 Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
  • 18. Preduslovi  Koje uslove je potrebno da sistem ispuni pre započinjanja slučaja upotrebe.  Primeri:  Korisnikov račun postoji  Korisnik ima dovoljno novca na svom računu  Postoji dovoljno prostora na disku 18 Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
  • 19. Posledice  Posledice predstavljaju rezultat realizovanog slučaja upotrebe.  Primeri:  Novac je prenet sa korisnikovog računa  Korisnik je ulogovan  Fajl je sačuvan na hard disk  Minimalne garancije  Minimalna stvar koju sistem može obećati, čak i kada se slučaj upotrebe nije uspešno realizovao.  Primeri: Novac nije prenet dok autorizaciju nije odobrio korisnik  Uspešne garancije  Šta se dešava nakon uspešnog izvršenja slučaja upotrebe.  Primeri: Fajl je sačuvan; Novac je prenet 19 Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
  • 20. Uspešni scenario  Uspešni scenario je glavna nit priče slučaja upotrebe  Napisan je pod pretpostavkom da je sve u redu, da nije došlo do grešaka ili problema, i vodi direktno ka željenom ishodu slučaja upotrebe  Sastavljen je od niza akcionih koraka  Primeri: Korak interakcije 1. Korisnik unosi ime proizvoda, šifru i opis Korak 2. Sistem proverava šifru proizvoda validacije 3. Sistem dodaje proizvod u bazu podataka i šalje poruku potvrde Korak unutrašnje (dodatni) korak promene interakcije 20 Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
  • 21. Primer uspešnog scenarija 1. Korisnik unosi ključnu reč 2. Sistem prikazuje skup rezultata pretraživanja i sponzorisane proizvode, pri čemu svaki obuhvata ime, kratak opis i cenu 3. Korisnik bira proizvod 4. Sistem prikazuje stranu proizvoda koja obuhvata informacije o proizvodu, prikaz i slične proizvode 5. Korisnik dodaje proizvod na šoping listu 21 Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
  • 22. Uputstvo za efektivno pisanje  Koristite jednostavnu gramatiku  Samo jedna strana (sistem ili Sistem Učesnik učesnik) radi nešto u jednom koraku Učesnik traži novac  Pišite sa ciljne tačke gledišta Sistem pita za količinu  Loše: “Uzmi količinu od korisnika i daj Učesnik unosi količinu mu novac”  Bilo koji korak mora voditi do nekog Sistem daje novac progresa  Loše: “Korisnik potvrdi na enter dugme” 22 Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
  • 23. Koraci – nastavak  Grane:  Ukoliko korisnik ima više od 10 000 $ na svom računu, sistem mu prikazuje listu reklama  U suprotnom…  Ponavljanja: 1. Korisnik unosi ime artikla koji želi da kupi 2. Sistem prikazuje stavke 3. Korisnik bira stavke koje želi da kupi 4. Sistem dodaje stavke na šoping listu 5. Korisnik ponavlja korake 1-4 sve dok ne prijavi da je završio 23 Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
  • 24. Slučajevi upotrebe – najčešće greške  Suviše složeni dijagrami  Nema sistema  Nema učesnika  Previše detalja o korisničkom interfejsu  “Korisnik unosi username i password, klikne OK ili pritisne Enter”  Vrlo malo bitnih detalja  Korisnik obezbeđuje ime  Korisnik obezbeđuje adresu  Korisnik obezbeđuje broj telefona  … 24 Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
  • 25. Alternativni tokovi  Koriste se da opišu vanredne funkcionalnosti  Primeri: Polazne tačke  Greške  Neuobičajeni ili retki slučajevi  Otkazi Izuzeci  Polazne tačke Uspešni Prečice scenario  Završne tačke  Prečice Završne tačke 25 Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
  • 26. Alternativni tokovi - Primer  Greške:  “Kućište se nije otvorilo propisno”  “Bilo koja mrežna greška koja se dogodila između koraka 4 i 7”  “Bilo koja vrsta greške da se dogodila”  Neuobičajeni ili retki slučajevi  “Kreditna kartica je definisana kao ukradena”  “Korisnik je izabrao da doda novu reč u rečnik”  Završne tačke  “Sistem je utvrdio da nema više otvorenih stavki”  Prečice:  “Korisnik može napustiti slučaj upotrebe pritiskom na dugme “esc” 26 Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
  • 27. Specifikacija slučaja upotrebe: BIS Ime: Ažuriranje podataka o pacijentu Učesnici: Zdravstveni radnik Okidač: Dolazak pacijenta u ordinaciju Da pacijent ima važeću ličnu Preduslovi: kartu i zdravstvenu knjižicu U pacijentov karton su uneti Posledice: podaci o pruženoj usluzi 27 Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
  • 28. Specifikacija slučaja upotrebe: BIS (2) 1. Provera identiteta pacijenta uz pomoć lič.karte i zdr. knjižice, 2. Pretraga baze pod. I otvaranje e- Uspešni kartona ako ga pacijent nema, scenario 3. Pružanje usluge pacijentu, 4. Unos podataka o usluzi, 5. Štampanje recepta, 1. Pacijent nema važeću lič.kartu ili zdr. knjižicu, pacijent odlazi. Alternativni 2. Pacijent želi da mu usluge pruži drugi tokovi lekar (koji nije njegov, pacijent ga nije izabrao), pacijent mora da čeka, odlazi. 28 Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
  • 29. Sadržaj  Uvod  Use Case dijagrami  Pisanje slučajeva upotrebe  Povezivanje slučajeva upotrebe  Uputstvo za definisanje efektivnih slučajeva upotrebe 29 Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
  • 30. Povezivanje slučajeva upotrebe  Povezivanje omogućava fleksibilnost u specifikaciji zahteva  Izolovanje funkcionalnosti  Omogućavanje deljenja funkcionalnosti  Deljenje funkcionalnosti u delove koji se lakše obrađuju  Koriste se tri vrste relacija:  Uključuje (Include)  Proširuje (Extend)  Nasleđuje (Inheritance) 30 Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
  • 31. “Include” konstrukcija  Include se koristi u sledećim slučajevima:  Dekomponovanje složenog ponašanja  Centralizovanje zajedničkog ponašanja  Osnovni slučaj upotrebe eksplicitno uključuje ponašanje drugog slučaja upotrebe lociranog u svojoj bazi. Unos podataka o Ažuriranje podataka o <<include>> pacijentu izvršenom pregledu primer 31 Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
  • 32. Pisanje Include konstrukcija  Ako bazni slučaj upotrebe uključuje drugi slučaj upotrebe, dodaćemo referencu kao sledeći korak: 1. Sistem prikazuje karton pacijenta 2. Zdravstveni radnik unosi podatak o izvršenom pregledu ili <include: unos podataka o izvršenom pregledu> 32 Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
  • 33. Extend – grafičko predstavljanje  Osnova slučaja upotrebe može uključiti drugi slučaj upotrebe u određenim tačkama, zvanim tačke proširenja.  Obratite pažnju na smer strelice  Osnovni slučaj upotrebe ne zna koji slučaj upotrebe ga proširuje <<extend>> Ažur. pod. o pacijentu Otvaranje e-kartona nema e-karton pacijentu Primer 33 Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
  • 34. Pisanje Extend konstrukcije  Scenariji ne uključuju reference  Umesto toga, oni uključuju tačke proširenja, kao što su: Zdravstveni radnik pretražuje b.p. korišćenjem jmbg Sistem ne pronalazi traženog pacijenta Tačka proširenja: otvaranje e-kartona pacijentu ili <extension point: otvaranje e-kartona pacijentu>  Proširenje slučaja upotrebe obuhvata uslove u kojima će se proširenje primeniti  Primer: ako je korisnik upućen na specijalistički pregled 34 Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
  • 35. Primer: Bolnički IS Otvaranje e-kartona Ažuriranje podataka o pacijentu Upućivanje na specijalistički pregled 35 Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
  • 36. 36
  • 37. Generalizacija između slučajeva upotrebe  Slučaj upotrebe dete nasleđuje ponašanje roditeljskog slučaja upotrebe:  Interakcija (opisana tekstualno)  Linkovi slučaja upotrebe (associations, include, extend, generalization)  Slučaj upotrebe dete može zameniti roditeljski slučaj upotrebe Primer 37 Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
  • 38. Sadržaj  Uvod  Use Case dijagrami  Pisanje slučajeva upotrebe  Povezivanje slučajeva upotrebe  Uputstvo za definisanje efektivnih slučajeva upotrebe 38 Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
  • 39. Proces kombinovanja  Brojno ograničenje:  Dijagram bi trebalo da sadrži između 3 i 10 osnovnih slučajeva upotrebe.  Dijagram ne bi trebalo da sadrži više od 15 slučajeva upotrebe (osnovni + uključeni + prošireni).  Abstrakcija:  Svi slučajevi upotrebi bi trebalo da budu na sličnom nivou abstrakcije.  Veličina:  Slučajeve upotrebe bi trebalo opisati na pola strane ili više. 39 Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
  • 40. Proces deljenja  Veličina:  Ako slučaj upotrebe zauzima više od jedne strane, potrebno je razmotriti mogućnost korišćenja include/extend  Slaba zavisnost:  Ako je zavisnost između dva dela slučaja upotrebe slaba, potrebno ih je razdvojiti. UC 40 Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
  • 41. Još detalja  Faktori van zajedničke upotrebe koji su potrebni od strane više slučajeva upotrebe  Ako je upotreba neophodna koristite <<include>>  Ako je osnovni slučaj upotrebe kompletan a upotreba je opciona, razmotrite upotrebu <<extend>>  Dijagram slučaja upotrebe treba da:  Uključi samo učesnike koji su neophodni 41 Uvod | Dijagrami | Pisanje | Povezivanje | Uputstvo
  • 42. Definisanje zahteva korišćenjem Use Case dijagrama Analiza i specifikacija informacionih sistema dr Zoran Jeremić zoran.jeremic@gmail.com 42