SWI041: Návrh Z analytického konceptuálního modelu, kde je popsáno CO, musíme navrhnout JAK se to udlá
Nejprve trochu kontroly Stav projekt
Kroky návrhun návrh architektury systému návrh uživatelského vzhledu návrh komponent návrh komunikace mezi komponentami návrh zpsobu integrace komponent a testování celku SWI041 - Návrh 3
Základní technologická rozhodnutí ve fázi f návrhun architektura systému datové zdroje, datové pamti, pístupové mechanismy k nim distribuce programových modul, komunikaní mechanismy typy a formy výstup uživatelské rozhraní vývojové prostedí SWI041 - Návrh 4
Výstupní dokumenty návrhun Architektura systému (HW,SW) Popis implementace dat (logický datový model) Popis komponent (modul) Projektová dokumentace návrhu SWI041 - Návrh 5
Píklad návrhu architektury SWI041 - Návrh 6
SWI041: Návrh (datový model) Z analytického konceptuálního datového modelu musíme navrhnout model logický
Konceptuální datový model specifikuje Typy dat (které entity, tídy, ) Vztahy mezi nimi Další logická omezení (integrity constraints) Pozn: Model tíd popisuje i operace SWI041 - Návrh 8
Píklad: Diagram tíd t d pro personáln lní agendu SWI041 - Návrh 9
Integritní omezení jsou souást stí specifikace Integritní omezení zajišují, aby popisovaná data (data uložená v databázi) byla pokud možno korektní a úplná. V UML mžeme pro specifikaci integritních omezení použít jazyk OCL (Object Constraint Language). SWI041 - Návrh 10
Návrh reprezentace dat Pro každou datovou pam (úložišt) musíme navrhnout zpsob reprezentace - mže to být systém ovládání soubor, systém ízení báze dat (relaní, objektové, objektov-relaní), speciální datový stroj (SW, SW+HW). Následuje pevod konceptuálního modelu do logického. Souástí pevodu je i návrh zajištní integrity dat Návrh zajištní konzistence dat, zálohování, archivace apod. SWI041 - Návrh 11
Návrh reprezentace dat pomocí relaního databázov zového systému Vstup: konceptuální datový model (diagram tíd + popis integritních omezení) Výstup: logický relaní datový model (SQL- 1999), vetn návrhu realizace integritních omezení Pozn.: Výstupem je obecné SQL, pi skutené implementaci návrhu musí být ješt výstup pizpsoben konkrétnímu stroji SWI041 - Návrh 12
Postup návrhun Úprava (normalizace) konceptuálního modelu Návrh reprezentace typ (entit) Návrh reprezentace vztah Návrh reprezentace integritních omezení SWI041 - Návrh 13
Úprava (normalizace) konceptuáln lního modelu Vylouení multihodnotových a násobných atribut Vylouení funkních závislostí (odstranní redundance dat) pevod modelu do 3-NF (píp. 4-té, i 5-té normální formy) Náhrada nebinárních vztah binárními Náhrada vztah typu M:N pidruženými tídami SWI041 - Návrh 14
Normalizovaný datový model SWI041 - Návrh 15
Návrh reprezentace Pro každou jednoduchou entitu (typ) navrhneme tabulku, jméno tabulky bude množnéíslo jména typu. Návrh jmen sloupc pro reprezentaci atribut a odpovídajících domén. Doplníme informace o volitelnosti formátu sloupc. Z nejastji používané unikátní identifikace vytvoíme primární klí, nebo zavedeme nový identifikaní sloupec (OID). SWI041 - Návrh 16
Návrh reprezentace (pokr( pokr.) Pro N-konce vztah pidáme k tabulce jednoznané identifikace z tabulky na 1-konci (volitelné vztahy indikují nepovinnost. Souasn pidáme odpovídající cizí klíe. Pro každý vztah typu nadtyp/podtyp navrhneme reprezentaci (spolená tabulka s rozlišovací položkou, samostatné tabulky). Pro každý vztah typu celek/ást navrhneme reprezentaci (spolená tabulka s rozlišovací položkou, samostatné tabulky). SWI041 - Návrh 17
Návrh reprezentace (pokr( pokr.) Pro každý exkluzivní vztah (exkluzivní podtypy) rozhodneme, zda se máešit spolenou doménou, nebo explicitními cizími klíi. Doplníme sloupce odpovídajícíasto používaným odvozeným atributm a navrhneme mechanizmus jejich údržby. Navrhneme indexy pro asto využívané unikátní kombinace, které nejsou realizovány jako primární klíe. Indexy rovnž vytvoíme pro cizí klíe. SWI041 - Návrh 18
Návrh reprezentace (pokr( pokr.) Pidáme definice pohled (zejména pro nadtypy, podtypy, celky a ásti). Pro generované primární klíe pidáme definice sekvencí pro jejich generování (mže být implementan závislé). Navrhneme ešení integritních omezení (použijeme deklarativní relaní integritní omezení, nebo navrhneme triggery ). SWI041 - Návrh 19
Jména a domény EMP 0..1 last_nam e : VARCHAR2 first_nam e : VARCHAR2 job : VARCHAR2 salary : NUMBER bonus : NUMBER employ 0..* 1..1 DEPT name : VARCHAR2 loca ti on : VARCHAR2 supervisor 0..* The salary of the supervisor should be grater than the salary of an employee SWI041 - Návrh 20
Primární identifikace EMP 0..* id : ROWID last_name : VARCHAR2 first_name : VARCHAR2 job : VARCHAR2 salary : NUMBER bonus : NUMBER employ 0..* 1..1 DEPT id : ROWID name : VARCHAR2 location : VARCHAR2 supervisor 0..1 The salary of the supervisor should be grater than the salary of an employee SWI041 - Návrh 21
Vytvoíme tabulky 0..* supervisor <<Relational Table>> EMP id : ROWID last_name : VARCHAR2 first_name : VARCHAR2 job : VARCHAR2 s alary : NUMBER bonus : NUMBER 0..1 employ 0..* 1..1 <<Relational Table>> DEPT id : ROWID name : VARCHAR2 location : VARCHAR2 The salary of the supervisor should be grater than the salary of an employee SWI041 - Návrh 22
Cizí klí pro supervisora <<Relational Table>> EMP <<PK>> id : ROWID last_name : VARCHAR2 first_name : VARCHAR2 job : VARCHAR2 salary : NUMBER bonus : NUMBER <<FK>> supervisor : ROWID The salary of the supervisor should be grater than the salary of an employee employ 0..* 1..1 <<Relational Table>> DEPT <<PK>> id : ROWID name : VARCHAR2 location : VARCHAR2 <<FK>> EMP.supervisor references <<PK>> EMP.id SWI041 - Návrh 23
Cizí klí pro zamstnance <<Relational Table>> EMP <<PK>> id : ROWID last_name : VARCHAR2 first_name : VARCHAR2 job : VARCHAR2 salary : NUMBER bonus : NUMBER <<FK>> supervisor : ROWID <<FK>> dept : ROWID The salary of the supervisor should be grater than the salary of an employee <<Relatio nal Table>> DEPT <<PK>> id : ROWID name : VARCHAR2 location : VARCHAR2 optional <<FK>> EMP.supervisor references <<PK>> EMP.id mandatory <<FK>> EMP.dept references <<PK>> DEPT.i d SWI041 - Návrh 24
Návrh reprezentace integritních omezení Zkusíme vytvoit deklarativní omezení. Pokud by nefungovala, musíme navrhnout triggery. SWI041 - Návrh 25
Specifikace v OCL <<Relational Table>> EMP <<PK>> id : ROWID last_nam e : VARC HAR2 first_nam e : VARCHAR2 job : VARCHAR2 salary : NUMBER bonus : NUMBER <<FK>> supervi sor : ROWID <<FK>> dept : ROWID <<Relational Table>> DEPT <<PK>> id : ROWID name : VARCHAR2 location : VARCHAR2 optional <<FK>> EMP.supervisor references <<PK>> EMP.id mandatory <<FK>> EMP.dept references <<PK>> DEPT.id <<constraint>> context EMP inv C1: forall (EMP e1,e2 e1.id = e2.supervisor implies e1.salary > e2.salary) -- The salary of the supervisor should be grater than the salary of an employee} SWI041 - Návrh 26
Konverze integritních omezení Píklad: context EMP inv min_age: self.age >= 18 alter table EMP add constraint min_age check (self.age >= 18); SWI041 - Návrh 27
Píklad: Personáln lní agenda context EMP inv C1: forall (EMP e1,e2 e1.id = e2.supervisor implies e1.salary > e2.salary) alter table EMP add constraint C1 check (not exists (select X from EMP e1, EMP e2 where e1.id = e2.supervisor e1.salary)); and e2.salary >= SWI041 - Návrh 28
Odvozené SQL I. (table DEPT) create table DEPT ( id ROWID primary key, name VARCHAR2(20), location VARCHAR2(20) ); SWI041 - Návrh 29
Odvozené SQL II. (table EMP) create table EMP ( id ROWID primary key, last_name VARCHAR2(35), first_name VARCHAR2(35), job VARCHAR2(10), salary NUMBER(9,2), bonus NUMBER(9,2), supervisor ROWID references EMP(id), dept ROWID not null references DEPT(id) ); SWI041 - Návrh 30
Odvozené SQL III. (ostatn( ostatní) alter table EMP add constraint C1 check (not exists (select X from EMP e1, EMP e2 where e1.id = e2.supervisor and e2.salary > e1.salary)); Ale problém nkde to nefunguje!!! Zkusíme trigger!!! SWI041 - Návrh 31
Píklad (zjednodušeno) create or replace trigger C1 before insert or update of salary on EMP e1 declare cnt INTEGER; begin select count(*) into cnt from EMP e2 where e1.id = e2.supervisor and e2.salary > e1.salary; if cnt = 0 then e1.salary := :new.salary end if; end; SWI041 - Návrh 32
Píklad jinéešen ení create or replace view EMP_C1 as select * from EMP e1 join EMP e2 on (e1.id = e2.supervisor) where e2.salary >= e1.salary; with check option; Uživatelm zpístupníme pouze EMP_C1 SWI041 - Návrh 33
SWI041: Návrh (funkní model) Ml by odpovdt na otázku JAK, tj. jaké moduly, tídy, komponenty Programování ve velkém Dekompozice
Návrh - funkní model Funkní model musíme rozložit na ásti zvládnutelné technikami programování (v malém) Takovéásti se obvykle nazývají moduly, komponenty, Z analytického funkního modelu, kde je popsáno CO (jaké služby), musíme navrhnout JAK se to udlá (který modul bude službu realizovat a jakými dalšími moduly bude muset spolupracovat) SWI041 - Návrh 35
Techniky návrhu n modul Objektový návrh (nap. Coleman) z analytických model vytvoíme popisy tíd Návrh na základ datových tok (nap. Page- Jones) z analytických diagram datových tok vytvoíme diagramy struktury Návrh na základ datových struktur (nap. Jackson) z analytických popis datových struktur vytvoíme popisy program Návrh fukní dekompozicí z analytických popis funkcí vytvoíme pímou funkní dekompozicí dostaten podrobné popisy funkcí SWI041 - Návrh 36
Píklad: Návrh N dle Fusion
Model životního cyklu (Fusion) ANALÝZA Objektový model Požadavky Operaní model Model interakce Model život.cyklu D a t o v ý NÁVRH Graf viditelnosti Popis tíd Model ddinosti s l o v n í k IMPLEMENTACE Program SWI041 - Návrh 38
Vstupní dokumenty pro návrh n ve Fusion Datový slovník Objektový model (ER-model) Operaní model (kontext, model jednání, scénáe, popisy operací) Model životního cyklu SWI041 - Návrh 39
Výstupní dokumenty návrhu n ve Fusion Datový slovník Architektura systému (HW,SW) Popis komponent jako popis tíd Model životního cyklu SWI041 - Návrh 40
Postup dle Fusion datový slovník objektový model Zaínáme analýzou funkní model - popisy operací model životního cyklu model interakce - scénáe, diag.kolaborace graf viditelnosti popis tíd graf ddinosti program Zde koní analýza a zaíná návrh Zde koní návrh a zaíná implementace SWI041 - Návrh 41
Princip návrhu ve Fusion Objektový model Model interakce objekt Graf viditelnosti Datový slovník objektové atributy datové atributy metody Popis tíd isa class A isa S attribute a : int attribute b : shared B method f(par) endclass Graf ddinosti SWI041 - Návrh 42
Postup návrhu ve Fusion Pro každou operaci funkního modelu nakresli diagram interakce (vetn metod vzniklých pi návrhu) Pro každou tídu datového modelu nakresli graf viditelnosti podle diagram interakce Pro každou tídu vytvo popis tídy Dopl návrh grafy ddinosti SWI041 - Návrh 43
P.. ECO sklad SWI041 - Návrh 44
SWI041 - Návrh 45
Scéná pro pejímku v UML SWI041 - Návrh 46
Postup návrhu n ve Fusion Pro každou operaci funkního modelu nakresli diagram interakce (vetn metod vzniklých pi návrhu) Pro každou tídu datového modelu nakresli graf viditelnosti podle diagram interakce Pro každou tídu vytvo popis tídy Dopl návrh grafy ddinosti SWI041 - Návrh 47
Diagram Dokumentace návrhu pro ECO interakce pro konec pejímky konec_prejimky() plosina: Plosina 1. Výbr zodpovdného objektu SWI041 - Návrh 48
Diagram Dokumentace návrhu pro ECO interakce pro konec pejímky konec_prejimky() plosina: Plosina d: dodaci_list 2. Výbr kooperujícího objektu SWI041 - Návrh 49
Diagram Dokumentace návrhu pro ECO interakce pro konec pejímky konec_prejimky() plosina: Plosina chybi(m: Dodaci_list) d: Dodaci_list 3. Výbr metody kooperujícího objektu SWI041 - Návrh 50
Diagram Dokumentace návrhu pro ECO interakce pro konec pejímky konec_prejimky() plosina: Plosina chybi = chybi(m: Dodaci_list): Dodaci_list d: Dodaci_list 4. Bude nco vracet? SWI041 - Návrh 51
Diagram Dokumentace návrhu pro ECO interakce pro konec pejímky konec_prejimky() (1.1) plosina: Plosina chybi = chybi(m: Dodaci_list): Dodaci_list d: Dodaci_list 5. Stanovení poadí SWI041 - Návrh 52
Popis pro chybi Operace chybi nepochází z analýzy, vznikla pi návrhu, ale je nutno ji rovnž popsat (aby pak programátor vdl, co má dlat) SWI041 - Návrh 53
Popis pro chybi Dokumentace návrhu pro ECO Operation: chybi Description: zjistí rozdíly v pejímce co chybí Reads: supplied m: dodaci_list, zadany_dodaci_list: dodaci_list Changes: new chybi: dodaci_list Sends: Assumes: Results: porovná zadaný dodací list m s dodacím listem zadany_dodaci_list vytvoí objekt chybi: dodací list, obsahující barely které chybí SWI041 - Návrh 54
Výsledek SWI041 - Návrh 55
Nebo jako scéná SWI041 - Návrh 56
Postup návrhu n ve Fusion Pro každou operaci funkního modelu nakresli diagram interakce (vetn metod vzniklých pi návrhu) Pro každou tídu datového modelu nakresli graf viditelnosti podle diagram interakce Pro každou tídu vytvo popis tídy Dopl návrh grafy ddinosti SWI041 - Návrh 57
Grafy viditelnosti Popisují nutné vazby mezi tídami, které souvisí s potebou viditelnosti (mám-li volat službu objektu jiné tídy, musím jej vidt) Definují potebnou referenní strukturu (objektové atributy tíd) SWI041 - Návrh 58
Notace graf viditelnosti Plosina Dodaci_list vidí (souástí reprezentace bude muset být reference na objekt) SWI041 - Návrh 59
Viditelnost v UML SWI041 - Návrh 60
Postup návrhu ve Fusion Pro každou operaci funkního modelu nakresli diagram interakce (vetn metod vzniklých pi návrhu) Pro každou tídu datového modelu nakresli graf viditelnosti podle diagram interakce Pro každou tídu vytvo popis tídy Dopl návrh grafy ddinosti SWI041 - Návrh 61
Popis tíd t d ve Fusion class <jméno> [ isa <jméno> ] // pro každý atribut [attribute][constant]<jméno>:[vazba]<typ> // pro každou metodu [method]<jméno>(<argumenty>)[:<typ>] endclass vazba = [ref (exclusive shared)[bound] argumenty = [<jméno>:<typ>](<jméno>:<typ>)* typ = [col]<jméno> SWI041 - Návrh 62
Popis tídy Plosina Dokumentace návrhu pro ECO class Plosina attribute sklady: ref shared col Sklad attribute Operator: share bound Monitor attribute zadany_dodaci_list: ref shared Dodaci_list method konec_prejimky() method prazdna_plosina() method cti_obsah(): col Barel endclass SWI041 - Návrh 63
Popis tídy Sklad Dokumentace návrhu pro ECO class Sklad isa Budova attribute kapacita:int attribute sousedi: exclusive bound col Sklad attribute barely: exclusive bound col Barel method je_místo?(b: Barel): Bool method cti_cislo(): int method pridej(b: Barel) method kolik?(t: TypChem): int endclass SWI041 - Návrh 64
SWI041 - Návrh 65
Postup návrhu n ve Fusion Pro každou operaci funkního modelu nakresli diagram interakce (vetn metod vzniklých pi návrhu) Pro každou tídu datového modelu nakresli graf viditelnosti podle diagram interakce Pro každou tídu vytvo popis tídy Dopl návrh grafy ddinosti SWI041 - Návrh 66
Dva zdroje ddid dinosti Spolené a speciální vlastnosti dat odhalené pi analýze Vlastnosti zddné z použitých knihoven SWI041 - Návrh 67
Implementace tídy Plošina Dokumentace implementace ECO class Plosina { protected: Set<Sklad &> sklady; // ref shared col Monitor *Operator; // share bound zadany_dodaci_list &dodaci_list; // ref shared public: Plosina(); ~Plosina(); void konec_prejimky(); void prazdna_plosina(); List<Barel> &cti_obsah(); endclass SWI041 - Návrh 68
Návrh funkní dekompozicí Návrh fukní dekompozicí z analytických popis funkcí vytvoíme pímou funkní dekompozicí dostaten podrobné popisy funkcí, generalizací navrhneme potebné komponenty SWI041 - Návrh 69
Diagramy datových tok Data Flow Diagrams (DFD) Hierarchická sada diagram, jejíž vrchol tvoí diagram kontextu a jejíž listy pedstavují elementární funkce, popsané již jiným zpsobem, než dekompozicí (pomocí tzv. minispecifikací popis operací, metod) Dokumentace ešení technikou divide at impera SWI041 - Návrh 70
Notace DFD (Yourdon( Yourdon) Aktér datový tok proces (funkce) pam SWI041 - Návrh 71
Kontext ECO Dokumentace analýzy pro ECO OPERATOR nelze dodat dodavka prejimka rozdily v prejimce dodavka = { typ chemikalie } ECO sklad prikaz pro skladnika SKLADNIK dotaz na stav stav je bezpecny? bezpecnost MANAZER SWI041 - Návrh 72
Postup návrhu n dle Yourdona (MSA - Modern Structured Analysis) Pro každou událost zave funkci Dopl vstupní a výstupní toky Pidej pamti pro spolupráci Dej vše dohromady a technikou zprostedka do kraj vytvo hierarchii DFD abstrakcí dojdi až ke kontextovému diagramu a dekompozicí k elementárním funkcím SWI041 - Návrh 73
Návrh na základz klad diagram datových tok (DFD) Z analytického popisu funkního modelu vytváíme strukturované návrhové modely - nap. Page-Jones: Practical Guide to Structured Systems Design. Co to jsou diagramy datových tok? Co to jsou diagramy struktury? Jak se diagramy datových tok pevedou na diagramy struktury? SWI041 - Návrh 74
Diagramy struktury Prvky: proces (funkce) vztah typu volá data jako argumenty data jako produkt volání SWI041 - Návrh 75
Pevod DFD na DS Transakní analýza (výbr transakcí v sad DFD) Transformaní analýza (výbr šéfa, pekreslení do DS) Pidání transakního monitoru (nástroj pro výbr transakce) SWI041 - Návrh 76
Návrh na základz klad datových struktur Návrh na základ datových struktur (nap. Jackson) z analytických popis datových struktur vytvoíme popisy program Vstupní a výstupní struktury Prvky: element sekvence selekce iterace SWI041 - Návrh 77
Píklad: vstup - výstup SOUBOR SESTAVA RADEK * ZNAK * * ZNAK LF SWI041 - Návrh 78
Odvozená struktura programu SOUBOR- SESTAVA RADEK * * ZNAK LF SWI041 - Návrh 79
Výstupní dokumenty návrhun Architektura systému (HW,SW) Popis implementace dat (logický datový model) Popis komponent (modul) Projektová dokumentace návrhu SWI041 - Návrh 80
The End