O JEDNÉ ZÁLUDNOSTI INTERAKCE «INCLUDE» V MODELU PŘÍPADŮ UŽITÍ



Podobné dokumenty
JEDNODUCHÁ A PRAKTICKÁ METODA ODHADU PRACNOSTI PROJEKTU (S UTILITOU KE STAŽENÍ ZDARMA)

Čtvrtá část odpovědi aneb jak je to vlastně s interakcí <<include>>

Jak správně psát scénáře k případům užití?

O JEDNÉ ČASTÉ CHYBĚ PŘI ROZKLADU PROCESŮ PODNIKU ANEB KDY MÁME UKONČIT ROZKLAD PROCESŮ PODNIKU?

S KONFIGURACÍ POVOLENÝCH KOMBINACÍ DĚDICŮ

Třetí část odpovědi na mail ohledně zpracování případů užití, aneb jak je to s číslováním pořadí případů užití

Druhá část odpovědi na mail ohledně zpracování případů užití

NAUČTE SE MALOVAT SI INSTANCE!

ROZDÍL MEZI VZTAHEM EXTEND A INCLUDE V USE CASE DIAGRAMECH

Šumperský efekt rozmnožení případů užití

Odpověď na dotaz ohledně asociační třídy v modelu měření

Rady pro tvorbu USE CASE MODELU, rada první: Jak pracovat s pojmy ve scénářích UC

Úvod do principů objektově orientovaného programování

Proč je analytický model IS nutným předpokladem pro zabránění tvorbě molochálních systémů

VYHLEDÁVÁNÍ PRVKŮ ACTOR A PROCESNÍ MODELOVÁNÍ

MOBILNÍ SKLADNÍK. Příručka k základnímu ovládání. Beta verze popisu produktu Aktualizace dokumentu: z 10

Jedna z velmi častých a závažných chyb při návrhu IS aneb jak vznikají tzv. molochální systémy

Algoritmizace. 1. Úvod. Algoritmus

Use case - management skladu

Objektově orientované technologie Dynamický náhled Sekvenční diagram (Realizace UC) Daniela Szturcová

Nutnost použití vzoru OBSERVER pro zamezení nepříjemných efektů zpětných funkcionálních vazeb mezi objekty

Pokročilé typové úlohy a scénáře 2006 UOMO 71

Manuál QPos Pokladna V1.18.1

JE TŘEBA DBÁT NA ANONYMITU KLIENTA NEBO NE?

Hromadná korespondence

Mobilní skladová evidence v QI

Vztah typu Extend v UML a jeho zvláštnosti

Manuál QPOS Pokladna V 2.0

Nový způsob práce s průběžnou klasifikací lze nastavit pouze tehdy, je-li průběžná klasifikace v evidenčním pololetí a školním roce prázdná.

Lekce 04 Řídící struktury

Úvod do databázových systémů

Skenování s programem MP Navigator EX

Metodika analýzy. Příloha č. 1

Kurz Postupy návrhu IS pomocí UML a OOP (5 dnů, in-house)

Problém identity instancí asociačních tříd

Školní kolo soutěže Baltík 2011, kategorie C

Objektově orientované technologie Business proces Diagram aktivit. Daniela Szturcová

Obsah. Zpracoval:

Výukový materiál zpracován v rámci projektu EU peníze školám

UML a jeho použití v procesu vývoje. Jaroslav Žáček jaroslav.zacek@osu.cz

Uživatelský manuál k prodejní aplikaci věrnostního systému Nestlé

Obří prvky: jak postavit větší kostky

TÉMATICKÝ OKRUH Softwarové inženýrství

Návrh IS - UML. Jaroslav Žáček

Případy užití (use case) Projektování SW systémů

Multimediální prezentace MS PowerPoint I

Překladač a jeho struktura

Návrh IS - UML. Jaroslav Žáček

Copyright Jiří Janda ISBN

Uživatelský manuál k prodejní aplikaci věrnostního systému Nestlé

CÍLOVÝ KONCEPT. Ghoul Wars. pro. Jihočeskou univerzitu Pedagogickou fakultu Předmět: TDSA

Objektová tvorba SW, Analýza požadavků 2006 UOMO 53

Dotykova obrazovka v programu TRIFID

STANOVISKO VĚDECKÉ RADY PRO SOCIÁLNÍ PRÁCI

Hromadné operace s prvky

7.2 Model použití (jednání) (Use Case)

Výdej na táře. Rozdělení expedice. Obsah

3.2.3 Podobnost trojúhelníků I

Sběr dílenských dat s využitím produktu OKdata

Výběr a instalace mobilního terminálu. II. Používání čárových kódů v katalogu položek. III. Tisk etiket s čárovými kódy

Základní informace. Modelování. Notace

OOT Objektově orientované technologie

Propojení s externími dopravci. Číselník způsobů dopravy umožňuje členit externí dopravce podle následujících hodnot:

Informatika 8. třída/6

Evidence a INVENTARIZACE majetku s využitím čárového kódu

Koncepce (větších) programů. Základy programování 2 Tomáš Kühr

Analýza a Návrh. Analýza

2.7.6 Rovnice vyšších řádů

PŘÍLOHA C Požadavky na Dokumentaci

6. blok část B Vnořené dotazy

06/03/15. Exekuce ios. Deliverable 01. Vojtěch Micka mickavoj Naim Ashhab ashhanai

-= STS Prachatice =-

Monitorovací zprávy v aplikaci Benefit7. Nejčastější dotazy a chyby

8 Třídy, objekty, metody, předávání argumentů metod

Modelování požadavků

Celostátní kolo soutěže Baltík 2007, kategorie C

OBSAH. 48 Příručka ON-LINE KUPEG úvěrová pojišťovna, a.s.

Analýza a návrh webových aplikací I N G. M A R T I N M O L H A N E C, C S C. Y 1 3 A N W

EKONOMICKÉ MODELOVÁNÍ

Struktura článku. Chemická literatura. Struktura článku. Struktura článku 10/25/ Struktura článku, cílová skupina

POKROČILÉ PROGRAMOVÁNÍ. Pípání / Poplach

Soubory s reklamami musí mít stejný název jako ta výše uvedené. Stávající soubory reklam budou přepsány.

Novinky ve verzi 1.72.A

Testování operačního systému Windows Phone 8

Nápověda k systému CCS Carnet Mini. Manuál k aplikaci pro evidenci knihy jízd

OOT Objektově orientované technologie

Evropský zemědělský fond pro rozvoj venkova: Evropa investuje do venkovských oblastí EPH. Skladové karty. Podklady pro školení.

Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti. Řešené příklady. Ondřej Votava

ALGORITMIZACE Příklady ze života, větvení, cykly

Manuál k ovládání aplikace INFOwin.

Programujeme v softwaru Statistica - příklady

Následně je již možné provést vlastní přenos číselníků do Dotykačky a to v menu Sklad / Akce / Dotykačka / Export. Zde systém nejprve provede

WinFAS. 5 účto. Praktický úvod do WinFASu Prohlížení knih

Externí spolupracovníci

1. Podmínky chodu aplikace

I. JAK SI MYSLÍM, ŽE MOHU BÝT PRO TÝM PROSPĚŠNÝ:

Dotyková obrázovká v prográmu TRIFID

Audiovizuální útvar aneb co chceme točit. Projekt

7.2 Model použití (jednání) (Use Case)

Transkript:

O JEDNÉ ZÁLUDNOSTI INTERAKCE «INCLUDE» V MODELU PŘÍPADŮ UŽITÍ 2. část RNDr. Ilja Kraval, květen 2010 http://www.objects.cz ÚVOD V předešlém článku jsme nastínili problém, který vzniká v souvislosti s hledáním případů užití při zavedení interakce «include». Upozornili jsme na to, že princip fungování interakce «include» mezi případy užití v USE CASE MODELU není vůbec složitý a je v podstatě poměrně dost lehce vysvětlitelný (viz například kniha Analytické modelování IS pomocí UML v praxi ). Pokud bychom chtěli interakci «include» vysvětlit pomocí nějaké srozumitelné programovací techniky, nejlépe by se hodilo srovnání s voláním jedné funkce druhou funkcí. Ale jak ukazuje praxe a konzultace v mnoha firmách a jak prozrazují také odpovědi účastníků na testy internetového školení Kurz profesního růstu analytika od základů (distanční e-kurz), právě jednoduchost této interakce bývá nejčastějším zdrojem chyb při tvorbě USE CASE MODELU! ŘEŠENÍ PŘÍKLADŮ Z MINULÉHO ČLÁNKU V minulém článku jsme uvedli klasické modelové situace proto, abychom si snáze vysvětlili, jak a kde se vlastně hrubě chybuje. Nyní přistoupíme k řešení a vysvětlení této chyby.

strana 2 PŘÍKLAD NA PŘÍJEMKU ZBOŽÍ Cituji zadání prvního příkladu z předešlého článku: Budoucí uživatel systému v supermarketu sděluje svoje požadavky a od něj se dovíme následující story : K rampě přijíždí nákladní automobil se zbožím. Skladník má dvě možnosti: buď vezme do ruky zařízení typu PDA se čtečkou kódu, jde na korbu vozu a vytvoří příjemku zboží a to tak, že přijímá zboží snímáním čárového kódu, tj. založí hlavičku, a pak dokola provádí: sejme čárový kód, zadá počet balíků, a tak pokračuje, až vytvoří příjemku, anebo vezme do ruky papír a tužku, protože nemá PDA, a vytvoří příjemku tak, že si vše zapíše na papír a pak to zadá do systému v kanceláři. Návrh řešení: Uveďme si následující diagram jako řešení, které navrhl kolega při konzultaci ve firmě. Upozorňuji předem, že se jedná o chybné řešení. Tuto chybu nazvěme pracovně jako přílišné kouskování případů užití : strana 2

strana 3 Vytvoření příjmového dokladu pomocí PDA vytvoření hlavičky založení hlav ičky Příjemky Načtení čárov ého kódu Načtení čárov ého kódu [načíst další] [ukončit] Ukončení tv orby Příjmov ého dokladu Ukončení tv orby Příjemky Obrázek 1 Chybně vytvořený model UC Diagram vypadá sice na první pohled pěkně, avšak bohužel obsahuje hrubou chybu v modelu případů užití a je tedy špatně. Nesprávnost předešlého modelu si nejlépe uvědomíme pomocí jednoduché úvahy: Jsme v prvním kroku vyhledávání UC, tedy hledáme ty případy užití, které mají povahu spouštění z čisté vody. Tyto případy užití začínají událostí venku tak, že nejprve nikdo nic nechce, poté vznikne potřebnost použití systému a někdo (nebo něco) přistoupí k systému, stiskne tlačítko (tj. vyvolá případ užití), stroj to provede, ten venku proto dostane kýžený užitek a poté spokojen odchází a opět nikdo nic nechce. A teď se podívejme na pravou část předešlého obrázku, tj. na nalezené případy užití. Mají snad tyto nalezené případy užití tuto povahu? Nikoliv! U těchto případů užití tomu tak není, tj. neplatí, že by nejprve nikdo nic nepotřeboval, poté nastane nějaká událost venku a dotyčný venku si vybere jeden z těchto tří případů užití a jeden z nich spustí. Tyto případy užití evidentně nejsou případy užití hledané v prvním kroku! Je zřejmé, že pokud by byly případy užití na předešlém obrázku přece jen zavedeny v USE CASE MODELU, byly by includovány v jiných případech užití pouze jako součásti scénářů strana 3

strana 4 jiných případů užití. A v tom je právě záludnost interakce «include»! Tyto případy užití tam být mohou a možná i budou, ale musíme je inkludovat až ve druhém kroku vyhledávání případů užití, tedy v kroku restrukturalizace neboli refaktoringu scénářů! Jaké je tedy řešení této konkrétní chyby v předešlém modelu? Naštěstí v tomto případě je postup nápravy poměrně dost jednoduchý. Chyba vznikla tak, že autor diagramu si nevšiml hranice systému z hlediska jeho použití a dostal se popisem procesů dovnitř systému, ale bohužel v diagramu zůstal ještě venku, tedy v procesech. S nadsázkou řečeno, neuslyšel lupnutí tlačítka spuštěného případu užití a pokračoval v rozkladu procesů dále na straně mimo systém, což bylo chybou. Při vyhledávání případů užití je ta třeba dodržovat tuto hlavní zásadu: Scénář business procesu je dějeme popisovaným venku (takovýmto dějem je například přijíždí nákladní automobil... ), které vedou ke spuštění případů užití uvnitř našeho systému (například založení příjemky pomocí PDA v systému ). Pokud tedy popisujete story celého děje, doporučuji, abyste se nad každou větou zamysleli ve smyslu a je už spuštěn náš systém? Pokud ano, už jsme minuli lupnutí tlačítka systému a daný děj už tedy nepatří mezi procesy, ale má se přemístit dovnitř případu užití! Poznámka: S úsměvnou nadsázkou bychom mohli předešlé doporučení vyslovit i takto: Čtěme jednotlivé věty daného story a v každé této větě příběhu se ptejme: Ve kterém jsme Matrixu, ve venkovním (např. přijíždí nákladní auto...) anebo už v tom našem (např. skladník snímá kód zboží...)? To nám jednoznačně určí, zda jsme už v případu užití anebo ještě před ním. Z předešlých úvah vyplývá řešení: Dané procesy umístěné chybně vedle mimo systém je třeba přemístit dovnitř systému, tj. už to nebudou procesy podniku, ale přímo aktivity našeho systému, tedy chod našeho programu. Jinak řečeno daný aktivity diagram by tedy neměl být chápán jako popis vnějšího chování (tj. nespadá pod BPM), ale popisuje přímo chod našeho programu. Technicky vzato při opravě této chyby postupujeme takto: Vypněme stereotypy u procesů podniku (vzniknou tak čisté aktivity bez stereotypů) a daný diagram přemístěme z procesního modelu do oblasti popisu případů užití, tedy do Package UCM, kde je i popis UC (zde jsou scénáře případů užití a případné odpovídající aktivity diagramy těchto scénářů, tam spadá nyní ten náš). Dané story jako popisovaný proces podniku s nalezeným případem užití se tímto opravdu velmi zjednoduší, protože popis venku skončí stisknutím a lupnutím tlačítka na systému (poznámka: zatím v této chvíli neuvažujme druhou variantu založení příjemky bez PDA). strana 4

strana 5 Story zní takto: Na rampu přijíždí nákladní automobil. Skladník vezme PDA a jde zaevidovat došlé zboží, spustí se UC Vytvoření příjemky zboží pomocí PDA. Někde v diagramu nalezneme následující dvojici proces podniku plus případ užití takto: Příjezd zboží do podniku Vytv oření příjemky pomocí PDA Obrázek 2 Jednodušší a správné řešení Uvedený diagram z prvního obrázku nemusíme vyhazovat, prostě vypneme stereotypy a přemístíme jej do jiné oblasti řešení, dovnitř případu užití, tj. do popisu UC Vytvoření příjemky pomocí PDA. Poznámka: Ale i tak doporučuji sepsat také scénář daného případu užití, který musí sedět s tímto dodaným Activity diagramem! JAKÉ JSOU DŮSLEDKY CHYBY KOUSKOVÁNÍ PŘÍPADŮ UŽITÍ? Všimněme si této zajímavé skutečnosti: Odstranění této chyby spočívalo pouze v přemístění aktivit a jejich scénářů z jedné oblasti řešení (BPM) do jiné oblasti řešení (dovnitř systému, tj. dovnitř UCM). Z toho logicky plyne, že nakonec se stejně bude programovat totožný balík práce, tj. co se týče rozsahu prací, bude shodný v obou případech. Takže v čem je tedy problém této chyby? Je snad tak závažná, když nakonec jde o stejné scénáře, jenom jsou někam jinam umístěné? Odpověď zní ano, je to vážný analytický problém, protože daná chyba nadbytečného kouskování UC v prvním kroku hledání případů užití vede ke dvěma následujícím velmi nepříjemným efektům, které se bohužel promítnou do vývoje celého projektu a mnohdy dokonce vedou k pádu do vývoje typu tunel a celému kolapsu vývoje! strana 5

strana 6 1. Ztráta logiky případů užití a nepřehlednost diagramů: Díky špatnému postupu přehnaného kouskování případů užití dochází k velmi nepříjemnému jevu zbytečného rozmnožení nadbytečně tvořených případů užití v prvním kroku jejich hledání. Model se stává silně nepřehledným a co je hlavní: Jeví se jako nelogický! Najednou pro nadbytečné detaily (viz například UC Sejmutí čárového kódu ) nevidíme tu hlavní logiku případů užití, kterou musí model případu užití splňovat. Touto logikou je odpověď na základní otázku USE CASE MODELU: K čemu potřebujeme systém? To je totiž hlavní otázka modelu případů užití! Zde v tomto Story o příjezdu kamionu zní požadavek na užití systému takto: Je třeba v systému založit novou příjemku zboží a tím zaevidovat došlé zboží a nikoliv při příjezdu kamionu je třeba sejmout čárový kód. To druhé je pouze jeden krok v onom hlavním a primárním užitku systému a sekundární UC je pouze inkludován v primárním UC jako jeho část. Všimněme si jednoho zdánlivého paradoxu, který činí tuto chybu velmi záludnou: Předešlý chybný diagram na obrázku Obrázek 1 Chybně vytvořený model UC vypadá na první pohled rozumně: Vždyť přece takovou posloupnost kroků zde vidíme a neříkejte mi, že tam není třebas sejmutí čárového kódu! Ano, tato posloupnost kroků je sice správně, ale musí se umístit jinam! Problémem je, že celý systém popsaný mechanismem kouskování, tedy takovýmito rádoby správnými diagramy, ztrácí logiku a proto je i velmi nepřehledný! 2. Situace uvedená v předešlém bodě vede k dalšímu nepříjemnému a vážnému důsledku v projektu: Zmíněný chybný postup totiž zabraňuje jednomu z hlavních poslání tvorby modelu případů užití a tím je nutné vymezení hranice řešení. Tato chyba zamezuje a dokonce mnohdy znemožňuje inventarizaci toho, co vše se bude programovat! Kouskování brání sumární kontrole případů užití jako celku: Najednou vidíme spoustu drobečků, které se jeví jako správné, ale nikdo není schopen určit, jak celistvé a jak úplné je řešení této obrovské haldy drobků! Odpovědět na otázku a nechybí tam něco? je takřka neřešitelný problém! Například z chybného diagramu víme, že budeme zakládat hlavičku příjemky, že budeme snímat kód, že budeme ukončovat příjemku a další tisíce takovýchto malých UC drobků, ale kde máme jistotu, že jsou to opravdu všechny případy užití našeho systému? Ztráta logiky modelu případů užití jejich kouskováním nakonec vede k nejčastější chybě neuřízeného projektu díky efektu bobtnání projektu v průběhu jeho realizace. Dochází tak k návratu do tvorby IS pomocí tunelu: Teprve v rámci programování se začíná zjišťovat, co vše chybí a co se bude ještě programovat a projekt začíná v realizaci bobtnat. A přitom jedním z hlavních poslání tvorby USE CASE MODELU je právě zabránit tomuto opravdu hnusnému efektu, kdy čím více se toho naprogramuje, tím více další práce přibude. Pro inventuru případů užití a tedy rozsahu projektu jsou paradoxně nejdůležitější právě ony události venku, které vedou ke spouštění případů užití a tato možnost inventury se rozsekáním totálně ztrácí. strana 6

strana 7 Všimněme si, jak by se opravdu velmi jednoduše (oproti prvnímu diagramu) nakonec určila další logika chodu procesů a dalšího zpracování, pokud ovšem případy užití nerozbijeme chybou podle prvního obrázku: Například z rozhovorů s konzultantem kromě prvního kroku vytvoření příjemky zboží zjistíme, že v dalších krocích procesů lze doklad ještě doopravit v kanceláři, lze jej uzavřít atd. Velmi zjednodušený chod procesů a k nim případů užití (jako příklad) by mohl vypadat takto: Příjezd zboží Vytvoření příjemky Úpravy příjemky Úprava příjemky Ukončení příjemky Ukončení příjemky Obrázek 3 Zjednodušený chod procesů jako příklad Je třeba ještě pro úplnost připomenout jednu velmi důležitou skutečnost: Všechny zde vyjmenované případy užití začínají z čisté vody, a to jak Úprava příjemky jakož i Ukončení příjemky (u Vytvoření příjemky je to vcelku logické). Proto tedy případy užití Úprava příjemky a Ukončení příjemky začínají shodným scénářem výběru příjemky ze seznamu, avšak na předešlém diagramu není úmyslně tento výběr namalován jako include (i když existuje). Tuto interakci a vložení výběru nalezneme v jiném diagramu bokem, je to totiž sekundární inkludovaný UC a sem do výčtu mezi primary UC nepatří! V technologickém návrhu obrazovek by tato interakce include byla na 99% řešena jednou obrazovkou, která by realizovala oba UC: Společně na jedné obrazovce by byl umístěn zmíněný výběr příjemky s možnými úpravami detailu u vybraného prvku. Shrnutí této části článku Velmi často vyskytující se chybou při návrhu USE CASE MODELU je chyba přílišného kouskování případů užití, klasickým příkladem je Obrázek 1 Chybně vytvořený model UC. strana 7

strana 8 Tato chyba vzniká nerozlišením rozdílu případů užití z čisté vody tj. primary UC, které vznikají spuštěním přímo z procesu a secondary UC, které vznikají interakcí «include» vytknutím. Odstranění této chyby spočívá v přesné identifikaci primary UC, následně k jejich popisu a teprve poté k vytknutí secondary UC pomocí interakce «include». Neodstranění této chyby vede k přemnožení UC a tím k ztrátě logiky chodu procesů a k opětovnému pádu vývoje projektu do anti-metodiky tunel, protože díky této chybě nelze provést relevantní logickou kontrolu úplnosti řešení pomocí USE CASE MODELU. Příště se dočtete: Popíšeme si názorný příklad na chybu kouskování případů užití, kdy při překlápění systému z jedné technologie do druhé se analytici snažili vycházet pro tvorbu UC modelu z již existujících obrazovek resp. se je snažili rovnou navrhovat. Vysvětlíme si, k jakým nedostatkům může tato chyba kouskování případů užití při úvahách nad obrazovkami nakonec vést. Dále si uvedeme řešení ostatních příkladů z minulé části článku a upozorníme na možnou chybu, která souvisí se záludností existence inkludovaných případů užití. Poznámka nakonec: Není bez zajímavosti, že uvedená chyba kouskování UC při vyhledávání případů užití je poměrně dost častá. Například v e-learningovém kurzu Kurz profesního růstu analytika od základů (distanční e-kurz) je několik praktických příkladů věnováno právě situacím, kde se tato chyba často vyskytuje. Zajímavé je, že statisticky vzato v těchto příkladech chybuje cca asi 50% -70% účastníků kurzu. Avšak následné vysvětlení uvedené chyby na příkladech školení vede nakonec u účastníků ke správnému pochopení základního principu fungování případů užití, takže poté již 100% účastníků nakonec vyřeší tyto příklady z praxe správně a bez chyb. Kurz profesního růstu analytika od základů (distanční e-kurz) startuje již od 1.8.2010! Nyní cenově výhodněji pro jednotlivce Výrazná sleva pro rychle přihlášené Blíže viz zde Pokračování příště strana 8