====== N-INS 1.1 První otázka (první část) ====== ====== Zadání ====== Modely životního cyklu SW. Návaznosti a produkty jednotlivých etap. Aplikace CASE v životním cyklu. Specifikace požadavků. Prototypy a oponentury. ====== Vypracování ====== ===== Modely životního cyklu SW ===== **Lit. 1** Kniha IS (str. 97-102), **Lit. 3** TIS II (7. přednáška), **Lit. 4** ANANAS (1. a 16. přednáška), **Lit. 6** OMNIS (1. přednáška), **Lit. 7** SDCL, **Lit.8** Vypracované otázky k IS. ==== Definice ==== "**Software Development Life Cycle Model** -- framework that describes the activities performed at each stage of a software development project."((Lit. 7, sld. 4)) "**Životní cyklus SW** popisuje život SW od jeho návrhu, přes implementaci, až po jeho předání a údržbu."((Lit. 6, první přednáška)) ==== Jednotlivé etapy ==== * Specifikace cílu, vize, plánování * Specifikace požadavků * Návrh * Implementace * Testování * Evaluace * Předání a nasazení * Provoz a údržba {{:mgr-szz:in-ins:1_software_lifecycle.jpg?300|Fázy životního cyklu SW}} ==== Vodopád ==== * jeden z nejstarších modelů vývoje SW * po úplném dokončení jedné etapy je její výsledek předán jako vstup pro další etapu -- k zakončené etapě není nutné se vracet * začnu-li padat, nezastavím se dříve, než se rozbiji o kámen zvaný předvedení * problémy s cenou v případě nezdaru v některé z pozdějších etap * existují však variace nebo vylepšení tohto modelu {{:mgr-szz:in-ins:1_vodopad.png?300|}} * jednoduchý k porozumění a k použití * poskytuje jasnou strukturu pro méně zkušený tým * požadavky na systém musí být dopředu známé * málo flexibilní * může dávat mylní dojem progresu * chyby, ke kterým je potřeba se vracet – zvyšují se náklady * slabá kontrola uživatelem - systém vidí až na konci (může být pozdě) * požadavky na systém jsou dobře známé * definice produktu je stabilní * dokonalé pochopení technologií * nová verze existujícího produktu ==== V-Shaped model ==== * upravená varianta vodopádu, která zdůrazňuje verifikaci (studie proveditelnosti, revize, inspekce,...) a validaci (testování) * testování produktu je plánováno paralelně s jednotlivými fázemi vývoje * jenom validace nestačí * účinnost odhalení chyb se zvyšuje verifikací -- může být až 80% {{:mgr-szz:in-ins:1_v-shaped.png?300|}} * jasné a jednoduché použití * důraz na naplánovaní verifikace a validace je kladený už na začátku vývoje * každý výstup z fáze musí být prověřený * projektový manažment může sledovat progres po jednotlivých milnících * souběžné události se nedělají lehko * dynamické změny v požadavcích se nedělají lehko * neobsahuje analýzy rizik * pro vývoj systému, který vyžaduje vyšší spolehlivost * požadavky na systém jsou dobře známé * řešení a technologie jsou dobře známé ==== Prototypování ==== **Prototyp** -- částečně funkční model systému, který realizuje nebo simuluje některé vlastnosti systému. * vývojáři vytvoří prototyp v průběhu fáze specifikace požadavků (analýzy) * tvorba prototypů probíhá za účelem získávání poznatků * prototyp se prezentuje koncovým uživatelům, dává zpětnou vazbu vývojářům * prototypy se pak případně vylepšují, použijí nebo zahodí {{:mgr-szz:in-ins:1_prototyping.png?600|}} * zákazník "vidí" požadavky na systém * vývojáři se učí od zákazníků (komunikace nad doménou) * více se upřesňuje koncový produkt * umožňuje větší flexibilitu návrhu a vývoje * protypy stimulují uvědomování si potřebné přídavné funkcionality * tendence sklouznout k vývoji “code-and-fix” * špatná reputace za “quick-and-dirty” methods * je nutné stanovit hranici pro vytváření prototypů, aby se nevytvářely donekonečna (scope creep) * spíše pro menší systémy * když jsou nepřesně formulovány, případně měnící se požadavky na systém, nebo požadavky musí být objasněny * vývoj uživatelského rozhraní * pro případ rychlé demonstrace systému * nový, originální návrh * vhodné pro OO analýzu a návrh ==== Spirálový model ==== * vytvořený hlavně za účelem minimalizace rizik při postupu pomocí vodopádu * jednotlivé kroky se ve spirále opakují se stále vyšším a vyšším stupněm zvládnutí problematiky * stanoví se cíle a výchozí analýza požadavků a návrh architektury * výchozí prototyp a jeho předvedení -> plán vývoje prototypu -> provede se analýza alternativ a rizik * několikanásobně se provede životní cyklus prototypu * poslední prototyp se nazývá operační -> po něm následuje zbytek vodopádu (návrh, kódování, testování, předání, údržba) {{:mgr-szz:in-ins:1_spiral.jpg|}} * zahrnuje analýzu rizik * uživatel (zákazník) brzo vidí systém v podobe prototypu * hodně rizikové funkce se vytvářejí jako první * návrh nemusí být úplně perfektní * zákazníci jsou lépe provázaní s každou fází životního cyklu * včasný a častý feedback od zákazníků * lepší odhad kumulativních nákladů * čas strávený nad vyhodnocováním rizik u projektů s malými nebo nízkymi riziky * celkově může být hodně náročné na čas * spirála by mohla končit v nekonečně :) * může být obtížné definovat konkrétní a ověřitelné mílníky * pro vývoj od počátku * vhodné pro velké systémy * vhodné pro IS, kde je známá míra nejistoty ve stanovení požadavků (uživatelé jsi nejsou jistí potřebami) * když je vyhodnocení nákladů a rizik důležité * pro středně až vysoko rizikové projekty ==== Výzkumník ==== **Analyzuj a navrhni systém → Implementuj systém → Používej systém → Pokud vyhovuje, předej systém. Pokud ne, vrať se k nové implementaci.** * je to experimentování, u kterého často netušíme, jak dopadne * v průběhu vývoje se řešitelé při získávání poznatků a zkušeností často vracejí k již přežitým etapám * práce se obtížně řídí a plánuje * často dochází k překročení stanovených finančních i časových limitů * má problémy s dokumentací (neexistující či neplatná) * zpravidla do vývoje vidí jen jeden výzkumník nebo výzkumný tým a jejich rozpad či odchod pracovníka znamená ukončení projektu (nenahraditelnost řešitelů) * tento model je vhodný řekněme pro programování věcí, které řešitelé neznají, pro experimentální projekty ==== Iteratívní vývoj ==== **Iterativně = „předělávat“** * celý projekt se vyvíjí v několika iteracích * iterace směřují k postupnému vylepšení, zpřesnění, dodělání nebo opravení části systému * výsledkem každého cyklu je větší a lépe fungující část cílového systému * každá iterace obsahuje analýzu, návrh, testování apod. (tj. miniaturní vodopád),ale s různou intenzitou, např.: * v první iteraci provést celkovou analýzu požadavků a obrysový plán vývoje, více rozpracovat jádro systému, implementovat základní testovací třídy * v druhé iteraci podrobně rozpracovat důležité části systému, rozmodelovat je a částečně implementovat * ve třetí iteraci podrobně rozpracovat méně podstatné části systému, doimplementovat věci z předchozí iterace * vývoj typu vodopád je tedy iterativní vývoj s jedinou iterací {{:mgr-szz:in-ins:1_iterative.jpg?300|}} * rychlejší (dílčí) výsledky (umožňuje dříve dospět k SW (po částech)) * rychlejší odhalení chyb * lze vyvíjet i v menším týmu * snadněji se integrují produkty třetích stran a existující aplikace * celý systém je hotový až za delší dobu * obtížně se zkracují termíny realizace * u některých systémů je obtížné použítí * nutnost předělávat kód (není tak velká nevýhoda -- je lepší špatný kód přepsat, než ho nějak obcházet) ==== Inkrementální vývoj ==== **Inkrementálně = „přidávat k“** * uplatňuje se zejména u větších projektů a/nebo v agilním vývoji * jednotlivé části systému (přírůstky, inkrementy) vytváříme „nezávisle“ na zbytku a pak integrujeme * vývoj jednotlivých přírůstků může probíhat iterativně, vodopádem, XP,... -- nejčastěji se používá iterativní vývoj přírůstků * vývoj typu vodopád je tedy inkrementální vývoj s jediným přírůstkem představujícím celý systém. {{:mgr-szz:in-ins:1_incremental.png|}} * ve více týmech (možný paralelní vývoj) * integrace existujících aplikací a aplikací třetích stran * samotné přírustky lze realizovat různymi metodami * snadno lze modifikovat, modernizovat * vyžaduje dobré plánování a návrh * vyžaduje dřívější definici kompletního a plně funkčního systému, aby se definovaly inkrementy * vyžaduje dobře zadefinovat rozhraní modulů * projekty, které mají dlouhý plán vývoje * iterativní a inkrementální vývoj používejte pouze pro projekty, se kterými chcete uspět :-) -- Martin Fowler: UML Distilled ==== RUP ==== * není jeden konkrétní ustálený proces, ale spíše framework určený k tomu, aby ho organizace implementovala a upravila dle svých potřeb a specifik * aplikuje iterativně-inkrementální vývoj * výrobek prochází přes čtyři základní fáze: * Zahájení (Inception): potvrzení konceptu, proveditelnost, cíle * Rozpracování (Elaboration): detailní požadavky, scénáře použití, architektura, komponenty, vzory interakce na vysoké úrovni * Konstrukce (Construction): zdokonalení architektury, implementační iterace řízené rizikem * Předání (Transition): uživatelské přijetí, ... * každá fáze může být dále rozdělena do různých iterací (cyklů) * každá iterace (cyklus) obsahuje analýzu, návrh, implementační aktivity a produkuje novou verzi systému – release (inkrement) {{:mgr-szz:in-ins:1_rup.jpg|}} ==== Agilní metodiky ==== **Manifesto of Agile Software Development** [[http://agileManifesto.org]] * metody zaměřené více na lidi – určujícím faktorem v úspěchu projektu je kvalita lidí pracujících na projektu a jejich spolupráce * často iterativní nebo inkrementální vývoj s krátkými iteracemi (jeden měsíc a méně) * malé ale výkonné týmy (dvojice) * vhodné pro malé a nekritické aplikace * malý důraz na dokumentaci * snaží se o dodržení rozpočtu a harmonogramu tím, že umožňuje změny funkcionality * zapojení zákazníka do vývoje (zákazník se účastní sestavování návrhu a testů, ideálně je součástí vývojového týmu) * individuality a interakce mají přednost před nástroji a procesy * fungující software má přednost před obsáhlou dokumentací * spolupráce se zákazníkem má přednost před sjednáváním smluv * reakce na změnu má přednost před plněním plánu {{:mgr-szz:in-ins:1_agile.png?400|}} * Adaptive Software Development (ASD) * Feature Driven Development (FDD) * Crystal Clear * Dynamic Software Development Method (DSDM) * Rapid Application Development (RAD) * Scrum * Extreme Programming (XP) * Test-Driven Development (TDD) ===== Návaznosti a produkty jednotlivých etap ===== **Lit. 1** Kniha IS (str. 84-86), **Lit. 4** ANANAS (1. přednáška), **Lit. 9** Analyza a navrh IS.mm (Navaznosti a produkty jednotlivych etap). ==== Návaznosti ==== * každá etapa je ukončena vnitřní oponenturou * problém v etapě znamená vracet se k některé z předchozích etap * každá etapa má své dokumenty (dokumentace se buduje během celého ŽC) * ideálně se nezabývat nižšími etapami při projednávání vyšší * vystopovatelnost požadavků !!! (CMM) ==== Produkty jednotlivých etap ==== === Specifikace požadavků === * neformální specifikace * formální specifikace * funkční požadavky * nefunkční požadavky * uživatelský vzhled aplikace * oponenturou je feasibility study (uskutečnitelnost) === Specifikace systému === * High Level Design dokument * analýza funkčních požadavků * diagramy použití * analytický diagram tříd * základní sekvenční diagramy * základní komunikační diagramy * analýza nefunkčních požadavků * varianty architektury běhového prostředí * deployment diagramy * hlavní rizika projektu * předběžný projektový plán * základní milestony * termíny * základní cena * time-material vs fixed-priced * plán testování * návrh uživatelského manuálu * oponentura je revize zákazníka + vnitřní oponentura === Návrh === * návrh architektury * specifikace architektury * plán testování systému * návrh rozhraní * specifikace rozhraní * plán integračních testů * podrobný návrh * specifikace návrhu (detailní návrhový class diagram, sequence diagramy, přesný deployment diagram) * plán testování jednotek * běhová dokumentace * popis běhového/vývojového/testovacího prostředí * plán obnovy po výpadku * instalační skripty * upgrade skripty * uživatelská dokumentace * uživatelská příručka * instalační příručka * běhová příručka * tutoriály * oponentura je informace zákazníka + vnitřní oponentura === Implementace === * balíčky s kódem * plán testování jednotek * revize kódu jako oponentura, čtení, inspekce === Testování === * testovací scénaře * konečný uživatelský manuál * záznamy o provedených testech a výsledky * protokol o testování jednotek * protokol o testování modulů * protokol integračních testů * protokol testování sytému === Předávání systému === * přejímací testování (akceptační testy) * konečný systém a dokumentace * předávací protokol === Provoz a údržba === * chybové výstupy aplikace * sběr uživatelských požadavků a postřehů ===== Aplikace CASE v životním cyklu ===== **Lit. 1** Kniha IS (str. 297-300), **Lit. 8** Vypracované otázky k IS, **Lit. 9** Analyza a navrh IS.mm (Aplikace CASE v zivotnim cyklu). === Computer Aided Software Engineering (CASE)=== === Z hlediska životního cyklu SW se nástroje CASE dělí do následujících skupin: === ==== 1. Horní (upper) CASE ==== * **použití pro specifikaci cílů, počáteční fáze specifikace požadavků, řízení projektu** * **hlavním cílem je porozumění a specifikace systému jako celku** (analýza organizace, v níž se má systém používat, zobrazení procesů v organizaci, definice klíčových informačních toků, atp.) * patří sem i nástroje pro plánování a vedení projektů, procesní inženýrství === Hlavní nástroje === * decision trees, decision tables * diagramy toků dat a jejich varianty * ER diagramy bez podrobné specifikace všech atributů * prostředky pro řízení projektů (napr. JIRA, Microsoft Project) * dokumentografické systémy * popis základních vlastností systému prostředky OO modelování ==== 2. Střední (middle) CASE ==== * **použití pro podrobné specifikace požadavků, návrh systému, dokumentace a vizualizace systému** * **hlavní cíle: formalizace specifikace a návrhu s cílem usnadnění změn a snažší komunikace se zákazníky, vytvoření modelů usnadňujících, případně umožňujících generaci návrhu** * je jádrem komerčně dodávaných CASE systémů * především u větších firem * zahrnují prostředky pro podrobnou specifikaci požadavků a návrh systému * nejúspěšnější, neboť pokrývá činnosti, které nejsou předmětem činnosti konzultačních firem, a firem zabývajících se tvorbou modelů podniků a řízením projektů * nejsou dosud ve větší míre integrovány do moderních prostředí pro vývoj SW === Hlavní nástroje === * diagramy toků dat včetně možnosti podrobnějšího popisu procesů, dat. úložišť a datových toků * ER diagramy s možností detailní specifikace atributů * pro objektovou metodologii diagramy OO technik – diagramy tříd a jejich vztahů, diagramy instancí, přechodové dia., atp. * systém správy dokumentů a správy konfigurace * systémy vyhodnocování metrik souvisejících s návrhem systému a specifikacemi požadavků * vývoj prototypů, většinou potěmkinovských, návrh rozhraní, generátory obrazovek a sestav * generátory definic dat. Někdy pouze kostry definic, někdy se doplňují ručně. ==== 3. Dolní (lower) CASE ==== * **obsahují nástroje na podporu kódování, testování a údržby a reverzního inženýrství** === Hlavní nástroje === * vývojové prostredie (IDE) * generátory kódu * prostředky reverse engineering. Nástroje umožňující rekonstrukci dokumentace z existujícího SW nebo alespoň detekci míst, kde již existující dokumentace neodpovídá aktuálnímu stavu. * prostředky sledování a vyhodnocování metrik kódu * prostředky a nástroje plánování a zajišťování kvality SW (sběr info o průběhu testování, řízení testování, sběr a vyhodnocení dat, inspekcí a výsledků testů, pravidla přijímání prvků konfigurace, podpora plánování opatření na zajišťování kvality) * správa konfigurace * prostředky sledování a vyhodnocování práce systému ==== Aktuálnější dělení ==== - Pre-CASE: plánování - Upper-CASE: specifikace požadavku - Middle-CASE: kooperace při návrhu - Lower-CASE: návrh a vývoj - Post-CASE: údržba, modifikace ===== Specifikace požadavků ===== **Lit. 1** Kniha IS (str. 83, 87-95), **Lit. 3** TIS II (5. přednáška), **Lit. 4** ANANAS (2. přednáška), **Lit. 8** Vypracované otázky k IS, **Lit. 9** Analyza a navrh IS (Specifikace pozadavku). ==== Specifikace požadavků ==== Požiadavky rozdeľujeme na **funkčné** (funkcionalita) a **nefunkčné** (napr. výkon, bezpečnosť). Výsledkom špecifikácie je tzv. feasibility study (štúdium uskutočniteľnosti -- vyhodnotenie z ekonomického hľadiska, právneho hľadiska, schopnosti tímu a pod.). Analýza představuje studium problému před tím, než podnikneme nějaké akce směřující k jeho řešení. Předmět analýzy: * Existující systém, jehož struktura a funkce nejsou zřejmé zákazníkovi ani řešiteli, případně zákazník neumí strukturu chování systému řešiteli vysvětlit. * Neexistující systém, o němž má zákazník nepříliš přesnou představu a neumí požadované funkce řešiteli vysvětlit. Výsledkem analýzy je specifikace systému. Specifikace požadavků je součástí analýzy. Vychází z dokumentu "Stanovení cílů" (z fáze stanovení vizí). Obsahuje cíl řešení, požadovaný výsledek. Je základem a úzkým místem každého systému. Cílový stav je dokumentovaný tak, aby bylo možné posoudit, zda implementace uvedeného stavu dosáhla. Dokument Specifikace požadavků je závazným podkladem pro návrh a realizaci systému. Může být formální i neformální. Má obvykle následující strukturu: - název projektu a identifikátor projektu - úvod - shrnutí úkolů v obecně srozumitelné rovině - vymezení uživatelů a způsobu využití produktu - perspektivy realizovaného systému (doba života,...) - způsob vedení dokumentace - zajištění spolupráce mezi dodavatelem a uživatelem - dokumenty odkazované v textu - použité zkratky a slovník - vazby na jiné projekty - požadavky na HW, efektivnost a spolehlivost - rozpis dat a funkcí - dekompozice systému - plán testů - vymezení obsahu dokumentace předávané uživateli - termíny realizace, plán realizace - ekonomické a organizační zajištění (odhad nákladů, řešitelský tým) - vymezení způsobu údržby a způsobu prodeje produktu dalším uživatelům **Základní vlastnosti specifikace požadavků**: úplnost, ověřitelnost, bezespornost, konzistentnost, modifikovatelnost, srozumitelnost, vystopovatelnost (každý požadavek má své důvody), použitelnost i během provozu systému, stabilnost (aby se požadavky neměnily příliš). ==== Techniky zjišťování požadavků ==== === Sběr dat obecně === * cizí firma * výhoda odstupu * drahé * samotná firma * nemusí podchytit všechny procesy (některé intuitivní) * levné * řešitelská skupina zahrnující oba (doporučuje se) === Jednotlivé techniky === - **Interview:** dobře připravený pohovor o tom, co pracovník uživatele dělá, co by mohl IS zlepšit či přinést. Může být i skupinové. Existence moderátora a zapisovatele. - **Strukturované interview:** interview, kde se postupně odpovídá na otázky dle předem připraveného dotazníku. - **Dotazníky:** rozesílají se, uživatelé vyplní sami. Levné, ale nezjistí se vše. - **Studium dokumentů:** používaných zákazníkem. - **Pozorování chodu prací u zákazníka:** drahé, zdlouhavé, ruší při práci. - **Účast na pracovním procesu:** totéž co výše, někdy se neodchytí výjimečné případy. - **Analýza existujícího IS:** nebezpečí převzetí chyb původního IS. - **Společný vývoj požadavků:** formulace požadavků skupinou pracovníků uživatele a konzultantů dodavatele IS. * **Brainstorming:** Neformální porada s cílem najít nová řešení, vize a myšlenky. Okamžité nápady se hned zapisují na flipcharty a obvykle neformálně hodnotí, i bláznivé nápady se nezatracují a zapisují, vyhodnocení a koordinace nápadů již nebývá součástí porady. * **Workshop:** pro hodnocení a kontrolu průběhu prací, získání přehledu o stavu prací. Členění: úvod, řada kratších vystoupení –- presentací výsledků s diskusí, shrnutí a závěr. * **Oponentury:** nejefektivnější detekce anomálií, snížení rizika neúspěchu. Pracné, detekuji, ale nemám opravovat (revize, inspekce,...). ===== Prototypy a oponentury ===== **Lit. 1** Kniha IS (str. 97-98, 103-111), **Lit. 3** TIS II (5. přednáška), **Lit. 4** ANANAS (8. přednáška), **Lit. 8** Vypracované otázky k IS, **Lit. 9** Analyza a navrh IS (Prototypy a oponentury). ==== Prototypy ==== **SW prototyp = částečně funkční model systému, který realizuje či simuluje některé vlastnosti systému.** Prototypování umožňuje odhalit nedostatky již v začátku projektu. Prototyp není určen k cílovému řešení, pouze k ověření specifikace funkcí, zpřesnění požadavků. Bohužel zřídka otestuje vlastnosti, jež se ukážou až v provozu. Důvody pro vytvoření prototypů: * ověření správnosti a úplnosti specifikace požadavků * ověření správnosti a úplnosti funkcí a návrhu struktury systému * předběžný odhad nákladů a rizik realizace Výhody: ověření správnosti, lepší konzultace se zákazníkem a odhady pracnosti, brzo máme něco v ruce. Nevýhody: větší pracnost, ne vždy odhalí funkční chyby === Typy prototypů === - Potěmkin: model cílového systému, který simuluje uživatelské rozhraní, tedy obrazovky dialogů a tvar tiskových sestav. Výkonná část systému téměř, čí úplně chybí. - Neúplný: modeluje pouze některé funkce. - Jiný kůň: téměř úplný, ale funguje na jiném HW nebo nad jiným základním SW - Hlemýžď: neefektivní, pomalý - Nepříjemný: má nepříjemné uživatelské rozhraní, je nestabilní - Lajdák: nereaguje správně na chyby v datech a chyby obsluhy ==== Oponentury ==== * nejefektivnější detekce anomálií * snížení rizika neúspěchu * pracné Napr. specifikace požadavků by měla být zakončena oponenturou. Kontroluje se splnitelnost požadavků, dodržení záměrů cílů projektu, návrh a zhodnocení plánu dalšího postupu, správnost požadavků, bezespornost, atd. Výstupní dokument je Feasibility study = studie splnitelnosti. Její součástí mohou být výstupy částí vnitřních oponentur. Nejpozději se vypracovává před zahájením kódování, nejdříve však po dokončení spec. požadavků. {{:mgr-szz:in-ins:1_v-shaped.png?300|}} === Dělení === * **vnitřní -- dohled**: kontrolní činnosti prováděná vedením firmy formou kontrolních dnů. Prověrka skutečností důležitých z manažerského hlediska. * **vnější -- audit**: varianta porady, která prověřuje dodržování podmínek smlouvy, funkce systému, zda se řešení (ekonomicky) neodchyluje od plánu a zda je naděje na dosažení cílů co do obsahu i termínů. Dohled je prováděný nezávislou organizací. Provádí auditor. === Vnitřní oponentury === * kontrolní akce prováděné členy řešitelského týmu * druhy oponentur se liší úrovní formalizace a počtem účastníků == Společné rysy == * účastní se řešitelé, možno i spoluřešitelé ze strany budoucích uživatel * cílem je detekce chyb, chyby se neodstraňují, jen zaznamenávají * detekce chyb nesmí být důvodem postihu jejich původců * neměly by trvat déle než 2 hodiny == Inspekce == * oponentury prováděné podle přesných pravidel v 1 nebo více fázích ve skupině **Jednofázové inspekce** * tým (3-6 lidí), vedoucí (moderátor), 1-3 oponenti, předčitatel a zapisovatel * pročítá se specifikace části nebo dokument nebo program, ostatní hledají chyby * materiály mají několik dní předem, o problémech se dělá zápis * méně než 2 hodiny, řídí moderátor, nemá se toho účastnit vedení * problémy se neřeší, jen detekují (výjimka - uživatelská dokumentace) * inspekce od celku k částem * odhalení až 80 % chyb **Etapy jednofázové inspekce:** - plánování (moderátor), příprava materiálů, výběr členů, termín,... - úvodní studium (účastnící se školí, stanoví se jim role) - příprava (materiály pár dní dopředu, studium materiálů) - inspekce (pod vedením moderátora, zjišťují se chyby) - vypracuje se zápis (data do DBS) - přepracování (oprava materiálů) - kontrola (kontrola, zda byly chyby opraveny) **Aktivní inspekce = metoda “zasetých chyb”, sleduje kvalitu inspekce** * vhodné pro kontrolu programů a návrh dat * zjišťuje se, kolik bylo nalezeno zasetých chyb a skutečných chyb c/C=z/Z c ... počet nalezených chyb C ... celkový počet dosud neznámých chyb z ... počet nalezených zasetých chyb Z ... celkový počet zasetých chyb **Vícefázové inspekce** * některé činnosti se při inspekci provádějí separátně **Etapy vícefázové inspekce:** - provádějí jednotlivci: kontroly formálních vlastností (ty lze provést v principu i počítačem) Například se kontroluje celková struktura dokumentu, mnemotechnika zkratek, identifikátorů, index a úplnost odkazů, programovací standardy, typ org. rozložení, ... - skupinové inspekce: * oponenti dostanou materiály předem spolu s kontrolními otázkami jak co funguje * oponenti individuálně pročítají program či dokument a řídí se seznamem otázek a pokyny, co mají sledovat * ve skupině se výsledky z výše uvedených bodů jednotlivých respondentů porovnávají, zjistí se nejasnosti * provede se oponentura * vše se zanese do zápisu == Revize == * méně formální než inspekce, lze použít na větší celky **Etapy revize:** - určí se moderátor, ten si vybere oponenty - každý oponent dostane k analýze určitou část oponovaného materiálu a snaží se nalézt problematická místa - provede se vlastní revize (stručně se specifikuje úkol, uvedou se a prodiskutují zjištěné nedostatky, zhodnocení dodržení plánu práce, lze vypracovat i doporučení, zhodnocení kvality materiálu) - výstupem revize je souhrnné hodnocení s přílohami obsahující seznam problémů **Výhody:** větší flexibilita, možnost oponovat rozsáhlejší materiály, menší nároky na kvalitu členů oponentského týmu. **Nevýhody:** menší účinnost, menší možnosti měření kvality provedení. == Další techniky oponentur == * **Ve dvojicích:** dvojice (extrémní programování), vedoucí týmu vs. jeho zástupce. Jeden vymýšlí a píše a druhý kontroluje. Je to efektivní, zlepšují se znalosti, možnost převzetí. * **Procházení nebo strukturované procházení:** dvojice až trojice, jeden vysvětluje ostatním, často sám je schopen pak chybu odhalit. Podmínkou je dobrý vztah mezi členy, vysoké pracovní nasazení. * **Simulace textů (čtení kódu):** u programů se simuluje chování programů; prevence, obtíže detekce defektů, dnes již částečně řeší ladící programy, ale neřeší vše. * **Cleanroom:** formalizovaná metoda, zahrnuje formální důkazy správnosti, při vývoji IS ne příliš efektivní, lépe tam, kde netřeba úzce jednat se zadavateli. * **Týdenní posezení u kafe:** pravidelné schůzky, neformální diskuse, podpora dobrých vztahů, odchycení vznikajících problémů. * **Oponentury zdrojových textů programů:** * shora/zdola/efektivně * systém je hierarchie daná vztahem A potřebuje B: A -> B * pokud je dobře navržen, bývá to hierarchický strom * lze se rozhodnout, že začneme od A po směru šipek (shora od kořene), vč. potomky (do šířky) nebo * zdola od listů (raději do šířky) nebo * selektivně shora/zdola se snažíme co nejdříve dostat k oponentuře problematických komponent **Ne/výhody:** * shora: oponují/testují v prostředí, které se bude skutečně používat, ale menší obecnost * zdola: větší pracnost, obecnost, náročnost na data a předpoklady. **U oponentur lépe postupovat shora, u testů to není tak jednoznačné.** ====== Předměty ====== * [[https://is.muni.cz/auth/predmet/fi/podzim2011/PA102|PA102 Technologie informačních systémů I]] * [[https://is.muni.cz/auth/predmet/fi/jaro2011/PA105|PA105 Technologie informačních systémů II]] * [[https://is.muni.cz/auth/predmet/fi/podzim2011/PB007|PB007 Analýza a návrh systémů]] * [[https://is.muni.cz/auth/predmet/fi/jaro2011/PA103|PA103 Objektové metody návrhu informačních systémů]] * [[https://is.muni.cz/auth/predmet/fi/jaro2011/PA104|PA104 Vedení týmového projektu]] ====== Použitá literatura ====== - Král, Jaroslav. 1998. Informacní systémy : specifikace, realizace, provoz. Veletiny: Science. ISBN: 80-86083-00-4. - Král, Jaroslav. 2008. PA102 Technologie informačních systémů I (přednášky). FI MU, Brno. - Král, Jaroslav. 2009. PA105 Technologie informačních systémů II (přednášky). FI MU, Brno. - Ráček, Jaroslav. 2011a. PB007 Analýza a návrh systémů (přednášky). FI MU, Brno. Dostupné z [[http://is.muni.cz/el/1433/podzim2011/PB007/um/27384117/]] (Jan. 2012). - Ráček, Jaroslav. 2011b. PA104 Vedení týmového projektu (přednášky). FI MU, Brno. Dostupné z [[http://is.muni.cz/el/1433/jaro2011/PA104/um/22859873/]] (Jan. 2012). - Ošlejšek, Radek. 2011. PA103 Objektové metody návrhu informačních systémů (přednášky). FI MU, Brno. Dostupné z [[https://is.muni.cz/auth/el/1433/jaro2011/PA103/um/prez/]] (Jan. 2012). - Software Development Life Cycle (SDLC). Dostupné z [[https://docs.google.com/viewer?a=v&q=cache:bfhOl8jp1S8J:condor.depaul.edu/~jpetlick/extra/394/Session2.ppt+&hl=en&pid=bl&srcid=ADGEEShCfW0_MLC4wRbczfUxrndHTkbwguF9fZuaUCe0RDyOCWyO2PTmaPhHnZ4jRhZZ75maVO_7gVAD2ex5-QIhrj1683hMefBNkak7FkQJCAwd-i0-_aQfEVEEKP177h4mmkvMMWJ7&sig=AHIEtbRhMlZ-TUyioKEhLQQxXk1WoSJXWA&pli=1|PowerPoint – Powered by Google Docs]] (Jan. 2012). - Horačková, Lenka. Vypracované otázky k IS. Dostupné z [[http://fi.muny.cz/vypracovane-otazky-statnice-is.zip-594/]] (Jan. 2012). - SZZ_Informacni_systemy_varianta_I.zip. FIMUNY. Dostupne z [[http://fi.muny.cz/szz-informacni-systemy-varianta-i.zip-1180/]] (Jan. 2012). ====== Přílohy ====== {{:mgr-szz:in-ins:1a.pdf|}} -- rozšíření některých témat a soukromé zpracování, vycházelo se z této wiki na přelomu roku 2013/2014. Nekonzultováno s kantory. ====== Vypracoval ====== Ľuboš Kohút, [[https://is.muni.cz/auth/osoba/172607]], 172607@mail.muni.cz Aktuální stav: hotovo Ospravedlňujem sa za moje prípadné preklepy a chyby v češtine. ~~DISCUSSION~~