Složitost IS, metriky, jakost IS
Download
Report
Transcript Složitost IS, metriky, jakost IS
SLOŽITOST IS
POJMY
Stupnice:
Absolutní – měřená hodnota vyjádřena poměrem
k nějakému celku ( např. %)
Poměrová – výpočet míry celku ze známých
komponent (průměr, rozptyl)
Intervalová (např. stupnice teploty)
Ordinální – subjektivní odhad a pouhé porovnání
Nominální – klasifikace do tříd bez závěrů
METRIKY
vnitřní – data se získávají analýzou návrhu
kódu
vnější – data se získávají za běhu programu
JAKOST IS
Atribut – měřitelná fyzická či abstraktní vlastnost entity.
Funkčnost
= schopnost IS či softwarového produktu obsahovat funkce,
které zabezpečují předpokládané či stanovené potřeby
uživatele při užívání systému
Přiměřenost – schopnost poskytovat funkce pro zajištění
úloh a potřeb.
Přesnost – schopnost poskytnout správné výsledky
s potřebnou úrovní přesnosti
Schopnost spolupráce – spolupráce s jedním či více
jinými specifikovanými systémy
Bezpečnost – chránit informace a data proti
neautorizovanému čtení, změně
Shoda funkčnosti – pracovat ve shodě s normami,
standardy, zákony, konvencemi
Bezporuchovost
= schopnost zachovat specifikovanou úroveň
výkonu
Zralost – schopnost vyvarovat se poruchám
v důsledku závad systému nebo důsledky
takovýchto selhání minimalizovat
Odolnost vůči vadám – schopnost zachovat si
při selhání nebo při nedodržení požadovaného
rozhraní určitou úroveň výkonu (služeb)
Schopnost zotavení – schopnost obnovit úroveň
výkonu a zachovat data po odstranění poruchy
Shoda v bezporuchovosti
Použitelnost
= schopnost být srozumitelný, snadno obsluhovatelný
a atraktivní
Srozumitelnost – vlastnost, která umožňuje
rozhodnout se, zda se systém hodí pro řešení
konkrétních problémů a úloh uživatele a za jakých
podmínek.
Naučitelnost –vlastnost charakterizující míru úsilí,
potřebné vynaložit pro rutinní využívání SW
Provozovatelnost – vlastnost, usnadňující jeho
obsluhu a řízení práce se systémem.
Atraktivnost – schopnost umožnit příjemnou
obsluhu a učinit jeho používání přitažlivým.
Shoda v použitelnosti
Účinnost
= poskytovat potřebný výkon vzhledem
k množství použitých zdrojů, za stanovených
podmínek
Časové chování – schopnost zajistit
požadovanou propustnost úloh za dané časové
období, dobu výpočtu nebo odezvu systému
Využití zdrojů –charakteristic. počet typů a
množství zdrojů, potřebný k zabezp. práce
systému
Shoda v účinnosti
Udržovatelnost
= schopnost být modifikován (opravy nedostatků,
vylepšování, adaptace na prostředí, změny)
Analyzovatelnost – schopnost usnadnit
nalezení závady v případě poruch a schopnost
určit, co má být změněno pro odstranění závady
Měnitelnost – schopnost systému usnadňující
provedení modifikace
Stabilnost – schopnost zabránit nežádoucím
efektům provedených modifikací
Testovatelnost – schopnost zabezpečit snadnou
validaci po provedení modifikace
Shoda v udržovatelnosti
Přenositelnost
= schopnost být přenesen z jednoho prostředí do
jiného
Přizpůsobitelnost – schopnost být vlastními
prostředky v průběhu používání přizpůsoben různým
prostředím.
Instalovatelnost – vlastnost být instalován tak, aby
vyhovoval práci v konkrétním prostředí
Slučitelnost – schopnost pracovat společně s jinými
systémy v témže prostředí a využívat společné zdroje
Nahraditelnost – schopnost nahradit funkci jiných
systémů, určených pro stejný účel a pracujících ve
shodném prostředí
Shoda v přenositelnosti
HODNOCENÍ SLOŽITOSTI IS
Výpočetní složitost
Není to úsilí potřebné k navržení algoritmu, ale pracnost a nároky na
jeho provedení.
Časová – závislost doby na provedení úlohy na rozsahu úlohy (počet
kroků turingova stroje, aby úlohu vyřešil)
Prostorová – závislost spotřebované paměti na rozsahu úlohy
(závislost použité oboustranné pásky turingova stroje na rozsahu
úlohy)
Modul – samostatná jednotka, kterou je možné spojovat s dalšími
moduly (algoritmus, objekt)
Programování v malém – nižší úroveň návrhu, realizace jednotlivých
modulů
Programování ve velkém – vyšší úroveň, řešení vztahů mezi moduly
Směr programování shora-dolů (programování ve velkém –>
programování v malém)
HODNOCENÍ SLOŽITOSTI IS V RŮZNÝCH
ETAPÁCH ŽIVOTNÍHO CYKLU
Na začátku (specifikace) – použití funkčních
jednic
V průběhu programování – graf řízení,
hierarchický rozklad atd., objektová složitost
Po dokončení – metody založené na počtu řádků
kódu atd.
SLOŽITOST V ETAPĚ SPECIFIKACE
Hodnocení složitosti v etapě specifikace nebo
před ní je obtížné protože nevíme co budeme řešit
nebo jak. Známe však obecné postupy (metoda
funkčních jednic) pomocí kterých můžeme určit
složitost.
FUNKČNÍ JEDNICE
Složit. je odhadována na základě dvou faktorů – na funkcích a
podmínkách. Jako součin funkcí, které jsou od produktu vyžadovány a
podmínek, které jsou pro vytvoření produktu.
Objem funkcí V, odhadneme tak, že zjistíme počty:
IN, OUT – počet log. různých vstupů ; FILE – počet interních log.
souborů ; INTF – počet log. souborů sdílených ; INQ – počet log.
různých výstupů s čekáním na vstup (dotazů)
Stanovíme váhy pro jednotlivé počty a výslednou složitost získáme
jako součet všech těchto jednic
Zjistíme podmínky realizace, když vezmeme v úvahu faktory
oklasifikované př. dle ord. st. (0-5). Hodnocení sečteme a získáme PF
a hodnocení podmínek dle faktorů získáme vzorcem: F = 0,65 +
0,01 . PF Výsledná složitost ve funkčních jednicích se pak počítá: FP
= b . V . F, kde beta je konstanta závisející na jednotkách, v kterých
byla složitost měřena.
SLOŽITOST PROJEKTOVÁNÍ V MALÉM
Složitost lze zjišťovat na základě:
Fyzikálních údajů software (počet řádků
programu atd.,) - vstupní data pro složitost jsou
až po implementaci
Grafu řízení algoritmu (programu) – příkazy
dělají totéž, ale jsou různě složité, zneužití
programátorem při hodnocení práce
Strukturálního rozkladu algoritmu
HODNOCENÍ SLOŽITOSTI NA ZÁKLADĚ
ANALÝZY GRAFU ŘÍZENÍ
Atomické transformace grafu řízení (graf řízení)
Drobné změny grafu řízení. Slouží pro posouzení, do
jaké míry metrika vycházející z grafu řízení dobře či
špatně odráží naši představu o složitosti (nově
doplněný uzel do grafu, doplnění hrany do grafu)
McCabeovy metriky v grafu řízení (graf řízení)
Tato míra je zvaná též cyklomatická složitost grafu
řízení. Udává max. počet „lineárně nezávislých“ cest
z uzlu Z do K. Každá cesta od Z do K prochází
některými hranami grafu(některými i vícekrát). Lze ji
tedy přiřadit vektor card(H), který bude udávat,
kolikrát byla při této cestě užita daná hrana. Cesta
prochází při testu složitosti každou hranou alespoň
jednou.
MCC (G) = card (H) – card (V) + 2
Harrisonova, Mengelevova metrika SCOPE (graf
řízení)
Metrika každému uzlu přiřazuje č. NL(x) –
hloubka vnoření uzlu.
NL(x) = PŘED(x)+1 , kde PŘED(x) je počet
uzlů, které mohou ovlivnit provedení uzlu x.
Celková složitost SCOPE (G) je pak součtem x
NL (x).
Piwowarsky (graf řízení)
Bere v úvahu ne všechny, ale jen rozhodovací
uzly. Každému z nich se přidá Piw. doplňková
složitost. Ta se rovná počtu kontextu jiných
rozhodovacích vrcholů, v kterých uvažovaný
vrchol leží. PIWO (G) = card (H) + NL (x) + 1
HODNOCENÍ SLOŽITOSTI NA ZÁKLADĚ
PŘEHLEDNÉHO HIERARCH. ROZKLADU
výhody
hierarch. rozklad se opírá o postup shora dolů
není příliš snadné přizpůsobit uměle návrh, aby
při hodnocení bylo dosaženo výsledků dle přání
řešitele
nevýhody
metodu lze užít jen pro strukturovaný návrh
Rozklad na přehledně mnoho dílčích položek (například 7).
Rozklad lze provádět selekcí, sekvencí, iterací atd. Návrh
se jeví jako orientovaný graf, který je orientovaný strom.
Má vrchol – kořen (řešený program), listy (akce, příkazy
programovacího jazyka) a další dílčí celky. U každého uzlu
máme k dispoz. údaje na základě kterých můžeme stanovit
příspěvek daného uzlu ke složitosti:
a) Hloubka vnoření (počet hran od kořene k uzlu)
b) Typ uzlu (selekce, iterace, sekvence)
c) exekutivní složitost zpracování daného příkazu
d) Složitost předávaných dat, jejich objem a strukturu
Součet složitostí a,b,c,d nám udává příspěvek tohoto
vrcholu k celkové složitosti. Sečtením hodnot pro vš.
vrcholy stromu dostaneme celkovou složitost návrhu
daného modulu
SLOŽITOST PROJEKTOVÁNÍ VE VELKÉM
Složitost spolupráce modulů je tím jednodušší, čím se
podaří dodržet následující zásady
Soudržnost modulů – každý modul řeší pouze
vzájemně svázané úkoly, které spolu úzce souvisejí
(jediná metrika v ordinální stupnici)
Funkční soudržnost
Sekvenční soudržnost
Komunikační soudržnost
Procedurální soudržnost
Logická soudržnost
Náhodná soudržnost
Spřaženost modulů – dva různé moduly spolu
spolupracují jednoduchým a snadno
srozumitelným způsobem. Hodnocení pomocí
fentonových stupnic:
Prvá – hodnotí typ komunikace (1-nespoluprac.
až 7 –zasahují si do programových kódů)
Druhá – hodnotí objem komunikace, jako
přirozené č. N – počet předávaných či sdílených
objektů.
SLOŽITOST V OBJEKTOVÉM PROSTŘEDÍ
Chidamver a Kemerer navrhli metriku, která
řeší jen programování ve velkém. Intramodulární
složitost je třeba stanovit klasickými metrikami
pro programování v malém
metriky:
Váha metod pro třídu WMC – součet složitosti cj všech
metod třídy C.
Hloubka stromu dědičnosti DIT – max délka cesty od
kořene stromu k uzlu, který odpovídá dané třídě
Počet synů NOC – počet přímých potomků uzlu, který
ve stromu dědičnosti představuje třídu C
Spřažení mezi třídami CBO – udává počet tříd, na
nichž závisí třída C tím, že volá jejich metody
Odezva třídy RFC – počet metod které třída C
volá(vlastní i z jiné třídy)
Nedostatečná soudržnost tříd v metodách – LCOM
SLOŽITOST V ETAPĚ IMPLEMENTACE A
PROVOZU
Po implementaci programového produktu či IS.
Délka programu – metriky typu LOC – počet
řádků zdroj. kódu
Halsteadovy metriky – složitost na zákl. počtu
elementárních binárních rozhodnutí, ke kterým
dojde při sestavování textu programu.
ODHADY PRACNOSTI IS V RŮZNÝCH
ETAPÁCH ŽIVOTNÍHO CYKLU
Na začátku (specifikace) – použití funkčních
jednic
V průběhu programování – graf řízení,
hierarchický rozklad atd., objektová složitost
Po dokončení – metody založené na počtu řádků
kódu atd.
Pro další úvahy bereme složitost jako počet řádků. Vliv
větvení atd. je zohleděn vynásobením vhodnou konstantou.
Do návrhů na pracnost zahrnujeme i dokumentaci. Údržba,
rozšiřování funkcí a školení uživatelů se musí zahrnout
zvlášť, dle konkrétní situace.
Při posuzování pracovní náročnosti musíme brát v úvahu,
že části programů nelze dělit na nekonečné množství
samostatně vypracovávaných částí. (Příklad se zedníkama
a zdí)
Pracnost v závislosti na objemu software roste
superaditivně. tzn. Rychleji než lineárně, což vede ke krizi
software a řešením je právě objektové programování.