Co je UML?
Praktický úvod do Unified Modeling Language: co to je, čtrnáct diagramů, které definuje, jak do sebe zapadají a po kterém sáhnout. Bez dějepisu delšího, než je nutné.
14 min čteníUML 2.5.11 z 35
Krátká odpověď
- UML je vizuální jazyk s pevně daným významem, který spravuje OMG. Aktuální vydání je UML 2.5.1 z roku 2017.
- Čtrnáct druhů diagramů, rozdělených na sedm strukturních a sedm pro chování - a diagramy jsou pohledy na jeden model, ne samostatné obrázky.
- Nemusíte použít všechno. Nakreslit jeden sekvenční diagram, aby se vyřešil spor o to, kdo koho volá, je zcela legitimní použití UML - a nejspíš to nejhodnotnější.
- Naučte se pořádně nejdřív diagram tříd a sekvenční diagram: dohromady pokrývají většinu toho, co vám kdy někdo podá.
01Čím UML ve skutečnosti je#
UML je vizuální jazyk pro popis softwarových systémů. Dává vám pevnou sadu tvarů, čar a pravidel, aby diagram, který nakreslíte, znamenal totéž i pro někoho, kdo neseděl v místnosti, kde vznikal.
To je celá nabízená hodnota a vyplatí se to říct přímo. Rámeček s názvem není UML. Rámeček se třemi přihrádkami, prázdný trojúhelník mířící na jiný rámeček a 1..* na jednom konci čáry je UML a říká něco přesného: tento typ dědí od tamtoho a jedna instance prvního je spojena aspoň s jednou instancí druhého. Kdokoli, kdo zná notaci, to přečte stejně. To je to, co si kupujete.
Jazyk udržuje Object Management Group. Aktuální vydání je UML 2.5.1, zveřejněné v roce 2017. Pochází z práce, kterou Grady Booch, James Rumbaugh a Ivar Jacobson sloučili v Rationalu v polovině devadesátých let, kdy měl obor zhruba padesát konkurenčních notací a žádný způsob, jak přečíst cizí návrh. OMG přijala UML 1.1 v roce 1997. Verze 2.5 byla především úklidem: specifikace se rozpadla na svazky „infrastructure“ a „superstructure“, ve kterých se vyznalo málo lidí, a 2.5 je složila zpět do jednoho dokumentu.
02Struktura a chování: rozdělení, které organizuje všechno#
Každý diagram UML odpovídá na jednu ze dvou otázek. Diagramy struktury odpovídají na „z čeho se tento systém skládá?“ - části, typy, stroje a to, jak jsou uspořádány. Popisují věci, které platí bez ohledu na čas.
Diagramy chováníodpovídají na „co tento systém dělá?“ - toky, zprávy, stavy a pořadí, v jakém se věci dějí. Popisují věci, které platí jen v určitém okamžiku.
Diagram tříd vám řekne, že Payment má částku a stav. Stavový diagram vám řekne, že platba přejde z Authorized do Captured, ale nikdy naopak. Ani jeden nedokáže vyjádřit to druhé a většina skutečných otázek potřebuje od každého jeden. Pokud zjistíte, že se snažíte ukázat pořadí na diagramu tříd, je to signál nakreslit druhý diagram, a ne přetěžovat první.
Chování má o jednu úroveň vnoření navíc. Čtyři ze sedmi diagramů chování - sekvenční, komunikační, časový a přehledu interakcí - jsou všechno diagramy interakce, čtyři různá vykreslení téže základní myšlenky: účastníci si vyměňují zprávy. V principu jsou zaměnitelné. V praxi převažují sekvenční diagramy, protože svislá časová osa je to nejsnáze čitelné na světě.
03Čtrnáct diagramů, každý na jeden řádek#
Tady je celý jazyk na úrovni „potřebuju to dnes?“. Když je odpověď ano, klikněte na odkaz.
Struktura - z čeho se systém skládá
Typy, jejich atributy a operace a to, jak spolu souvisejí. Ten, který kreslí každý.
Vyměnitelné části a rozhraní, která poskytují a vyžadují.
Který artefakt běží na kterém uzlu a čím ty uzly jsou.
Jeden konkrétní snímek instancí, k ověření modelu tříd.
Jak je model seskupen a která skupina smí záviset na které.
Vnitřek jednoho klasifikátoru: jeho části, porty a vnitřní zapojení.
Jak rozšířit samotné UML stereotypy, když standardní slovník nestačí.
Chování - co systém dělá
Kdo systém používá a k čemu. Rozsah, ne návrh.
Tok, rozhodnutí a věci, které se dějí souběžně. Proces, přesně.
Stavy, ve kterých může jeden objekt být, a události, které jím mezi nimi pohnou.
Zprávy mezi účastníky, v pořadí, v čase. Nejpoužívanější diagram chování.
Táž interakce jako v sekvenčním, uspořádaná tak, aby ukázala, kdo s kým mluví.
Stav proti časové ose, když jde o lhůtu.
Diagram aktivit, jehož uzly jsou interakce. Mapa nad sekvencemi.
V praxi je zdravá většina skutečného UML tvořena čtyřmi z nich: diagramem tříd, sekvenčním, případů užití a aktivit. Zbylých deset existuje proto, že je někdo potřeboval, a tři nebo čtyři z nich jsou opravdu výborné, když si to situace žádá - stavový diagram pro životní cyklus, diagram nasazení pro revizi infrastruktury. Zbytek si vystačíte přečíst, až na něj narazíte, a nikdy ho nekreslit.
04Který diagram mám nakreslit?#
Vycházejte z otázky, ne z diagramu. Chybou je vybrat si nejdřív typ diagramu a teprve pak rozhodovat, co na něj dát - tak vznikne diagram tříd o dvou stech rámečcích, který nikdo nikdy nepřečetl.
- „Kdo to používá a k čemu?“ - diagram případů užití. Rozsah a aktéři, ještě než existuje jakýkoli návrh.
- „Jaké jsou pojmy a jak spolu souvisejí?“ - diagram tříd. Výchozí strukturní pohled.
- „Co se stane, když někdo klikne na zaplatit?“ - sekvenční diagram. Pořadí zpráv mezi účastníky.
- „Jaký je proces, včetně větvení?“ - diagram aktivit. Tok s rozhodnutími a souběžností.
- „V jakých stavech tahle věc může být?“ - stavový diagram. Životní cyklus a povolené přechody.
- „Co kde běží?“ - diagram nasazení. Uzly, artefakty, prostředí.
- „Jaké jsou služby a jejich kontrakty?“ - diagram komponent. Poskytovaná a vyžadovaná rozhraní.
- „Jak je kód uspořádaný?“ - diagram balíčků. Seskupení a povolené závislosti.
05Čím UML není#
Není to proces. UML neříká nic o tom, kdy modelovat, kolik modelovat nebo kdo to schvaluje. Je to notace. Metodiky jako RUP kolem něj byly postaveny a často se s ním pletou; UML můžete použít v jakémkoli procesu, včetně žádného.
Není to programovací jazyk. Modely UML mohou být dost podrobné na to, aby se z nich generoval kód, a některé nástroje to přesně dělají. Většina týmů to nedělá a dělat by neměla. Úplné obousměrné generování kódu je nejčastější jediný důvod, proč se snahy o UML zhroutí: z modelu se stane druhá, horší kopie zdroje, kterou nikdo neaktualizuje.
Není to všechno nebo nic. Neexistuje požadavek použít všech čtrnáct diagramů nebo modelovat každou třídu. Nakreslit jeden sekvenční diagram, aby se urovnal spor o to, kdo koho volá, je naprosto legitimní použití UML a pravděpodobně to nejcennější.
Není to totéž co ArchiMate. Oba jsou modelovací jazyky a překrývají se dost na to, aby to mátlo. UML modeluje software - třídy, komponenty, zprávy. ArchiMate modeluje podnik kolem něj - byznys procesy, schopnosti, aplikační a technologickou vrstvu. Velká organizace obvykle potřebuje oba, v různých výškách.
06Kolik modelovat#
Poctivá odpověď zní: mnohem méně, než k čemu vybízejí nástroje. Model si své místo zaslouží tehdy, když se čte častěji, než se edituje. Tři věci to spolehlivě zajistí.
Modelujte části, které se těžko drží v hlavě. Stavový automat plateb s devíti stavy a dvěma nepovolenými přechody stojí za diagram. Třípoložkové DTO ne.
Modelujte na jednom diagramu v jedné výšce. Nejčastějším selháním skutečného diagramu tříd je míchání doménových pojmů s instalatérstvím frameworku na jednom plátně. Dva diagramy, každý vnitřně soudržný, porazí jeden technicky úplný.
Modelujte to, co si necháte. Diagram v prezentaci je kresba s trvanlivostí jedné schůzky, a to je v pořádku, dokud víte, že to tak je. Diagram v repozitáři, vedle kódu, který popisuje, je model - a potřebuje vlastníka.
Sáhněte po něm, když
- Návrh obsahuje rozhodnutí, na kterém by se rozumní lidé neshodli
- Na rozhraní nebo životním cyklu se musí shodnout víc než jeden tým
- Někdo se do tohoto kódu zapojí později a potřebuje jeho tvar
- Regulátor, auditor nebo architektonická revize si ho vyžádá písemně
Sáhněte po něčem jiném, když
- Kód je kratší a jasnější, než by byl diagram
- Kreslíte ho, abyste uspokojili checklist, který nikdo nečte
- Duplikoval by něco, co se už generuje ze zdroje
- Návrh se pořád denně mění - počkejte, až se přestane hýbat
07Kde začít#
Pokud jste v notaci noví, přečtěte si nejdřív článek o diagramu tříd. Nese největší podíl slovníku UML - generalizaci, asociaci, násobnost, kompozici - a každý další diagram struktury tyto značky přebírá. Pak si přečtěte článek o sekvenčním diagramu, který dělá totéž pro chování.
Ty dva pokryjí většinu toho, co kdy budete mít přečíst. Všechno ostatní v této sérii je napsané tak, aby se dalo vzít do ruky v den, kdy to potřebujete, v libovolném pořadí, a každý článek předpokládá jen ty dva.
Po jednom řádku na každé
- 01UML je notace s pevným významem, kterou udržuje OMG; aktuální verze je 2.5.1.
- 02Čtrnáct druhů diagramů, rozdělených na sedm strukturních a sedm behaviorálních - čtyři z těch behaviorálních jsou diagramy interakce.
- 03Diagramy jsou pohledy na jeden model, ne nezávislé kresby.
- 04Diagram vybírejte podle otázky, na kterou potřebujete odpovědět, ne podle checklistu.
- 05Diagramy tříd a sekvenční pokrývají velkou většinu skutečného použití; ty dva se naučte pořádně jako první.
08Časté dotazy#
Kolik je UML diagramů?
UML 2.5.1 definuje čtrnáct typů diagramů, rozdělených na sedm diagramů struktury a sedm diagramů chování. Strukturu pokrývají diagramy tříd, objektů, komponent, nasazení, balíků, složené struktury a profilů; chování diagramy případů užití, aktivit, stavový, sekvenční, komunikační, časový a přehledu interakcí.
Používá se UML ještě?
Ano, ale výběrově. Málokdo kreslí všech čtrnáct typů, ale diagramy tříd, sekvenční, aktivit a případů užití zůstávají běžné při návrhových revizích, v regulovaných odvětvích a všude, kde má architektura přežít lidi, kteří ji napsali.
Jaký je rozdíl mezi diagramy struktury a chování?
Diagram struktury ukazuje, z čeho se systém skládá, a v čase se nemění: třídy, komponenty, uzly. Diagram chování ukazuje, co se děje, v jakém pořadí a za jakých podmínek. Je-li ve vaší otázce slovo kdy, potřebujete diagram chování.
Který UML diagram se mám naučit jako první?
Diagram tříd. Nese většinu slovníku UML a šest dalších diagramů struktury přebírá jeho notaci přímo, takže pořádně se ho naučit dělá zbytek levným. Sekvenční diagram je přirozený druhý.
Musím se naučit všech čtrnáct UML diagramů?
Ne. V praxi většinu práce odvedou čtyři: tříd, sekvenční, případů užití a aktivit. U ostatních stačí umět je přečíst, když na ně narazíte, a to je mnohem menší investice než umět je nakreslit od nuly.
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
Diagramy chování
Diagramy chování
Diagramy chování
Přehled notace
Základy