Programové vzory

21 Jun 11:30 am


Original: http://www.cs.wustl.edu/~schmidt/CACM-editorial.html

Starší inženýrské disciplíny mají příručky, které popisují úspěšné řešení známých problémů. Například automobilový konstruktéři nemají navrhovat auta pomocí fyzikálních zákonů. Místo toho, oni znovu typové projekty s úspěšnými traťových rekordů. Navíc několik procent výkonu k dispozici tím, že začíná od nuly, je obvykle nestojí za náklady.

 

Tématem tohoto vydání je “ vzory” a “ vzor jazyky”, které jsou pokusem popsat úspěšné řešení běžných softwarových problémů. Dlouhodobým cílem je rozvíjet příruček pro softwarové inženýry. I když jsme daleko od tohoto cíle, vzory se ukázaly užitečné v krátkodobém horizontu pomoci lidem znovu úspěšné postupy. Nejen, že vzory naučit užitečné techniky, které pomáhají lidem lépe komunikovat, a pomáhají lidem důvod, proč o tom, co dělají a proč. Navíc, vzory jsou krokem k příruček pro softwarové inženýry.

 

Vzor je opakující se řešení na standardní problém. Pokud jsou související vzory tkané dohromady tvoří “” jazyk, který poskytuje postup pro řádné řešení problémů vývoje softwaru. Vzor jazyky nejsou formální jazyky, ale spíše sbírka souvisejících vzorců, které však poskytují slovní zásobu k tomu mluvit o určitém problému. Oba vzory a vzory jazyky pomoci vývojářům komunikovat architektonické znalosti, pomoci lidem naučit se nový design paradigma nebo architektonický styl a pomáhají noví vývojáři ignorovat pasti a nástrahy, které byly tradičně naučili jen nákladné zkušenosti.

 

Vzory mají kontext, ve kterém se používají. Kromě toho je třeba se vyrovnat, nebo kompromis, soubor protichůdných sil. Způsob, jakým popsat vzory musí všechny tyto věci jasné. Srozumitelnost projevu usnadňuje vidět, kdy a proč používat určité vzory, stejně jako kdy a proč používat tyto vzory. Všechna řešení jsou náklady a vzor popisy by měly být vykázány náklady jasně.

 

Z jednoho úhlu pohledu, není nic nového o vzory, protože podle definice šablon snímání zkušenosti. Již dlouhou dobu je známo, že programátorských expertů si nemyslím, že o programech z hlediska nízké úrovně prvků programovacího jazyka, ale vyššího řádu abstrakcí [Adelson a Soloway] [Soloway a Erlich] [Curtis] [Linn a Clancy]. Novinkou je, že lidé se snažíme systematicky dokumentů abstrakce než algoritmů a datových struktur. Obecně platí, že většina lidí, kteří pracují na vzorech se nesoustředí na rozvoj Formalismy pro vyjádření struktury nebo nástroje pro jejich používání, i když pár lidí. Místo toho se soustředí na dokumentování klíčových vzorů, které úspěšně používají vývojáři, ale že poměrně málo vývojáři důkladně pochopit a důsledně uplatňovat ve své každodenní práci.

 

Většina lidí dokumentujících vzory jsou motivováni z následujících hodnot:

 

Úspěch je důležitější než novinky.

 

Čím déle vzor byl úspěšně použit, cennější, že bývá. Ve skutečnosti může být novinka závazek, protože nové technologie jsou často nevyzkoušené. Nalezení vzor je otázkou zjištění a zkušeností, nikoli vynálezu. Nová technika může být dokumentováno jako vzor, ​​ale jeho hodnota je známa pouze poté, co se snažil. To je důvod, proč většina vzory popsat několik použití.

 

Důraz na psaní a jasnost komunikace.

Většina vzor popisy dokumentů opakující se řešení s použitím standardního formátu. Těšíme se na den, kdy budeme mít příruček pro softwarové inženýry. Proto jsme psát naše vzory v podobě, která je jako zápis do katalogu. V tomto smyslu, vzor popisy jsou jak literární styl a technická dokumentace.

Důraz na čisté psaní pramení z naší kolektivní zkušeností s vývojem komplexních softwarových systémů. V mnoha případech, projekty se nezdařila, protože vývojáři nebyli schopni komunikovat dobrý software, design, architektura a programování postupy k sobě navzájem. Dobře napsaný vzor popisy zlepšit komunikaci o pojmenování a výstižně formulování struktury a chování řešení běžných softwarových problémů.

 

Kvalitativní ověření znalostí.

Další část naší etiky je kvalitativně popsat konkrétní řešení softwarových problémů, místo kvantifikace nebo teoretizování o nich. Zde je místo pro teoretickou a kvantitativní práci, ale máme pocit, tyto činnosti jsou vhodnější v kontextu samostatného z objevování a dokumentování vzory. Naším cílem je ocenit a odměnit tvůrčí proces, který expertní vývojáři použít k vytvoření vysoce kvalitní softwarové systémy.

 

Dobrý vzory vznikají z praktických zkušeností.

Každý zkušený vývojář cenné vzory, které bychom chtěli podělit. Ceníme si zkušenosti všech softwarových vývojářů, a nemyslím si, že jen málo lidí má vzory, a všichni ostatní jen sedí zpět a učí je. To je důvod, proč naše používání spisovatele workshopů byly tak úspěšné, na vzor konferencích. V spisovatele dílny, účastníci diskutovat o silných a slabých stránek každého vzoru, zvýraznit pozitivní aspekty vzorů, podělte se o své vlastní zkušenosti a navrhují zlepšení v obsahu a stylu. Writer dílen předpokládat, že všichni můžeme učit od sebe navzájem.

 

Uznávají důležitost lidských dimenzí ve vývoji softwaru.

Účelem vzorů není nahradit developer kreativitu mechanického uplatňování přísných pravidel navrhování. Ani se snažíme nahradit programátory s automatizovanými CASE nástrojů. Místo toho, naším záměrem je, aby uznaly význam lidského faktoru na vývoj softwaru. Toto uznání se objeví v návrhových vzorů, když budeme diskutovat jejich vliv na komplexnosti a srozumitelnosti softwarových systémů. Navíc toto uznání se projevuje ve vzorech pro účinné procesu softwaru a organizace.

Noviny v této otázce jsou dobrým zástupcem vzorů se píše dodnes. První softwarové vzory byly napsány objektově orientovaných vývojářů, a tak se zaměřuje na objektově orientovaného návrhu a programování [GOF] nebo na objektově orientované modelování [Coad]. I když je stále velký zájem o objektově orientovaných modelů, nový trend se vzory, které se zaměřují na efektivní, spolehlivé a škálovatelné souběžných, paralelních a distribuovaných programů [PLoP2, Schmidt1, SIEMENS].

Většina článků v tomto speciálním vydání následovat druhý trend. McKenney s papírem na “ Výběr Uzamykání primitiva pro paralelní programy” popisuje soubor vzorů používaných k vytvoření účinných operačních systémů pro víceprocesorové platformy. Islám a Devarakonda s papírem na “ základním návrhový vzor pro fault-tolerant Distributed State” sdílení zaměřuje na návrhový vzor použit k vytvoření spolehlivých distribuovaných software. Aarsten, Brugali a Menga s papírem na “ Návrh paralelních a distribuovaných systémech řízení: Přístup založený na Design Patterns” představuje vzor jazyk pro vývoj software pro distribuované rozsáhlých řídicích systémů.

Další nedávný trend ve struktuře literatury se zaměřuje na řízení, sociologické a organizační otázky. Dva příspěvky v této otázce řešení těchto témat. Cockburn s papírem “ na interakci sociální otázky a softwarová architektura,” popisuje vzor jazyk, který ukazuje, jak sociální síly ovlivňují rozhodnutí, která formují strukturu softwarových vzorů. Goldfedder a rostoucí s papírem na “ vzory: Training Experience” pojednává o organizační a sociologické aspekty zavádění vzorů do komerčního prostředí pro vývoj softwaru.

Studie vzorů je dobře zaveden v mnoha dalších oblastech, včetně architektury, antropologie, hudbu a sociologie. Inovátoři softwarových vzorů byly velmi ovlivněny Christopher Alexander, který je výzkumný pracovník na University of California, Berkeley, který psal značně na vzory nalezené v architektuře rodinných domů, budov a komunit.

Jak jsme již získali zkušenosti s používáním vzory dokumentů odbornosti software, nové formáty a nová řešení se objevily, aby splňovaly specifické problémy spojené s vývojem softwaru. Například, mnoho vývojářů snadnější pochopení návrhové vzory pomocí software orientovaný vizuální pomůcky, jako jsou modely třídy a interakce grafů. Proto mnoho formátů vzor popis použití populární notace (např. modely Booch a OMT) výstižně vyjádřit svou strukturu a dynamické chování. Kromě toho, vzor popisy také obyčejně obsahují příklady zdrojového kódu, napsané v jazyce volby pro diváky.

 

Během několika příštích letech očekáváme následující aspekty vzorů obdrží značnou pozornost [Schmidt2].

 

Integrace návrhových vzorů spolu s rámců.

Některé z nejvíce užitečných vzorců popsat rámce. Tyto modely lze považovat za abstraktní popisy rámců, které umožňují rozsáhlé opětovné použití softwarové architektury. Stejně tak je možné pohlížet jako rámce konkrétní realizací modelů, které umožňují přímé opětovné použití designu a kódu. Jeden rozdíl mezi vzory a rámců, je to, že vzory jsou popsány v jazykově nezávisle, zatímco rámce jsou obvykle prováděny v určitém jazyce. Nicméně, vzory a rámce jsou velmi synergické koncepty, se ani podřízena druhé. Příští generace objektově orientovaných rámců budou výslovně zahrnovat mnoho vzorů a vzory budou široce používán dokumentovat podobu a obsah rámců.

 

Integrace návrhových vzorů tvořit vzor jazyky.

Hodně z existující literatury o vzorech je organizována jako jsou katalogy návrhový vzor [GoF, Siemens]. Tyto katalogy představí kolekci relativně samostatné řešení běžných konstrukčních problémů. Čím více zkušeností, získaných pomocí těchto vzorců, budou vývojáři a autoři stále více integrovat skupiny příbuzných vzorů tvořit vzor jazyky. Tyto vzor jazyky budou zahrnovat rodinu příbuzných vzorů, které pokrývají jednotlivé domény a oborů, od souběžnosti, distribuce, organizační design, software opětovné použití, real-time systémy, obchodní a elektronického obchodu, a lidské design rozhraní.

Ve stejném smyslu, že komplexní aplikačních rámců podpory většího rozsahu opětovné designu a kódu, než dělat stand-alone funkce a třídy knihovny, bude vzor jazyky podporují větší měřítku opětovné použití softwarové architektury a designu než jednotlivé vzory. Rozvoj komplexní vzor jazyky je i časově náročné, ale poskytne největší přínos pro vzor-založené vývoj softwaru v průběhu několika příštích let.

 

Integrace se stávajícími metodami vývoje softwaru a modely softwarového procesu.

Vzory pomoci zmírnit složitost softwaru v několika fází životního cyklu softwaru. Ačkoli vzory nejsou vývoje softwaru metoda nebo postup, které doplňují stávající metody a postupy. Například, vzory pomáhají překlenout abstrakce v doméně analýzy a architektonických fáze s konkrétní realizací těchto odběrů na realizaci a údržbu fáze. Při analýze a návrhu fáze, vzory pomohl řídit vývojářům při výběru ze softwarových architektur, které se ukázaly jako úspěšné. Při provádění údržby a fází, které pomáhají dokumentovat strategické vlastnosti softwarových systémů na úrovni vyšší, než zdrojovým kódem a modely jednotlivých softwarových modulů.

Nakonec, vzory jsou úspěšné, protože lidé mít čas číst, učit je, používat je a napište je. Doporučujeme vám, abyste se zapojili s ostatními, kteří pracují na vzory tím, že navštěvuje konference, účast na on-line e-mailové konference, a přispívat své postřehy a zkušenosti. Chcete-li zjistit o knihách, on-line elektronických dokumentů, e-mailové konference, kongresy a konference o vzory, viz vzory domovskou stránku.

 

Referenzia

[Adelson a Soloway] B. Adelson a E. Soloway. Role domény zkušenosti v Software Design. IEEE Trans. o softwarovém inženýrství, V SE-11, N 11, 1985, s. 1351-1360.

[Coad] P. Coad, objektově orientované vzory. Komunikace ACM, V 35 N 9, září 1992, s. 152 – 159.

[Curtis] B. Curtis, kognitivní problémy ve Užití Software artefakty. V opakované použitelnosti softwaru, V II. ed. T. a A. Biggerstaff Perlis, Addison Wesley 1989, s. 269-287.

[GoF] E. Gamma, R. Helm, R. Johnson a J. Vlissides, Design Patterns: Prvky opakovaně použitelných Object-Oriented Software. Reading, MA: Addison-Wesley, 1995.

[Linn a Clancy] M. Linn a M. Clancy, Případ pro případové studie programovací problémy. Komunikace ACM V 35 N 3, březen 1992, s. 121-132.

[PLoP2] JO Coplien, J. Vlissides a N. Kerth, eds.., Vzor Jazyky návrhu programu, Vol. 2. Reading, MA: Addison-Wesley, 1996.

[Schmidt1] DC Schmidt, Rodina Design Patterns na úrovni aplikací, bran, Teorie a praxe systém objektu, Wiley and Sons, se objeví 1996.

[Schmidt2] Schmidt, Douglas, Použití návrhové vzory pro vývoj opakovaně použitelného objektově orientovaný komunikační software, CACM, (Zvláštní vydání v objektově orientovaných zkušenosti, Mohamed Fayad a WT Tsai eds.)., 38, 10, října 1995.

[Siemens] F. Buschmann, R. Meunier, H. Rohnert, P. Sommerlad a M. Stal, Pattern-Oriented Software Architecture – Systém vzorů. Wiley and Sons, 1996.

[Soloway a Ehrlich] E. Soloway a K. Ehrlich, empirické studie znalosti programování, IEEE Transactions on softwarového inženýrství V. SE-10, 5 N, 09 1984.

Poslední změna 11:34:18 CEST 28.září 2006

Comments are closed