Modelování IS – Strukturovaný a objektově orientovaný přístup (UML) Informační systémy VIKBA18 Mgr. Jan Matula, PhD. 177798@mail.muni.cz II. blok Význam analýzy požadavků na IS • jednoznačně identifikovat a popsat určitý pojem zákazníka, • objasnění všech nejasných a odstranění neúčelných pojmů, • způsob, jak se seznámit s aplikací nově zúčastněné osoby, • existují jednotné informace o tom, jak má aplikace fungovat, • v aplikaci je možno jednoznačně identifikovat odchylky od požadavků zákazníka = chyby, • při rozšiřování aplikace víme na co navazujeme. Je tak možné stanovit systém, jak rozšíření/změnové požadavky zapracovat. Význam analýzy požadavků na IS • informace pro identifikaci problémů v aplikaci a jejich odstranění. • popis systému pro její opětné vytvoření. Analýza a návrh IS • Myšlenkové postupy ABSTRAKCE a KONKRETIZACE využíváme v průběhu celého procesu analýzy a návrhu IS. Na myšlenkových postupech A a K jsou založeny principy: • Princip rozlišovacích úrovní; • Princip tří architektur; • Princip modelování. Princip rozlišovacích úrovní • Založen na zobrazení vyvíjeného systému na určité podrobnosti rozlišení detailů. • V případě nejhrubší rozlišovací úrovně je IS znázorněn jako jeden prvek spolupracující s okolím – principem zobrazení je popis vazeb systému s okolím. • Jde o víceúrovňové zobrazení systému (od rozlišovací úrovně „0“ až po úroveň „N“, na které vidíme detaily rozpracované do potřebné úrovně pro řešení problému. Princip tří architektur • Úzce souvisí s principem rozlišovacích úrovní. • Veškerá zobrazení vyvíjeného IS jsou rozdělena do tří rozlišovacích úrovní – kategorií (vrstev podrobnosti) = tzv. VRSTVENÁ ABSTRAKCE SYSTÉMU. 1. Vrstva – KONCEPTUÁLNÍ (esenciální) 2. Vrstva – TECHNOLOGICKÁ (logická) 3. Vrstva – IMPLEMENTAČNÍ (fyzická) Princip tří architektur 1. Vrstva zobrazení systému – KONCEPTUÁLNÍ Zobrazení systému na hrubé rozlišovací úrovní – tj. zobrazení systému a jeho vazem na okolní systémy, dále zobrazení systému s viditelnými subsystémy a vazbami mezi nimi. S takovéhoto zobrazení je patrné, které subsystémy fungují jako rozhraní mezi IS a okolím, resp. Které subsystémy zpracovávají VSTUPY a VÝSTUPY systému vzhledem k okolí. ÚČELEM zobrazení 1. vrstvy je odpověď na otázku CO je obsahem systému? Princip tří architektur 2. Vrstva zobrazení systému – TECHNOLOGICKÁ Zobrazení systému, která zviditelňují, JAK je obsah systému realizován? Je zde zohledněna organizace dat (souborový systém, relační databázový systém, apod.) a architektura systému (např.: klient/server). Zobrazení není zatíženo implementačními specifiky (tj. konkrétní realizace za pomoci prostředků ICT). Princip tří architektur 3. Vrstva zobrazení systému – IMPLEMENTAČNÍ Detaily konkrétní implementace (např. vlastnosti plynoucí z konkrétního databázového systému). Z této vrstvy je patrné ČÍM je systém realizován. Princip tří architektur je aplikován v průběhu celého procesu analýzy a návrhu IS – vznikají MODELY vyvíjeného IS na jednotlivých úrovní ABSTRAKCE. V jednotlivých etapách vývoje IS jde o snahu zpracovat model IS v požadované vrstvě. Princip modelování • V podstatě jde o TVORBU MODELU vyvíjeného IS. • MODELOVÁNÍ = účelové zjednodušené zobrazení systému za pomoci vhodných (např. grafických) prostředků. • MODELOVÁNÍ = ABSTRAKTNÍ obraz reality. • MODEL = formalizovaný prostředek pro znázornění vyvíjeného IS, prostředek komunikace mezi odborníky, analytiky a uživateli IS. Znázorňuje strukturu systému (strukturu procesů, dat, atd.) na zvolené rozlišovací úrovni. Umožňuje optimalizaci struktury systému vzhledem ke zvoleným kritériím. Dále umožňuje simulaci s studium provedených změn systému a jejich vliv na subsystémy a okolí systému. Charakteristika modelu • Model formulován jako systém (tzn. znázorňuje prvky a jejich vzájemné vazby), • Hraniční prvky realizují vazby s okolím systému (VSTUPY, VÝSTUPY), • Obsah modelu je objektivní – každý prvek modelu odpovídá objektu reálného světa (tzv. pomocný prvek), • uspořádání prvků modelu odpovídá uspořádání prvků části reálného světa, který model znázorňuje. Analyzované dimenze IS • funkční (popis procesů, datových toků a vazeb mezi subsystémy) • datová (popis druhů dat, se kterými bude IS pracovat) • řídící (popis časových souvislostí systémových akcí) • organizačně-technologická (popis a znázornění organizace práce s IS, popis zamýšlených provozních technologií, které bude IS realizovat) • systémově-technologická (popis realizace implementačně závislých systémových funkcí a jejich časové návaznosti) Druhy přístupu k analýze a návrhu IS V průběhu historického vývoje se vyprofilovaly dva základní přístupy k analýze a návrhu IS: • STRUKTUROVANÝ přístup (70. léta 20. stol.), • OBJEKTOVĚ ORIENTOVANÝ přístup (90. léta 20. stol.). Strukturovaný přístup • Pojem „strukturovaný přístup“ odráží myšlenkový postup „strukturování“ (problematiky i předmětu zkoumání). • V průběhu analýzy a návrhu IS potřebujeme zobrazit dva hlavní aspekty vyvíjeného IS: 1) PROCESY probíhající v systému 2) DATA, se kterými systém pracuje a která produkuje. MODELY STRUKTUROVANÝ PŘÍSTUP – charakteristické (na rozdíl od přístupu objektového) relativně samostatné zobrazení datových struktur systému v jednom modelu; datových toků a procesů zpracovávajících data v jiném modelu. Metody strukturované systémové analýzy jsou plně v souladu s principy obecné teorie systémů Funkční struktura • Metoda analýzy funkční struktury je jednou ze základních metod strukturované analýzy používaná především k popisu struktury systému. Jedná se o metodu grafickou, která slouží k zachycení hierarchické dekompozice systému na subsystémy a prvky pomocí stromových diagramů. Informační toky • Grafická metoda, která formou hierarchicky uspořádaných síťových diagramů vyjadřuje dekompozici systému na subsystémy a prvky a současně dovoluje zachytit informační vazby mezi těmito prvky. • Vhodná metoda pro studium strukturálních vlastností systému. • Základními aktivními prvky jsou funkční prvky neboli funkce, prvky zajišťující transformaci vstupní informace na výstupní. • Aktivní prvky lze dále rozlišovat na prvky příslušné k popisovanému systému a prvky, které lze považovat vzhledem k popisovanému systému za vnější. Informační toky • Pasivní prvky představují paměti. Jedná se o prvky, které jsou schopny uchovat uloženou informaci. V případě softwarově orientovaných systémů mohou být realizovány například soubory nebo databázemi, v oblasti nesoftwarových systémů například protokoly, seznamy nebo záznamovými knihami. • Významnou složkou diagramu informačních toků jsou informační vazby mezi prvky systému – informační toky. Obsah informačního toku nemůže být s ohledem na požadavek přehlednosti diagramu vyjádřen zcela detailně. • Metoda informačních toků vyjadřuje formou hierarchicky uspořádaných síťových diagramů dekompozici systému na subsystémy a prvky a současně zachycuje informační vazby mezi těmito prvky. • Na vrcholu této hierarchie stojí tzv. kontextový diagram, který vyjadřuje začlenění systému do souvislostí okolního světa. Informační toky Subsystém 2 Prvek 1 Prvek 3Prvek 1 Prvek 22 Prvek 21 Prvek 3 Systém Subsystém 2 Prvek 2 Prvek 21 Prvek 22 Prvek 1 Paměť Kontextový diagram Datové struktury • Metoda analýzy funkční struktury a metoda informačních toků neposkytují vhodné a dostatečné prostředky pro analýzu datové složky systému. Jak vazby mezi prvky systému popsané informačními toky, tak i pasivní prvky systému mohou představovat složité a rozsáhlé datové struktury. • Jedním z prostředků datové analýzy je popis datových struktur. Analýza datových struktur umožňuje pomocí hierarchických stromových diagramů postupné rozčlenění informačních toků nebo paměťových prvků. Všechny prvky tohoto diagramu představují obecně chápané bloky informace – datové položky. Datové struktury • Na analýzu struktury dat bezprostředně navazuje detailní datová analýza, která je prostředkem k podrobnému popisu elementárních datových položek – listových prvků hierarchického stromového diagramu. • Detailní datová analýza umožňuje přiřadit každé elementární položce datové struktury datový element, který určuje formu uložení informace. Pro datové elementy je možno specifikovat například typ, rozsah nebo výčet možných hodnot. Datové struktury Prvek 1 Prvek 22 Prvek 3 Informační tok 2122 Datová položka 2 Datová položka 11 Datová položka 12 Datové pole 1 Paměť Paměť Datové pole 2 Datová položka 21 Datová položka 22 Datová položka 1 Prvek 21 ER model • ER model – model entit a jejich vzájemných vztahů. • Vhodný pro analýzu systému v případě, kdy složitost systému spočívá spíše ve složitosti struktury dat než ve složitosti jeho funkčních složek. • ER model zachycuje formou síťového grafu objekty reálného světa a vztahy mezi nimi. Množiny objektů reálného světa mající shodné vlastnosti se nazývají entitami, vztahy mezi nimi pak relacemi. Entity mohou být blíže specifikovány množinou atributů, které mají shodný význam jako datové elementy užívané při detailní datové analýze. ER model • Relace mezi entitami jsou specifikovány kardinalitou a těsností vazby. ER modely se využívají pro tvorbu modelů dat na logické neboli konceptuální úrovni, tedy modelů dat nezávislých na jejich fyzické realizaci prostřednictvím specifického databázového systému. ER model ER model Metody popisu chování • Popis chování systému je v obecném slova smyslu jeho algoritmizací. • Algoritmus chování je však v určitých případech nutné nebo účelné podrobněji popsat již ve fázi analýzy. Metody popisu chování umožňují ve fázi analýzy zachytit algoritmickou složku systému, avšak abstrahují od konkrétního způsobu realizace, který je předmětem fáze návrhu. • Metody jsou založeny na grafickém vyjádření nebo na vhodné kombinaci grafického vyjádření a formalizovaného textového popisu. Obvykle je pomocí grafických prostředků zachycena základní struktura algoritmu, která je pro specifikaci algoritmu na detailní úrovni doplněna relativně krátkými sekvencemi příkazů zapsanými formalizovaným jazykem. Metody popisu chování • Klasickým grafickým prostředkem zápisu algoritmu je vývojový diagram. Díky své jednoduchosti získal oblibu v nejrůznějších oblastech, které daly vzniknout jeho různým modifikacím. Nejjednodušší varianta zachycuje základní strukturu algoritmu pomocí vzájemně propojených elementů představovaných bloky a podmínkami. Detailní specifikace algoritmu je obsahem příslušných elementů a je vyjádřena formalizovaným jazykem. Vývojový diagram Z Akce 1 + Podmínka 1 – Akce 2 K Akce 3 Metody popisu chování • Metody popisu chování jsou obvykle velmi příbuzné metodám užívaným při tvorbě programů. • Při nedodržení určitých pravidel mohou konstrukce zachycené pomocí vývojových diagramů odporovat zásadám strukturovaného programování, a tím mohou znesnadňovat případnou následnou programovou realizaci. • Mezi metody, které podporují a dodržují zásady strukturovaného programování, patří metoda grafického zápisu algoritmů podle Jacksona, označovaná jako Jacksonovy diagramy. Základní struktura algoritmu je popsána hierarchickým stromovým diagramem, detailní specifikace je obsahem příslušných elementů a je vyjádřena formalizovaným jazykem. Jacksonův diagram Metoda stavových diagramů • grafická metoda popisu chování použitelná pro vyjádření jednodušších algoritmů nebo pro popis algoritmů na hrubé úrovni. • Systém je popsán SÍŤOVÝM GRAFEM, jehož uzly znázorňují stav systému a hrany naznačují možné přechody mezi stavy s vyjádřením podmínek přechodu a akcí s přechodem spojených. • Akce a stavy systému pouze symbolicky označují funkce a jejich účinky. Algoritmickou náplň akcí je však nutné popsat s využitím jiných prostředků. Stavový diagram Stav 1 Stav 2 Stav 3 P K K Událost 1 (Podmínka 1) Akce 1 U2 (P2) A2 U3 (P3) A3 U4 (P4) A4 U5 (P5) A5 U6 (P6) A6 Stavový diagram Metoda sekvenčních funkčních grafů • Metoda sekvenčních funkčních grafů představuje grafickou metodu popisu chování systému vyhovující nejobecnějším nárokům na popis algoritmu. Základy metody jsou postaveny na principech Petriho sítí. • Metoda funkčních kroků a přechodů byla poprvé uveřejněna v roce 1977 pod názvem GRAFCET (Graphe Fonctionnel de Commande Etape-Transition). V současné době se však s touto metodou lze setkat častěji pod názvem SFC (Sequential Function Chart). Metoda sekvenčních funkčních grafů • Metoda sekvenčních funkčních grafů využívá k popisu systému obdobně jako metoda stavových diagramů síťový graf. • Zásadní rozdíl však spočívá v tom, že uzlem síťového grafu není stav systému, ale krok algoritmu, respektive akce s daným krokem spojená. Přechod z kroku do kroku je vázán podmínkou přechodu a aktivitou kroků této podmínce bezprostředně předcházejících. Síťový graf tedy zachycuje základní strukturu algoritmu, detailní popis je pak obsahem akcí spojených s dílčími kroky. Sekvenční funkční graf K1 K2 K3 K4 K7 K8 K9 K5 K6 K2 Akce 1 A2 A3 A4 A5 A6 A8A7 A9 Podmínka 1 P2 P3 P4 P5 P6 P7 P8 P9 Objektově orientovaný přístup Objektově orientovaný přístup • Historicky mladší technika navazující na strukturovaný přístup. • Přístup je založen na OBJEKTECH, jakožto strukturách, které mají definované vlastnosti (ATRIBUTY) a své chování (operace, které daný objekt může provádět). • Vlastnosti i operace jsou „zapouzdřené“ v jednotlivých objektech. • IS je chápán jako MNOŽINA spolupracujících OBJEKTŮ. • Každý OBJEKT je schopen reagovat na události, které na něj působí jako IMPULS. Využití UML • UML jako náčrt systému • UML jako plán vývoje • UML jako programovací jazyk • Příklad: Analýza - chyby v zákoně viz http://blog.geospy.org/tagged/Anal%C3%BDza Současný stav UML (14 diagramů) Objektově orientovaný přístup • umožňuje lepší využití kódu než knihovny procedur. • možnost znovupoužití. • lze využít prostředky pro okenní rozhraní systémů. • dávkové úlohy jsou interaktivní (objekt reaguje na více podnětů) Objekt Struktura objektu: 1) VNITŘNÍ PAMĚŤ 2) METODY OBJEKTU 3) JINÉ OBJEKTY 4) SCHOPNOST PŘIJMOUT A ZPRACOVAT ZPRÁVU Z VNĚJŠKU Objektově orientované modelování • způsob nazírání na IS pomocí abstrakce reálného světa. Základním stavebním prvkem je objekt (entita), která v sobě zahrnuje jak datovou strukturu popisující určitou entitu, tak i pravidla chování této entity. Vizuální modelování (OOM) Vlastnosti • “Informace v obrázcích” • Prostředek komunikace (pohledy, modely, diagramy) • Zachycuje obchodní procesy, věcnou problematiku, architekturu systému • Je podporováno silnou notací a objektovými metodologiemi Metodologie • Booch, Coad,Yourdon • OMT (Object Modeling Technik), Rumbaugh • OOSE (Object-Oriented Software Technik) • Jacobson (scénáře) • EFEM (Extrémní efektivní modelování) Vizuální modelování (OOM) • Modely vytváříme pro pochopení komplexnosti systému jako celku. Za pomocí modelů lze: • vizualizovat stávající nebo vytvářený systém, • specifikovat strukturu nebo chování systému, • získat základ pro konstrukci systému, • dokumentovat rozhodnutí o systému. Objekty Charakteristické vlastnosti objektů: • Jedinečnost – znamená, že každý objekt je rozlišitelnou entitou, i když má jinak stejné kvalitativní i kvantitativní charakteristiky. K rozlišení se používá identifikační číslo. • Zatřiditelnost – objekty se stejnou datovou strukturou (atributy) a chováním (operacemi) jsou seskupovány do tříd. • Mnohotvárnost – znamená, že stejně označená operace se může chovat rozdílně a dávat rozdílné výsledky pro různé třídy objektů. • Dědičnost – je sdílení atributů a operací mezi třídami založenými na hierarchických vztazích. Třída může být definována poměrně široce a potom ji lze následně zjemňovat do podtříd. Každá podtřída pak zahrnuje vlastnosti své nadřazené třídy. Objektově orientované modelování • Založeno na principech, které vyjadřují podstatu objektového přístupu. 4 principy OOP: • Zobecnění – představuje zaměření na podstatné vnitřní aspekty objektů a ignoruje jeho nepodstatné vedlejší vlastnosti. To znamená, že klade důraz na to, co objekt je, a co by měl dělat, a ne na to, jak by to měl dělat. • Zapouzdření – znamená oddělení externích aspektů objektu, které jsou dostupné ostatním objektům, od interních implementačních detailů objektu, zakrytých ostatním objektům. To znamená, že implementace objektů může být změněna, aniž by se to dotklo aplikací, ze kterých je objekt použit. • Sdílení – je umožněno dědičností datových struktur a chováním mezi několika podobnými třídami bez redundance. To umožňuje opakované použití již navržených a ověřených programů v dalších aplikacích. • Spolupůsobení – jednoznačnost, zatřiditelnost, mnohotvárnost a dědičnost charakterizují hlavní proud objektově orientovaných jazyků. Každý z těchto aspektů může být izolován, ale dohromady působí symetricky. Výhody a nevýhody OOP a tradiční analýzy Výhodou tradičních popisů IS oproti OOP bylo, že jejich osvojení bylo relativně snadnější, neboť jejich rozsah od zadání softwarové úlohy až po bezprostřední zadání programových dat a procedur byl řešen nezávisle na pochopení funkcí reálného podnikového systému jako celku a jeho potřeb nejen informačních. Nevýhody objektového přístupu • Zavedení nového vyjadřovacího prostředku a nového způsobu myšlení, což je dosti náročné pro lidi, zúčastněné na procesu modelování, a později pak i na programování. • Používání počítačové podpory pomocí vhodného CASE, bez níž nelze provést kvalitní analýzu i relativně malého systému. To opět vyžaduje zvládnutí práci s daným CASE (Computer Aided System Engineering). • Technologickou kázeň s tím nutně spojenou. Výhody OOP • Možnost vysledovat na modelu vnitřní vztahy prvků v podnikovém systému a vytvářet software pro „poskytovatele služeb“, tj. pro prvky podniku, které poskytují své služby jiným podnikovým prvkům. • Takto vytvářený software může být opakovatelný, zejména při použití knihoven standardizovaných tříd. • Možnost vytvářet software podstatně pružnější vzhledem k proměnlivým potřebám podniku. Z hlediska programů je to dáno tím, že dříve byly strukturované programy vytvářeny podle pevné struktury potřeb podniku v době jejich vzniku, bez snadné možnosti změn. Historie OOP • O OOM se začíná hovořit v 2. pol. 80. let 20. stol. • Na počátku 90. let již existovala řada metod, nástrojů a technik založených na OOP. • Snaha o integraci jednotlivých metod a o unifikaci OOP  Grady Booch & James Rumbaugh publikovali v r. 95 metodu s názvem Unified Method (vycházela z metod Booch a OMT). Historie OOP • V r. 95 se k autorům Unified Method Jacobson (autor metody Objectory/OOSE). • Vznikají další verze Unified Method. • Ukazuje se, že se jen těžko podaří prosadit jednotné postupy a doporučení a ucelenou OO metodu vývoje IS. Historie OOP - UML • Přejmenováním Unified Method na Unified Modeling Language (UML) vznikl nástroj – grafický jazyk pro tvorbu modelů IS použitím OOP. • UML byl přijat sdružením OMG (Object Management Group – sdružení usilující o unifikovaný rozvoj OOp) jako doporučený standard notace pro tvorbu modelů IS. UML • V současnosti je UML nejrozšířenější objektovou notací. • Zahrnuje několik druhů modelů (diagramů) IS a grafických vyjadřovacích prostředků pro jejich konstrukci. • UML dnes podporují všechny CASE nástroje pro objektovou analýzu a návrh IS, OOM začleňují UML mezi své výrazové prostředky. UML V současnosti UML poskytuje: • pravidla pro pojmenování, rozsah platnosti, rozsah viditelnosti, omezení, prezentaci modelu, • různé specifikace, • rozšiřitelnost jako jsou stereotypy, dodané hodnoty. UML Definice: UML je standardní jazyk pro vizualizaci, specifikaci, konstrukci a dokumentaci prvků projektu, ve kterém hraje významnou roli vývoj software. Stavební kameny: • artefakty (prvky), • vztahy, • diagramy. UML – skupiny ARTEFAKTŮ Týkající se struktury systému • tvoří statickou část modelu, • třídy, rozhraní, use case, komponenta. Týkající se chování systému • tvoří dynamickou část modelu, • interakce, stavy, aktivity. Týkající se organizace systému • package. Týkající se vysvětlení účelu • popis, anotace, poznámka. UML - VZTAHY Agregace (závislost) • jeden prvek závisí na druhém. Asociace • propojení prvků. Dědičnost • specializace/generalizace UML - DIAGRAMY Grafická reprezentace obsahu modelu • zachycení prvků a jejich vztahů. Pohled na systém z různých perspektiv. Různé typy diagramů • Diagram užití (use case), tříd, objektů, sekvenční, spolupráce, stavový, aktivit, komponent, nasazení, balíčků (package). UML - DIAGRAMY 1. Diagram Use case 2. Sekvenční diagram 3. Diagram spolupráce 4. Diagram tříd 5. Stavový diagram 6. Diagram aktivit 7. Diagram nasazení Diagram Use case • jeho vypracování je obsahem use case analýzy, zachycuje funkcionalitu systému z pohledu uživatele, popisuje chování systému z hlediska uživatele. Prvky diagramu use case: Aktor (vymezením aktorů specifikujeme okolí systému a vymezíme jeho hranice). Use case (případ užití, typ jednání, funkcionalita,systému, kterou využívá aktor), Vztahy (mezi aktorem a use case, mezi use case, výjimečně mezi aktory). Diagram Use case Aktor = kdokoliv nebo cokoliv mimo systém, kdo nějak komunikuje a interaguje se systémem. • zachycení okolí systému, • prvky aktivně komunikující se systémem: • uživatelé • jiné softwarové systémy • čas Diagram Use case Use case (typ jednání, případ užití) jakákoliv funkčnost, která dává měřitelnou hodnotu uživatelům tohoto systému. reprezentuje ucelenou funkcionalitu problémové domény Diagram Use case Typy vztahů v UCD: 1) Vztah mezi AKTOREM a USE CASE – aktor komunikuje se systémem (vyvolává a účastní se USE CASE) 2) Vztahy mezi USE CASE Use case mohou vzájemně spolupracovat (slouží pro zjednodušení modelu a podobá se dekompozici). Vztahy mezi USE CASE Dva typy vztahů mezi use case: • Vazba include (dříve uses) povinný vztah, oba spojené use case se musí povinně provést, použijeme tam, kde se část use case v navrhovaném systému může opakovat. • Vazba extends rozšiřující vztah, za jistých podmínek se vykonávají oba use case, použijeme pro volitelné chování, pro chování za specifických podmínek, pro chování podle volby aktora. Popis USE CASE - scénář • Stručná charakteristika (1 - 3 věty) • Scénář: • nutné podmínky před spuštěním, • nutné podmínky po ukončení, • tok událostí - sekvence akcí. • Jeden scénář “HAPPY DAY” (obsahuje základní tok událostí a subtoky). • Ostatní scénáře jsou alternativní, chybové. Scénář (tok událostí) pro Use Case Př.: Evidence rezervace (půjčovna CD) Předpoklady Tento Use Case začne, když člen nemůže být uspokojen, protože dané CD není momentálně na skladě, nebo daný titul není v půjčovně k dispozici. Hlavní tok Tento Use Case začíná, když člen předloží asistentovi svoje identifikační číslo a název titulu, který si chce zarezervovat. Asistent zkontroluje existenci člena v databázi členů (A-1), zkontroluje, zda titul existuje v databázi titulů (A-2) a zkontroluje, zda jsou všechny kopie daného titulu zapůjčeny (A-3). Pokud má někdo kopii zapůjčenu déle než 10 dní, je upomenut o navrácení (S-1). Je založen záznam o rezervaci této kopie pro daného člena. Je vytištěn doklad o rezervaci titulu. Subtoky S-1: Asistent vyhledá všechny členy, který mají půjčený daný titul a zkontroluje délku jejich půjčky. Pro ty, kteří mají půjčku delší než 10 dnů, vytiskne upomínku. Alternativní toky A-1 : Je vloženo špatné ID člena, nebo člen neexistuje. Asistent může opakovat vstup ID nebo vložit údaje o členu (bude řešeno v Use Case Přidání nového člena), nebo ukončit Use Case. A-2 : Je vložen špatný titul, nebo titul neexistuje v půjčovně. Asistent ukončí Use Case (není založena rezervace) a vytiskne objednávku na daný titul (Use Case Objednání materiálu). A-3 : Asistent zjistí kdo má půjčené kopie a vloží rezervaci pro člena. Use case diagram Informace o use case: • jde o vizualizaci funkcionality, další informace musím spravovat v textové podobě, • use case musí mít tyto náležitosti (jméno, popis – účel, kdo a co jej používá, související use case, hlavní a alternativní scénář, nepovinně poznámky). Význam use case diagramu • zachycení požadavků na systém, • vizualizace a organizace požadavků ve standardní formě, • pro nalezení objektů, tříd a zodpovědností z popisu scénářů. Use case diagram Sekvenční diagram UML • Zachycuje interakci mezi objekty, zachycuje zasílání zpráv mezi objekty v rámci systému. • Zachycuje dynamické chování s orientací na čas. Vlastnosti sekvenčního diagramu: • Objekty sekvenčního diagramu spolu komunikují pomocí zasílání zpráv. • Popisuje jeden průchod zpráv systémem. • Nemá přímé výrazové prostředky pro smyčky, větvení a podmínky. • Pro jednoduché případy použiji poznámky. • Složité případy řeším separátními diagramy. Sekvenční diagram Diagram spolupráce UML Vlastnosti diagramu spolupráce: • Ukazuje tytéž informace jako sekvenční diagram s ohledem ne na čas, ale na propojení mezi objekty. • Slouží pro pozdější určení vztahů mezi objekty: • datové vztahy - dány distribucí informací, • komunikační vztahy - dány spoluprací mezi objekty Diagram spolupráce UML Diagram tříd UML • Třída je abstrakce objektů, které mají společné chování a o kterých nás zajímají stejné informace. • V OOP je to šablona pro instance objektů. • Statický pohled na modelovaný systém. • Vytváří se v etapě analýzy a postupně se zpřesňuje, je základem pro implementaci a nástrojem pro dokumentaci. Diagram tříd UML - Třída Třídy vyhledáváme analýzou problémové domény (podstatná jména ze scénářů). Třída je zapouzdřením určitého chování a určitých informací. Zapouzdření je koncept, který dává ve třídě dohromady to, co spolu souvisí a dává nějaký smysl. Obsahem třídy je: Jméno, Atributy, Operace. Diagram tříd UML –Operace, atributy Operace třídy • Operace, které třída definuje, představují její chování nebo také zprávy, kterým třída rozumí. • Zdrojem pro hledání operací jsou především scénáře use case analýzy. Atributy třídy • Atributy třídy jsou informace, které o třídě uchováváme. • Zdrojem pro atributy třídy jsou věcné znalosti o dané problematice a analýza podrobných požadavků uživatelů. • Atributy třídy by měly být atomické a nedělitelné. Vztahy mezi třídami Třídy nejsou v systému osamocené, jejich objekty ke svému chování potřebují využít schopností jiných objektů. Třídy mezi sebou sdílí informace. Asociace (“Slabá” vazba mezi třídami), např. čtenář a kniha • Neříká nic jiného, než to, že dvě třídy mají mezi sebou vztah, tedy že o sobě vědí. • Defaultně obousměrná vazba. • Může být definováno jméno asociace, role a násobnost (kolik instancí třídy existuje vůči jiné třídě). Agregace (volná vazba mezi třídami), např. počítač a periferní zařízení • Představuje vztah skládání celku z částí, celek odpovídá za vytvoření a zrušení částí, je to vztah celku k jedné části, definujeme násobnost, jméno a role ne. Vztahy mezi třídami Kompozice (nejsilnější forma asociace, velmi pevná vazba mezi třídami), např. faktura a řádek faktury, třída se skládá z jiných závislých tříd • Třídy tvoří hierarchii Dědičnost (nejsilnější forma vazby mezi dvěma a více třídami). • Generalizace/specializace • Potomek dědí celou specifikaci svých předků (atributy i operace). • Viditelnost prvků určuje, jak jsou děděny (public a protected jsou v potomkovi přístupné, private ne). • Vztah mezi třídou a speciálním případem této třídy. • Rozlišuje, co je stejné a co jiné. Vztahy mezi třídami • Rekurzivní asociace (asociace na sebe sama). • Asociativní třída (atributy asociace) • Pokud sama asociace nese určité informace, které nemohou být atributy ani jedné z asociovaných tříd. • Hovoříme o „link class“. • Může mít atributy i operace. • Např. vztah mezi osobou (jméno, rcislo), firmou (název) je vazba s asociativní třídou pracovní poměr (datum nástupu, funkce, plat). Diagram tříd Stavový diagram UML Dynamické chování systému je modelováno pomocí diagramů aktivit i stavových diagramů Stavový diagram • Používá se k modelování životního cyklu jednoho objektu. Hovoříme o objektech s výrazným dynamickým chováním nověji reaktivní objekty. • Stavový diagram modeluje chování systému napříč všemi use casy. Znázorňuje, jak se stavy objektu mění v závislosti na událostech, které se ho dotýkají • Stav objektu je dán hodnotami jeho atributů. • Stav objektu může ovlivňovat jeho chování. • Stav objektu je zachycen na stavovém diagramu jako stav jednoho objektu jedné třídy bez vazeb na jiné objekty nebo jiné třídy. Stavový diagram Diagram aktivit UML • Použití pro modelování systémů pracujících v reálném čase, systémů pro řízení technologických procesů, nebo paralelních procesů a jejich synchronizaci. • Další použití pro znázornění složitého scénáře a doplnění sekvenčního diagramu. • Jsou zvláštním případem stavových diagramů, kde stavy jsou vyjádřeny jako akce a kde přechody jsou spouštěny automaticky po ukončení předchozích akcí nebo aktivit. Používají obvykle pouze malou podmnožinu bohaté syntaxe stavových diagramů UML. • Lze používat symbolů rozhodování (tzv. hodnocení přechodů), symbolů rozvětvení (jeden vstup několik výstupů), spojení (více vstupů jeden výstup), plavecké dráhy – swimlanes pro specifikace osob, oddělení nebo tříd zodpovědných za aktivitu. Diagram aktivit Diagram nasazení • Etapa Nasazení (implementační etapa) je proces přiřazení artefaktů (soubory, skripty, DB tabulky, modely UML) uzlům (např. PC, server, prostředí zpracování). • Diagram nasazení umožňuje modelovat distribuci SW systému na fyzickém HW. Ukazuje fyzický hardware na němž bude softwarový systém (komponenta) spuštěn a také způsob, jak je SW na tomto HW nasazen. Diagram nasazení ukazuje: • Uzly – typy HW, na nichž bude systém spuštěn (osobní PC, server). • Relace – typy spojení mezi uzly (komunikační kanál, který slouží k přenosu informací, např. HTTP). • Komponenty – typy komponent nasazených na určité uzly (modul IS, MS Word). Diagram nasazení Agilní metodiky a techniky analýza a vývoj IS Agilní metodiky a techniky Agilní metodiky jsou skupiny metod původně určených pro vyvíjení SW založené na iterativním a inkrementálním vývoji. Umožňují rychlý vývoj softwaru a zároveň dokáží reagovat na změnu požadavků v průběhu vývojového cyklu. Podle těchto metodik se správnost systému ověří jedině pomocí rychlého vývoje, předložení zákazníkovi a následných úprav dle zpětné vazby. Historie agilních metodik Techniky užívané agilními metodikami se často používaly už dříve, ale pojem se začal používat až v únoru 2001. V Utahu se tehdy sešli odborníci z oblasti softwarového inženýrství a vývoje softwaru, aby diskutovali o odlehčených metodách vývoje. Sepsali Manifest agilního programování, kde definují přístup k vývoji nyní známý jako agilní programování. Historie agilních metodik Až do nástupu odlehčených metodik se používaly těžké, rigorózní metodiky. Ty jsou někdy kritizovány pro svůj vodopádový model vývoje a pro to, že vedoucí projektu svým blízkým dohledem omezuje vývojáře v práci. Kromě toho obtížně reagují na změny. V polovině 90. let se začaly objevovat odlehčené metodiky. Ty se podle jejich tvůrců navrací k vývojovým praktikám ze samotných počátků softwarového vývoje. Mezi tyto odlehčené metodiky patřil Scrum, Crystal Clear, Extrémní programování či Vývoj řízený vlastnostmi. Od publikování Manifestu agilního programování se tyto metodiky nazývají agilními. Agilní metodika a technika • Agilní metodika je způsob rozvržení a ověřování práce. Cílem Agilní metodiky bývá lepší organizace práce. Odlišné Agilní metodiky vedou k odlišným produktům, protože považují jiné aspekty produktu za klíčové. Liší se i přístup ke změně zadání. Možnost změny zadání je ale určující podmínkou. • Agilní technika je naproti tomu konkrétní postup, který se většinou týká samotných vývojářů. Cílem těchto technik bývá zvýšení produktivity práce, odstranění chyb, kvalitnější software nebo přesnější dodržení specifikace. Agilní techniky jsou od metodik oddělitelné. Cílem Agilní techniky bývá kvalitnější produkt. Rozdíly mezi agilní metodikou a technikou • Agilní metodika se zaměřuje na organizaci práce bez ohledu na to, zda se ve firmě vyvíjí software, nebo se jedná o jinou oblast, kde lze agilní řízení uplatnit. • V agilní metodice je kladen důraz na možnost změny, agilní technika nic takového nevyžaduje. • Agilní metodika se týká nejen vývojářů, ale i managementu. • Agilní technika je konkrétní činnost (především vývojáře, může se ale týkat i například klienta). Přínos agilní metodiky a techniky • Je předem známo, kolik práce je tým schopen udělat (v časovém rozsahu jedné iterace). To proto, že z minulosti je známo, jaká je rychlost v jednotlivých iteracích. Protože se zároveň dělají časové odhady na co nejkratší úkoly, je možné řídit rychlost týmu. • Změny zadání za běhu (což je například pro klasický Waterfall model naprosto neřešitelný problém) • Zrychlení doručování produktu od vývojáře k zákazníkovi (protože klientovi produkt doručujete po každém běhu – zákazník se navíc často účastní běhu firmy) Přínos agilní metodiky a techniky • Garance kvality (pomocí automatizovaných testů) • Odstranění třecích ploch mezi produktem a vývojáři. • Omezení rigidních procesů ve prospěch komunikace (jakkoliv Agile proti dobře nastaveným procesům nejdou – pouze omezují ty procesy, které brání efektivitě, komunikaci a agilnímu přístupu k práci) Priority agilního programování • Lidé a jejich spolupráce před procesy a nástroji • Fungující software před obsáhlou dokumentací • Spolupráce se zákazníkem před sjednáváním smluv • Reakce na změnu před dodržováním plánu Principy agilního programování 1. Nejvyšší prioritou je uspokojit zákazníka skrz rychlé a průběžné dodávání kvalitního software. 2. Změnové požadavky jsou vítány, dokonce i v průběhu vývoje. Agilní procesy je zpracují tak, aby zákazníkovi přinášely konkurenční výhody. 3. Dodávejte fungující software často, v intervalech týdnů až měsíců. Upřednostňujte kratší intervaly dodání. 4. Lidé z businessu a vývojáři musí spolupracovat každý den během celého projektu. 5. Pro práci na projektu vybírejte motivované jedince. Dejte jim prostředí a podporu, kterou potřebují, a důvěřujte jim, že práci dokončí. 6. Nejúčinnější metoda sdílení informací vývojářskému týmu (i uvnitř tohoto týmu) je osobní setkání. Principy agilního programování 7. Fungující software je hlavním měřítkem postupu vývoje. 8. Agilní procesy podporují udržitelný vývoj. Sponzoři, vývojáři i uživatelé by měli být schopní dodržovat stálý výkon dokud je třeba. 9. Průběžná pozornost věnovaná technické dokonalosti a dobrému návrhu posiluje agilní přístup. 10. Základem je jednoduchost – umění co nejvíce práce vůbec nedělat. 11. Nejlepší architektury, požadavky a návrhy vznikají v týmech, které se samy organizují. 12. Tým v pravidelných intervalech vyhodnocuje svou práci a upravuje své postupy tak, aby byl co nejefektivnější. Fáze celého projektu v agilních metodikách 1. Nultá iterace – první krátká analýza a naprogramování nějaké základní činnosti. V agilním týmu nejde příliš o to, co se v této části bude implementovat. Podmínkou je, aby na konci byl hotový kousek aplikace, který se dá předvést (tedy i klientovi). 2. Analýza změny (výběr toho, co se bude implementovat, analýza a designování změn). 3. Samotná implementace požadované vlastnosti (či vlastností). Fáze celého projektu v agilních metodikách 4. Předvedení klientovi. 5. Pokud není produkt hotov, zpět na bod 2. 6. Pokud ano, následuje údržba, rozvoj (rovněž v iteracích). Body 2–4 se označují jako jedna iterace. Tyto body se opakují tak dlouho, dokud není vývoj ukončen (úspěchem, odložením projektu, proto, že dojdou peníze, změnou priorit klienta). SCRUM – metoda řízení agilního vývoje • V programování SCRUM (česky mlýn, skrumáž) je iterativní a inkrementální metodologie agilního vývoje softwaru používaná na řízení produktového vývoje. • Definuje flexibilní, holistickou strategii produktového vývoje, kde vývojový team pracuje jako jednotka na dosažení společného cíle", zpochybňuje předpoklady "tradičního, sekvenčního přístupu" k vývoji produktu, a umožňuje týmům se samoorganizovat podpořením fyzické kolokace nebo blízké online spolupráce všech členů týmu, stejně jako denní ústní komunikaci všech členů týmu a disciplín v projektu. SCRUM – metoda řízení agilního vývoje • Klíčový princip SCRUMU je jeho pochopení, že během projektu mohou zákazníci změnit názor o tom, co chtějí a potřebují (často zvané "souhrn požadavků") a že nepředvídané úkoly nelze jednoduše řešit tradičním předvídáním a plánováním. • Scrum používá empirický přístup, podle kterého problém nelze zcela pochopit nebo definovat a proto se soustředí na maximální schopnost týmu rychle dodat a reagovat na nové požadavky. SCRUM – metoda řízení agilního vývoje • Základem SCRUMU je Sprint - periodická činnost (s periodou obvykle uváděnou v týdnech), která je neustále kontrolována (např. každých 24 hod, 48 hod). • Vstupními parametry Sprintu jsou tzv. Backlog itemy (seznam návrhů na vylepšení stávajícího produktu, příp. chyby) a výstupním parametrem je Produkt s novou funkcionalitou, příp. bez zjištěných chyb. SCRUM proces Role v SCRUM • Product Owner - osoba zodpovědná za výsledný produkt, přiřazuje priority jednotlivým backlog itemům (vytváří Selected Backlog) • Scrum Master - osoba, jejíž úkolem je zajistit hladký průběh sprintu, organizovat schůzky, řešit případné administrativní problémy • Team - programátoři • Stakeholder(s) – uživatelé produktu, manažeři, osoby, kterých se problém dotýká, ale produkt (systém či SW) nevytvářejí Vlastník produktu (product owner) • Vlastník produktu reprezentuje zainteresované subjekty a je hlasem zákazníka. Je odpovědný za ujištění, že team do byznysu přidá hodnotu. Vlastník produktu píše články pro zákazníky (typicky zkušenosti uživatelů), hodnotí a přiřazuje jim priority, a přidává je do produktového backlogu. • Scrum týmy mají mít jednoho vlastníka produktu, tato role se nemá spojit se scrum masterem. Product owner má být na obchodní straně projektu, a nikdy nemá interagovat s členy týmu o technických aspektech vývoje. Tato role je stejná jako role customer representative (reprezentant klientů) v jiných agilních frameworcích. Role product ownera • demonstrovat řešeni pro klíčové stakeholdery, kteří nebyly na iteračním demu • ohlašovat uvedení nových verzí • komunikovat stav týmu • organizovat milníkové přehledy • vzdělávat v procesu vývoje • dohadovat priority, rozsah, financování a rozvrh • ujistit se, že produktové testy jsou viditelné, transparentní a jasné Vývojový team • Je odpovědný za dodání potenciálně použitelných inkrementů (potentially shippable increments - PSIs) produktu na konci každého sprintu (cíl sprintu). • Team je složen z 3-9 jednotlivců, kteří dělají aktuální práci (analýza, design, vývoj, test, technická komunikace, dokument, atd.). Vývojové týmy jsou vícefunkční, se všemi dovednostmi vytvořit produktový inkrement. • Vývojový team v skrumu je sebeorganizující, i když tady může být nějaký stupeň interakce s projektovým managementem (project management offices - PMOs). Scrum master • Scrum je usnadněný scrum masterem (mistrem), který je odpovědný za odstranění překážek teamu na dodání produktových cílů. • Scrum master není tradiční team leader nebo projektový manažer, ale koná jako prostředník mezi teamem a jakýmikoli negativními vlivy. • Scrum master zajišťuje, že scrum proces je použit jako bylo plánováno a členové týmu dodržují dohodnuté procesy. Často organizuje schůzky a povzbuzuje tým k zlepšení. Tato role se někdy označuje jako "team facilitator" na zdůraznění duální funkce. Eventy (události) • Sprint (nebo iterace) je základní jednotka vývoje ve scrumu. Sprint je časově omezená snaha, tedy je omezen na specifický čas. Doba je určena dopředu pro každý sprint a obvykle je to jeden týden až jeden měsíc, nejčastěji 2 týdny. • Každý sprint začíná eventem plánování sprintu, cílem kterého je definovat úkoly sprintu, kde je definována práce sprintu a odhadnut závazek pro cíl sprintu. • Každý sprint končí recenzí sprintu (sprint review) a retrospektivou, kde je reportován progres pro stakeholdery a definují se úlohy na zlepšení pro další sprinty. • Scrum zdůrazňuje zpracovaný produkt na konci sprintu, který je opravdu hotový, v případě software to může znamenat, že software byl integrován, kompletně testován, zdokumentován a potenciálně může být dodán. Plánováni sprintu Na začátku sprintu, tým organizuje sprint planning event - plánovací událost: • vybrat jaká práce se udělá • připravit úkoly sprintu, které určí čas na úkoly pro celý tým • definovat a diskutovat kolik práce je třeba udělat během sprintu • 4-hodinový limit pro 2-týdenní sprint, poměrně pro jinou délku • v první půli se celý tým (vývojový tým, scrum master a product owner) dohodnou, které produktové položky (backlog) budou v daném sprintu uvažovat • v druhé půli vývojový team urči práci (úlohy) potřebné na dodání položek backlogu, co rezultuje do sprintového backlogu Denní scrum Každý den během sprintu team organizuje denní scrum (nebo stand-up) se specifickými zásadami: • Všichni členové softwarového týmu přijdou připraveni. • Denní scrum začne přesně načas i když někteří členové chybí. • Denní scrum má proběhnout každý den na stejném místě a ve stejný čas. • Délka denního scrumu je omezena na 15 minut. • Každý je vítán, i když obvykle mluví jen teamové role scrumu. SCRUM in under 10 minutes • https://www.youtube.com/v/Q5k7a9YEoUI%26hl=en%26fs=1%26 Příklady dalších agilních metodik Extrémní programování (XP) XP je pravděpodobně nejznámější agilní metodikou. Propaguje časté dodávky software v krátkých vývojových cyklech. Kromě toho navrhuje párové programování, jednotkové testování celého kódu (nejdříve se vytvoří test, až pak samotný kód), programovat jen to, co je v danou chvíli nezbytné, jednoduchý a jasný kód. Mezi další praktiky patří společné vlastnictví kódu a neustálý refaktoring. Vývojáři by měli počítat se změnami požadavků v průběhu času. Důležitá je častá komunikace se zákazníkem i mezi programátory. Příklady dalších agilních metodik Vývoj řízený vlastnostmi (FDD – Feature Driven Development) FDD začíná vytvořením doménového modelu popisujícího celý systém. Ten se převede do seznamu vlastností (elementární funkcionality, které přináší hodnotu uživateli). Vývoj má celkem pět fází (první tři sekvenční, další dvě iterativní). Iterace trvá většinou dva týdny. Během každé iterace se implementují konkrétní užitné vlastnosti systému. Zákazník průběžně dostává mezivýsledky a nové verze produktu. Na rozdíl od XP nebo SCRUM je jednotlivým programátorům práce přidělena – nevybírají si ji sami. Příklady dalších agilních metodik Vývoj řízený testy (TDD – Test Driven Development) TDD navrhuje psaní testů před samotným kódem a následně naprogramovat samotný kód. Implementuje se přesně takové množství kódu, jaké dokáže projít testem. TDD navrhuje psaní testů před samotným kódem a následně naprogramovat samotný kód. Implementuje se přesně takové množství kódu, jaké dokáže projít testem. Příklady dalších agilních metodik Crystal metodiky Nejde jen o jednu metodiku. Hlavní myšlenkou je to, že je lepší metodiku přizpůsobit danému projektu, žádná metodika nebude vyhovovat každému projektu. Vytvoření individuální a účelové metodiky pro konkrétní projekt je první fází vývoje. Pro vytvořenou metodiku je rozhodující například velikost projektu a vývojového týmu. Příklady dalších agilních metodik Lean development Lean development je spíš než metodikou souhrnem pravidel, jejichž používání by mělo zefektivnit a zrychlit vývojový proces. Tato pravidla zní: eliminovat zbytečné (to, co nepřináší zákazníkovi žádnou hodnotu), zdůraznit proces učení, rozhodovat se tak rychle a pozdě, jak je možné, posílit odpovědnost týmu, zabudovat integritu a vidět systém jako celek.