Object Modeling Technic Objektový modelovací jazyk Rumbaugh OMT Object Modeling Technic Objektový modelovací jazyk
Historie objektového přístupu 1966 první objektově orientovaný jazyk Simula (O.-J. Dahl, K. Nygaard) 1967 Simula67 : třídy, dědičnost, polymorfizmus 70. léta první čistě objektový programovací jazyk Smalltalk : pojem objekt (Xerox) 80. léta éra smíšených jazyků Turbo Pascal, C++ : umožňovaly programovat objektově, ale tento přístup nevyžadovaly Objektově orientované metody (Drbal 1997) pro analýzu a návrh složitých systémů byly vyvíjeny v rámci softwarového inženýrství od konce osmdesátých let dvacátého století. Jednalo se o DeMarcovy diagramy datových toků[1], Mellorovy stavové diagramy[2], Coddovy statické vztahové diagramy[3] a objektově orientovanou analýzu[4] Coada a Yourdona. To byly zdroje pro Rumboughovu[5] objektovou modelovací techniku OMT, z které dnes využíváme její lexikální analýzu. Metodika OMT disponuje také objektovým, stavovým a sekvenčním diagramem pro popis systému, a ačkoliv v konceptuálním navrhování většinou již nejsou využívány, tak v principu to jsou právě tyto tři diagramy, které jsou pro popis inovačních konceptů nejvhodnější (používají se adekvátní alternativy UML). Spojením výhod OMT a Boochova objektově orientovaného designu[6] vznikl sjednocený modelovací UML[7], který disponuje deseti diagramy pro popis systému, z kterých se v konceptuálním navrhování využívají právě zmíněné tři diagramy OMT (avšak v notaci UML). [1] DFD – Data Flow Diagram (1987). [2] State Diagrams (1985). [3] ER – Entity Relationship Diagram (1990). [4] OOA – Object Oriented Analysis (1990). [5] OMT – Object Modeling Techniqu (1991). [6] OOD - Object Oriented Design (1991). [7] UML – Unified Modeling Language (1995 ver. 0.8), (1996 ver. 0.9.), (1997 ver. 1.0 – spolupráce s OMG – Object Management Group), atd. až (2004 ver. 2.0). přelom 80. a 90. let řada metod pro OOA a OOD + CASE Např.: OMT, kniha : Object-Oriented Modeling and Design, Prentice Hall, 1991 (J. Rumbaugh (General Electric) a další)
Historie objektového přístupu 1994 J. Rumbaugh se přidává k G. Boochovi a firmě Rational Software 1995 Unified Method verze 0.8 (G. Booch, J. Rumbaugh) 1995 I. Jacobson (Objectory) se přidává k G. Boochovi a J. Rumbaughovi (pokud se někde dočtete o The Three Amigos či Los Tres Buddies, tak vězte, že je to přezdívka tria Booch+Rumbaugh, Jacobson 1996 UML 0.9, 0.91 do prací na UML se zapojují např.: Digital Equiment, HP, i-Logix, IBM, MCI, Microsoft, Oracle, TI, Unisys 1997 rational : 1.0, 1.1 OMG "adoptovalo" UML UML 1.0 (OMG) = UML 1.1 : standard, většinou nazývaný 1.1
OMT - analýza Objektový model - OM Dynamický model - DM Rovina tříd/objektů nebo-li reprezentace pojmů ( přístroj, role, atd.) Dynamický model - DM Funkcionální popis chování systému(scénáře) STD - State Transition Diagram Funkční model - FM Toky dat (DFD)
Objektový model (OM - Object Model) Objektový model obsahuje definice tříd a jejich vztahů společně s atributy a metodami (proto by byl asi lepší překlad názvu modelu jako model tříd, název objektový model může být terminologicky zavádějící). Objektový model zachycuje statickou strukturu systému.
Dynamický model (DM - Dynamic Model) Dynamicky model zachycuje dynamiku objektů a změny jejich stavů. Zabývá se chováním objektů v čase a tokem zpráv a kontroly mezi objekty. Dynamický model zahrnuje stavové diagramy (STD - State Transition Diagram) pro každou třídu nebo pro důležité části návrhu. Dále pak diagramy interakcí. Součástí DM je také celková mapa událostí (Event Trace Diagram) a diagram událostí.
Funkční model (FM - Functional Model) Funkční model pak popisuje funkční závislosti systému, je podobný diagramu datových toků. Popisuje, co systém dělá (nezabyvá se tím, jak to dělá).
Fáze vývoje objektově orientovaného IS analýza porozumět a namodelovat část reality, kterou bude systém obsahovat vytvořit objektový, dynamický a funkční model systémový design Dekomponování systému na podsystémy určit celkovou architekturu systému objektový design Optimalizací modelů analýzy z hlediska konceptu implementace Návrh datových struktur na základě analýzy a architektury systému Implementace Programován vlastní počítačový systém Vlastní vytváření funkčního programu/kódu, někdy bývá generován přímo z CASE systémů testování průběžně ve fázích inkrementálního vývoje
Tvorba objektového modelu Vytvořit slovní popisy modelovaného problému. Určit třídy objektů. Zrušit nepotřebné a chybné třídy. Připravit knihovnu znalostí (data dictionary) Určit asociace mezi třídami. Zrušit nepotřebné a chybné asociace. Určit atributy tříd. Zrušit nepotřebné a chybné atributy. Určit vazby dědičnosti. Projít vše znova a určit nedostatky.
Tvorba dynamického modelu Určit use cases a připravit scénáře typických interakčních sekvencí. Určit události mezi objekty a připravit mapu událostí pro každý scénář. Vytvořit diagram událostí systému. Vytvořit stavové diagramy pro třídy s významným dynamickým chováním. Zkontrolovat konzistenci a úplnost událostí sdílených mezi stavovými diagramy.
Tvorba funkčního modelu Určit vstupní a výstupní hodnoty. Vytvořit diagramy datových toků pro vyjádření funkčních závislostí. Popsat každou funkci, co dělá. Určit omezení. Specifikovat optimalizační kriteria
Lexikální analýza Analýza OMT disponuje velmi silným nástrojem pro popis systému a tím je lexikální analýza. Je to metoda, pomocí které je možné strukturovaně, téměř strojově, sestavit diagramy na základě slovního popisu. Lexikální analýza se provádí tak, že z daného textu vybereme nejdříve podstatná jména – což jsou adepti na třídy třídového diagramu UML – a z tohoto seznamu následně vybereme ta, která se stanou třídami našeho právě se formujícího modelu. Podobným způsobem vytvoříme ze sloves asociace a operace. A z přídavných jmen atributy tříd.
Formování objektového modelu Krok 1a: Objevování a evidence objektů a tříd Seznam podstatných jmen Krok 1b: Analýza a selekce sestrojeného seznamu objektů Vyloučení nesprávných nebo nepotřebných objektů Nadbytečné objekty (synonyma) Irelevantní třídy (beze vztahu k řešenému problému) Neurčité objekty (příliš široký vyznám „význam“) Atributy ( „objekty“ popisující vlastnosti jiných objektů) Operace Role (nedůležité role nějakých objektů) Implementační konstrukty (algoritmus, GUI) Lexikální analýza se provádí tak, že z daného textu vybereme nejdříve podstatná jména – což jsou adepti na třídy třídového diagramu UML (event. objektového diagramu OMT). Dále provedeme selekci sestrojeného seznamu a vyřadíme třídy a objekty, které jsou nadbytečné (denotují stejnou třídu), irelevantní (nemají vztah k problémové oblasti), neurčité (mají příliš široký sémantický rozsah), nebo jsou atributy, operacemi a rolemi – ty přeřadíme do příslušných jiných seznamů – viz níže. Dále vyřadíme implementační konstrukty, tzn. ta podstatná jména, která se vyjadřují k způsobu realizace, jejíž formou se v této analýze vůbec nezabýváme. Dalším krokem je sémantický popis konceptů (tříd). V tomto kroku vytváříme pracovní definice (popisy) jednotlivých tříd.
Formování objektového modelu, Krok 2: Příprava slovníku dat Sémantický popis objektů, vztahů, atributů,… v systému Vytváří se postupně Krok 3a: Objevování a evidence vazeb V textu odpovídají slovesům a slovesným frázím Umístění (fyzická pozice, symbolická podřízenost) Cílené akce („řídí“, „nakládá“) Komunikace („vysílá odezvu“) Vlastnictví a dispozice („zaměstnává“) Rozdělení zodpovědnosti („zajišťuje“) Dalším krokem je nalezení asociací (vazeb) mezi jednotlivými třídami. Třídy v textu odpovídají slovesům a slovesným frázím. Ty zachycují především vztah k ostatním třídám (nadřazenost, podřazenost atd.), cílené akce, komunikační akce a vztah náležení. Mezi vazby přidáme i ty, které jsme vyprodukovali asociováním (vázané asociace) k daným třídám. Tento seznam vazeb následně zredukujeme tak, že vyloučíme vazby mezi zrušenými třídami, dále vazby nadbytečné, irelevantní, implementační a odvozené (které provazují dvě třídy skrze třídu třetí). Dále určíme mohutnosti vazeb, tzn. kolik objektů jedné třídy vazba spojuje s kolika objekty třídy druhé (např.: 1:1, 1:n, 0:n, 1:0, n:n atd.). Vazby ještě rozdělíme do čtyř kategorií na vazby neutrální, agregační, generalizační a specielní.
Formování objektového modelu, Krok 3b:Analýza a selekce sestrojeného seznamu vazeb Vazby mezi zrušenými objekty Nadbytečné vazby Irelevantní vazby Operace (akce jako operace v objektech) Implementační vazby Trojné vazby ( volba ) Odvozené vazby („zjednodušování“)
Formování objektového modelu, Krok 4a:Objevování a evidence atributů Vlastnosti individuálních objektů ( váha délka, datum, atd. ) Přídavná jména a jejich skupiny Cílené kladení otázek na atributy Krok 4b: Analýza a selekce atributů Atributy objektů, které byly zrušeny Objekty Kvantifikátory vazeb Některá jména Identifikátory Atributy vazeb Interní hodnoty Heterogenní atributy Dalším krokem je nalezení atributů (vlastností) příslušných tříd. To jsou v prvé řadě přídavná jména a jejich skupiny extrahované z textu. Z takto vytvořeného seznamu následně vyloučíme ta přídavná jména, která náleží zrušeným třídám a dále ta, která jsou sama o sobě třídou, kvalifikátorem, či atributem vazby a také ta, která jsou interní (neviditelnou) vlastností objektu, nebo ta, která jsou atributem natolik heterogenním, že rozděluje třídu na další podtřídy (potom atribut raději nepoužijeme a třídu rozdělíme). U takto sestaveného seznamu atributů ještě dourčíme jejich typy a výchozí (default) hodnoty.
Formování objektového modelu, Krok 5: Objevování, evidence, analýza a selekce operací Krok 6: Organizace a zjednodušení tříd Krok 7: Ověření a iterativní zjemňování modelu Posledním krokem je sestrojení seznamu operací, který vychází sice ze sloves, ale jelikož ze sloves je již vytvořený seznam asociací, tak použijeme tyto příslušné asociace. Operace jsou procedury, které mění hodnoty atributů, nebo o této změně komunikují s ostatními třídami.
Formování dynamického modelu Sekvence událostí systému ( tedy mohou to být i fragmenty ) Diagramy interakcí objektů, stavové diagramy „Scénáře“ Krok 1: Objevování a evidence událostí probíhajících mezi objekty Seznam objektů Seznam událostí Krok 2: Sestrojení scénáře Sekvence událostí popisující modelovaný fragment chování systému. Graf (události, objekty, čas )
Formování dynamického modelu, Krok 3: Konstrukce stavového diagramu Každý stav má(nemusí) specifikované tři skupiny událostí „Entry“ – událost, která systém do stavu přivedla „Exit“ – událost, která se uděje při opouštění stavu „Do“ – aktivita, která se bude během pobytu ve stavu provádět „Action“ – událost, která se provede jenom za určité podmínky Krok 4: Ověření konzistence Každá událost má svého odesílatele a příjemce Stavy, kromě počátečních a koncových mají své předchůdce a potomky/následovníky Vzájemná korespondence jednotlivých diagramů vůči sobě
Formování funkčního modelu Vstupní data->transformace->výstupní data Iterace prohlubování/dekompozice Krok 1:Formování datových modelů a vstupů a výstupů Krok 2:Kreslení funkčních závislostí Krok 3:Popis funkcí Krok 4:Nalezení omezujících podmínek Krok 5:Specifikace optimalizačních kriterii
Příklad - Garáž Navrhněte IS pro placenou garáž, která má implementovaný automatický provoz. Při vjezdu do garáže si zákazník, pokud je náhodným zákazníkem z automatického terminálu po stisku tlačítka „Návštěvnická karta“ vezme dočasnou návštěvnickou kartu, po odebrání karty se otevře závora. Pokud je zákazník stály, tak má kartu stálého zákazníka, kterou si musí před vjezdem do garáže koupit v kanceláři majitele garáže, která je mimo budovu garáže. Stálý zákazník při vjezdu vloží svou kartu do terminálu. Terminál ověří totožnost karty, a pokud je karta v pořádku vrátí ji zákazníkovi a otevře se závora. V průběhu ověřování platnosti karty se na displeji ukáže výše kreditu na kartě. V prostorách garáže je automatický terminál, kde je možné dobít kredit a tím zaplatit parkovné. Stálý zákazník dobíjí podle toho jestli je to potřeba. Náhodný zákazník musí vždy dojít k terminálu a zaplatit parkovné. Při odjezdu zákazník vloží svou kartu, pokud se jednalo o dočasnou kartu a bylo zaplaceno parkovné, tak si jí terminál nechá v sobě a otevře se závora. Pokud se jedná o stálého zákazníka a výše kreditu je dostatečná, tak kartu po odečtení potřebné platby vrátí a otevře se závora.
Příklad: Prodej lístků v ND Zadání: Národní divadlo, jako každoročně vydává plán představení na sezónu v daném roce. Tento plán je volně distribuován (např. na letácích, bilbordech, internetu, atd.). Potenciální divák si po přečtení toho plánu rozhodne, na jaké představení se případně půjde podívat. Jako první věc kterou musí udělat je, že si za rezervuje nebo přímo zakoupí v lístek v některých možných pokladnách distributorů lístků. Rezervace lístků je v podstatě jednoduchá. Stačí přijít k pokladně nebo na detašované pracoviště, slušně pozdraví a požádá paní za pokladnou o možnost rezervace lísku na předem vybrané představení v určitý den a v určitou hodinu, kdy se ono představení hraje. Paní pokladní po zadání těchto údajů do počítače ji systém oznámí/neoznámí počet volných místenek a jejich lokální umístění v sále. Budoucí divák si vybere umístění a počet míst. Dále je požádán o své jméno, příjmení, adresa, telefon, atd. Pak následuje upozornění na cenu rezervovaných lístků a možnost platby. Divák, také vyslechne upozornění o automatické zrušení rezervace 48 hodin před představením pokud si divák lísky nezaplatí-nevyzvedne v pokladně ND nebo je nějakého důvodu zrušeno představení. Prodej lístků probíhá obdobným způsobem. Budoucí divák přistoupí k pokladně, slušně pozdraví a požádá paní za pokladnou o možnost koupit si lístky na představení, přičemž zadá název, datum a čas přestavení. Paní pokladní zjistí v počítači volná místa a udělá nabídku volných míst v určitém sále. Divák si vybere umístění a počet míst (vstupenek). Paní pokladní udělá objednávku a vytiskne lístky. „ Divák“ zaplatí a převezme vstupenky. Lístky je možno zakoupit na všechny scény ND. Přičemž cena vstupenek je určena představením, časem a umístění sedadla.
Doporučené weby OMT OO, UML, analýza, metodologie http://objekty.vse.cz/Objekty/MetodikyANotace-OMT OO, UML, analýza, metodologie http://mpavus.wz.cz/index.php UML - Unified Modeling Language http://www.osu.cz/katedry/kip/aktuality/sbornik99/mohlanec1.html