UML diagramy komponentov
Systém ako sada vymeniteľných častí a zmluvy medzi nimi. Čo každý kus ponúka, čo potrebuje a - to užitočné - čo by ste museli dodržať, keby ste ho chceli vymeniť.
13 min čítaniaUML 2.5.117 z 35
Krátka odpoveď
- Komponent je vymeniteľná jednotka s definovaným kontraktom - niečo, čo by ste vedeli zadať do súťaže - nie iba veľká trieda.
- Každý komponent nesie dva zoznamy: čo poskytuje a čo vyžaduje. Vyžadovaná polovica sa najčastejšie vynecháva, a práve tá nesie závislosti.
- Guľôčka na paličke je poskytované rozhranie, polmiska je vyžadované a guľôčka zapadnutá do misky sú tie dve spojené.
- Komponent je logický, uzol je fyzický. Vo chvíli, keď škatuľa dostane názov hostiteľa alebo počet inštancií, kreslíte diagram nasadenia.
01Čo ukazuje#
Diagram komponentov popisuje systém ako vymeniteľné časti. Komponent v UML nie je hocijaká trieda - je to jednotka s definovanou hranicou, ktorá by sa v princípe dala vymeniť za inú implementáciu tých istých zmlúv bez toho, aby si to okolie všimlo.
V tej definícii je celá hodnota. Diagram vás núti pri každej časti zapísať práve dve veci: čo poskytuje a čo vyžaduje. Tieto dva zoznamy sú zmluvou tej časti so zvyškom systému a sú presne tým, čo naozaj potrebujete pri plánovaní migrácie, odhade prepisu alebo rozhodovaní, či je hranica služby na správnom mieste.
02Notácia#
| Prvok | Notácia | Čo znamená |
|---|---|---|
| Komponent | obdĺžnik s ikonou zástrčky | Vymeniteľná jednotka. Ikona v rohu je forma UML 2; staršia forma dávala ikonu namiesto boxu. |
| Poskytované rozhranie | Komponent implementuje túto zmluvu. Kreslí sa ako realizácia k «interface», alebo ako guľôčka na paličke. | |
| Vyžadované rozhranie | Komponent potrebuje, aby to niekto poskytol. Kreslí sa ako závislosť, alebo ako objímka - polovička pohárika na paličke. | |
| Assembly konektor | guľôčka sediaca v objímke | Poskytované rozhranie jedného komponentu zapojené do vyžadovaného rozhrania druhého. Kompaktná forma dvoch riadkov vyššie. |
| Port | malý štvorec na hranici | Pomenovaný bod interakcie. Použite ho, keď má jeden komponent viac odlišných kanálov - napríklad verejné API a administrátorské. |
| Delegačný konektor | Z portu na vonkajšku k časti vnútri: túto vonkajšiu zmluvu v skutočnosti obsluhuje tamten vnútorný kus. |
Forma guľôčky a objímky (ball and socket) je kompaktná a väčšina nástrojov ju kreslí predvolene: lízatko trčiace z komponentu je rozhranie, ktoré poskytuje, polovička pohárika je to, ktoré vyžaduje, a guľôčka spočívajúca v objímke sú obe zapojené do seba. Je to tá istá informácia ako šípky vyššie, len na menšom mieste. Použite tú, ktorú vaši čitatelia zvládnu ľahšie; v rámci jedného diagramu buďte konzistentní.
Každá značka, ktorú tento druh diagramu unesie - obe notácie rozhraní, assembly aj delegačné konektory, porty a štyri stereotypy, ktoré sa oplatí písať - je vysvetlená v symboloch diagramu komponentov.
03Aký veľký je komponent?#
Na tejto otázke uviazne každý prvý diagram komponentov a špecifikácia nepomôže: UML hovorí, že komponent je vymeniteľná jednotka s definovanou zmluvou, a veľkosť necháva úplne na vás. Pre normu je to správna odpoveď a pri tabuli nepoužiteľná, takže tu je pracovné pravidlo.
Komponent je to, čo by ste vedeli vypísať do súťaže. Ak si viete predstaviť, že inému tímu podáte zoznamy poskytovaných a vyžadovaných rozhraní a poviete „postavte toto, dovnútra sa nepozrieme“, je to komponent. Ak by si to odovzdanie vyžiadalo rozhovor o vnútornostiach, hranica je nakreslená na zlom mieste - a to je zistenie, nie kresliaci problém, ktorý treba obísť.
V praxi to zvyčajne dopadne na jednu z týchto možností a to, na ktorú, vám povie, na čo diagram je.
- Nasaditeľná služba. Jeden repozitár, jedna pipeline, jedna pohotovosť. Najčastejšia odpoveď pri čomkoľvek postavenom za posledné desaťročie a úroveň, na ktorej sa oplatí držať diagram v repozitári.
- Knižnica alebo modul. Vnútri jednej nasaditeľnej jednotky, keď sa spor vedie o vnútornú štruktúru - ktorý balík smie závisieť od ktorého. Tu často povie to isté lacnejšie diagram balíkov.
- Celý systém. Mainframe, CRM, platobný poskytovateľ. Úroveň pre kontextový diagram, kde ide o to, od čoho závisíte, nie ako je to postavené.
Miešanie dvoch z týchto úrovní na jednom diagrame je chyba, ktorá vyrába tie rozbujnené diagramy komponentov, na ktoré si ľudia spomínajú. Obrázok s tromi mikroslužbami, jednou pomocnou knižnicou a „SAP“ sú tri diagramy položené na seba a žiadny čitateľ nerozozná, ktoré boxy sú si rovné.
04Ako ho poriadne čítať#
Najužitočnejšou technikou čítania je zakryť komponent dlaňou. Čo zostane, je jeho zmluva: rozhrania, ktoré k nemu boli pripojené. Ak ten zoznam viete podať inému tímu so slovami „postavte niečo, čo tomuto vyhovie“, diagram robí svoju prácu. Ak nie - ak by výmena komponentu vyžadovala vedieť veci, ktoré nakreslené nie sú - hranica je na zlom mieste, a to sa oplatí vedieť skôr, než sa o to niekto pokúsi.
Druhou technikou je sledovať vyžadované rozhrania. Každé z nich je závislosť, ktorú musí niekto naplniť, a cyklus v tomto grafe je skutočný architektonický problém, ktorý diagram komponentov okamžite zviditeľní.
Obe techniky sa ľahšie vidia použité než opísané. Päť diagramov systémov, na ktorých ste pravdepodobne pracovali - zdieľaný katalóg, porty a adaptéry, výmena legacy systému, hostiteľ zásuvných modulov a cyklus - je rozobratých v príkladoch diagramov komponentov, každý so sporom, ktorý rieši.
05Ktorý box vlastne kreslím?#
Päť druhov diagramov sú obdĺžniky spojené čiarami a rozdiel medzi nimi je úplne v tom, čím obdĺžnik je. Vybrať ten nesprávny je tu najdrahšia dostupná chyba, lebo diagram bude vyzerať v poriadku a odpovie na otázku, ktorú nikto nepoložil.
| Prvok | Notácia | Čo znamená |
|---|---|---|
| Komponentový | vymeniteľná jednotka | Boxy sú veci, ktoré sa dajú vymeniť za inú implementáciu tej istej zmluvy. Čiary sú poskytované a vyžadované rozhrania. Odpovedá: čo každá časť sľubuje a čo potrebuje? |
| Triedny | typ | Boxy sú typy v kóde. Čiary sú asociácie, generalizácie a závislosti medzi nimi. Odpovedá: aký je tvar kódu? Pozrite diagram tried. |
| Balíkový | menný priestor | Boxy sú zoskupenia - priečinky, menné priestory, moduly. Čiary sú povolené závislosti. Odpovedá: čo smie importovať čo? |
| Nasadenia | uzol | Boxy sú stroje, kontajnery a behové prostredia. Čiary sú komunikačné cesty. Odpovedá: kde to naozaj beží a cez čo? Pozrite diagram nasadenia. |
| Zloženej štruktúry | časť vnútri celku | Boxy sú časti, z ktorých je jeden klasifikátor zložený, nakreslené vnútri neho. Odpovedá: z čoho je táto vec vnútri postavená? |
Ten istý obdĺžnik v piatich notáciách. Prečítajte si stredný stĺpec skôr, než začnete kresliť: je to veta, na ktorú je celý diagram odpoveďou.
Najčastejšie sa objaví otázka komponentový verzus nasadenia a rozdelenie je po vyslovení čisté: komponent je logická jednotka a uzol fyzická. Jeden komponent môže bežať na štyridsiatich uzloch; jeden uzol môže hostiť tucet komponentov. V okamihu, keď box na vašom diagrame komponentov dostane región, počet inštancií alebo názov hostiteľa, prestal byť komponentom a diagram sa potichu stal dvomi.
Ak ste sa stretli s C4, jeho diagram kontajnerov leží takmer presne tam, kde diagram komponentov na úrovni nasaditeľnej služby, a jeho vlastná úroveň „komponentov“ je o krok hlbšie, než UML zvyčajne myslí. Slovníky si nesadnú, takže na diagram napíšte, ktorý používate - ten jeden riadok legendy predíde väčšine sporov.
06Kedy taký diagram kresliť#
Siahnite po ňom, keď
- Definovanie hraníc služieb pred rozdelením alebo zlúčením systémov
- Zdokumentovanie toho, čo tím vlastní a od čoho závisí u iných
- Plánovanie náhrady - zmluva je presne to, čomu musí nová vec vyhovieť
- Kontrola, či závislosti tečú tak, ako architektúra tvrdí
Siahnite po niečom inom, keď
- Myslíte fyzické stroje a procesy - použite diagram nasadenia
- Myslíte vnútro jedného komponentu - použite diagram zloženej štruktúry
- Časti sú triedy, nie vymeniteľné jednotky - použite diagram tried
- Sú tri služby a všetci už vedia, ako sú prepojené
Diagramy komponentov starnú dobre, čo je nezvyčajné. Rozhrania sa menia oveľa pomalšie než kód za nimi, takže diagram komponentov uložený v repozitári zostáva pravdivý oveľa dlhšie než diagram tried toho istého systému - a zodpovedajúco viac sa oplatí ho udržiavať.
07Časté chyby#
- Komponenty, ktoré sú v skutočnosti triedy. Ak sa to nedá vierohodne vymeniť samostatne, nie je to komponent. Použite diagram tried.
- Nakreslené len poskytované rozhrania. Vyžadované nesú informáciu o závislostiach, čo je tá užitočnejšia polovica.
- Šípky medzi komponentmi bez rozhrania. Holá šípka hovorí „nejako závisí“, čo je práve to, čo má tento diagram spresniť.
- Primiešané nasadenie. Servery, regióny a kontajnery patria na diagram nasadenia.
- Rozhrania pomenované podľa poskytovateľa.
ILedgerje v poriadku, keď je jedna účtovná kniha; keď môžu byť dve implementácie, pomenujte zmluvu podľa schopnosti, nie podľa súčasného dodávateľa.
Po jednom riadku na každé
- 01Komponent je vymeniteľná jednotka s definovanou zmluvou, nie len veľká trieda.
- 02Každý komponent má dva zoznamy: čo poskytuje a čo vyžaduje.
- 03Realizácia (prázdny trojuholník, prerušovaná) ukazuje na implementované rozhranie.
- 04Závislosť (otvorená šípka, prerušovaná) ukazuje na vyžadované rozhranie.
- 05Guľôčka a objímka je kompaktná forma tej istej informácie.
- 06Zakryte komponent dlaňou: čo zostane, je to, čomu musí náhrada vyhovieť.
08Časté otázky#
Čo je notácia gule a objímky?
Je to skratka pre rozhrania. Poskytované rozhranie je lízanka, malý krúžok na paličke. Vyžadované rozhranie je objímka, polkruh. Zapadnutie gule do objímky ukazuje, že jeden komponent uspokojuje závislosť druhého, bez toho, aby ste rozhranie kreslili ako triedu.
Aký je rozdiel medzi diagramom komponentov a diagramom tried?
Diagram tried ukazuje typy a ich vnútornú štruktúru. Diagram komponentov ukazuje nasaditeľné, vymeniteľné jednotky a zmluvy medzi nimi a zámerne skrýva, čo je vnútri každej z nich. Odpovedá na otázku, čo by ste museli dodržať, aby ste časť vymenili.
Čo je port v UML?
Malý štvorec na okraji komponentu, ktorý predstavuje jeden odlišný bod interakcie. Porty dovoľujú komponentu vystaviť viac oddelených rozhraní, napríklad administrátorské a verejné API, namiesto jedinej nerozlíšenej plochy.
Kedy má zmysel kresliť diagram komponentov?
Keď má systém časti, ktoré by sa dali reálne vymeniť alebo kúpiť namiesto postaviť, a zaujímavou otázkou je rozhranie medzi nimi. Ak nie je v systéme nič vymeniteľné, diagram len zopakuje štruktúru balíkov.
V tejto sérii
- 01Čo je UML?
- 02Symboly UML
- 03Výber diagramu
- 04Diagramy tried
- 05Príklady diagramov tried
- 06Ako nakresliť diagram tried
- 07Symboly diagramu tried
- 08Sekvenčné diagramy
- 09Príklady sekvenčných diagramov
- 10Ako nakresliť sekvenčný diagram
- 11Diagramy prípadov použitia
- 12Príklady prípadov použitia
- 13Diagramy aktivít
- 14Príklady aktivít
- 15Stavové diagramy
- 16Príklady stavových diagramov
- 17Diagramy komponentov
- 18Príklady komponentov
- 19Kreslenie diagramu komponentov
- 20Symboly komponentov
- 21Diagramy nasadenia
- 22Príklady nasadenia
- 23Diagramy objektov
- 24Diagramy balíkov
- 25Diagramy zloženej štruktúry
- 26Komunikačné diagramy
- 27Sekvenčný vs komunikačný
- 28Časové diagramy
- 29Diagramy prehľadu interakcií
- 30Diagramy profilov
- 31UML pomocou AI
- 32Príklad e-shopu
- 33Príklad banky
- 34Príklad mikroslužieb
- 35Príklad AWS
Súvisiace články
Diagramy štruktúry
Prax modelovania
Prehľad notácie
Diagramy štruktúry
Diagramy štruktúry
Diagramy štruktúry