====== N-AP03 ====== ====== Zadání ====== Kvalita SW, techniky zajitění kvality, ISO 9000. ====== Vypracování ====== ===== Kvalita SW ===== Kvalita je dodržení explicitně stanovených funkčních a výkonových požadavků, dodržení standardů a charakteristik, které očekáváme od vyrobeného software. Kvalitu lze měřit: * Přímo – např. počet chyb ve vztahu k počtu řádků kódu. * Nepřímo – použitelnost, udržovatelnost software. Největším zdrojem defektů bývají samotné požadavky na systém. Nejdráž se defekty odstraňují poté co je systém nasazen do provozu. Výslede projektu je hodnocen jako: * **úspěšný** -- projekt je dokončen včas, bez překročení rozpočtu, se všemi specifikovanými rysy a funkcemi * **s výhradami** -- projekt je dokončen a funkční, ale překročil rozpočet, opožděný, méně rysů a funkcí, než bylo původně specifikováno * **neúspěšný** -- projekt je zastaven před dokončením, není implementován, nebo vyřazen po instalaci **Porucha** Neschopnost systému nebo systémové komponenty provádět požadovanou funkci ve specifikovaných hranicích. Porucha může nastat, když se narazí na chybu, jejímž výsledkem je ztráta očekávané uživatelské služby. **Četnost poruch** * poměr počtu chyb dané kategorie nebo významu k časovému intervalu; například poruchy/měsíc -- intenzita poruch * poměr počtu poruch k dané jednotce měření; například poruchy za jednotku času, poruchy pro daný počet transakcí, poruchy pro daný počet běhů programu **Fault -- chyba (defekt)** * chyba v kódu, která může být příčinou jednoho nebo více selhání * náhodná podmínka, která způsobuje, že funkční jednotka selhává při plnění požadované funkce (bug) **Error** Chyba (omyl) -- nesprávná nebo chybějící akce uživatele, která zapříčiní chybu (defekt) v programu **Některé druhy chyb** * algoritmická chyba * chyba syntaxe * chyba výpočtu a přesnosti * chyba dokumentace * chyba stresu nebo přetížení * chyba kapacity nebo meze * časová nebo součinnostní chyba * chyba propustnosti nebo výkonu * chyba zotavení * chyba HW a systémového SW * chyba nedodržení standardů a procedur == IBM ortogonální klasifikace defektů (ODC) == * **funkce** -- chyba ovlivňující schopnosti, rozhraní uživatelů, rozhraní výrobku, rozhraní s HW architekturou nebo globální datovou strukturou. * **rozhraní** -- chyba při interakci s ostatními komponentami nebo ovladači přes volání, makra, řídící bloky nebo seznamy parametrů. * **ověřování** -- chyba v logice programu, která selže při validaci dat a hodnot před tím, než jsou použity. * **přiřazení** -- chyba při inicializaci datové struktury nebo bloku kódu. * **časování/serializace** -- chyba, která zahrnuje časování sdílených a RT prostředků. * **sestavení/balení/spojování** -- chyba související s problémy s repozitory projektu, změnami vedení, nebo správou verzí. * **dokumentace** -- chyba, která ovlivňuje publikace a návody pro údržbu. * **algoritmus** -- chyba, která se týká efektivity nebo správnosti algoritmu nebo datové struktury, ne však jejich návrhu. ===== Techniky zajištění kvality ===== Jedná se o soubor technik patřící do společného řekněme oboru SQA – software quality assurance. Obecně lze mluvit o testování, validaci a verifikaci produktu. Validací se rozumí otázka, zda jsme vytvořili správný produkt tj. jestli produkt odpovídá potřebám uživatele. Verifikací se rozumí, zda jsme produkt vytvořili správně tj. zda produkt odpovídá specifikaci. Testováním se pak pokoušíme zmíněné předchozí dokázat pro omezenou sadu příkladů. Obecně se pak za úspěšný považuje takový test, který odhalí nějakou chybu. Testovat lze různými způsoby např. • Testování podle vstupních dat – vstupní data se rozdělí do vhodných tříd a produkt se otestuje. • Testování podle struktury programu – zde se snažíme o to, aby program prošel všemi možnými větvemi. Jinou možností jsou inspekce produktu, která spočívá v dialogu mezi inspektory a autory, kde se kladou otázky nad produktem a specifikací s cílem nálezt případné chyby. Základem je nový pohled na projekt. Pro určité omezené oblasti lze použít i matematické důkazy správnosti programů. ---- Cena opravy chyby se násobně zvětšuje s dobou neodhalení této chyby a aktuální fází projektu. Další techniky zajištění kvality popisují otázky z oboru Informačních systémů * [[mgr-szz:in-ins:1.1-ins|Modely životního cyklu SW. Návaznosti a produkty jednotlivých etap. Aplikace CASE v životním cyklu. Specifikace požadavků. Prototypy a oponentury.]] * [[mgr-szz:in-ins:1.2-ins|Strukturovaná analýza. Objektová analýza a návrh, UML. Nástroje a modely datové, funkční a časové dimenze systému. Softwarové metriky. CMM. Odhady COCOMO a funkční body.]] ==== Software Quality Assurance ==== {{:mgr-szz:ap-ap:inspekce.png?350|}} Efektivita přezkoušení se zvyšuje s formálností měření, následující seznam je od nejméně formálního přístupu pro nejvíce formální: * konverzace * přezkoušení mezi spolupracovníky * neformální prezentace * formální prezentace * prohlídka * recenze, inspekce == Verifikace a validace == * **Verifikace** -- test proti vnitřní činnosti, "dělat věci správně". Ověření zda vystupy dane etapy splnuji pozadavky vstupnich dokumentu. * **Validace** -- test proti specifikovaným funkcím, "delat správné věci". == Testování == Úplné testování je nerealizovatelné -- obvykle není možné otestovat každý možný průchod programem, proto by testy měly zahrnovat několik běžných hodnot a dále mezní hodnoty a hodnoty, které by projít neměly -- selektivní testování. **Testování černé a bílé skříňky** * **Černá** * funkční testování, nezajímá nás princip a jak to pracuje, ale co to dělá, a že to dělá správně * testovací případy založené na specifikaci požadavků * **Bílá** * je známá interní implementace, zohledňuje se struktura programu, průchody cykly, ... * výpočet cyklomatické složitosti (ukazatel počtu všech možných cest) -- snažíme se snížit **Testování shora dolů a zdola nahoru** Testování shora dolů odhaluje chyby analýzy a návrhu, je v souladu s prototypováním. Obě metody mají své nevýhody a nelze říci, že jedna je lepší. * **shora dolů** * použití "stubů" -- pahýly, protézy -- jednoduché náhražkové protézy se shodným rozhraním * složité objekty, modely nelze snadno zaměnit za protézu * výsledky testů na vyšších úrovních nemusí být přímo viditelné * **zdola nahoru** * klasický testovací proces s nadřazenými testovacími objekty -- "drivers". * čas a náklady na konstrukci testovacích objektů jsou obvykle vyšší než u stubů * až v závěru vznikne program použitelný pro předvedení ve formě protoypu === Kvalita === //Každý program dělá něco správně; nemusí však dělat to, co chceme, aby dělal.// **Kvalita** -- dodržení explicitně stanovených funkčních a výkonových požadavků, dodržení explicitně dokumentovaných vývojových standardů a implicitních charakteristik, které jsou očekávány u profesionálně vyrobeného software. **Aspekty kvality** * odchylky od požadavků na software * nedodržení standardů * odchylky od běžných zvyklostí (implicitních požadavků) == Faktory kvality - McCall et al. (1977) == * **Korektnost** -- rozsah toho, jak program splňuje specifikaci splňuje uživatelovy záměry. * **Spolehlivost** -- v jakém rozsahu lze očekávat, že program bude plnit zamýšlené funkce s požadovanou přesností. * **Efektivita** -- množství výpočetních prostředků a kódu, které program potřebuje na splnění svých funkcí. * **Integrita** -- v jakém rozsahu mohou být program nebo data používána neoprávněnými osobami. * **Použitelnost** -- úsilí vyžadované na učení, operování, přípravu vstupu a interpretaci výstupu programu. * **Udržovatelnost** -- úsilí vyžadované na vyhledání a opravu chyby v programu. * **Flexibilita** -- úsilí vyžadované na modifikaci provozovaného programu. * **Testovatelnost** -- úsilí potřebné na testování programu tak, abychom se ujistili, že plní zamýšlené funkce. * **Přenositelnost** -- úsilí potřebné na přemístění programu na jiný HW/SW. * **Znovupoužitelnost** -- rozsah, v jakém lze program nebo jeho části znovu použít v jiné aplikaci (funkce a balení produktu). * **Schopnost spolupráce** -- úsilí, které je nutné vynaložit pro připojení daného systému k jinému. === Capability Maturity Model (CPM) === **Úroveň 1: Výchozí** Chaotický proces, nepředvídatelná cena, plán a kvalita. **Úroveň 2: Opakovatelný** Intuitivní; cena a kvalita jsou vysoce proměnlivé, plán je pod vědomou kontrolou, neformální metody a procedury. Klíčové prvky * řízené požadavky * plánování softwarového projektu * řízené subkontrakty na software * zajištění kvality software * řízení softwarových konfigurací **Úroveň 3: Definovaný** Orientován na kvalitu; spolehlivé ceny a plány, zlepšující se, ale dosud nepředvídatelný přínos (výkon) systému kvality. Klíčové prvky: * zlepšování organizačního procesu * definice organizačního procesu * školicí program * řízení integrovaného software * aplikace inženýrských metod u softwarového produktu * koordinace mezi pracovními skupinami * detailní prověrky a oponentury **Úroveň 4: Řízený** Kvantitativní; promyšlená statisticky řízená kvalita produktu. Klíčové prvky: * měření a kvantitativní řízení procesu výroby * řízení kvality **Úroveň 5: Optimalizující** Kvantitativní základ pro kontinuální investice směřující k automatizaci a zlepšení výrobního procesu. Klíčové prvky: * prevence chyb * inovace technologie * řízené změny výrobních procesů {{:mgr-szz:ap-ap:cmm-e1351980596464.png|}} zdroj: http://www.kennethghartman.com/tag/initial-repeatable-defined-managed-optimized/ === Test Maturity Model (TMM) === Definuje stupně zralosti, které jsou dosahovány v průběhu zdokonalování procesu testování. * Level 1: Initial * Chaotické testování zaměřené pouze na nalezení chyb * Level 2: Definition * Definovaný a plánovaný proces * Level 3: Integration * QA plně integrováno do životního cyklu vývoje software * Level 4: Managment and Measurement * Důkladně definováno a testování je měřitelné * Level 5: Optimisation * Postupné zlepšování získané na základě minulých zkušeností z projektu. Integruje všechny postupy quality engeneering. Plánování, zajištění a řízení. Zaměřuje se na prevenci defektů. * Optimalizace samotného průběhu testování ==== Kvalita dle PA103 ===== **Kvalitativní atributy SA** Týkají se zejména nefunkčních (extra-funkčních) požadavků na systém: Nefunkční (extra-funkční) požadavky na systém se zpravidla omezují na způsob, jakým je systém implementován a jak realizuje svou funkcionalitu. Extra-funkční atribut je potom kvalitativní aspekt, kterého se může extrafunkční požadavek týkat. Příklady základních extra-funkčních kvalitativních atributů: * **Výkonnost (performance)** -– propustnost, doba odezvy, efektivita využití zdrojů * **Spolehlivost (reliability)** –- bezchybný provoz, dostupnost, robustnost, zotavitelnost * **Bezpečnost (security)** –- důvěrnost, integrita, dostupnost * **Škálovatelnost (scalability)** -– zátěž (daná požadavky), souběžná připojení, velikost dat * **Udržovatelnost (maintainability)** -– modifikovatelnost, přizpůsobivost Monitorování a testování = ověření kvality existujícího systému * Levná a často používaná metoda * Použitelné až po implementaci systému * Výsledky nutno brát s rezervou, závisí na počtu testovacích běhů Predikce z modelu = předpověď kvality vytvářeného systému * Nutno mít k dispozici (zjednodušený) model systému (vytvářený a upřesňovaný v průběhu návrhu) * Použitelné v průběhu celého procesu návrhu architektury * Přesnost výsledků závisí na detailnosti modelu Formální verifikace = ověření hypotéz o modelu systému * Nejdražší a nejpřesnější metoda * Ověřováno na modelu vytvořeném speciálně za účelem verifikace (částečně možno generovat automaticky z kódu nebo návrhových modelů) * Pro zaručení přesnosti je nutno investovat nemalé úsilí do vyladění modelu (a úrovně jeho detailu) atd. viz slidy ===== ISO 9000 ===== Obecně standardy rodiny ISO 900x se zaobírají systémem kvality při návrhu, vývoji, výrobě a servisu. Konkrétně ISO 9000 je doporučení jak aplikovat ISO 9001 při vývoji software. Samotný standard se postupně vyvíjel. V první verzi z roku 1987 se orientoval zejména na dodržování pracovních postupů. V druhé verzi z roku 1994 pak zejména na zajištění kvality a opět na držení se řádně dokumentovaných pracovních postupů. Ve třetí verzi z roku 2000 se standard zaměřil zejména na process managment a jeho efektivnost. **ISO 9001: 1994** * Systémy kvality - model zajištění kvality při návrhu, vývoji, výrobě, instalaci a servisu **ISO 9000 - 3: 1991** * Doporučení, jak aplikovat ISO 9001 při vývoji SW * Potřebné metriky např. //Fail//, //Defect//, //MTBF// * Vyžaduje sběr metrik **ISO 9004 - 2: 1994** * Řízení kvality a prvky systému kvality - doporučení ==== ISO 9001 ==== 1. Zodpovědnost vedení 2. Systém kvality 3. Přehled zakázek 4. Řízení návrhu 5. Řízení dokumentace 6. Nakupování 7. Zakoupené produkty 8. Identifikace a sledování produktu 9. Řízení procesu 10. Inspekce a testování 11. Inspekční, měřicí a testovací vybavení 12. Stav inspekce a testování 13. Zvládnutí nevyhovujícího produktu 14. Opravné akce 15. Manipulace, skladování, balení a doručení 16. Záznamy o kvalitě 17. Vnitřní prověrky kvality 18. Školení 19. Služby 20. Statistické techniky === ISO jinak === zdroj: http://www.finance-management.cz/080vypisPojmu.php?X=Systemy+managementu+jakosti+ISO&IdPojPass=40 Cílem norem ISO je podpora kvality výrobků. Normy ISO patří k nejznámějším standardům kvality na evropském kontinentu a jsou v oblasti požadavků trhu na kvalitu respektovanou mezinárodní referencí. Jádro souboru norem tvoří čtyři mezinárodní standardy, které poskytují návod k vypracování a uplatnění systému řízení kvality. Ty nejsou specifické pro určitý druh produktů, ale dají se uplatnit téměř ve všech oborech výroby a služeb. **ISO 9000:2000** * uvádí zásady a základy managementu kvality, popisuje, čeho se tato řada norem týká a uvádí základní definice termínů pro použití v organizaci. **ISO 9001:2000** * uvádí požadavky na systémy managementu kvality pro případ, kdy je nutné prokázat, že organizace je způsobilá účinně plnit požadavky zákazníků a legislativy. V této normě jsou specifikovány požadavky na systém managementu jakosti zejména v případech, kdy organizace * a) potřebuje prokázat svoji schopnost trvale poskytovat produkt, který splňuje požadavky zákazníka a příslušné požadavky předpisů a * b) má v úmyslu zvyšovat spokojenost zákazníka efektivní aplikací systému, včetně procesů pro jeho neustálé zlepšování. **ISO 9004:2000** * poskytuje návod pro zavedení systému managementu kvality, který překračuje požadavky ISO 9001 a umožňuje organizaci účinně plnit a předvídat očekávání zákazníků. **ISO 19011** * poskytuje návod pro plánování a provádění auditů kvality. Normy ISO 9000, ISO 9001 a ISO 9004 jsou často označovány pod souhrnným názvem **Systém managementu jakosti ISO 9000** a řeší management jakosti novým přístupem, a to procesním přístupem. Normy byly novelizovány naposledy v roce 2000. **International Organization for Standartization** (IOS, Mezinárodní organizace pro normy) je mezinárodní organizace pro vývoj a sjednocení standardů. Byla založena v roce 1947 jako síť národních institutů pro normalizaci s centrálním sekretariátem v Ženevě. Hlavní činností je vývoj technických norem. == Požadavky normy ISO 9001:2000 == **Systém managementu jakosti** Organizace se musí orientovat na **řízení procesů**, tj. přesně a úplně identifikovat všechny relevantní procesy, určit jejich vazby a zajistit jejich efektivní fungování. Ty jsoum onitorovány, měřeny a dále zlepšovány. Zásadní důraz je kladen na procesy s přímou vazbou k zákazníkovi. Současně s řízením procesů je vyžadováno i zpracování **dokumentace** v přiměřeném rozsahu a její řízení. Samozřejmostí je znalost a dodržování veškeré legislativy spojené s činností organizace. **Odpovědnost vedení** Vrcholové vedení musí být příkladem při zajišťování požadavků systému řízení kvality a poskytovat **důkazy** o své odpovědnosti za vybudování a uplatňování systému řízení kvality. Zákazník je centrem pozornosti celého systému a jeho požadavky a potřeby musí být v organizaci plně vnímány a plněny. Cílem je spokojený zákazník. Vrcholové vedení stanovuje **strategické cíle** a formuluje politiku kvality a cíle kvality organizace. Vrcholové vedení musí zajistit **rozdělení pravomocí a odpovědnosti** v organizaci. Vedení podniku rovněž zvolí svého zástupce zodpovědného za vybudování a fungování systému řízení kvality. V organizaci musí fungovat interní komunikační systém. V plánovaných intervalech je třeba přezkoumávat fungování systému řízení kvality podle stanovených kritérií a reagovat na zjištěné nedostatky. **Řízení zdrojů** Organizace musí alokovat přiměřené zdroje pro fungování systému řízení kvality a dále zdroje pro zvyšování spokojenosti zákazníka. **Zaměstnanci** ovlivňující kvalitu produktu musí být kompetentní na základě patřičného vzdělávání a výcviku. Organizace musí určit jejich potřebnou **odbornou způsobilost** a zajišťovat její udržování. **Infrastruktura** podniku musí být nastavena a udržována za účelem dosažení shody kvalitativních stránek skutečného výrobku a požadavky na něj. Pracovní prostředí je závazně vymezeno a řízeno. **Realizace produktu/služby** Organizace plánuje a rozvíjí procesy potřebné pro realizaci produktu. Požadavky zákazníka musí být určeny a přezkoumány. Je třeba se zabývat i požadavky, které zákazník neuvedl, ale které jsou nutné pro zamýšlené použití. Ve vztahu k zákazníkovi je třeba uplatňovat řízenou komunikaci, zejména s ohledem na využití zpětné vazby včetně stížností. Návrh a vývoj produktu musí být řízen podle specifických požadavků. Organizace musí zajistit, aby nakupovaný produkt splňoval specifikované požadavky a hodnotit a vybírat dodavatele podle jejich schopnosti dodávat produkt v souladu s jejími požadavky. Vysoká pozornost se musí věnovat dodavatelům, jejichž produkty mají přímý vliv na zákazníka. Plánování a realizace výroby nebo poskytování služby musí být řízeno. Tyto procesy je třeba plně definovat. Organizace musí zajistit péči o majetek zákazníka a rovněž ochranu produktu při interním zpracování, dopravě, manipulaci a skladování. Organizace má za úkol definovat nástroje pro monitorování a měření systému kvality. Součástí této definice je i vymezení jejich použití. **Měření analýzy a zlepšování** Organizace nejen plánuje a uplatňuje procesy monitorování a měření, ale má i povinnosti provádět **analýzy výsledků** a implementovat z nich vyplývající návrhy. Jedním z hlavních kritérií těchto procesů je spokojenost zákazníka. Aby se prokázalo, že systém managementu kvality je uplatňován a udržován, organizace musí provádět jejich interní audity. Organizace aplikuje vhodné metody pro **monitorování procesů** a pro měření produktu. Je třeba stanovovat metriky procesů a služeb a vyhodnocovat jejich dodržování. Současně musí být zajištěna eliminace defektivního produktu na základě dokumentovaných postupů. Je třeba stanovit dokumentované postupy a preventivní opatření, které mají být použity k nápravě nežádoucího stavu. Organizace musí shromažďovat a analyzovat údaje a informace o spokojenosti zákazníka. V rámci systému řízení jakosti je nutné sledovat vývoj a trendy v podnikových činnostech. Systém managementu kvality musí být neustále zlepšován. Organizace, která plní všechny stanovené požadavky norem má zaveden systém managementu kvality. Pro získání objektivního důkazu o zavedení systému může požádat certifikační organizaci o ověření jeho shody s normou tzv. certifikaci systému. **Certifikace** Proces certifikace jsou činnosti a postupy spojené s ověřováním shody systémů managementu kvality s požadavky norem ISO 9001:2000 a vydáváním příslušných osvědčení (certifikátů). Organizace, která systém řízení kvality vybuduje, má povinnost ho podrobovat pravidelnému auditu. Audit provádí certifikační organizace a ta také vydává příslušné certifikáty. Pravidla pro činnost certifikačních organizací jsou stanovena národním akreditačním systémem, který zajišťuje nestrannost a objektivitu činnosti certifikačních organizací řadou přísných požadavků. ====== Vypracoval ====== Tomáš Hřebíček, 256479 ====== Předměty ====== PA104 - Vedení týmového projektu PA103 - Objektové metody návrhu informačních systémů PA102 - Technologie informačních systémů I PA105 - Technologie informačních systémů II ====== Použitá literatura a další materiál ====== http://www.vrstevnice.com/akce/grandaction/vskola/7statnice/otazky/otazkaSW11_36SI2.pdf