550 likes | 678 Views
Ondřej Lehečka ( ondrej.lehecka @ vsb.cz ), Miloš Kudělka, Václav Snášel TUO-V ŠB Ostrava. Vyhledávání softwarových vzorů. 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
E N D
Ondřej Lehečka (ondrej.lehecka@vsb.cz), Miloš Kudělka, Václav Snášel TUO-VŠB Ostrava Vyhledávání softwarových vzorů
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ů
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
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í
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“
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
Vzory nejsou • Momentální nápady autora • Nějaké triky • Popisy jediného způsobu řešení • Popisy, které nevnesou shodu mezi odborníky
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
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.
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í
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ů
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 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í
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
Vzor jako dokument • Vzor je strukturovaný dokument • Vzor je formalizované řešení
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.
Jazyk vzorů • Vzory se nepoužívají osamoceně • Vzory mají vztahy s ostatními vzory • Skupina vzorů pro danou problémovou doménu tvoří jazyk
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
Návrhové vzory • První a nejznámější je GofDesign 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, …
Návrhové vzory - klasifikace • Tvořivé vzory – řeší problémy související s vytvářením objektů v systému(FactoryMethod, 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)
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
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
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ů
MS vzory - klasifikace Skupiny vzorů, úrovně abstrakce, oblasti použití, rámce vzorů
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ší
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.“
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
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í
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
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
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ů
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ů
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ů
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ů
Konference EuroPLoP 2007 • Byli jsme účastníci v sekci „pattern repositiries focus group“ • Ostatní řeší • Strukturu,zápis popisu vzorů • Klasifikační metody
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