Informační toky a jejich použití v EA

Informační tok definuje obecné předávání informací v systému a to na té nejvyšší úrovni abstrakce. Nespecifikuje se ani povaha informace (typ, počáteční hodnota…), ani mechanismus, kterým výměna informací probíhá. Dokonce se neurčuje ani pořadí či podmínky pro možnost výměny. K tomu je určena až některá z následných – detailnějších – fází návrhu, ve které lze určit, které prvky přenášenou informaci reprezentují a které vztahy daný tok realizují.

Informační tok

Pro zavedení informačního toku do modelu se používá vztah InformationFlow, který říká, že jedna či více informací putuje ze svého zdroje do svého cíle. Zobrazuje se přerušovanou čarou zakončenou šipkou směrem k příjemci informace. U čáry je uvedeno klíčové slovo «flow». Pozor na to, že byť je čára přerušovaná, nejde o závislost (tj. přímou či nepřímou specializaci třídy Dependency metamodelu).

Poblíž čáry jsou pak dále textově zobrazeny i jednotlivé informace, které jsou tokem přenášeny (viz dále).

Příklad notace informačního toku

Postup v EA: V Enteprise Architektu je vytvoření informačního toku hodně jednoduchou záležitostí.  Najdeme jej v ToolBoxu v části Common. Hned po vytvoření vztahu mezi objekty se zobrazí dialog pro zadání informací (Information Items Conveyed), které tok přenáší. Záhy se k němu dostaneme.

Toolbox Classes

Informační tok může být podle UML standardu zaznamenán pouze mezi těmito prvky: Actor, Node, UseCase, Artifact, Class, Component, Port, Property, Interface, Package, ActivityNode, ActivityPartition a InstanceSpecification (navíc pokud zdroj či cíl je InstanceSpecification, nemůže jeho typ představovat třídu Relationship či libovolnou její specializaci). Zde je nutné uvést, že Sparx „zapomněl“ toto pravidlo v Enterprise Architectu implementovat a tak lze mít celkem jednoduše (tak, jak v mnoha ostatních případech) nevalidní model.

Informace

Informační tok může přenášet informaci v podobě nějakého klasifikátoru (např. třída) nebo informaci v nedefinované struktuře – třída InformationItem (což je nakonec také klasifikátor). Informace (již zmíněná třída InformationItem) je abstrakcí libovolného typu informace, kterou si mohou objekty mezi sebou vyměňovat. Jde o blíže neurčený klasifikátor pro reprezentaci informace na hodně abstraktní úrovni, tj. na takové, na které z ní nelze vytvořit instanci (prostě proto, že nelze přesně říct, o jaký typ, resp. klasifikátor jde). Informace nemá ani vlastnosti, ani asociace a ani na ni nelze použít generalizaci. Také z ní nelze vytvořit instanci.

Notace: Protože InformationItem je klasifikátor, lze informaci zobrazit jako obdélník s názvem informace a klíčovým slovem «information» nad názvem. Alternativní notace je opět obdélník s názvem a v pravém horním rohu je plný rovnoramenný trojúhelník „ukazující“ doprava (aniž by však měl jakoukoliv spojitost se směrem případného toku!).

Příklad notace třídy InformationItem

Postup v EA: V Enterprise Architectu najdeme Information ItemToolboxu s objektovými prvky (Object). Pokud to někoho překvapuje, pak si uvědomte, ve kterých situacích to používáte: např. na naprostém začátku projektu při vyjednávání požadavků a prvních rozhovorech o analytických třídách. A zde se bavíte především v instancích.

Toolbox Object

Informace se většinou zobrazuje jako součást informačního toku nebo jako součást vztahu (informačního kanálu), který informační tok realizuje. V prvním případě se zobrazuje název informace poblíž čáry realizačního toku (viz příklad výše). V druhém případě se zobrazí černý trojúhelník směřující k příjemci informace přímo na čáře vztahu. Název informace se pak zobrazí poblíž tohoto trojúhelníku. Pokud vztah realizuje více přenosů informací stejným směrem, pak se zobrazí jen jeden trojúhelník a jednotlivé názvy informací se oddělí čárkou.

Příklad realizace informačního toku

Postup v EA: Abychom určili, které informace jsou informačním tokem přenášeny, potřebujeme již výše zmíněný dialog Information Items Conveyed. Ten se zobrazuje po vytvoření vztahu mezi prvky modelu nebo jej můžeme vyvolat přes kontextové menu informačního toku z položky AdvancedInformation Items Conveyed…  V něm pomocí tlačítek Add a Remove můžeme upravovat seznam informací, které jsou tokem přenášeny.

Dialog Information Items Conveyed

Pro přenesení dat je nutné mít nějaký „informační kanál“, který pak bude daný přenos realizovat. V UML se reprezentuje různými způsoby s ohledem na povahu zdroje a cíle. Těmito způsoby jsou asociacemi, linky, konektory a závislosti.

Postup v EA: Aby se uvedený vztah stal realizátorem informačního toku, stačí málo. Pomocí kontextového menu vztahu AdvancedInformation Flows Realized… vyvoláme stejnojmenný dialog. V něm se zobrazí seznam informačních toků mezi stejnými elementy, jako máme náš vztah. Zde pak stačí zaškrtnout požadované položky.

Dialog Information Flows Realized

Reprezentace informace

Konečně poslední věc, kterou v souvislosti s informačními toky zde zmíním, je reprezentace informace. Jde o vztah mezi informací (InformationItem) a klasifikátory, které budou (na nižší úrovni abstrakce) určovat strukturu dané informace. Těmito klasifikátory mohou být pouze třídy Class, Interface, InformationItem, Signal a Component.

Příklad notace reprezentace informace

Postup v EA: Enteprise Architect zde pro zobrazení používá svou oblíbenou prasárnu, tj. klasickou závislost se stereotypem «representation». Pozor však na to, že ve skutečnost opravdu o žádnou závislost ve smyslu třídy Dependency v UML nejde. V EA tedy můžeme vytvořit závislost a přidat uvedený stereotyp nebo použít ikonu reprezentace v Toolboxu Composite, která dělá totéž.

Toolbox Composite

Odkaz do standardu

  • V aktuální verzi UML, tj. v době vydání článku to je 2.4.1, je to kapitola 17.2.
  • V beta verzi UML 2.5 je to kapitola 20.

Stereotypová omalovánka

V jedné z nejlepších českých pohádek je scéna, kde podřízený chce navést svého nejvyššího na konkrétní místo v dokumentu. Ten ho však odbude slovy: Mrknu a vidím. Dneska vám představím možnost Enterprise Architecta, která dokáže čtenáře dostat do stejné situace: mrknout a vidět.

Nejprve si nastiňme problematiku. Řekněme, že máme model, ve kterém chceme zvýraznit elementy, které se v rámci projektu změnily, které se přidaly či ubraly a samozřejmě takové, které zůstaly na produkčním prostředí nedotčeny. Informaci budeme uchovávat pomocí následujících stereotypů:

  • deployed – říká, že v našem projektu v daném elementu ke změně nedošlo,
  • new – oznamuje zavedení nového elementu,
  • modified – odkazuje na změnu a
  • decommissioned – sděluje publiku, že element byl v rámci projektu odstraněn.

Jeden z takových příkladů může vypadat takto (ke stažení zde):

Stále však nejsme v cílovém stavu. Zde musí čtenář diagramu dost číst, aby „viděl“. Enterprise Architect si tedy nastavíme tak, aby se automaticky každý element přebarvil barvou odpovídající aktuálnímu stereotypu. K tomu potřebujeme nejprve vlézt přes menu SettingsUML Types… do dialogového okna nazvaného UML Types.

Na záložce Stereotypes si v seznamu najdeme postupně každý z námi zavedených stereotypů a provedeme pro ně následující nastavení: 

Base Class změníme na <all>. Tím bude nastavení platit pro každý element s tímto stereotypem. Pole Notes můžeme změnit, chceme-li. A teď to nejdůležitější: dle libosti si vyberte výchozí barvy pro výplň, okraje a/nebo font. Jakmile budete mít hotovo, je nutné stisknout tlačítko Save.

Máte-li hotovo, pak výsledek může vypadat přibližně takto (za zvolené barvy se omlouvám, na tohle nemám cit):

Jakmile se s barvami sžijete, můžete potlačit zobrazování stereotypů (přes kontextové menu digramu vyberte dialog Properties… a na záložce Elements odškrtněte Show Element Stereotypes) a obrázek bude zase o něco přehlednější, přesně ve stylu Mrknu a vidím.

Pár tipů:

  • Pokud nejprve zavedete stereotypy a až pak je nastavíte, pak v seznamu budete mít zavedený pro každý element jeden stereotyp (např. pro třídu a komponentu zvlášť). Buďto tedy nejprve nastavte stereotypy a až pak je u elementů používejte (další změna barvy je pak bez uvedeného efektu) nebo stereotyp dle uvedeného postupu a ostatní stejného jména smažte.
  • Stereotyp lze nastavit každému prvku, tedy i např. atributům tříd či vztahům. Má-li to význam, používejte je.
    • V případě atributů však nedochází k jejich obarvení (viz uvedený obrázek a v něm výčet).
    • V případě vztahů můžete měnit barvu čáry a fontu.
  • Každému elementu lze nastavit libovolné množství stereotypů. Enterprise Architect bere barvu podle prvního stereotypu v pořadí.
  • Pokročilejší uživatelé mohou využít možnosti měnit nejenom barvu, ale napsat si kompletní skript pro vlastní vizualizaci prvku.
  • Nastavení lze přenášet mezi jednotlivými projektovými soubory (*.EAP) pomocí exportu a importu referenčních dat (menu ToolsExport Reference Data… resp. Import Reference Data…).

A na závěr snad už jen ona scéna, o které jsem mluvil v úvodu. Důležitý okamžik je na druhé minutě a dvaadvacáté sekundě.