UML diagramy komponent
Systém jako sada vyměnitelných částí a smlouvy mezi nimi. Co každý kus nabízí, co potřebuje a - to užitečné - co byste museli dodržet, kdybyste ho chtěli vyměnit.
13 min čteníUML 2.5.117 z 35
Krátká odpověď
- Komponenta je vyměnitelná jednotka s definovaným kontraktem - něco, co byste dokázali zadat do soutěže - ne jen velká třída.
- Každá komponenta nese dva seznamy: co poskytuje a co vyžaduje. Vyžadovaná polovina se nejčastěji vynechává, a právě ta nese závislosti.
- Kulička na tyčce je poskytované rozhraní, půlmiska je vyžadované a kulička zapadlá do misky jsou ty dvě spojené.
- Komponenta je logická, uzel je fyzický. Ve chvíli, kdy krabice dostane název hostitele nebo počet instancí, kreslíte diagram nasazení.
01Co ukazuje#
Diagram komponent popisuje systém jako vyměnitelné části. Komponenta v UML není ledajaká třída - je to jednotka s definovanou hranicí, kterou by šlo v principu vyměnit za jinou implementaci týchž smluv, aniž by si toho okolí všimlo.
V té definici je celá hodnota. Diagram vás nutí u každé části zapsat právě dvě věci: co poskytuje a co vyžaduje. Tyhle dva seznamy jsou smlouvou dané části se zbytkem systému a jsou přesně tím, co opravdu potřebujete při plánování migrace, odhadu přepisu nebo rozhodování, zda je hranice služby na správném místě.
02Notace#
| Prvek | Notace | Co znamená |
|---|---|---|
| Komponenta | obdélník s ikonou zástrčky | Vyměnitelná jednotka. Ikona v rohu je forma UML 2; starší forma dávala ikonu místo boxu. |
| Poskytované rozhraní | Komponenta implementuje tuto smlouvu. Kreslí se jako realizace k «interface», nebo jako kulička na tyčce. | |
| Vyžadované rozhraní | Komponenta potřebuje, aby to někdo poskytl. Kreslí se jako závislost, nebo jako objímka - polovina kalíšku na tyčce. | |
| Assembly konektor | kulička sedící v objímce | Poskytované rozhraní jedné komponenty zapojené do vyžadovaného rozhraní druhé. Kompaktní forma dvou řádků výše. |
| Port | malý čtverec na hranici | Pojmenovaný bod interakce. Použijte, když má jedna komponenta několik odlišných kanálů - třeba veřejné API a administrátorské. |
| Delegační konektor | Z portu na vnějšku k části uvnitř: tuhle vnější smlouvu ve skutečnosti obsluhuje tamten vnitřní kus. |
Forma kuličky a objímky (ball and socket) je kompaktní a většina nástrojů ji kreslí ve výchozím stavu: lízátko trčící z komponenty je rozhraní, které poskytuje, polovina kalíšku je to, které vyžaduje, a kulička spočívající v objímce jsou obě zapojené do sebe. Je to tatáž informace jako šipky výše, jen na menším místě. Použijte tu, kterou vaši čtenáři zvládnou snáz; v rámci jednoho diagramu buďte konzistentní.
Každá značka, kterou tenhle druh diagramu unese - obě notace rozhraní, assembly i delegační konektory, porty a čtyři stereotypy, které se vyplatí psát - je vysvětlena v symbolech diagramu komponent.
03Jak velká je komponenta?#
Na téhle otázce uvázne každý první diagram komponent a specifikace nepomůže: UML říká, že komponenta je vyměnitelná jednotka s definovanou smlouvou, a velikost nechává zcela na vás. Pro normu je to správná odpověď a u tabule nepoužitelná, takže tady je pracovní pravidlo.
Komponenta je to, co byste uměli vypsat do soutěže. Pokud si dokážete představit, že jinému týmu podáte seznamy poskytovaných a vyžadovaných rozhraní a řeknete „postavte tohle, dovnitř se nepodíváme“, je to komponenta. Pokud by si to předání vyžádalo rozhovor o vnitřnostech, hranice je nakreslená na špatném místě - a to je zjištění, ne kreslicí problém, který je třeba obejít.
V praxi to obvykle dopadne na jednu z těchhle možností a to, na kterou, vám řekne, k čemu diagram je.
- Nasaditelná služba. Jeden repozitář, jedna pipeline, jedna pohotovost. Nejčastější odpověď u čehokoli postaveného za poslední dekádu a úroveň, na které se vyplatí držet diagram v repozitáři.
- Knihovna nebo modul. Uvnitř jedné nasaditelné jednotky, když se spor vede o vnitřní strukturu - který balíček smí záviset na kterém. Tady často řekne totéž levněji diagram balíčků.
- Celý systém. Mainframe, CRM, platební poskytovatel. Úroveň pro kontextový diagram, kde jde o to, na čem závisíte, ne jak je to postaveno.
Míchání dvou z těchhle úrovní na jednom diagramu je chyba, která vyrábí ty rozbujelé diagramy komponent, na které si lidé vzpomínají. Obrázek se třemi mikroslužbami, jednou pomocnou knihovnou a „SAP“ jsou tři diagramy položené na sebe a žádný čtenář nepozná, které boxy jsou si rovné.
04Jak ho pořádně číst#
Nejužitečnější technikou čtení je zakrýt komponentu dlaní. Co zbude, je její smlouva: rozhraní, která k ní byla připojena. Pokud ten seznam umíte podat jinému týmu se slovy „postavte něco, co tomuhle vyhoví“, diagram dělá svou práci. Pokud ne - pokud by výměna komponenty vyžadovala znát věci, které nakreslené nejsou - hranice je na špatném místě, a to se vyplatí vědět dřív, než se o to někdo pokusí.
Druhou technikou je sledovat vyžadovaná rozhraní. Každé z nich je závislost, kterou musí někdo naplnit, a cyklus v tomhle grafu je skutečný architektonický problém, který diagram komponent okamžitě zviditelní.
Obě techniky se snáz vidí použité než popsané. Pět diagramů systémů, na kterých jste pravděpodobně pracovali - sdílený katalog, porty a adaptéry, výměna legacy systému, hostitel zásuvných modulů a cyklus - je rozebráno v příkladech diagramů komponent, každý se sporem, který řeší.
05Který box vlastně kreslím?#
Pět druhů diagramů jsou obdélníky spojené čarami a rozdíl mezi nimi je zcela v tom, čím obdélník je. Vybrat ten špatný je tu nejdražší dostupná chyba, protože diagram bude vypadat v pořádku a odpoví na otázku, kterou nikdo nepoložil.
| Prvek | Notace | Co znamená |
|---|---|---|
| Komponentový | vyměnitelná jednotka | Boxy jsou věci, které lze vyměnit za jinou implementaci téže smlouvy. Čáry jsou poskytovaná a vyžadovaná rozhraní. Odpovídá: co každá část slibuje a co potřebuje? |
| Třídní | typ | Boxy jsou typy v kódu. Čáry jsou asociace, generalizace a závislosti mezi nimi. Odpovídá: jaký je tvar kódu? Viz diagram tříd. |
| Balíčkový | jmenný prostor | Boxy jsou seskupení - složky, jmenné prostory, moduly. Čáry jsou povolené závislosti. Odpovídá: co smí importovat co? |
| Nasazení | uzel | Boxy jsou stroje, kontejnery a běhová prostředí. Čáry jsou komunikační cesty. Odpovídá: kde to opravdu běží a přes co? Viz diagram nasazení. |
| Složené struktury | část uvnitř celku | Boxy jsou části, ze kterých je jeden klasifikátor složen, nakreslené uvnitř něj. Odpovídá: z čeho je tahle věc uvnitř postavená? |
Tentýž obdélník v pěti notacích. Přečtěte si prostřední sloupec dřív, než začnete kreslit: je to věta, na kterou je celý diagram odpovědí.
Nejčastěji se objeví otázka komponentový versus nasazení a rozdělení je po vyslovení čisté: komponenta je logická jednotka a uzel fyzická. Jedna komponenta může běžet na čtyřiceti uzlech; jeden uzel může hostit tucet komponent. Ve chvíli, kdy box na vašem diagramu komponent dostane region, počet instancí nebo název hostitele, přestal být komponentou a diagram se potichu stal dvěma.
Pokud jste se setkali s C4, jeho diagram kontejnerů leží skoro přesně tam, kde diagram komponent na úrovni nasaditelné služby, a jeho vlastní úroveň „komponent“ je o krok hlouběji, než UML obvykle myslí. Slovníky si nesednou, takže na diagram napište, který používáte - ten jeden řádek legendy předejde většině sporů.
06Kdy takový diagram kreslit#
Sáhněte po něm, když
- Definování hranic služeb před rozdělením nebo sloučením systémů
- Zdokumentování toho, co tým vlastní a na čem závisí u jiných
- Plánování náhrady - smlouva je přesně to, čemu musí nová věc vyhovět
- Kontrola, zda závislosti tečou tak, jak architektura tvrdí
Sáhněte po něčem jiném, když
- Myslíte fyzické stroje a procesy - použijte diagram nasazení
- Myslíte vnitřek jedné komponenty - použijte diagram složené struktury
- Části jsou třídy, ne vyměnitelné jednotky - použijte diagram tříd
- Jsou tři služby a všichni už vědí, jak jsou propojené
Diagramy komponent stárnou dobře, což je neobvyklé. Rozhraní se mění mnohem pomaleji než kód za nimi, takže diagram komponent uložený v repozitáři zůstává pravdivý mnohem déle než diagram tříd téhož systému - a odpovídajícím způsobem víc se vyplatí ho udržovat.
07Časté chyby#
- Komponenty, které jsou ve skutečnosti třídy. Pokud to nelze věrohodně vyměnit samostatně, není to komponenta. Použijte diagram tříd.
- Nakreslená jen poskytovaná rozhraní. Vyžadovaná nesou informaci o závislostech, což je ta užitečnější polovina.
- Šipky mezi komponentami bez rozhraní. Holá šipka říká „nějak závisí“, což je právě to, co má tenhle diagram zpřesnit.
- Přimíchané nasazení. Servery, regiony a kontejnery patří na diagram nasazení.
- Rozhraní pojmenovaná podle poskytovatele.
ILedgerje v pořádku, když je jedna účetní kniha; když můžou být dvě implementace, pojmenujte smlouvu podle schopnosti, ne podle současného dodavatele.
Po jednom řádku na každé
- 01Komponenta je vyměnitelná jednotka s definovanou smlouvou, ne jen velká třída.
- 02Každá komponenta má dva seznamy: co poskytuje a co vyžaduje.
- 03Realizace (prázdný trojúhelník, přerušovaná) ukazuje na implementované rozhraní.
- 04Závislost (otevřená šipka, přerušovaná) ukazuje na vyžadované rozhraní.
- 05Kulička a objímka je kompaktní forma téže informace.
- 06Zakryjte komponentu dlaní: co zbude, je to, čemu musí náhrada vyhovět.
08Časté dotazy#
Co je notace koule a objímky?
Je to zkratka pro rozhraní. Poskytované rozhraní je lízátko, malý kroužek na tyčce. Vyžadované rozhraní je objímka, půlkruh. Zapadnutí koule do objímky ukazuje, že jedna komponenta uspokojuje závislost druhé, aniž byste rozhraní kreslili jako třídu.
Jaký je rozdíl mezi diagramem komponent a diagramem tříd?
Diagram tříd ukazuje typy a jejich vnitřní strukturu. Diagram komponent ukazuje nasaditelné, vyměnitelné jednotky a smlouvy mezi nimi a záměrně skrývá, co je uvnitř každé z nich. Odpovídá na otázku, co byste museli dodržet, abyste část vyměnili.
Co je port v UML?
Malý čtverec na okraji komponenty, který představuje jeden odlišný bod interakce. Porty dovolují komponentě vystavit více oddělených rozhraní, například administrátorské a veřejné API, místo jediné nerozlišené plochy.
Kdy má smysl kreslit diagram komponent?
Když má systém části, které by šlo reálně vyměnit nebo koupit místo postavit, a zajímavou otázkou je rozhraní mezi nimi. Není-li v systému nic vyměnitelného, diagram jen zopakuje strukturu balíků.
V této sérii
- 01Co je UML?
- 02Symboly UML
- 03Výběr diagramu
- 04Diagramy tříd
- 05Příklady diagramů tříd
- 06Jak nakreslit diagram tříd
- 07Symboly diagramu tříd
- 08Sekvenční diagramy
- 09Příklady sekvenčních diagramů
- 10Jak nakreslit sekvenční diagram
- 11Diagramy případů užití
- 12Příklady případů užití
- 13Diagramy aktivit
- 14Příklady aktivit
- 15Stavové diagramy
- 16Příklady stavových diagramů
- 17Diagramy komponent
- 18Příklady komponent
- 19Kreslení diagramu komponent
- 20Symboly komponent
- 21Diagramy nasazení
- 22Příklady nasazení
- 23Diagramy objektů
- 24Diagramy balíků
- 25Diagramy složené struktury
- 26Komunikační diagramy
- 27Sekvenční vs komunikační
- 28Časové diagramy
- 29Diagramy přehledu interakcí
- 30Diagramy profilů
- 31UML pomocí AI
- 32Příklad e-shopu
- 33Příklad banky
- 34Příklad mikroslužeb
- 35Příklad AWS
Související články
Diagramy struktury
Praxe modelování
Přehled notace
Diagramy struktury
Diagramy struktury
Diagramy struktury