Archyno
UMLDiagramy struktury

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.
UML diagram balíčků vrstvené architektury. Balíček ui i balíček infrastructure závisí na balíčku domain. Všechny tři - ui, domain i infrastructure - závisí na balíčku shared pod nimi.
Vrstvená architektura jako graf závislostí. Každá šipka míří na něco stabilnějšího než její zdroj a nic nemíří zpátky nahoru.

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#

PrvekNotaceCo znamená
Balíčeksložka se záložkouJmenný prostor. Jeho název jde do záložky, když tělo drží obsah, a do těla, když nedrží.
ZávislostZdroj 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íčkuObsaž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é

  1. 01Balíčky jsou jmenné prostory; skutečným obsahem jsou šipky mezi nimi.
  2. 02«import» re-exportuje, «access» ne; obyčejná závislost obvykle stačí.
  3. 03Sledujte šipky a najděte cykly - balíčky v cyklu jsou jedním balíčkem.
  4. 04Závislosti mají mířit na to, co se mění nejméně.
  5. 05Na sdílený balíček smí mířit všechno; on sám nesmí mířit na nic.
  6. 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

Související články

Všechny články