Sdílet prostřednictvím


Diagramy komponent UML: Pokyny

V aplikaci Visual Studio Ultimate můžete nakreslit diagram komponent a zobrazit pomocí něj strukturu softwarového systému.Video ukázku naleznete v části Návrh fyzické struktury pomocí diagramů komponent.

Diagram komponent UML lze vytvořit kliknutím na položku Nový diagram v nabídce Architektura.

Komponenta je modulární jednotka, která je ve svém prostředí nahraditelná.Její vnitřní součásti jsou skryty, ale má nejméně jedno dobře definované poskytované rozhraní, prostřednictvím kterého lze přistupovat k jejím funkcím.Komponenta může mít také požadovaná rozhraní.Požadované rozhraní definuje, jaké funkce nebo služby vyžaduje od jiných komponent.Propojením poskytovaných a požadovaných rozhraní několika komponent lze sestavit větší komponenty.Jako komponentu lze chápat i kompletní softwarový systém.

Kreslení diagramů komponent má několik výhod:

  • Pokud budou vaše vývojové týmy přemýšlet o návrhu z hlediska hlavních bloků, lépe pochopí existující návrh a snáze vytvoří nový.

  • Pokud budete o svém systému přemýšlet jako o kolekci komponent s dobře definovanými poskytovanými a požadovanými rozhraními, můžete zlepšit rozdělení jednotlivých komponent.Díky tomu lze snáze pochopit návrh a jednodušeji jej změnit v případě, ze dojde ke změně požadavků.

Diagram komponent lze využít k reprezentaci návrhu bez ohledu na to, jaký jazyk nebo platformu používá nebo bude používat.

V tomto tématu

Vztah k jiným diagramům

Základní postup pro vytvoření diagramů komponent

Zobrazení vnitřních částí komponenty

Navrhování komponent

[!POZNÁMKA]

Referenční informace o prvcích diagramu komponent lze nalézt v tématu Diagramy komponent UML: Referenční dokumentace.

Vztah k jiným diagramům

Diagram komponent lze použít společně s jinými diagramy.

Jiný diagram

Umožňuje diskutovat a sdělovat tyto aspekty návrhu

Sekvenční diagram UML

  • Interakce mezi komponentami systému

  • Interakce mezi částmi uvnitř komponenty.

Další informace naleznete v tématu Sekvenční diagramy UML: Pokyny.

Diagram tříd UML

  • Rozhraní komponenty.Diagram tříd nabízí podrobné informace o metodách rozhraní.

  • Data odeslaná v parametrech napříč rozhraními komponent.

Další informace naleznete v tématu Diagramy tříd UML: Pokyny.

Diagramy činností

  • Vnitřní zpracování, které provádějí komponenty jako odpověď na příchozí zprávy.

Další informace naleznete v tématu Diagramy činnosti UML: Pokyny.

Diagramy vrstev

  • Logické vrstvy architektury pro vaše komponenty.

Další informace naleznete v tématu Diagramy vrstev: Referenční dokumentace.

Základní postup pro vytvoření diagramů komponent

Referenční informace o prvcích diagramu komponent lze nalézt v tématu Diagramy komponent UML: Referenční dokumentace.

Další informace o použití diagramů komponent při navrhování naleznete v tématu Modelování architektury softwarového systému.

[!POZNÁMKA]

Podrobné postupy pro vytvoření všech diagramů modelování jsou popsány v tématu Úpravy modelů a diagramů UML.

Vytvoření diagramu komponent

  1. V nabídce Architektura klikněte na položku Nový diagram.

  2. V nabídce Šablony klikněte na možnost Diagram komponent UML.

  3. Pojmenujte diagram.

  4. V nabídce Přidat k projektu modelování vyberte existující projekt modelování z řešení nebo zvolte možnost Vytvořit nový projekt modelování a následně klikněte na tlačítko OK.

    Zobrazí se nový diagram komponent a sada nástrojů Diagram komponent UML.Sada nástrojů obsahuje požadované prvky a vztahy.

Kreslení komponent

Komponenty s rozhraními

Vytvořte komponentu (1) pro každou hlavní funkční jednotku v systému nebo aplikaci.

Například pro aplikaci, hardwarové zařízení, webovou službu, sestavení .NET, třídu programu či skupinu tříd nebo všechny oddělitelné segmenty programu.

Vytváření komponent

  1. V sadě nástrojů klikněte na tlačítko Komponenta a potom klikněte na prázdnou část diagramu.

    - nebo -

    Zkopírujte a vložte existující komponentu.

    1. Najděte existující komponentu v diagramu nebo v Průzkumníku modelů UML.

    2. Klikněte na komponentu pravým tlačítkem a zvolte příkaz Kopírovat.

    3. Otevřete diagram, v němž se má zkopírovaná komponenta zobrazit.

    4. Klikněte pravým tlačítkem myši na prázdnou část diagramu a následně klikněte na položku Vložit.

      Zobrazí se kopie komponenty pod novým názvem.

  2. Po kliknutí na název komponenty jej můžete změnit.

  3. Pokud chcete zobrazit pouze záhlaví komponenty, klikněte na dvojitou šipku (5).

Zobrazení portů komponenty

Port (2, 3) představuje skupinu zpráv nebo volání operace, jež jsou předávány do komponenty nebo z ní.Skupinu popisuje rozhraní, které definuje typ daného portu.Port může rozhraní buď poskytovat, nebo vyžadovat.

Port s poskytovaným rozhraním (2) poskytuje operace, které jsou implementovány komponentou a které mohou využívat jiné komponenty.

Patří mezi ně například uživatelské rozhraní, webová služba, rozhraní .NET nebo kolekce funkcí v libovolném programovacím jazyce.

Port s požadovaným rozhraním (3) představuje požadavek komponenty na skupinu operací nebo služeb, které poskytují jiné části nebo externí systémy.

Například webový prohlížeč vyžaduje webové servery nebo doplněk aplikace vyžaduje služby aplikace.

Komponenta může mít libovolný počet portů.

Přidání portů do komponenty

  1. V sadě nástrojů klikněte na možnost Poskytované rozhraní nebo Požadované rozhraní.

  2. Klikněte na část, k níž ho chcete přidat.

    Port se zobrazí na hranici komponenty.

    Nové rozhraní je vytvořeno jako typ portu.Toto rozhraní se zobrazí v Průzkumníku modelů UML.

  3. Přetáhněte port kolem hranice komponenty a umístěte jej na požadovanou pozici.

  4. Pozici popisku daného portu upravte rovněž přetažením.

  5. Po kliknutí na popisek jej můžete změnit.Popisek zobrazuje název rozhraní.Pokud jej změníte, změníte název rozhraní.

Pokud chcete zobrazit seznam atributů a operací rozhraní, stačí je přidat do rozhraní v Průzkumníku modelů UML.Případně můžete přetáhnout rozhraní z Průzkumníku modelů UML na diagram tříd a přidat operace a atributy tam.

Propojení mezi komponentami

Pomocí závislosti (4) lze zobrazit, že jednomu požadavku komponenty lze vyhovět pomocí operací nebo služeb poskytovaných jinou komponentou.

Zobrazení, že poskytované rozhraní dokáže uspokojit požadavky požadovaného rozhraní

  1. V sadě nástrojů klikněte na volbu Závislost.

  2. Klikněte na port s požadovaným rozhraním na jedné komponentě a poté klikněte na port s poskytovaným rozhraním v jiné komponentě.

Snažte se vyhnout navrhování závislostních smyček, v nichž všechny komponenty ve skupině závisí na všech ostatních komponentách.

Přidání portu pro existující rozhraní do komponenty

  • Najděte rozhraní v Průzkumníku modelů UML a poté je z něj přetáhněte na komponentu.

    -nebo-

  • Zkopírujte a vložte odkaz z diagramu do rozhraní.

    1. V diagramu tříd nebo diagramu komponent klikněte pravým tlačítkem myši na rozhraní a poté klikněte na tlačítko Kopírovat.

    2. V diagramu komponent klikněte pravým tlačítkem myši na komponentu a potom klikněte na tlačítko Vložit odkaz.

      Na komponentě se zobrazí poskytované rozhraní.Poblíž se zobrazí značka Akce.

      [!POZNÁMKA]

      Použijete-li příkaz Vložit místo příkazu Vložit odkaz, vytvoří se nové rozhraní s novým názvem.

    3. Pokud byste chtěli vytvořit požadované rozhraní, klikněte na značku Akce a poté klikněte na tlačítko Převést na požadované rozhraní.

Zobrazení vnitřních částí komponenty

Diagram zobrazující interní součásti

Do komponenty (1) lze umístit části (3), pomocí nichž je možné zobrazit, jak je komponenta složena z menších komponent, které vzájemně spolupracují.

Diagram na obrázku ukazuje, že každá instance typu webové služby Dinner Now obsahuje jednu instanci serveru Zákazník a jednu instanci serveru Kuchyně.

Část je vlastností své nadřazené komponenty, podobně jako atribut patří do běžné třídy.Část má svůj vlastní typ, kterým je obvykle také komponenta.Popisek části má stejný formulář jako obyčejný atribut:

+ partName : TypeName

Jednotlivé části uvnitř nadřazené komponenty zobrazují poskytovaná a požadovaná rozhraní, která jsou definována pro příslušný typ (4, 5).Operace a služby, které jsou vyžadovány jednou stranou, mohou být druhou stranou poskytovány.Pomocí konektorů Sestavení částí můžete zobrazit, jak jsou části mezi sebou propojeny (6).

Lze také zobrazit, že je rozhraní nadřazené komponenty skutečně poskytováno nebo požadováno jednou z jejích částí.Pomocí vztahu Delegace (9) je možné připojit port nadřazeného prvku k portu vnitřní části.Oba porty musí být stejného druhu (poskytované, nebo požadované) a jejich typy rozhraní by měl být kompatibilní.

Novou část lze vytvořit buď pomocí nového typu, nebo z existujícího typu.

Přidání částí do komponenty

  1. Vytvořte část pro každou hlavní funkční jednotku, kterou považujete za součást nadřazené komponenty.

    1. V sadě nástrojů klikněte na tlačítko Komponenta a potom klikněte do nadřazené komponenty (1).

      Nová část (3) se zobrazí uvnitř nadřazené komponenty.

      V Průzkumníku modelů UML je vytvořena nová komponenta.Toto je typ nové části.

      - nebo -

      Přetáhněte existující komponentu z Průzkumníku modelů UML na nadřazenou komponentu.

      Nová část (3) se zobrazí uvnitř nadřazené komponenty.Jejím typem je komponenta, kterou jste přetáhli z Průzkumníku modelů UML.

      - nebo -

      Klikněte v diagramu nebo v Průzkumníku modelů UML pravým tlačítkem myši na komponentu a potom klikněte na možnost Kopírovat.

      Klikněte pravým tlačítkem myši na nadřazenou komponentu a potom klikněte na možnost Vložit odkaz.

      Nová část (3) se zobrazí uvnitř nadřazené komponenty.Jejím typem je komponenta, kterou jste zkopírovali.

    2. Název nové části můžete změnit poté, co na něj kliknete.Její typ měnit nelze.

    3. Do nové části můžete přidat poskytované a požadované rozhraní (4, 5).Klikněte na nástroj Poskytované rozhraní nebo Požadované rozhraní a potom klikněte do části.

      - nebo -

      Přetáhněte existující rozhraní z Průzkumníku modelů UML do části.

      Rozhraní jsou přidána do typu části a zobrazí se přímo na části.Nadřazená komponenta v případě potřeby upraví jeho velikost.

  2. Propojte části mezi sebou.

    • K připojení portů různých částí (6) použijte nástroj Závislost.
  3. Připojte části k portům nadřazené komponenty:

    1. Na nadřazené komponentě vytvořte jeden nebo více portů (7).V sadě nástrojů klikněte na možnost Požadované rozhraní nebo Poskytované rozhraní a potom klikněte na nadřazenou komponentu.

    2. Delegujte (9) port jedné části nebo více částem.Klikněte na nástroj Delegace, poté na port na nadřazené komponentě a následně na port na části.Stejným způsobem můžete připojit porty, které buď poskytují, nebo vyžadují rozhraní.

Zobrazení částí části

Poté, co jste rozložili komponentu na jednotlivé části, můžete rovněž rozložit jednotlivé typy částí na vlastní vnitřní části.

Nejjednodušší je provést každou vrstvu rozložení v samostatném diagramu komponenty.Nejprve musíte vyhledat typ části.Například na obrázku se jedna z částí jmenuje DNCustomerServer a jejím typem je komponenta s názvem CustomerServer.Tento typ můžete najít v Průzkumníku modelů UML a umístit jej do jiného diagramu.Poté můžete vytvořit její vlastní vnitřní části.

Umístění typu části do diagramu

  1. Určete plně kvalifikovaný název typu části.

    Klikněte pravým tlačítkem myši na část a poté klikněte na volbu Vlastnosti.

    Název typu se zobrazí v poli Typ okna Vlastnosti.

  2. Vyhledejte typ části v Průzkumníku modelů UML.

    Klikněte na možnost Zobrazení, přejděte na položku Ostatní okna a potom klikněte na možnost Průzkumník modelů UML.

    Rozbalte projekt a v případě potřeby také každý balíček, ke kterému typ patří.

    Typ bude uveden jako Komponenta.

    Pokud chcete, můžete zde jeho název změnit.

  3. Otevřete nebo vytvořte další diagram komponent.

  4. Přetáhněte typ z Průzkumníku modelů UML do diagramu.

    Typ se v diagramu zobrazí jako komponenta.

    Má stejná rozhraní, která jste definovali pro část.

    Nyní můžete dovnitř přidat části.

Popis způsobu spolupráce částí

Můžete nakreslit sekvenční diagram zobrazující způsob, jak spolu části vzájemně spolupracují v reakci na zprávu, která dorazí na nadřazenou komponentu.

Tyto diagramy lze použít k vysvětlení existující komponenty i k návrhu nové komponenty.

Pokud komponentu stále ještě navrhujete, můžete sekvenční diagramy nakreslit ještě předtím, než se rozhodnete, jaké části bude výsledná komponenta mít.Pomocí sekvenčních diagramů můžete experimentovat s různými částmi, požadovanými rozhraními a sekvencemi zpráv.Sekvenční diagramy nakreslete pro nejčastěji používané a nejdůležitější příchozí zprávy.Následně lze v komponentě vytvořit části, jež odpovídají životnosti, pro kterou jste se rozhodli.

Pomocí sekvenčních diagramů lze posoudit, jak je práce systému rozložena mezi různé komponenty.

  • Pokud příliš velká část práce leží na jediné části, pravděpodobně bude obtížnější aplikaci aktualizovat, než když bude práce rovnoměrně rozložena.

  • Pokud bude práce rozvržena příliš slabě a bude docházet k mnoha interakcím, výkon systému může poklesnout a systém může být obtížněji pochopitelný.

Části nákresu posloupnost spolupráce

Nakreslení sekvenčního diagramu, který zobrazuje spolupráci mezi částmi

  1. Vytvořte nový sekvenční diagram.

    Další informace naleznete v tématu Sekvenční diagramy UML: Pokyny.

  2. Vytvořte životnost pro externí komponentu, uživatele, zařízení nebo jiný objekt aktor (1), který odesílá zprávy této komponentě.

    Nastavením vlastnosti Objekt aktor této životnosti na hodnotu true můžete určit, že je mimo uvažovanou komponentu.Nad životností se zobrazí obrázek postavičky.

  3. Vytvořte životnost pro poskytované rozhraní (2) této komponenty, na kterou vybraný objekt aktor odesílá zprávy.

  4. Vytvořte životnost pro každou část (3) komponenty.

  5. Vytvořte životnost pro každé požadované rozhraní (4) komponenty.

  6. Nakreslete zprávy od externího objektu aktor (5).Zobrazte způsob předávání zpráv do částí a způsob spolupráce při odpovídání na zprávu.

  7. V případě potřeby zobrazte zprávy odeslané do požadovaného rozhraní (6).V rámci spuštění zprávy nezobrazujte žádné podrobnosti.

Je komponenta více než její části?

V některých případech není komponenta nic víc než název připojený ke kolekci částí.Veškerou práci provádí části a v době spuštění neexistuje žádný kód či jiný artefakt, který by představoval komponentu.

To lze naznačit v modelu nastavením vlastnosti Instance je vytvořena nepřímo komponenty.V tomto případě by měla být všechna rozhraní komponenty na portech, s delegací do vnitřních částí.

Popis procesu uvnitř jednotlivých částí

Diagramy aktivit slouží k zobrazení způsobu, jakým komponenta zpracovává příchozí zprávy.Další informace naleznete v tématu Diagramy činnosti UML: Pokyny.

Diagram aktivity s vyrovnávací paměť pro data

Pomocí volby Přijmout akci události (1) lze znázornit, že příchozí zpráva začíná nové vlákno.

Pomocí uzlů objektu a vstupních a výstupních spojek lze znázornit tok informací a místo, kde jsou informace uloženy.V příkladu slouží objekt uzlu (2) k zobrazení položek, které jsou mezi dvěma vlákny ukládány do vyrovnávací paměti.

Definování dat a tříd

Diagram tříd UML lze použít k popisu podrobného obsahu:

  • Rozhraní komponent.Když do komponenty přidáváte vyžadovaný nebo poskytovaný port, zobrazí se rozhraní v Průzkumníku modelů UML.Můžete jej přetáhnout nebo zkopírovat do diagramu tříd UML, čímž zobrazíte jeho atributy, operace a vztahy s jinými rozhraními.

  • Data předaná v parametrech operací v rozhraní.

  • Data uložená v komponentách, například jak ukazují toky objektů v diagramech aktivit.

Obecné závislosti mezi komponentami

Diagram komponent lze použít pouze k zobrazení hlavních částí návrhu a jejich vzájemných závislostí.

Závislost mezi komponentami

Závislost nakreslete pomocí nástroje Závislost.To značí, že návrh jedné komponenty závisí na jiné komponentě.

Mezi typické druhy závislostí patří:

  • Jedna komponenta volá kód v rámci druhé.

  • Jedna komponenta vytvoří instanci třídy, která je definována v jiné třídě.

  • Jedna komponenta využívá informace vytvořené jinou komponentou.

Název šipky závislostí lze použít k označení určitého druhu použití.Chcete-li nastavit název, klikněte pravým tlačítkem myši na šipku, poté klikněte na tlačítko Vlastnostia nastavte pole Název v okně vlastností.

Viz také

Referenční dokumentace

Sekvenční diagramy UML: Referenční dokumentace

Koncepty

Úpravy modelů a diagramů UML

Diagramy komponent UML: Referenční dokumentace

Diagramy případů použití UML: Referenční dokumentace

Diagramy tříd UML: Referenční dokumentace

Diagramy komponent UML: Referenční dokumentace

Další zdroje

Video: Návrh fyzické struktury pomocí diagramů komponent