\

Školení Návrhové vzory, OOP a UML


 Thursday, April 27, 2006
Řešení hádanky z 18-.4. - vztahy Include, Extend v případech užití

Protože kolegové v diskuzi pod původním spotem podrobně rozebrali všechny aspekty vztahu Include a Extend v případech užití,  je tento můj spot z větší části sumarizující. V čem tedy byl "chyták"? Cílem hádanky bylo upozornit na to, že vztahy Include a Extend nemusejí být tak jednoduše rozpoznatelné, jak se dočtete v různých rychlopříručkách,  a také jsem chtěl, abyste si všimli, že vztah Extend bylo bylo příjemné zpřesnit tím, co sám pro sebe nazývám "anonymní datové sloty".

Tak toto byl začátek dvoustránkového spotu, který se mi podařilo omylem smazat. :-( Protože už se mi nechce teď psát celý spot znovu, tak jen v krátkosti zrekapituluji, čeho se hádanka týkala.

Specifikace UML popisuje vztahy Include a Extend takto:

"Include is a directed relationship between two use cases, implying that the behavior of the included use case is inserted into the behavior of the including use case. The including use case may only depend on the result (value) of the included use case. This value is obtained as a result of the execution of the included use case."

"This relationship specifies that the behavior of a use case may be extended by the behavior of another (usually supplementary) use case. The extension takes place at one or more specific extension points defined in the extended use case. Note, however, that the extended use case is defined independently of the extending use case and is meaningful independently of the extending use case. On the other hand, the extending use case typically defines behavior that may not necessarily be meaningful by itself. Instead, the extending use case defines a set of modular behavior increments that augment an execution of the extended use case under specific conditions. Note that the same extending use case can extend more than one use case. Furthermore, an extending use case may itself be extended."

 

V hádance nemohl být vztah mezi případem užití 'Založení objednávky' a 'Platba kartou' Include ani Extend. Include nelze použít, protože máme i jiné typy plateb, a případ užití Platbu kartou tedy nelze vložit povinně (dalším typem platby bude třeba dobírka - žádné záludnosti ohledně plateb jsem přichystány neměl, jen jsem chtěl, abyste se jako správní analytici pídili po podrobném zadání :-) ). Nejedná se ale ani o vztah Extend, protože rozšířený případ užití nijak nezávisí na rozšiřujícím případu užití a nemůže číst žádné jeho "návratové hodnoty"  - pro nás to znamená, že nezjistíme, jestli platba prošla.

Řešením je vytvoření nového abstraktního případu užití nazvaného třeba 'Kontrola platby', který přes vazbu Include provážeme s případem užití 'Založení objednávky' . Konkrétními potomky budou "Kontrola platby kartou", "Kontrola ostatních typů plateb". Vazba Include nám dovoluje číst návratovou hodnotu vloženého případu užití. V alternativním toku událostí případu užití  'Založení objednávky' podle vybraného typu platby vložíme konkrétní případ užití a dle výsledku vkládaného případu užití dokončíme hlavní tok událostí. Když neprojde platba kartou, můžeme zákazníkovi nabídnout výběr jiného typu platby.

Hlavně ale platí - celá hádanka i její řešení je jen hříčka bez užitku pro zákazníka, která demostruje, jak lze i méně časté vztahy řešit běžnými výrazovými prostředky jazyka UML. Stále platí, že vazby Include, Extend ani gen-spec zákazníkovi raději moc neukazujte, jestliže  nechcete zbytečně trávit čas vysvětlováním vztahů, které jsou pro projekt málo podstatné a pro zákazníka samotného většinou jen iritující.



Thursday, April 27, 2006 6:25:16 PM (Central Europe Standard Time, UTC+01:00)       
Comments [13]  Programátorské hádanky | UML


Thursday, April 27, 2006 11:30:07 PM (Central Europe Standard Time, UTC+01:00)
Sám sebe jsem se musel zeptat, jestli někdy nejsem tlačítku Delete tak trochu vděčný :)

Díky za shrnutí!
Friday, April 28, 2006 8:45:49 AM (Central Europe Standard Time, UTC+01:00)
:) No to je docela cerny humor Borku, ja jsem byl z vymazani vseho napsaneho docela skleslej. No alespon nekoho i tahle nehoda potesila :D
Friday, April 28, 2006 9:49:42 AM (Central Europe Standard Time, UTC+01:00)
Chapu, taky jsem psavec a vím, jak se autor po "neštěstí" cítí. Máte můj obdiv, že jste článek vůbec publikoval. Ale život má vždycky dvě stránky :)
Wednesday, May 03, 2006 5:07:08 PM (Central Europe Standard Time, UTC+01:00)
no, takže je to to řešení, které jsem navrhoval již v prvním komentáři k hádance, nebo není ? :-)
Wednesday, May 03, 2006 5:26:10 PM (Central Europe Standard Time, UTC+01:00)
Pavus: To reseni bylo spravne, gratuluju k dobre,mu pocitu, ktery je Vasi jedinou, ale zato zaslouzenou vyhrou :)
Tuesday, May 09, 2006 11:36:12 AM (Central Europe Standard Time, UTC+01:00)
ach jo, a já čekal, čekmu se přiučím, a ono nic :-)
Saturday, January 20, 2007 9:50:14 PM (Central Europe Standard Time, UTC+01:00)
[URL=http://xhrvtdco.com]kpvmdufj[/URL] kbshhfje http://tbxmiuoh.com okiswxuy soyuvjuu <a href="http://hucjkqvx.com">odajshfk</a>
Wednesday, January 24, 2007 5:57:52 PM (Central Europe Standard Time, UTC+01:00)
mhxhudxr http://tungyfdv.com dunktged xczyjked <a href="http://wsdubwwh.com">qsockicu</a> [URL=http://ikeqqeub.com]ucmmcnyq[/URL]
Friday, January 26, 2007 4:39:06 AM (Central Europe Standard Time, UTC+01:00)
I used to think that the brain was the most wonderful organ in my body. Then I realized who was telling me this.
Friday, January 26, 2007 8:23:11 AM (Central Europe Standard Time, UTC+01:00)
You can't have a light without a dark to stick it in.
Friday, January 26, 2007 12:43:25 PM (Central Europe Standard Time, UTC+01:00)
Under democracy one party always devotes its chief energies to trying to prove that the other party is unfit to rule - and both commonly succeed, and are right.
Friday, January 26, 2007 12:44:11 PM (Central Europe Standard Time, UTC+01:00)
Poets have been mysteriously silent on the subject of cheese.
Friday, January 26, 2007 4:02:07 PM (Central Europe Standard Time, UTC+01:00)
There are sadistic scientists who hurry to hunt down errors instead of establishing the truth.
Comments are closed.