Archyno
UMLDiagramy štruktúry

UML diagramy balíkov

Ako je model alebo kódová základňa zoskupená a - to podstatné - ktorá skupina smie závisieť od ktorej. Diagram, ktorý z architektonického pravidla robí namiesto zbožného priania niečo overiteľné.

6 min čítaniaUML 2.5.124 z 35

Krátka odpoveď

  • Chýbajúce šípky znamenajú toľko čo nakreslené. Každá závislosť v kóde bez šípky na diagrame je porušenie, ktoré viete pomenovať.
  • Import vnesie verejné členy do menného priestoru importujúceho a šíri ich ďalej; access ich sprístupní a závislosť tam končí.
  • Package merge skopíruje obsah zlučovaného balíka do zlučujúceho. Hojne sa používa vnútri špecifikácie UML, v bežných modeloch zriedka.
  • Diagram balíkov je o štruktúre zdrojov, diagram komponentov o nasaditeľných častiach. Nie sú to dva pohľady na tú istú vec.
UML diagram balíkov vrstvenej architektúry. Balík ui aj balík infrastructure závisia od balíka domain. Všetky tri - ui, domain aj infrastructure - závisia od balíka shared pod nimi.
Vrstvená architektúra ako graf závislostí. Každá šípka mieri na niečo stabilnejšie než jej zdroj a nič nemieri späť nahor.

01Čo ukazuje#

Diagram balíkov je obsah modelu plus pravidlo o tom, kto smie na koho odkazovať. Tvar zložky so záložkou je menný priestor: skupina tried, prípadov použitia, komponentov alebo ďalších balíkov.

Samotné zoskupenie je mierne užitočné. Hodnota je v šípkach. Závislosť z ui na domain hovorí, že vrstva UI smie odkazovať na doménové typy. Neprítomnosť šípky opačným smerom hovorí, že doména nesmie vedieť, že UI existuje - a to je architektonické pravidlo, ktoré viete otestovať, olintovať a nechať na ňom spadnúť build.

02Notácia#

PrvokNotáciaČo znamená
Balíkzložka so záložkouMenný priestor. Jeho názov ide do záložky, keď telo drží obsah, a do tela, keď nedrží.
ZávislosťZdroj odkazuje na niečo v cieli. Všeobecný prípad a zvyčajne to stačí.
«import»Verejné členy cieľa sa stanú viditeľnými v zdroji a re-exportujú sa z neho.
«access»Viditeľné v zdroji, ale nie re-exportované. Užšia a zvyčajne presnejšia z tých dvoch.
«merge»Obsah cieľa sa zlúči do zdroja. Mimo metamodelov zriedkavé; budete to čítať častejšie, než písať.
Vnoreniebalík vnútri balíkaObsiahnutie, písané outer::inner. Dá sa nakresliť aj ako čiara s krížikom v krúžku na strane rodiča.

V praxi väčšinu diagramov balíkov unesie obyčajná šípka závislosti a rozlíšenie «import» oproti «access» si zaslúži miesto, len keď modelujete jazyk alebo framework, ktorého modulový systém ten rozdiel robí skutočným.

03Čítanie smeru#

Všetko zaujímavé na diagrame balíkov je v smere šípok a hľadať treba dve veci.

Cykly. Ak viete začať pri balíku, sledovať šípky a vrátiť sa tam, kde ste začali, tie balíky sa nedajú nezávisle zostaviť, otestovať, pochopiť ani nasadiť. Je to jeden balík predstierajúci, že je viacero. Diagram balíkov spraví cyklus viditeľným asi za dve sekundy, čo je najrýchlejší spôsob, ako nejaký nájsť, ak nemáte nástroj.

Stabilita. Závislosti majú mieriť na veci, ktoré sa menia menej často. Na diagrame vyššie ui aj infrastructure mieria na domain a všetky tri mieria na shared. To je tvar vrstvenej architektúry: nestále veci závisia od stabilných, nikdy naopak. Šípka z domain na ui by bola tou najdôležitejšou vecou na stránke.

Takto tiež spoznáte balík shared alebo common, ktorý sa kazí. Ten, na ktorý mieri všetko, je v poriadku, pokiaľ sám nemieri na nič. Vo chvíli, keď získa odchádzajúcu šípku, každý balík v systéme tranzitívne závisí od toho cieľa.

04Kedy taký nakresliť#

Siahnite po ňom, keď

  • Zavedenie alebo zdokumentovanie pravidla vrstvenia, ktoré sa má vynucovať
  • Posúdenie kódovej základne kvôli cyklom závislostí medzi modulmi
  • Dať nováčikovi mapu repozitára pred detailmi
  • Plánovanie, ako rozdeliť monolit - rezné čiary sú tam, kde sú šípky tenké

Siahnite po niečom inom, keď

  • Sú tri balíky a štruktúra je zrejmá zo stromu priečinkov
  • Zaujímavé sú kontrakty medzi časťami - použite diagram komponentov
  • Museli by ste ho prekresľovať pri každom presune súboru
  • Zoskupenie existuje, ale žiadne pravidlo o závislostiach nie; šípky by boli popisným šumom

Diagramy balíkov fungujú dobre v dvoch výškach a zle medzi nimi: celý systém pri piatich až deviatich balíkoch, alebo jeden podsystém v podobnej zrnitosti. Diagram štyridsiatich balíkov je graf závislostí a graf závislostí prečíta lepšie nástroj než človek.

Po jednom riadku na každé

  1. 01Balíky sú menné priestory; skutočným obsahom sú šípky medzi nimi.
  2. 02«import» re-exportuje, «access» nie; obyčajná závislosť zvyčajne stačí.
  3. 03Sledujte šípky a nájdite cykly - balíky v cykle sú jedným balíkom.
  4. 04Závislosti majú mieriť na to, čo sa mení najmenej.
  5. 05Na zdieľaný balík smie mieriť všetko; on sám nesmie mieriť na nič.
  6. 06Toto je UML diagram, z ktorého sa najpravdepodobnejšie stane automatická kontrola v builde.

05Časté otázky#

Aký je rozdiel medzi import a access v UML?

Oboje sú závislosti medzi balíkmi. Import vnesie verejné členy importovaného balíka do menného priestoru toho importujúceho, takže sa dajú pomenovať bez kvalifikácie a šíria sa ďalej. Access ich sprístupní, ale nešíri ďalej, takže závislosť tam končí.

Ako sa v UML zobrazuje vrstvená architektúra?

Nakreslíte jeden balík na vrstvu a jednu šípku závislosti na každý povolený smer, všetky rovnakým smerom. Hodnota je v tom, že chýbajúce šípky znamenajú toľko čo nakreslené: každá závislosť v kóde, ktorá na diagrame šípku nemá, je porušenie, ktoré viete pomenovať.

Čo znamená package merge?

Merge znamená, že obsah zlučovaného balíka sa pojmovo skopíruje do toho zlučujúceho a spojí s tým, čo tam už je. Hojne sa používa vnútri samotnej špecifikácie UML a v bežných modeloch zriedka.

Aký je rozdiel medzi diagramom balíkov a diagramom komponentov?

Diagram balíkov zoskupuje prvky modelu a ukazuje závislosti menných priestorov, ide teda o to, ako je model alebo kódová základňa organizovaná. Diagram komponentov ukazuje jednotky vymeniteľné za behu a rozhrania medzi nimi. Jedno je o štruktúre zdrojov, druhé o nasaditeľných častiach.

V tejto sérii

Súvisiace články

Všetky články