Návaznosti SI1: Analýza (pokraování) Minule: Úvod do analýzy Dnes: Harmonogram doplujících pednášek Další podrobnosti ke stavu projekt Dokonení analýzy Píšt: Návrh SI1 2 Doplující pednášky z SI SI1: Pozvánka na doplující pednášky z SI Použití nástroje Rational Rose (Svaina) 22.4. t 18:00 K9 Webové metodiky (Molhanec) 6.5. t 18:00 K9 Užitý projektový management I. (Pechan) 10.5. Po 16:15 K1 Užitý projektový management II. (Pechan) 13.5. t 18:00 K9 Metodika BORM (Molhanec) 20.5. t 18:00 K9 SI1 4 Kde o nich najdeme informace? http://service.felk.cvut.cz/courses/36si FAQ Q: Jak je to s nástrojem Rational Rose? A: Máte ho k dispozici v uebnách katedry Q: Jak je to vypadá s instalací na Strahov? A:? SI1 5 SI1 6 1
SI1: Kontrola stavu projekt Tady jsme SI1 8 Jak na tom jsou projekty pedmtu SI1? Nkteré projekty zatím s analýzou nezaaly http://service.felk.cvut.cz/courses/36si SI1 9 SI1 10 Nkteré projekty ji alespo slibují Dležité je, aby se dalo zjistit, kdo za to mže! SI1 11 SI1 12 2
Nkteré projekty již na stránkách nco mají, ale chybí jim defice notace! Defice notace je potebná i když je velmi podobná standardu! SI1 13 SI1 14 Když je notace standardní, není poteba ji definovat! SI1 15 Odkazy na textovou specifikaci jsou dležitou souástí dokumentace, ale? SI1 16 Nkteré projekty již mají analytickou dokumentaci rozsáhlejší Nkteré projekty již mají analytickou dokumentaci rozsáhlejší SI1 17 SI1 18 3
Nkteré projekty stále nic na stránkách nemají. Tento týden tyto projekty budou zrušeny. Tomáš Dvoák, Jan Chrastina, Adéla Chrastinová, Zdenk Jedlika, Pavel Matja, Josef Motl Cviící: Ing. Petr Štengl SI1: Analýza (pokraování) SI1 19 Model jednání ECO-skladu Funkní model Model jednání je pouhá evidence služeb, ty musí být popsány pesnji scéná, dekompozice, minispecifikace SI1 22 Jak lze služby evidované v modelu jednání popsat? Textovým popisem (to je podmínka nutná, nikoli postaující). Minispecifikací (popisem operace) Dekompozicí na služby jednodušší pomocí scénáe pomocí diagramu kolaborace pomocí stavového diagramu pomocí diagramu aktivity pomocí DFD Základní princip scénáe SI1 23 SI1 24 4
Zvolíme-li konkrétní metodu Konstrukce a destrukce SI1 25 SI1 26 Reakce a návratové hodnoty Hrubý scéná pro erpání SI1 27 SI1 28 Zákazník se autentizuje Scéná pro pivolání SI1 29 SI1 30 5
Scéná pro pejímku Scéná je pouze dekompozice, jeho složky musí být popsány pesnji scéná, dekompozice, minispecifikace Popis akce (operace, funkce) Operation: název Description: textový popis Reads: jaká data jente Changes: jaká data mní nebo vytváí Sends: jaké reakce vyvolává (jaké zprávy posílá) Assumes: co pedpokládá Results: co zajišuje (zaruuje) SI1 31 SI1 32 Popis pro prázdná plošina Operation: prázdná plošina Description: informuje systém, že nakládací plošina je prázdná Reads: Changes: plošina Sends: Assumes: Results: vyprázdní v modelu nakládací plošinu uvolní identifikátory barel, které jsou na plošin Popis pro dodací list Operation: dodací list Description: zahájí pejímku a uloží informace z dodacího listu Reads: supplied dodací_list Changes: zadaný_dodací_list Sends: Assumes: Results: vnitní objekt zadaný_dodací_list je inicializován hodnotami z fyzického dodacího_listu SI1 33 SI1 34 Popis pro barel k zaazení Operation: barel k zaazení Description: každý vyložený barel je jednoznan identifikován Reads: supplied typ_chemikálie Changes: plošina, new b: Barel Sends: operátor:{id barelu} Assumes: Results: nakládací plošina obsahuje barel b operátor dostane identifikaci ID barelu atribut b.typ je nastaven na typ_chemikálie atribut b.id je nastaven na identifikaci ID barelu SI1 35 Popis pro konec pejímky Operation: konec pejímky Description: informuje systém, že již byly vyloženy všechny barely Reads: plošina, zadaný_dodací_list Changes: budovy ve skladu Sends: operátor:{rozdíly v pejímce, nelze uložit}, skladník:{píkaz pro skladníka} Assumes: sklad je bezpený SI1 36 6
Popis pro konec pejímky (pokr.) Results: pro všechny barely, které lze do skladu umístit, pesune v modelu jejich umístní do vhodné budovy a vytvoí príkaz pro skladníka(kam: alokaní seznam) pokud existují rozdíly mezi zadaným_dodacím_listem a skutenou dodávkou, vytvoí se rozdíly v pejímce(navíc, chybí: seznam barel) pro všechny barely, které nelze do skladu umístit vytvoí nelze uložit(co: seznam barel) sklad je bezpený Diagramy datových tok (DFD Data Flow Diagrams) (zachycení vazeb funkcí a tok dat, dokumentace dekompozice) Komponenty: funkce (procesy, akce) datové toky (data flows) - orientované hrany vyznaující toky dat datové pamti (data stores) - místa, kde si potebujeme nco pamatovat aktéi (terminátory) - uživatelské role nebo spolupracující systémy SI1 37 SI1 38 Notace DFD (Yourdon) AKTER dotaz SPOLUPRACUJICI SYSTEM odpoved zprava Kontextový diagram pro Výtah (urení hranice systému) SPINAC PATRA PASAZER stisk tlacitka signalizace spinace patra Funkce 1 indikace System pro rizeni vytahu signalizace pretizeni SENZOR PRETIZENI data tlacitko ON/OFF ridici povel Datova pamet OPERATOR RIZENI MOTORU SI1 39 SI1 40 DFD pro výtah (úrove 0) Diagram kolaborace v UML POZADAVKY stisk tlacitka pozadavek pozadavek Obsluha tlacitek signalizace pozadavku Planovani pohybu indikace 1 stav stav 3 plan cile STAVY signal ON PLANY CILU signal ON stav plan cile Obsluha operatora signal ON Rizeni vytahu tlacitko ON/OFF 2 signalizace spinace patra 4 ridici povel SI1 41 SI1 42 7
Kontext jako diagram kolaborace Simulovaný model jednání : Pasažér 1: požadavek na pivolání : Signalizace petížení Signalizace petížení 2: indikace 3: signalizace petížení Pasažér +indikace +požadavek +signalizace petížení 6: tlaítko ON/OFF Systém pro ízení výtahu +tlaítko ON/OFF Systém pro ízení výtahu +signalizace patra 4: signalizace patra 5: povel : Spína patra Operátor +povel Spína patra : Operátor : Motor Motor SI1 43 SI1 44 Skutený model jednání Popis diagramem aktivity Systém pro ízení výtahu Popis pípadu použití, kdy pasažér pivolává výtah Evidence petížení Spína patra Stisk tlaítka pro pivolání výtahu Požadavek na dopravu do patra Pasažér ekání na píjezd výtahu Pivolání výtahu Motor píjezd a otevení výtahu Výstup z klece Nástup do výtahové klece Startér výtahu Operátor Došlo k petížení klece? klec se peplnila Evidence patra Signalizace petížení SI1 45 SI1 46 Aktivity s objekty v UML Datov orientovaná analýza Vychází z pedstavy, že základem IS jsou data. Služby IS slouží pro poízení a exploraci dat. Doporuuje proto nejprve analyzovat požadavky a definovat konceptuální datový model ešeného systému. Konceptuální datový model musí postihovat data picházející pes hranici systému jako vstupní data související s událostmi, dále data, která se v systému ukládají a nakonec rovnž data, která systém produkuje na výstupu. Teprve pozdji doplníme model o další ásti. SI1 47 SI1 48 8
Postup datov orient. analýzy 1. Seznam událostí, kontext, datový slovník 2. Identifikace dat, která s událostí souvisí (základních objekt) 3. Identifikace vztah mezi objekty 4. Scénáe jednání (pvodce, událost, akce, participanti, výstupy - reakce) 5. Modelování životních cykl objekt 6. Popis akcí (minispecifikace základních akcí) Jak hledat data? Doporuení.1: Analyzujeme odborný lánek, vybereme všechna podstatná jména. Roztídíme je do skupin: kandidáti na typy objekt (entity), kandidáti na vlastnosti objekt (atributy), ostatní (kandidáti na aktéry, smetí). SI1 49 SI1 50 Píklad: Odborný lánek pro Výtah Systém Výtah slouží pro logické ízení obsluhy výtahu s jednou i více šachtami (pedpokládají se 4 šachty a 40 úrovní). Systém zajišuje efektivní plánování sbru a odvozu pasažér mezi obsluhovanými patry podle požadavk (požadavek na pivolání výtahu pro jízdu smrem nahoru nebo dol, požadavek na dopravení do uritého patra). Smr jízdy se nemní, dokud výtah nesplní objednávky v daném smru (výtah neví o pasažérech neexistuje indikace prázdnosti klece). Peplnný výtah nereaguje na výzvy (existuje indikace petížení). Pro každou šachtu existuje samostatný motor ovládaný signály (povely UP, DOWN a STOP). Povel STOP zpsobí zastavení výtahu v nejbližším pate v daném smru a otevení dveí výtahu (dvee se dají otevít až v pate). Uvnit klece je panel s tlaítky pater, indikace aktuální polohy a tlaítko STOP. Tlaítko STOP zabrání zavení dveí (jde mimo systém). Rovnž otevírání a zavírání dveí jde mimo systém (kvli bezpenosti). Píkazy pro systém jsou akceptovány až po zavení dveí. Operátor výtahu má k dispozici tlaítko ON/OFF, kterým zadává požadavek na zastavení pohybu výtah. SI1 51 systém Výtah logické ízení šachta úrove pasažér patro požadavek požadavek na pivolání výtahu pro jízdu smrem nahoru požadavek na pivolání výtahu pro jízdu smrem dol požadavek na dopravení do patra smr jízdy objednávka indikace prázdnosti klece výzva Zpracovaný lánek indikace petížení motor signál povel UP povel DOWN povel STOP dvee výtahu klec panel s tlaítky pater indikace aktuální polohy tlaítko STOP píkaz pro systém operátor výtahu tlaítko ON/OFF požadavek na zastavení pohybu SI1 52 Kandidáti na aktéry pasažér indikace petížení motor indikace aktuální polohy (patra) tlaítko STOP operátor výtahu tlaítko ON/OFF šachta (atribut klece) úrove alias patro požadavek alias objednávka alias píkaz pro systém alias výzva požadavek na pivolání výtahu pro jízdu smrem nahoru požadavek na pivolání výtahu pro jízdu smrem dol požadavek na dopravení do patra smr jízdy (atribut) indikace prázdnosti klece (neexistuje) Kandidáti na typy dat indikace petížení signál alias povel (pro motor) povel UP povel DOWN povel STOP klec panel s tlaítky pater indikace aktuální polohy tlaítko STOP (jde mimo systém) tlaítko ON/OFF alias požadavek na zastavení pohybu SI1 53 SI1 54 9
Nco diagramem vyjádit nelze V píkladu systému Výtah je to nap.: Tlaítko pro pivolání pro jízdu smrem nahoru na panelu v posledním pate, tj. když patro má hodnotu getpocetpater() neexistuje. Tlaítko pro pivolání pro jízdu smrem dol na panelu v prvním pate neexistuje. SI1 55 SI1 56 Jak hledat data? Doporuení.2: Analyzujeme seznam událostí, rozpoznáváme data, která s událostmi souvisí. Roztídíme je do skupin: kandidáti na typy objekt (entity), kandidáti na vlastnosti objekt (atributy). Píklad: Události pro ECO sklad Operátor zahájil pejímku Operátor zahájil dodávku Manažer se ptá na stav skladu Manažer se ptá na bezpenost skladu SI1 57 SI1 58 Scéná pro pejímku Kandidáti na typy dat dodací list barel typ chemikálie rozdíly v pejímce nelze uložit píkaz pro skladníka SI1 59 SI1 60 10
Datový model pro ECO-sklad Další postup Z datového modelu se snažíme odvodit funkce: Vytvoíme matici CRUD (Create, Read, Update, Delete) Zkoumáme, zda pro každý typ dat existuje odpovídající funkce Z datového modelu se snažíme odvodit dynamiku: Pro každý typ dat zkoumáme, zda objekty nevykazují zmny stavu SI1 61 SI1 62 Matice CRUD ádky odpovídají typm objekt. Sloupce odpovídají funkcím. V prseíku je zapsáno zda funkce C,R,U a/nebo D odpovídající data. V každém ádku by mlo nkde být vše (nkterá funkce musí objekt vytváet, jiná využívat, i rušit). Matice CRUD pro ECO sklad Prázdná Zadej Zaa Konec Dodávka Zahájení Ukonení plošina dodací barel pejímky práce práce list systému systému ECO ECO sklad sklad Plošina U U U C D Sklad U C,Get D,Save U Monitor U,Print U,Print C D Barel C Dodací C R,D list Píkaz C,Print C,Print SI1 63 SI1 64 Co jsme zjistili? Potebujeme ješt v rámci njaké funkce reprezentaci barelu zrušit. Mohla by to udlat funkce dodávka, nebo po vyskladnní barelu jeho životní cyklus koní. Doplníme tedy do popisu funkce dodávka požadavek pokud v rámci dodávky využijeme nkterý barel, vymažeme jeho reprezentaci z obsahu skladu a zrušíme ji. Do matice CRUD pidáme odpovídající D. SI1 65 Matice CRUD pro Výtah? SI1 66 11
Stavové diagramy Dynamický model Slouží k popisu dynamiky systému Stavový diagram definuje možné stavy, možné pechody mezi stavy, události, které pechody iniciují, podmínky pechod a akce, které s pechody souvisí Stavový diagram lze použít pro popis dynamiky objektu (pokud má rozpoznatelné stavy), pro popis metody (pokud známe algoritmus), i pro popis protokolu (vetn protokolu o styku uživatele se systémem) SI1 68 Notace stavových diagram poátení stav událost, která vyvolala pechod koncový stav stav akce pechod Doplky ke stavovým diagramm Pechod mže být ohodnocen: událost(parametry)[podm podmínka]/akce^zpráva Každý stav mže obsahovat popis akcí pro události vstup, výstup a opakované provádní: entry/akce exit/akce do/akce Stavové diagramy mohou být hierarchické Mohou obsahovat synchronizaní znaky SI1 69 SI1 70 Životní cyklus skuteného barelu Životní cyklus entity barel Zaa barel / ID idi vykládá barel na plošinu / zarad_barel Je na plošin neoznaen Je na plošin oznaen Je na plošin oznaen Píkaz / Skladník odváží barel do skladu Je ve skladu Píkaz / Skladník odváží barel na plošinu idi nakládá barel z plošiny / smazat ID zarad_barel / ID Je v kontejneru Plošina oznaen konec_prejimky / prikaz pro uskladneni Je v kontejneru Sklad dodavka / píkaz pro vyskladneni SI1 71 SI1 72 12
Popis ídicích proces pomocí stavových diagram Vstupy ídicího procesu lze modelovat pomocí událostí stavového diagramu. Výstupy ídicího procesu lze modelovat pomocí akcí stavového diagramu. Pak lze ídicí procesy modelovat stavovými diagramy. stídav spouštíme P1 a P2 P1 P2 y/a a x b y ídicí proces /a Pracuje P1 Pracuje P2 x/b SI1 73 SI1 74 Životní cyklus systému Vyjádení souhrné dynamiky systému, která je zachycena ve scénáích Definuje povolené návaznosti akcí a reakcí Pedstavuje hrubou uživatelskou píruku pro systém Definice systému jako koneného automatu Životní cyklus jako regulární výraz <Životní cyklus> = Lifecycle <jméno objektu> : <regulární výraz> <regulární výraz> = <akce> #<reakce> <regulární výraz>. <regulární výraz> sekvence [ <regulární výraz> ] voliteln <regulární výraz>* iterace (<regulární výraz> <regulární výraz>) selekce (<regulární výraz> <regulární výraz>) paraleln <akce> = jméno události <reakce> = jméno reakce SI1 75 SI1 76 Životní cyklus ECO-skladu Lifecycle ECO-sklad: (dodávka pejímka)* (dotaz na stav je bezpený?)* pejímka = prázdná plošina. dodací list. (barel k zaazení. #ID barelu)*. konec pejímky. [#rozdíly v pejímce]. #píkaz pro skladníka. [#nelze uložit] dodávka = prázdná plošina.požadovaná dodávka. #skutená dodávka. #píkaz pro skladníka dotaz na stav = je bezpený? =... Životní cyklus entity barel Lifecycle BAREL: zarad_barel. #ID barelu. #píkaz pro uskladnní. dodávka. #píkaz pro vyskladnní SI1 77 SI1 78 13
Výstup analýzy Kontroly analytických model Konceptuální model: datový model popisuje entity, atributy, vztahy, integritní omezení, funkní model popisuje služby, které systém poskytuje pro záznam, údržbu a využití dat, dynamický model popisuje možné stavy dat a jejich zmny. SI1 80 Kontrola výstup analýzy kontrola jednotlivých model (pohled) kontrola vzájemné konzistence model Kontrola datového modelu je datový model úplný? existuje entita pro každý typ objektu? nejsou zde nadbytené entity (entity tvoené pouze identifikací, entity s jedinou instancí, apod.)? jsou zde zaneseny všechny vztahy (vetn generalizací a agregací)? nejsou zde odvoditelné vztahy? je model v normální form? jsou zanesena všechna integritní omezení? SI1 81 SI1 82 Existuje entita pro každý typ objektu? Nadbytené entity entity tvoené pouze identifikací entity s jedinou instancí entity s vazbou typy 1:1 apod. Dobrou technikou je pedstavit si píklady entit a objekt? SI1 83 SI1 84 14
Normalizace datového modelu Pedpoklad: všechny entity jsou jednoznan identifikovatelné oznaenou kombinací atribut a/nebo vztah 1.normální forma: entity neobsahují násobné atributy ani komponované atributy 2.normální forma (navíc): neklíové atributy závisí pouze na celém klíi 3.normální forma (navíc): neklíové atributy nejsou závislé na neklíových položkách Píklad návrhu reprezentace dat datový model pro leteckou dopravu (LET) SI1 85 1. verze analytického modelu Nenormalizovaný model Entita: LET Atributy: @ Datum @ as @ íslo letu Spolenost Letišt Obvyklý typ letadla Kapacita Jméno lena posádky Role lena posádky @ - klíová položka, - nepovinná položka, - povinná položka SI1 87 SI1 88 1.normální forma 1.normální forma: entity neobsahují násobné atributy, ani komponované atributy pokud existuje atribut nebo skupina atribut, které mohou nabývat více hodnot, vytvoíme novou entitu popsanou tmito atributy a identifikovanou njakou vhodnou kombinací tchto atribut - souasn pidáme vztah 1:N pokud existuje atribut, který obsahuje více hodnot, rozložíme jej na nkolik atribut, které reprezentují vždy jedinou vlastnost Smrem k 1.NF Josef Novák, kapitán Karel Polák, 2.pilot Jana Nováková, letuška SI1 89 SI1 90 15
1.normální forma 2.normální forma 2.normální forma (navíc): neklíové atributy závisí pouze na celém klíi pokud existuje atribut nebo skupina atribut, které závisí pouze na ásti jednoznaného klíe, vytvoíme novou entitu obsahující tento atribut a píslušnou ást klíe - souasn pidáme vztah 1:N SI1 91 SI1 92 2.normální forma 3.normální forma 3.normální forma (navíc): neklíové atributy nejsou závislé na neklíových atributech pokud existuje atribut nebo skupina atribut, které závisí na neklíovém atributu, vytvoíme novou entitu obsahující tento atribut a píslušný atribut jako klí - souasn pidáme vztah 1:N SI1 93 SI1 94 3.normální forma Návrh reprezentace pomocí RDBMS (patí až do návrhu) CREATE TABLE "LETY"( "datum_a_cas" DATE NOT NULL, "ID_POSADKY" NUMBER(1) NOT NULL, "cislo_linky" NUMBER(3) NOT NULL, CONSTRAINT "PK_LETY" PRIMARY KEY ("datum_a_cas","cislo_linky") ); CREATE TABLE "POSADKY"( "ID_POSADKY" NUMBER(1) NOT NULL, "role" VARCHAR2(20), CONSTRAINT "PK_POSADKY" PRIMARY KEY ("ID_POSADKY") ); SI1 95 SI1 96 16
Jsou zaneseny všechny vztahy? Nelze doplnit generalizace? Nelze doplnit agregace? Nelze model vylepšit? Píklad: Pro entitu dodací list lze vymyslet pružnjší model, který usnadní pípadné úpravy v budoucnosti Nejsou zde odvoditelné vztahy? Zákazník si objednává zboží Zákazníkovi je vystavena faktura. Odebrané zboží je pedmtem fakturace.? Nejsou zde odvoditelné vztahy? Pozn.: Odvoditelné vztahy mohou v modelu být, ale musí být jako odvoditelné pedznaeny znakem / a doplnny zpsobem odvození (formulí, popisem v OCL). SI1 97 SI1 98 Jsou zanesena všechna integritní omezení? adu vlastností dat nelze do diagramu zanést: Šéf musí mít vtší plat než jeho podízení. V jednom skladu nelze umístit chemikálie typu 1 a 2. context s:sklad inv : forall(barel x,y s.obsahuje(x) and s.obsahuje(y) implies x.typ!= 1 or y.typ!= 2) SI1 99 Vyvážení datového modelu datový model versus datový slovník každá entita, atribut a vztah v DD datový model versus funkní dekompozice každá pam a datový tok obsahuje entitu, atribut nebo vztah (nebo jejich kombinaci) datový model versus minispecifikace nco musí entity a vztahy vytváet/rušit, íst/modifikovat (matice CRUD) SI1 100 Matice CRUD pro ECO sklad Prázdná Zadej Zaa Konec Dodávka Zahájení Ukonení plošina dodací barel pejímky práce práce list systému systému ECO ECO sklad sklad Plošina U U U C D Sklad U C,Get D,Save U Monitor U,Print U,Print C D Barel C Dodací C R,D list Kontrola funkního modelu je funkní model úplný? existuje funkce/metoda pro každou událost? každá funkce/metoda musí být popsána dekompozicí, nebo mít minispecifikaci (vstupy a výstupy musí odpovídat) nejsou zde nadbytené funkce/metody? Píkaz C,Print C,Print SI1 101 SI1 102 17
Vyvážení funkního modelu funkní model versus datový slovník každá pam a datový tok v DD každý prvek DD se nkde vyskytuje (jinak je zbytený) funkní model versus datový model každá data zmínná ve funkce/metod musí být popsána v datovém modelu funkní model versus dynamický model každý ídicí proces má dynamický model (vstupy = podmínky, výstupy = akce) stídav spouštíme P1 a P2 P1 P2 y/a a x b y ídicí proces /a Pracuje P1 Pracuje P2 x/b SI1 103 SI1 104 Kontrola dynamického modelu je dynamický model úplný? existuje model pro každou entitu, která mže mít rzné stavy? existuje model pro každý ídicí proces? existuje popis životního cyklu systému? Životní cyklus ECO-skladu Lifecycle ECO-sklad: (dodávka pejímka)* (dotaz na stav je bezpený?)* pejímka = prázdná plošina. dodací list. (barel k zaazení. #ID barelu)*. konec pejímky. [#rozdíly v pejímce]. #píkaz pro skladníka. [#nelze uložit] dodávka = prázdná plošina.požadovaná dodávka. #skutená dodávka. #píkaz pro skladníka dotaz na stav = je bezpený? =... SI1 105 SI1 106 Životní cyklus pro Výtah Lifecycle Výtah: (požadavek)* (ON/OFF)* požadavek = [požadavek na pivolání požadavek na patro] požadavek na pivolání = [ požadavek na jízdu dol požadavek na jízdu nahoru ] požadavek na jízdu dol = tlaítko pro jízdu dol. #indikace požadavek na jízdu nahoru = tlaítko pro jízdu nahoru. #indikace požadavek na patro = tlaítko patra. #indikace SI1 107 18