Objektová analýza požadavků - případy užití, doménový a procesní model.

Z Na státnice zvesela!

Přejít na: navigace, hledání

[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

[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

Soubor:sequence2.jpg

  • 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.)