Kroky návrhu •
Návrh
• • •
Z analytického konceptuálního modelu, kde je popsáno CO, musíme navrhnout JAK se to ud lá
•
návrh architektury systému návrh uživatelského vzhledu návrh komponent návrh komunikace mezi komponentami návrh zp sobu integrace komponent a testování celku
1
2
Základní technologická rozhodnutí ve fázi návrhu
Vstupy pro návrh Analytický model chování systému M že se lišit dle použité metodiky, proto je zapot ebí v úvodu dokumentace definovat použitou metodiku a zvolit odpovídající sadu model , která zahrnuje: Konceptuální datový model - entity (typy objekt , t ídy), atributy, metody, vztahy, integritní omezení Konceptuální procesní model – model jednání, scéná e, popisy funkcí (minispecifikace), diagramy aktivit, funk ní hierarchie (DFD) Konceptuální dynamický model – diagramy aktivit, stavy systému, události a reakce na n
architektura systému datové zdroje, p ístupové mechanismy k nim distribuce programových modul , komunika ní mechanismy typy a formy výstup uživatelské rozhraní vývojové prost edí 3
Výstupní dokumenty návrhu
4
P íklad návrhu architektury
Architektura systému (HW,SW) Popis implementace dat (logický datový model) Popis komponent (modul ) Projektová dokumentace návrhu
5
6
Jiný p íklad: Elektronická Elektronická pokladna
Elektronická Elektronická pokladna (komponenty)
7
Pokladna (architektura)
8
Návrh reprezentace dat Konceptuální datový model
UML/OCL (ER-model)
Návrh reprezentace dat Logický model reprezentace dat (nap . rela ní model) Nap . SQL-99 9
Konceptuální datový model specifikuje
10
P íklad: 1.verze dat.modelu
Typy dat (které entity, t ídy, …) Vztahy mezi nimi Další logická omezení (integrity constraints) Pozn: Model t íd popisuje i operace, ale ty se asto k modelu p ipojí až v návrhu
11
12
Integritn Integritní omezení omezení jsou sou ástí stí specifikace
P íklad „Plat vedoucího musí být vyšší, než plat jeho pod ízených“. OCL:
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).
context ZAMESTNANEC inv C1 : forAll(ZAMESTNANEC e1,e2 | e1 = e2.vedouci implies e1.plat > e2.plat)
Ekvivalentní logická formule: (C1) ∀e1,e2 ∈ ZAMESTNANEC : e1 = e2.vedouci e1.plat > e2.plat
13
14
Návrh reprezentace dat
P íklad: 2.verze dat.modelu
Pro každou datovou pam (úložišt ) musíme navrhnout zp sob reprezentace - m že to být systém ovládání soubor , systém ízení báze dat (rela ní, objektové, objektov -rela ní), speciální datový stroj (SW, SW+HW). Následuje p evod konceptuálního modelu do logického. Sou ástí p evodu je i návrh zajišt ní integrity dat Návrh zajišt ní konzistence dat, zálohování, archivace apod. 15
Návrh reprezentace dat pomocí pomocí rela ního databá databázové zového systé systému
16
Postup návrhu Úprava (normalizace) konceptuálního modelu Návrh reprezentace typ (entit) Návrh reprezentace vztah Návrh reprezentace integritních omezení
Vstup: konceptuální datový model (diagram t íd + popis integritních omezení) Výstup: logický rela ní datový model (SQL-1999), v etn návrhu realizace integritních omezení Pozn.: Výstupem je obecné SQL, p i skute né implementaci návrhu musí být ješt výstup p izp soben konkrétnímu stroji 17
18
Úprava (normalizace) konceptuálního modelu
Normalizovaný datový model
Vylou ení multihodnotových a násobných atribut Vylou ení funk ních závislostí (odstran ní redundance dat) – p evod 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 p idruženými t ídami 19
Návrh reprezentace
20
Návrh reprezentace (pokr.) Pro N-konce vztah p idáme k tabulce jednozna né identifikace z tabulky na 1-konci (volitelné vztahy indikují nepovinnost. Sou asn p idáme odpovídající cizí klí e. Pro každý vztah typu nadtyp/podtyp navrhneme reprezentaci (spole ná tabulka s rozlišovací položkou, samostatné tabulky). Pro každý vztah typu celek/ ást navrhneme reprezentaci (spole ná tabulka s rozlišovací položkou, samostatné tabulky).
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 nej ast ji používané unikátní identifikace vytvo íme primární klí , nebo zavedeme nový identifika ní sloupec (OID).
21
Návrh reprezentace (pokr.)
22
Návrh reprezentace (pokr.)
Pro každý exkluzivní vztah (exkluzivní podtypy) rozhodneme, zda se má ešit spole nou doménou, nebo explicitními cizími klí i. Doplníme sloupce odpovídající asto používaným odvozeným atribut m 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.
P idáme definice pohled (zejména pro nadtypy, podtypy, celky a ásti). Pro generované primární klí e p idáme definice sekvencí pro jejich generování (m že být implementa n závislé). Navrhneme ešení integritních omezení (použijeme deklarativní rela ní integritní omezení, nebo navrhneme „triggery“).
23
24
Konceptuální model
Jména a domény
Konceptuální model dat firmy
Zamestnanec (from Business Object Model)
prijmeni 0..1 : VARCHAR2 jmeno : VARCHAR2 funkce : VARCHAR2 plat : NUMBER odmena : NUMBER
Zamestnanec prijmeni jmeno funkce plat odmena
+ma
Oddeleni
+je zarazen na
0..n
nazev misto
1
Oddeleni
+je zarazen na
0..n
(from Business Object Model)
nazev : VARCHAR2 misto : VARCHAR2
1
+je veden
+vede 0..n
+je veden
+vede
+ma
0..1
0..n
<
> -- Plat vedoucího nesmí být nižší, než plat pod ízených context Zamestnanec inv C1: forAll (Zamestnanec e1,e2 | e1.id = e2.vedouci implies e1.plat > e2.plat)
<> -- Plat vedoucího nesmí být nižší, než plat pod ízených context Zamestnanec inv C1: forAll (Zamestnanec e1,e2 ? e1.id = e2.vedouci implies e1.plat > e2.plat)
25
Primární identifikace
Vytvo íme tabulky <> -- Plat vedoucího nesmí být nižší, než plat pod ízených context Zamestnanci inv C1: forAll (Zamestnanci e1,e2 ? e1.id = e2.vedouci implies e1.plat > e2.plat)
Zamestnanec (from Business Object Model)
ID : ROWID prijmeni : VARCHAR2 jmeno : VARCHAR2 funkce : VARCHAR2 plat : NUMBER odmena : NUMBER
Oddeleni +ma
(from Business Object Model)
+je zarazen na
0..n
26
ID : ROWID nazev : VARCHAR2 misto : VARCHAR2
1
+vede 0..n
+ma
0..n
+je zarazen na 1
+vede
0..n
+je veden 0..1
Zamestnanci
Oddeleni
(from Business Object Model)
ID : ROWID prijmeni : VARCHAR2 jmeno : VARCHAR2 funkce : VARCHAR2 plat : NUMBER odmena : NUMBER
<> -- Plat vedoucího nesmí být nižší, než plat pod ízených context Zamestnanec inv C1: forAll (Zamestnanec e1,e2 | implies e1.plat > e2.plat)
(from Business Object Model)
ID : ROWID nazev : VARCHAR2 misto : VARCHAR2 +je veden 0..1
27
Cizí klí pro “vedoucího”
Cizí klí pro “zam stnance” <> -- Plat vedoucího nesmí být nižší, než plat pod ízených context Zamestnanci inv C1: forAll (Zamestnanci e1,e2 | e1.id = e2.vedouci implies e1.plat > e2.plat)
<> -- Plat vedoucího nesmí být nižší, než plat pod ízených context Zamestnanci inv C1: forAll (Zamestnanci e1,e2 | e1.id = e2.vedouci implies e1.plat > e2.plat)
+ma
0..n
28
+je zarazen na 1
Zamestnanci (from Business Object Model)
ID : ROWID prijmeni : VARCHAR2 jmeno : VARCHAR2 funkce : VARCHAR2 plat : NUMBER odmena : NUMBER <> vedouci : ROWID
Oddeleni (from Business Object Model)
<> vedouci odkazuje na ID vedouciho (m že být NULL)
ID : ROWID nazev : VARCHAR2 misto : VARCHAR2
<> oddeleni odkazuje na ID oddeleni (NOT NULL)
<> vedouci odkazuje na ID vedouciho (m že být NULL)
29
Zamestnanec (from Business Object Model)
<> ID : ROWID prijmeni : VARCHAR2 jmeno : VARCHAR2 funkce : VARCHAR2 plat : NUMBER odmena : NUMBER <> vedouci : ROWID <> oddeleni : ROWID
Oddeleni (from Business Object Model)
<> ID : ROWID nazev : VARCHAR2 misto : VARCHAR2
30
Návrh reprezentace integritních omezení
P íklad: “forAll”
Zkusíme vytvo it deklarativní omezení. Pokud by nefungovala, musíme navrhnout „triggery“.
context Zamestnanci inv C1: forAll (Zamestnanci e1,e2 e1.id = e2.vedouci implies e1.plat > e2.plat) alter table Zamestnanci add constraint C1 check (not exists (select ‘X’ from Zamestnanci e1, Zamestnanci e2 where e1.id = e2.vedouci and e2.plat >= e1.plat)); 31
Odvozené SQL I. (tabulka Oddeleni)
32
Odvozené SQL II. (table EMP) create table Zamestnanci ( ID ROWID primary key, prijmeni VARCHAR2(35), jmeno VARCHAR2(35), funkce VARCHAR2(10), plat NUMBER(9,2), odmena NUMBER(9,2), vedouci ROWID references EMP(id), oddeleni ROWID not null references Oddeleni(ID) );
create table Oddeleni ( ID ROWID primary key, nazev VARCHAR2(20), misto VARCHAR2(20) );
33
34
P íklad (zjednodušeno)
Odvozené SQL III. (ostatní) alter table Zamestnanci add constraint C1 check (not exists (select ‘X’ from Zamestnanci e1, Zamestnanci e2 where e1.ID = e2.vedouci and e2.plat > e1.plat));
create or replace trigger C1 before insert or update of plat on Zamestnanci e1 declare cnt INTEGER; begin select count(*) into cnt from Zamestnanci e2 where e1.ID = e2.vedouci and e2.plat >= e1.plat; if cnt = 0 then e1.plat := :new.plat end if; end;
Ale problé problém – n kde to nefunguje !!! Zkusí Zkusíme trigger !!! 35
36
Pokladna (analytický model)
Pokladna (datový model po ná návrhu)
37
Pokladna (permanentní (permanentní data)
38
Pokladna (permanentní (permanentní data)
39
40
P . ECO sklad
Návrh komponent
SI3 © Karel Richta
41
42
Scéná pro “p ejímku” v UML
43
44
Model životního cyklu (Fusion) ANALÝZA
Požadavky
Objektový model
Opera ní model
P íklad: Návrh dle Fusion
Model život.cyklu
Model interakce
s l o v n í k
Graf viditelnosti
NÁVRH
D a t o v ý
Popis t íd Model d di nosti Program
IMPLEMENTACE 45
46
Princip návrhu ve Fusion
Postup dle Fusion
Objektový model
datový slovník objektový model funk ní model - schémata operací model životního cyklu model interakce - scéná e, diagramy graf viditelnosti popis t íd graf d di nosti program
Model interakce objekt datové atributy
Graf viditelnosti
objektové atributy
Datový slovník 47
metody
isa
Popis t íd class A isa S attribute a : int attribute b : shared B … method f(par) … endclass
Graf d di nosti
48
Postup návrhu ve Fusion
Postup návrhu dle Fusion Pro každou operaci funk ního modelu nakresli diagram spolupráce (v etn metod vzniklých p i návrhu) Pro každou t ídu datového modelu nakresli graf viditelnosti podle diagram spolupráce Pro každou t ídu vytvo popis t ídy Dopl návrh o d di nost
Pro každou operaci funk ního modelu nakresli diagram kolaborace (v etn metod vzniklých p i návrhu) Pro každou t ídu datového modelu nakresli graf viditelnosti podle diagram kolaborace Pro každou t ídu vytvo popis t ídy Dopl návrh grafy d di nosti 49
Diagram interakce pro “konec p ejí ejímky“ mky“
50
Diagram interakce pro “konec p ejí ejímky“ mky“
Dokumentace návrhu pro ECO
Dokumentace návrhu pro ECO konecPrejimky()
konecPrejimky() plosina: Plosina
plosina: Plosina
d: Dodaci_List
1. Výb r zodpov dného objektu
2. Výb r kooperujícího objektu 51
Diagram interakce pro “konec p ejí ejímky“ mky“
52
Diagram interakce pro “konec p ejí ejímky“ mky“
Dokumentace návrhu pro ECO
Dokumentace návrhu pro ECO
konecPrejimky()
konecPrejimky() plosina: Plosina
chybi(m: Dodaci_List)
plosina: Plosina chybi = chybi(m: Dodaci_List): Dodaci_List
d: Dodaci_List
3. Výb r metody kooperujícího objektu
d: Dodaci_List
4. Bude n co vracet? 53
54
Diagram interakce pro “konec p ejí ejímky“ mky“
Výsledek
Dokumentace návrhu pro ECO konecPrejimky() plosina: Plosina (1.1) chybi = chybi(m: Dodaci_List): Dodaci_list
d: Dodaci_List
5. Stanovení po adí volání 55
56
Pokladna (spoluprá (spolupráce p i inicializaci)
Nebo jako scéná
57
Pokladna (spoluprá (spolupráce p i tení tení kódu)
58
Pokladna (spoluprá (spolupráce p i ulož uložení ení)
59
60
Popis pro “chybí chybí”
Popis pro „chybí“
Dokumentace návrhu pro ECO Operation: chybi Description: zjistí, co chybí p i p ejímce 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í
Operace „chybí“ nepochází z analýzy, vznikla p i návrhu, ale je nutno ji rovn ž popsat (aby pak programátor v d l, co má d lat)
61
Postup návrhu ve Fusion
62
Grafy viditelnosti
Pro každou operaci funk ního modelu nakresli diagram spolupráce (v etn metod vzniklých p i návrhu) Pro každou t ídu datového modelu nakresli graf viditelnosti podle diagram spolupráce Pro každou t ídu vytvo popis t ídy Dopl návrh o d di nost
Popisují nutné vazby mezi t ídami, které souvisí s pot ebou viditelnosti (mám-li volat službu objektu jiné t ídy, musím jej vid t) Definují pot ebnou referen ní strukturu (objektové atributy t íd)
63
Notace graf viditelnosti
Plosina
64
Viditelnost v UML
Dodaci_list
„vidí“ (sou ástí reprezentace bude muset být reference na objekt)
65
66
Postup návrhu ve Fusion Pro každou operaci funk ního modelu nakresli diagram spolupráce (v etn metod vzniklých p i návrhu) Pro každou t ídu datového modelu nakresli graf viditelnosti podle diagram spolupráce Pro každou t ídu vytvo popis t ídy Dopl návrh o d di nost 67
68
Popis t ídy “Sklad” Sklad”
Popis t íd ve Fusion
Dokumentace návrhu pro ECO
class <jméno> [ isa <jméno> ] // pro každý atribut [attribute][constant]<jméno>:[vazba] … // pro každou metodu [method]<jméno>(<argumenty>)[:] … endclass
class Sklad isa Budova /* attribute sousedi: exclusive bound col Budova – dedi od Budovy */ attribute kapacita:int 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
vazba = [ref|(exclusive|shared)[bound] argumenty = [<jméno>:](<jméno>:)* typ = [col]<jméno>
69
Popis t ídy “Plosina” Plosina”
70
Implementace t ídy “Ploš Plošina” ina”
Dokumentace návrhu pro ECO class Plosina attribute sklady: ref shared col Sklad attribute Operator: share bound Monitor attribute dodaci_list: ref shared Dodaci_list method konec_prejimky() method prazdna_plosina() method cti_obsah(): col Barel … endclass
Dokumentace implementace ECO class Plosina { protected: Set<Sklad &> sklady; // ref shared col Monitor *Operator; // share bound Dodaci_list &dodaci_list; // ref shared public: Plosina(); ~Plosina(); void konec_prejimky(); void prazdna_plosina(); List &cti_obsah(); … endclass
71
72
Postup návrhu ve Fusion
Dva zdroje d di nosti
Pro každou operaci funk ního modelu nakresli diagram spolupráce (v etn metod vzniklých p i návrhu) Pro každou t ídu datového modelu nakresli graf viditelnosti podle diagram spolupráce Pro každou t ídu vytvo popis t ídy Dopl návrh o d di nost
Spole né a speciální vlastnosti dat odhalené p i analýze Vlastnosti zd d né z použitých knihoven
73
74
Co to je „Akcepta ní test“? Akcepta ní test p edstavuje podklad pro ov ení funk nosti ešení. Definice akcepta ního testu musí proto obsahovat následující náležitosti:
Akcepta ní test
1. 2. 3.
podmínky pro akcepta ní test dokumentaci pro akcepta ní test definici akcí pro akcepta ní test
75
76
P íklad projektu ECO-sklad
1. Podmí Podmínky pro akcepta ní test Popis prost edí, ve kterém bude akcepta ní test probíhat. Není-li v akcepta ním testu prost edí explicitn stanoveno, musí být možno akcepta ní test vykonat v rámci standardního prost edí na kated e po íta FEL. Popis všech vstupních dat, která budou v akcepta ním testu využívána. Pat í sem popis všech databází, konfigura ních soubor a jiných testovacích dat, která budou v akcepta ním testu využívána.
operátor
77
78
Podmí Podmínky pro akcepta ní test
Podmí .) Podmínky pro akcepta ní test (pokr (pokr.)
Podmínky akcepta ního testu pro ECO
Podmínky akcepta ního testu pro ECO
Produkt ECO bude realizován jako formulá ová aplikace pro MS-Windows, pracující s daty uloženými v databázi Oracle. Produkt bude vytvo en pomocí nástroj Oracle*Designer a Oracle*Developer - Forms. Akcepta ní test produktu ECO m že proto probíhat kdekoli, kde je p ístup z MS-Windows k serveru Oracle. Pro provedení akcepta ního testu je nutno mít právo p ihlásit se jako uživatel do MS-Windows. Dále je nutné mít p ístup k n jaké vhodné databázi Oracle jako uživatel, který m že instalovat data produktu.
-
-
P ed spušt ním produktu ECO je nutno vytvo it v databázi objekty aplikace a uložit do nich testovací data. Doporu ený postup je vytvo ení uživatele ECOuser, p id lit mu právo na vytvá ení objekt a pod tímto uživatelem spustit skript (crECO.sql), který vytvo í pot ebné objekty pro ECO a naplní je po áte ními testovacími daty. Po absolvování akcepta ního testu lze data z databáze odstranit zrušením uživatele ECOuser (s kaskádním odstran ním jeho objekt ).
79
80
Dokumentace akcepta ního testu
2. Dokumentace akcepta ního testu
Dokumentace akcepta ního testu pro ECO
Dokumentace pot ebná pro vytvo ení a instalaci produktu Uživatelská p íru ka Definice akcepta ního testu Protokol o provedení akcepta ního testu
Návod pro instalaci aplikace ECO (zahrnuje popis instalace datové základny a formulá aplikace) Uživatelská p íru ka produktu ECO Definice akcepta ního testu ECO Protokol o provedení akcepta ního testu
81
Dokumentace akcepta ního testu (pokr .) (pokr.)
82
Dokumentace akcepta ního testu (pokr .) (pokr.) Dokumentace akcepta ního testu pro ECO
Dokumentace akcepta ního testu pro ECO -
Instalace formulá -
-
pro ECO (NT)
-
Instala ní CD aplikace ECO obsahuje soubor setup.exe Pomocí „Start – Nastavení – Ovládací panely – P idat nebo ubrat programy“ nainstalujete formulá e aplikace ECO. V domovském adresá i aplikace se vytvo í i soubory pot ebné pro instalaci datové základny, v etn testovacích dat a „online“ uživatelské p íru ky. Stejným postupem se formulá e aplikace ECO „odinstalují“.
Instalace testovacích dat pro ECO -
83
P ed spušt ním produktu ECO je nutno vytvo it v databázi objekty aplikace a uložit do nich testovací data. Doporu ený postup je vytvo ení uživatele ECOuser, p id lit mu právo na vytvá ení objekt a pod tímto uživatelem spustit skript (crECO.sql), který vytvo í pot ebné objekty pro ECO a naplní je po áte ními testovacími daty. Po absolvování akcepta ního testu lze data z databáze odstranit zrušením uživatele ECOuser (s kaskádním odstran ním jeho objekt ). 84
P .: ECOECO-sklad (model jedná jednání)
3. Definice akcepta ního testu
Definice akcepta ního testu pro ECO
Vychází se z definice aktér - za íná se kontextem aplikace
85
86
Akce akcepta ního testu
Pro akceptaci ECO je t eba stanovit: stanovit:
Popis všech scéná , které budou tvo it akcepta ní test. Sada scéná musí zaru it dostate né ov ení funk nosti ešení. Pro scéná e, pro které je možno stanovit požadovanou reakci systému, je sou ástí akcepta ního testu i popis odpovídajících reakcí. Scéná e akcepta ního testu musí zahrnovat i základní chybové situace a jejich ešení. Vychází se z životního cyklu systému.
Definice akcepta ního testu pro ECO
Jak se vyzkouší za azení do role OPERÁTOR a MANAŽER Jak se ov í, že každá role má k dispozici požadovanou sadu služeb
87
Definice akcí akcí pro akcepta ní test
88
Životní cyklus ECO-skladu
Definice akcí akcepta ního testu pro ECO
Definice akcepta ního testu pro ECO
Akce 1: Instalace a spušt ní aplikace ECO možné reakce:
eká na p ihlášení uživatele
[ LOGOUT ]
entry: Zobrazení LOGIN
OK nepovedlo se
p ihlášení( jméno, heslo ) [ neregistrovaný uživatel ] / Chybná identifikace
Selekce role
Akce 2: Za azení do rolí OPERÁTOR a MANAŽER
[ konec ] [ registrovaný MANAŽER ] [ registrovaný OPERÁTOR ]
možné reakce:
Menu pro roli "MANAŽER" Menu pro roli "OPERÁTOR"
OK nepovedlo se povedlo se, ale nejsou k dispozici služby
entry: nabídka služeb
entry: Nabídka služeb
[ p ejímka ] zpracování p ejímky
89
[ dodávka ]
... podobn
zpracování dodávky
90
Pro akceptaci ECO je t eba stanovit: stanovit:
Scé Scéná e pro ECO (viz (viz model jedná jednání)
Jak se vyzkouší chování p i akci dotaz na stav skladu Jak se vyzkouší chování p i zjiš ování, zda je sklad bezpe ný Jak se vyzkouší chování p i akci p ejímka Jak se vyzkouší chování p i akci dodávka Jak se ov í, že aplikace umí navázat akce
Definice akcepta ního testu pro ECO
Operátor provádí p ejímku Operátor vybavuje dodávku Manažer se dotazuje na stav skladu Manažer zjiš uje, zda je sklad v bezpe ném stavu
91
92
Popis akce
Definice akcí akcí pro akcepta ní test (pokr.) pokr.)
Identifikace akce Popis: textový popis akce
Definice akcí akcepta ního testu pro ECO
Akce 3: Dotaz na stav skladu možné reakce:
Co p edpokládá Jaké reakce vyvolává (jaké zprávy posílá) Jaká data te, m ní nebo vytvá í Co zajiš uje (zaru uje)
OK povedlo se - ale chybný výsledek nepovedlo se
Akce 4: Dotaz na bezpe nost skladu Akce 5: P ejímka pro správnou dodávku Akce 6: P ejímka pro chybnou dodávku ... 93
Popis pro “Akci 3”
94
Vstupní data pro akci 3:
Akce: 3 Popis: Dotaz na stav skladu
Definice akcepta ního testu pro ECO ECO sklad musí být ve stavu S3 získaném importem souboru ECOS3.dmp p íkazem imp ECOuser/heslo@instance file=ECOS3.dmp
P edpokládá: Postup: spušt ní funkce dotaz na stav skladu musí vytvo it sestavu zobrazující aktuální stav skladu
95
96
Definice akcepta ního testu pro ECO
Definice akcepta ního testu pro ECO
Výstupní reakce na akci 3:
Scéná pro “p ejímku”
Pokud je sklad ve stavu S3 m la by akce 3 vytvo it následující sestavu: Stav ECO skladu
Obsah
100%
50%
0%
S1
S2
O3
Kapacita
80
50
0
A
40
0
B
15
30
0
C
0
44
0
0
Budova
97
Definice akcepta ního testu pro ECO
98
Životní cyklus “p ejímky”
Popis pro “Akci 5”
p ejímka = prázdná plošina. dodací list. (barel k za azení. #ID barelu)*. konec p ejímky. [#rozdíly v p ejímce]. #p íkaz pro skladníka . [#nelze uložit]
Akce: 5 Popis: P ejímka pro správnou dodávku P edpokládá ECO-sklad v korektním stavu Postup: spušt ní funkce p ejímka - musí vyvolat formulá pro zadání informací z dodacího listu zadávají se údaje o barelech - generují se ID barel (viz Vstupní data 5) ...
Musí se vyzkoušet: zda produkt nepovolí nesprávné po adí akcí p ípad správné p ejímky, …
Po ukon ení musí být ECO-sklad ve správném stavu (ov í se funkcí “dotaz na stav”) a bezpe ný (ov í se funkcí “je bezpe ný?”)
99
100
Definice akcepta ního testu pro ECO
Vstupní data pro akci 5:
Výstupní reakce na akci 5:
Definice akcepta ního testu pro ECO ECO sklad musí být ve stavu S5 získaném importem souboru ECOS5.dmp p íkazem imp ECOuser/heslo@instance file=ECOS5.dmp Dodací list: 5 barel typu A 4 barely typu B 2 barely typu C Postup vykládky: A, A, B, C, B, C, A, A, A, B, B 101
Pokud je sklad ve stavu S5 m la by akce 5 vyvolat následující: Nebyly detekovány žádné rozdíly mezi dodacím listem a skute nou dodávkou Nebyly detekovány žádné barely, které nelze do skladu umístit P íkaz pro skladníka obsahuje všechny barely dodávky a nikdy neumis uje barely typu B a C do stejné budovy, celkový po et barel v budov nep esáhne kapacitu budovy.
102
Obsah dokumentace projektu
Kontrolní body k úvodní studii
Úvodní studie Analytická dokumentace Dokumentace návrhu Projektová dokumentace
Kritérium Stránka projektu ešitelský tým Matice zodpov dnosti Deník projektu Plán práce týmu Deklarace zám ru Katalog požadavk Seznam aktér Seznam událostí Kontextový diagram Model jednání Implementa ní tým Plán realizace Požadavky na HW a SW Rozpo et projektu dekompozicí Rozpo et projektu výpo tem Prezentace úvodní studie
Poznámka Má projekt kvalitní stránku? Jsou zde uvedeni ešitelé a jejich e-maily? Je na stránkách projektu matice zodpov dnosti? Je na stránkách projektu projektový deník? Je na stránkách k dispozici plán práce týmu? Jak ešitelé zpracovali zadanou deklaraci zám ru? Jak ešitelé zpracovali zadaný odborný lánek? Jsou uvedeni správn akté i? Jsou uvedeny správné události? Je v úvodní studii uveden kontextový diagram? Je v úvodní studii model jednání? Je v úvodní studii seznam požadavk na implementa ní tým? Je v úvodní studii definován plán implementace? Jsou v úvodní studii specifikovány požadavky na HW a SW? Je v úvodní studii uveden rozpo et projektu dekomposicí (MS Project)? Je v úvodní studii uveden rozpo et projektu výpo tem (COCOMO)? Je k dispozici prezentace úvodní studie projektu?
103
Kontrolní body pro analýzu
104
Kontrolní body pro návrh Kritérium Poznámka Návrh architektury Obsahuje dokumentace návrhu dekomposici systému na moduly? Reprezentace dat Je sou ástí návrhu popis reprezentace dat v logickém modelu? Uživatelský vzhled Obsahuje dokumentace systému definici uživatelského vzhledu?
Kritérium Datový model
Poznámka Obsahuje analytická studie konceptuální datový model? Popis datového modelu Obsahuje analytická studie vysv tlení konceptuálního datového modelu? Funk ní model Obsahuje analytická studie konceptuální funk ní model? Scéná e základních p ípad použití Obsahuje analytická studie scéná e pro základní p ípady použití? Dynamický model Obsahuje analytická studie popis dynamických vlastností? Uživatelská p íru ka Obsahuje analytická dokumentace uživatelskou p íru ku? Akcepta ní test Obsahuje analytická dokumentace návrh akcepta ního testu?
105
106
Záv re ná hodnocení Kritérium Posudek jiného projektu Prezentace Celkový dojem Realizace Doporu ení pro p ijetí
Poznámka Je k dispozici posudek jiného projektu? Je k dispozici prezentace projektu? Celkový dojem z projektu Je projekt dob e p ipraven k realizaci? Záv re né doporu ení pro p ijetí projektu
Návrhové vzory (Design Patterns) JAK se to obvykle d lá
107
108
Obecné ásti návrhových vzor
Co to je návrhový vzor? Christopher Alexander: ”Každý vzor popisuje asto se vyskytující problém a poté popisuje jádro ešení tohoto problému tak, aby bylo možno toto ešení opakovan využívat, bez toho, že bychom stejnou v c d lali dvakrát". P estože se tato definice týká návrhu budov, totéž platí pro návrhové vzory p i tvorb program . ešení je zde vyjád eno pomocí pot ebných objekt a zp sobu jejich komunikace.
Jméno vzoru Popis problému Popis ešení D sledky použití
109
Jméno vzoru
110
Popis problému pro vzor
Termín, p es který se na vzor odvoláváme. Aby se v katalogu vzor dob e a intuitivn hledalo, je volba jména d ležitá a obtížná. P .: Proxy (zástupce), Iterator (iterátor)
Vyjad uje situaci, kde se použití vzoru hodí. M že se stanovit p íkladem, seznamem podmínek, které musí platit, apod.
111
P : Návrhový vzor “Proxy”
112
Popis ešení pro vzor
Deklarace zám ru:
Popisuje elementy použité p i ešení a jejich vztahy. Nejedná se o konkrétní implementaci, nebo vzor je pouze šablonou pro ešení.
pokud pot ebujeme zástupce objektu, nebo vlastní objekt je n kde jinde, je t žko p ístupný, má být chrán n, ...
Motiva ní p íklad: editor dokumentu by m l um t pracovat s obrázky, ale zobrazení obrázku je náro né - asto posta í náhradník
113
114
Struktura vzoru Proxy
D sledky použití vzoru Rozmanité d sledky, které s sebou použití vzoru p ináší - nap . asové a prostorové nároky. Poslouží dob e i p i výb ru alternativ.
115
116
117
118
P íklad použití vzoru Proxy
P íbuzné strukturální vzory
Kategorie návrhových vzor
Proxy zastupuje objekt a poskytuje stejné rozhranní jako on Adapter m ní rozhranní, které objekt poskytuje Dekorátor n co p idává
Vzory pro vytvá ení a manipulaci s reprezentací informace (nap . Abstract Factory, Proxy) Vzory strukturální vyjad ující strukturu implementace (nap . Adapter, Composite) Vzory pro chování (nap . Iterátor)
119
120
Vzor: Builder
Struktura vzoru Builder
Deklarace zám ru: odd lení konstrukce složitého objektu od jeho reprezentace pokud má být algoritmus pro vytvá ení složitého objektu nezávislý na vytvá ení ástí pokud lze objekt reprezentovat r znými zp soby
Motiva ní p íklad: editor dokumentu v RTF by m l um t pracovat s r znými reprezentacemi textu (ASCII, TeX, …)
121
P íklad použití vzoru Builder
122
Kolaborace p i použití Builder
123
Vzor: Iterator (Cursor)
124
Struktura pro Iterator
Deklarace zám ru: pro sekven ní p ístup ke složkám složeného objektu bez ohledu na reprezentaci - pokud má být procházen seznam aniž se zabýváme jeho reprezentací (uniformní p ístup pro traverzování agregovaných struktur)
Motiva ní p íklad: sekven ní pr chod seznamy
125
126
P íklad použití Iterator
Vzor: Interpret Deklarace zám ru: máme zadánu gramatiku jazyka, jehož v ty chceme interpretovat
Motiva ní p íklad: hledání vzorku zadaného regulárním výrazem v et zci (známe gramatiku regulárního výrazu)
127
Struktura vzoru “Interpret”
128
Gramatika pro regulární výraz expression ::= literal | alternation | sequence | repetition | '(' expression ')' alternation ::= expression '|' expression sequence ::= expression '&' expression repetition ::= expression '*' literal ::= 'a' | 'b' | 'c' | ... { 'a' | 'b' | 'c' | ... }*
globální kontext
129
130
“Interpret” pro reg. výrazy
Reprezentace vzorku: raining & (dogs | cats) *
131
132
Vzor: Abstract factory (Kit)
Abstract factory (stavebnice)
Deklarace zám ru: interface pro vytvá ení kolekcí objekt bez podrobné specifikace jejich struktury
Motiva ní p íklad:
133
P íklad použití
134
Vzor: Factory method (virtuální konstruktor) Deklarace zám ru: interface pro vytvá ení a manipulaci s objekty, jejichž konkrétní reprezentaci neznáme
135
Struktura pro “Factory method”
136
P íklad použití “Factory method”
137
138
P ehled vzor (dle GoF) Abstract Factory interface pro vytvá ení sady objekt , bez specifikace konkrétní t ídy
Adapter p evádí interface t ídy na interface o ekávaný klientem - umož uje spolupráci nekompatibilních t íd
Bridge odd luje abstrakci od implementace, takže se mohou nezávisle m nit
139
P ehled vzor
140
P ehled vzor
Builder
Command
odd luje konstrukci složeného objektu od jeho reprezentace, takže stejný proces m že vytvá et r zné reprezentace
zapouzd uje požadavek jako objekt, a tím umož uje parametrizovat klienty s r znými požadavky, frontami, žurnály
Chain of Responsibility
Composite
umož uje propojení zdroje požadavku s p íjemcem tak, že dává více objekt m šanci požadavek zpracovat. Z et zí p íjemce a p edává požadavek mezi nimi.
sestavuje objekt do stromové struktury aby reprezentoval vztah celek- ást. Umož uje pracovat s celkem a jeho ástmi uniformním zp sobem
141
P ehled vzor
142
P ehled vzor
Decorator
Factory Method definuje “interface” pro vytvá ení objektu, ale ponechává na podsystémech rozhodnutí, které t ídy použijí (jakou instanci)
dynamicky p idává odpov dnost, pružná alternativa pro rozši ování fuk nosti (alternativa k podt ídám)
Flyweight
Facade
umož uje podporu efektivního sdílení velkých sad objekt
poskytuje unifikovaný “interface” pro sadu nástroj - podsystém . Poskytuje “interfaceL” vyšší úrovn tak, že použití podsystém je jednodušší.
Interpreter vychází z reprezentace gramatiky jazyka, která umož uje interpretaci v t jazyka
143
144
P ehled vzor
P ehled vzor Memento
Iterator
bez porušení pravidla zapouzd ení umož uje zapamatování stavu, do kterého se objekt m že pozd ji vrátit
poskytuje sekven ní p ístup k sad element agregovaných objekt bez znalosti reprezentace sady
Observer
Mediator
definuje vztah 1:N mezi objekty tak, že pokud jeden objekt zm ní stav, všechny objekty na n m závislé jsou na to upozorn ny a automaticky poopraveny
definuje object, který zapouzd uje zp sob jak spolu objekty komunikují - místo aby komunikovaly p ímo
145
P ehled vzor
146
P ehled vzor
Prototype
State
specifikuje sadu objekt pot ebných pro vytvo ení instance prototypu a pro kopírování tohoto prototypu
umož uje objektu zm nu chování na základ zm ny jeho stavu
Strategy
Proxy
definuje rodinu algoritm , které jsou podobné a zam nitelné (umož uje zm nu algoritmu nezávisle na klientech)
poskytuje zástupce pro ízení p ístupu k objektu
Singleton zajiš uje,a by t ída m la pouze jednu instanci a poskytuje k ní globální p ístup
147
148
Shrnutí
P ehled vzor
Základní kladní technologická technologická rozhodnutí rozhodnutí ve fá fázi návrhu
Template Method definuje kostru algoritmu operace, který pak komunikuje s podsystémy p i vlastním ešení - kroky ešení se mohou m nit beze zm ny kostry algoritmu
architektura systému datové zdroje, p ístupové mechanismy k nim distribuce programových modul , komunika ní mechanismy typy a formy výstup uživatelské rozhraní vývojové prost edí
Visitor reprezentuje operaci, která má být vykonána na elementech struktury objektu - návšt vu struktury objektu
149
150
Co bude výstupem SI? Dokumentace SI
The End
Dokumentace projektu
Úvodní studie poznamky
Analytická dokumentace
Dokumentace návrhu
Projektová dokumentace
151
152