Aký je rozdiel medzi include
a extend
v use case diagram?
Rozšírenie sa používa, keď prípad použitia pridáva kroky k inému prípadu použitia prvej triedy.
Predstavte si napríklad, že "Výber hotovosti" je prípad použitia bankomatu (ATM). "Assess Fee" by rozšíril Withdraw Cash a opísal by podmienený "bod rozšírenia", ktorý sa inštanciuje, keď používateľ bankomatu nebankuje vo vlastnej inštitúcii. Všimnite si, že základný prípad použitia "Withdraw Cash" je samostatný, bez rozšírenia.
Include sa používa na vyčlenenie fragmentov prípadov použitia, ktoré sú duplikované vo viacerých prípadoch použitia. Zahrnutý prípad použitia nemôže stáť samostatne a pôvodný prípad použitia nie je bez zahrnutého úplný. Tento postup by sa mal používať striedmo a len v prípadoch, keď je duplicita významná a existuje skôr zámerne (než náhodne).
Napríklad tok udalostí, ktorý sa vyskytuje na začiatku každého prípadu použitia bankomatu (keď používateľ vloží svoju bankomatovú kartu, zadá svoj PIN a zobrazí sa mu hlavné menu), by bol dobrým kandidátom na zahrnutie.
Môže to byť sporné, ale "zahŕňa vždy a rozširuje niekedy" je veľmi rozšírená mylná predstava, ktorá sa v súčasnosti takmer ujala ako de facto význam. Tu je správny prístup (podľa môjho názoru a overený podľa Jacobsona, Fowlera, Larmena a 10 ďalších odkazov).
Kľúčom k Include and extend use case relationships (Zahrnúť a rozšíriť vzťahy prípadov použitia) je uvedomiť si, že spoločne so zvyškom UML je bodkovaná šípka medzi prípadmi použitia vzťah závislosti. Na označenie rolí prípadov použitia budem používať pojmy "základný", "zahrnutý" a "rozširujúci".
Základný prípad použitia je závislý od zahrnutých prípadov použitia; bez neho/nich je základný prípad použitia neúplný, pretože zahrnuté prípady použitia predstavujú čiastkové sekvencie interakcie, ktoré sa môžu vyskytnúť vždy ALEBO niekedy. (To je v rozpore s populárnou mylnou predstavou o tom, že to, čo váš prípad použitia naznačuje, sa vždy deje v hlavnom scenári a niekedy sa deje v alternatívnych tokoch, jednoducho závisí od toho, čo si vyberiete ako hlavný scenár; prípady použitia sa dajú ľahko reštrukturalizovať tak, aby predstavovali iný tok ako hlavný scenár, a nemalo by to mať význam).
V najlepšej praxi jednosmernej závislosti základný prípad použitia vie o zahrnutom prípade použitia (a odkazuje naň), ale zahrnutý prípad použitia by nemal "vedieť" o základnom prípade použitia. Preto môžu byť zahrnuté prípady použitia: a) základnými prípadmi použitia samostatne a b) spoločnými pre viaceré základné prípady použitia.
Rozširujúci prípad použitia je závislý od základného prípadu použitia; doslova rozširuje správanie opísané základným prípadom použitia. Základný prípad použitia by mal byť plne funkčným prípadom použitia sám o sebe ('include's included samozrejme) bez dodatočnej funkčnosti rozširujúceho prípadu použitia.
Rozširujúce prípady použitia možno použiť v niekoľkých situáciách:
Jedným z dôležitých aspektov, ktoré treba zvážiť, je, že rozširujúci prípad použitia môže "vložiť" správanie na viacerých miestach do toku základného prípadu použitia, nielen na jednom mieste, ako to robí zahrnutý prípad použitia. Z tohto dôvodu je veľmi nepravdepodobné, že rozširujúci prípad použitia bude vhodný na rozšírenie viac ako jedného základného prípadu použitia.
Pokiaľ ide o závislosť, rozširujúci prípad použitia je závislý od základného prípadu použitia a opäť ide o jednosmernú závislosť, t. j. základný prípad použitia nepotrebuje v postupnosti žiadny odkaz na rozširujúci prípad použitia. To neznamená, že nemôžete demonštrovať body rozšírenia alebo pridať x-ref na rozširujúci prípad použitia na inom mieste v šablóne, ale základný prípad použitia musí byť schopný fungovať bez rozširujúceho prípadu použitia.
Dúfam, že som ukázal, že bežná mylná predstava "includes sú vždy, extends sú niekedy" je buď nesprávna, alebo prinajlepšom zjednodušená. Táto verzia v skutočnosti dáva väčší zmysel, ak zvážite všetky otázky týkajúce sa smerovosti šípok, ktoré mylná predstava predstavuje - v správnom modeli je to len závislosť a potenciálne sa nemení, ak refaktorizujete obsah prípadu použitia.
vždy, keď existujú predpoklady pre prípad použitia, použite include.
pre prípady použitia, ktoré majú overovanie, najhorší možný scenár alebo sú voliteľné, potom zvoľte rozšírenie.
Príklad:pre prípad použitia hľadania prijatia, stretnutia, rezervácie lístkov MUSÍTE VYPLNIŤ FORMULÁR (registračný formulár alebo formulár na spätnú väzbu)....to je miesto, kde prichádza include..
Príklad:pre prípad použitia overenie prihlásenia alebo prihlásenia do účtu je vaše overenie povinné.tiež myslite na najhoršie scenáre.ako vrátenie knihy s pokutou..NEZÍSKANIE REZERVÁCIE..zaplatenie účtu PO DÁTUME PLATBY..tu prichádza na rad extend...
Nepoužívajte nadmerne include a extend v diagramoch.
ZACHOVAJTE JEDNODUCHOSŤ, HLUPÁCI!!!