Warning
This page is located in archive. Go to the latest version of this course pages. Go the latest version of this page.

2a - Analýza systému a využití UML

  1. Úvod do analýzy a využití UML
  2. Základní prvky UML
  3. Převod zadání do UML
  4. Převod UML do kódu

Úvod do analýzy a využití UML

Cílem je vysvětlit jednotlivé body v analýze systému a ukázat, kterou částí se budeme v rámci OMO zabývat. Hlavní rozdělení je:

  1. Byznys analýza (BA)
  2. Softwarová analýza (SA)
BA a SA společně tvoří projektovou dokumentaci.
1. BA
  • Byznys cíle (BG)
    • Definují hlavní cíle projektu
    • Odpovídají na otázky CO a PROČ
    • Definuje vyšší management
  • Byznys požadavky (BRQ)
    • Mají naplňovat byznys cíle
    • Jsou detailnější než BG
    • Odpovídají na otázky CO a PROČ
    • Definuje nižší management a lidé, kteří jsou odpovědní za jednotlivé oblasti
  • Celková cena projektu (TCO)
    • Součástí je i údržba systému
    • Běžně počítáno na 5 let
  • Byznys procesy (BPM)
    • Mapování procesů důležitých pro chod firmy
    • Slouží k pochopení fungování firmy a zařazením toho, co v rámci projektu řešíme (implementací nebo hledáním software)
  • Byznys domain model (BDM)
    • Podobné jako class diagram, ale s důrazem na strukturu analyzovaného problému
2. SA
  • Softwarové požadavky (SR)
    • Specifikují detailněji BRQ
    • Odpovídají na otázku JAK
    • Definuje architekt
  • Use casy (UC) - řešíme v rámci sem. proj.
    • Jednotlivé scénáře užití
    • Definují chování systému a popisují jednotlivé funkce
    • Slouží jako podklad pro vývojáře při implementaci v kombinaci se sekvenčním diagramem a wireframes
    • Může být specifikováno i textově
    • V rámci semestrálního projektu chceme popsat funkcionality, které bude systém umět.
  • Abstraktní doménový model (ADM) - řešíme v rámci sem. proj.
    • Class diagram pro databázi
    • Může obsahovat i návrh jednotlivých funkcionalit z pohledu implementace (je vhodné udělat více diagramů a nesmolit vše do jednoho)
  • Wireframes
  • Diagram komponent
    • Slouží k popsání systému a propojení jednotlivých softwarových komponent mezi sebou (důležité u mikroservis)
  • Diagram nasazení
    • Popisuje, jak vypadá nasazení systému na serverech

Základní prvky UML (ADM)

  1. Class, interface, enum
  2. Vazby, dědičnost
  3. Násobnost
Zkuste najít odpovědi na následující otázky:
  1. Jaké jsou rozdíly mezi značením atributů + nebo -?
  2. Jaké metody je zbytečné v diagramu naznačovat?
  3. Jaký je rozdíl mezi jednosměrnou a obousměrnou vazbou? Zkuste vymyslet výhody i nevýhody.

Zpracování textu do ADM modelu

Systém pro správu elektronických zařízení v domácnosti

  • Třída Device

Tato třída slouží jako základ pro všechna elektronická zařízení v systému. Obsahuje následující atributy: id (int) - Unikátní identifikátor zařízení. name (string) - Název zařízení. status (enum) - Stav zařízení, který může být jedním z následujících hodnot: ON, OFF, STANDBY. Kromě toho třída Device obsahuje metody pro zapínání (turnOn()) a vypínání (turnOff()) zařízení.

  • Třída SmartDevice (extends Device)

Tato abstraktní třída rozšiřuje třídu Device a přidává atribut ipAddress (string), který reprezentuje IP adresu zařízení. Obsahuje metody pro připojení (connectToNetwork()) a odpojení (disconnectFromNetwork()) zařízení ze sítě.

  • Třída LightBulb (extends SmartDevice)

Tato třída rozšiřuje třídu SmartDevice a má navíc atribut brightness (int), který umožňuje nastavit jas žárovky. Obsahuje metodu pro nastavení jasu (setBrightness(brightness: int)).

  • Třída Thermostat (extends SmartDevice)

Tato třída také rozšiřuje třídu SmartDevice a obsahuje atribut temperature (float), který reprezentuje nastavenou teplotu termostatu. Obsahuje metodu pro nastavení teploty (setTemperature(temperature: float)).

  • Třída Controller

Třída Controller obsahuje atribut devices, který je seznamem elektronických zařízení. Obsahuje metody pro přidání (addDevice(device: Device)) a odebrání (removeDevice(device: Device)) zařízení z tohoto seznamu. Dále obsahuje metodu pro ovládání všech zařízení zároveň (controlAllDevices()).

  • Rozhraní RemoteControl

Rozhraní RemoteControl definuje dvě metody, které musí být implementovány třídami, které toto rozhraní používají. Jedná se o metody pro zapínání (turnOnDevice(device: Device)) a vypínání (turnOffDevice(device: Device)) zařízení.

  • Třída MobileApp (extends Controller, implements RemoteControl)

Třída MobileApp rozšiřuje třídu Controller a implementuje rozhraní RemoteControl. Tím umožňuje ovládat zařízení pomocí mobilní aplikace. Obsahuje metody pro zapínání a vypínání zařízení, stejně jako metodu pro ovládání všech zařízení zároveň.

Můžete použít jakýkoliv nástroj pro tvorbu UML:
  1. DrawIO: https://draw.io
  2. Umrello UML modeler: https://umbrello.kde.org/

Zpracování návrhu z bodu 3 do kódu

  • Zkuste si návrh přepsat do kódu. Pokud píšete v Javě, dbejte naming conventions a dalších zásad psaní kódu.
courses/b6b36omo/labs/lab022017a.txt · Last modified: 2023/10/16 23:16 by groscdan