UML diagramy balíků
Jak je model nebo kódová základna seskupená a - to podstatné - která skupina smí záviset na které. Diagram, který z architektonického pravidla dělá místo zbožného přání něco ověřitelného.
6 min čteníUML 2.5.124 z 35
Krátká odpověď
- Chybějící šipky znamenají tolik co nakreslené. Každá závislost v kódu bez šipky na diagramu je porušení, které umíte pojmenovat.
- Import vnese veřejné členy do jmenného prostoru importujícího a šíří je dál; access je zpřístupní a závislost tam končí.
- Package merge zkopíruje obsah slučovaného balíku do slučujícího. Hojně se používá uvnitř specifikace UML, v běžných modelech zřídka.
- Diagram balíků je o struktuře zdrojů, diagram komponent o nasaditelných částech. Nejsou to dva pohledy na tutéž věc.
01Co ukazuje#
Diagram balíčků je obsah modelu plus pravidlo o tom, kdo smí na koho odkazovat. Tvar složky se záložkou je jmenný prostor: skupina tříd, případů užití, komponent nebo dalších balíčků.
Samotné seskupení je mírně užitečné. Hodnota je v šipkách. Závislost z ui na domain říká, že vrstva UI smí odkazovat na doménové typy. Nepřítomnost šipky opačným směrem říká, že doména nesmí vědět, že UI existuje - a to je architektonické pravidlo, které umíte otestovat, olintovat a nechat na něm spadnout build.
02Notace#
| Prvek | Notace | Co znamená |
|---|---|---|
| Balíček | složka se záložkou | Jmenný prostor. Jeho název jde do záložky, když tělo drží obsah, a do těla, když nedrží. |
| Závislost | Zdroj odkazuje na něco v cíli. Obecný případ a obvykle to stačí. | |
| «import» | Veřejné členy cíle se stanou viditelnými ve zdroji a re-exportují se z něj. | |
| «access» | Viditelné ve zdroji, ale ne re-exportované. Užší a obvykle přesnější z těch dvou. | |
| «merge» | Obsah cíle se sloučí do zdroje. Mimo metamodely vzácné; budete to číst častěji, než psát. | |
| Vnoření | balíček uvnitř balíčku | Obsažení, psané outer::inner. Dá se nakreslit i jako čára s křížkem v kroužku na straně rodiče. |
V praxi většinu diagramů balíčků unese obyčejná šipka závislosti a rozlišení «import» oproti «access» si zaslouží místo, jen když modelujete jazyk nebo framework, jehož modulový systém ten rozdíl dělá skutečným.
03Čtení směru#
Všechno zajímavé na diagramu balíčků je ve směru šipek a hledat je třeba dvě věci.
Cykly. Pokud umíte začít u balíčku, sledovat šipky a vrátit se tam, kde jste začali, ty balíčky se nedají nezávisle sestavit, otestovat, pochopit ani nasadit. Je to jeden balíček předstírající, že je několik. Diagram balíčků udělá cyklus viditelným asi za dvě vteřiny, což je nejrychlejší způsob, jak nějaký najít, pokud nemáte nástroj.
Stabilita. Závislosti mají mířit na věci, které se mění méně často. Na diagramu výše ui i infrastructure míří na domain a všechny tři míří na shared. To je tvar vrstvené architektury: nestálé věci závisí na stabilních, nikdy naopak. Šipka z domain na ui by byla tou nejdůležitější věcí na stránce.
Takhle taky poznáte balíček shared nebo common, který se kazí. Ten, na který míří všechno, je v pořádku, pokud sám nemíří na nic. Ve chvíli, kdy získá odchozí šipku, každý balíček v systému tranzitivně závisí na tom cíli.
04Kdy takový nakreslit#
Sáhněte po něm, když
- Zavedení nebo zdokumentování pravidla vrstvení, které se má vynucovat
- Posouzení kódové základny kvůli cyklům závislostí mezi moduly
- Dát nováčkovi mapu repozitáře před detaily
- Plánování, jak rozdělit monolit - řezné čáry jsou tam, kde jsou šipky tenké
Sáhněte po něčem jiném, když
- Jsou tři balíčky a struktura je zřejmá ze stromu složek
- Zajímavé jsou kontrakty mezi částmi - použijte diagram komponent
- Museli byste ho překreslovat při každém přesunu souboru
- Seskupení existuje, ale žádné pravidlo o závislostech ne; šipky by byly popisným šumem
Diagramy balíčků fungují dobře ve dvou výškách a špatně mezi nimi: celý systém při pěti až devíti balíčcích, nebo jeden podsystém v podobné zrnitosti. Diagram čtyřiceti balíčků je graf závislostí a graf závislostí přečte lépe nástroj než člověk.
Po jednom řádku na každé
- 01Balíčky jsou jmenné prostory; skutečným obsahem jsou šipky mezi nimi.
- 02«import» re-exportuje, «access» ne; obyčejná závislost obvykle stačí.
- 03Sledujte šipky a najděte cykly - balíčky v cyklu jsou jedním balíčkem.
- 04Závislosti mají mířit na to, co se mění nejméně.
- 05Na sdílený balíček smí mířit všechno; on sám nesmí mířit na nic.
- 06Tohle je UML diagram, ze kterého se nejpravděpodobněji stane automatická kontrola v buildu.
05Časté dotazy#
Jaký je rozdíl mezi import a access v UML?
Obojí jsou závislosti mezi balíky. Import vnese veřejné členy importovaného balíku do jmenného prostoru toho importujícího, takže je lze pojmenovat bez kvalifikace a šíří se dál. Access je zpřístupní, ale nešíří dál, takže závislost tam končí.
Jak se v UML zobrazuje vrstvená architektura?
Nakreslíte jeden balík na vrstvu a jednu šipku závislosti na každý povolený směr, všechny stejným směrem. Hodnota je v tom, že chybějící šipky znamenají tolik co nakreslené: každá závislost v kódu, která na diagramu šipku nemá, je porušení, které umíte pojmenovat.
Co znamená package merge?
Merge znamená, že obsah slučovaného balíku se pojmově zkopíruje do toho slučujícího a spojí s tím, co tam už je. Hojně se používá uvnitř samotné specifikace UML a v běžných modelech zřídka.
Jaký je rozdíl mezi diagramem balíků a diagramem komponent?
Diagram balíků seskupuje prvky modelu a ukazuje závislosti jmenných prostorů, jde tedy o to, jak je model nebo kódová základna organizovaná. Diagram komponent ukazuje jednotky vyměnitelné za běhu a rozhraní mezi nimi. Jedno je o struktuře zdrojů, druhé o nasaditelných částech.
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
Základy
Diagramy struktury
Diagramy struktury
Diagramy struktury
Praxe modelování
Diagramy struktury