16. Kategrizace SW chyb, kritéria krektnsti a pužitelnsti, splehlivst SW 1. Sftwarvá chyba Prezentace th, že prgram dělá něc nepředpkládanéh Míra th, kdy prgram přestává být užitečný Je t nesuhlas mezi prgramem se specifikací 2. Kategrie sftwarvých chyb Chyby uživatelskéh rzhraní Prblémy s funkčnstí - prgram nedělá něc, c by měl dělat neb t dělá nevhdně, lze některé perace prvést btížně Všechny prgramy mají prblémy s funkčnstí vzhledem k různým uživatelům Vstupy Jak lze nalézt, jak prgram pužívat (jaká je nápvěda)? Jak snadné je ztratit se v prgramu? Jaké chyby uživatel dělá a klik h t stjí času? C mu chybí? Nutí prgram uživatele přemýšlet nepřirzeně? Výstupy Rychlst je základ interaktivníh SW Ckli c budí djem pmaléh prgram je prblém. Získá uživatel, c ptřebuje? Mají výstupy smysl? Může uživatel přizpůsbit výstup ptřebám? Lze výstup přesměrvat dle ptřeby(mnitr, tisk, subr )? Chyby mezení Chyby zpracvání výjimek Chyby hraničních pdmínek Nejjedndušší hranice jsu numerické Mezní nárky na paměť, za kterých prgram může pracvat Výpčetní chyby Prgram ztrácí přesnst během výpčtu vlivem zakruhlvacích chyb a řezání Prcesní chyby Pčáteční a jiné speciální stavy (při prvním pužití chybí inicializační infrmace či subry, Nastaví se skutečně vše d výchzíh bdu, vymažu se všechna data, jestliže uživatel prvede reset prgramu?) Paralelní Chyby suběhu Nastávají v multiprcesvých sys. a integračních sys. Velmi btížně se pakují Zátěžvé pdmínky Chyby velkéh bjemu - hdně práce za dluhu dbu -1-
Chyby velkéh stresu - hdně práce v daném kamžiku Chyby vedení Hardware - prgram psílá chybvá data na zařízení, ignrují chybvé kódy přicházející zpět a zkuší pužít zařízení, která neexistují neb jsu aktuálně vytížená Řízení zdrjů a vedení Staré prblémy se pět bjevují, pkud prgramátr zakmpnuje d prgramu nějaku staru verzi kmpnenty Dkumentace - slabá dkumentace může způsbit ztrátu víry uživatele, že SW pracuje správně Chyby testvání chybu způsbí špatně udělaný test Jestliže prgram navádí většinu uživatelů ke způsbení chyb, pak je špatně navržen Chyby pžadavků, vlastnstí a funkčnsti Pžadavky a specifikace Neúplné, nejednznačné, vzájemně si dprující Hlavní zdrj drahých chyb Chyby vlastnstí - chybějící, chybné, nevyžádané vlastnsti Strukturální chyby Chyby v řízení sekvencí Příkaz GOTO Většina chyb řízení (v nvém kódu) se dá snadn testvat a je chycena během testvání jedntek Neupravený starý kód může mít řadu chyb v řídicím tku předčasná refaktrizace za účelem urychlení Chyby lgiky Neprzumění jak se selekční či lgické perátry chvají samstatně neb v kmbinacích Datvé chyby Neprzumění sémantice uspřádání lgických výrazů a jeh vyhdncení specifickými překladači Chyby datvéh tku - nevztahují se k chybám řízení Chyby tku řízení - část lgickéh výrazu, která je pužita pr vládání tku řízení Prtže efekt pškzení dynamických dat se může prjevit velmi vzdáleně d příčiny, nalézají se takvét chyby velmi btížně Základní prblém zbytků ve sdílených zdrjích (např. vyčištění p pužití uživatelem, sdílené čištění pmcí vladače zdrjů, žádné čištění) Chyby implementace Chyby kódvání Dbrý překladač chytne syntaktické chyby, nedeklarvaná data, prcedury, kód a mnh inicializačních prblémů Častu chybu kódu jsu dkumentační chyby (kmentáře) Chyby paměti -2-
Charakteristiky Nejbtížnější chyby z hlediska lkalizace Nejdůležitější chyby z hlediska pravy Prjevy nesprávnéh bsahu paměti jsu nepredikvatelné Chyby v bsahu paměti se typicky prjevují vzdáleně d jejich příčiny Chyby zůstávají čast nedetekvané dkud nejsu náhdně spuštěny Typy chyb Chyby hranic plí Přístup přes nedefinvaný ukazatel Čtení z neinicializvané paměti Chyby ztráty paměti (memry leaks) Slabá místa výknnsti Sběr správně vybraných dat Řádka - klikrát prběhla každá řádka - nejpřesnější, ale nejnárčnější na sběr dat Funkce - méně pdrbné než předchzí Čas - data se sbírají z údajů časvaných běhů funkcí. Data jsu správná pr daný běh, ale závisí na stavu mikrprcesru a paměti. Nejméně nárčný sběr 3. Kritéria krektnsti a pužitelnsti Obecné ukazatele kvality SW = Bugs per line f cde, Cde cverage, Chesin, Cupling, Number f classes, LOC, peratinal cmplexity krektnst a pužitelnst = intenzita defektů, bezpečnst prti útkům, pužitelnst, udržvatelnst (jak snadn a rychle lze v nasazeném systému prvádět změny) 4. Metriky kvality SW - v různých vývjvých fázích se uplatňují různé metriky (vývj, testvání, údržba, spkjenst zákazníka s nasazeným prduktem atd.) Střední dba k selhání (MTTF - mean time t failure) - pužívá v bezpečnstně kritických systémech jaku jsu systémy řízení letvéh prvzu - implementačně velmi drahé Intenzita defektů - četnst defektů za určitý časvý rámec - ve jmenvateli vystupuje velikst sftwaru (např. KLOC) Efektivnst dstraňvání defektů DRE = (defekty dstraněné během vývje / defekty setrvávající v prduktu) * 100% Řídící index nevyřízených věcí (BMI - backlg management index) BMI = (pčet prblémů uzavřených během danéh měsíce / přírůstek prblémů během měsíce) * 100% -3-
5. Mdely splehlivsti sftwaru Splehlivst SW = pravděpdbnst, že systém bude vyknávat svu funkci v daných peračních pdmínkách p specifikvanu dbu - pužívají se k dhadu splehlivsti neb pčtu zbývajících defektů sftwarvéh prduktu, který byl uvlněn mezi zákazníky - důvdy pužití: bjektivní vyjádření kvality prduktu plánvání zdrjů pr fázi údržby SW - sledvanu prměnnu studvaných kritérií je pčet defektů za daný časvý interval neb dba mezi dvěma selháními. a) Statický mdel - parametry mdelů jsu dhadvány na základě řady předchzích prjektů b) Dynamický mdel - pužívá průběžnéh vývje vzrů defektů k dhadu splehlivsti finálníh prduktu - zalžen na expnenciálním růstu splehlivsti - vrchl přírůstků defektů je předpkládán na pčátku, pté klesá (splehlivst SW rste s časem) - pr dhady se pužívají data z fáze frmálníh testvání (jsu vhdným indikátrem splehlivsti prduktu pciťvanu zákazníky) Základní předpklady čím více defektů je bjeven a dstraněn dříve, tím méně jich zůstane na pzdější fáze jestliže každý krk vývjvéh prcesu se prvede s minimálním vznikem chyb, pak finální prdukt bude dbrý vzniklé chyby se mají dstraňvat c nejdříve Splehlivst a validace predikce - splehlivst vyjadřuje stupeň změny výstupu mdelu vzhledem k mžnstem fluktuací ve vstupních datech - větší vzrky přesných a reálných dat lépe vypvídají naměřených datech - pužívat více mdelů a spléhat se na jejich splečné hdncení - platnst se hdntí prvnáním dhadů z mdelů a jejich skutečných hdnt Weibullva distribuce - knce hustty pravděpdbnsti se blíží asymptticky k nule, ale nikdy ji nedsáhnu - Kumulativní distribuční funkce (CDF): - funkce hustty pravděpdbnsti (PDF) znamená husttu defektů v dbě přírůstkvéh vzru defektů a CDF znamená kumulativní vzr přírůstku defektů -4-
- expnenciální mdel (m=2) a Rayleighův mdel (m=1) jsu speciálním případem Mdel Jelinski-Mranda (J-M) - mdel dby mezi selháním - předpklady: SW má N nedstatků na pčátku testvání Selhání se prjeví čistě náhdně Všechny vady přispívají rvncenně k příčině selhání během testvání Čas pravy je zanedbatelný Oprava defektu je dknalá - dba mezi selháním (i - 1) a i, je dána hazardní funkcí v čase t i : - jak se jedntlivé vady dstraňují, dba d dalšíh selhání bude delší Mdely Littlewda - pdbné předchzímu Jelinsky-Mranda - předpkládá se, že různé vady mají různu pravděpdbnst, že pvedu k selhání - vady většíh rzsahu mají tendenci být detekvány a praveny dříve - zhledněním veliksti chyby se více blíží realitě Gel-Okumtův mdel - pčítá s nedknalu pravu a nenulvým časem pravy -5-