UML 2.5 – finální znění

Musím se přiznat, že chování OMG nechápu. V naprosté tichosti na stránkách uml.org vystavila finální verzi UML 2.5. No dobře, tak se tím nechlubí (ostatně byrokratické kolo se točilo bezmála čtyři roky). Co mi ale vadí, je naprostá ignorance změnového dokumentu, tedy vyznačení, co se od druhé beta verze změnilo.

Přitom v předchozích verzích to tak fungovalo. Jen namátkou uvádím odkazy na změnové dokumenty mezi betami 1 a 2 verze 2.5  nebo mezi UML 2.2 a 2.3. Takže, změnilo se vůbec něco mezi druhou betou a finální verzí?

Pokud se podíváme na XMI soubor pro UML, tak ani náhodou (obsah je stejný již od roku 2013). A to tam jsou prokazatelné chyby. Porovnat dvě verze PDF je víceméně nemožné. Zkusil jsem alespoň zkopírovat text z PDF dokumentů a porovnat je, ale odradilo mě to (viz obrázek – v jednom dokumentu jsou diagramy jako obrázky, v druhém pak lze např. kopírovat text rolí). Řádkování je také jiné.

Porovnání verzí UML

Při procházení zájmových skupin jsem žádnou zmínku o změnách nenašel, kolega Google mlčí. Vložil jsem tedy dotaz do jednoho fóra na LinkedIn, uvidíme, zda se něco objeví.

OCUP 2 Intermediate beta bude brzy na světě

Je to již rok, co bylo možné absolvovat beta verzi zkoušku OCUP 2 – Foundation Level (kód OMG-OCUP2-FOUND101). OMG se konečně rozhoupalo a připravilo beta verzi testu úrovně Intermediate. Podle jejich slov ji bude možno absolvovat koncem léta (takže tipuju někdy v druhé půlce srpna).

K tomu dostávám opakující se otázky, zkusím na ně odpovědět.

Má příprava k testu OCUP2

Má příprava k testu OCUP2 – zeleně úroveň Foundation, modře Intermediate a červená se třese na Advanced.

Co je potřeba umět? Vše, co je nutné znát pro úroveň předchozí a k tomu něco navíc. Pěkně je to rozepsané na stránce beta testu.

Co se vlastně zkouší (zkoušelo) v úrovni Foundation? Základní předpoklady jsou na stránce zkoušky, v poslední době ale přibyl velmi užitečný dokument odkazující do konkrétních kapitol standardu. Pozor, mají tam chybu, v případě kapitoly 8 se jedná o podkapitoly Literals a Expressions.

Musím něco dělat, když jsem byl zapojen do testování úrovně Foundation? Ne. Přibližně před měsícem jste měli mít v e-mailové schránce dopis, ve kterém se mj. píše, že včas dostanete slevový kupón a další informace.

Mohu se do beta programu zapojit? Ano, vše podstatné najdete na příslušné stránce.

Existuje nějaká přípravná literatura ke zkoušce? Zatím ne. Máte v podstatě pouze UML standard a z něj se můžete učit. Já sám sice postupně píšu věci, které je třeba znát, ale rozhodně to do zkoušky nebude hotové. Navíc typ otázek lze pouze předvídat.

A co když se to nechci učit sám? Pokud se najdou zájemci, mohu v červenci uspořádat nějaký seminář, kde si přípravu probereme. Jestliže byste se chtěli účastnit, napište mi. Stejně tak mohu poskytovat soukromé hodiny. Opět, stačí napsat a domluvíme se.

Mělo úsilí vložené do UML 2.5 smysl?

Dlouho jsem se odhodlával k tomu, abych sepsal nejen to, jaké změny UML 2.5 přináší, ale také to, zda tyto změny mají smysl. Konečně jsem se k tomu dostal, takže se na to nyní pojďme společně podívat.

Trocha historie

Konečná podoba standardu UML 2.0 byla vydána sdružením OMG v roce 2005, tedy dva roky poté, co se s ní seznámilo. Od té doby docházelo pouze k dílčím změnám a opravám, které se ve standardu postupně nacházely (ostatně sám na některé poukazuji v přípravném textu pro certifikaci OCUP). UML standard se skládal ze dvou částí: infrastruktury a superstruktury. První jmenovaná byla především pro vývojáře UML nástrojů a blázny, druhá pak pro uživatele UML jako takového.

Dlouhou dobu se mluvilo o tom, zda připravit UML verze 3.0 nebo zda udělat jen dílčí změny. Bohužel OMG je složeno mj. z několika mezinárodních společností, a kdo v nějaké takové korporaci pracuje, tak ví, že dosáhnout seriosního výsledku je téměř nemožné. A teď si představte, že se takových firem sejde více a každá vnitřně přemýšlí, co do UML zavést a pak ještě musí komentovat návrhy dalších zainteresovaných stran. Je tedy jasné, že výsledek nemůže být ani v rozumné době, a často ani přínosný. Jen opravy drobných chyb trvají roky! Možná právě proto se začalo hovořit pouze o zjednodušení standardu jako takového, ovšem tak, aby koncový uživatel nic nepoznal. Původní termín byl několikrát posunut, jeden z posledních takových byl květen loňského roku. Ačkoliv se OMG probudilo, bohužel zjistilo, že letos, tj. v roce 2014, bude slavit 25 let své byrokratické existence, a tak vše šlo stranou a začaly se připravovat zákusky, šampaňské a dortíky na oslavu. Kvůli tomu tedy máme první beta verzi UML 2.5 vydanou v říjnu 2012, druhou beta verzi v září 2013 a od té doby je ticho po pěšině (zřejmě lemované výsledky bujarých oslav).

Ale abych jim úplně nekřivdil, alespoň v certifikační zkoušce se něco událo (viz dále). Kdy ovšem bude konečná verze UML 2.5, tak o tom se můžeme zatím jen dohadovat. Můj osobní názor je takový, že brzy někomu bouchnou saze a dle úsloví z nouze cnost se druhá beta prohlásí za onu kýženou finální (s opravdu minoritními úpravami).

Změny v UML

Nyní ale již k vlastním změnám. Tou první zásadní a viditelnou je sloučení superstruktury a infrastruktury do jediného dokumentu (což je úspora cca 150 stran) nazvaného čistě a prostě OMG Unified Modeling Language. Druhou, už ne tolik viditelnou, ale zcela nejzásadnější změnou je, že se pro definici UML nepoužívá spojování balíků (třída PackageMerge), ale každá metatřída je definovaná na jednom místě jako jeden celek.

Tuto druhou změnu považuji za poměrně velkou podpásovku a nesmysl. Hned na začátek musím na rovinu uznat, že operace spojení balíků je hodně náročná a k pochopení si musíte pár věcí načíst. To je jediný argument, který pro vypuštění akceptuji. Na druhou stranu UML nepoužívalo všechna pravidla této operace, jen ty nejjednodušší. A teď to hlavní: dříve stačilo nastudovat balík Classes::Kernel (případně přidat velmi jednoduché Classes::Dependencies, Classes::Interfaces a Classes:: AssociationClasses) a uměli jste základ, jádro UML. Mohli jste modelovat třídy, vazby mezi nimi, a jakmile bylo třeba naučit se něco dalšího, stačilo stavět na již naučených dovednostech. Ne však tak již dnes. Např. hned po první kapitole, kde se dozvíte o třídách Element, Relationship, DirectedRelationship a Comment, na vás čekají šablony. Tj. téma, které jednak je např. obsaženo až v poslední úrovni testu znalosti UML a jednak téměř nikdo nepoužívá. U hodnot se pak již standard zmiňuje např. o TimeExpression či Duration (opět, zřídkakdy používaná část UML) či o chování. A mohl bych pokračovat. Nelze tedy jednoduše studovat UML po logicky ucelených blocích postupně a na znalostech stavět. Jestli tím chtělo OMG podpořit prodej knih o UML, těžko říct. Ale dle standardu se již UML těžko naučíte. Hodně těžko.

Pojďme ale dál. Snahou tvůrců nové verze bylo maximálně omezit nutnost mít tzv. dopředné znalosti, tedy ve výkladu použít něco, co se teprve bude probírat v pozdější kapitole. Musím uznat, že tohle se vcelku povedlo. Jako důsledek toho je nejen jiné členění kapitol, ale i jiné rozdělení UML do jednotlivých balíků (viz následující obrázek, kde je náhled na část UML 2.4.1 a 2.5 načteného do Enterprise Architekta).

Ve standardu již nenajdete úrovně shody s UML dle úrovní L0 až L3 čistě proto, že to nikdo nepotřeboval a nepoužíval. Jestliže totiž některý současný nástroj chce podporovat UML, tak ho podporuje celý. Tedy… snaží se. Ne však vždy zcela správně.

Změn doznala i struktura základního vysvětlování dané oblasti, tedy notace, sémantika, pravidla a další potřebné věci. V UML od 2.0 až do 2.4.1 včetně byla za začátku každého celku (např. balík Classes) kapitola nazvaná Abstract syntax, kde byly diagramy vztažených elementů. Poté následoval popis každého elementu (tj. elementy, ze kterých je odvozen, popis, atributy, asociace, omezení, sémantika a notace), který byl touto částí definován. Na závěr pak byla souhrnně zobrazena notace. Výhoda byla, že když jste potřebovali něco vědět o konkrétním elementu, měli jste to na jednom místě. Pokud jste potřebovali znát, jak tyto elementy fungují dohromady (např. kompozitní struktury), museli jste hodně listovat.

UML 2.5 se k tomu staví jinak. Každý balík má krátké shrnutí na začátku a poté je rozdělen do podoblastí (např. balík Simple Classifiers popisuje v jedné části datové typy, v jedné signály a v jedné rozhraní). Každá takováto podoblast ukazuje diagram relevantních prvků, popisuje sémantiku, notaci a uvádí příklady. Velkou výhodou je, že vidíte, jak tyto prvky spolu souvisí a jak se případně doplňují. Poté následuje část nazvaná Classifier Descriptions, ve které jsou již formálně uvedeny diagramy, kde se prvek nachází (paráda!), prvky, od který je ten popisovaný nejen odvozený, ale i další, které z něj vycházejí (paráda!), asociační konce a omezení. Jestliže však chcete mít popis elementu na jednom místě, máte smůlu, což je neskutečný průser. UML standard má fungovat jako reference a tento způsob to neumožňuje! Sám tedy používám pro hledání informací jak UML 2.4.1, tak i 2.5, a to na základě toho, co potřebuji zjistit.

Dosud jsme se bavili jen o změnách ve struktuře dokumentu, ale verze 2.5 přináší i pár drobných změn, které postřehne málokdo (a pro málokterého z uživatelů má nějaký sebemenší význam). Takže jen ve zkratce:

  • Autoři se snažili opravit všechny chyby v omezeních (constraints) definovaných pomocí OCL. Konečně!
  • Několik násobností s dolní hranicí 1 bylo posunuto na 0.
  • Informace {ordered} byla někam přidána a někde naopak odebrána, aby to jako celek dávalo smysl.
  • Vlastnost LoopNode::loopVariable je nyní kompozitní.
  • NamedElement::clientDependency je nově odvozená vlastnost (derived).

Změny v certifikačních zkouškách OCUP

O změnách v certifikační zkoušce jsem toho už napsal poměrně dost, stačí se podívat na mé první informace o změnách a o průběhu testu. Zde tedy jen pár základních bodů, které jsou důležité či které mě zaujaly z přechodu z OCUP na OCUP 2:

  • Zkouška první úrovně se přejmenovala z Fundamental na Foundation.
  • Prozatím lze skládat pouze úroveň Foundation a pokud máte úroveň Fundamental, pak i další dvě úrovně (více v článku o certifikační schizofrenii, časem se snad to srovná).
  • Konečně je test zaměřen mnohem víc na praktické znalosti uživatele UML nežli na akademické znalosti standardu.
  • Platnost certifikátu OCUP2 bude pět let. Certifikáty OCUP platí na doživotí, ale jsou již označovány jako zastaralé (obsolete).

Podrobnější informace pak najdete již v uvedených článcích.

Mělo to tedy smysl?

Co se UML jako takového týče, tak rozhodně ne. Nebýt vypuštění používání třídy PackageMerge ze standardu, změnu bych uvítal. Ale takhle to byla zbytečná práce. Vynaložené úsilí se mělo věnovat na opravu chyb a definování některých požadovaných změn.

U zkoušek OCUP (2) jsem naopak moc rád, že ke změně došlo (a to bez ohledu na to, že já vynaložil mnoho času na text pro zkoušku úrovně Advanced a teď evidentně bude mnohé jinak). Konečně to prověří nejen teoretickou znalost UML, ale prokáže, že nad tím umíte přemýšlet, že UML dokážete použít a koneckonců to něco vypoví i o vašich znalostech objektově orientovaného světa. A to je dobře.

Zkouška OCUP 2 Foundation absolvována

Dneska jsem měl tu čest absolvovat zkoušku OCUP 2 – Foundation Level (kód OMG-OCUP2-FOUND101) v její beta verzi, o které jsem tu nedávno psal. Ještě za čerstva bych se rád podělil se svou zkušeností.

Především musím říct, že testové otázky jsou postaveny mnohem blíže k uživatelům UML nežli k akademikům, kteří sice znají jednotlivé klky střev UML, ale s každodenním používáním tohoto jazyka to nemělo moc společného. Pokud zkouškou projdete, bude to mnohem více vypovídat o tom, jak UML umíte používat.

Protože jde o otázky ve zkušební verzi, najdou se samozřejmě nějaké ty chybky. Např. jste dotazováni na věci, které v požadavcích na zkoušku nejsou uvedeny (např. jedna otázka byla na třídu Port). V zadání jedné otázky jsem našel chybu (guard v diagramu aktivit nebyl v hranatých uvozovkách). Co mě však vytáčelo, byly otázky směrované do oblasti „Why we model“, protože to byly klasické dotazy na měkké dovednosti. V takových otázkách akorát odhadujete, která odpověď uspokojí tazatele. A 15% podíl takových otázek v testu je přespříliš.

Pokud se na zkoušku chystáte (ať už na betu nebo na finální), uvádím pár věcí, na které byste rozhodně neměli zapomenout (a které si pamatuji, že tam jsou):

  • Dávejte dobrý pozor na to, na co se ptají. Někdy záleží na slovíčku (např. když v zadání otázky mají i abstraktní třídy a vás se ptají jen na ty, ze kterých lze vytvořit instance).
  • Naučte se dobře viditelnosti a jmenné prostory (může mít balíček v sobě balíček stejného jména? Může balíček obsahující třídu A s atributem private vidět jeho hodnotu?)
  • Dost otázek mělo v zadání diagram tříd a vy jste měli vybrat jeden ze čtyř objektových diagramů, které odpovídají zadanému diagramu tříd.
  • Podívejte se na násobnosti asociace aktora s use casem (ostatně z případů užití vás proklepnou opravdu důkladně).
  • U akcí si zapamatujte, že je tato spuštěna jen v případě, že má tokeny na všech vstupních hranách.
  • Zapamatujte si notace parametru a pinu u aktivit/akcí.
  • Mrkněte na notaci akce pro volání jiné aktivity a pro volání metody nějaké třídy.
  • U sekvenčních diagramů si řádně procvičte ona dvě známá pravidla pro hledání platné sekvence. A pak samozřejmě typy volání (synchronní, asynchronní…)
  • Jak se zobrazují pre- a post-contions u akcí? Kdy se vyhodnocují?
  • Kdy použít datový typ a kdy třídu?
  • Jak se dají zobrazit prvky balíčku?
  • U stavových diagramů doporučuji mít hodně zažité výskytu události a princip triggerů, podmínek a efektů.
  • A další.

Jestliže jste zkoušku absolvovali, připojte komentář s vašimi postřehy, ostatním to může pomoci.

Nová verze certifikace OCUP pro někoho zdarma

S novou verzí UML, která je v druhé beta verzi, se na svět dere i změna v certifikaci znalostí tohoto jazyka. S tím přichází ruku v ruce i poměrně výhodná nabídka přímo od OMG (Object Management Group), která má UML pod standardizačním patronátem.

Než se však k tomu dostanu, pojďme si povědět, co se vlastně s UML děje a v nejbližší době dít bude. Upozorňuji, že informace, které zde uvedu, se mohou měnit dle toho, jak se bude vše postupně dokončovat.

Aktuální verze UML nese číselné označení 2.4.1 a je tu s námi od srpna 2011. Je složena ze dvou zásadních dokumentů: infrastruktury a superstruktury. Superstruktura definuje to, co znají především uživatelé UML, tedy např. případ užití, aktivitu, komponentu, třídu a to včetně sémantiky. Infrastruktura je pak jakési podhoubí UML, se kterým pracují víceméně pouze vývojáři UML nástrojů. Připravovaná verze 2.5 má přinést výrazné zjednodušení celého UML jazyka, vyhodit nepotřebné věci a hlavně mít jen jeden jediný dokument (zda je opravdu o zjednodušení, rozeberu v některé v dalších z článků). Zmizí však zásadní věc a to rozšiřování definic UML prvků pomocí importů a spojování balíků, které – přiznejme si – bylo pro začátečníky zajímající se o text standardu poměrně náročné na chápání.

Díky tomu však začnou být některé otázky v testu OCUP (OMG Certified UML Professional) značně mimo mísu (především pro úroveň Advanced). Z tohoto důvodu se společně s novou verzí spustí i nová verze těchto zkoušek pod označením OCUP2. Co přinese nového? Vybírám pár nejzajímavějších bodů.

  1. Původní zkoušky již nebude možné skládat. Dosud získané certifikáty však budou platit nadále, byť budou označovány jako zastaralé.
  2. Budou stále tři úrovně znalostí; první se namísto Fundamental bude jmenovat Foundation.
  3. Platnost certifikátu bude pět let. Osobně si myslím, že tohle by mělo platit u každé zkoušky, včetně těch státních, za které se dávají tituly typu Ing. či Mgr. Na druhou stranu je tady zřejmá potřeba generovat příjmy do pokladny OMG.
  4. Složení požadavků zkoušek bude mírně odlišné. Např. již v té první (Foundation) se vás budou ptát na stavové diagramy (původně bylo až v druhé a třetí úrovni). Totéž platí třeba o některých třídách z oblasti diagramů aktivit (např. SendSignalObject).
  5. V době vydání tohoto článku byly známy jen požadavky pro první úroveň. Prozatím není určeno, kolik otázek již znamená, že jste zkouškou prošli. V původní verzi zkoušky to bylo 57,5 %, což je strašně málo (jistou prestiž by zkoušce dodalo zvýšení tohoto čísla alespoň na 80 %).
  6. První úroveň zahrnuje 15 % otázek z oblasti „proč modelujeme“. Z toho mám trošku obavy, protože může jít o otázky, na které nebude jednoznačně správná odpověď. Ale to je prozatím pouze má domněnka.

A nyní pojďme konečně k nabídce, o které jsem se v úvodu zmínil. Po omezenou dobu (zřejmě jen pouze do konce dubna, možná ještě méně) OMG hledá beta testery, kteří chtějí absolvovat zkoušku úrovně Foundation a to zcela zdarma (no dobře, tramvajenku do certifikačního střediska vám nezaplatí). Pokud zkoušku absolvujete, tak dostanete zdarma možnost podívat se na zkoušku na druhou úroveň. A totéž pak platí pro tu třetí. Pokud navíc jednotlivými zkouškami projdete, dostanete navíc platný certifikát (pozor, musíte je složit od té první; pokud projdete druhou, ale první pokazíte, nebudete mít žádný certifikát). Testování by mělo probíhat od půlky dubna do půlky května. Moc brzy? A co to brát tak, že si zkoušku prostě jen zkusíte? Můžete získat cenné zkušenosti z toho, jak to celé probíhá.

Jistě jste zvědaví, jak se takovým beta testerem stát. Informace získáte na stránce věnované beta verzi zkoušek OCUP 2. Nebudu je tady přepisovat, bez angličtiny stejně zkouškou neprojdete, tak si počtěte. Najdete tam odkaz i na formulář, kterým se do testovacího programu zapojíte. Pokud vás vyberou, dostanete o tom v řádu několika dnů zprávu e-mailem (sledujte případně i složku se spamem). Doporučuji si pospíšit, dokud tu ta možnost je.

Než se pak vrhnete na vlastní zkoušku, jistě se budete shánět po nějakém přípravném materiálu. Kromě vlastního změní druhé bety UML 2.5 dosud nic není. Jelikož je tato informace poměrně nová (cca měsíc), ještě nic nevyšlo. Sám stránky ocup.cz budu postupně upravovat tak, aby odpovídaly OCUP 2, ovšem nebude to hned. Teď ale holt bude nutné vystačit s tím, co je. Mrkněte se na vlastní požadavky zkoušky a pak na seznam níže. Odkazuji se na kapitoly příprav k původní verzi zkoušek, které by vám měly pomoci:

Mno, když na to tak koukám, tak to vlastně vůbec nebude zlé. Budu rád, pokud se podělíte o vlastní zkušenosti.

UML 2.5 Beta 1 je na světě

Před několika málo dny byla vydána dlouho očekávaná první beta verze UML 2.5. Pokud můžeme věřit tomu, co se o ní šíří po Internetu (dobré je sledovat např. Eda Seidewitze), pak by měla obsahovat především zásadní zjednodušení jazyka jako takového. Zřejmě nejdůležitější je zrušení konceptu infrastruktury a superstruktury a nepoužívání operace merge (viz PackageMerge) v metamodelu.

Sám jsem se zatím dokumentem neprokousával, ale jakmile najdu trochu času, budu zde průběžně psát své pocity z nové verze.