SWI041: Analýza Hledáme odpov na otázku: Co se má udlat?
Nejprve trochu kontroly Stav projekt
Pro vytváet úvodní studii A. Protože to Richta chce. B. Protože se to v komunit informatik sluší. C. Protože to mže ušetit výdaje. C je správn!! SWI041 - Analýza 3
Jak to je ideáln lní SWI041 - Analýza 4
Ale nemusí to vždy v dopadnout SWI041 - Analýza 5
Úvodní studie mžm že e nco n ušetit SWI041 - Analýza 6
Co obsahuje úvodní studie? Struný náznak o jaký produkt se jedná - definice hranice systému Katalog požadavk Odhad náklad a výnos. Pokus o pesvdení investora, že se vyplatí do projektu vložit peníze. asto je vhodné vymezit rzné varianty ešení. SWI041 - Analýza 7
Struná definice hranice systému Struná informace, bez zbytených podrobností (ty se pozdji doplní v analýze). Deklarace zámru Odborný lánek Model jednání (Use Case Model UML, píp. kontext) Slovník použitých termín (pojm) Základní datový model SWI041 - Analýza 8
Jedná se o rzné aktéry? SWI041 - Analýza 9
SWI041 - Analýza 10
SWI041 - Analýza 11
Model jednání pro Výtah SWI041 - Analýza 12
Model jednání ECO-skladu SWI041 - Analýza 13
SWI041 - Analýza 14
Scénáe e událost lostí (Sequence diagrams) (zachycení sledu událostí) Prvky: objekty - znázornné obvykle jako sloupce interakce mezi objekty (stimuly) - orientované šipky mezi objekty události - události, které vyvolaly interakci reakce - odezvy na události (výstupy) asová osa - pro vyznaení sledu událostí SWI041 - Analýza 15
Scéná pro pivolp ivolání SWI041 - Analýza 16
Scéná pro pejímku SWI041 - Analýza 17
Scéná pro dodávku SWI041 - Analýza 18
Datový model (konceptuáln lní) (zachycení analýzy dat) Komponenty: typy objekt (entity) - entita = rozlišitelný identifikovatelný objekt vztahy (relationships) - množiny instancí reprezentujících vztahy mezi (2 a více) objekty indikace pidružených objekt - pro vztahy o nichž si potebujeme nco pamatovat indikace vztah nadtyp-podtyp, celek-ást (genspec, whole-part) - vyjádení vztahu spolený - speciální (ddinost) SWI041 - Analýza 19
SWI041 - Analýza 20
Datový model ECO (1.verze) SWI041 - Analýza 21
Alternativní notace Integrated Definition IDEF (U.S. Air Force - http://www.idef.com) SWI041 - Analýza 22
Alternativní notace Architecture of Integrated Information Systems ARIS (prof. Scheer, SAP) http://www.ids-scheer.com SWI041 - Analýza 23
Datové modelování
Fáze datového modelování Sbr požadavk Analýza dat a vytvoení konceptuálního datového modelu (ER-model, model tíd, PIM) Návrh reprezentace dat logický datový model (nap. relaní model, objektový model, PSM) Implementace datového modelu skutené vyjádení datových charakteristik pro konkrétní prostedí (fyzický model) SWI041 - Analýza 25
Píklad: MS Project Požadavky: aplikace bude pracovat s úlohami, zdroji a vztahy. Odtud kandidáti na entity (typy objekt, tídy): Úloha Zdroj Piazení První model: SWI041 - Analýza 26
Podrobnjší model SWI041 - Analýza 27
Ješt podrobnjší model SWI041 - Analýza 28
Použijeme ijeme-li relaní databázi (ást) SWI041 - Analýza 29
Skutená implementace CREATE TABLE MSP_TASKS ( PROJ_ID NUMBER(18,0), TASK_UID NUMBER(18,0),, PRIMARY KEY (PROJ_ID,TASK_UID) ); CREATE TABLE MSP_RESOURCES ( PROJ_ID NUMBER(18,0), RES_UID NUMBER(18,0), RES_NAME VARCHAR2(255),, PRIMARY KEY (PROJ_ID,RES_UID) ); CREATE TABLE MSP_LINKS ( PROJ_ID NUMBER(18,0), LINK_UID NUMBER(18,0), LINK_PRED_UID NUMBER(18,0), LINK_SUCC_UID NUMBER(18,0),, FOREIGN KEY (PROJ_ID, LINK_PRED_UID) REFERENCES MSP_TASKS (PROJ_ID, TASK_UID) ); SWI041 - Analýza 30
Pozor na role ve vztazích Predmet+ma instanci nazev : string 0..* +je typutyp Predmetu jmeno : string 1 Pedmt je práv jednoho typu Typ pedmtu má 0..* instancí SWI041 - Analýza 31
Generovaný kódk #ifndef Predmet_h #define Predmet_h #include "Typ Predmetu.h" class Predmet { public: Predmet(); ~Predmet(); const Typ_Predmetu * get_je_typu () const; void set_je_typu (Typ_Predmetu * value); private: const string get_nazev () const; void set_nazev (string value); string nazev; Typ_Predmetu *je_typu; }; SWI041 - Analýza 32
SWI041 - Analýza 33
SWI041 - Analýza 34
CASE nástrojen http://www.uml.org SWI041 - Analýza 35
Definice architektury systému
Architektura SWI041 - Analýza 37
První pedstava o rozmíst stní v UML SWI041 - Analýza 38
Druhá pedstava o rozmíst stní v UML SWI041 - Analýza 39
Funkní model
Základní princip scénáe SWI041 - Analýza 41
Zvolíme me-li konkrétn tní metodu SWI041 - Analýza 42
Konstrukce a destrukce SWI041 - Analýza 43
Reakce a návratovn vratové hodnoty SWI041 - Analýza 44
Hrubý scéná pro erpání SWI041 - Analýza 45
Zákazník k se autentizuje SWI041 - Analýza 46
Scéná pro pivolání SWI041 - Analýza 47
Scéná pro pejímku SWI041 - Analýza 48
Scéná pro dodávku SWI041 - Analýza 49
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) SWI041 - Analýza 50
Popis pro prázdná plošina 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 SWI041 - Analýza 51
Popis pro zadej 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 SWI041 - Analýza 52
Popis pro barel k zaazen azení 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 SWI041 - Analýza 53
Popis pro konec pejímky Operation: konec pejímky Description: operátor informuje systém, že již byly vyloženy všechny barely Reads: zadaný_dodací_list Changes: plošina, 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ý SWI041 - Analýza 54
Popis pro konec pejímky (pokra.) 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ý SWI041 - Analýza 55
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 SWI041 - Analýza 56
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). SWI041 - Analýza 57
Matice CRUD pro ECO sklad Prázdná plošina Zadej dodací list Zaa barel Konec pejímky Dodávka Zahájení práce systému ECO sklad Ukonení práce systému ECO sklad Plošina U U U C D Sklad U U C,Get D,Save Monitor U,Print U,Print C D Barel C Dodací list C R,D Píkaz C,Print C,Print SWI041 - Analýza 58
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. SWI041 - Analýza 59
Dynamický model
Stavové diagramy 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) SWI041 - Analýza 61
Životní cyklus skuteného barelu idi vykládá barel na plošinu / zarad_barel Je na plošin neoznaen Zaa barel / ID Je na plošin oznaen Píkaz / Skladník odváží barel do skladu Je ve skladu Je na plošin oznaen Píkaz / Skladník odváží barel na plošinu idi nakládá barel z plošiny / smazat ID SWI041 - Analýza 62
Životní cyklus entity barel zarad_barel / ID Je v kontejneru Plošina oznaen konec_prejimky / prikaz pro uskladneni Je v kontejneru Sklad dodavka / píkaz pro vyskladneni SWI041 - Analýza 63
Popis ídicích 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. SWI041 - Analýza 64
P1 P2 a x b y ídicí proces /a stídav spouštíme P1 a P2 y/a Pracuje P1 Pracuje P2 x/b SWI041 - Analýza 65
Ž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 SWI041 - Analýza 66
Životní cyklus jako regulárn 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 SWI041 - Analýza 67
Ž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ý? =... SWI041 - Analýza 68
Životní cyklus entity barel Lifecycle BAREL: zarad_barel. #ID barelu. #píkaz pro uskladnní. dodávka. #píkaz pro vyskladnní SWI041 - Analýza 69
Kontroly analytických model
Výstup analýzy 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. Kontrola výstup analýzy: kontrola jednotlivých model (pohled) kontrola vzájemné konzistence model SWI041 - Analýza 71
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í? SWI041 - Analýza 72
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? SWI041 - Analýza 73
Jsou zaneseny všechny v 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 SWI041 - Analýza 74
Datový model pro ECO-sklad SWI041 - Analýza 75
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). SWI041 - Analýza 76
Jsou zanesena všechna v 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) SWI041 - Analýza 77
Vyvážen 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) SWI041 - Analýza 78
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? SWI041 - Analýza 79
Vyvážen 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) SWI041 - Analýza 80
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? SWI041 - Analýza 81
The End