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.