Upozornění pro čtenáře a uživatele této knihy

Všechna práva vyhrazena. Žádná část této tištěné či elektronické knihy nesmí být reprodukována ani šířena v papírové, elektronické či jiné podobě bez předchozího písemného souhlasu nakladatele. Neoprávněné užití této knihy bude trestně stíháno.

Martin Fowler

Destilované UML

Přeložil Martin Pavíček

Vydala Grada Publishing, a.s.

U Průhonu 22, Praha 7

jako svou 3679. publikaci

Odpovědný redaktor Pavel Němeček

Sazba Jana Davídková

Počet stran 176

První vydání, Praha 2009

Dotisk 2019

Authorized translation of the English language edition, entitled UML DISTILLED: A BRIEF GUIDE TO THE STANDARD OBJECT MODELING LANGUAGE, 3rd Edition, 0321193687 by FOWLER, MARTIN, published by Pearson Education, Inc, publishing as Addison Wesley Professional, Copyright © 2004.

All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from Pearson Education, Inc.

CZECH language edition published by GRADA PUBLISHING, A.S., Copyright © 2009.

Vytiskly Tiskárny Havlíčkův Brod, a.s.

Názvy produktů, firem apod. použité v knize mohou být ochrannými známkami nebo registrovanými ochrannými známkami příslušných vlastníků.

ISBN 978-80-271-2846-4 (ePub)

ISBN 978-80-271-2845-7 (pdf)

ISBN 978-80-247-2062-3 (print)

Napsali o knize

„Destilované UML je dosud nejlepším úvodem do systému Sjednoceného modelovacího jazyka UML. Martinův vtipný a pragmatický přístup je velice výstižný, a já tuto učebnici vřele doporučuji.“

Craig Larman

Autor Applying UML and Patterns

„Fowler svým způsobem výkladu pomáhá uživatelům rychle porozumět složitostem UML a začít jej brzy používat.“

Jim Rumbaugh

Autor a duchovní otec UML

„Kniha Destilované UML od Martina Fowlera je vynikajícím způsobem jak s UML začít. Destilované UML přináší velké většině uživatelů vše, co potřebují k jeho úspěšnému používání. Jak Martin připomíná, UML se dá používat mnoha způsoby, ale nejvíce se rozšířil široce uznávaný způsob notace pro vytváření návrhů. Tato kniha skvěle destiluje podstatu UML. Vřele doporučuji.“

Steve Cook Softwarový architekt Microsoft Corporation

„Krátké knihy o UML jsou lepší než dlouhé. A toto je nejlepší kniha mezi těmi krátkými. Je to vlastně ta nejlepší krátká kniha se spoustou užitečných poznatků.“

Alistair Cockburn

Autor a prezident Humans and Technology

„Tato kniha je úžasně užitečná a současně čtivá, a je také – a to je jedna z jejích velkých předností – báječně stručná přes obrovský rozsah předmětu. Jestli si chcete koupit pouze jedinou knihu o UML, měli byste si koupit právě tuto.“

Andy Carmichael BetterSoftwareFaster, Ltd.

„Jestli chcete používat UML, mějte tuto knihu vždy po ruce.“

John Crupi

Distinguished Engineer, Sun Microsystems Spoluautor Core J2EE TM Patterns

„Každý, kdo pracuje s modelováním UML, nebo kdo se učí UML, čte UML či navrhuje nástroje UML, by měl mít toto poslední vydání knihy. (Sám mám všechna vydání). Je zde mnoho dobrých a užitečných informací; právě tolik, aby byly užitečné, a přitom ne tak mnoho, aby byly suchopárné. Ve své knihovně ji prostě musím mít!“

Jon Kern Vývojář modelů

„Toto je vynikající startovní čára pro zvládnutí základů UML.“

Scott W. Ambler Autor Agile Modeling

„Mimořádně chytrý popis UML a jeho užití, navíc podaný s humorem k udržení pozornosti. Čtenář se již nemusí obávat, že bude v problému „plavat“.

Stephen J. Mellor Spoluautor Executable UML

„Toto je perfektní kniha pro ty, kteří se chtějí naučit používat UML, ale nemají chuť se prokousávat tlustými příručkami a výzkumnými referáty. Martin Fowler vybral všechny důležité techniky potřebné k používání UML pro vytváření návrhů, a přitom osvobodil čtenáře od zbytečně složitých a zřídka používaných rysů UML. Čtenáři zde naleznou dostatek odkazů na další studium. Autor poskytuje čtenáři rady založené na zkušenostech. Jde o stručnou a čtivou knihu zahrnující základní aspekty UML a příbuzné objektově orientované pojmy.

Pavel Hrubý

Microsoft Business Solutions

„Tak jako všichni vývojáři programového vybavení i Fowler neustále vylepšuje své dílo. Toto je jediná učebnice, o které bych uvažoval, kdybych měl vyučovat UML v rámci nějakých kurzů nebo kdybych měl nějakou učebnici doporučit lidem, kteří se jej chtějí naučit.“

Charles Ashbacher

Prezident a generální ředitel, Charles Ashbacher Technologies

„Mělo by být více takových učebnic, jako je Destilované UML – stručných a čtivých. Martin Fowler vybral právě ty části UML, které budete potřebovat, a prezentuje je snadno pochopitelným stylem. Ovšem ještě cennější než pouhý popis modelovacího jazyka je autorův vhled a jeho zkušenost v používání této techniky k poskytování informací a návrhu dokumentů.“

Rob Purser

Purser Consulting, LLC.

Předmluva ke třetímu vydání

Od nejstarších dob znali nejtalentovanější architekti a nejnadanější designéři zákon šetrnosti. Ať už je uváděn jako paradox („méně je více“) nebo jako koan („zenová mysl je mysl začátečníka“), jeho moudrost je nadčasová. Omezit vše až na samu podstatu, a tím dosáhnout formy a funkce. Od pyramid k Opera House v Sydney, od von Neumannových architektur přes UNIX a Smalltalk, usilovali nejlepší architekti a designéři o následování všeobecných a věčných zásad.

Uvědomujíce si hodnotu řezu Occamovou břitvou, když navrhuji a čtu, hledám projekty a knihy zachovávající zákon šetrnosti. V důsledku toho tleskám knize, kterou právě čtete.

Ze začátku se vám může moje poslední poznámka zdát překvapivá. Jsem často spojován s rozsáhlými a neproniknutelnými zásadami, které vymezují sjednocený modelovací jazyk (Unified Modeling Language, UML). Tyto specifikace umožňují dodavatelům nástrojů UML implementovat a metodologům jej aplikovat. Sedm let jsem vedl rozsáhlé mezinárodní týmy snažící se specifikovat jak UML 1.1 a UML 2.0, tak i několik menších změn mezi nimi. Od té doby UML vyzrál v přesnosti a ve výrazových schopnostech, ale jako výsledek standardizačního procesu se nechtěně stal poměrně složitým. Žel, standardizační procesy jsou spíše než vytříbenou jednoduchostí známy kompromisy vyplývajícími z práce v komisích.

Co se může expert UML obeznámený s tajemnými detaily specifikace dovědět z Martinova výtahu UML 2.0? Poměrně hodně, stejně jako vy. Martin pro začátek obratně omezuje rozsáhlý a složitý jazyk do účelného extraktu, jenž se úspěšně osvědčil v jeho vlastní praxi. Odolal pokušení přidat další stránky k poslednímu vydání své knihy. Jak se jazyk rozrostl, dodržel svůj cíl najít „nejužitečnější zlomek UML“ a právě ten vám předat. Část, o které pojednává, se vztahuje k bájným 20 procentům UML, které vám pomohou v 80 procentech vaší práce. Chycení a zkrocení této nepolapitelné šelmy ale není v žádném případě u konce!

Ještě působivější je to, že Martin dosahuje tohoto cíle skrze obdivuhodný konverzační styl. Díky jeho názorům a vtipům získá čtenář pocit, že studium knihy je zábavou; Martin připomíná, že vytváření a navrhování systémů může být i nápadité a tvůrčí. Jestliže budeme sledovat záměr úspornosti v jeho plném smyslu, zjistíme, že modelování projektů pomocí UML může být stejně zábavné, jako je malba pomocí prstů či hodiny kreslení na základní škole. UML by mělo být bleskosvodem naší kreativity stejně jako laserem pro precizní systémové návrhy tak, že je třetí strana může koupit a takové systémy vystavět sama. Poslední zmíněná podmínka je rozhodujícím testem pro každý projektovací jazyk.

Takže ačkoli je tato kniha malá, určitě není bezvýznamná. Můžete se v ní mnoho dovědět jak z Martinova přístupu k modelování, tak i z jeho výkladu UML 2.0.

Spolupráce s Martinem na vylepšení rozsahu a přesnosti jazyka UML 2.0 vysvětlovaného v této knize byla pro mě velkou zábavou. Je třeba držet v patrnosti, že všechny živoucí jazyky, jak přirozené, tak i ty umělé, se musí rozvíjet, nebo zaniknou. Martinův výběr nových rysů spolu s vašimi preferencemi i preferencemi ostatních odborníků jsou základní částí procesu vývoje UML. Udržují jazyk při životě a pomáhají jeho rozvoji skrze přirozený výběr na trhu.

Do okamžiku, kdy se vývoj řízený modely (model-driven architecture) stane hlavním proudem, zbývá vykonat ještě mnoho náročné práce. Ve víře, že se tak jednou stane, jsem povzbuzován knihami jako je tato – knihami, které jasně vysvětlují základy UML modelování a účelně je používají. Doufám, že se z knihy naučíte tolik jako já a že nové poznatky využijete ke zlepšení své vlastní praxe v modelování.

Cris Kobryn

Chair, U2 Partners’ UML 2.0 Submission Team Chief Technologist, Telelogic

Předmluva k prvnímu vydání

Když jsme začali s pracemi na sjednoceném modelovacím jazyku (Unified Modeling Language, UML), věřili jsme, že vytvoříme standardní prostředek pro zobrazení návrhu, který by odrážel nejen nejlepší postupy tohoto odvětví, ale také by pomohl odhalit tajemství procesu modelování softwarových systémů. Doufali jsme, že dostupnost standardního modelovacího jazyka povzbudí více vývojářů k modelování softwarových systémů ještě před jejich samotným vybudováním. Prudké a plošné přijetí UML ukazuje, že výsledky takového modelování jsou mezi vývojáři velmi dobře známy. Samotné vytvoření UML bylo interaktivním a přínosným procesem velmi podobným modelování rozsáhlého softwarového systému. Výsledek vyústil ve standard založený na mnoha myšlenkách a příspěvcích nespočetných jednotlivců i společností cílové skupiny. Byli jsme to my, kdo začali s UML, avšak mnoho dalších jej pomohlo přivést k úspěšnému výsledku; jsme velmi vděční za jejich přínos.

Vytváření standardního modelovacího jazyka, a vlastně i samotná diskuse o něm, jsou výzvou samy o sobě. Stejnou výzvou je i vzdělávání vývojářské obce a prezentace UML, a to jak ve smyslu jeho užitečnosti, tak s ohledem na kontext vývojového procesu. Martin Fowler v této zdánlivě útlé knize, aktualizované vzhledem k nejnovějším změnám v UML, této výzvě více než dostál.

Jasným a přístupným způsobem nejenom že představuje klíčové aspekty UML, ale také názorně dokládá roli UML ve vývojovém procesu. Zároveň můžeme těžit z výsledků jeho praxe a z moudrosti, získaných během více než dvanácti let svých zkušeností s navrhováním a modelováním.

Doporučujeme knihu každému modeláři nebo vývojáři, který chce získat první náhled nitra UML a obeznámit se s jeho klíčovou rolí v procesu vývoje.

Grady Booch

Ivar Jacobson

James Rumbaugh

Úvod

Měl jsem v životě štěstí v mnoha ohledech; jeden z projevů štěstěny se ukázal v tom, že jsem byl na správném místě se správnými vědomosti, takže jsem v roce 1997 mohl sepsat první vydání této knihy. Na počátku sjednocování modelovacích jazyků do jednotného modelovacího jazyka (UML, Unified Modeling Language) byl chaotický svět objektově orientovaného (OO) modelování. Od té doby se UML stalo standardem nejen pro objekty, ale i pro grafické modelování softwaru. Velmi mě těší, že se tato kniha stala nejoblíbenější knihou zabývající se UML a že se prodalo již více než čtvrt milionu výtisků.

Dobře, tohle všechno je velmi hezké, ale proč byste si právě vy měli tuto knihu koupit?

Chtěl bych zdůraznit, že je poměrně stručná. Jejím cílem není pojednat o detailech každého aspektu UML, jež se vyvíjelo roky a roky. Mým záměrem bylo najít nejužitečnější zlomek UML a předat vám jej. Objemnější kniha by vám sice mohla poskytnout více informací, ale její studium by vám zabralo více času. A čas je největším ziskem, jenž vám tato kniha poskytne. Při snaze zachovat ji stručnou jsem strávil mnoho času výběrem nejlepších částí, abych mohl vás samotné tohoto výběru ušetřit. (Žel, menší kniha nezaručuje úměrně nižší cenu; výroba řemeslně kvalitní knihy s sebou nese jisté fixní náklady.)

Začínáte-li se učit UML, máte důvod si tuto knihu koupit. Přestože je stručná, rychle vás uvede do podstaty UML. S tímto základem se později můžete pustit do detailů UML s rozsáhlejšími publikacemi, jako např. Uživatelská příručka (UML User Guit autorů Gradyho Boocha, Jima Rumbaugha a Ivara Jacobsona vydalo nakladatelství Addyson-Wesley v roce 1999) nebo Referenční manuál (The Unified Modeling Language Reference Manual autorů Jamese Rumbaugha, Ivara Jacobsona a Gradyho Boocha vydalo nakladatelství Addison-Weslay v roce 1999).

Tato kniha může sloužit také jako příručka nejpoužívanějších částí UML. Nepokrývá sice všechna témata, ale budete-li ji chtít nosit stále při sobě, oceníte její nízkou hmotnost ve srovnání s ostatními knihami o UML.

Kniha obsahuje také mé názory. Velmi dlouho už se dané věci věnuji a mám jasný názor na to, co funguje a co naopak ne. Každá kniha obsahuje názory autora a já se ty svoje nesnažím skrývat. Takže pokud hledáte knihu s esencí objektivity, měli byste se poohlédnout jinde.

Mnozí mi říkali, že kniha je dobrým úvodem k objektům. Při psaní jsem však na to nemyslel. Hledáte-li tedy úvod do OO modelování, navrhuji knihu Craiga Larmana Applying UML and Patterns, 2. vydání vyšlo v nakladatelství Prentice-Hall v roce 2001.

Lidé zajímající se o UML používají různé nástroje. Tato kniha se zaměřuje na standardní a běžné užití UML a nezabíhá do detailních popisů toho, co ten který nástroj umí. Ačkoli UML vyřešilo babylonské zmatení předcházejících notací, stále přetrvává mnoho nepříjemných rozdílů mezi tím, co jednotlivé nástroje při kreslení UML diagramů zobrazují a umožňují.

V knize se příliš nevěnuji architektuře řízené modelem (Model Driven Architecture, MDA). Ačkoli mnozí považují tyto dva obory za totožné, mnoho vývojářů využívá UML bez jakékoli znalosti MDA. Zajímáte-li se o MDA, navrhoval bych začít mou knihou, a získat tak nejdříve přehled o UML, a teprve potom se zaměřit na knihy zabývající se podrobněji MDA.

Přestože hlavním tématem této knihy je UML, obohatil jsem ji také několika postřehy o technických prostředcích vhodných k OO modelování, jako jsou např. CRC karty. UML je pouze částí toho, co potřebujete, abyste uspěli při práci s objekty, a považuji za důležité představit vám také některé jiné techniky.

V případě tak stručné knihy, jako je tato, je nemožné pouštět se do obsáhlého vysvětlování toho, jak UML souvisí se zdrojovým kódem; obzvlášť jestliže neexistuje žádný standardní způsob, jak dát obojí do souladu. Přesto upozorňuji na běžné kódovací postupy implementace různých částí UML. Protože jsem jistil, že nejčastěji užívanými jazyky jsou Java a C#, používám ve svých příkladech kódů právě je. Nedomnívejte se, že dávám těmto jazykům přednost; vždyť jsem už toho tolik vykonal pro Smalltalk!

Proč se věnovat UML?

Notace grafického návrhu jsou známy už nějakou dobu. Pro mě spočívá jejich primární hodnota v komunikaci a porozumění. Kvalitní diagram může často pomoci sdělit představy o návrhu, obzvlášť chcete-li se vyhnout příliš mnoha detailům. Schéma vám často pomůže pochopit jak softwarový systém, tak business proces. Diagramy dopomohou k pochopení a ke sdílení tohoto pochopení uvnitř týmu – stávají se jakoby součástí týmu snažícího se najít řešení. Ačkoli nejsou, alespoň doposud, náhradou za textové programovací jazyky, jsou přesto přínosným pomocníkem.

Mnozí věří, že v budoucnu budou grafické techniky hrát ve vývoji softwaru dominantní roli. V tomto ohledu jsem spíše skeptikem, ale je určitě vhodné porozumět tomu, co tyto notace zvládnou a co naopak ne.

Mezi grafickými notacemi má UML svou důležitost vycházející z toho, že je široce používáno a standardizováno v komunitě OO vývojářů. UML se stalo nejen dominantní grafickou notací ve světě OO, ale také oblíbenou technikou v kruzích mimo OO.

Struktura knihy

Kapitola 1 nás uvádí do UML. Vysvětluje, co vlastně UML je, popisuje, jaký je jeho význam pro různé typy lidí a odkud se vzalo.

V kapitole 2 se hovoří o softwarových procesech. Přesto, že je to téma nezávislé na samotném UML, myslím si, že chceme-li jasněji vidět v souvislostech něco takového, jako je UML, musíme nejprve porozumět procesu. A co víc, je důležité porozumět také roli iterativního vývoje, který se stal pro většinu komunity výchozím přístupem k procesům.

Zbytek knihy jsem uspořádal podle typů diagramů. Kapitoly 3 a 4 hovoří o dvou nejužitečnějších částech UML: diagramech tříd (jádro) a sekvenčních diagramech. Ačkoli je kniha tak útlá, věřím, že pomocí metod uvedených ve zmíněných kapitolách dokážete z UML získat maximum. UML je velké a stále rostoucí monstrum, vy ho však nemusíte využívat v celé jeho velikosti.

Kapitola 5 se zaměřuje na detaily méně klíčových, ale stále užitečných částí diagramů tříd. Kapitoly 6 až 8 popisují tři užitečné diagramy, které více osvětlují strukturu systému: diagramy objektů, diagramy balíčků a diagramy nasazení.

V kapitolách 9 až 11 jsou představeny tři užitečné techniky pro popis chování: případy užití, stavové diagramy (oficiálně jsou pojmenovány state machine diagrams, tj. diagramy stavového stroje, ale obecně jsou známy spíše jako stavové diagramy – state diagrams) a diagramy aktivit. Kapitoly 12 až 17 jsou velmi stručné a hovoří o diagramech, které jsou obecně méně důležité, takže k nim poskytuji pouze rychlé vysvětlení s příkladem.

V příloze jsou shrnuty nejužitečnější části notace. Často jsem slyšel, jak lidé říkají, že právě tyto stránky jsou nejcennější částí knihy. Až budete číst některou z dalších částí knihy, možná, že i vy zjistíte, jak je užitečné se do nich občas podívat.

Změny ve třetím vydání

Jestliže již vlastníte předchozí vydání této knihy, budete asi zvědaví, co se změnilo a, což je ještě důležitější, zda byste si měli nové vydání koupit. Prvním podnětem ke vzniku třetího vydání byl vznik UML 2. UML 2 s sebou přineslo mnoho nového včetně několika typů diagramů. I dříve známé diagramy obsahují důležité novinky v notaci jako například interakční rámce v sekvenčních diagramech. Chcete-li být seznámeni s tím, co se událo nového, ale nechcete se přitom probírat všemi podrobnostmi (což rozhodně nedoporučuji!), měla by vám tato kniha poskytnout dobrý přehled.

Dále jsem se chopil příležitosti kompletně přepsat většinu knihy a aktualizovat jak texty, tak i příklady. Využil jsem mnoho z toho, co jsem se dověděl při vyučování a používání UML během uplynulých pěti let. Takže ačkoli je většina slov nová, duch této ultratenké knihy zůstává zachován.

Konec ukázky

Table of Contents

Tiráž

Napsali o knize

Předmluva ke třetímu vydání

Předmluva k prvnímu vydání

Úvod

Proč se věnovat UML?

Struktura knihy

Změny ve třetím vydání

1. Představení UML

2. Proces vývoje

2.6 Zabudování UML do procesu

3. Diagramy tříd: základy

3.1 Vlastnosti

4. Sekvenční diagramy

5. Diagramy tříd: pokročilé koncepty

6. Diagramy objektů

7. Diagramy balíčků

8. Diagramy nasazení

9. Případy užití

10. Stavové diagramy

11. Diagramy aktivit

12. Diagramy komunikace

13. Složené struktury

14. Diagramy komponent

15. Spolupráce

16. Diagramy přehledu interakcí

17. Diagramy časování

Změny mezi verzemi UML