30. 03. 2009 PA103: OO metody návrhu IS © R. Ošlejšek, FI MU Brno 1 Základní etapy vývoje analýza, návrh, implementace, ... © 2008 Radek Ošlejšek FI MU Brno oslejsek@fi.muni.cz http://www.fi.muni.cz/~oslejsek/PA103 30. 03. 2009 PA103: OO metody návrhu IS © R. Ošlejšek, FI MU Brno 2 Základní etapy vývoje • Většina metodik vývoje softwaru v sobě nějakým způsobem zahrnuje následující kroky: – Zachycení požadavků na systém • Externí modely (pohledy na systém) – Analýza • Základní modely, bez implementačních detailů. • Většinou platformě nezávislé – Návrh • Detailní modely • Zvolený cílový jazyk, technologie, ... – Implementace – Testování 30. 03. 2009 PA103: OO metody návrhu IS © R. Ošlejšek, FI MU Brno 3 Zachycení požadavků na systém 30. 03. 2009 PA103: OO metody návrhu IS © R. Ošlejšek, FI MU Brno 4 Zachycení požadavků • Vstupem je často analýza obchodních procesů (business processes) • Textová specifikace • Analýza textů • Digramy případů užití – diagram(y) + dokumentace 30. 03. 2009 PA103: OO metody návrhu IS © R. Ošlejšek, FI MU Brno 5 Příklad Diagram případů užití 30. 03. 2009 PA103: OO metody návrhu IS © R. Ošlejšek, FI MU Brno 6 Analýza 30. 03. 2009 PA103: OO metody návrhu IS © R. Ošlejšek, FI MU Brno 7 Analýza – nejčastěji využívané diagramy • Diagram tříd – Analytický model • Základní operace a atributy, dědičnost, asociace (většinou obousměrná) • Prvotní rozdělení zodpovědnosti • Asociační třídy, násobnost asociací M:N, asociace s kvalifikátorem,... • Diagram balíků – Základní rozdělení do balíků • Stavový diagram – Chování některých objektů/tříd • Další diagramy dle potřeby 30. 03. 2009 PA103: OO metody návrhu IS © R. Ošlejšek, FI MU Brno 8 Analytický model tříd • Zachycuje doménovou oblast, později jsou analytické třídy upřesněny/rozloženy na návrhové třídy • Obsahují pouze klíčové atributy a operace nutné pro popis základní zodpovědnosti třídy – Jméno: je nezbytné – Atributy: pouze podmnožina budoucích atributů, typy se vynechávají – Operace: parametry a návratová hodnota jen pokud je to důležité – Viditelnost: nezobrazuje se Window display()   size visibility hide() 30. 03. 2009 PA103: OO metody návrhu IS © R. Ošlejšek, FI MU Brno 9 Vlastnosti dobré analytické třídy • Pojmenování třídy odráží její význam • Jasně definovaná množina zodpovědností – zodpovědnost = typ služby, kterou třída nabízí ostatním třídám – Př. zodpovědností pro analytickou třídu NákupníKošík: • OK: přidej položku do košíku, odeber položku z košíku, ukaž položky v košíku • také OK: spravuj položky v košíku • špatně: ověř kreditní kartu, akceptuj platbu, vytiskni účet • Malý počet vazeb na ostatní třídy – pro řešení své zodpovědnosti vyžaduje třída spolupráci pouze malého počtu dalších tříd – rovnoměrné rozložení zodpovědností mezi třídy vede k malému počtu propojení 30. 03. 2009 PA103: OO metody návrhu IS © R. Ošlejšek, FI MU Brno 10 Nalezení analytických tříd • Analýza podstatných jmen a sloves – analýza textů (specifikace systému, model požadavků, dokumentace případů užití, atd.) – podstatná jména v textu často vedou na třídy nebo atributy – slovesa a slovesné fráze často indikují zodpovědnosti nebo operace – pozor na synonyma a homonyma • CRC analýza – class, responsibilities and collaborators analysis – “brainstorming” metoda s lepícími papírky • co papírek, to jedna třída • každý papírek obsahuje jméno, zodpovědnosti a spolupracující třídy • místo seznamu spolupracujících tříd se mohou nalepit na tabuli a propojit čárami – používá se spolu s analýzou podstatných jmen a sloves • Další zdroje tříd – fyzické objekty (lidé, pracoviště,...), dokumenty (formuláře, objednávky,...), známá rozhraní (terminály, periferní zařízení), ... 30. 03. 2009 PA103: OO metody návrhu IS © R. Ošlejšek, FI MU Brno 11 Příklad Analýza podstatných jmen a sloves Informační systém Studium • Informační systém Studium bude sloužit pro podporu správy kurzů včetně elektronického přihlašování a odhlašování. • Správa studijních kurzů umožní lektorům přidávání nových kurzů, mazání kurzů a úpravu stávajících parametrů, kterými jsou název, popis, prerekvizity, kapacita, nastavení rozvrhu a rozlišení, zda jde o prezenční nebo distanční kurz. • Studenti dostanou možnost využít systém k elektronickému zápisu do kurzů a odhlašování z kurzů. Zápis do kurzu bude umožněn jen v případě, že dosud není naplněna kapacita kurzu. Pokud dojde k vyčerpání kapacity kurzu, systém pošle upozornění na email lektora zodpovědného za kurz. • Jednou z doplňkových funkcí systému bude podpora pro vkládání pracovních výkazů o odpracovaných hodinách pro externí lektory, kteří na rozdíl od interních lektorů nepobírají měsíční mzdu a jsou placeni na základě odpracovaných hodin. Legenda: červeně - podstatné jméno kandidátem na třídu zeleně - podstatné jméno, kandidátem na atribut modře - sloveso kandidátem na operaci/metodu 30. 03. 2009 PA103: OO metody návrhu IS © R. Ošlejšek, FI MU Brno 12 Příklad CDC analýza 30. 03. 2009 PA103: OO metody návrhu IS © R. Ošlejšek, FI MU Brno 13 Příklad Analytický model tříd 30. 03. 2009 PA103: OO metody návrhu IS © R. Ošlejšek, FI MU Brno 14 Příklad 30. 03. 2009 PA103: OO metody návrhu IS © R. Ošlejšek, FI MU Brno 15 Návrh (design) 30. 03. 2009 PA103: OO metody návrhu IS © R. Ošlejšek, FI MU Brno 16 Návrh – nejčastěji využívané diagramy • Diagram tříd – Návrhový model • přesně definované „malé“ implementovatelné třídy • modelování rozhraní • komplikovanější model • Sekvenční a komunikační diagramy – Realizace (rozpracování) případů užití – Upřesnění tříd, upřesnění zodpovědností, nalezení nových tříd, operací, ... • Diagramy balíků – Návrhové subsystémy • Diagramy komponent • Diagram rozmístění 30. 03. 2009 PA103: OO metody návrhu IS © R. Ošlejšek, FI MU Brno 17 Integrace modelů • Diagram tříd je základem • Každý model přispívá něčím jiným • Abstrakce a detail musí být konzistentní • Integrace prostřednictvím repository – podpora CASE nástrojů pro udržení konzistence objekty nové třídy, operace, atributy třídy operace, atributy události, případy užití, aktéři případy užití, aktéři 30. 03. 2009 PA103: OO metody návrhu IS © R. Ošlejšek, FI MU Brno 18 Příklad Sekvenční diagram (I) 30. 03. 2009 PA103: OO metody návrhu IS © R. Ošlejšek, FI MU Brno 19 Příklad Sekvenční diagram (II) 30. 03. 2009 PA103: OO metody návrhu IS © R. Ošlejšek, FI MU Brno 20 Příklad Sekvenční diagram (III) 30. 03. 2009 PA103: OO metody návrhu IS © R. Ošlejšek, FI MU Brno 21 Příklad Sekv. diagram (IV) - alternativa 30. 03. 2009 PA103: OO metody návrhu IS © R. Ošlejšek, FI MU Brno 22 Návrhový model tříd • Často pro konkrétní cílový jazyk a technologie • Obsahuje všechny nezbytné detaily • Úplnost • Jednoduchost • Vysoká soudržnost (koheze, zodpovědnost) • Co nejmenší propojení s ostatními třídami • Upřesněné asociace – Směr, agregace/kompozice, kardinalita, ... • Dědičnost vs. asociace • Násobná dědičnost • Dědičnost vs. realizace rozhraní 30. 03. 2009 PA103: OO metody návrhu IS © R. Ošlejšek, FI MU Brno 23 Asociace a atributy • Mezi asociacemi tříd a atributy tříd existuje velmi těsná vazba. • Vazba 1:1 odpovídá odkazu atributem • Vazba 1:N odpovídá odkazu polem atributů nebo jedné kolekci • Vazba M:N se řeší v návrhu dekompozicí • Směr asociace udává, která třída obsahuje atribut • Obousměrné asociace se upřesňují při návrhu • Role v asociaci se často stává základem pojmenování atributu = public class House { private Address address; } = 30. 03. 2009 PA103: OO metody návrhu IS © R. Ošlejšek, FI MU Brno 24 Směr řízení v asociaci Je nutné se předem dohodnout na jedné z následujících interpretací: 1) Explicitní navigace (striktní interpretace podle UML2): • všechny šipky a křížky jsou ukázány, pokud chybí, je směr asociace (zatím) nedefinovaný 2) Potlačená navigace: • žádné šipky a křížky nejsou ukázány, • moc se nepoužívá – zakrývá příliš mnoho informace 3) Běžná praxe: • křížky se nepoužívají, obousměrné asociace nemají žádné šipky, jednosměrné asociace mají jednu šipku A B A B A komunikuje s B B nekomunikuje s A A komunikuje s B B komunikuje s A A komunikuje s B komunikace B->A: není definováno komunikace A->B: není definováno komunikace B->A: není definováno Explicitní navigace Běžná praxe 30. 03. 2009 PA103: OO metody návrhu IS © R. Ošlejšek, FI MU Brno 25 Směr řízení v asociaci – pokr. • I když je asociace jednosměrná, většinou je možné ji “procházet i v zakázaném směru” za cenu vyšší výpočetní náročnosti • Př: Osoba neví nic o firmách, ve kterých je zaměstnána. Přesto můžeme firmy zaměstnávající osobu najít tak, že procházíme všechny firmy a hledáme ty, které zaměstnávají danou osobu. • Ekvivalent jednosměrných ulic: Snadno se dostaneme z jednoho konce na druhý. Pokud se chceme dostat zpět, musíme objet celý blok. • V agregace/kompozici jsou většinou části řízeny svými celky Osoba Firma *1..* změstnává Celek Část Celek Část vemi neobvyklé 30. 03. 2009 PA103: OO metody návrhu IS © R. Ošlejšek, FI MU Brno 26 Návrhové třídy: Asociace 1:1 analýza návrh analýza návrh primitivní třída 30. 03. 2009 PA103: OO metody návrhu IS © R. Ošlejšek, FI MU Brno 27 Návrhové třídy: Asociace M:1 analýza návrh celek část 30. 03. 2009 PA103: OO metody návrhu IS © R. Ošlejšek, FI MU Brno 28 Návrhové třídy: Asociace 1:M (kolekce) částcelek analýza návrh 30. 03. 2009 PA103: OO metody návrhu IS © R. Ošlejšek, FI MU Brno 29 Návrhové třídy: Asociace M:N analýza návrh analýza návrh 30. 03. 2009 PA103: OO metody návrhu IS © R. Ošlejšek, FI MU Brno 30 Návrhové třídy: Obousměrné asociace analýza návrh 30. 03. 2009 PA103: OO metody návrhu IS © R. Ošlejšek, FI MU Brno 31 Návrhové třídy: Asociační třídy analýza návrh 30. 03. 2009 PA103: OO metody návrhu IS © R. Ošlejšek, FI MU Brno 32 Příklad Návrhový model tříd 30. 03. 2009 PA103: OO metody návrhu IS © R. Ošlejšek, FI MU Brno 33 Příklad Diagram balíků 30. 03. 2009 PA103: OO metody návrhu IS © R. Ošlejšek, FI MU Brno 34 Příklad 30. 03. 2009 PA103: OO metody návrhu IS © R. Ošlejšek, FI MU Brno 35 Návrh – uložení persistentních objektů 30. 03. 2009 PA103: OO metody návrhu IS © R. Ošlejšek, FI MU Brno 36 Proč potřebujeme model objektů uložení? Objekty uložení Aplikační objekty Prezentační objekty Aplikační vrstva Prezentační vrstva Datová vrstva prezentační služby aplikační služby datové službydatové služby • Široké nasazení relačních databází, které ale nepodporují přímo struktury objektového modelu => nutnost mapování 30. 03. 2009 PA103: OO metody návrhu IS © R. Ošlejšek, FI MU Brno 37 Relační databáze • Relační technologie – Uložení dat v tabulkách – Řádky jsou záznamy, sloupce typy – Tabulky jsou propojeny vazbami – Primární/cizí klíče – Kardinalita/násobnost vazeb • Objektová technologie – Třídy obsahují data i operace – Asociace s násobností – Dědičnost 30. 03. 2009 PA103: OO metody návrhu IS © R. Ošlejšek, FI MU Brno 38 ORM – základní mapování • Object-relational mapping, ORM – Persistentní třída definuje entitní množinu (tabulku) – Objekt definuje entitu (záznam, řádek tabulky) – Atributy třídy se stávají atributy entity (sloupce tabulky) – Klíč je vybrán z atributů nebo je vytvořen nový – Asociace/agregace/kompozice tříd definuje relaci (propojení tabulek cizími klíči) – Dědičnost tříd • mapování 1:1 • zahrnutí do nadtřídy • rozpuštění do podtříd 30. 03. 2009 PA103: OO metody návrhu IS © R. Ošlejšek, FI MU Brno 39 ORM – základní mapování (II) relační schéma persistentní objekty objekty pro práci s DB (SQL dotazy) 30. 03. 2009 PA103: OO metody návrhu IS © R. Ošlejšek, FI MU Brno 40 Dědičnost: mapování 1:1 • Každá třída se stává tabulkou • Všechny tabulky mají stejný primární klíč • Diskriminátor se stává atributem – nutné pro ukládání podtříd přetypovaných na nadtřídu • Instance obsahuje více tabulek – složitější přístup k datům 30. 03. 2009 PA103: OO metody návrhu IS © R. Ošlejšek, FI MU Brno 41 Dědičnost: zahrnutí do nadtřídy • Všechny atributy podtříd jsou zahrnuty do jedné tabulky • Některé atributy mohou obsahovat hodnotu NULL • Vhodné v případě menšího počtu podtříd s málo atributy 30. 03. 2009 PA103: OO metody návrhu IS © R. Ošlejšek, FI MU Brno 42 Dědičnost: rozpuštění do podtříd • Atributy nadtřídy jsou přeneseny do tabulek pro všechny neabstraktní podtřídy • Vhodné při: – Nadtřída má málo atributů – Existuje mnoho podtříd (košatý strom větvení) – Podtřídy mají hodně atributů