Vzorce

(patterns)

Písemný referát pro seminář Praktikum z programování.
Ondřej Bojar


...lidé často znovu vymýąlejí věci, které uľ někdo popsal...

...někdy jen proto, ľe cizí popisy myąlenek nevyhovují (jsou přílią obecné nebo naopak přílią konkréntní, přílią nesrozumitelné, vyľadují přílią mnoho daląích znalostí ap.)...

...psaním i čtením odborných popisů tráví lidé hodně času - chtějme tento čas zkrátit...

Vzorce jsou takové odborné dokumenty, jeľ usnadní autorovi psaní a čtenáři pochopení sdělovaných myąlenek.


1 Úvodní kapitola

1.1 Úvod

Tento referát pojednává o specifickém stylu odborných dokumentů, tzv. vzorcích (patterns). Vzorcem je do určité míry formalizovaný psaný dokument, který v sobě přináąí popis častého problému v určitém kontextu nějakého oboru spolu s osvědčeným řeąením. Příklady vzorců naleznete v daląím textu.

Referát je určen vąem, kteří občas potřebují předat nějaké své zkuąenosti a chtějí to učinit způsobem co nejefektivnějąím. Forma vzorce je navrľena tak, aby byl záznam myąlenek pro autora co nejpohodlnějsí a aby pochopení vzorce bylo pro čtenáře co nejrychlejąí a nejsnadnějąí. Jelikoľ jsou vzorce poměrně novým způsobem záznamu myąlenek, je jejich forma stále vylepąována a styl jejich psaní se autor od autora liąí. Cílem tohoto referátu je představit vám podrobněji jeden styl, který se mně osobně zdá velmi účinný, v příkladech daląích vzorců můľete posoudit styly jiné.

Čím se vzorce liąí od obyčejného popisu problému a jeho řeąení? Co přináąejí nového?

Dobrý vzorec jiľ v rámci svých Povinných sekcí představuje čtenáři nejen problém a jeho řeąení, ale předevąím kontext, v němľ bylo řeąení navrľeno a zvoleno. O důvodech volby daného řeąení se čtenář explicitně dozví prostřednictvím Viditelných sil, jeľ autora řeąení ovlivnily. Čtenář tak velmi záhy a snadno najde odpověď na své první otázky: K čemu je to celé dobré? Proč to vypadá právě takto?

Aľ čtenář (pouhým nahlédnutím do vzorce) zjistí, ľe ho problém a navrhované řeąení zajímá, bude se více zajímat o aspekty zvoleného řeąení. Odpovědi na své otázky najde v Roząiřujících sekcích vzorce. Často se jedná o příklady uľití vzorce v praxi, v případě vzorců týkajících se programování můľe jít o zdrojové texty programů jako ukázka implementace myąlenky vzorce v nějakém konkrétním programovacím jazyce ap.

Velmi podstatnou kvalitou, kterou by vzorce měly vykazovat, je Čitelnost na první pokus. Čtenáři vaąe řeąení nebudou ani studovat, bude-li to vyľadovat příliąné úsilí hned z počátku. V tomto referátu se dozvíte řadu doporučení, jak vzorce udělat snadno čitelné, s Přeskočitelnými sekcemi a podobně. Při psaní vzorců je ale nutné zároveň zajistit celkovou provázanost vzorce, nepokazit příliąným rozčleněním textu jeho spojitost a plynulost čtení. Vhodného kompromisu lze dosáhnout rozdělením sloľitého řeąení do Souboru vzorců a zajiątěním dobré návaznosti mezi příbuznými vzorci.

V tomto textu najdete kromě řady pravidel pro psaní dobrých vzorců i celou řadu příkladů, abyste se mohli nechat inspirovat. Vlastně celý referát je zapsán formou souboru vzorců, po vzoru stránky A Pattern Language for Pattern Writing, z níľ do značné míry čerpá. Anglicky mluvící čtenáři na zmíněné stránce naleznou soubor vzorců pro psaní vzorců zároveň napsaný formou vzorců. Jak praví její abstrakt, stránka se snaľí shrnout nejlepąí dovednosti pro psaní vzorců a zároveň je demonstrovat na dobrém příkladu, stránka sama chce být fungujícím příkladem. Dluľno říci, ľe je.

Nedílnou částí tohoto referátu budou i odkazy na sbírky hotových vzorců, určených zejména pro obor informatiky a programování.

Není mi známo, ľe by existoval český dokument pojednávající o vzorcích. Z tohoto důvodu jsem sám musel zavést český překlad vzorec termínu pattern.

1.2. Návod, jak číst tento referát

Čtěte tento referát tak, jak lze číst vzorec kaľdý: hledáte-li odpověď na konkrétní problém, projděte si přiloľené tabulky problémů a řeąení, aľ najdete vzorec, který nejspíąe na váą problém odpovídá, začněte čtením sekcí jméno, problém a řeąení, ostatní sekce jsou Přeskočitelné. Aľ zjistíte, ľe vás vzorec patrně zajímá, přečtěte si oddíly kontext a síly, abyste zjistili, jestli je vzorec pouľitelný ve vaąí situaci. Závěrem se podívejte na princip, výsledný kontext nebo příbuzné vzorce a příklady.

Jinou moľností je číst celý referát pěkně popořádku, forma vzorce je totiľ navrľena tak, aby proud čtenářových myąlenek netrhala.

V tomto textu jsou kurzívně vyznačována jména vzorců, tučně pak jejich vnitřní sekce. Přímé hypertextové odkazy na vzorce (způsobující typicky modré a podtrľené písmo) jsou záměrně potlačeny, aby neruąily ve čtení. Chcete-li, můľete uľít rejstříku na úplném konci tohoto dokumentu.

1.3. Shrnutí referátu

Referát byl pro přehlednost rozdělen do následujících kapitol:

1
Úvodní kapitola
je ta část referátu, kterou právě čtete, obsahuje vysvětlení formy vzorce dosud klasickým způsobem.
2
Vzorce o vzorcích
podrobně vysvětlují myąlenku vzorců (řeąení určitého problému v určitém kontextu) a soustav vzorců (rozčleňujících sloľitý problém na řadu dílčích problémů, jejichľ řeąení je moľné přednést přehledněji).
3
Vzorce o vnitřní struktuře vzorců
vám pomohou rozhodnout, jak formou vzorců napsat vlastní řeąení - kdy volit vzorec jediný a kdy dát přednost členění problému do řady vzorců, jak rozčlenit informaci do Povinných sekcí a Roząiřujících sekcí.
4
Vzorce pro lepąí styl
obsahují konkrétní stylistická doporučení, aby byly vaąe vzorce srozumitelné, čitelné na první pokus a snadno zapamatovatelné.
5
Příklady vzorců pro programátory
ilustrují, jak lze formu vzorce dobře pouľít pro představení informatických dovedností. Mimochodem se zde dozvíte, jak psát Snadno srozumitelný kód.
6
Náčrtky externích vzorců
obsahují stručná shrnutí vzorců, jeľ přesahují rámec tohoto referátu, ale na něľ se vzorce v referátu odkazují.
7
Dodatky
obsahují doslov, seznam literatury a odkazů a rovněľ rejstřích vąech vzorců.

Věřím, ľe vás forma vzorce zaujme, a ľe se rovněľ pokusíte zapisovat své dovednosti tímto čitelným způsobem.


2 Vzorce o vzorcích

Dva vzorce v této kapitole vysvětlují formu vzorce. Pokud chcete sdělit malé řeąení malého problému v určitém kontextu, zapiąte je formou Vzorce. Větąí řeąení sloľitějąích problémů bývá uľitečné rozdělit do větąího Souboru vzorců.

2.1 Vzorec: Vzorec

Kontext:

Jste zkuąený odborník ve svém oboru. Postřehl jste, ľe opakovaně uľíváte určité řeąení častého problému. Rád byste se o své zkuąenosti podělil s ostatními.

Problém:

Jak popsat opakující se řeąení určitého problému tak, aby bylo snadno pouľitelné i pro ostatní?

Síly:

Řeąení:

Napiąte své řeąení formou vzorce (pattern). Zachy»te obojí, problém i jeho řeąení, současně zdůvodněte, proč je řeąení pouľitelné. Uľijte vąechny Povinné sekce, abyste zajistili jasné sdělení vąech základních informací. Přidejte Roząiřující sekce s daląími uľitečnými informacemi. Roząiřte vzorec mezi nejąirąí publikum, které by jej mohlo vyuľít, aniľ by tím byla ohroľena vaąe výhoda ve veřejné soutěľi. Často to znamená uveřejnění vaąeho vzorce výhradně pro interní potřeby vaąí společnosti.

2.2 Vzorec: Soubor vzorců

Alternativní názvy: Pattern Language

Kontext:

Pokouąíte se formou vzorce popsat rozsáhlou proceduru nebo sloľité řeąení sloľitého problému. Některé z popisovaných kroků je třeba uplatnit jen za určitých okolností. Jednotlivé části problému mohou mít podle okolností alternativní řeąení. Jeden vzorec neobsáhne celou sloľitost problému.

Problém:

Jak přehledně popsat řeąení, aby bylo současně moľné pouľívat jeho různé části za různých okolností?

Síly:

Řeąení:

Rozdělte rozsáhlý problém a jeho velké řeąení nebo postup na dílčí problémy a odpovídající řeąení. Popiąte zvláą» kaľdou dvojici problém/řeąení v samostatném vzorci, jako součást souboru vzorců. Kaľdý vzorec by měl řeąit jeden specifický problém. Usilujte o to, aby bylo vzorec moľné smysluplně pouľít i samostatně nebo jen s omezeným počtem daląích vzorců vaąeho souboru.

Aby dílčí vzorec získal svou identitu, dejte mu Návodné jméno, jímľ se na něj bude moľné později odkazovat. Pak popiąte celkový problém a způsob, jakým na sebe dílčí vzorce navazují, ve Shrnutí souboru vzorců. Jednotlivé vzorce mezi sebou propojte pomocí Čitelných odkazů na vzorce, předevąím v sekcích Kontext a Příbuzné vzorce.

Příbuzné vzorce:

Soubor vzorců by měl být uveden Shrnutím souboru, které popisuje celkový problém a vzorce, jeľ jej řeąí. Shrnutí typu Problém/Řeąení je klíčovou částí tohoto úvodu, protoľe dovoluje vyjímat jednotlivé vzorce ze souboru, zvláątě pokud se k materiálu jen odkazujeme. Větąí soubory vzorců mají často netriviální strukturu, kterou lze nejlépe zvýraznit uľíváním Titulků rozliąujících strukturu. Pokud má jeden problém více alternativních nebo dokonce navzájem se vylučujících řeąení, můľete jejich popisy uvést v samostatných vzorcích. V tomto případě pro čtenáře Zvýrazněte společný problém této skupiny vzorců.

Dobrým způsobem, jak propojit vzorce v souboru a jak ujasnit pouľití souboru vzorců v praxi, je Fungující příklad, který ilustruje pouľití vzorců na příladu větąího problému.

Vzorce popisující tvorbu souboru vzorců přesahují rozsah tohoto referátu, a naleznete je proto jen v podobě náčrtků v kapitole 6.

Příklad:

Samotný tento referát je příkladem souboru vzorců o tom, jak psát vzorce. Představuje řeąení jako soubor vzorců, z nichľ kaľdý popisuje konkrétní menąí problém a jeho řeąení.


3 Vzorce o vnitřní struktuře vzorců

Vzorec je popis řeąení určitého problému, který se opakuje v určitém kontextu. Této charakteristice vąak zdánlivě vyhovuje mnoho typů psaných dokumentů. Hlavní výhodou formy vzorce je vąak schopnost popsat kromě samotného řeąení předevąím důvody jeho uľívání. Klíčem k tomuto popisu je charakterictiská struktura formy vzorce.

Vzorce v tomto oddílu popisují vnitřní strukturu kaľdého vzorce, a» uľ je samostatný, nebo součástí Souboru vzorců. Vzorce jsou srozumitelnějąí, jestliľe obsahují vąechny Povinné sekce. Roząiřující sekce dávají autorům vzorců dostatečnou moľnost podle potřeby přidat daląí informace a rozčlenit je co nejpřehledněji.

3.1 Vzorec: Povinné sekce

Alternativní názvy: Mandatory Elements Present, All Elements Present

Problém:

Jak se ujistit, ľe vąechny potřebné informace jsou ve vzorci obsaľeny?

Kontext:

Píąete vzorec, a» jiľ samostatný, nebo jakou součást větąího souboru vzorců.

Síly:

Čtenáři očekávají, ľe ve vzorci naleznou určitou informaci. To je to, co odliąuje vzorce od pouhých popisů problémů a řeąení.

Řeąení:

Zajistěte, aby ve vaąe vzorci nechyběla ľádná z následujících povinných sekcí. Přesná jména sekcí se v různých stylech psaní a podle oboru pouľití vzorců různí a pořadí uvedených sekcí není tak důleľité, jako skutečnost, ľe ľádná z nich nebyla vynechána. Zvolíte-li jeden styl formy vzorce, snaľte se jej dodrľet i později.

Jméno vzorce (Pattern Name)
Jméno, jímľ se lze na vzorec s popisem problému a řeąení odkazovat.

Kontext (Context)
Okolnosti, za nichľ je problém řeąen, často vyjadřují omezení platnosti řeąení. Kontext je často popisován raději úvodem do situace neľ explicitním vyjádřením. Někdy, zvláątě v souboru vzorců, je kontext vzorce popsán seznamem vzorců, které uľ byly aplikovány.
Kontext zároveň určuje, které z popsaných sil je třeba respektovat více, třeba na úkor ostatních.

Problém (Problem)
Specifický problém, který je třeba řeąit. Zvolte takovou formulaci problému, která není ovlivněna kontextem a poľadovanými omezeními na řeąení.

Síly (Forces)
Seznam často protichůdných tvrzení, která je třeba uváľit při volbě řeąení daného problému. Významnost jednotlivých sil (které je třeba podpořit na úkor ostatních) je vyjádřena kontextem vzorce.

Řeąení (Solution)
Navrhované řeąení daného problému.
Uvědomte si, ľe větąina problémů má více neľ jedno moľné řeąení. Úspěąnost (kvalita, "dobrost") řeąení je významně ovlivněna kontextem, v němľ je problém řeąen. Kaľdé řeąení zohledňuje určité síly, některým dává přednost před jinými. Některé síly mohou být v řeąení i zcela pominuty. Nejlepąím řeąením je to, které nejlépe vyřeąí nejvýznamnějąí síly, podle pořadí určeného kontextem.
V popisu řeąení se čitelně odkazujte na uvedené síly, aby čtenář jasně pochopil, proč bylo zvoleno právě toto řeąení.
Více alternativních řeąení téhoľ problému můľete zapsat buď do jediného vzorce, nebo do skupinky vzorců, jeľ shrnete do Souboru vzorců. V tomto případě Zvýrazněte společný problém těchto vzorců.

Pokud váą text vybízí k podrobnějąímu strukturování základních sekcí svou příliąnou sloľitostí nebo délkou, zvaľte, zda jej nelze raději srozumitelně rozčlenit do Souboru vzorců.

Odůvodnění

Cílem vzorce je obsáhnout nejen popis řeąení určitého problému, ale poskytnout čtenáři i průhled do úvah, které předcházely volbě řeąení. Povinné sekce vzorce zajią»ují, aby byly vąechny základní informace předány. V mnoha vzorcích, které byly napsány od prvního vydání knih The Timeless Way of Building [Alexander79] a A Pattern Language [Alexander77], se ukazuje, ľe tyto Povinné sekce představují minimální soubor informací potřebný ke sdělení určitého vzorce.

Příklady

Vąechny vzorce v tomto souboru obsahují Povinné sekce. Tím je zaručeno, ľe potenciální uľivatelé vzorců pochopí, kdy a proč vzorce pouľít. Sekce vzorců jsou zvýrazněny písmem. Větąina vzorců tohoto souboru začítá sekcí problém následovanou popisem kontextu, někdy je tomu naopak.

V různých stylech psaní vzorců se můľete setkat s odliąnými názvy a uspořádáním sekcí. Přehled různých stylů spolu s popisem jejich vlastností lze najít v [Copelien96], v páté kapitole tohoto referátu jsou na příkladech vzorců pro programátory některé odliąné styly vzorců ilustrovány.

Christopher Alexander v knize A Pattern Language uľívá tento základní postup: Povinné sekce jsou odděleny typograficky, odstavce řeąení začínají slovem "therefore" (a proto). V knize Design Patterns [GHJV95] jsou sekce problém a řeąení nahrazeny oddíly záměr a pouľitelnost a doplněny konkrétnějąím příkladem problému v sekci motivace. Sekce řeąení je rozvedena ve čtyčech oddílech: struktura, účastníci, spolupráce a implementace.

3.2 Vzorec: Roząiřující sekce

Alternativní názvy: Optional Elements When Helpful

Kontext:

Píąete vzorec se vąemi Povinnými sekcemi, abyste zaručili, ľe jsou ve vzorci obsaľeny vąechny nezbytné informace.

Problém:

Jak sdělit důleľité informace, které se vąak nehodí do povinných sekcí?

Síly:

Řeąení:

Následující sekce lze do vzorce přidat, pokud to usnadní porozumění vzorci nebo zlepąí propojení vzorce s příbuznými vzorci.

Náznak, předzvěst (Indications)
Znaky, které indikují, ľe problém existuje.

Výsledný kontext (Resulting Context)
Kontext, do něhoľ se dostaneme po pouľití řeąení. Můľe obsahovat daląí nové problémy, které bude třeba řeąit. Můľe být přípravou na pouľití daląího vzorce, třeba následujícího vzorce v tomto souboru.

Příbuzné vzorce (Related Patterns)
Přehled vzorců, které by mohly čtenáře rovněľ zajímat. Například:

Příklady (Examples)
Konkrétní příklady aplikace tohoto vzorce.

Příklady zdrojových kódů (Code Samples)
V případě vzorce určeného pro programátory ukázkový kód, který ukazuje, jak myąlenku vzorce implementovat v nějakém konkrétním programovacím jazyce.

Odůvodnění (Rationale)
Vysvětlení, které říká, proč je zvolené řeąení v daném kontextu tím nejvýhodnějąím. Můľe být rozvitím informace, jeľ se neveąla do sekce sil.

Alternativní názvy (Aliases)
Daląí jména, pod nimiľ tento vzorec můľe být znám.

Poděkování (Acknowledgements)
Sluąí se poděkovat vąem, kteří se významně podíleli na tvorbě tohoto vzorce (nebo souboru vzorců) nebo na návhru technik, které tento vzorec popisuje.

Podle potřeb vaąeho oboru lze samozřejmě zavést i daląí roząiřující sekce.

Příklady:

V knize Design Patterns je výsledný kontext znám jako důsledky. Příklady lze nalézt v sekci Známá pouľití a celý problém je představen na konkrétním příkladu v sekci motivace.

Myąlenku předzvěsti zavedl [Cockburn96], který tuto sekci nazývá symptomy. V lékařských popisech onemocnění je tato sekce klíčová.

3.3 Vzorec: Viditelné síly

Alternativní názvy: Visible Forces

Problém:

Vzorec představuje řeąení určitého problému v nějakém kontextu. Jak zajistit, aby čtenář pochopil, proč bylo zvoleno právě popisované řeąení?

Kontext:

Píąete vzorec nebo soubor vzorců, která má čtenáři přinést jedno určité nebo více moľných řeąení nějakého problému. Snaľít se ve vzorci uľít vąechny Povinné sekce a v tuto chvíli chcete psát sekci síly.

Síly:

Řeąení:

Nehledě na zvolený styl vzorce zajistěte, aby síly byly jasně viditelné. Zdůvodnění, proč řeąení vzorce pouľít je jednou z klíčových kvalit vzorce.

Síly můľete zvýraznit buď pomocí odděleného seznamu nebo zavedením smysluplných "jmen" pro kaľdou sílu. V případě vzorců psaných v podobě souvislého textu uľijte zvýraznění pomocí písem, podtrľení nebo daląích typografických technik.

Příklady

Tento soubor vzorců uľívá pro zápis sil samostatné sekce s vlastním titulkem.

[Foote96] zvýrazňuje síly přímo v souvislém textu popisujícím vzorec.


4 Vzorce pro lepąí styl

Vzorec je uľitečný, jen pokud je přijat svými čtenáři. Autor vzorce můľe vynaloľit velké úsilí, aby popsal své řeąení, vąechno toto úsilí vąak přijde vniveč, pokud čtenář vzorci neporozumí nebo frustrován čtení vzdá. Klíčovou roli pro srozumitelnost vzorce hraje kvalita stylu psaní, tento faktor zde ale nebudeme studovat. V následujících vzorcích popíąeme jiné faktory, některé spíąe obecné, některé specifické pro formu vzorce. Uvedené vzorce popisují jevy, jeľ mají významný vliv na to, jak snadno bude vzorec pochopen.

Vzorce v tomto oddílu jsou pouľitelné při psaní vąech sekcí vzorce nebo souboru vzorců. Jejich cílem je pomoci autorům předat své myąlenky čtenářům vzorců co nejúčinnějąím způsobem. Klíčovým krokem je určení Cíleného publika. To pomůľe autorům volit Terminologii na míru čtenářů a téľ Srozumitelné zápisy pro diagramy a ilustrace. Jsou-li mezi čtenáři i programátoři, je na místě přidat Ukázky zdrojových kódů. Zdrojové kódy jako bonus mají navíc výhodu, ľe je čtenář nemusí číst a pochopit, aby porozuměl celému vzorci.

Při členění svého vzorce usilujte o Čitelnost na první pokus, aby váą čtenář netrpěl tím, ľe vzorci nerozumí. Mezi osvědčené techniky patří psaní Přeskočitelných sekcí, aby bylo čtenáři hned při prvním čtení jasné, k čemu vzorec slouľí, aniľ by ho musel celý pochopit.

4.1 Vzorec: Jasné cílené publikum

Alternativní názvy: Clear Target Audience,Target Audience, Identified Audience

Problém:

Váą vzorec můľe číst mnoho lidí. Jak zajistíte, aby byl vzorec snadno srozumitelný pro zamýąlené publikum?

Kontext:

Píąete vzorec nebo soubor vzorců.

Síly:

Řeąení:

Jasně určete cílené publikum, skupinu lidí, jimľ chcete své řeąení sdělit. Mějte toto publikum na paměti při psaní svého vzorce. Hotový vzorec můľete na nějakém zástupci cíleného publika "otestovat".

Často je uľitečné v úvodu vzorce cílené publikum explicitně popsat. Pomůľe to případným čtenářům hned na počátku zjistit, zda je vzorec určen právě pro ně. Můľe to rovněľ pomoci určit význam nejednoznačných výrazů v textu, nejsou-li zavedeny v textu nebo popsány v Rejstříku termínů.

Odůvodnění:

Jasné cílené publikum pomáhá zpřesnit vzorec, nebo» představuje kritérium pro rozliąení, které informace do vzorce přidat a které vypustit.

Příbuzné vzorce:

Máte-li Jasné cílené publikum, můľete uľívat Terminologii na míru čtenářů.

Příklad:

V tomto souboru vzorců je cílené publikum uvedeno hned v druhém odstavci úvodu.

4.2 Vzorec: Terminologie na míru čtenářům

Alternativní názvy: Terminology Tailored to Audience

Problém:

Jak maximálně zvýąit pravděpodobnost, ľe čtenář vaąemu vzorci správně porozumí?

Kontext:

Píąete vzorec nebo soubor vzorců a máte určeno Jasné cílené publikum.

Síly:

Řeąení:

Pouľívejte terminologii na míru čtenářům. Pouľívejte jen takové termíny, jimľ typický člen publika pohodlně bez problémů porozumí. Ověřte si srozumitelnost terminologie na zástupci cíleného publika. V úvodu vzorce nezapomeňte uvést odkaz na zdroj uľívaných termínů.

Abyste zajistili, ľe zbytečně neomezujete případné publikum, uľívejte co nejjednoduąąí jazyk, jímľ můľete efektivně předat myąlenky. Přiloľte rejstřík méně obvyklých termínů. Nové termíny vysvětlete v poznámkách pod čarou (nebo čtenáře odkaľte na Rejstřík termínů).

Výsledný kontext:

Vzorec nebo soubor vzorců nemusí být dost dobře srozumitelný čtenářům mimo cílené publikum, je-li terminologie přílią specializovaná.

Odůvodnění:

Vzorec, který je srozumitelný pro cílené publikum, bude spíą uľitečný.

Příklad:

Tento vzorec pouľivá terminologii běľnou pro autory vzorců. Nevysvětluje termíny jako Síly, Kontext, protoľe cílené publikum je s jejich významem seznámeno a podrobné definice by mu byly spíąe na obtíľ.

4.3 Vzorec: Srozumitelné zápisy

Alternativní názvy: Understood Notations

Kontext:

Píąete vzorec a pokouąíte se nějakou část myąlenky sdělit pomocí diagramu nebo ilustrace. Máte Jasné cílené publikum.

Problém:

Jak zajistit, aby byly diagramy snadno pochopitelné pro celé vaąe cílené publikum?

Síly:

Řeąení:

Uľívejte v diagramech takové formy zápisu, které jsou pro cílené publikum pravděpodobně srozumitelné. Takové notace by měly být ąiroce uľívané a snadno pochopitelné. Pokud pouľíváte standardní notaci, uvádějte vľdy odkaz na přísluąný standard. Pokud je naopak nebezpečí, ľe čtenáři váą nestandardní zápis nepochopí, přidejte jasný a stručný popis své notace v místě prvního pouľití nebo podrobněji v dodatku.

Odůvodnění:

Čím známějąí notaci uľíváte, tím spíąe čtenáři vaąe diagramy pochopí i bez dodatečného (a ruąivého) vysvětlení. Stručná vysvětlení méně obvyklých notací pomohou neznalým čtenářům porozumět vaąim diagramům, v lepąím případě aniľ by je přílią odtahovala od jádra vaąeho vzorce. Odkazy na standarní formy zápisu představují pro zvídavé čtenáře cestu, jak se dozvědět více.

Příbuzné vzorce:

Pokud je vysvětlení notace součástí vaąeho vzorce nebo souboru vzorců, zajistěte, aby bylo uvedeno v Přeskočitelné sekci.

4.4 Vzorec: Čitelnost na první pokus

Alternativní názvy: Single-Pass Readable

Problém:

Člověk hledající řeąení nějakého problému často potřebuje prostudovat celou řadu moľných řeąení. Jak pomůľete čtenáři vaąeho vzorce, aby vzorci porozuměl v co nejkratąím čase a usnadnil si tak hledání vhodného řeąení?

Kontext:

Píąete vzorec se vąemi Povinnými sekcemi.

Síly:

Řeąení

Dosáhnout Čitelnosti na první pokus je velmi obtíľný úkol, který by si pravděpodobně zaslouľil samostatný soubor vzorců. Přesto lze uvést alespoň několik technik, jeľ mohou napomoci k vytvoření vzorce čitelného na první pokus.

Odůvodnění:

Abyste se čtenáři vaąeho vzorce dozvědět vąe co potřebují v co nejkratąím čase, musíte jim pomoci číst jen sekce, které potřebují, a jen jedenkrát. Přeskočitelné sekce a Nalezitelné sekce pomohou čtenářům najít sekce, které potřebují. Techniky popsané výąe omezují nutnost se při čtení vracet (nebo nahlíľet dopředu) a číst sekci vícekrát.

Příbuzné vzorce:

4.5 Vzorec: Přeskočitelné sekce

Alternativní názvy: Skippable Sections

Kontext:

Píąete vzorec, který má být součástí větąího celku a k němuľ se bude odkazovat. Váą vzorec má vąechny Povinné sekce a potřebné Roząiřující sekce. Usilujete o vzorec snadno srozumitelný, Čitelný na první pokus.

Problém:

Jak čtenářům zjednoduąit pochopení podstaty vzorce a přitom ve vzorci poskytnout dostatek informací nutných pro pouľití vzorce?

Síly:

Řeąení:

Jasně vyznačte oddíly Problém, Kontext a Řeąení, aby čtenář mohl rychle rozhodnout, jestli je pro něj vzorec pouľitelný. Podrobnějąí informace (například síly nebo ukázky zdrojových kódů) přidejte v jasně odliąených sekcích, které můľe čtenář přeskočit, pokud se nezajímá o detaily.

Odůvodnění:

Čtenář, který se snaľí seznámit se s větąím počtem vzorců, chce velmi rychle provést základní výběr. Přílią mnoho informací je mu zpočátku na obtíľ. Větąina informací uvedených ve vzorci je potřebná aľ v případě, ľe jste se rozhodli vzorec pouľít (nebo vybíráte uľ z velmi omezeného počtu vzorců). Tento vzorec představuje způsob, jak popsat podstatu vaąeho vzorce bez zabíhání do zbytečných podrobností, a tedy usnadňuje čtenáři rychlý výběr vhodného vzorce.

Výsledný kontext:

Nejsou-li Přeskočitelné sekce uvedeny aľ na konci dokumentu, můľe čtenář potřebovat hledat ve vzorci daląí sekci, která ho zajímá. Usnadněte mu to pomocí Nalezitelných sekcí.

Příbuzné vzorce

Vzorec Ukázky zdrojových kódů jako bonus představuje speciální případ přeskočitelných sekcí. Vzorec Roząiřující sekce radí, kdy uvést ve vzorci nějakou sekci, kdeľto vzorec Přeskočitelné sekce se snaľí umoľnit čtenáři efektivnějąí čtení.

Příklady:

"Alexandrijský" styl vzorce pouľívá odliąná písma a znak *** pro oddělení odstavců, aby čtenář mohl snadno nalézt problém a navrhované řeąení. Strukturovanějąí styly vzorců (např. styl tohoto souboru) uľívají titulky pro oddělení jednotlivých sekcí. V úvodu k tomuto souboru vzorců je vysvětleno, kterých sekcí si má čtenář vąímat pro "rychlé čtení".

V knize Design Patterns [GHJV95] mají vzorce sekci Pouľitelnost (Applicability), která umoľňuje celý zbytek vzorce přeskočit, pokud dosud hledáme řeąení určitého problému.

4.6 Vzorec: Nalezitelné sekce

Alternativní názvy: Findable Sections

Kontext:

Píąete vzorec v rámci větąího celku a hodláte se k němu odkazovat. Váą vzorec obsahuje vąechny Povinné sekce a potřebné Roząiřující sekce, pro snaząí čtení jsou některé sekce Přeskočitelné. Usilujete o vzorec snadno srozumitelný, Čitelný na první pokus a pouľitelný jako referenční materiál.

Problém:

Jak usnadnit nalezení klíčových prvků vzorce, předevąím sekcí Problém, Kontext, Síly a Řeąení?

Síly:

Řeąení:

S ohledem na styl vaąeho vzorce zvaľte, které sekce čtenář potřebuje při vyhledávání, pokud se ke vzorci odkazuje. Začátky těchto sekcí výrazně označte, aby je čtenář snadno naąel. Můľete to udělat pouľitím titulků, typograficky (pouľitím písem, podtrľení ap.) nebo graficky (vloľením diagramů, grafických prvků, hvězdiček mezi sekce).

Počátek vzorce je speciální případ Nalezitelné sekce. Pro usnadnění nalezení počátku vzorce lze uľít stínované titulky, návodné ilustrace (tj. zavedené grafické symboly nebo obrázky) nebo začínat kaľdý vzorec na nové stránce.

Odůvodnění:

Sekce nemůľe být povaľována za dobře přeskočitelnou, pokud následující podstatnou sekci nelze nalézt bez čtení nebo pročítání přeskakované sekce. Čím jsou hranice sekcí výraznějąí, tím snadněji lze sekce přeskakovat.

Příbuzné vzorce:

Přeskočitelné sekce pomohou čtenáři číst vzorec efektivně, tento vzorec pak zlepąuje pouľitelnost vzorce jako referenčního materiálu, materiálu, k němuľ se odkazujeme.

Příklady:

"Alexandrijský" styl vzorce pouľívá odliąná písma a znak *** pro oddělení odstavců, aby čtenář mohl snadno nalézt problém a navrhované řeąení. Strukturovanějąí styly vzorců (např. styl tohoto souboru) uľívají titulky pro oddělení jednotlivých sekcí. V některých souborech vzorců je moľné nacházet klíčové sekce vąech vzorců pouhým obracením stránek. Je toho dosaľeno tím, ľe vąechny vzorce začínají na nové stránce a vąechny sekce vzorců začínají zhruba na stejném místě stránky.

[Foote96] pro zvýraznění začátku vzorců účinně pouľívá stínované titulky a návodné ilustrace.

4.7 Vzorec: Ukázky zdrojových kódů

Alternativní názvy: Code Samples, Code Examples

Kontext:

Popisujete řeąení nějakého problému v softwarovém návrhu. Máte určené Jasné cílené publikum, jeľ zahrnuje významné mnoľství softwarových návrhářů nebo programátorů.

Problém:

Jak napsat vzorec tak, aby dostatečně jasně a jednoznačně umoľňoval přímočarou implementaci navrhovaného řeąení?

Síly:

Řeąení:

Přidejte do vzorce jeden nebo více příkladů implementace daného návrhu. Zvolte programovací jazyk, který bude pravděpodobně srozumitelný pro vaąe cílené publikum. Zvolte takový způsob implementace, který jasně a přímočaře demonstruje podstatu vzorce a zároveň maximálně omezuje nadbytečné nebo ruąivé detaily. Zajistěte, aby vąechny příklady kódů byly dobře komentovány a aby vąechny předpoklady a učiněná rozhodnutí byly v textu explicitně uvedeny. Rozliąte, které rysy vaąeho příkladu jsou podstatné z hlediska návrhu popisovaného ve vzorci a které jsou podruľné. Zajistěte, aby vaąe příklady kódů byly doslova schopné běhu (tj. předevąím kompletní a bez syntaktických chyb). Syntaktické chyby v příkladech kódů mohou být pro čtenáře stejně ruąivé jako pro překladače.

Odůvodnění:

Dobře komentovaný příklad kódu je formálním, precizním a jednoznačným zápisem softwarového návrhu. Zkuąení programátoři tomuto zápisu navíc dobře rozumí. Pro vąechny čtenáře je pak zdrojový kód potvrzením, ľe správně pochopili klíčové myąlenky vaąeho vzorce.

Příklad:

Vąechny vzorce uvedené v knize Design Patterns [GHJV95] obsahují Ukázky zdrojových kódů, coľ je přirozené, nebo» je kniha určena pro programátory.

Příbuzné vzorce:

Ukázky zdrojových kódů jako bonus zajią»ují, aby byl vzorec srozumitelný i bez čtení těchto kódů. Navíc mohou pomoci omezit ruąivý vliv příkladů kódu na souvislost textu.

4.7.1 Vzorec: Ukázky zdrojových kódů jako bonus

Alternativní názvy: Code Samples as Bonus, Code Examples as Bonus

Problém:

Jak zajistit, aby podstata vaąeho softwarového návrhu popsaného vzorcem byla srozumitelná pro vąechny čtenáře z cíleného publika, bez ohledu na to, zda znají určitý programovací jazyk?

Kontext:

Píąete vzorec softwarového návrhu nebo návrhu architektury a připojujete k němu Ukázky zdrojových kódů.

Síly:

Řeąení:

Zajistěte, aby byl vzorec dostatečně samostatný, dokázal předat podstatné části návrhu i kdyby byly ukázky zdrojových kódů odstraněny. Ukázky kódů připojujte jako bonus, který můľe pomoci čtenářům ověřit, ľe návrh pochopili, a představuje pro ně vodítko, jak návrh nejsnáze implementovat. Ujistěte se, ľe jsou ukázky kódů dobře začleněny do textu a mohou být snadno přeskočeny, nebo ľe jsou uvedeny v samostatné Přeskočitelné sekci.

Popisy významných algoritmů a klíčových vztahů mezi objekty by měly být uvedeny v jiné formě zápisu neľ v nějakém programovacím jazyce. Mezi pouľitelné formy zápisu lze řadit pseudokód, vývojové diagramy, záznamy o chodu událostí, popisy objektového modelu a vztahů mezi objekty. A» zvolíte kteroukoli formu zápisu, piąte Srozumitelné zápisy; netvořte vlastní formy zápisu a neuľívejte málo známé formy, pokud to není naprosto nevyhnutelné.

Odůvodnění:

Účelem vzorce je předat informace co nejąirąímu moľnému publiku. Pokud vzorec nebude zcela srozumitelný i bez čtení zdrojových kódů, čtenáři, kteří neznají zvolený programovací jazyk vzorci neporozumí.

Příklad kódu:

(citace z originálu uvedeného na stránce A Pattern Language for Pattern Writing)
Reader >> understandsSmalltalk

"Answers True if the reader understands Smalltalk, otherwise signals an exception"

self understands: #Smalltalk

ifTrue: [^True]

ifFalse: [self doesNotUnderstand].


5 Příklady vzorců pro programátory

V této kapitole najdete několik příkladů vzorců a "protivzorců" pro programátory. Protivzorce (Anti Patterns) jsou vzorce popisující cesty od problémů ke ąpatným řeąením a výjimečně téľ vzorce popisující cesty od ąpatných řeąení k dobrým řeąením. Formálně se od běľných vzorců nijak výrazně neliąí, snad jen vyjma důrazného varování: "Tudy ne!". Uvedené příklady vzorců pocházejí od různých autorů, a proto zároveň dobře ilustrují různé styly psaní vzorců.

Kromě vzorce jak psát Snadno srozumitelný kód se dozvíte, proč a jak se snaľit vyhnout Brotnosauřím projektům a proč netrávit čas Navrhováním kuchyňského dřezu.

Bezprostředně za kaľdým vzorcem následuje seznam odkazů na původní vzorec, sbírku vzorců na daném serveru a vąechny daląí vzorce, na něľ se tento odkazuje.

5.1 Vzorec: Snadno srozumitelný kód (Simply Understood Code)

...na nejniľąích úrovních programu jsou úseky kódu. Jsou to místa, jimľ je nutné dobře rozumět, aby bylo moľné měnit program, a podobně úplné porozumění programu vyľaduje porozumění těmto úsekům kódu.

* * *

V mnoha částech kódu je problém dezorientace velmi palčivý. Lidé nemají nejmenąí tuąení, k čemu která část sloľka kódu slouľí, a zaľívají proto významný duąevní stres.

Představte si, ľe píąete část kódu, která není tak sloľitá, ľe by vyľadovala rozsáhlou dokumentaci, nebo není z hlediska účelu celého programu tak podstatná, aby její dokumentace stála za námahu, zvláą», kdyľ kód je sám o sobě dostatečně srozumitelný. Jak můľete napsat takový kód?

Lidé potřebují na napsaný kód zírat, aby jej pochopili a získali dostatek sebedůvěry pro měnění kódu. Pokud musí trávit čas přecházením z okna do okna, listováním nahoru a dolů, aby naąli přísluąné části kódu, je zbytečně rozptylována jejich pozornost od pochopení smyslu kódu a získání sebedůvěry pro jeho změnu.

Lidé při čtení lépe porozumí věcem, jeľ jsou napsány v přirozeném směru čtení; v případě naąí kultury je to obecně zleva doprava a shora dolů.

Jestliľe kód není spolehlivě srozumitelný, bude omylem při změně poąkozen.

Proto, uspořádejte významné části kódu tak, aby se veąly na jednu stránku. Napiąte kód srozumitelný pro člověka, který jej čte shora dolů. Nevynucujte opakované nahlíľení do kódu pro to, aby čtenář pochopil, jak jsou uľívány datové struktury a jak je v kódu předáváno řízení.

* * *

Tohoto vzorce lze dosáhnout pomocí následujících vzorců: Lokální proměnné definovány a pouľity na jedné stránce, usiluje o udrľení vąech lokálních proměnných na jedné stránce; Nastavte proměnné jedenkrát, usiluje o zmenąení nutnosti prohledávat opakovaně kód pomocí toho, ľe je hodnota proměnných měněna jen jednou; Lokální proměnné nastaveny znovu před daląím pouľitím, coľ učiní hodnotu proměnné zjevnou pro čtenáře, který čte kód shora dolů; Udělejte smyčky zjevné, coľ pomůľe lidem porozumět i částem kódu, jeľ nejsou lineární, i při zachování lineárního čtení kódu; a pouľívejte Funkce pro smyčky, coľ zabalí sloľité struktury opakovaní s několika stavovými proměnnými do úseků, z nichľ je kaľdý snadno srozumitelný.

-- Richard Gabriel

Odkazy

5.2 Protivzorec: Brontosaurus (Creeping Featuritis)

Problém: Chcete uspokojit zákazníky. Chcete vyrobit nejlepąí moľný produkt a získat tak pro sebe slávu a uznání.

Síly: Programátoři mají velká ega. Zákazníci často nevědí, co chtějí. Programátoři často nechápou rozdíl mezi tím, co je nutné a co je "skvělé".

Řeąení: Svoláte vąechny programátory a návrháře do velké místnosti (jako v Návrhu podle výboru) a kaľdý k produktu připojí, co chce. Tento proces rychle vyvolá zpětnou vazbu a kaľdý začne přidávat daląí a daląí náměty.

Diskuse: Brontosaurovatění produktu můľe začít nebo pokračovat v kterékoli jeho fázi vývoje. Nejčastěji k němu dochází během analýzy, výsledkem je nekončící fáze analýzy (viz AnalysisParalysis) nebo nerealisticky ambiciózní specifikace. Ve fázi návrhu se vyznačuje přidáváním více zvonečků a píą»alek, neľ analýza vyľadovala, nebo pokusem o abstrakci úplně vąeho dříve, neľ bylo cokoli konkretizováno. Ve fázi programování se vyznačuje kódováním, jeľ nikdy nekončí, nebo» programátoři nepřestávají přidávat "jeątě jednu vymoľenost".

-- Kyle Brown s inspirací od Jima Copliena

Odkazy


6 Náčrtky externích vzorců

V této kapitole naleznete stručná shrnutí vzorců, jeľ přesahují rámec tohoto referátu, ale na něľ se vzorce v referátu odkazují. Vąechny vzorce pocházejí ze stránky A Pattern Language for Pattern Writing.

Čitelné odkazy na vzorce (Readable References to Patterns)
Problém: Jak se z textu vzorce odkazovat na jiné vzorce?
Řeąení: Jméno vzorce, na který se odkazujete, včleňte přímo do textu věty a odliąte jej pouze typograficky, aby odkaz co nejméně ruąil souvislost výkladu a zároveň umoľňoval nalezení celého vzorce.
Fungující příklad
Problém: Jak čtenáři usnadnit pouľití souboru vzorců v praxi?
Řeąení: Pokuste se ve vąech vzorcích souboru uľívat tentýľ příklad, který můľete předem uvést v úvodu k souboru. Na tomto příkladu ukazujte, jak jednotlivé vzorce souboru přispívají ke společnému řeąení. Pokud pro některé vzorce tento společný příklad k úplnému dokreslení myąlenky vzorce nestačí, uveďte u nich dodatečné příklady.
Náčrtky vzorců (Pattern Thumbnails)
Problém: Jak odkazovat na jiné vzorce stručným, ale smysluplným způsobem a tak, aby byl čtenář co nejméně ruąen.
Řeąení: V textu pouľijte Návodné jméno vzorce a u prvního výskytu přidejte poznámku s odkazem na zdroj a se stručným shrnutím ("náčrtkem") vzorce v jedné nebo dvou větách, aby čtenář nemusel pro základní pochopení vzorec vyhledávat.
Návodná jména vzorců (Evocative Pattern Name)
Problém: Jak pojmenovat vzorec, aby byl snadno zapamatovatelný a snadno se na něj odkazovalo?
Řeąení: Zvolte takové jméno, jeľ koresponduje s řeąením popisovaného vzorce. Dejte přednost deląímu označení, které bude dávat smysl nejen autorovi, ale bude snadno zapamatovatelné a srozumitelné i pro čtenáře. Zvolené jméno na lidech "otestujte" - a» zkusí jen podle jména uhodnout, co sám vzorec říká.
Rejstřík termínů (Glossary)
Problém: Jak čtenáři vzorce nebo souboru vzorců osvětlit potřebnou terminologii a nenaruąit přitom souvislost textu vzorce?
Řeąení: Ke vzorci nebo souboru vzorců připojte samostatný rejstřík termínů, v němľ uvedete potřebné termíny a jejich definice. Povaľujete-li to za nutné nebo uľitečné, můľete definice termínů uvádět navíc i v poznámkách pod čarou.
Shrnutí souboru vzorců (Pattern Language Summary)
Problém: Jak čtenáři sdělit přehled o větąím souboru vzorců?
Řeąení: Napiąte před soubor vzorců jeho shrnutí, které vysvětluje, jak je větąí problém rozčleněn na problémy dílčí a jak tyto dílčí problémy jednotlivé vzorce řeąí. Soubor vzorců můľete téľ představit pomocí Fungujícího příkladu.
Shrnutí typu Problém/Řeąení (Problem/Solution Summary)
Problém: Jak čtenáři ulehčit vyhledání jednotlivých vzorců ze souboru vzorců?
Řeąení: K souboru vzorců připojte přehled vąech vzorců v podobě tabulky shrnující vąechny popisované problémy a odpovídající řeąení.
Titulky rozliąující strukturu ((Distinctive) Headings Convey Structure)
Problém: Jak čtenáři osvětlíte umístění konkrétního vzorce, který právě čte, ve struktuře celého souboru vzorců?
Řeąení: Odliąte titulky vzorců od vąech ostatních nadpisů částí dokumentu. Číslujte vzorce hierarchicky podle struktury vaąeho souboru vzorců.
Zvýrazněný společný problém (Common Problems Highlighted)
Problém: Jak čtenáři souboru vzorců upozornit, ľe určitý problém má více alternativních řeąení popsaných v samostatných vzorcích?
Řeąení: Pokud několik vzorců řeąí tentýľ problém, upozorněte na to čtenáře. Můľete společný problém vzorců popsat v samostatném popisu problému nebo na popis problému ze vąech vzorců pouze odkazovat (v rámci oddílu příbuzné vzorce). Pokud znění problému uvedete u vąech vzorců, měli byste čtenáře upozornit, ľe se problémy ve vzorcích opakují.


7 Dodatky

7.1 Doslov

Doufám, ľe i tento letmý pohled do problematiky vzorců stačil vzbudit váą zájem. Jako začínající odborník bych se totiľ rád jiľ v blízké budoucnosti stále častěji setkával s odbornými texty, jeľ jsou pohodlně čitelné a snadno srozumitelné, a proto doufám, ľe vám tento hrubý návod psaní takových dokumentů usnadní.

Závěrem musím poznamenat, ľe v tomto referátu nenajdete zdaleka vąechny vzorce, jeľ se k problematice vzorců váľí. Můľete proto vyuľít seznamu literatury a odkazů k získání daląích znalostí, na větąině stránek vąak naleznete kromě podrobných a kvalitních rad i omluvu, ľe jeątě mnoho práce zbývá... ...moľná některá právě pro vás...

7.2 Literatura a odkazy

Zdroje na internetu

Tiątěné publikace

[Alexander77]
Christopher Alexander et al., A Pattern Language, Oxford University Press, New York, 1977.
[Alexander79]
Christopher Alexander, The Timeless Way of Building, Oxford University Press, New York, 1979.
[Cockburn96]
Alistair Cockburn, "A Medical Catalog of Project Management Patterns", PLoP'96 Proceedings.
[Copelien96]
Jim Coplien, "A White Paper on Patterns", SIGS books, 1996
[Foote96]
Brian Foote and Joseph Yoder, "Attracting Reuse", PLoP'96 Proceedings.
[GHJV95]
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides "Design Patterns: Elements of Reusable Object-Oriented Software." Addison-Wesley. ISBN 0-201-63361-2.

7.3 Tabulky problémů a řeąení

Forma vzorce
Problém Řeąení Vzorec
Jak popsat opakující se řeąení určitého problému tak, aby bylo snadno pouľitelné i pro ostatní? Napiąte své řeąení formou vzorce (pattern). Vzorec
Jak přehledně popsat řeąení, aby bylo současně moľné pouľívat jeho různé části za různých okolností? Rozdělte rozsáhlý problém a jeho velké řeąení nebo postup na dílčí problémy a odpovídající řeąení. Tyto vzorce shrňte do Souboru vzorců Soubor vzorců
Dobré strukturování vzorců
Problém Řeąení Vzorec
Jak se ujistit, ľe vąechny potřebné informace jsou ve vzorci obsaľeny? Zajistěte, aby ve vaąe vzorci nechyběla ľádná z uvedených povinných sekcí. Povinné sekce
Jak sdělit důleľité informace, které se vąak nehodí do povinných sekcí? Do vzorce lze přidat uvedené i daląí roząiřující sekce. Roząiřující sekce
Jak zajistit, aby čtenář pochopil, proč bylo zvoleno právě popisované řeąení? Nehledě na zvolený styl vzorce zajistěte, aby síly byly jasně viditelné. Viditelné síly
Dosaľení lepąí čitelnosti a srozumitelnosti
Problém Řeąení Vzorec
Jak zajistíte, aby byl vzorec snadno srozumitelný pro zamýąlené publikum? Jasně určete cílené publikum, skupinu lidí, jimľ chcete své řeąení sdělit. Mějte toto publikum na paměti při psaní svého vzorce. Jasné cílené publikum
Jak maximálně zvýąit pravděpodobnost, ľe čtenář vaąemu vzorci správně porozumí? Pouľívejte jen takové termíny, jimľ typický člen publika pohodlně bez problémů porozumí. Ověřte si srozumitelnost terminologie na zástupci cíleného publika. Terminologie na míru čtenářům
Jak zajistit, aby byly diagramy snadno pochopitelné pro celé vaąe cílené publikum? Uľívejte v diagramech takové formy zápisu, které jsou pro cílené publikum pravděpodobně srozumitelné. Srozumitelné zápisy
Jak pomůľete čtenáři vaąeho vzorce, aby vzorci porozuměl v co nejkratąím čase a usnadnil si tak hledání vhodného řeąení? Usilujte o Čitelnost na první pokus. Je to velmi obtíľný úkol, ale lze uvést alespoň několik technik, jeľ vám mohou pomoci. Čitelnost na první pokus
Jak čtenářům zjednoduąit pochopení podstaty vzorce a přitom ve vzorci poskytnout dostatek informací nutných pro pouľití vzorce? Jasně vyznačte oddíly Problém, Kontext a Řeąení, podrobnějąí informace (například síly nebo ukázky zdrojových kódů) přidejte v jasně odliąených sekcích. Přeskočitelné sekce
Jak usnadnit nalezení klíčových prvků vzorce, předevąím sekcí Problém, Kontext, Síly a Řeąení? S ohledem na styl vaąeho vzorce zvaľte, které sekce čtenář potřebuje při vyhledávání, pokud se ke vzorci odkazuje. Začátky těchto sekcí výrazně označte. Nalezitelné sekce
Jak napsat vzorec tak, aby dostatečně jasně a jednoznačně umoľňoval přímočarou implementaci navrhovaného softwarového řeąení? Přidejte do vzorce jeden nebo více příkladů implementace daného návrhu. Ukázky zdrojových kódů
Jak zajistit, aby podstata vaąeho softwarového návrhu popsaného vzorcem byla srozumitelná pro vąechny čtenáře z cíleného publika, bez ohledu na to, zda znají určitý programovací jazyk? Zajistěte, aby byl vzorec dostatečně samostatný, dokázal předat podstatné části návrhu i kdyby byly ukázky zdrojových kódů odstraněny. Ukázky zdrojových kódů jako bonus

7.4 Rejstřík vzorců

Cílené publikum
Čitelnost na první pokus
Čitelné odkazy na vzorce
Fungující příklad
Jasné cílené publikum
Náčrtky vzorců
Nalezitelné sekce
Návodná jména vzorců
Povinné sekce
Přeskočitelné sekce
Rejstřík termínů
Roząiřující sekce
Shrnutí souboru vzorců
Shrnutí typu Problém/Řeąení
Snadno srozumitelný kód
Soubor vzorců
Srozumitelné zápisy pro diagramy a ilustrace
Terminologie na míru čtenářům
Titulky rozliąující strukturu
Ukázky zdrojových kódů
Ukázky zdrojových kódů jako bonus
Viditelné síly
Vzorec
Zdrojové kódy jako bonus
Zvýrazněný společný problém


Ondřej Bojar, obo@cuni.cz
http://www.cuni.cz/~obo
8.9.1999