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



Podobné dokumenty
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í

Úvod do objektově orientovaného programování s použitím jazyka C# pro střední školy

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

Matice se v některých publikacích uvádějí v hranatých závorkách, v jiných v kulatých závorkách. My se budeme držet zápisu s kulatými závorkami.

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

StatSoft Odkud tak asi je?

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

Další servery s elektronickým obsahem

Kontrola pravopisných chyb. Kontrola pravopisu Kontrola gramatiky Nastavení jazyka dokumentu Tezaurus Překlad textu

MANUÁL MOBILNÍ APLIKACE GOLEM PRO OPERAČNÍ SYSTÉM ANDROID 4.X A VYŠŠÍ

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

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

Evropský zemědělský fond pro rozvoj venkova: Evropa investuje do venkovských oblastí IZR. Vedení evidence léčení a evidence léků. Podklady pro školení

S poděkováním za Váš čas. Doc. RNDr. Markéta Martínková, Ph.D. proděkanka RNDr. Jana Rubešová, Ph.D. správce SIS

Uživatelská příručka

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

Na základě Business Targets autora Simona Greenalla, vydaných nakladatelstvím Macmillan Heinemann English Language Teaching (Oxford).

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

ŘEŠENÍ MULTIPLIKATIVNÍCH ROVNIC V KONEČNÉ ARITMETICKÉ STRUKTUŘE

Použití databází. Mnoho postupů, které si ukážeme pro prací s formulářů využijeme i při návrhu tiskových sestav.

ČAS PROMĚN. Záměr: Anotace: Cíle: Cílová skupina: Počet účastníků: Místo:

Úloha 1A (5 bodů): vyhovuje Úloha 2A (6 bodů): Obrázek 1 Přelévání mléka

Josef Pecinovský PowerPoint 2007

Testování mobilního telefonu Apple iphone 4

Miroslav Adamec, ARAS: JUDr. Jiří Srstka, DILIA:

Založení nového účetního roku a legislativní změny od (Zákon 362/2009 Sb.)

Právní rozbor návrhu obecně závazné vyhlášky

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

Knihomol. Manuál pro verzi 1.2

ČAS PROMĚN. Záměr: Anotace: Cíle: Cílová skupina: Počet účastníků: Místo:

[ESET SMART SECURITY 7]

Word podrobný průvodce. Tomáš Šimek

ewrc.cz Čtenářská fotosoutěž - poradna II. Autor: Libor Jungvirt, :00

Zásoby_Evidenční výroba Návod pro uživatele +1367

Dělá radnice dost pro čistší životní prostředí?

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

Intervalové stromy. Představme si, že máme posloupnost celých čísel p 0, p 1,... p N 1, se kterou budeme. 1. Změna jednoho čísla v posloupnosti.

Testování zařízení Emtec D850h Movie Cube. České vysoké učení technické v Praze Fakulta elektrotechnická

- příkaz pohybující želvou zpět a o kolik. vlevo 45 vl 45 libovolně zadáme) směrem doleva. Na obrázku jsme pro

Mobilní telefon s funkcí určení polohy a možností vzdálené správy a ovládání.

Analýza rozptylu dvojného třídění

Program je určen pro děti se specifickými poruchami učení.

Marek Laurenčík. Excel. práce s databázemi a kontingenčními tabulkami

Kolekce ArrayList. Deklarace proměnných. Import. Vytvoření prázdné kolekce. napsal Pajclín

sssssssssssssssssssssssssssssssssssssssssssssssssss UŽIVATELSKÁ PŘÍRUČKA ELEKTRONICKÁ PODATELNA - WEBOVÁ ČÁST APLIKACE Verze distribuce:

2.1.9 Zrcadlo III. Předpoklady: Pomůcky: zrcátka (každý žák si přinese z domova),

Zdravé klima ve škole komunikační situace a jejich aspekty

Přenos daňové povinnosti (PDP) v Deníku a Skladu Profi

Manuál, jak pracovat s tenkým klientem

Laboratorní zdroj - 6. část

Rozdílová dokumentace k ovládání IS KARAT.net

JčU - Cvičení z matematiky pro zemědělské obory (doc. RNDr. Nýdl, CSc & spol.) Minitest MT1

Testování zařízení Sony Ericsson Live View MN 800

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

ISSOM Problematické značky. Otázky, návrhy či doporučení, jak sjednotit pojetí map v ČR

WinFAS. 1 zásoby. Praktický úvod do WinFASu Pořízení v zásobách

EmoTrance slabikář (Dr. Silvia Hartmann, tvůrkyně metody EmoTrance)

Volby a Referenda ALIS spol. s r.o.

Dokumentace. k projektu Czech POINT. Konverze dokumentů z elektronické do listinné podoby (z moci úřední) Provozní řád

SEZNÁMENÍ S PROGRAMEM

Metodická příručka pro učitele. InspIS SET modul školní testování

Jak začít s ed MARKETEM

Nápověda pro systém itesting.cz

ČESKÝ STŘELECKÝ SVAZ. Příručka pro rozhodčí na střelišti. pistolové disciplíny

Word 2007 Word 2007 egon. Spuštění, vzhled, zobrazení dokumentu

Kombinatorický předpis

Manuál k aplikaci WANAS

Ukázka knihy z internetového knihkupectví

Práce s aplikací pro zpracování statistických výkonových výkazů

UZ modul VVISION poslední změna

Účtování pojišťoven z Praktika

Návod na práci s redakčním systémem webu VPŠ a SPŠ MV v Praze

IVA ŽLÁBKOVÁ, LUBOŠ KRNINSKÝ

Google Apps. dokumenty 5. verze 2012

Náležitosti protokolů z měření hluku

Helios RED a Internetový obchod

Rámcový manuál pro práci s programem TopoL pro Windows

Návod k obsluze zařízení

ALFIS 2014 komplexní ekonomický systém verze

WiFiS Uživatelská příručka Obsah

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

8. Geometrie vrací úder (sepsal Pavel Klavík)

multimatic 700 Návod k obsluze Návod k obsluze Pro provozovatele VRC 700 Vydavatel/Výrobce Vaillant GmbH

Konstrukce voltmetru a ampérmetru

10. Editor databází dotazy a relace

Legislativní pravidla vlády (dále jen LPV ) schválená usnesením vlády ze dne 19. března 1998 č. 188, ve znění

Když už má vykopané cesty, může postavit domyr opět přesně podle obrázku. Domy se objeví najednou. Program opět čeká.

Office podrobný průvodce. Tomáš Šimek

Spokojenost zákazníků

PORAĎ SI SE ŠKOLOU Lucie Michálková

DODATEČNÉ INFORMACE K ZADÁVACÍ DOKUMENTACI Č. 4

UŽIVATELSKÁ PŘÍRUČKA PRO IZR NA PORTÁLU FARMÁŘE - HLÁŠENÍ POHYBŮ A OBJEDNÁVKY UZ

dokumentu, respektive oddílu (více o oddílech v další kapitole). Nemůžeme

POKYNY K BAKALÁŘSKÉ PRÁCI (BP)

Podrobný postup stažení, vyplnění a odeslání elektronické žádosti

V této kapitole se naučíte základnímu ovládání programu ZoomText, totiž:

Popis klinického případu práce s od narození nevidomým klientem K.K. Kortokov, T.Karovina International Society of Intuitive Information Sight

Transkript:

Čtvrtá část odpovědi aneb jak je to vlastně s interakcí <<include>> autor RNDr. Ilja Kraval leden 2008 www.objects.cz Úvod Tento článek navazuje jako pokračování na články předešlé. Minule jsme si zde uvedli, že na hádanku z první části článku odpovědělo opravdu překvapivě hodně čtenářů. Také jsme si důkladně rozebrali první odpovědi. Dnes si uvedeme správné řešení. Jenom připomenu, že jsme se ptali, kde je chyba v této větě:...například ihned po ukončení UseCase Založit žádost následuje vždy UseCase Vytisknout žádost, jehož obsah ale nemůže být součástí UseCase Založit žádost, protože tisk žádosti se provádí nejen po jejím založení ale i v jiných dalších případech a tak je existence samostatného UseCase pro popis tisku žádosti zcela oprávněná... Strana 1

Správná a výstižná odpověď Některé z odpovědí uvedené minule se sice snažily popsat chybu, ale nebyly úplně přesné anebo se soustředily až na důsledky této chyby. Uvedeme si nyní dobré řešení zaslané čtenářem. Považuji tuto formulací za nejvýstižnější. Poté si vysvětlíme podstatu tohoto problému. Odpověď kolegy zní takto: --- Dobrý den, k hádance: Domnívám se, že UC Vytisknout žádost se nespouští až po skončení UC Založit žádost, ale v jeho rámci. Posledním krokem UC Založit žádost má být include UC Vytisknout žádost, a teprve po provedení tohoto kroku je žádost založena. Je možné, že v UC diagramu bude spousta čar, ale je to tak správně. Osobně dávám přednost specifikaci UC ve formě textového dokumentu, pokud si mohu vybrat. S pozdravem, J. D. --- Tato formulace je velmi přesná a nyní si ji vysvětlíme podrobněji. Jak funguje vztah <<include>> Představme si, že píšeme scénář k nějakému případu užití, nazvěme tento případ užití například jako A. Spokojeně dokončíme práci s tímto prvkem modelu, scénář je hotov a vypadá dobře. O chvíli následuje zpracování dalšího případu užití, nazvěme jej například jako případ užití B. Najednou při tvorbě scénáře nového případu užití B dostaneme velmi silný pocit dejavu: Toto jsme už jednou někde psali! A opravdu zjistíme, že celá jedna část textu se opakuje, jak ve scénáři případu užití A, tak ve scénáři případu užití B. Samozřejmě, tohoto si můžeme všimnout pouze v případě, že dodržujeme pravidla pro psaní scénářů případů užití, jako je například zákaz používání synonym (tj. jeden pojem ve scénářích musí být vždy vyjádřen pouze stejným slovem), používáme ustálená slovní spojení (tj. vzory scénářů). Pokud totiž tato pravidla nedodržujeme, shody si nemusíme všimnout, protože stejná pasáž bude popsána pokaždé jinými slovy. Poznámka: O pravidlech psaní scénářů v USE CASE DIAGRAMECH viz například školení pro jednotlivce http://www.objects.cz/pobyt/pobytovaskolauml.html anebo školení firemní http://www.objects.cz/inhouse/skoleniucm.html Strana 2

Tuto situaci si můžeme znázornit ilustračním obrázkem takto: A B scénář A scénář B obrázek 1 ve scénáři A a scénáři B se objevuje stejná část textu Jako příklad takovéhoto opakující se části scénáře můžeme uvést následující ukázku textu:... Obsluze se zobrazí seznam fyzických osob (rodné číslo, jméno, příjmení), obsluha vybere fyzickou osobu.... Takovýto výběr fyzické osoby se ve scénářích opravdu často opakuje... Pro ty z vás, kteří znají základní princip objektového přístupu při modelování, je situace na obrázku velmi povědomá! Je to situace stav před vytknutím u principu opětovné použitelnosti resp. objektového paradigmatu. Objektový princip modelování žádá zavést interakci mezi prvky modelu a tím se zamezí opakování částí prvků, tedy laicky řečeno, ono zelené se principem objektového paradigmatu žádá vytknout mimo oba prvky a mělo by se opětovně použít z obou prvků. V tomto našem případě se použije pro toto vytnutí interakce <<include>>. Autor modelu je nyní povinen provést tyto kroky (zdůrazňuji slůvko povinen!): Strana 3

1. Zavede třetí prvek případu užití, nazve jej například případ užití C, a do něj umístí text scénáře opakující se v obou případech užití (například přenese text přes schránku clipboard) 2. Zavede v diagramu interakci <<include>> takto: A «include» «include» C B obrázek 2 Vytknutí společného scénáře do třetího prvku případu užití 3. V místech textů, kde se původně opakující text vyskytoval, tento opakující se text smaže. Místo něj umístí formulaci odkazu, například takto:...a dále se provede případ užití C... Ideální je, pokud pro tuto operaci odkazování využije nástroj EA Object Editor (viz podrobněji na straně http://www.objects.cz/eaoe/eaoe.html ). Tento nástroj totiž drží konzistentně odkaz v textu i při změně názvu případu užití C na jiný název. Pro jednoduché vysvětlení předešlého postupu si můžeme uvést paralelu jednoduchého vytknutí opakujícího se kusiska kódu ve volání funkcí (resp. metod objektu). Vytknutí opakujícího se kódu do funkce funguje úplně stejně, jenom namísto interakce <<include>> je použita interakce zavolání funkce. Jinak řečeno, jak vytknutí opakujícího se kódu, tak vytknutí stejných částí textů scénáře jsou konkrétními realizacemi obecnějšího postupu objektového paradigmatu a opětovné použitelnosti. Ještě je třeba podotknout, že v předešlém případě, kdy se části textů opakovaly, je povinností autora modelu zavést tuto interakci vytknutím, protože části scénářů by se neměly v analytickém USE CASE modelu opakovat. Dá se říci, že interakce <<include>> je zavedena primárně za účelem zamezení tohoto zdvojení. Avšak je povoleno použít interakci <<include>> také v případě, kdy se nejedná o situaci žádající zavést opětovnou použitelnost. Autor se prostě rozhodne část scénáře vytknout pouze z kosmetických důvodů. Například scénář je příliš dlouhý a autor zváží, že je lepší některé jeho části zavolat přes <<include>> kvůli přehlednosti Strana 4

celkového scénáře. Tento postup je také znám u psaní funkcí: Někdy se příliš dlouhé funkce prostě rozsekají na menší funkce a ty se zavolají z hlavní funkce, i když tyto menší nikdy nebudou volány odnikud jinud, než z toho místa, odkud byly vytknuty. Někdy zase autor modelu chce pouze to, aby se určitá část scénáře identifikovala v diagramu a byla vidět jako prvek diagramu, tedy jako případ užití. Pokud autor vytkne případ užití z takovýchto důvodů, tak můžeme vidět například diagram v této podobě: X «include» Y obrázek 3 Include kosmetické a ať hledáme, jak hledáme, nemůžeme nikde najít, že by ještě jiný prvek nežli X měl také <<include>> na prvek Y. Jinak řečeno, prvek Y byl vytknut ven, ale nikoliv proto, aby si na něj mohl jiný prvek typu USE CASE ukázat, ale buď proto, že scénář X je velmi dlouhý anebo že chceme, aby prvek Y byl vidět na diagramu jako samostatný prvek se svým názvem. Důležité je, že ať už vytkneme prvek případu užití z důvodu opětovné použitelnosti, anebo z kosmetických důvodů, platí základní důsledek objektového paradigmatu, a ten je právě předmětem našeho dotazu. Objektové paradigma v modelování Podívejme se na následující obrázek Strana 5

A «include» C obrázek 4 Obrázek k dotazu a zkusme odpovědět na tuto otázku: Pokud budeme chtít zkontrolovat celý scénář případu užití A, tak, jak vyplývá z postupu vytknutí, v určitém místě narazíme na odkaz na volání případu užití C (...a dále se provede případ užití C...). V tomto místě by měl ten, kdo kontroluje opravdu celý scénář, odskočit do scénáře případu užití C a přečíst celý scénář C (úplně stejně, jako když se krokuje funkce step into ), a až skončí se scénářem případu užití C, měl by se vrátit těsně za bod odskoku a dočíst scénář případu užití A. A teď následuje otázka (kterou účastníci našeho školení znají dobře): Ten, kdo kontroluje scénář A, si musí přečíst i scénář C, pokud chce míst jistotu, že vše sedí. Otázka tedy zní takto: Když řeknu případ užití A, mám na mysli případ užití A nebo A plus C? První odpověď, která nás napadne, je že určitě musím mít na mysli A + C, protože přece samotné A bez C nemá smysl! No to je sice pravda, ale představme si, že někdo cizí se zdravým selským rozumem vejde do místnosti a my se zeptáme: Když řeknu A, mám na mysli A nebo A+C? Asi tušíme, co nám odpoví a jak se u toho bude usmívat. Kde je problém? Začínáme si odporovat: Přece samo A je samo A (to zní až pravdivě hloupě!), ale na straně druhé přece scénář celého případu užití A je chápán jako celý scénář A+C, který musíme číst opravdu celý! Odpověď je skryta v obecném principu objektového paradigmatu v modelování a zní: Při modelování je každý pohled na prvek v libovolném diagramu vždy relativní! Relativnost je synonymum pro slovní spojení: Záleží na úhlu pohledu a proto jsou platné obě odpovědi! Neexistuje totiž absolutní pohled na prvek v modelu. Buď se díváme na prvek zvně a vidíme jeho služby. Například v našem příklad někdo zvně vidí případ užití A jako knoflík poskytující jedno užití svým stiskem knoflíku. To je vnější pohled. Když někdo stiskne tento knoflík, dostane službu tohoto prvku a to bez hledu na to, zda je prvek C vytknut anebo nikoliv. Vnější pohled je pohled na službu resp.služby prvku a je to proto pohled sumarizující: Hovoříme o A jako celku Strana 6

z pohledu služby, tedy nutně musí proběhnout opravdu vše za touto službou, ať je to uvnitř jakkoliv uspořádané. Existuje však v relativnosti pohledu druhý pohled, a to je vnitřní pohled, tedy jak je tato služba implementována, jak je zavedena vnitřně. A tam vidíme, že A obsahuje v interakci <<include>> prvek C a tedy prvek A použije jeho službu stisknutím jeho knoflíku. Nikdy nemůžeme stát venku i uvnitř současně a proto na otázku, jak vidíme A, zda A nebo A+C, dostaneme opravdu šalamounskou odpověď: Záleží na úhlu pohledu. Bavíme se o knoflíku A viděném zvenku anebo o A za hranicí tohoto knoflíku, tedy jak je vnitřně A strukturováno a jak je složeno? Kolega ve své odpovědi se tomuto jasnému, ale složitému vysvětlení vyhnul velmi elegantně slovy:...domnívám se, že UC Vytisknout žádost se nespouští až po skončení UC Založit žádost, ale v jeho rámci... Tímto vyjádřil onu skutečnost, že případ užití Založit žádost je viděn zvenku jako jeden případ užití (tj. zvenku nejsou dva po sobě jdoucí případy užití... ). Slovíčko v jeho rámci je synonymum pro vnitřní scénář. Je zřejmé, že chyby tohoto druhu vznikají právě nepochopením objektového paradigmatu, tj. jak funguje vnější a vnitřní pohled na prvky. Když se totiž podíváme na předešlý obrázek 4, tak nám může připadat jako podivná otázka: Kolik případů užití je na obrázku vidět? Odpověď: Samozřejmě, že dva! Ale pozor, věc není až tak jednoduchá. Doplňme obrázek ještě o prvek typu ACTOR takto: A Obsluha «include» C Strana 7

a zeptejme se trochu jinak: Kolik případů užití systému na tomto obrázku vidí sama Obsluha? Odpověď: Vidí jeden, a to případ užití A. Na tento rozdílný pohled zvně (obsluha vidí jeden) a zevnitř (služba je uvnitř složena pomocí dvou prvků A + C) si musí autor modelu zvyknout, jinak dojde k protimluvům a chybným závěrům... Podobná řešení Zmínil bych se ještě o odpovědích čtenářů, které se sice lišily, ale byly podobné předešlému řešení. Vyberu z nich jednu charakteristickou odpověď:... Oba UC zmíněné v zadání (Založit žádost, Vytisknout žádost) by měly být na sobě nezávislé a být součástí třetího UC např. Přidat žádost. V rámci něho je definovaná posloupnost jejich provádění, tj. napřed Založit žádost, pak Vytisknout žádost. Kromě toho alternativní scénář - jestliže se první UC úspěšně nedokončí, druhý se neprovádí. Oba UC (Založit žádost, Vytisknout žádost) je možné vyvolat i samostatně nebo z jiných UC. UC Vytisknout žádost může být proveden pouze nad žádostí, která je založená. S pozdravem P.L. I když to tak na první pohled nevypadá, toto řešení je v podstatě takřka shodné, jako předešlé řešení, jen s tím rozdílem, že se autor rozhodl nazvat případy užití jinak: Přidat žádost na tomto obrázku je vlastně onen sumární případ užití z předešlého řešení, kde se nazýval Založit žádost. Tady se oproti tomu jako Založit žádost nazývá ta část scénáře, která předchází tisku. Oba scénáře vyjdou nakonec nastejno, jenom názvy případů užití jsou jiné: Strana 8

První varianta návrhu vypadá potom schematicky ve scénářích takto: UC Založit žádost Scénář: Udělá se toto, potom toto atd. Pokud OK, dále se provede tisk žádosti viz UC Tisk žádosti Druhá varianta návrhu (jiný model než předešlý!) má následující podobu: UC Přidat žádost Scénář: Provede se založení viz UC Založit žádost Pokud OK, dále se provede tisk viz UC Tisk žádosti UC Založit žádost Scénář: Udělá se toto, potom toto atd. Všimněte si, že pokud pomineme jiné názvy případů užití, tak tyto dva scénáře se liší pouze tím, že je buď vytknuta nebo není vytknuta tato část scénáře: Udělá se toto, potom toto atd. Závěr Díky objektovému paradigmatu můžeme paradoxně při pohledu zvně vidět dva prvky na diagramu jako jeden použitelný zvně (tj. zde případy užití), pokud spolu interagují. Je to velmi podobné, jako při volání funkcí: Funkce F1 volá funkci F2, ale já vidím a volám pouze hlavičku F1, protože F2 je skryta. Vnější pohled tedy implikuje i nutné vyvolání toho, co se děje uvnitř F1, aniž bychom zvně viděli, jak k tomu dojde. Jinak řečeno zvenku vidíme jedno celé F1, ale vnitřní struktura je F1 plus F2. Podobně v předešlém dotazu chyba spočívá v tom, že ve vnějším pohledu je vidět pouze jeden případ užití, ať už ho nazveme Založit žádost podle první varianty Strana 9

anebo Přidat žádost podle druhé varianty. Teprve v rámci něj se spustí druhý případ užití Tisk žádosti. Nakonec ještě drobná poznámka k jedné větě odpovědi z první varianty, kde kolega píše:...osobně dávám přednost specifikaci UC ve formě textového dokumentu, pokud si mohu vybrat... Co se týče mne, dávám přednost kombinaci obou dvou, což umožňuje zmíněný produkt EA Object Editor (viz http://www.objects.cz/eaoe/eaoe.html). konec článku Strana 10