Příklady diagramů komponent
Pět diagramů komponent systémů, na jakých jste nejspíš dělali. Každý má rozhodnout jednu otázku: kdo smí koho volat, co by musela splnit náhrada a kde vede závislost opačně, než by měla.
9 min čteníUML 2.5.118 z 35
Krátká odpověď
- Nejužitečnější příklad je ten nejmenší, který rozhodne spor: dvě nebo tři komponenty, rozhraní mezi nimi a nic dalšího.
- Mikroslužby se mapují čistě - jedna služba na komponentu, jedno publikované API na rozhraní. Kde běží, je diagram nasazení, ne tenhle.
- Tři až devět komponent. Nad deset čtenář přestane sledovat šipky a začne přebíhat očima - tehdy se diagram stal dekorací.
- Kreslete adaptér, ne databázi. Smlouva, na které váš kód závisí, je ta informace, která stojí za nakreslení; samotný produkt je infrastruktura.
01Jak číst těch pět#
Každý diagram níže používá tytéž tři značky, a pokud je umíte přečíst, přečtete všech pět: komponenta je box s ikonou zástrčky, «interface» je box pojmenovávající kontrakt a šipky říkají, na které straně toho kontraktu každá komponenta stojí. Čárkovaná šipka s dutým trojúhelníkem znamená tohle implementuji. Obyčejná čárkovaná šipka znamená tohle potřebuji. Celá sada je v symbolech diagramu komponent a úvaha za notací je v průvodci diagramem komponent.
Jsou seřazené podle toho, jak často se ten tvar objevuje, ne podle složitosti. Každý pojmenovává otázku, kterou řeší, protože diagram komponent, který neřeší nic, je nejčastějším druhem a nejméně užitečným: pět boxů, pět šipek a žádné tvrzení, se kterým by někdo mohl nesouhlasit.
032. Porty a adaptéry#
Přečtěte si šipky a všimněte si, čeho se jádro objednávek nedotýká. Nezávisí na HTTP a nezávisí na PostgreSQL. Realizuje jeden kontrakt a vyžaduje druhý, a oba jsou boxy, které mu mohl podat kdokoli.
Tohle je tvar, který lidé myslí hexagonální architekturou, porty a adaptéry nebo čistou architekturou, a diagram komponent je nejlevnějším způsobem, jak ověřit, jestli ji kódová základna opravdu má. Pokud má box jádra šipku mířící na databázovou komponentu místo na rozhraní, je ten vzor jen aspirací: něco uprostřed importuje ovladač.
043. Jeden kontrakt, dvě implementace#
Tohle je diagram, který se kreslí před výměnou, ne po ní. Tvrzení, které dělá, je přesné a testovatelné: všechno, co objednávková služba od fakturace potřebuje, je v IBilling, takže druhá implementace toho rozhraní se dá zapojit, aniž by se objednávková služba měnila.
Je to zároveň nejrychlejší způsob, jak zjistit, že to tvrzení je nepravdivé. Pokud někdo řekne „nová služba neumí vystavit PDF výpisy“, pak byly PDF výpisy součástí kontraktu a v rozhraní chybí, a diagram byl nesprávný dřív než migrace. Ten rozhovor stojí deset minut u tabule a tři měsíce v produkci.
Když je stará implementace pryč, smažte ji z diagramu. Diagram komponent, který dva roky po vypnutí pořád ukazuje mainframe, je důvodem, proč lidé přestanou diagramům věřit.
054. Architektura se zásuvnými moduly#
Topologicky je tohle příklad tři s přidanou třetí implementací, a u té podobnosti se vyplatí zastavit: vyměnitelnost a rozšiřitelnost jsou tatáž kresba. Liší se záměr. U migrace je realizace navíc dočasná; u architektury se zásuvnými moduly je produktem.
Technika čtení, která se tu vyplatí, je zakrýt pravý sloupec dlaní. To, co zbude - hostitel a IExporter- je všechno, co autor čtvrtého exportéru potřebuje vědět. Pokud odpověď na otázku „můžu si napsat vlastní exportér?“ vyžaduje čtení zdrojáku hostitele, je rozhraní nedostatečně specifikované a diagram vám to právě řekl.
065. Ten s cyklem#
Dvě služby, každá realizující kontrakt, který ta druhá vyžaduje. Nic tu není nelegální UML a nic na diagramu není špatně - ta kresba je přesným obrázkem systému, který bude náročný, a to je přesně to, co od diagramu chcete umět říct.
Cyklus mezi komponentami znamená, že ani jedna se nedá pochopit sama: žádné nezávislé nasazení, žádný test v izolaci bez záslepky za tu druhou, a výměna kterékoli musí naplnit kontrakt, na kterém ta druhá zároveň závisí. Na diagramu tříd je cyklus zápach; mezi nasaditelnými jednotkami je to riziko harmonogramu.
Obvyklé nápravy jsou vidět na témže obrázku. Přesuňte to, co doprava potřebuje, z IOrders do události, kterou objednávková služba publikuje, aby se šipka stala jednosměrnou. Nebo vytáhněte sdílenou část do třetí komponenty, na které závisí obě, což cyklus změní na sbíhání a vrátí vás k příkladu jedna.
Po jednom řádku na každé
- 01Sbíhání (příklad 1): jeden kontrakt s několika spotřebiteli - pojmenujte ho jednou, měňte ho jednou.
- 02Řetěz (příklad 2): jádro závisí na rozhraních na obou koncích a na implementacích ani na jednom.
- 03Dvě realizace (příklad 3): migrační tvrzení, zapsané tam, kde se dá vyvrátit.
- 04Mnoho realizací (příklad 4): tatáž kresba jako migrace, míněná natrvalo.
- 05Cyklus (příklad 5): poctivý obrázek systému, který se nedá nasazovat ani vyměňovat po částech.
- 06Pokud diagram neřeší žádný spor, je ozdobou - raději ho smažte, než abyste ho udržovali.
Na nakreslení jednoho z těchhle proti vašemu systému je verze krok za krokem v článku jak nakreslit diagram komponent. Na to, kde ty komponenty běží, místo toho, co si navzájem slibují, je diagram nasazení.
07Časté dotazy#
Jak vypadá dobrý příklad diagramu komponent?
Nejužitečnější příklad je ten nejmenší, který rozhodne spor: dvě nebo tři komponenty, rozhraní mezi nimi a nic dalšího. Diagram sdíleného katalogu, který používá web i mobilní aplikace, řekne víc než stěna čtyřiceti boxů - čtenář ho udrží v hlavě naráz a umí ho ověřit proti kódu.
Lze diagramem komponent zobrazit mikroslužby?
Ano a je to jedno z jeho lepších použití. Každá služba je komponenta a každé publikované API je rozhraní, takže diagram přesně říká, která služba smí volat kterou smlouvu. Nesmí ale ukazovat, kde ty služby běží - to je diagram nasazení a míchání obojího vyrobí obrázek, který nejde zkontrolovat.
Kolik komponent má být na jednom diagramu?
Tři až zhruba devět. Pod tři není co kreslit a nad devět či deset čtenář přestane sledovat šipky a začne jen přebíhat očima - tehdy se diagram mění v dekoraci. Velký systém se kreslí jako více diagramů, jeden na každou otázku.
Má se databáze kreslit jako komponenta?
Kreslete adaptér, ne databázi. Diagram je o smlouvě, na které váš kód závisí, takže komponenta PostgreSQL adaptér realizující rozhraní IOrderStore nese tu užitečnou informaci. Samotný databázový produkt je infrastruktura a patří do diagramu nasazení.
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
Přehled notace
Praxe modelování
Diagramy struktury
Diagramy struktury
Praxe modelování