Ciele
- Porozumieť konceptuálnemu návrhu systému.
- Naučiť sa identifikovať koncepty, ich vlastnosti a vzťahy medzi nimi v doméne navrhovaného systému.
- Naučiť sa používať UML diagram tried na konceptuálne modelovanie.
Úvod
Po tom, ako pochopíme, kto a načo bude používať náš systém, je potrebné analyzovať, aká bude jeho štruktúra. Vysokoúrovňový popis aplikácie z pohľadu používateľa sa nazýva konceptuálny model aplikácie (angl. conceptual model). Konceptuálny model, ktorý opisuje objekty, s ktorými sa používateľ môže v aplikácii stretnúť, ich vlastností, vzťahy a operácie, ktoré sa s nimi dajú vykonať.
Na tomto cvičení sa pozrieme na to, ako je možné opísať konceptuálny model pomocou analýzy objektov a akcií, a tiež ako je možné na jeho znázornenie použiť diagram tried z UML.
Postup
Krok 1: Konceptuálny model
Konceptuálny model slúži na to, aby návrhári systému si ujasnili čo všetko má obsahovať a tiež aby sformulovali, ako by chceli, aby systému porozumeli použivatelia.
Podľa článku Johnsona a Hendersona konceptuálny model špecifikuje a opisuje:
- základné návrhové metafory a analógie použité v systéme (priečinky v súborovom systéme prezentované ako priečinky pre papierové dokumenty);
- koncepty, prezentované používateľom, vrátane objektov domény, ktoré používatelia vytvárajú a pracujú s nimi (literatúru z knižnice si je možné požičať. Môže to byť kniha alebo magazín);
- vlastnosti a vzťahy medzi konceptami (objektmi) systému (kniha je len jedna položka, magazíny majú viacero vydaní).
Poznámka
Konceptuálny model by mal byť natoľko jednoduchý, ako je to možné, a zároveň by mal poskytovať požadovanú funkcionalitu. Pri návrhu konceptuálneho modelu sa riaďte pravidlom: „menej je viac“.
Jedným zo spôsobov, ako vytvoriť konceptuálny model, je analýza objektov a operácií. Pri nej identifikujeme objekty, ktoré budú viditeľné v aplikácii, ich vlastnosti a operácie, ktoré sa s nimi dajú robiť.
V prípade redakčného systému z minulého cvičenia môžeme identifikovať minimálne tieto objekty:
- samotný blog,
- článok na blogu,
- značka (tag) alebo kategória priradená článku,
- komentár.
Ich vlastnosti a akcie sú opísané v tabuľke nižšie. Podčiarknuté vlastnosti označujú vzťahy s inými objektmi systému. Niektoré informácie a akcie v modeli sú prístupné iba pre autora, niektoré pre aj pre čitateľov.
Príklad: Objekty a akcie redakčného systému
Objekty | Atribúty | Akcie |
---|---|---|
Blog | názov, meno autora, články, URL | pozrieť najnovšie články, vyhľadať článok, pozrieť zoznam konceptov, upraviť atribúty |
Článok | nadpis, text, stav (publikovaný, koncept), dátum publikovania, značky, komentáre | vytvoriť nový, upraviť, pridať značky, publikovať, odstrániť |
Značka | názov, články | vytvoriť, zobraziť články |
Komentár | článok, text, meno, email, čas pridania | pridať komentár k článku, odpovedať na komentár, zmazať komentár |
Pre zostavenie tohto modelu bolo nevyhnutné urobiť viacero rozhodnutí o tom, ako budúci systém bude fungovať. Napríklad je tu určené, že články môžu mať priradených viacero značiek namiesto zaradenia do práve jednej kategórie.
Úloha 1.1
Doplňte do modelu objekty, atribúty alebo akcie potrebné pre podporu prípadov použitia, ktoré ste navrhli na minulom cvičení.
Poznámka
Riaďte sa pravidlom: „Ak sa to nenachádza v konceptuálnom modeli, systém nebude vyžadovať, aby mal o tom používateľ vedomosť“.
Krok 2: UML diagramy tried
Pre grafické znázornenie konceptuálnych modelov môžeme použiť diagramy tried zo štandardu UML. Diagram tried je zápis, ktorý je možné používať na rôzne účely: od grafického vyjadrenia elementov implementácie systému v nejakom programovacom jazyku, až po opis objektov reálneho sveta. V našom prípade budeme znázorňovať koncepty, ktoré budú prítomné v navrhovanej aplikácii.
Poznámka
Trieda je označenie pre všetky objekty s rovnakými vlastnosťami (atribútmi) a rovnakými akciami. Každý konkrétny článok je objekt, pričom všetky tieto objekty patria do triedy Článok.
Každá trieda v diagrame tried je znázornená ako obdĺžnik, ktorý môže byť rozdelený na tri časti: názov, vlastnosti, operácie. Vzťahy medzi triedami sú znázornené pomocou rôznych typov čiar, ktoré majú rôzny význam.
Vzťahy medzi triedami je užitočnejšie zobrazovať pomocou čiar. Všimnite si, že vlastnosť články v triede Blog je teraz vynechaná. Namiesto nej je čiara označujúca asociáciu medzi triedami Blog a Článok.
Oproti textovej verzii, tento diagram obsahuje aj informácie navyše — početnosť vzťahov medzi triedami. Početnosť označuje, koľko objektov danej triedy sa môže vyskytovať vo vzťahu. Napríklad v blogu môže byť ľubovoľný počet článkov, ale článok sa nachádza práve v jednom blogu. Početnosť sa v UML označuje pomocou intervalov takto:
Označenie | Význam |
---|---|
0..1 | žiaden alebo jeden |
0..* | ľubovoľný počet (0 až nekonečno) |
1 | práve jeden |
1..* | aspoň jeden |
Úloha 2.1
Nakreslite samostatne uvedený konceptuálny model redakčného systému.
V rámci tohoto cvičenia budeme používať webový nástroj diagrams.net (predchádzajúci názov draw.io). V palete tvarov naľavo nájdite a rozbaľte sekciu UML:
Tu nájdete všetky potrebné elementy, predovšetkým triedu:
Stačí kliknúť na element v palete a on sa pridá na plátno, kde ho môžete upravovať. Ďalší element, ktorý budete potrebovať, je asociácia — vzťah medzi dvoma triedami. Tento element tiež nájdete v palete ako „Association 1“:
Úloha 2.2
Doplňte diagram o objekty a vlastností, ktoré ste navrhovali predchádzajúcom kroku.
Krok 3: Vzťahy medzi triedami
Asociácie medzi triedami môžu okrem početnosti mať uvedené aj názvy vzťahu. Okrem toho konce čiary môžu mať špeciálne značky, napríklad šípku, ktorá určuje typ vzťahu, alebo diamant, označujúci agregáciu. Agregácia označuje, že nejaký objekt je súčasťou iného objektu. Napríklad v našom prípade článok je súčasťou blogu (alebo blog obsahuje články). Podobný vzťah je medzi článkom a komentárom. Diamant sa v tomto prípade kreslí pri tej triede, ktorá predstavuje celok:
Podobným vzťahom je kompozícia, ktorá je označovaná čiernym diamantom. O rozdiele medzi agregáciou a kompozíciou si prečítajte v článku Martina Fowlera.
Ďalší typ vzťahu, ktorý môžeme použiť v diagrame tried, je zovšeobecnenie (alebo generalizácia). Je to vzťah medzi všeobecnejšou triedou a jej špeciálnym prípadom. Tento vzťah sa označuje šípkou s prázdnym trojuholníkovým koncom smerujúcim k všeobecnejšej triede.
Povedzme, že v systéme chceme mať špeciálny typ článku — odkaz. Pôjde o príspevok, kde autor blogu komentuje nejakú inú stránku a dáva na ňu odkaz (podobne ako v populárnom blogu Daring Fireball). Odkaz má všetky vlastnosti článku, ale navyše má adresu na odkazovaný článok a možnosť ho zobraziť.
Tento vzťah sa nazýva aj dedičnosť, lebo špeciálny prípad „dedí“ všetky vlastnosti a akcie zo všeobecného.
Úloha 3.1
Upravte diagram podľa vzoru: tam, kde je to vhodné, nahraďte obyčajné asociácie agregáciou a doplňte vzťah zovšeobecnenia.
Krok 4: Zadania
Úloha 4.1
Navrhnite konceptuálny model pre opis domény vášho zadania. Použite analýzu objektov a akcií a znázornite ho pomocou diagramu tried.
Nesprávny príklad
Takýto diagram nepovie o fungovaní systému vôbec nič. Navyše všetko, čo sa znázorňuje na v konceptuálnom modele je súčasťou systému, preto nemá zmysel kresliť samotný systém ako jednu z tried. Celý diagram je systém.
Krok 5: Domáca úloha
Úloha 5.1
Prečítajte si článok Conceptual Models: Begin by Designing What to Design a pozrite aj ďalšie zdroje tohto cvičenia.
Zdroje
- Johnson J., Henderson A.: Conceptual Models: Begin by Designing What to Design — popis významu konceptuálneho modelu pri návrhu aplikácie.
- Johnson J., Henderson A.: Conceptual Models in a Nutshell — definícia konceptuálneho modelu pomocou analýzy objektov a akcií.
- Practical UML: A Hands-On Introduction for Developers — prehľad základných prvkov diagramov UML.