Príklady diagramov komponentov
Päť diagramov komponentov systémov, na akých ste pravdepodobne robili. Každý má rozhodnúť jednu otázku: kto smie koho volať, čo by musela splniť náhrada a kde vedie závislosť opačne, než by mala.
9 min čítaniaUML 2.5.118 z 35
Krátka odpoveď
- Najužitočnejší príklad je ten najmenší, ktorý rozhodne spor: dva alebo tri komponenty, rozhrania medzi nimi a nič viac.
- Mikroslužby sa mapujú čisto - jedna služba na komponent, jedno publikované API na rozhranie. Kde bežia, je diagram nasadenia, nie tento.
- Tri až deväť komponentov. Nad desať čitateľ prestane sledovať šípky a začne prebehávať očami - vtedy sa diagram stal dekoráciou.
- Kreslite adaptér, nie databázu. Zmluva, na ktorej váš kód závisí, je tá informácia, ktorá stojí za nakreslenie; samotný produkt je infraštruktúra.
01Ako čítať tých päť#
Každý diagram nižšie používa tie isté tri značky, a ak ich viete prečítať, prečítate všetkých päť: komponent je box s ikonou zástrčky, «interface» je box pomenúvajúci kontrakt a šípky hovoria, na ktorej strane toho kontraktu každý komponent stojí. Čiarkovaná šípka s dutým trojuholníkom znamená toto implementujem. Obyčajná čiarkovaná šípka znamená toto potrebujem. Celá sada je v symboloch diagramu komponentov a úvaha za notáciou je v sprievodcovi diagramom komponentov.
Sú zoradené podľa toho, ako často sa ten tvar objavuje, nie podľa zložitosti. Každý pomenúva otázku, ktorú rieši, lebo diagram komponentov, ktorý nerieši nič, je najčastejším druhom a najmenej užitočným: päť boxov, päť šípok a žiadne tvrdenie, s ktorým by niekto mohol nesúhlasiť.
032. Porty a adaptéry#
Prečítajte si šípky a všimnite si, čoho sa jadro objednávok nedotýka. Nezávisí od HTTP a nezávisí od PostgreSQL. Realizuje jeden kontrakt a vyžaduje druhý, a oba sú boxy, ktoré mu mohol podať ktokoľvek.
Toto je tvar, ktorý ľudia myslia hexagonálnou architektúrou, portami a adaptérmi alebo čistou architektúrou, a diagram komponentov je najlacnejším spôsobom, ako overiť, či ju kódová základňa naozaj má. Ak má box jadra šípku mieriacu na databázový komponent namiesto na rozhranie, je ten vzor len ašpiráciou: niečo v strede importuje ovládač.
043. Jeden kontrakt, dve implementácie#
Toto je diagram, ktorý sa kreslí pred výmenou, nie po nej. Tvrdenie, ktoré robí, je presné a testovateľné: všetko, čo objednávková služba od fakturácie potrebuje, je v IBilling, takže druhá implementácia toho rozhrania sa dá zapojiť bez toho, aby sa objednávková služba menila.
Je to zároveň najrýchlejší spôsob, ako zistiť, že to tvrdenie je nepravdivé. Ak niekto povie „nová služba nevie vystaviť PDF výpisy“, potom boli PDF výpisy súčasťou kontraktu a v rozhraní chýbajú, a diagram bol nesprávny skôr než migrácia. Ten rozhovor stojí desať minút pri tabuli a tri mesiace v produkcii.
Keď je stará implementácia preč, zmažte ju z diagramu. Diagram komponentov, ktorý dva roky po vypnutí stále ukazuje mainframe, je dôvodom, prečo ľudia prestanú diagramom veriť.
054. Architektúra so zásuvnými modulmi#
Topologicky je toto príklad tri s pridanou treťou implementáciou, a pri tej podobnosti sa oplatí zastaviť: vymeniteľnosť a rozšíriteľnosť sú tá istá kresba. Líši sa zámer. Pri migrácii je realizácia navyše dočasná; pri architektúre so zásuvnými modulmi je produktom.
Technika čítania, ktorá sa tu vyplatí, je zakryť pravý stĺpec dlaňou. To, čo zostane - hostiteľ a IExporter- je všetko, čo autor štvrtého exportéra potrebuje vedieť. Ak odpoveď na otázku „môžem si napísať vlastný exportér?“ vyžaduje čítanie zdrojáku hostiteľa, je rozhranie nedostatočne špecifikované a diagram vám to práve povedal.
065. Ten s cyklom#
Dve služby, každá realizujúca kontrakt, ktorý tá druhá vyžaduje. Nič tu nie je nelegálne UML a nič na diagrame nie je zle - tá kresba je presným obrázkom systému, ktorý bude náročný, a to je presne to, čo od diagramu chcete vedieť povedať.
Cyklus medzi komponentmi znamená, že ani jeden sa nedá pochopiť sám: žiadne nezávislé nasadenie, žiadny test v izolácii bez záslepky za ten druhý, a výmena ktoréhokoľvek musí naplniť kontrakt, od ktorého ten druhý súčasne závisí. Na diagrame tried je cyklus zápach; medzi nasaditeľnými jednotkami je to riziko harmonogramu.
Obvyklé nápravy sú viditeľné na tom istom obrázku. Presuňte to, čo doprava potrebuje, z IOrders do udalosti, ktorú objednávková služba publikuje, aby sa šípka stala jednosmernou. Alebo vytiahnite zdieľanú časť do tretieho komponentu, od ktorého závisia obe, čo cyklus zmení na zbiehanie a vráti vás k príkladu jeden.
Po jednom riadku na každé
- 01Zbiehanie (príklad 1): jeden kontrakt s viacerými spotrebiteľmi - pomenujte ho raz, meňte ho raz.
- 02Reťaz (príklad 2): jadro závisí od rozhraní na oboch koncoch a od implementácií ani na jednom.
- 03Dve realizácie (príklad 3): migračné tvrdenie, zapísané tam, kde sa dá vyvrátiť.
- 04Mnoho realizácií (príklad 4): tá istá kresba ako migrácia, mienená natrvalo.
- 05Cyklus (príklad 5): poctivý obrázok systému, ktorý sa nedá nasadzovať ani vymieňať po častiach.
- 06Ak diagram nerieši žiadny spor, je ozdobou - radšej ho zmažte, než by ste ho udržiavali.
Na nakreslenie jedného z týchto oproti vášmu systému je verzia krok za krokom v článku ako nakresliť diagram komponentov. Na to, kde tie komponenty bežia, namiesto toho, čo si navzájom sľubujú, je diagram nasadenia.
07Časté otázky#
Ako vyzerá dobrý príklad diagramu komponentov?
Najužitočnejší príklad je ten najmenší, ktorý rozhodne spor: dva alebo tri komponenty, rozhrania medzi nimi a nič viac. Diagram zdieľaného katalógu, ktorý používa web aj mobilná aplikácia, povie viac než stena štyridsiatich boxov - čitateľ ho udrží v hlave naraz a vie ho overiť oproti kódu.
Dá sa diagramom komponentov zobraziť architektúra mikroslužieb?
Áno a je to jedno z jeho lepších použití. Každá služba je komponent a každé publikované API je rozhranie, takže diagram presne hovorí, ktorá služba smie volať ktorú zmluvu. Nesmie však ukazovať, kde tie služby bežia - to je diagram nasadenia a miešanie oboch vyrobí obrázok, ktorý sa nedá skontrolovať.
Koľko komponentov má byť na jednom diagrame?
Tri až približne deväť. Pod tri niet čo kresliť a nad deväť či desať čitateľ prestane sledovať šípky a začne len prebehávať očami - vtedy sa diagram mení na dekoráciu. Veľký systém sa kreslí ako viac diagramov, jeden na každú otázku.
Má sa databáza kresliť ako komponent?
Kreslite adaptér, nie databázu. Diagram je o zmluve, na ktorej váš kód závisí, takže komponent PostgreSQL adaptér realizujúci rozhranie IOrderStore nesie tú užitočnú informáciu. Samotný databázový produkt je infraštruktúra a patrí do diagramu nasadenia.
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
Prehľad notácie
Prax modelovania
Diagramy štruktúry
Diagramy štruktúry
Prax modelovania