Archyno
UMLPraxe modelování

Jak nakreslit diagram komponent

Šest kroků od prázdného plátna k diagramu, který se dá předat týmu, na jednom malém systému. Pořadí je důležitější než notace: části, pak sliby, pak potřeby a nakonec kontroly, které odhalí špatnou hranici dřív, než na ní někdo začne stavět.

8 min čteníUML 2.5.119 z 35

Krátká odpověď

  • Vypište části, které by šlo reálně koupit nebo vyměnit místo postavit, a zastavte se u devíti. Boxy vybírá tato otázka, ne struktura složek.
  • Nejdřív komponenty, jako boxy bez šipek. Smlouvy pojmenujte až potom, když už víte, která část stojí na které straně.
  • Tak podrobný, aby se z okolí kterékoli komponenty dala postavit její náhrada. Signatury metod patří do kódu, ne sem.
  • Hotový je tehdy, když každá komponenta nese rozhraní, žádná šipka nemíří na komponentu místo na smlouvu a zakrytí kteréhokoli boxu stále zadá jeho náhradu.
Hotový UML diagram komponent. Dashboard i Plánovač závisejí na rozhraní IReports, které realizuje Služba reportů, a Služba reportů závisí na rozhraní IWarehouse, které realizuje Adaptér skladu.
Kam šest kroků dospěje: dva spotřebitelé, jedna sdílená smlouva a služba, která se ke svému skladu dostává přes druhou. Dvacet minut práce a každá šipka je tvrzení, které jde ověřit.

01Krok 1. Vypište, co by šlo vyměnit#

Než cokoli nakreslíte, sepište seznam. Ne svých modulů, ne svých složek - částí systému, které by šlo reálně vyměnit za jinou implementaci: koupené místo postavené, přepsané jiným týmem nebo provozované někým jiným.

Právě tahle otázka je celý filtr. Složka není komponenta a třída taky ne; věc s hranicí, kterou byste uměli předat dodavateli, ano. Reportovací systém v tomhle článku jich dal čtyři: dashboard, plánovač, který spouští reporty přes noc, samotnou službu reportů a adaptér, který mluví s datovým skladem.

02Krok 2. Nakreslete boxy a žádné šipky#

Čtyři UML komponenty bez nakreslených vztahů: Dashboard, Plánovač, Služba reportů a Adaptér skladu.
Druhý krok. Čtyři komponenty a záměrně nic víc - šipky přijdou po smlouvách, ne před nimi.

Umístěte části a odolejte pokušení je spojit. Kreslit šipky teď znamená kreslit je mezi komponentami a čára z Dashboardu rovnou do Služby reportů říká jen „tyhle dvě jsou nějak zapojené“, což je právě ta vágnost, kterou diagram komponent existuje odstranit.

Rozvržení tu stojí za třicet sekund: dejte spotřebitele na jednu stranu a poskytovatele na druhou. Každý diagram v téhle sérii je kreslený zleva doprava, se závislostmi tekoucími jedním směrem, protože čtenář pak ověří směr pohledem místo sledování každé čáry.

03Krok 3. Pojmenujte, co každá část poskytuje#

Tytéž čtyři komponenty se dvěma doplněnými rozhraními. Služba reportů realizuje rozhraní IReports a Adaptér skladu realizuje rozhraní IWarehouse. Závislosti zatím nakreslené nejsou.
Třetí krok. Dvě smlouvy, každá nakreslená jednou a připojená ke komponentě, která ji implementuje, přerušovanou šipkou s prázdným trojúhelníkem.

U každého boxu se zeptejte, na co se smí spolehnout někdo zvenčí, a to pojmenujte. Tady IReports a IWarehouse - jedna smlouva na schopnost, ne jedna na spotřebitele. Připojte ji realizací: přerušovaná čára, prázdný trojúhelník, mířící na rozhraní.

Právě v tomhle kroku se děje skutečný návrh a právě tenhle krok lidé přeskakují. Pojmenování smlouvy vás nutí rozhodnout, co je veřejné, a hádka, která následuje - „patří export do CSV do IReports, nebo ne?“ - je hádka, kterou se vyplatí svést dřív, než na ni dva týmy odpovědí v kódu rozdílně.

04Krok 4. Doplňte, co každá část vyžaduje#

Teď druhá polovina a ta, která nese informaci: které smlouvy každá komponenta potřebuje? Nakreslete závislost - přerušovaná čára, otevřený hrot - z komponenty na rozhraní, které vyžaduje. Výsledek je diagram na začátku článku.

Ve chvíli, kdy ty šipky dopadnou, se zviditelní dvě věci. Dashboard i plánovač míří na IReports, takže jeho změna je teď viditelně změnou pro dva spotřebitele. A služba reportů míří na IWarehouse, ne na adaptér, takže adaptér jde vyměnit, aniž by si toho služba všimla - což je buď to, co jste zamýšleli, nebo objev, který stojí za to udělat teď.

05Krok 5. Spusťte čtyři kontroly#

Diagram komponent je hotový, když je přežije. Zaberou minutu a každá z nich odhalila skutečný problém častěji, než prošla načisto.

  1. Zakryjte box dlaní. To, co zbude - rozhraní, která k němu byla připojená - je zadání jeho náhrady. Kdyby náhrada musela vědět něco, co na obrazovce není, je hranice na špatném místě.
  2. Sledujte šipky, jestli nevznikl cyklus. Dvě komponenty, které vyžadují jedna druhou, nejdou nasazovat, testovat ani vyměňovat nezávisle. Poslední z rozebraných příkladů ukazuje, jak to vypadá a jak se to rozbije.
  3. Ověřte, že každá komponenta má aspoň jedno rozhraní. Box, ke kterému nic není připojené, buď není komponenta, nebo pro tenhle diagram není podstatný.
  4. Přečtěte názvy rozhraní nahlas. Pokud je některé pojmenované podle svého současného poskytovatele místo podle schopnosti - IMainframeBilling místo IBilling - má smlouva dodavatele zapečeného v sobě a výměna, kterou diagram slibuje, nebude tak čistá, jak vypadá.

06Krok 6. Smažte, co patří na jiný diagram#

Sáhněte po něm, když

  • Rozhraní a to, která komponenta stojí na které straně každého z nich
  • Stereotypy, které mění způsob pořízení části - «subsystem», «service», «library»
  • Porty, když má komponenta opravdu dva oddělené povrchy
  • Poznámku u každé sporné hranice s tím, kdo o ní rozhodl

Sáhněte po něčem jiném, když

  • Servery, regiony, kontejnery a procesy - diagram nasazení
  • Třídy, atributy a metody uvnitř komponenty - diagram tříd
  • Pořadí volání mezi komponentami - sekvenční diagram
  • Databázové tabulky a sloupce - ER diagram

Pravý sloupec není pedanterie o druzích diagramů. Každá položka v něm zvětší obrázek, aniž by odpověděla na otázku, kvůli které byl diagram nakreslený, a každá dá diagramu druhý důvod zastarat: diagram komponent přežije změnu platformy nedotčený a tatáž kresba se dvěma AWS regiony ne.

Po jednom řádku na každé

  1. 01Vypište, co by šlo vyměnit. Ten seznam, ne strom složek, je vaším seznamem komponent.
  2. 02Nejdřív boxy, žádné šipky - čára mezi dvěma komponentami netvrdí nic ověřitelného.
  3. 03Pojmenujte poskytované smlouvy dřív než vyžadované; právě tam jsou návrhová rozhodnutí.
  4. 04Vyžadovaná rozhraní nesou informaci o závislostech a jsou tou polovinou, kterou lidé vynechávají.
  5. 05Zakryjte kterýkoli box: to, co zbude, musí úplně zadat jeho náhradu.
  6. 06Cokoli o strojích, třídách nebo pořadí volání patří na jiný diagram.

Když je kresba hotová, referenci ke každé značce na ní najdete v článku symboly diagramu komponent, a širší zdůvodnění, kdy se tenhle druh diagramu vůbec vyplatí, v průvodci diagramem komponent.

07Časté dotazy#

Jak začít diagram komponent od nuly?

Začněte seznamem částí systému, které by šlo reálně vyměnit nebo koupit místo postavit, a zastavte se u devíti. Právě tato otázka, ne struktura složek, rozhoduje o tom, které boxy na diagram patří, a odpovědět na ni jako první je to, co zabrání, aby z kresby vznikl obrázek repozitáře.

Co je první, komponenty nebo rozhraní?

Nejdřív komponenty, ale jen jako boxy bez šipek. Pojmenovat smlouvy je ta těžká část a dělat ji druhou znamená pojmenovat je s vědomím, které části stojí na obou stranách, místo vymýšlení rozhraní a následného hledání něčeho, co za něj postavíte.

Jak podrobný má diagram komponent být?

Tak podrobný, aby někdo dokázal z okolí postavit náhradu kteréhokoli boxu, a nic víc. Operace a parametry patří do definice rozhraní nebo do kódu, ne na diagram - diagram, který vypisuje signatury metod, je zastaralý týden po nakreslení.

Podle čeho poznám, že je diagram komponent hotový?

Když má každá komponenta aspoň jedno připojené rozhraní, žádná šipka nemíří na komponentu místo na smlouvu a zakrytí kteréhokoli boxu dlaní stále nechá na obrazovce dost na to, aby šla jeho náhrada zadat. Platí-li všechno troje, diagram tvrdí něco ověřitelného a můžete skončit.

V této sérii

Související články

Všechny články