O JEDNÉ ČASTÉ CHYBĚ PŘI ROZKLADU PROCESŮ PODNIKU ANEB KDY MÁME UKONČIT ROZKLAD PROCESŮ PODNIKU? RNDr. Ilja Kraval, říjen 2008 http://www.objects.cz
„AKTÉROVÁ ŠKOLA“
Jak známo, informační systémy obsahují řádově stovky až tisíce případů užití. Z toho důvodu při tvorbě Use Case Diagramu musí analytik řešit tyto zásadní otázky: „Jak tyto případy užití nalézat systematicky? Jak postupovat, abychom nějaký neopomněli?“ Existuje jedna klasická metodika vyhledávání případů užití, nazvěme ji pracovně „aktérová škola“, která byla preferovaná hlavně v období zrodu UML,tj. ve druhé polovině 90.let minulého století. „Aktérová škola“ přistupuje k řešení problému nalézání případů užití pomocí jednoduchého pravidla: „Najdi nejprve prvky z okolí systému (tzv. aktéry neboli prvky typu Actor), které budou potřebovat systém, případně najdi ty prvky z okolí, které budou komunikovat se systémem, resp. ty prvky z okolí, kterým bude systém předávat informace. Až nějaký takový prvek (neboli prvek typu Actor) z okolí najdeš, zeptej se, proč a nač aktér tento systém potřebuje, resp. jak jej použije, resp. jak komunikuje. Tímto najdeš případy užití.“ Bohužel tato metodika se ukázala jako nikoliv stoprocentně účinná. Mnohdy vede ke zdlouhavým a zbytečným diskusím nad názvy aktérů. Navíc díky soustředění se na aktéry spousta případů užití zůstane nepovšimnuta. Mnohdy dojde k chybnému určení počtu aktérů, které komunikují s daným případem užití, tj. nastává chybný jev, kdy počet logických rozhraní nesedí s počtem aktérů u daného případu užití. Je třeba podotknout, že „aktérová škola“ se vcelku dobře osvědčila u technologických systémů (jako je například hlásič požáru, řídící modul výtahů v mrakodrapu, komunikační modul apod.). Jedná se o systémy s nikoliv složitými procesy v okolí a s relativně malým počtem případů užití (řádově desítky). Tyto systémy nebývají většinou složité procesně, ale po technologické stránce (například je k dispozici málo fyzické paměti nebo aplikace musí pracovat ve vícero vláknech, zpracovávat signály apod.). U těchto systémů odpadá i velmi nepříjemná diskuse ohledně pojmenování aktérů, protože s výjimkou „nějaké nepodstatné
http://www.objects.cz strana 2
živé obsluhy“ () jsou aktéry u technologického systému většinou externí software nebo hardware se specifickým rozhraním, které lze snadno pojmenovat. U informačních systémů, které jsou charakteristické právě vysokým stupněm složitosti chodu procesů okolo systému, však „aktérová škola“ není stoprocentní a selhává. Je třeba podotknout, že i přes toto selhání stoprocentnosti není tato škola úplně zatracena jako nesmyslná. Stává se rozumným podpůrným (a tedy dodatečným doplňkovým) postupem u jiné školy, kterou budeme nazývat jako „procesní škola“ (viz dále). „Aktérová škola“ není plně zavržena a je využita v tom smyslu, že lepší „procesní školu“ doplní svými již zmíněnými otázkami (tj. „kdo použije systém?“). Navíc mnohdy získáme od zákazníka dokumenty, ve kterých se to hemží „rolemi v podniku“, jako jsou ředitel, manažer, obchodník, realitní makléř apod. Tyto role se stávají vstupními parametry zmíněných otázek „kdo a proč používá systém?“. Musíme však být u tohoto postupu s aktéry opatrní na jednu záludnost: Některé případy užití bývají shodné pro několik rolí v podniku, jinak řečeno mnohdy dva nalezené případy užití nakonec splývají v jeden případ užití pro dvě a více různých rolí v podniku. I když se jedná o jeden případ užití, je pak tendence hovořit o dvou případech pro dva aktéry. Anebo se v tomto případě provede jiný druh hrubé chyby: Určí se pro několik rolí v podniku správně jeden „splývající“ případ užití, ale namalují se k němu dva a více aktérů, i když případ užití má pouze jednoho aktéra, což je opravdu hrubá chyba v modelu případu užití. Nakonec ještě jedna poznámka: Existuje typ softwaru, kde nemusíme používat žádnou zvláštní školu pro vyhledávání případů užití a vystačíme si pouze s dobrým logickým členěním případů užití do prvků typu Package, což u tohoto software dostačuje a samo o sobě vede k systematičnosti. Jedná se software typu desktop aplikace, jako je například editor, tabulkový procesor (Word, Excel apod.) s jedním uživatelem. Poznámka: Existuje veřejný projekt UML Open Source, kde si můžete prohlédnout UML model (případně i spolupracovat), blíže viz tato stránka.
„PROCESNÍ ŠKOLA“
Pro systematické vyhledávání případů užití se do popředí se v posledních letech dostala více škola tzv. procesního modelování (zkratka BPM = Business Process Modeling) ve svých různých klonech a variantách, např. BPMN, Eriksson-Penker aj. Podstata „procesní školy“ pro vyhledávání případů užití je sice podobná, ale trochu jiná, než u „aktérové školy“. Její návod zní velmi podobně: „Najdi všechny činnosti neboli procesy
strana 2
http://www.objects.cz strana 3
podniku v okolí takové, které vedou k použití systému, následně tak najdeš případy užití vyvolané z těchto procesů podniku“. Jak vidět, základní otázkou není „kdo použije systém“, ale „co se děje okolo systému takového, že se použije systém“. Tato škola má jednu velkou výhodu zejména pro zákazníka: Nemusí pracně přemýšlet nad tím, „Kdo bude používat systém“, ale otázka zní jednodušeji: „Jak to děláte“? Například pokud se budeme věnovat agendě zpracování úvěrů v bance, budeme si odpovídat na dotaz „Jak chodí úvěry“ a nikoliv „Kdo s nimi pracuje“. Jak vidět, první otázka je pro vyhledávání případů užití mnohem cílevědomější! Jak však bylo řečeno, procesní škola může být doplněna také navíc otázkou z „aktérové školy“ ve smyslu „kdo potřebuje systém“, ale to slouží spíše pro kontrolu a revizi již nalezených případů užití při již nalezených procesech (například „a co uklízečka, ta nebude pracovat s agendou úvěrů?“ ). Procesní škola nalézání případů užití má několik nesporných výhod: umožňuje popsat chod procesů (například „jak chodí úvěry“) umožňuje systematický rozklad procesů a tím dát řád mezi případy užití zákazníkovi je tato škola velmi dobře srozumitelná, zákazníkem bývají modely procesů podniku s případy užití přímo vyžadovány jako součást projektové dokumentace Nakonec ještě jedna důležitá poznámka: Jak vyplývá z účelu zavedení procesní školy, tedy k čemu vlastně slouží (nezapomeňme, že hledáme případy užití informačního systému!), tak je potom zřejmé, že procesní model popisuje chod podniku s novým vyvíjeným systémem a nikoliv chod podniku „dnešní“ ještě bez navrhovaného systému. Velmi častou otázkou při školeních bývá dotaz: „A máme modelovat i současný stav nebo ne?“ Odpověď z praxe je opravdu čistě praktická: Pokud se po vás současný model podniku vyžaduje (a zákazník jej zaplatí), pak jej musíte vyhotovit, tj. model současného chodu podniku se stává součástí dokumentace projektu stejně jako chod procesů s novým systémem. Pokud se výstupy současného stavu podniku přímo nevyžadují a nemusíte odevzdávat formalizovaný model současného stavu, pak to ještě neznamená, že se mu nebudete věnovat! Je vhodné si se zákazníkem pohovořit o současném stavu, tedy o současném chodu podniku se současným informačním systémem, a tyto poznatky si nějak zapsat jako cenný zdroj informace. Pokud se však nevyžaduje výstup, nemusíte být však při zápisu až tak formální (například nemusíte malovat diagramy), stačí pouze textový tvar zápisu. Pokud se i tak vedoucí projektu rozhodne, že součástí projektu bude procesní model stávajícího stavu, aniž by to zákazník požadoval, jedná se v tom případě o ekonomickou stránku a možnosti zdrojů projektu (tj. o otázku, kdo to zaplatí a kdo to udělá).
strana 3
http://www.objects.cz strana 4
ROZKLAD PROCESŮ
Je zřejmé, že pokud nalezneme pro každý případ užití jeden proces podniku, ze kterého dojde k použití systému, tak logicky vzato najdeme tolik procesů, kolik je případů užití, což je samozřejmě opět velké množství. Velkou výhodou „procesní školy“ je systematičnost daná možností rozkladu procesů a to nám umožňuje následně uspořádat systematicky i případy užití. Základní myšlenka je jednoduchá: Procesy (neboli prvky typu Activity v UML se stereotypem <
>) umějí tak zvaný rozklad procesů neboli aktivit. Znamená to, že v rozkladu procesů existují „vyšší“ procesy, které se skládají z „nižších“ procesů. Laik rozumí tomuto skládání (nebo naopak rozkladu směrem dolů) procesů velmi dobře a intuitivně jej chápe opravdu správně. Například když se bavíme se zákazníkem o tom, jak vypadá „proces podniku Fakturace v podniku“, bude pro něj opravdu srozumitelná tato jednoduchá věta: Proces „Fakturace“ se skládá z procesů „Založení faktury“, „Editace faktury“, „Odsouhlasení faktury“ atd. Všimněme si, že vyšší proces „Fakturace“ je v tomto případě složen z nižších procesů „Založení faktury“, „Editace faktury“, „Odsouhlasení faktury“ atd. Díky této vlastnosti procesů “skládat se” můžeme zavést systematičnost rozkladu všech procesů podniku. Zavedeme vrchní „top“ proces a dáme mu název IS. Chápeme jej jako „proces podniku zahrnující všechny procesy podniku podporované IS“. Následuje rozklad odshora dolů – na první úrovni rozložíme proces ještě dost nahrubo (například „Evidence subjektů“, „Účetnictví“, „Skladové hospodářství“ atd.). Další rozklad „zjemní“ další procesy atd. Takovouto dekompozici odshora dolů můžeme chápat jako rozdělení na oblasti řešení daného IS podobně jako zoom u lupy: Nejprve vidíme oblasti řešení „nahrubo“ a postupně pohled „zjemňujeme“. Tento rozklad procesů nebo také oblastí řešení znázorníme graficky, přičemž pro zákazníka je nejlépe odevzdat jej ve formě stromu a nazvat jej „oblasti řešení IS“. Asi není třeba zdůrazňovat, že zákazník tento strom vidí velice rád, protože mu dává dobrý přehled o funkcionalitách IS, a to opravdu velmi přehledně a názorně. Poznámka: Zde poskytujeme pouze zkrácený popis celé problematiky za účelem tohoto článku, procesnímu modelování a práci s případy užití je ve Školení OOP a UML věnováno celé jedno odpoledne včetně doporučených postupů v EA, tipů, triků a rad...
strana 4
http://www.objects.cz strana 5
UKONČENÍ ROZKLADU PROCESŮ
Velkou výhodou rozkladu je mimo jiné to, že procesy lze dolů libovolně rozkládat – a to stále níže a níže... To je sice pěkné, ale kde máme tento postup korektně a správně ukončit? Jak poznáme, že jsme na konci rozkladu? V praxi a také při cvičeních na školeních jsem velmi často narazil na chybně vytvořený rozklad. Nejčastější chybou je neukončení rozkladu procesů podniku v ten moment, kde je třeba jej bezpodmínečně ukončit. Pokračování rozkladu procesů podniku za tento „správný bod“ je totiž nejenom hrubou chybou, ale navíc totálně zmate zákazníka a také vývojáře! Abychom správně pochopili, kde nastal kýžený bod ukončení rozkladu procesů podniku, musíme se si nejprve odpovědět na otázku, proč vlastně hledáme procesy a proč provádíme rozklad procesů. Cíl je jasný: Hledáme případy užití a na to musíme mít fokus. Znamená to, že v okamžiku, kdy nalezneme proces podniku spouštějící případ užití, tak rozklad povinně končíme. Ano, to zní sice jednoduše, ale v praxi se to hůře hledá! Z toho důvodu, tj. abychom pochopili, kde končí rozklad, je třeba si opravdu velmi jasně vysvětlit, jak tento bod přesně vypadá, a potom jej můžeme opravdu přesně určit. Jak má tedy vypadat proces, který se již dále nedělí na sub-procesy, jak jej bezpečně poznáme? Je to takový proces, který spouští případ užití, tj. přímo v něm, v jeho scénáři se o tomto případu užití hovoří, že se daný případ užití použije, nebo jinak řečeno „případ užití se zavolá a spustí“. Znamená to, že logický scénář procesu podniku, který se dále nedělí, má toto schéma: „Něco se děje venku, bla bla atd. ..., a dále se použije případ užití XY...“. Toto schéma logiky scénáře chodu venku je signálem k ukončení rozkladu! Poznámka: Pokud najdeme v jednom procesu více zavolání případů užití, tak doporučuji tento proces ještě jednou rozložit tak, aby každý proces spouštěl právě jeden případ užití. Je to pouze postup pro lepší systematický přehled. Mnohdy pak bývají proces venku pouze „malou obálkou“ zavolání případu užití, například „obsluha potřebuje zaevidovat novou fyzickou osobu v systému“ apod. Je dobré si představit, že případ užití vypadá jako „tlačítko na systému“, které se nabízí ven k použití. Nápis na tomto tlačítku odpovídá vnějšímu pohledu na prvek v objektovém paradigmatu. Vnější proces venku provádí nějakou činnost, poté děj přistoupí k tomuto tlačítku a to se stiskne. Tam končí popis procesů, protože další rozklad by vedl k popisu chování systému a to je vnitřek (vnitřní pohled) na případ užití, neboli implementace jeho služby „užitek případu užití“. V tomto bodě tedy rozklad končíme. Této představě odpovídá následující obrázek:
strana 5
http://www.objects.cz strana 6
Schéma konce rozkladu procesů Koncový dále nedělený proces podniku X
Use Case Y
scénář procesu .... a použije se UC Y .... scénář případu užití .... .... .... ....
Daná situace je velmi podobná popisu chodu funkcí. Představme si, že máme popsat chod funkce F1, která uvnitř sebe volá funkci F2. Začneme popisovat chod funkce F1 až dospějeme k bodu zavolání funkce F2. Popis chodu funkce F1 zde zastavíme (uvnitř funkce F1 nebudeme přece popisovat chod funkce F2, která je volána) a prostě napíšeme „a zavolá se F2“. Další popis chodu umístíme do funkce F2. A nyní si tento příklad převedeme na situaci procesu posledního procesu rozkladu (viz předešlý obrázek): Funkce F1 odpovídá procesu podniku X, funkce F2 odpovídá případu užití Y. Pokud bychom popisovali chod procesu na straně procesu (další rozklad) i v rámci zavolání případu užití, dopustili bychom se stejné chyby, jako kdybychom v chodu funkce F1 popisovali chod funkce F2. Tok děje u koncového procesu je tedy tento: Něco se děje venku, což popíšeme. V rámci tohoto děje se spustí případ užití. Popíšeme dále děj uvnitř případu užití. Vnější popis končí na stisknutí (zavolání, použití) případu užití informačního systému . Jako příklad hrubé chyby bych uvedl následující rozklad: Rozkladem procesů autor dospěl až k procesu „Příjem konečné faktury k proplacení do podniku“ (úmyslně jsem tento proces podniku nazval dlouhým názvem, aby bylo patrné, co se v něm děje). Při určení chodu tohoto procesu měl autor správně zavolat případ užití „Založení nové došlé konečné faktury v systému“ a scénář procesu mohl v té chvíli vypadat velmi jednoduše:
strana 6
http://www.objects.cz strana 7
Do podniku došla (například poštou) nová konečná faktura k proplacení od obchodního partnera. Obsluha tuto fakturu zadá do systému, viz případ užití „Založení nové došlé konečné faktury v systému“. Namísto toho autor chybně pokračuje v rozkladu na straně procesů, a vychází mu proto chybně rozklad na další sub-procesy procesu „Příjem konečné faktury k proplacení“ a to ještě na straně BPM, tj. procesy jako „Založení hlavičky faktury“, „Založení řádků“ atd. Samozřejmě, že to je špatně... V tomto případě je oprava chyby jednoduchá: Uvedený popis rozkladu za požadovaným bodem se přemístí z prostoru BPM do prostoru za hranice případu užití, tj. dovnitř systému, protože se jedná o jeho řešení (co dělá systém) a problém je vyřešen. Není bez zajímavosti, že pokud autor použije pro popis vnitřku chodu opět Activity diagram namísto slovního scénáře, tak potom vzniknou v projektu dva Activity diagramy: Jeden popisuje chod procesu podniku (mají stereotyp <). Jeho rozklad končí povinně spuštěním případu užití. Druhý Activity diagram popisuje vnitřek případu užití ( je jich tolik, kolik je případů užití a prvky typu Activity nemají stereotyp <>), ten začíná svůj chod právě spuštěním případu užití. Pozor, tyto dva diagramy nepatří do jednoho diagramu a tedy do jednoho rozkladu! Jsou to dva diagramy ve dvou oddělených prostorech. Jeden je „venku“ a jeho pohled na systém končí spuštěním případu užití, druhý je „uvnitř“ a popisuje, jak se „chová“ případ užití uvnitř po spuštění! Oba diagramy propojuje bod spuštění případu užití.
ZÁVĚR
Při rozkladu procesů končíme rozklad okamžikem spuštění případu užití. Až v tomto případu užití (v jeho vnitřku) potom popisujeme další pokračující chod děje (buď slovním scénářem anebo pomocí Activity diagramu), tj. chod procesů na straně BPM již dále nedělíme. Až ve vnitřku případu užití popisujeme, co se děje jako implementaci logiky případu užití (tj. nikoliv na straně procesů podniku). Diskuse k článku viz Fórum Serveru objektových technologií.
Konec článku
strana 7