Objektová analýza požadavků - případy užití, doménový a procesní model.
Z Na státnice zvesela!
[editovat] Objektová analýza
- vstup: specifikace požadavků, příp. doménový model
- cílem: určit analytické třídy a jejich zodpovědnosti
- výstup: logický (analytický) model tříd + zodpovědnosti tříd
- nástroje:
- CRC karty (slouží k identifikaci zodpovědností)
- diagramy analytických tříd (atribury + metody, zatím implementačně nezávislé) (slouží k identifikaci tříd)
- sekvenční diagramy (slouží k identifikaci zodpovědností)
Jak najít analytické třídy?
- prvotní třídy rozvojem doménového modelu
- úvodní převod 1:1
- může skončit jako 1:N
- rozklad složených objektů, volně definovaných vztahů
- Postup: postaven na rozboru případů užití (vytvoření detailního popisu PU)
- identifikace / navržení kandidátských objektů → tříd
- určení zodpovědnosti za + metod pro realizaci funkčnosti
Přiřazení zodpovědností z popisu PU
- Rozbor scénáře případu užití s kandidáty na třídy
- Akce – otázka
- „Kniha je označena jako vrácená“ ⇒ „Kdo to zařídí?“
- některá ze stávajících tříd ⇒ nová zodpovědnost
- magie ⇒ nová třída, přiřadit zodpovědnost
- „Kniha je označena jako vrácená“ ⇒ „Kdo to zařídí?“
- Akce – otázka
[Zdroj: ASWI přednášky, Brada]
[editovat] Nástroje objektové analýzy
- CRC (Class-Responsibility-Collaborators) karty
- mechanická technika (papírové karty, tužka, guma, stůl)
- pro třídy vytvoříme kartičky, nahoru napíšeme jméno třídy, vlevo zodpovědnost třídy, vpravo spolupracující třídy
- nevýhody – vazby mezi třídami nejsou znázorněny graficky, nepřehledné pro větší systémy (několik desítek tříd)
- Diagram sekvencí (Sequence diagram)
- popis výměny zpráv
- objekty reprezentují třídy, zprávy (výstižné fráze pro zachycení zodpovědnosti nebo jména metod při dostatku informací)
- detaily (tj. třídy, metody, větvení, cykly) řešit, až když je jasno, tedy na jiné úrovni než v sekvenčním diagramu
- Diagram tříd (Class diagram)
- vychází z doménového modelu a rozšiřuje ho
- na počátku je třída popsána jen názvem, zkontrolujeme, zda již není název použit, ponecháme ten název, který daný objekt popisuje nejlépe
- ke třídě najdeme logické atributy = informace, která se nebude používat samostatně, ale je silně vázána s objektem (př. jméno, věk, adresa budou atributy nějaké osoby)
- třídy lze rozdělit podle následujících streotypů:
- hraniční třídy (boundary class) – všechno, s čím aktéři přímo komunikují, můžeme je zjistit např z popisu užití
- entitní třídy (entity class) – informace, kterou systém udržuje delší dobu, často odpovídají objektům reálného světa (př. klient, účet)
- řídící třídy (control class) – chování v systému, třídy obsahující řídící logiku, používající nebo nastavující obsah entitních tříd
[editovat] Doménový model
- jen základní obrysy, terminologie uživatele a pojmy -- názvy tříd, vztahy mezi třídami (asociace, kardinality), nezavislé na implementaci
- sledujeme podstatná jména v definici problému, věci a místa v aplikační doméně, pro každé vytvoříme předběžnou třídu (třída je zatím popsána pouze jménem); slovesa zaznamenáváme, aby časem mohla být operacemi
- eliminujeme nepotřebné a chybné třídy (třídy, které nejsou pro aplikaci relevantní, vágně definované třídy, aj.)