VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta strojního inženýrství Ústav automatizace a informatiky
Ing. Martin Halva MODELOVÁNÍ JAKOSTI SOFTWARU PRO ŘÍDICÍ SYSTÉMY CONTROL SYSTEMS SOFTWARE QUALITY MODELLING ZKRÁCENÁ VERZE PH.D. THESIS
Obor:
Technická kybernetika
Školitel:
doc. Ing. Branislav Lacko, CSc.
Oponenti: prof. Ing. Karel Hruška, DrSc. prof. RNDr. Jiří Vaníček, CSc. Ing. Vlastimil Bejček, CSc. Datum obhajoby: 28. listopadu 2003
KLÍČOVÁ SLOVA jakost, software, řídicí systém, charakteristika jakosti, metrika jakosti, modelování
KEYWORDS quality, software, control system, quality characteristic, quality metrics, modelling
Disertační práce je uložena na oddělení vědy a výzkumu Fakulty strojního inženýrství VUT v Brně., Technická 2896/2, 616 69 Brno.
© 2004 Martin Halva ISBN 80-214-2550-4 ISSN 1213-4198
2
OBSAH ÚVOD ................................................................................................................................................ 5 1 SOUČASNÝ STAV ŘEŠENÉ PROBLEMATIKY...................................................................... 5 1.1 1.2 1.3
Řízení ................................................................................................................................... 5 Software v řídicích systémech ............................................................................................. 5 Jakost softwarového produktu ............................................................................................. 6 Charakteristiky jakosti softwaru.......................................................................................... 6 Atributy jakosti softwaru......................................................................................................6 Interní metriky...................................................................................................................... 7 Externí metriky..................................................................................................................... 7 Vztah mezi externími a interními metrikami ........................................................................ 7
2 CÍLE DISERTAČNÍ PRÁCE ....................................................................................................... 8 3 ZVOLENÉ METODY ZPRACOVÁNÍ........................................................................................ 8 3.1 3.2
Měření a hodnocení jakosti softwaru ................................................................................... 8 Statistika při hodnocení produktu ........................................................................................ 8 Normalita rozdělení dat ....................................................................................................... 8 Spearmanův korelační koeficient......................................................................................... 9 Regresní analýza.................................................................................................................. 9 Intervaly spolehlivosti........................................................................................................10 Odlehlé body ...................................................................................................................... 11 Pásy spolehlivosti .............................................................................................................. 12
4 HLAVNÍ VÝSLEDKY PRÁCE ................................................................................................. 12 4.1 4.2 4.3
4.4
Struktura modelu................................................................................................................ 12 Subcharakteristiky a externí metriky ................................................................................. 13 Interní metriky.................................................................................................................... 14 Interní metriky pro imperativní programy......................................................................... 14 Interní metriky pro rozsáhlé objektově orientované programy ......................................... 16 Analýza výsledků ............................................................................................................... 17 Experiment s imperativními programy .............................................................................. 17 Experiment s objektově orientovanými programy ............................................................. 21
ZÁVĚRY ......................................................................................................................................... 25 LITERATURA................................................................................................................................. 28 AUTORŮV PRACOVNÍ ŽIVOTOPIS ........................................................................................... 30 PUBLIKAČNÍ ČINNOST AUTORA ............................................................................................. 31 ABSTRACT..................................................................................................................................... 32
3
ÚVOD Jakost počítačových systémů, které hrají ve společnosti stále důležitější úlohu, je v posledních letech předmětem velkého zájmu. Zejména v aplikacích kritických z hlediska bezpečnosti může nesprávné chování počítačových systémů způsobit zvýšené náklady, poškození majetku či zdraví lidí, nebo dokonce smrt. Jakost softwaru těchto systémů je tedy sama předmětem velkého zájmu. Softwarové inženýrství navrhlo mnoho metod, které zvyšují jakost softwaru. Ty však bez nezávislého hodnocení neposkytují jasnou odpověď na otázku, zda je dosažená jakost dostatečná.
1 SOUČASNÝ STAV ŘEŠENÉ PROBLEMATIKY 1.1
ŘÍZENÍ
Řízení je obvykle chápáno dvěma poněkud odlišnými způsoby. Za prvé jde o řízení v užším slova smyslu, tj. řízení technologických procesů, které je v anglické literatuře nazýváno „control“. Druhý, širší význam pojmu řízení spočívá v zahrnutí dalších částí výrobního systému včetně rozhodovacího subsystému, kde probíhá řízení včetně uvážení lidských faktorů. Tomuto typu řízení je vyhrazen nejen v angličtině, ale v poslední době už i v češtině, pojem management. 1.2
SOFTWARE V ŘÍDICÍCH SYSTÉMECH
Z důvodu odlišnosti řídicích systémů pro management a pro řízení procesů v reálném čase bylo nutno definovat oblast zájmu. Disertační práce se soustředí na software řídicích systémů v reálném čase a ponechává stranou software řídicích systémů pro management. Řídicím systémem je tedy myšlen právě řídicí systém na operativní úrovni - řídicí systém ve smyslu anglického „control”. Funkční skupina Logické řízení: • logické obvody • časovací jednotky • čítače Sekvenční řízení Zpracování signálu/dat: • matematické funkce
Příklady člen AND; zpožďování stavů „on“, „off“, generování časovaných impulsů; vzestupné, sestupné, obousměrné. Sekvenční funkční diagram. základní aritmetické: sčítání, odčítání, násobení, dělení, rozšířené aritmetické: třídění, goniometrické funkce, porovnávací: větší, menší, rovno; vyhledávací, uspořádávací, formátovací; PID regulátory, integrace, filtrování. Analogové, číslicové moduly vstup/výstup. Převod dvojkově kódovaných čísel. Komunikační protokoly. Zobrazovací jednotky, příkazy. Zprávy, hlášení. Protokolování.
• manipulace s daty • zpracování analog. dat Funkce rozhraní: • Vstup/výstup • Jiné systémy • Rozhraní člověk-stroj • Tiskárny • Velkokapacitní paměť Řízení výpočtu (provedení) Výpočty periodické, řízené událostí. Uspořádání systému Kontrolování stavu.
Tab. 1: Přehled programovatelných funkcí v řídicích systémech (podle ČSN EN 61131-1)
5
Tab. 1 uvádí příklady funkcí, které se vyskytují v oblasti řídicích systémů. Tyto programovatelné funkce jsou v tabulce shrnuty do funkčních skupin. Z tohoto přehledu (ČSN EN 61131-1) je patrné, jaké skupiny funkcí se dají očekávat v příslušném softwaru. Pro modelování jakosti softwaru (MJSW) řídicích systémů bylo nutné, aby byly zvoleny pro provedení experimentů takové charakteristiky a metriky, které vypovídají o funkčnosti logických a matematických konstrukcí, včetně dalších pomocných funkčností, dále o správnosti vstupních a výstupních dat, funkčnosti uživatelského rozhraní a podobně. 1.3
JAKOST SOFTWAROVÉHO PRODUKTU
Charakteristiky jakosti softwaru Charakteristiky jakosti softwaru jsou podle (13) definovány takto: “soubor vlastností softwarového produktu, kterým je jeho jakost popisována a hodnocena; charakteristika jakosti softwaru může být zjemňována do mnohonásobného počtu úrovní subcharakteristik.” Existuje jak externí tak interní aspekt většiny charakteristik. Například bezporuchovost může být měřena externě sledováním počtu chyb v daném časovém intervalu při zkoušení softwaru a interně kontrolou detailní specifikace a zdrojového kódu, čímž hodnotíme úroveň chybnosti. Atributy jakosti softwaru „Atributy jakosti softwaru jsou měřitelné vlastnosti softwaru. Měří se buď přímo, nebo nepřímo pomocí hodnot jiných atributů. Atributy, jako měřitelné fyzické nebo abstraktní vlastnosti softwaru, ovlivňují subcharakteristiky jakosti.“ (Podle 44.) Uvedenou skutečnost považuji za klíč k řešení problému, jak měřit jakost softwaru. Model jakosti, kterou vnímá i uživatel, se bude skládat z určených charakteristik a subcharakteristik. Ovlivňují-li tedy atributy jakosti softwaru jeho jakost vyjádřenou těmito charakteristikami a subcharakteristikami, je vhodné měřit přímo jednotlivé atributy a podle naměřených hodnot usuzovat na celkovou úroveň dosažené jakosti. Někdy je jakost uvažována ve dvou kategoriích - interní jakost a externí jakost - podle toho, jaké atributy, interní nebo externí, jsou subcharakteristikám přiřazovány. Externí atributy jsou vlastnosti chování softwaru, jehož jakost hodnotíme. Jde vlastně o nepřímé měření produktu pomocí jeho vnějšího chování, které vnímá uživatel. Interní atributy jsou vlastnosti softwaru samotného. Může jít o atributy vypovídající (různými způsoby) o „objemu“ jeho zdrojového kódu, o jeho strukturální složitosti apod. Jde o atributy, které jakost ovlivňují, tj. ovlivňují i chování softwaru vůči uživateli. Externí atributy vypovídají o jakosti softwaru daleko přesněji, než interní. Jsou však k dispozici až v etapě, kdy je k dispozici hotový softwarový produkt nebo nejdříve, když je první verze uvolněna k testování. V této fázi je již velice drahé provádět v softwaru změny za účelem zvýšení jeho jakosti. Naproti tomu interní atributy lze změřit a vyhodnotit daleko dříve, některé dokonce již v etapě návrhu softwaru. Tak je možné včas provádět nápravná opatření a s nízkými náklady.
6
atribut subcharakteristika Interní atributy
charakteristika
Externí atributy
obr. 1: Hierarchická struktura charakteristik, subcharakteristik a atributů jakosti softwaru Interní metriky Terminologická poznámka: Viz kapitola 3.1. Metrika jakosti softwaru je praktickým způsobem popsána v (13) takto: „kvantitativní stupnice a metoda, která může být použita k určení dosažené hodnoty význačného rysu u konkrétního softwarového produktu.“ Znamená to, že metriky se používají pro reálné zjištění měřených hodnot atributů jakosti určitým prakticky proveditelným způsobem. Tak jako jsou atributy rozčleňovány na interní a externí, je k nim pochopitelně nutné rozlišovat také interní a externí metriky. Interní metriky se s výhodou používají během fází návrhu a programování softwarového produktu, který je zatím například v podobě specifikace nebo zdrojového kódu. Interní metriky tak měří vnitřní vlastnosti produktu. Jejich účelem je predikovat externí jakost a jakost při používání. Externí metriky Míry externích metrik softwarového produktu závisejí na chování systému, kterého je produkt částí. Zjišťují se testováním, provozováním a sledováním konečného softwaru nebo systému. Externí metriky vycházejí z požadavků na používání softwarového produktu v určitém organizačním a technickém prostředí. Externí metriky poskytují uživateli, hodnotiteli, ověřovateli a vývojáři reálnou schopnost hodnotit jakost softwarového produktu během testování a provozu. Vztah mezi externími a interními metrikami Měly by se používat interní metriky, které mají co nejsilnější vztah k cílovým externím metrikám. Jen tak mohou být předpověděny budoucí hodnoty externích metrik. Všeobecně se soudí, že je obtížné navrhnout rigorózní teoretický model, který postihne silný vztah mezi interními a externími metrikami. Není však vyloučeno sestavení empirického modelu.
7
2 CÍLE DISERTAČNÍ PRÁCE Při zabezpečování jakosti softwaru obecně je nedostatečná možnost, jak jakost měřit. Existují sice modely, jak popsat jakost softwaru pomocí charakteristik – jeden z modelů se dokonce stal součástí mezinárodní normy ISO 9126 a souvisejících. Problémy však mohou nastat, pokud se pokusíme přiřadit charakteristikám nebo subcharakteristikám jakosti softwaru příslušné metriky. Existuje mnoho publikací zabývajících se metrikami, některé metriky byly zahrnuty i do norem. Problémem však zůstává jejich špatná vypovídající schopnost a obtížná použitelnost v praxi. Vytvořením modelu a jeho experimentálním ověřením se jako autor této disertační práce pokouším přispět svým dílem ke zlepšení možnosti popisu - modelování jakosti softwaru řídicích systémů pomocí metrik. Cílem disertační práce bylo zjistit na modelovém příkladu, zda existuje závislost mezi externími a interními metrikami jakosti softwaru včetně indikátorů složitosti. Pokud by taková závislost existovala, bylo by možné do určité míry usuzovat na jakost softwaru z měření už v ranných stádiích jeho tvorby, tj. např. ve fázi kódování nebo dokonce návrhu. V těchto ranných fázích vzniku softwaru je odhalení chyb, které by později při provozu mohly způsobit poruchy, velmi žádoucí nejen z důvodu prevence havárií, ale i proto, že odstraňování chyb v těchto prvotních stádiích je několikanásobně snadnější a lacinější, než později. Nabízí se také možnost prozkoumat všechny možné kombinace závislostí metrik, nejen závislost externích metrik na interních. Rozšířeným cílem disertační práce bylo zjistit, zda existuje vzájemná závislost mezi metrikami jakosti softwaru a indikátory složitosti, a pokusit se ověřit závislosti na jednoduchém modelu.
3 ZVOLENÉ METODY ZPRACOVÁNÍ 3.1
MĚŘENÍ A HODNOCENÍ JAKOSTI SOFTWARU Terminologická poznámka: „Pojmy metrika a míra se v teorii měření používají v jiném smyslu, než je tomu v jiných oblastech matematiky. Definici z teorie měření uvádím na základě (44) v disertační práci. Pojem metrika používám v souladu s mezinárodní normalizací (13). V teorii metrických prostorů se slovo metrika používá jako zobecnění pojmu vzdálenosti dvou bodů. Slovo míra se používá v tzv. teorii míry k zobecnění pojmu délky úsečky, obsahu obdélníka a objemu kvádru.“
V rámci mezinárodní normalizace byla dohodnuta následující terminologie: „Měření (measurement) se nazývá takové zobrazení výseku empirického světa formálními objekty (čísly), které zachovává zkoumané vztahy (relace). Míra (measure) se nazývá zobrazení, které empirickým entitám přiřazuje naměřené veličiny (čísla). Metrika (metrics) se nazývá metoda, kterou se měření provádí, spolu s měřicí stupnicí (oborem přiřazovaných hodnot míry) a jejím typem.“ 3.2
STATISTIKA PŘI HODNOCENÍ PRODUKTU
Normalita rozdělení dat Velké množství statistických testů je založeno na předpokladu, že analyzovaná data podléhají normálnímu rozdělení. Ne vždy je to splněno v oblasti softwarových metrik. Tato skutečnost má důsledky při používání statistických metod. Problému můžeme předejít použitím robustních
8
metod. Robustní metody vyžadují menší předpoklady o rozdělení anebo podávají dobré výsledky i v situacích, kdy předpoklady nejsou zcela splněny (37). V oblasti korelační analýzy jsou např. k dispozici Spearmanův korelační koeficient. Spearmanův korelační koeficient Máme-li náhodný výběr (X1,Y1), …, (Xn, Yn) ze spojitého dvojrozměrného rozdělení a chceme testovat hypotézu, že Xi a Yi jsou nezávislé náhodné veličiny (i = 1,2, …, n), veličiny X1, … Xn se uspořádají podle velikosti a zjistí se jejich pořadí R1, …, Rn. Pak se uspořádají podle velikosti veličiny Y1, …, Yn a stanoví se jejich pořadí Q1, ..., Qn. Spearmanův korelační koeficient rs se vypočte (2) podle vzorce: n 6 rs = 1 − ( Ri − Qi ) 2 . (1) ∑ 2 n(n − 1) i =1 Tabulky udávají kritické hodnoty pro rs v případě n ≤ 30. Je-li │rs│větší nebo rovno tabelované kritické hodnotě, zamítneme hypotézu o nezávislosti. Při n > 30 se hypotéza zamítá v případě, že platí: u (α / 2) rs ≥ , (2) n −1 kde u (α/2) je kritická hodnota rozdělení N (0,1). Regresní analýza Lineární model je model, který je lineární vzhledem ke svým koeficientům. Obecný tvar lineárního modelu s jednou nezávisle proměnnou x je:
η = β 0 f 0 (x ) + β1 f1 (x ) + ... + β n f n (x ),
(3)
kde βi jsou regresní koeficienty (parametry) modelu a fi(x) známé funkce, i=0,1,2,...,n. Máme-li k dispozici data, to znamená dvojice (xi, yi) popisující proces, pak musíme určit tvar závislosti y = f(x). Tato závislost není závislostí funkční s pravděpodobností 1, ale závislostí volnější s pravděpodobností v intervalu (0, 1). Výsledné vztahy pro výpočet odhadů regresních koeficientů modelu jsou následující: n
) b0 = β 0 =
∑ pi y i i =1 n
∑p i =1
i
∑ p y (x n
;
) b1 = β1 =
i =1 n
i
i
∑ p (x i =1
i
i
i
−x
−x
)
)
2
(4, 5)
Jelikož veličiny b0 , b1 jsou lineárními kombinacemi yi , obě podléhají normálnímu rozdělení Střední hodnoty: ∑ pi yi ∑ pi E[ β 0 + β1 ( x − x) + ε i ] ∑ pi β 0 = E (b0 ) = E = = β0 ∑ pi ∑ pi ∑ pi (protože ∑ pi xi − x = 0 , tak E (ε i ) = 0 ).
(
(6)
)
9
) = ∑ p (x − x )E [β + β (x − x)] = β ) ∑ p (x − x )
(
∑ pi yi xi − x E (b1 ) = E 2 ∑ pi x i − x
(
i
0
i
1
i
(7)
1
2
i
Rozptyly:
[
D (b0 ) = E (b0 − β 0 )
=
∑p
2 i
2
σ y2i pi
=
(∑ p )
2
σ y2i ∑ p i
(∑ p )
2
i
=
i
[
D(b1 ) = E (b1 − β1 )
=
]
∑ pi y i = D ∑ pi
2
(
]
)
∑ pi xi − x D( y i )
[∑ p (x − x) ] i
i
∑ p D (y ) (∑ p ) 2 i
2
∑p σ = (∑ p ) 2 i
2 yi 2
=
i
(8)
σ y2i
∑p
i
(
(
=
i
i
∑ pi y i xi − x = D 2 ∑ pi xi − x
2
2 2
=
σ y2i
∑ p (x i
i
−x
)
) = ∑ p (x
) ( ) [∑ p (x − x) ] 2 i
2
i
i
− x D yi 2 2
i
= (9)
)
2
Odhad modelu η = β 0 + β1 ( x − x ) z naměřených hodnot na úrovních x = xi dává regresní rovnici yˆ i = b0 + b1 ( xi − x ) . Tato regresní rovnice dovoluje s jistou přesností „předpovědět“ hodnotu yˆ i pro x = xi. Přesnost predikce je určena hodnotou D(ŷi). ( xi − x ) 2 1 ) 2 2 D( yi ) = D (b0 ) + ( xi − x ) D(b1 ) = σ + ∑ p ∑ p (x − x )2 i i i i i
(10)
Intervaly spolehlivosti Interval spolehlivosti na úrovni významnosti α pro koeficient β0, resp. β1, je interval: α α b0 − t 1 − , r D (b0 ) ; b0 + t 1 − , r D (b0 ) 2 2
(11)
α α b1 − t 1 − , r D(b1 ) ; b1 + t 1 − , r D(b1 ) , 2 2
(12)
a
α α kde číslo t 1 − , r je 1 − kvantil t-rozdělení s r = ∑ pi − 2 stupni volnosti a D(b) 2 2 i je rozptyl příslušného regresního koeficientu.
10
Odlehlé body Odlehlé body lze zjistit analýzou reziduí. Ta sleduje soubor odchylek mezi experimentálními a vypočtenými hodnotami závisle proměnné, tzn. y i − yˆ i . Pokud matice H představuje podíl mezi odhadnutými hodnotami závisle proměnné ŷ a skutečnými hodnotami závisle proměnné y, potom
ŷ = H y.
(13)
Označíme-li dále vektor reziduí
u = y – ŷ,
(14)
a matici
M = I – H,
(15)
pak platí
u = M e.
(16)
Podle vztahu (16) se každá složka vektoru reziduí dá psát n
mij
j =1
p i wi
ui = ∑
ej.
(17)
Rezidua nemají obecně konstantní rozptyl. Proto je rezidua potřeba nejdříve normovat, tj. vydělit jejich směrodatnou odchylkou. Vztah
norm ui = ui ⋅
(18)
pi wi s 2 mii
transformuje vektor reziduí u na vektor norm u, který má tu vlastnost, že platí E(norm ui) = 0, D(norm ui) = 1.
(19)
Vektor studentizovaných reziduí stud u se spočte obdobně jako v (18), jen s tím rozdílem, že odhad rozptylu s2 se provede s vypuštěním měření na i-té úrovni. Platí vztah: stud ui = norm ui ⋅ pro model Vztah
n−k −2 , n − k − 1 − norm ui2
k
k
í =1
i =1
(20)
η = β 0 + ∑ βi xi , resp. η = β 0 + ∑ βi ( xi − xi ).
(20) se zapisuje podle (2) ve tvaru: pi wi (n − k − 2) stud ui = ui ⋅ ; i = 1, 2, ..., n , RSCr mii − pi wi ui2
(21)
kde: RSCr je reziduální součet čtverců vztahující se k průměrným hodnotám na jednotlivých úrovních, ui – i-tý prvek vektoru reziduí, pi – počet opakovaných měření na úrovni xi, wi – váhový koeficient pro měření xi,
11
n – počet úrovní měření, k – počet koeficientů modelu mimo konstanty (pro přímku k = 1), mii – prvky doplňkové matice M k matici H, která vyjadřuje podíl mezi odhadnutými a skutečnými hodnotami závisle proměnné. Veličina ze vztahu (21) má Studentovo rozdělení s (n-k-2) stupni volnosti. Pásy spolehlivosti Interval spolehlivosti na hladině (1-α) pro střední hodnotu veličiny yi (tzn. pro ηi) při daném x = xi je interval: ) ) ) ) α α y i − t 1 − , r D ( y i ), y i + t 1 − , r D ( y i ) , 2 2
(22)
α kde r = ∑ pi − 2 , t je 1 − kvantil t-rozdělení pro r stupňů volnosti a D(ŷi) je rozptyl 2 i vypočtené hodnoty uvedený ve vzorci (10).
Bodový odhad lineárního modelu je ŷ = b’0 + b1 x. Intervalový odhad vypočtené hodnoty z tohoto modelu pro pevné x na hladině (1 - α) je proto:
α b0′ + b1 x ± t 1 − , r .s.d ( x ), 2
(23)
kde r = ∑ pi − 2 , t je příslušný kvantil t-rozdělení, s je odhad směrodatné odchylky σ i
a
(x − x)2 . d ( x) = + ∑ pi ∑ pi ( xi − x ) 2 1
i
(24)
i
Tyto intervalové odhady vytvoří tzv. pás spolehlivosti kolem regresní přímky. Je to pás, jehož šířka pro pevně zvolenou hodnotu x udává s jistou spolehlivostí nepřesnost vypočtené hodnoty závisle proměnné ze zvoleného modelu.
4 HLAVNÍ VÝSLEDKY PRÁCE Prvním výsledkem práce je navržení modelu jakosti softwaru pro řídicí systémy, který jsem sestavil jako hierarchickou strukturu charakteristik a subcharakteristik, ke kterým jsem na základě měřitelných atributů přiřadil metriky. Výsledný model, který jsem potom použil jako základ pro experimenty, je na schématu v obr. 2. V této kapitole je za jakost softwaru považována jakost softwaru pro řídicí systémy. 4.1
STRUKTURA MODELU
Jakost softwaru pro řídicí systémy modeluji pomocí charakteristik a subcharakteristik jakosti.
12
Jakost softwaru pro řídicí systémy
Funkčnost
Bezporuchovost
vhodnost
bezporuchový provoz
funkční zralost zralost rozhraní
chybová odolnost
obr. 2: Model jakosti softwaru pro řídicí systémy Za základní charakteristiku jakosti softwaru pro řídicí systémy považuji funkčnost. Každý program, procedura atd. v řídicím systému musí v prvé řadě splnit svůj existenční požadavek. Software existuje proto, aby plnil svoji funkci v řídicím systému. Funkčnost – je soubor atributů, které se týkají existence množiny funkcí a jejich specifikovaných vlastností (13). Přičemž funkcemi se rozumí ty funkce, které uspokojují stanovené nebo předpokládané potřeby. Dnešní řídicí systémy, které pracují v reálném čase, vyžadují, aby nedocházelo při jejich provozu k výpadkům – poruchám. Výpadky znamenají obrovské finanční ztráty a někdy i ohrožení bezpečnosti, zdraví nebo života osob. Proto další charakteristikou v modelu je bezporuchovost. Bezporuchovost – je soubor atributů, které se týkají schopnosti softwaru udržet úroveň výkonu za stanovených podmínek a ve stanoveném časovém úseku (13). V podstatě jde o požadavek, aby software v průběhu svého fungování v daných podmínkách po stanovenou dobu neselhal, tj. neměl poruchy. Přičemž porucha (selhání) je stav, kdy software neplní své funkce nebo se chová jinak, než se po něm požaduje. Poruchu a selhání považuji za synonymum. 4.2
SUBCHARAKTERISTIKY A EXTERNÍ METRIKY
Vhodnost definuji jako schopnost softwaru poskytnout funkce, které jsou od něj vyžadovány v zadání. Proto jako vhodnou metriku volím relativní počet splněných funkcí – funkční splnění zadání (FSZ). FSZ =
počet splněných funkcí ze zadání počet funkcí požadovaných v zadání
(25)
Funkční zralost definuji jako soubor atributů, které vypovídají o specifikovaných vlastnostech funkcí softwaru. Pro měření funkční zralosti jsem navrhnul tři metriky – funkční zralost (FZ), drobná nefunkčnost (DNF) a chybovost výstupů (CVY). Všechny tři metriky jsou definovány relativně k požadavkům zadání. počet opravovaných funkcí
FZ =
(26)
počet funkcí požadovaných v zadání
13
počet drobných nefunkčností
DNF =
(27)
počet funkcí požadovaných v zadání počet chybných výstupních datových prvků
CVY =
(28)
počet požadovaných výstupních datových prvků
Zralost rozhraní definuji jako soubor atributů, které vypovídají o vlastnostech uživatelského rozhraní. Jako metriku pro měření jsem zvolil relativní počet poruch v uživatelském rozhraní. Její hodnota je vztažena na počet funkcí požadovaných v zadání. počet poruch v uživatelském rozhraní
UR =
(29)
počet funkcí požadovaných v zadání
Bezporuchový provoz definuji jako stav softwaru, kdy ve stanoveném časovém úseku software udržuje stanovenou úroveň výkonu za stanovených podmínek. Metrikami pro bezporuchový provoz jsou čas bezporuchového provozu (BP) a střední čas bezporuchového provozu (BPS). BP = čas provozu do první poruchy doba pozorování
BPS =
(30)
(31)
počet poruch
Chybová odolnost je schopnost softwaru odolávat chybám. Jako metriku pro měření jsem použil neošetřenost vstupů (NVS). počet chybně zadaných datových prvků
NVS = –––––––––
(32)
počet pokusů o chybné zadání dat. prvku
4.3
INTERNÍ METRIKY
V disertační práci jsou popsány celkem dva experimenty. V obou je použit stejný model jakosti (viz kapitoly 4.1 a 4.2). První experiment měl prověřit metodiku MJSW na vzorku malých imperativních programů. Druhý měl ověřit použití metodiky na rozsáhlých programech vytvořených objektovým přístupem. Protože jde o podstatně rozdílné vlastnosti vzorků, musely být použity i rozdílné interní metriky jakosti softwaru. Interní metriky pro imperativní programy Halsteadovy metriky (22) jsou založeny na počtu operandů a operátorů ve zdrojovém kódu. Jsou definovány čtyři základní metriky: • • • •
14
N1 – celkový počet operátorů N2 – celkový počet operandů η1 – počet různých operátorů η2 – počet různých operandů
Z těchto metrik lze odvodit velikost slovníku η: η = η1 + η2
(33)
a délku programu N = Length = N1 + N2.
(34)
Strukturální analýza (měření složitosti) – týká se také formálních zápisů softwaru, například zdrojového kódu (5). Ze zápisu jsou generovány strukturální modely – grafy řízení (control flowgraphs) a z nich jsou pak počítány strukturální metriky. Graf řízení je (44) orientovaný graf G = (V, H, ϕ), zkráceně pouze graf, pokud jsou splněny následující podmínky:
(35)
z
k obr. 3: Graf řízení (control flowgraph) 1. Množina jeho vrcholů V se skládá z pěti navzájem disjunktních podmnožin V = Z ∪ K ∪ P ∪ R ∪ S, přičemž platí:
(36)
a) Z má jediný uzel z, který má vstupní řád 0 a výstupní řád 1. Jde o uzel vyjadřující začátek programu. Nemá žádný vstup a vystupuje z něj jediná hrana. b) K má jediný uzel k, který má vstupní řád 1 a výstupní řád 0. Jde o uzel vyjadřující konec programu. Nemá žádný výstup a vstupuje do něj jediná hrana. c) P obsahuje uzly s jedním vstupem a jedním výstupem. Mají vstupní i výstupní řád roven 1. Tyto uzly znázorňují výkonné kroky programu. d) R obsahuje uzly s jediným vstupem ale dvěma výstupy Znázorňují rozhodovací bloky. e) S obsahuje uzly se dvěma vstupy a jediným výstupem. Znázorňují slučovací bloky. 2. Každý uzel grafu G leží aspoň na jedné cestě, která spojuje uzel z s uzlem k. Na grafu řízení je založeno několik metrik. Nejznámější je cyklomatická složitost grafu řízení. Měření složitosti grafu řízení navrhnul McCabe (35). Každý uzel v grafu řízení odpovídá rozhodovacímu bodu v programu. Graf řízení na obr. 3 má cyklomatické číslo rovno čtyřem. Všeobecný vzorec pro cyklomatickou složitost formuloval McCabe takto: V(G) = e – n + 2p,
(37)
kde V(G) = cyklomatické číslo grafu řízení G, e = počet hran, n = počet uzlů, p = počet samostatných částí grafu (u softwaru je p=1).
15
V prvním experimentu používám interní metriky délky (označení Length) a složitosti (McCabe) grafu řízení. Mimo ně navrhuji novou metriku poměrná složitost grafu řízení (McCabe/Length), kterou definuji jako poměr složitosti k délce. Předpokládám, že poměrná složitost grafu řízení umožní lepší porovnávání různě dlouhých programů. McCabe
McCabe/Length =
(38)
Length
Interní metriky pro rozsáhlé objektově orientované programy Z charakteristiky objektově orientovaného programu lze určit měřitelné vlastnosti jeho zdrojového kódu jako je počet tříd, počet metod ve třídě, počet atributů ve třídě, počet proměnných ve třídě atd. Soubor těchto tzv. základních objektově orientovaných metrik je uveden v tab. 2. Zkratka
Význam
Popis – definice
LOC
lines of code
LOC (C) vyjadřuje počet řádků zdrojového kódu v dané třídě C.
NOM
number of methods
NOM (C) vyjadřuje počet metod v dané třídě C.
NIM
number of instance methods
NIM (C) vyjadřuje počet instančních metod v dané třídě C.
NCM
number of class methods
NCM (C) vyjadřuje počet metod třídy v dané třídě C.
NOA
number of attributes
NOA (C) vyjadřuje počet atributů v dané třídě C.
NIV
number of instance variables
NIV (C) vyjadřuje počet instančních proměnných v dané třídě C.
NCV
number of class variables
NCV (C) vyjadřuje počet proměnných třídy v dané třídě C.
tab. 2: Základní interní objektově orientované metriky Chidamber a Kemerer navrhli další metriky (viz tab. 3) pro složitost objektově orientovaného programu na základě předpokládaného postupu vývoje objektově orientovaných systémů. Metriky se týkají především složitosti návrhu tříd objektů. Podchycují intermodulární složitost (viz 44). Zkratka
Význam
WMC
weighted methods per class
Popis – definice Váha metod pro třídu je pro každou třídu C definována jako n
součet složitostí cj všech n metod třídy C takto: WMC (C ) = ∑ c j . j =1
Složitosti cj se stanovují jako složitosti imperativních programů.
16
DIT
depth of inheritance tree
Hloubka stromu dědičnosti DIT (C) je pro každou třídu C definována jako maximální počet hran na cestě od kořene k vrcholu ve stromu dědičnosti odpovídajícímu v hierarchii tříd dané třídě.
NOC
number of children
Představuje počet přímých potomků NOC (C) představujícího ve stromu dědičnosti danou třídu C.
CBO
Spřažení objektů mezi třídami CBO (C) udává pro každou třídu C coupling počet tříd, na historii jejichž objektů třída závisí tím, že volá jejich between object classes metody nebo používá jejich instanční proměnné.
vrcholu
Odezva třídy RFC (C) je definována jako počet metod, které jsou response for a buď metodami třídy C nebo patří do jiné třídy, ale některá metoda class třídy C je volá.
RFC
LCOM
lack of cohesion of methods
Jde o nedostatečnou soudržnost tříd v metodách vyjádřenou pomocí počtu dvojic spřažených a nespřažených metod dané třídy. Značí-li p počet spřažených dvojic metod třídy C a q počet nespřažených dvojic metod třídy C, metrika LCOM je definována: pro p ≥ q: LCOM (C) = 0, pro p < q: LCOM (C) = q – p.
tab. 3: Chidamberovy-Kemererovy interní objektově orientované metriky 4.4
ANALÝZA VÝSLEDKŮ
Experiment s imperativními programy U každé dvojice proměnných, kterým přísluší statisticky významný korelační koeficient, jsem na základě Spearmanova testu zamítnul hypotézu o jejich nezávislosti. Interpretovatelné závislosti jsou znázorněny formou Ishikawových diagramů na následujících obrázcích.
DNF
UR FSZ
CVY
NVS
obr. 4: Diagram FSZ-1 Na obr. 4 (FSZ-1) je v znázorněna závislost Funkčního splnění zadání (FSZ), tj. poměru počtu splněných funkcí k počtu všech funkcí požadovaných v zadání, na čtyřech veličinách – proměnných – DNF, UR, CVY, NVS. Bylo prokázáno, že v daných podmínkách a na dané úloze je funkční splnění zadání ovlivněno drobnými nefunkčnostmi, chybami v uživatelském rozhraní, chybami na výstupu a neošetřeností vstupů negativně. To znamená, že zvyšující se hodnota jmenovaných charakteristik jakosti způsobuje snížení hodnoty funkčního splnění zadání. Ze zjištěné závislosti lze vyvodit závěr, že při vývoji softwaru je pro plné splnění funkcí daných v zadání nutné věnovat se nejen přímo příslušné funkčnosti programu, tj. např. použití správného vzorce pro výpočet objemu jehlanu, ale je nutné věnovat patřičnou pozornost i správné „prezentaci“ výsledků uživateli a správnému „zjišťování“ vstupních dat od uživatele.
17
TP FZ TT/TP
obr. 5: Diagram FZ-2 Na obr. 5 (FZ-2) je vidět, že funkční zralost (FZ) jako poměr počtu opravovaných funkcí k celkovému počtu funkcí vyžadovaných v zadání je pozitivně ⊕ ovlivněna délkou programování (TP) měřenou časem spotřebovaným k vytvoření „surového“ programu a negativně Θ ovlivněna poměrem času testování k času programování (TT/TP). Z výsledků lze vyvodit závěr, že v daných podmínkách závisí počet nalezených a odstraněných chyb na čase věnovaném programování a podílu času testování na čase programování.
McCabe’s / Length
DNF
obr. 6: Diagram DNF-3 Diagram na obr. 6 (DNF-3) znázorňuje závislost DNF – Drobné nefunkčnosti, tj. podílu počtu doplňkových funkcí k počtu funkcí požadovaných v zadání, na charakteristice poměrné složitosti programu měřené metrikou McCabe’s/Length. Byla prokázána kladná korelace. Prokázáním vlivu se potvrdil předpoklad, že poměrná složitost McCabe’s/Length může být vhodným indikátorem jakosti softwaru. Naproti tomu samotná složitost programu měřená metrikou McCabe’s nevykázala korelaci s žádnou jinou sledovanou metrikou (kromě délky programu).
FSZ
DNF CVY
UR
NVS
obr. 7: Diagram CVY-4
18
Logicky a vyváženě na první pohled působí závislosti znázorněné na obr. 7 (CVY-4) pro chyby na výstupu. Ukázalo se, že výstupní chyby závisí pozitivně na Neošetřenosti vstupu (NVS), chybách v Uživatelském rozhranní (UR), Drobných nefunkčnostech (DNF) a negativně na Funkčním splnění zadání (FSZ).Výstupní chyby tedy závisí jak na jakosti vstupů, tak na vlastním zpracování dat ve funkcích hlavních i doplňkových. Nalezená závislost je velmi zajímavá i pro praxi. Lze z ní vyvodit závěr, že při vývoji softwaru je třeba věnovat pozornost všem složkám procesu automatizovaného zpracování dat, tj. vstupu dat, vlastnímu zpracování i prezentaci výsledků v uživatelském rozhraní.
TP BP TT
obr. 8: Diagram BP-5 Významným výsledkem korelační analýzy jednotlivých veličin se jeví závislost uvedená na obr. 8 (BP-5). Je zde vyznačen prokázaný pozitivní vliv hodnot časů programování (TP) a testování (TT) na bezporuchový provoz (BP) měřený časem do první poruchy. Jako možné vysvětlení se nabízí to, že čím větší je úsilí měřené časem věnovaným efektivně na programování a testování vyvíjeného softwaru, tím delší je bezporuchový provoz, tedy pravděpodobně v hotovém softwaru je méně chyb, resp. více chyb bylo odstraněno.
McCabe’s / Length
NVS
obr. 9: Diagram NVS-6 Poslední ze série Ishikawových diagramů - obr. 9 (NVS-6), znázorňuje pozitivní závislost Neošetřenosti vstupů (NVS) na poměrné složitosti programu (řídicího flowgrafu) měřenou metrikou McCabe’s/Length. Jde o podobnou situaci jako v obr. 6 (DNF-3), kde šlo o tutéž poměrnou složitost, avšak měla vliv na Drobnou nefunkčnost (DNF). Zde je tedy další možné využití metriky McCabe’s/Length - pro předpověď neošetřenosti vstupů. Vysvětlení vlivu McCabe’s/Length na NVS může spočívat v tom, že čím větší je poměrná složitost, tedy hustota složitosti programu vztažená k délce programu, tím větší je pravděpodobnost, že programátor bude mít v komplexním problémovém prostoru sníženou orientaci a opomene ošetřit některé vstupy.
19
Korelační koeficienty vypočtené pro kombinace jednotlivých naměřených veličin vypovídají jen o tom, zda dvojice proměnných jsou ve vzájemném vztahu, či ne. Jako příklad modelového vyjádření charakteru vzájemné závislosti veličin jsou na obr. graph 1 – graph 14 ve vložených přílohách disertační práce uvedeny i grafy závislostí. Ty vznikly tak, že naměřenými body byly proloženy přímky a vypočteny jejich rovnice (tab. 4). Uvedené rovnice jsou platné jen v experimentem definovaných podmínkách a slouží pro ilustraci postupu vytváření modelu.
Popis modelu
Regresní rovnice
Interval spolehlivosti pro směrnici
Závislost funkčního splnění zadání na drobných nefunkčnostech, chybách výstupu, chybách v uživatelském rozhraní a na neošetřenosti vstupů.
FSZ = – 1,5 DNF + 1,07
<-1,9; -1,2>
FSZ = – 1,05 CVY + 1,06
<-1,5; -0,6>
FSZ = – 0,4 NVS + 0,8
<-0,7; -0,1>
Závislost funkční zralosti na poměrném čase testování a na čase programování.
FZ = – 1,3 TT/TP + 2,3
<-5,2; 2,5>
FZ = 1,8⋅10-5 TP + 1,8
<-2⋅10-5; 5⋅10-5 >
Závislost drobných nefunkčností a neošetřenosti vstupů na metrice poměrné složitosti programu. Závislost chyb výstupu na funkčním splnění zadání, chybách v uživatelském rozhraní, drobných nefunkčnostech a neošetřenosti vstupů. Závislost doby bezporuchového provozu na čase programování a čase testování.
FSZ = – 0,5 UR + 0,8
<-1; -0,1>
DNF = 0,5 McCabe’s/Length + 0,09
<0,02; 1>
NVS = 1,03 McCabe’s/Length – 0,08
<0,1; 2>
CVY = – 0,5 FSZ + 0,7
<-0,7; -0,3>
CVY = 0,6 UR + 0,2
<0,4; 0,8>
CVY = 0,9 DNF + 0,1
<0,5; 1,2>
CVY = 0,3 NVS + 0,2
<0,2; 0,5>
BP = 0,06 TP + 507
<0,02; 0,1>
BP = 0,2 TT + 1114
<0,1; 0,3>
tab. 4: Rovnice regresních přímek K nalezení odlehlých bodů, jejichž vyloučením by mohlo dojít ke zpřesnění modelů, byla použita analýza reziduí. Její výsledky jsou ve vložených přílohách disertační práce zachyceny v grafech TSPLOT 1 až TSPLOT 14. Vyloučením odlehlých bodů došlo k některým změnám v modelech, tj. úpravě regresních koeficientů a korekci hodnot signifikance. Regresní modely 1, 2, 3, 4, 6, 9, 10, 11, 12 jsou bez odlehlých bodů, tedy modely zůstaly nezměněny.
20
Pásy spolehlivosti V některých sestrojených modelech lze pozorovat poměrně úzké pásy spolehlivosti, což ukazuje na poměrně velkou přesnost hodnot závisle proměnných vypočtených z příslušných modelů. Jde o závisle proměnné FSZ a CVY vždy v závislosti na jiné nezávisle proměnné – DNF, CVY, UR, NVS, FSZ. Ve všech případech jde o externí metriky. Při pohledu na intervaly spolehlivosti ve zbývajících modelech lze pozorovat vesměs daleko širší pásy spolehlivosti kolem příslušných regresních přímek. Pochopitelné je zúžení pásu spolehlivosti v oblasti, kde se nachází nejvíce naměřených bodů. Jisté zúžení lze pozorovat u většiny modelů. Pro další zúžení pásů spolehlivosti v celém rozsahu hodnot nezávisle proměnných doporučuji provádět případná další měření tak, aby naměřené hodnoty pokryly celou oblast zájmu (rozsahy hodnot). Experiment s objektově orientovanými programy Interní objektově orientované metriky byly měřeny automaticky a detailně zaznamenávány do poměrně rozsáhlých souborů, které obsahovaly jednotlivé metriky (definované v tab. 2 a tab. 3) pro každou objektovou třídu modulu. Pro každý měřený softwarový modul (ADROT, AMAGAL, AMADEUS, EXTREM, IAM, XMLGAL) byl vygenerován jeden soubor metrik. Pro další statistickou analýzu naměřených dat bylo potřeba z dílčích metrik každé objektové třídy vypočítat souhrnné metriky celého měřeného modulu. Souhrnné základní interní metriky pro celý modul byly nejdříve stanoveny pomocí součtů (m je počet tříd v modulu): m
m
m
m
i =1
i =1
i =1
i =1
LOC = ∑ LOC (Ci ) , NOM = ∑ NOM (Ci ) , NIM = ∑ NIM (Ci ) , NCM = ∑ NCM (Ci ) , m
m
m
i =1
i =1
i =1
NOA = ∑ NOA(Ci ) , NIV = ∑ NIV (Ci ) , NCV = ∑ NCV (Ci ) .
Souhrnné Chidamberovy-Kemererovy interní metriky pro celý modul byly na základě teorie nejdříve stanoveny pomocí součtů a maxim (m je počet tříd v modulu): m
m
m
i =1
i =1
i =1
WMC = ∑ WMC (Ci ) , DIT = max( DIT (Ci )) , NOC = ∑ NOC (Ci ) , CBO = ∑ CBO (Ci ) , m
RFC = ∑ RFC (Ci ) , LCOM = max( LCOM (C i )) . i =1
Výše uvedenými způsoby byly vypočteny všechny potřebné souhrnné interní metriky. Každý modul je charakterizován jednou sadou souhrnných interních metrik. Jejich hodnoty, které jsou uvedeny v tab. A-4 v oddělených přílohách, byly dále použity při statistickém vyhodnocení korelační analýzou. Nalezené závislosti metrik odhalily zajímavou skutečnost. Na první pohled upoutalo velké množství závislostí interních metrik na jiných interních metrikách. Týká se to jak základních, tak i Chidamberových-Kemererových interních metrik. Příslušné korelační koeficienty lze nalézt v horním sektoru korelační matice v tab. A-6 (I. část) v oddělených přílohách disertační práce.
21
Z toho jsem učinil závěr, že souhrnné základní interní metriky definované na základě úvahy pomocí součtů a souhrnné Chidamberovy-Kemererovy interní metriky definované na základě teorie (literatury) pomocí součtů a maxim, mají malou schopnost popsat strukturální vlastnosti měřeného softwaru z většího počtu různých pohledů. Lze říci, že různé souhrnné základní metriky vypočtené pomocí součtů a také různé souhrnné Chidamberovy-Kemererovy metriky vypočtené pomocí teorií doporučovaných součtů dávají v různých podobách stále stejnou informaci o vlastnostech softwaru, jenom jinak vyjádřenou. Jiná situace je u metrik DIT a LCOM, u kterých teorie doporučuje místo součtů používat maxima. U nich vzájemná závislost s jinými interními metrikami nebyla prokázána, byla však s 95% spolehlivostí prokázána jejich vzájemná závislost jedné na druhé. Relativně lépe než ostatní se z tohoto pohledu chová také interní metrika NCV, která je závislá „jen“ na 4 jiných interních metrikách. Z uvedených důvodů jsem se rozhodl najít vhodnější způsob výpočtu souhrnných interních metrik. Použil jsem dosud neuvažovanou alternativu – medián. Medián je statistická charakteristika, kterou lze použít i na data, která nemají symetrické rozdělení. Jeho další výhodou je, že medián je méně citlivý na případné odlehlé hodnoty, které by mohly zkreslovat hodnoty souhrnných metrik. Navíc medián lze použít i pro metriky ordinálního typu. Souhrnné základní interní metriky pro celý modul jsou (vlnovka označuje medián, i = 1 ... m, m je počet tříd v modulu): ~ ~ ~ ~ LOC = L OC (C i ) , NOM = NOM (C i ) , NIM = NIM (Ci ) , NCM = NCM (C i ) ,
~ ~ ~ NOA = NOA(Ci ) , NIV = NIV (Ci ) , NCV = NCV (Ci ) . Souhrnné Chidamberovy-Kemererovy interní metriky pro celý modul jsou (vlnovka označuje medián, i = 1 ... m, m je počet tříd v modulu): ~ ~ ~ ~ WMC = WMC (Ci ) , DIT = DIT (C i ) , NOC = NOC (Ci ) , CBO = C BO(C i ) , ~ ~ RFC = R FC (Ci ) , LCOM = L COM (C i ) . Z nové korelační matice (tab. A-8 v oddělených přílohách disertační práce) byl vidět značný úbytek nežádoucích vzájemných korelací interních metrik. Z tohoto faktu vyvozuji, že použití mediánů je daleko vhodnější, než použití součtů. Také u metrik LCOM a DIT je z tohoto pohledu výhodnější použití mediánů, protože narozdíl od použití maxim nejsou na sobě tyto dvě metriky vzájemně závislé (není statisticky významná korelace). Další vyhodnocení – analýzu výsledků – jsem proto provedl již jen s použitím mediánů pro výpočet všech souhrnných interních metrik. Z výsledků korelační analýzy dále vyplynulo, že neošetřenost vstupu (NVS) je nepřímo úměrná počtu proměnných v objektové třídě (NIV), počtu atributů v objektové třídě (NOA) a počtu metod ve třídě (NOM). Bezporuchový provoz (BP) je nepřímo úměrný délce času testování (TT). Jeho střední doba (BPS) je rovněž nepřímo úměrná délce času testování (TT) a navíc ještě hloubce stromu dědičnosti (DIT). A konečně chybovost výstupu (CVY) je nepřímo úměrná odezvě objektové třídy (RFC) a počtu instancí metod ve třídě (NIM). Analýza reziduí prokázala existenci statisticky významně odlehlých bodů, které bylo možné za účelem zpřesnění modelu vyloučit, u modelů CVY-NIM a CVY-RFC. Nové modely jsou uvedeny v grafech Regrese 1a, Regrese 2a.
22
Při pohledu na výsledné grafy lineárních závislostí lze říci, že výsledky vcelku nejsou v rozporu s obecnými zákonitostmi tvorby softwaru pomocí objektově orientované technologie a vypovídají o jakosti analyzovaného softwaru. Nyní rozeberu zjištěné skutečnosti pro každou skupinu závislostí (pro každou závisle proměnnou) podrobněji. Neošetřenost vstupů je tím menší, čím větší je v objektových třídách počet konstrukčních prvků, konkrétně atributů (metrika NOA), metod (metrika NOM) a instančních proměnných (metrika NIV). Je tedy možné říci, že tyto tři modely zachycují v kladném smyslu trend, kdy v objektových třídách roste počet konstrukčních prvků, z nichž některé pravděpodobně zabezpečují správné ošetření vstupů vůči nesprávným či nepřípustným hodnotám. Tím, že roste počet všech zmíněných konstrukčních prvků, lze předpokládat, že se zvyšuje i počet konstrukčních prvků potřebných pro správné ošetření vstupů. Není zde sice splněna podmínka dostačující, ale je splněna alespoň podmínka nutná. Pro modely se závisle proměnnou CVY upravené analýzou reziduí (grafy Regrese 1a, Regrese 2a) lze formulovat následující tvrzení. Čím větší počet instančních metod (indikuje metrika NIM) je v objektových třídách obsaženo anebo čím víc vlastních či jiných metod na objektové třídy reaguje (metrika RFC), tím menší chybovost je na výstupu. Naopak je tedy možné říci, že model v kladném smyslu zachycuje následující trend: zvyšující se počet všech zmíněných typů výpočetních prvků či odkazů v softwaru zvyšuje i počet implementovaných výpočetních prvků či odkazů, jejichž absence by měla podstatný vliv na zhoršení výstupů z programu. Opět je pro toto tvrzení splněna alespoň podmínka nutná.
Regrese 1a CVY* = 0,2 - 0,03 NIM 95% CI pro b0: <-0,08; 0,5>
95% CI pro b1: <-0,08; 0,02>
0,4
0,3
CVY*
0,2
0,1
0,0
Regression
-0,1
95% CI 95% PI
-0,2 3
4
5
NIM
6
7
8
obr. 10: Regrese 1a
23
Regrese 2a CVY* = 0,3 - 0,01 RFC 95% CI pro b0: <-0,1; 0,6>
95% CI pro b1: <-0,04; 0,01>
0,4
0,3
CVY*
0,2
0,1
0,0
Regression
-0,1
95% CI -0,2
95% PI 9
10
11
12
13
14
15
16
17
18
RFC obr. 11: Regrese 2a Pro model se závisle proměnnou BPS a nezávisle proměnnou DIT (graf Regrese 5) lze formulovat následující tvrzení. Střední doba bezporuchového provozu je tím delší, čím menší je hloubka vnoření stromu dědičnosti. To odpovídá zkušenostem při programování. Programátor je schopen udržet svou pozornost jen na konečný rozsah programové struktury. Se zvětšujícím se rozsahem softwaru roste riziko chyb, které programátor může (ale nemusí) udělat.
Regrese 5 BPS = 1411728 - 323481 DIT 95% CI pro b0: <841851; 1981605>
95% CI pro b1: <-481537 ; -165426>
2000000
BPS
1000000
0
Regression 95% CI 95% PI
-1000000 1
2
3
DIT obr. 12: Regrese 5
24
4
5
Rozpaky vzbuzuje jen poslední skupina nalezených závislostí – závislost bezporuchového provozu (metrika BP), respektive jeho střední hodnoty (metrika BPS) – na době testování (metrika TT). Grafické znázornění je v oddělených přílohách disertační práce uvedeno v grafech Regrese 3 a Regrese 4. Očekával bych spíše přímou úměrnost než nepřímou. Se zvyšující se délkou doby testování by logicky měla růst i doba bezporuchového provozu, respektive jeho střední hodnota. Příčiny, že tomu tak není, mohou být různé a zasloužily by si prověření v dalších experimentech. Například může jít o klesající část složitější závislosti, kdy bezporuchovost nejdříve skutečně stoupá s prodlužující se délkou testování, ale po dosažení maxima již delší doba testování nepřispívá ke zvýšení bezporuchovosti a ze zatím neznámých příčin začne naopak klesat. Dalším možná vysvětlení jsou uvedena přímo v disertační práci.
ZÁVĚRY I. Závěry z teoretické části Modelování jakosti softwaru pro řídicí systémy je poměrně nová oblast, která nebyla systematicky zkoumána. Vzhledem k vysokým požadavkům na bezpečnost dnešních řídicích systémů a z důvodu vysokého podílu softwaru na jejich správném fungování je nutné věnovat se jakosti použitého softwaru. Z teoretických rozborů vyplynuly následující závěry: 1. Z přehledu vývoje programovacích jazyků pro řídicí systémy jsem učinil závěr, že v dalším zkoumání je vhodné zaměřit se na jazyk mnemokódů, strukturovaný textový jazyk, případně jiný textový programovací jazyk. Jako nejperspektivnější do budoucna se jeví takové programovací jazyky, které se budou stále více přibližovat vyšším programovacím jazykům počítačů jako jsou Pascal a C. 2. Z diskuse a rozboru pojmů jsem vyvodil závěr, že software je v obou sledovaných oblastech – v řídicích systémech i v softwarovém inženýrství – chápán obdobně, a že závěry učiněné pomocí metod a prostředků softwarového inženýrství budou aplikovatelné v oblasti softwaru pro řídicí systémy. 3. Přehled softwarových funkčních skupin poskytnul pro vytvoření metodiky MJSW pro řídicí systémy informaci, že je nutno volit metriky, které vypovídají o funkčnosti logických a matematických konstrukcí, včetně dalších pomocných funkčností, dále o správnosti vstupních a výstupních dat, funkčnosti uživatelského rozhraní a podobně. Jakost softwaru pro řídicí systémy jsem modeloval pomocí charakteristik jakosti. Sestavil jsem vlastní model charakteristik a subcharakteristik jakosti softwaru pro řídicí systémy. Při jejich výběru jsem se řídil těmito zásadami: • • •
vycházet ze standardizovaných charakteristik, vhodnost charakteristik pro hodnocení jakosti softwaru pro řídicí systémy, snadná dostupnost metrik pro zvolené charakteristiky.
Měření nemůže být realizováno bez standardu. Metriky jakosti softwaru mají takové standardy pro měření charakteristik jakosti softwaru představovat. Problémem bylo stanovit, jak získat vhodné metriky. Z analýz vlastností metrik jakosti vyplynulo, jaká kritéria mají vhodné potenciální metriky splňovat:
25
1. 2. 3. 4.
korelace k jakosti softwaru, potenciální přínosy aplikace metriky, kvantifikovatelnost, proveditelnost.
Uvedené vlastnosti by měly být brány v úvahu vždy při vývoji a návrhu nových metrik pro měření jakosti softwaru. Metriky by měly být definovány odděleně pro každý druh produktu. Při řešení disertační práce a souvisejících diskusích s odborníky jsem se setkal s nejednoznačností při definici a výkladu pojmů metrika a míra. Tyto pojmy jsou v teorii měření používány v jiném smyslu, než je tomu v jiných oblastech matematiky (viz terminologická poznámka v kapitole 3.1). II. Závěry z experimentální části a) závěry z experimentu s imperativními programy Předmětem statistického zkoumání v prvním experimentu byly vzorky modelového softwaru, který byl vytvořen v programovacím jazyku Pascal, což je v souladu s provedeným rozborem vlastností softwaru řídicích systémů. Vzorky se podařilo získat na spolupracující základní škole. Rozsah souboru vzorků byl dán počtem 26 spolupracujících programátorů. Přesná specifikace je uvedena v disertační práci v popisu podmínek při měření. Vlastnosti zdrojového kódu vzorků jsem popsal interními metrikami. Následně se mi podařilo experimentálně prokázat vztah mezi interními a externími metrikami a s využitím statistiky navrhnout empirický model jakosti softwarového produktu. V tomto experimentu jsem použil interní metriky délky (označení Length) a složitosti (McCabe) grafu řízení. Mimo ně jsem navrhnul novou metriku poměrná složitost grafu řízení (McCabe/Length), kterou definuji jako poměr složitosti k délce. Původní metrika McCabe dobře hodnotí tzv. rozhodovací složitost. Horší je však schopnost této metriky podchytit nestrukturovanost programu a hloubku vnoření struktur. Ukázalo se, že nově navržená metrika poměrná složitost grafu řízení bude mít dobrou vypovídací schopnost o složitosti programu a zároveň nebude citlivá na délku programu, tj. umožní lepší porovnávání různě dlouhých programů. Prokázal se vliv metriky na některé složky externí jakosti softwaru pro řídicí systémy. b) závěry z experimentu s rozsáhlými objektově orientovanými programy Podařilo se mi provést analýzu podle metodiky MJSW i na vzorku rozsáhlých programů. Bylo nutné volit novou sadu interních metrik, protože dnešní postupy tvorby rozsáhlých programů jsou již běžně založeny na paradigmatu objektově orientovaného programování. Sada externích metrik zůstala zachována v původní podobě jako při prvním experimentu. Korelační analýza ukázala na statisticky významné závislosti mezi metrikami. Pro analýzu jsem použil souhrnné hodnoty interních metrik vypočtené s použitím mediánů. Mediány jsem navrhl použít proto, že teorií doporučované součty nedávaly dobré výsledky z hlediska vzájemné nezávislosti interních metrik. Na základě toho jsem učinil závěr, že jednak souhrnné základní interní metriky definované na základě úvahy pomocí součtů a jednak souhrnné ChidamberovyKemererovy interní metriky definované na základě teorie pomocí součtů a maxim, mají malou schopnost popsat strukturální vlastnosti měřeného softwaru z většího počtu různých pohledů. Naopak mediány se mi z tohoto hlediska osvědčily daleko lépe. Na základě výsledků provedeného experimentu se domnívám, že mnou navržený výpočet mediánů je vhodným způsobem stanovení souhrnných interních metrik pro programový modul při modelování jakosti softwaru.
26
Výsledky regresní analýzy jsou, i ve své zpřesněné podobě (vypuštěním odlehlých bodů pomocí analýzy reziduí), prezentovány na grafech lineárních závislostí. Nalezené závislosti jsou vesměs v souladu se zkušenostmi a s obecnými zákonitostmi tvorby softwaru pomocí objektově orientované technologie. Podle mého názoru tím tento experiment ověřil a dokázal možnost použití metodiky MJSW i na rozsáhlých programech. III. Obecné závěry Modelování jakosti softwaru pro řídicí systémy je možné, vyžaduje však přesné vymezení podmínek platnosti modelu. Mohu říci, že sestavení použitelného modelu pro konkrétně definované podmínky je i prakticky realizovatelné. Disertační práce k tomu dává návod ve formě metodiky modelování, která je založena na statistické analýze naměřených dat. Navržená metodika se skládá z následujících po sobě jdoucích kroků: 1. 2. 3. 4.
Korelační analýza založená na testování hypotézy o nezávislosti zkoumaných metrik pomocí Spearmanova korelačního koeficientu. Sestavení modelů závislosti externích a interních metrik, u kterých byla nalezena statisticky významná korelace, pomocí regresní analýzy. Zpřesnění modelů analýzou odlehlých bodů pomocí t-testu. Vyjádření přesnosti výsledného modelu pomocí intervalů spolehlivosti pro regresní koeficienty a pásů spolehlivosti pro hodnoty vypočtené z modelu.
Snažil jsem se dokázat, že modelování jakosti softwaru pomocí metrik přináší hodnotné informace a že v přesně vymezených podmínkách (hardware, operační systém, programovací jazyk, zkušenosti programátorů apod.) je možné sestavit empirický regresní model, který by bylo v budoucnu možné používat při odhadu jakosti softwaru (pomocí externích metrik) ještě dříve, než bude spuštěn. Tj. bylo by možné provést odhad chování softwaru při provozu na základě jeho strukturálních vlastností (pomocí interních metrik) již v ranných fázích jeho tvorby. Nabízí se také možnost použít metodiku k vytvoření modelů využitelných pro měření a srovnávání jakosti softwaru od různých programátorů, kteří pracují na stejném nebo podobném projektu. Taková možnost srovnání práce programátorů zatím v praxi vůbec není k dispozici. Ekonomické vyhodnocení přínosů metodiky MJSW, které je provedeno v oddělené příloze B, dokazuje, že se použitím metodiky dosáhne nejen značných úspor nákladů, ale zvýší se i výnosy, vzniknou nové příležitosti a dodavatel může dosáhnout dalších výhod na trhu. Prvními skromnými úspěchy navržené metodiky v praxi jsou kromě kladného hodnocení ředitele pro výzkum a vývoj z firmy e-Fractal Praha, kde byl proveden druhý experiment, také ohlas na její publikovanou podobu, který přišel z firmy DERS Hradec Králové. Navržením metodiky MJSW, jejím ověřením a zpracováním výsledků v disertační práci jsem se snažil přispět svým dílem k odhalení vztahů mezi jakostí softwaru pro řídicí systémy a jejími měřitelnými prediktory. Věřím, že dosažené výsledky budou motivací pro případné následovníky, kteří budou chtít pokračovat dále ve výzkumu. Nabízí se například možnost prověřit nalezené závislosti v širším intervalu hodnot proměnných, pokusit se aplikovat jiné než lineární závislosti (např. kvadratické nebo exponenciální) nebo dokonce zkusit sestrojit modely s několika nezávisle proměnnými. Jinou možností k dalšímu zpřesnění modelů je použití metody tzv. navrhovaného experimentu (DOE – Design of Experiment). To vše předpokládá provedení velkého počtu dalších experimentů.
27
LITERATURA 1.
ALIFORNI, S.S. - MATARAZZI, C. A Flexible Metric for Software Auditing Activities. In Information Systems Auditing. Elsevier Science Publishers, 1983. ISBN 0-444-86778-3.
2.
ANDĚL, J. Matematická statistika. Praha: SNTL a Alfa, 1978.
3.
ARTUR, L.J. Measuring Programmer Quality. Wiley, New York: 1985.
4.
ARTUR, L.J. Software quality measurement. Datamation. December 1984.
5.
BACHE,R. - BAZZANA,G. Software Metrics for Product Assessment. McGraw-Hill, 1994. ISBN 0-07-707923-X.
6.
BINDER, L.H. - POORE, J.H. Field Experiments With Local Software Quality Metrics in Software - Practice and Experience. July 1990, vol. 20 (7), p.631-647.
7.
BOEHM, B.W. AT ALL. Characteristics of Software Quality. TRW Series of Software Technologies. North-Holland, Amsterdam: 1978, vol.1.
8.
BOWEN, T.P AT ALL. Specification of Software Quality Attributes. Air Force System Command RADCTR-85-37. Rome, NY: Rome Air Development Center, 1985, vol. I, II, III.
9.
CARD, D.N. - GLASS, R.L. Measuring Software Design Quality. Prentice Hall, 1990.
10. ČSN EN 61131-1. 11. ČSN ISO 8402. Praha: Český normalizační institut, 1995. 12. ČSN ISO/IEC 12207. 13. ČSN ISO/IEC 9126. 14. DEUTSCH, M.S. - WILLIS, R.R. Software QualityEngineering. Englewood Cliffs, NJ: Prentice-Hall, 1988. 15. DUŠEK, F. Programové prostředky ASŘTP. Učební text KŘ PVT FCHT. Pardubice: Universita Pardubice, 1994, 122p. 16. Encyklopedický slovník. Praha: Academia, 1981. 17. FEHR, U.H. Total Quality Management. Brno, UNIS, 1995. ISBN 3-446-17135-5. 18. FORSE, T. Qualimetrie des systems complexes. Paris: Les Editions d’Organisation, 1989. 19. GARMUS, D. - HERRON, D. Measuring the Software Process - a practical guide to functional measurements. Prentice Hall, 1996. 20. GILLIES, A. C. Software Quality–Theory and Management. London: Chapman and Hall, 1993. 21. GRADY, R.B. - CASWELL, D.L. Software Metrics: Establishing a Company-Wide Program. Englewood Cliffs, NJ: Prentice-Hall, 1987. 22. HALSTEAD, M.H. Elements of Software Science. Amsterdam: North–Holland, 1977. 23. HALVA, M. Jakost softwaru užívaného ve firmách. In sborník z celostátní konference Tvorba softwaru 2000. Ostrava: Tanger, 2000. ISBN 80-85988-49-6. 24. HALVA, M. Modelování jakosti softwarových produktů v řídicích systémech. In sborník z celostátní konference Tvorba softwaru 2002. Ostrava: Tanger, 2002. ISBN 80-85988-74-7. 25. HALVA, M. Modelování jakosti softwaru pro informační systémy. Teze disertační práce. Brno: VUT v Brně, 1998, 38 s.
28
26. HALVA, M. Quality modelling of software products. In sborník z mezinárodní konference JAKOST – QUALITY 2002. Ostrava: Dům techniky a VŠB-TU, 2002. ISBN 80-02-01494-4. 27. ISO/IEC 9126-1. 28. KLEIJEN, J.P.C. Quantifying financial benefits of Information. Tilburg, Netherlands: 1978. 29. Komponenty pro plně integrovanou automatizaci – přehled systémů. Firemní literatura SIEMENS. Brno: 2000. 30. KRÁL, J. - DEMNER, J. Softwarové inženýrství. Praha: Academia,1991. ISBN 80-200-0086-0. 31. LACKO, B. Jakostní informační systémy. In sborník z konference Quality Management ‘99. Brno: VUT v Brně, 1996. ISBN 80-214-0796-4. 32. LACKO, B. Trendy informačních systémů po roce 2000. In Jakost a informační systémy. Brno: VUT v Brně, 1999. ISBN 80-214-1321-2. 33. MAGGIOLINI, P. Economic Assessment of Information Systems and The Effectiveness/ Efficiency of Computer Technology. In Information Systems Auditing. Amsterdam, Netherlands: Elsevier Science Publishers, 1983. ISBN 0-444-86778-3. 34. MAROŠ, B. Empirické modely I. Brno: Akad. nakl. CERM, 2001. ISBN 80-214-1984-9. 35. MC CABE, T.J. A Complexity Measure. IEEE Transactions on Software Engineering. December 1976, 2, no. 4. 36. MC CALL ET AL. Factors in Software Quality. RADC-TR-77-363. Rome, NY: Rome Air Development Center, Griffis Air Force, 1977. 37. MILLER, D.R. The role of statistical modeling and inference in software quality assurance. In Software certification. London and New York: Elsevier Applied Science, 1989. ISBN 1-85166-380-0. 38. ROSA, Z. Komentované vydání návrhů norem ISO/DIS 9000:2000. Praha: Český normalizační institut, 2000. ISBN 80-7283-008-2. 39. SMITH, D.,J. - WOOD, K.,B. Engineering Quality Software. 40. ŠMEJKAL, L. Tři desetiletí PLC a standard IEC 1131-3. Automatizace. 1998, roč. 41, č.12, s.799-805. 41. VANÍČEK, J. Cestovní zpráva. Patnácté zasedání mezinárodního normalizačního výboru ISO/IEC – JTC1/SC7 a jednání jeho pracovní skupiny (Japonsko / Nagoya). Praha: Úřad pro veřejné informační systémy, 2001. 42. VANÍČEK, J. Cestovní zpráva. Zasedání pracovní skupiny WG6 mezinárodního normalizačního výboru ISO/IEC – JTC1/SC7 (Itálie / Bari). Praha: Úřad pro veřejné informační systémy, Česká zemědělská univerzita, 2001. 43. VANÍČEK, J. Měření a hodnocení jakosti informačních produktů ve světle mezinárodní normalizace. Praha: ČZU PEF, ÚVIS, 2001. 44. VANÍČEK, J. Měření a hodnocení jakosti informačních systémů. Praha: ČZU PEF ve vydavatelství CREDIT, 2000, 212 s. ISBN 80-213-0667-X. 45. VANÍČEK, J. Zpráva ze služební cesty do Austrálie - Sydney. Praha: Úřad pro státní informační systém, Česká zemědělská univerzita, 1998. 46. VANÍČEK, J. Zpráva ze služební cesty do Jihoafrické republiky. Praha: Úřad pro státní informační systém, 1997. 47. VON MARYHAUSER, A. Software Engineering Methods and Management. New York: Academic Press, 1990.
29
AUTORŮV PRACOVNÍ ŽIVOTOPIS Ing. Martin Halva Šimkova 422 592 31 Nové Město na Moravě
Datum a místo narození:
27. října 1971, Svitavy.
Vzdělání:
- 1995: Vysoké učení technické v Brně (VUT), Fakulta strojního inženýrství (FSI).
Specializace:
- Počítačové navrhování strojních soustav (Integrátor systémů CAD). - Technická kybernetika (Informační systémy v řízení) - Management a řízení jakosti (Interní auditor FSI).
Zaměstnání:
- od r.1995:
- 1997: - od r.1998:
- od r.2000:
Organizace:
30
Doktorand na VUT-FSI - Ústavu automatizace a informatiky (Jakost softwaru pro informační systémy v řízení, metodologie CASE). Programátor v ABB ENS pro GENERAL ELECTRIC). Akademický pracovník – asistent na VUT-FSI na Odboru jakosti systémů a procesů (ISO 9000:2000, TQM, FMEA, QFD, SPC, 6σ). Poradenství pro SC&C PARTNER v oblasti jakosti – analýzy, konzultace, odborná školení pro strojírenské podniky.
- Český normalizační institut (Předseda subkomise Průmyslová data v TNK 42 – Výměna dat). - Asociace strojních inženýrů, - Česká společnost pro kybernetiku a informatiku.
PUBLIKAČNÍ ČINNOST AUTORA Vybrané články ve sbornících: 1.
HALVA, M. Podpora jakosti softwaru pro informační systémy v metodě Euromethod. In sborník ze semináře Standardizace a jakost softwaru. Brno: VUT v Brně, nadace NEJ-EQF a ČSSI, 1997, s.64-66. ISBN 80-214-0948-7.
2.
HALVA, M. Řízení jakosti při tvorbě softwaru. In sborník z workshopu Jakost a informační systémy. Brno: VUT v Brně, 15.4.1999, s.53-58. ISBN 80-214-1321-2.
3.
HALVA, M. Jakost softwaru užívaného ve firmách. In sborník z celostátní konference Tvorba softwaru 2000. Ostrava: Tanger, 30.5.-1.6.2000, s.38-43, ISBN 80-85988-49-6.
4.
HALVA, M. Zásady managementu kvality (jakosti) podle mezinárodní normy ISO 9000:2000. In sborník z workshopu Výstavba systému jakosti školy. Brno: VUT v Brně, 2001, s.25-28. ISBN 80-214-1935-0.
5.
HALVA, M. Požadavky na jakost softwarových balíků. In sborník z celostátní konference Tvorba softwaru 2001. Ostrava: Tanger, 29.-31.5.2001, s.44-49. ISBN 80-85988-56-9.
6.
HALVA, M. Quality Modelling of Software Products. In sborník z mezinárodní konference QUALITY 2002. Ostrava: Dům techniky Ostrava, VŠB-TU, 28.-30.5.2002, s.H16-H22. ISBN 80-02-01494-4.
7.
HALVA, M. Modelování jakosti softwarových produktů v řídicích systémech. In sborník z celostátní konference Tvorba softwaru 2002. Ostrava: Tanger, 29.-31.5.2002, s.50-62. ISBN 80-85988-74-7.
8.
HALVA, M. Jakost softwaru řídicích systémů. In sborník z Konference mladých vědeckých pracovníků v oblasti automatizace. Brno: VUT v Brně, 2002, s.20-22. ISBN 80-214-2255-6.
9.
HALVA, M.; HAVLÍČKOVÁ, P.; KOTEK, L. Analýza dokumentace systému jakosti podniku podle ISO 9000:2000 porovnávací metodou. In sborník FSI Junior konference 2002. Brno: VUT v Brně, 9.-13.12.2002, s. 64-67. ISBN 80-214-2290-4.
10. Halva, M. Ekonomické hodnocení metodiky modelování jakosti softwaru. In Informační technologie pro praxi. Ostrava: 30.9.2003. Vybrané články v časopisech: 11. HALVA, M.; LIEDERMANN, M. Software quality of pedagogical-and-didactic information systems. Knowledge Transfer (An International Journal), Summer 1998, Volume 1, Number 1, s. 86-92. ISSN 1463-936X. (In mezinárodní konference Knowledge Transfer ’98. London: University of London, Knowledge Society.) 12. HALVA, M. Počítačová podpora řízení jakosti, I. a II. díl. IT-system, 2002, roč.4, č.10 a 11, s.18-20 a s.34-37. ISSN 1212-4567. Učebnice: 13. HALVA, M.; HAVLÍK, Z.; KOCIÁN, P.; LIEDERMANN, M.; ONDRÁČEK, O. Výpočetní technika I.díl. Praha: GLOBAL, 1996, 240s. ISBN 80-85870-09-6.
31
ABSTRACT This dissertation deals with quality modelling of software products in the context of control systems. Interrelationships among internal and external metrics have been examined. Internal (structural) metrics were supposed to predict quality of a software product. External metrics such as functionality and reliability were used to describe the software-product quality. Statistical methods and tools were used to establish and refine linear dependency models. Two experiments were made to explore and interpret the dependencies of both imperative and object-oriented internal metrics on the external metrics of software quality. Outputs of this dissertation are: • • • • •
32
A new method for total values computing of object-oriented internal metrics using medians, Proposition of new a relative complexity metric using McCabe’s cyclomatic complexity, Internal-structural-metric to external-quality-metric dependency models including graphs, Interpretation of found dependencies, A validated method for control-systems-software-quality modelling using statistics.