Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Vyhledávání softwarových vzorů

Podobné prezentace


Prezentace na téma: "Vyhledávání softwarových vzorů"— Transkript prezentace:

1 Vyhledávání softwarových vzorů
Ondřej Lehečka Miloš Kudělka, Václav Snášel TUO-VŠB Ostrava

2 Agenda Vzory a oblasti, ve kterých se vyskytují
Problémy a současná řešení PATTRON - systém pro podporu vyhledávání vzorů Konference EuroPLoP 2007 Spolupráce studentů

3 Vzory a oblasti, ve kterých se vyskytují
Co jsou to vzory? Kde se vzaly? Historie Vzory jsou Vzory nejsou Proč používat vzory? Ve kterých oblastech se vyskytují? Popis vzoru Vzor jako slovník

4 Co jsou to vzory? Kde se vzaly?
V praxi často narážíme na stejný opakující se problém Existují ověřená řešení Odborníci z dané oblasti ví jak problém řešit Každý člověk při práci používá jisté stereotypy Vzory tyto stereotypy pojmenovávají a formalizují Je zdůrazněna obecnost a flexibilita použití

5 Historie Christopher Alexander formuloval v 70 letech vzory pro řešení úloh v architektuře „Každý vzor je pravidlo, které vyjadřuje vztah mezi jistou souvislostí, problémem a řešením“ V sedmdesátých letech byly architektem Christopherem Alexandrem formulovány vzory pro řešení úloh v architektuře (1). Vzor je formulován nikoli jako nápad, jak řešit problém, ale jako popis a zobecnění určité zkušenosti, která vede k postupu, jak problém řešit (východiskem vzorů je praktická zkušenost, nikoli pouhý nápad, jak problém řešit). Návod řešení pak musí být tak pružný, aby se vzor dal aplikovat opakovaně a aby přitom výsledky nebyly stereotypní. Vzor je stručný text, který popisuje náčrt problému a popis jeho obecného řešení v konkrétních souvislostech.

6 Vzory jsou Popisy osvědčených řešení
Zachycují zkušenost odborníků v určité oblasti Umožňují jednoduchou komunikaci mezi odborníky (vytváří slovník) Řeší opakovaně se vyskytující problém

7 Vzory nejsou Momentální nápady autora Nějaké triky
Popisy jediného způsobu řešení Popisy, které nevnesou shodu mezi odborníky

8 Proč používat vzory? … šetří čas a námahu … Vyzkoušená řešení
Zachycují zkušenosti Jsou znovupoužitelné Poskytují slovník Zmírňují rizika Při návrhu a tvorbě aplikací často narazíme opakovaně na stejný problém. K ušetření času a námahy je dobré mít běžné problémy a jejich řešení uloženy. V nejjednodušší podobě jsou řešením návrhové vzory a jejich katalog, Design Pattern Katalog. Návrhové vzory jsou uloženy v  Pattern Templates (šablonách). Pattern Templates obsahují název vzoru, oblasti použití, běžné problémy při implementaci atd. S použitím design patterns je návrh aplikace přehlednější. Všechny návrhové vzory jsou opakovaně použitelné. Byli vyzkoušeny. Zobrazují zkušenosti, znalosti a nadhled vývojových projektantů, kteří úspěšně použili návrhy při jejich vlastní práci. Jsou znovupoužitelné. Poskytují připravené řešení, které může být použito při řešení různých problémů. Jsou výmluvné. Poskytují běžný slovník, který může rychle poskytnout řešení.

9 Ve kterých oblastech se vyskytují?
Seznam oblastí, ve kterých jsou již formulovány vzory, neustále roste. Je jasné, že vzory musí být formulovány specialisty z oblasti, pro kterou jsou vzory určeny. Vzory bývají objeveny v profesionálních systémech jako obecné ověřené opakující se řešení problému.

10 Návrhové vzory (Design patterns)
GoF Nejznámější skupina vzorů Aplikují se při vytváření návrhu Zaměřují se na flexibilitu programu MOTO: programujeme pro rozhraní, nikoli pro implementaci objektové skladbě dáváme přednost před třídní dědičností

11 Víceméně nezávislé na problémové doméně
Analytické vzory Víceméně nezávislé na problémové doméně Popisují řešení na konceptuální úrovni Popisují vztahy mezi klíčovými prvky aplikační logiky systému Vzory pro podniková řešení Pro vytváření aplikací velkého rozsahu (enterprise applications) Snaží se popisovat prostředí pro vývoj informačních systémů V této oblasti bývá zmiňována především kniha [8]. Analytickými vzory autor rozumí takové vzory, které jsou víceméně nezávislé na problémové doméně a popisují řešení problémů na konceptuální úrovni, která je minimálně závislá na budoucí implementaci. V podstatě vzory popisují vztahy mezi klíčovými byznys prvky systému. Tato oblast vzorů by se v žádném případě neměla podceňovat, protože dobrý analytický návrh je nutnou podmínkou kvalitní implementace. Vzory pro podniková řešení Další oblastí pokrývanou vzory, které je věnována v poslední době značná pozornost, a to i ze strany komerčních firem, je vytváření aplikací velkého rozsahu, například na úrovni podnikových informačních systémů. Na návrh takové aplikace se totiž můžeme podívat z různých hledisek, která odpovídají např. úrovni abstrakce pohledu na systém či pohledu na způsob implementace některé konkrétní části systému.Tento přístup vede ke snaze v maximální možné míře definovat pro vývoj informačních systémů prostředí, které na jedné straně poskytne dostatečnou flexibilitu a na druhé straně základní schémata, která umožní používat a sdílet zkušenost jako jeden základních prvků efektivního vývoje. Nejlepšími zdroji pro tuto oblast jsou knihy [9,23].

12 Skupina vzorů pro unit-testing.
Vzory pro integraci Popisuje mechanizmy pro propojování částí nebo celých informačních systémů na různých úrovních Vzory pro testování Skupina vzorů pro unit-testing. Vzory pro tvorbu uživatelského rozhraní Dodržování ergonomických zásad a standardů Kvalita při komunikaci člověka s počítačem Vzory pro integraci Integrace systémů je jednou z aktuálních úloh současné doby. Ani této oblasti se nevyhnula snaha o formulování vzorů. Pro tuto problematiku lze doporučit knihu [13], která tuto oblast popisuje velmi důsledně. Vzory pro testování Zajímavým, velmi stručným a čitelným katalogem vzorů je [5], kde se autor zabývá vzory pro tzv. unit testing. Kromě toho vyšlo několik knih zabývajících se tuto problematikou v širším měřítku. Vzory pro tvorbu uživatelského rozhraní Grafické uživatelské rozhraní je z pohledu uživatele nejdůležitějším prvkem aplikace a jako s takovým se s ním musí zacházet. Důležitou vlastností dobře navrženého uživatelského rozhraní je dodržování ergonomických zásad a standardů, které s rozvojem kvality počítačů přispívají ke kvalitě komunikace člověka s počítačem. I zde se dá velmi efektivně (a v tomto případě i velmi efektně) popsat většina kompozic a akcí v běžných systémech a aplikacích prostřednictvím vzorů [15, 23].

13 Vzory pro e-learning Slouží k popisu vlastností, které jsou očekávány u e-learningového systému a jeho obsahu Pedagogické vzory Popisuje různé vyučovací metody a problémy Určeno především pro neučitele, kteří vedou např. školení

14 Popis vzoru Existují různé formáty, charakteristiky uvedeny na konferenci PLoP’ 95 Název (vystihuje co nejvíce jeho podstatu) Problém (každý vzor řeší nějaký problém) Kontext/Podmínky (popis okolností) Řešení (soubor pravidel a vztahů, instrukce, jak postupovat v řešení problému) Příklady, Důsledky, Související vzory, Reference Alexander v ALEX79 vymezuje, čím je každý návrhový vzor definován: “každý popisovaný návrhový vzor musí být formulován ve formě pravidel, které stanovují vztah mezi kontextem, silami působících v tomto kontextu a konfigurací, která dovoluje těmto silám vyřešit vlastní působení v rámci kontextu” Alexander doporučuje k objasnění návrhových vzorů využití grafického zobrazení, které usnadní vzájemnou komunikaci mezi vysvětlujícím a posluchači, resp. čtenáři. Jsou využívány různé formy popisu návrhových vzorů (Alexandrův formát, GoF formát a další). Při vytváření návrhového vzoru je nutné, aby zvolená forma poskytovala co možná nejvíce relevantní informace a vhodně je uspořádávala. Při popisu návrhových vzorů platí, že čtenář by se neměl starat o formát vymezení návrhového vzoru, ale spíše se soustředit na problém jako takový. Proto je vhodné používat ustálené názorné postupy. Každý popis návrhového vzoru by měl obsahovat několik základních charakteristik, které byly poprvé uvedeny na konferenci PLoP´95 viz SANE95: Název - každý návrhový vzor by měl mít název, který co možná nejvíce vystihuje jeho podstatu. Jednou z příčin využití návrhových vzorů je usnadnění komunikace mezi lidmi. Proto není možné, aby při použití názvu návrhového vzoru muselo dojít k dlouhému vysvětlení, co daný pojem znamená. Někteří autoři k názvu připojují ještě jeho klasifikaci. Problém - každý návrhový vzor řeší nějaký problém. Podstatou jeho vzniku je nějaká konkrétní situace, která neodpovídá požadovanému stavu. Podmínky - popis všech okolností a sil, které mohou ovlivňovat použití daného vzoru. Jsou zahrnuty veškeré jevy, které se vyskytují v daném kontextu a které musí být brány v úvahu. Některé síly mohou být využity při řešení, jiné naopak jsou v konfliktu s daným postupem. Dobrý návrhový vzor obsahuje popis všech okolností, za kterých je možné ho použít a které omezují jeho životaschopnost. Obsahuje i popis kontextu, do kterého bude návrhový vzor aplikován. Určuje budoucí možné použití návrhového vzoru nebo nastavení systému před použitím vzoru. Řešení - soubor pravidel a vztahů, které popisují jak dosáhnout požadovaného výsledku. Představuje soubor instrukcí, jak postupovat krok po kroku směrem k cíli. Návrhový vzor bývá vysvětlován formou diagramů, obrázků, schémat a popisů, které názorně objasňují základní principy vzoru. Nejedná se většinou o vysvětlení statické struktury návrhového vzoru, ale o zachycení dynamiky daného systému. Právě chování systému při použití návrhového vzoru bývá jeho podstatou. Řešení může obsahovat i popis jednotlivých úskalí a omezení, s kterými se musí počítat při jeho implementaci. Příklady - každý popis návrhového vzoru by měl obsahovat i ukázky jeho praktického použití, které pomůžou uživateli osvojit si novou myšlenku. Příklad by měl obsahovat definici konkrétního problému, vstupující podmínky, popis jak je návrhový vzor implementován a výsledek. Příkladem může být například programový kód (pro vzory v oblasti programování), který by měl být co možná nejvíce názorný. Výsledek - stav nebo konfigurace systému po aplikaci vzoru, zahrnující vzájemné souvislosti, které vycházejí z implementace vzoru. Měl by obsahovat shrnutí problému, které byly vyřešeny. Aplikací vzoru se mohou vyskytnout určité vedlejší efekty, které nemusí odpovídat požadovanému stavu. Tyto efekty mohou být řešeny následnými návrhovými vzory, které by měly být zmíněny. Jeden návrhový vzor mnohdy nepředstavuje ucelené řešení složitějšího procesu, ale slouží jako jedna z kostek, které jsou použity při hledání vhodného postupu. Proto výsledek použití konkrétního vzoru může tvořit vstupní bod pro aplikaci dalšího vzoru. Odůvodnění a souvislosti - představuje vysvětlení, proč byl návrhový vzor použit a jak jeho implementace vyřešila danou situaci. Je vysvětlen způsob práce s návrhovým vzorem v praxi. Tato část popisu návrhového vzoru může ukazovat i na zřejmé výsledky, ale především by se měla soustředit na objasnění principu fungování vzoru do větší hloubky. Související vzory - jak už bylo popsáno výše nepředstavuje použití jednoho vzoru většinou ucelené řešení. Mnohdy jsou vstupní podmínky pro použití popisovaného vzoru výsledkem aplikace předchozího a na druhé straně výstupní kontext představuje vstupní bod pro jiný návrhový vzor. Tento řetězec potom dává konečné řešení, kterým je možné dosáhnout požadovaného cíle. Popisovaný způsob řešení daného problému, ale nemusí být jediný a v praxi ani většinou nebývá. Dobrý popis, by měl proto obsahovat i jiné způsoby, kterými je možné se dobrat vytýčeného stavu. Prospěšné je i zmínit okolnosti, na jejichž základě je možné provést výběr mezi navrhovanými postupy. Poslední možností, jak vzor může souviset s ostatními, je nutnost současné aplikace s jiným vzorem. Jedná se o situaci, kdy samostatné použití popisovaného vzoru je buď úplně nebo skoro neefektivní. Pro jeho správnou aplikaci musí být použit jeden nebo i více podpůrných vzorů, které zajišťují jeho plné využití. Reference - popisují situace, kdy byl pattern již použit na existujících systémech. Zvyšuje důvěryhodnost schopnosti navrhovaného řešení. Použití návrhového vzoru může sloužit i jako ilustrativní příklad (viz Příklady).

15 Příklad vzoru - Dekorátor

16 Příklad vzoru – Data Accessor
Description Context Applicability Structure Interactions Consequences Strategies Sample Code Related Patterns and Technology

17 Příklad vzoru - Diskuse

18 Vzor jako dokument Vzor je strukturovaný dokument
Vzor je formalizované řešení

19 Vzor jako slovník Názvy vzorů v katalogu tvoří slovník
Usnadňují pochopení toho, o čem se mluví Zkracuje dokumentaci. Př. Webové vzory: Informace o produktu, Diskuse, Informace o ceně, Možnost nákupu, Login Popis webové stránky: Stránka o produktu obsahuje Informaci o produktu, Informaci o ceně s Možností nákupu a možností přihlášení přes Login. Ve spodní části je Diskuse. Vzory jako slovník Možná nejdůležitější vlastností vzorů je to, že se pro jejich pojmenování používají výrazy, které výstižně charakterizují, o co se ve vzoru jedná. Použitím těchto výrazů v komunikaci pak velmi usnadní vzájemné pochopení toho, o čem se mluví. Mnohdy ani člověk nemusí mít detailní představu o tom, co přesně vzor při realizaci přináší za problémy, ale na komunikační úrovni to postačuje.

20 Jazyk vzorů Vzory se nepoužívají osamoceně
Vzory mají vztahy s ostatními vzory Skupina vzorů pro danou problémovou doménu tvoří jazyk

21 Softwarové vzory Architektura informačních systémů představuje náročný problém, závisí na ní úspěch celého systému V současné době nejrychleji rozvíjející se komunita Každá skupina vzorů má svojí klasifikaci Architektura těchto systémů představuje poměrně náročný problém a na jejím správném navržení většinou závisí úspěch celého systému. Architektura musí být jasné a srozumitelné sdělení, jakým způsobem budou realizovány požadavky od zadavatelů systému. Jasné musí být nejen pro uživatele, ale hlavně pro celý vývojový tým. Je určitě zajímavé a užitečné při jejím návrhu a tvorbě využívat standardních postupů, které ji zpřehledňují a usnadňují její implementaci. V praxi analýza systému příliš často končí u pochopení základních principů nového systému a není dále rozvíjena, aby plně pokryla všechny části navrhovaného systému. Analytici popíší pouze jakýsi obal systému, který něco vykonává. Potom dochází k rychlému návrhu datového modelu systému a začne se s implementací. S dokončováním systému začínají na povrch vystupovat problémy, o kterých před tím nikdo neuvažoval, a tím ani neřešil. Je to jako kdyby první architekt (analytik) navrhl dům. Zákazníkovi by vysvětlil, že když otočí kohoutkem, poteče voda. Na druhé straně by někdo navrhl úložiště vody, ale již nikdo neprovedl krok k propojení těchto dvou přístupů.

22 Návrhové vzory První a nejznámější je Gof Design Patterns: Elements of Reusable Object-Oriented Software (Návrh programů pomocí vzorů: Stavební kameny objektově orientovaných programů) Návrhové vzory (Design Patterns) zavádějí obecná řešení stejných situací v OOP. Klasické problémy: Jak se získá flexibilita v OOP, znovupoužitelnost, zapouzdření stavu objektu, dynamické rozšiřování funkcionality, jeden sdílený objekt, … Na počátku devadesátých let minulého století se začal utvářet Gang of Four (GoF), který tvořili pánové Erich Gamma, Richard Helm, Ralph Johnson a John Vlissides. Již v roce 1991 na ECOOP’91 představil Gamma a Helm několik návrhových vzorů (Composite, Decider, Observer atd.) Významné byly i konference na OOPSLA v roce 1991 a 1992, které se uskutečnily pod záštitou Bruce Andersena. Této konference se zúčastnili i mnozí z budoucí Hillside Group. Jak se získá flexibilita řešení v OOP, Jak se získá znovupoužitelnost řešení v OOP, Jak se zbavit nepříjemného efektu "namnožení tříd" při tvorbě stromů dědičnosti, Jak se zbavit složitosti formulářů a maximálně je zprůhlednit, Jak vytvořit "Undo efekt" s návratem objektů k původnímu stavu ve vaší aplikaci, Jak vyřešit situaci, kdy je třeba poslat požadavek objektu aniž bychom dopředu znali konkrétní operaci, která má být vyvolána (dynamické menu apod.) Jak vytvořit funkcionalitu u množiny objektů, které musí reagovat na změnu stavu jiného objektu, Jak flexibilně rozšířit funkcionalitu třídy a přitom nezasahovat do jejího kódu, Jak zvolit třídu na základě dat, například obsluha vybere v menu položku a vy musíte vytvořit podle toho objekt z dané třídy, Jak zabezpečit, aby z dané třídy vznikl pouze jeden a sdílený objekt (například spooler tiskárny, datový objekt, konekt apod.), Jak zavést kompatibilitu mezi dvěma jinak nekompatibilními interfacy, Jak zvýšit flexibilitu třídy pomocí dynamicky přilinkovaných objektů jako alternativní řešení k dědičnosti, Jak zabezpečit, aby libovolný objekt z dané rodiny "uměl" danou funkcionalitu na daný dotaz, tj. klient se může dotázat libovolného z těchto objektlů a dostane správnou a relevantní odpověď (například dotaz v helpu apod.), Jak ukládat objekty do relační databáze, a další...

23 Návrhové vzory - klasifikace
Tvořivé vzory – řeší problémy související s vytvářením objektů v systému (Factory Method, Builder, Singleton) Strukturální vzory – zaměřují se na uspořádání jednotlivých tříd a komponent v systému (Adapter, Bridge, Facade) Vzory chování – všímají si chování systému, spolupráci komponent (Interpreter, Memento, State, Strategy) Creational Patterns řeší problémy související s vytvářením objektů v systému. Snahou těchto návrhových vzorů je popsat postup výběru třídy nového objektu a zajištění správného počtu těchto objektů. Většinou se jedná o dynamická rozhodnutí učiněná za běhu programu. Mezi tyto návrhové vzory patří:

24 Vzory pro rozsáhlá řešení
Martin Fowler Enterprise aplikace řeší ukládání komplexních dat do relační DB, transakční zpracování, souběžný přístup, obsahují složitou aplikační logiku, řeší uživatelské rozhraní, integrují komponenty třetích stran Klasikace vzorù podle Martina Fowlera vychází z knihy [5]. Tato kniha pøedstavuje vzory, které se pou¾ívají pøi realizaci velmi rozsáhlých aplikací. Rozsáhlé aplikace (a mno¾ství dotèených softwarových odvìtví pøi vývoji softwaru. Enterprise aenterprise applications) patøí k tìm nejnároènìj¹ím aplikacím, co se týèe slo¾itosti architektury plikace zpravidla øe¹í ukládání komplexních dat do relaèní databáze, transakèní zpracování, soubì¾ný pøístup k datùm, obsahují slo¾itou aplikaèní logiku, nabízí u¾ivatelské rozhraní, poskytují podporu pro ovládání ze vzdálené aplikace, èasto vyu¾ívají dal¹í aplikace tøetích stran, vy¾adují vysokou bezpeènost, robustnost, ¹kálovatelnost apod. Vzory v této publikaci jsou urèeny pro programátory, návrháøe a architekty.

25 Vzory pro rozsáhlá řešení - klasifikace
Vzory pro doménovou logiku Vzory pro architekturu datových zdrojů Objektově-relační vzory chování Objektově-relační strukturální vzory Objektově-relační mapovací vzory využívající metadata Vzory pro webovou prezentaci Vzory pro distribuované prostředí Vzory pro řešení souběžného přístupu k datům Vzory pro ukládání stavu během sezení Základní vzory Vzory pro doménovou logiku (Domain Logic Patterns) popisují, jak rozdìlit aplikaci do vrstev, dále popisují architekturu v rámci vrstvy aplikaèní logiky. Tyto vzory øe¹í problémy, které se týkají rozdìlení slo¾itosti øe¹eného probl émù do sady objektù aplikaèní logiky. Vzory pro architekturu datových zdrojù (Data Source Architectural Patterns) popisují, jakým zpùsobem komunikuje aplikaèní logika s databází. Umístit do aplikaèní logiky kód pro komunikaci s databází má spoustu nevýhod, tyto vzory popisují, jak tento problém øe¹it. Objektovì-relaèní vzory chování (Object-Relational Behavioral Patterns) øe¹í zpùsob ukládání zmìnìných dat do databáze. Pøi slo¾itìj¹ím výpoètu mù¾e 12 být obtí¾né uhlídat, která data byla modikována a musí být ulo¾ena do databáze. Tyto vzory pøicházejí v úvahu, pokud máme vìt¹í mno¾ství zá- znamù, nad kterými se pracuje. Objektovì-relaèní strukturální vzory (Object-Relational Structural Patterns) øe¹í problémy s odli¹nou reprezentací vazeb mezi entitami v objektovém prost øedí a v relaèní databázi. V objektové prostøedí se vazba realizuje referencí nebo ukazatelem na objekt. V relaèní databázi se vazba realizuje ulo¾ením klíèe v jiné tabulce. Objektovì-relaèní mapovací vzory vyu¾ívající metadata (Object-Relational Metadata Mapping Patterns) Vzory pro webovou prezentaci (Web Presentation Patterns) jsou vzory, které øe¹í architekturu webové prezentaèní vrstvy. Vzory pro distribuované prostøedí (Distribution Patterns) popisují øe¹ení probl émù bì¾nì se vyskytujících v distribuovaném prostøedí, jako jsou tvorba rozhraní pro vzdálené volání, zpùsob výmìny dat apod. Vzory pro øe¹ení soubì¾ného pøístupu k datùm (Oine Concurrency Patterns) Vzory pro ulo¾ení stavu bìhem sezení (Session State Patterns) { tyto vzory øe¹í problém ulo¾ení stavu buïto na klientskou stranu, na stranu servetu nebo ulo¾ením stavu do databáze. Základní vzory (Base Patterns) je skupina elementárních vzorù, které jsou pou- ¾itelné v ¹ir¹ím kontextu.

26 Microsoft vzory pro rozsáhlá řešení
Pokrývají proces vývoje software na platformě Microsoft Obsahuje i implementační vzory Vzory jsou rozděleny podle úrovně abstrakce do tzv. Organizační tabulky vzorů émìø celý proces vývoje software na platformì Microsoft. Èást vzorù jsou tzv. implementaèní vzory, popisují praktické zku¹enosti autorù pøi pou¾ití dan ého vzoru na platformì Microsoft. V knize je obsa¾ena ¹kála vzorù od návrhov ých, implementaèních a¾ po vzory infrastruktury a nasazení. Dále jsou zde vzory rozdìleny podle úrovnì abstrakce. Na základì tohoto rozdìlení autoøi vytvoøili organizaèní tabulku vzorù, která organizuje vzory podle nìkolika pohledù.

27 MS vzory - klasifikace Skupiny vzorů, úrovně abstrakce, oblasti
použití, rámce vzorů Na základì rùzných oblastí pou¾ití mù¾eme vzory sdru¾ovat, èím¾ vytvoøíme skupiny vzorù pro nìjakou oblast pou¾ití, napø. skupiny vzorù pro prezentaèní vrstvu webové aplikací. Tím se nám prostor vzorù rozdìlí do dal¹ích logických jednotek. Rozdìlení vzorù na skupiny umo¾òuje lépe se je nauèit a lépe s nimi pracovat. Dále si musíme uvìdomit, ¾e se vzory pracují rùzní lidé v rùzných rolích pøi vývoji software. Proto autoøi rozdìlují vzory podle rùzné úrovnì abstrakce. Vzory pro architekturu (Architecture Patterns) popisují, jak strukturovat aplikace na nejvy¹¹í úrovni. Pøesná denice vzorù pro architekturu je k nalezení v [16]. Návrhové vzory (Design Patterns) jsou tyté¾ vzory se stejnou denicí, jak bylo uvedeno v pøede¹lé kapitole. Implementaèní vzory (Implementation Patterns) jsou nízkoúrovòové vzory zá- vislé na SW a HW platformì, popø. na pou¾itém programovacím jazyku. Popisují, jak implementovat rùzné aspekty komponent na dané platformì. Jeliko¾ softwarový proces pokrývá více èinností, ne¾ jen kódování, autoøi se rozhodli kategorizovat vzory podle oblasti pou¾ití.

28 Jak vybírat vzor? Podle GoF: Projít účelový oddíl
Prostudovat vzájemné vztahy vzorů Studium vzorů s podobným účelem Nastudovat vzory a najít shodu v charakteristikách problému, který se má řešit a který vzor řeší V katalogu s více než 20ti vzory na výběr může být obtížné najít takový, jenž řeší určitý problém, zvláště když je pro nás katalog nový a neznámý. Uvádím několik různých přístupů, jak najít vhodný vzor pro náš problém. Abychom našli jeden nebo více vzorů, které se zdají být relevantní pro náš problém, přešteme si jejich účely. Hledání zúžíme pomocí klasifikačního schématu, které je uvedeno v dané publikaci. Studium grafu vztahů nás může nasměrovat na správný vzor nebo skupinu vzorů.

29 Problémy, které vidíme „Klasifikace vzorů uvedená v každé knize je užitečná pro samotné studium a pro orientaci v dané problémové oblasti.“ „Existující klasifikace vzorů nepomáhají při hledání neznámého vzoru na daný problém.“ „Žádná existující klasifikace vzorů nedává přehled o tom, jak vzory z různých oblastí souvisí mezi sebou.“ Ka¾dý autor knihy o vzorech se sna¾í rozdìlit mno¾inu vzorù, kterými se zabývá, do nìkolika tøíd. Tyto tøídy neboli kategorie vzorù jsou závislé na pohledu autora na oblast, kterou vzory øe¹í. Taková kategorizace vzorù umo¾òuje lep¹í orientaci v dané oblasti a také v knize, která popisuje vzory pro danou oblast. Pokud se napø. zabýváme vzory pro integraci, je velice u¾iteèné rozdìlit integraèní vzory podle toho, jestli øe¹í komunikaci mezi aplikacemi, topologii, spojování systémù apod. Na základì této kategorizace se mù¾eme velice rychle orientovat ve vzorech týkajících se problému integrace systémù. Problém nastává v tom, ¾e pokud èlovìk nezná vzory pro danou problémovou doménu, existující klasikace vzorù mu není nápomocna. Pokud neznám dané vzory ani orientaènì, tì¾ko mohu vìdìt, jaké mají být nebo do jaké kategorie 20 mají patøit. V takovém pøípadì mohu spí¹e popsat svùj problém na základì jeho vlastností. Pokud napøíklad vím, ¾e hledám vzor pro zvý¹ení nezávislosti výpoètu na pou¾itém algoritmu v mém programu a neznám návrhové vzory, konkrétnì tøeba vzor Strategy, jen velmi málo mi pomù¾e informace, ¾e vzor patøí do skupiny vzorù chování. Pokud se èlovìk vìnuje studiu vzorù del¹í dobu, tak za nìjakou dobu si uvì- domí, ¾e existují vztahy mezi rùznými vzory z rùzných doménových oblastí. V posledn í dobì vznikají nové publikace, které dávají dohromady vzory z rùzných oblast í pro øe¹ení nìjaké rozsáhlej¹í úlohy. Kupøíkladu kniha [10] se vìnuje problematice webových prezentací z pohledu pou¾itelnosti, obsahu, navigace a estetiky. Pøedstavuje témìø 80 vzorù pro návrh webu. Problematikou návrhu a tvorbu webù se zabývá i kniha [11], která také spojuje vzory z více oblastí.

30 Současné přístupy www.patternshare.org
Autoři jsou členové komunity Microsoft Patterns & Practices Vychází z klasifikace Microsoftu Umožňuje zobrazení a procházení Organizační tabulky vzorů Možnost vkládání nových vzorů Pouze 3 pevné kategorie

31 Současné přístupy www.wupatterns.com
Web obsahuje povnou sadu vzorů z oblasti použitelnosti webových stránek (Web usability) Obsahuje grafické znázornění vztahů mezi vzory Neumožňuje další klasifikaci ani vyhledávání

32 Současné přístupy www.patternforge.net
Web vytvořený lidmi zabývající se katalogy vzorů Byl vytvořen jako výstup skupiny na konferenci EuroPLoP 2007 Obsahuje články, odkazy o vzorech Zachycuje činnost komunity

33 Současné přístupy Pattens Almanac 2000 (http://www.smallmemory.com/almanac/) Nejrozsáhlejší katalog vzorů Obsahuje pouze názvy a účel vzoru, publikaci Jednoduché vyhledávání Žádná klasifikace

34 Motivace Vytvoření vhodné flexibilní klasifikace vzorů
Vystihuje vlastnosti vzorů, otevřenost, … Vyhledávací aparát Hledání podle klasifikačních atributů Navigace v prostoru vzorů Grafová struktura, shlukovací metody Webový portál Komunitně zaměřený katalog vzorů Vytvoøení vhodné exibilní klasikace vzorù. Tato klasikace by mìla vystihnout vlastnosti, které daný vzor svým øe¹ením poskytuje. Klasikace musí být otevøená a exibilní tak, aby se mohla pøizpùsobit novým pohledùm a novým klasikacím vzorù. Vyhledávací aparát. Vyhledávání by mìlo umo¾nit najít vzory podle ohodnocení klasikaèními atributy. Tím se získá základní mno¾ina vzorù splòující dané vlastnosti. Navigace v prostoru vzorù. V prostoru vzorù by mìla existovat navigaèní struktura typu graf. Ta by mìla umo¾nit sluèování vzorù s podobnými vlastnostmi do uzlù a pohyb mezi uzly. Tím se u¾ivatel mù¾e þdonavigovatÿ do nìjakého uzlu, resp. do nìjaké konkrétní mno¾iny vzorù, které øe¹í daný problém v daném kontextu. Webový portál. Cíle této práce by mìla naplòovat aplikace dostupná v¹em potencion álním u¾ivatelùm. Tato aplikace bude pøipravená pro oèekávanou cílovou skupinu u¾ivatelù, tzn. pro lidi zabývající se softwarovými øe¹eními. Tato aplikace by mìla být komunitì zamìøená a mìla by slou¾it jako poèá- teèní místo pro nalezení vzorù, nikoli pro detailní studium vzorù.

35 Vize Veřejně přístupná aplikace (www.pattron.net)
Komunity pro sdružení lidí se stejným zájmem Kategorizační atributy pro klasifikaci Možnost hlasování Vyhledávání filtrováním atributů Shluky vzorů na základě příslušnosti k atributům (např. formální konceptuální analýza) Výchozí místo pro studium vzorů Vznikne nová webová aplikace s názvem Portál vzorù. Tato aplikace bude veøejnì pøístupná v¹em u¾ivatelùm na internetu. Aplikace bude mít charakter portálu s komunitami. Komunity budou logické celky, které budou sdru¾ovat u¾ivatele se stejnou oblast í zájmu, stejným pohledem na vzory apod. Ve¹keré èinnosti se budou odehrá- vat v rámci komunity. Rùzné editaèní a vkládací akce v systému budou provádìny pouze èleny komunity. Komunita bude mít svoje administrátory, kteøí potvrzují editaèní akce ostatních èlenù komunity. Ka¾dá komunita mù¾e pracovat s jinou mno¾inou kategorizaèních atributù, popisných informací o vzoru, u¾ivatelsky denovaných pohledù na vzory a ¹ablon pro vytváøení vzorù. Ka¾dý èlen komunity se mù¾e vyjádøit, jestli je daná entita pro nìj v dané komunitì u¾iteèná nebo ne. K výsledkùm hlasování má pøístup ka¾dý u¾ivatel systému.

36 Shlukování vzorů (FCA)

37 Návrh systému

38 PATTRON Realizovaný experimentální webový portál vzorů www.pattron.net
Obsahuje přes 300 vzorů a 140 klasifikačních atributů nalezeno 420 shluků

39 PATTRON - ukázka vzoru Behavioral patterns Design patterns
Patterns applied to objects proper for - Intermediate resolve coupling resolve coupling – comunication between objects resolve flexibility resolve flexibility – algorithm independence resolve flexibility – modification of class / interface resolve flexibility – tightness of coupling

40 PATTRON – vyhledávání vzorů

41 PATTRON – tabulky vzorů

42 PATTRON – tabulky vzorů (2)

43 PATTRON – klasifikační atributy

44 PATTRON – navigace v prostoru vzorů

45 PATTRON – navigace v prostoru vzorů

46 PATTRON – navigace v prostoru vzorů

47 PATTRON – navigace v prostoru vzorů

48 Konference EuroPLoP 2007 Nejvýznamnější evropská konference o vzorech
Patří do série PLoP konferencí konaných po celém světě Schvalování vzorů

49 Konference EuroPLoP 2007 Byli jsme účastníci v sekci „pattern repositiries focus group“ Ostatní řeší Strukturu,zápis popisu vzorů Klasifikační metody

50 Konference EuroPLoP 2007 Hlavní diskuse na téma pattern repositories
Diskusi ovládl Frank Buschman Problém vidí v návratnosti investic, protože věc nemá business model

51 Konference EuroPLoP 2007 Komunita lidí věnujících se vzorům se neustále rozšiřuje Vznikají jazyky vzorů např. z filmové branže, kuchařství Diskutuje se o tom, jak se vzory zacházet Do klasifikace by se měli zapojit autoři

52 Závěr konference EuroPLoP 2007

53 Spolupráce se studenty
Plníme systém PATTRON dalšími vzory Hledáme atributy Ohodnocujeme vzory Máme málo společných atributů pro vzory z různých domén

54 Spolupráce se studenty
V rámci bakalářských a diplomových prací studujeme vybrané knihy Hledáme nové webové vzory Hodnotíme příslušnost webového vzoru na webové stránce

55 Děkuji za pozornost.


Stáhnout ppt "Vyhledávání softwarových vzorů"

Podobné prezentace


Reklamy Google