Datasheet

Year, pagecount:1998, 9 page(s)

Language:Hungarian

Downloads:284

Uploaded:August 08, 2006

Size:159 KB

Institution:
-

Comments:

Attachment:-

Download in PDF:Please log in!



Comments

No comments yet. You can be the first!

Content extract

Szoftver minőségügy Áttekintés: - Minőségi szoftverek készítése, - Szoftverek alkalmazása a minőségbiztosításban. Szoftverek minőségbiztosítása Készíthető-e minden bizonnyal helyesen működő program? Program helyessége Egy program helyességéről csak akkor beszélhetünk, ha valamilyen módszerrel meggyőződtünk róla. Első lépés a specifikáció megadása, melyben megfogalmazzuk elő és utófeltételeinket, melyeket felhasználunk a helyesség definíciójához. Definíció: Egy program az x bemenő adatokra felírt ef(x) előfeltétel, a p(x) programfüggvény, valamint az y -x-hez tartozó, azaz y=p(x)- eredményre vonatkozó uf(x,y) utófeltétel mellett parciálisan (részlegesen) helyes ha minden x-re a program futása befejeződik: ef(x) -> uf(x,p(x)). Definíció: Egy program az x bemenő adatokra felírt ef(x) előfeltétel, a p(x) programfüggvény, valamint az y -x-hez tartozó, azaz y=p(x)- eredményre vonatkozó uf(x,y) utófeltétel

mellett befejeződik, ha minden x-re ef(x) -> a program eljut a végpontjához. Definíció: Egy program az x bemenő adatokra felírt ef(x) előfeltétel, a p(x) programfüggvény, valamint az y -x-hez tartozó, azaz y=p(x)- eredményre vonatkozó uf(x,y) utófeltétel mellett teljesen helyes, ha parciálisan helyes és befejeződik, azaz minden x-re ef(x) -> a program futása befejeződik és uf(x,p(x)). Módszerek a program helyességének belátásához: a) Programigazolás: próbafeladatok lefuttatásával a program megbízhatóságának belátása. b) Programérvényesítés: a specifikáció alapján a program logikai helyességének igazolása valódi környezetben. c) Programhitelesítés: a program helyességének és a feladat meghatározás előírásainak jóváhagyása a hosszú idő alatt összegyűlt futtatási tapasztalatok alapján. d) Hibakeresés: az előző módszerek egyikével megtalált hiba helyének, okának megtalálása. e) Programhelyesség

bizonyítás: a program logikai helyességének kimutatása axiómák, következtetési szabályok segítségével a specifikáció alapján f) Programlevezetés, programszintézis: a specifikáció alapján eleve helyes program létrehozásának módszere. g) Szimbolikus végrehajtás: a program végrehajtása konkrét adatok helyett adatosztályokkal, amelyeket logikai formulákkal adunk meg. Tesztelés: Célja: minél több hibát megtalálni a programban. Az összes lehetséges eset kipróbálása lehetetlen Példa: Program: változó I,J:egész a programozási nyelv meghatároz za az ábrázolható 16 be: I,J egészek számát, amely lehet pl.2 összes transzformáció(I,J) a két adatra összesen 216* 216=232 ki: (I,J) lehetséges eset adódik Program vége Olyan módszereket kell választanunk, amellyel a próbák száma erősen lecsökkenthető. Statikus tesztelési módszerek: Statikus tesztelési módszerről akkor beszélünk amikor csak a program kódját vizsgáljuk. 1

Kódellenőrzés: A program szövegének vizsgálatát jelenti Az algoritmus logikáját hasonlítjuk össze a forrásprogram szövegével. Szerencsés ha független személyt is bevonunk 2 Formai ellenőrzés: formai (szintaktikai) ellenőrzéséhez fordítóprogram esetén tesztadatokkal kell kipróbálni, minden egyes soron végig kell menni. 3 Kereszthivatkozási táblázatok: Információk összegyűjtése a programról (keresztreferencia) pl. változókról készült táblázat Pl változónév típus hivatkozási helyek azonosítása A egész főprogram, A eljárás, C eljárás 4. Tartalmi ellenőrzés, ellentmondás keresés: Formailag helyes programokban fordulnak elő, feltárásuk nehéz, jó fordítóprogramok felismerhetik egy részüket. a) Felhasználatlan objektum: A programegységek deklarációs részében szereplő konstansok, típusok, változók, eljárások, függvények stb. a programegy- ség törzsében szerepelnek-e. b) Felhasználatlan változóérték:

A változónak értéket adunk, de ezután nem használjuk semmire, vagy közvetlenül utána értéket kap. Pl I:=1: Ciklus I:=1-től 5-ig c) Érték nélküli változó: Kezdőértékkel nem rendelkező változó előbb szerepel kifejezésben mint értékadás bal oldalán. Pl. Ha f akkor I:=1 Ciklus amíg I<=N különben J:=1 I:=I+1 K:=1 Ciklus vége d) Nem változtató értékadás: Ha egy változó önmagának ad értéket, esetleg néhány hatástalan érték kombinálásával az felesleges elírásra utalhat. Pl I:=1*I helyett lehet hogy I:=II a helyes? e) Azonosan igaz (hamis) logikai formulák: Elágazás és ciklusfeltételekben a bennük szereplő változók értékétől függetlenül mindig azonos értéket vehetnek fel. Következmény, hogy az elágazás egyik ága nem hajtható végre, a ciklus pedig vagy végtelen lesz, vagy egyszer sem hajtjuk végre. Pl Ha I<1 és I>100 akkor Ciklus amíg I<I+1 f) Konstans értékű kifejezések: A kifejezés értéke nem

függ a benne szereplő változóktól, bonyolultságuk miatt nehezen észrevehető lehet. Pl. X:=A2-B2-(A+B)*(A-B) Y:=COS (X) / SIN (X) * TAN (X) Jó fordítóprogramok rendelkeznek algebrai egyszerűsítőkkel, melyekkel ezek a hibák felismerhetők. g) Végtelen ciklus: Egy számlálós ciklusban megváltoztatjuk, már amennyiben a fordítóprogram engedi a ciklusváltozó értékét Pl. Ciklus I:=1-től N-ig . I:=1 Ciklus vége Vagy elöltesztelős illetve hátultesztelős ciklusok esetén nem változtatjuk meg a ciklusváltozó értékét, vagy a ciklusváltozó soha nem teljesítheti a leállási feltételt. Pl. I:=1 I:=1 Ciklus amíg I<=N Ciklus amíg I páratlan A[I]:=A[I]+B[I] I:=I+2 Ciklus vége Ciklus vége Túlcsordulás veszélye h) Érték nélküli függvény: Ha egy függvény elágazást tartalmaz, s az elágazás valamelyik ágán nem adunk vissza függvényértéket. Pl. Függvény Absz(X): egész Ha X<0 akkor Absz:=-X Függvény vége i) Mellékhatással

rendelkező függvény: Matematikai értelemben a függvények a függvényérték kiszámításán kívül mást nem csinálhatnak. A programozási nyelvekben azonban megengedett, hogy a függvények a paramétereikkel, a program lokális és globális változóival azt csináljanak, amit akarnak Ez sok bonyodalomhoz vezethet. Pl. Y:=F(X)+F(X) más lehet mint Y:=2*F (X) Dinamikus tesztelési módszerek: Dinamikus tesztelés során a programot végre is hajtjuk. 1. Fekete doboz módszer, vagy adatvezérelt tesztelés: A módszer alkalmazásakor a tesztelő nem veszi figyelembe a program belső szerkezetét, pontosabban nem azt tekinti elsődleges szempontnak, hanem a teszteseteket a feladat meghatározás alapján választja meg. Kimerítő bemenet tesztelést kell végezni a) Ekvivalencia osztályok keresése: Olyan teszteseteket kell választanunk melyekre teljesülnek a következők: - Minden tesztesetnek annyi feltételt kell kielégítenie, amennyit csak lehetséges, - A bemeneti

tartományt osszuk részekre (osztályokra) melyekre legyen igaz a következő: ha valamely osztályból választva egy teszteset hibás eredményt ad, akkor ugyanabból az osztályból választva tesztesetet az eredmény nagy valószínűséggel is hibás legyen és fordítva. - Ekvivalenciaosztályokat az érvényes és érvénytelen adatokhoz is létre kell hozni Pl - Ha a bemeneti feltétel értéktartományt definiál, akkor az érvényes ekvivalenciaosztály legyen a megengedett adatok halmaza, az érvénytelen ekvivalenciaosztályok pedig az alsó és felső határoló tartomány. Legyenek az adatok osztályzatok (1 és 5 között) Akkor az érvényes ekvivalenciaosztály 1 <= I <= 5, az érvénytelen ekvivalenciaosztályok I < 1 és I>5. b) Határeset elemzés: - Az ekvivalenciaosztály kiválasztott elemének a határon levő elemeket választja, - Nemcsak a bemeneti, hanem a kimeneti ekvivalenciaosztályokat is figyelembe veszi. Pl Ha a bemeneti feltétel

értéktartomány jelöl meg, akkor tesztesetet határozunk meg a tartomány alsó ill. felső határára, valamint a határok közelében lévő értékekre Legyen a bemeneti tartomány a (0 1) nyílt intervallum, akkor a programot a 1, 01, 0,99 értékekre érdemes kipróbálni. 2. Fehér doboz módszerek: A tesztelést a programszöveg ismeretében végezzük A tesztelés 3 lépésből áll: - Egy kipróbálási stratégiát választunk a program szerkezete alapján, - A stratégia alapján megadott tesztutakhoz tesztpredikátumokat rendelünk, - A tesztpredikátumok ekvivalenciaosztályokat jelölnek ki, amelyekből egy-egy tesztesetet választunk. Kipróbálási stratégiák: Mely, a programgráfban szereplő utak mentén kell kipróbálni a programot. a) Utasítások egyszeri lefedésének elve: Minden utasítást legalább egyszer végrehajtunk a programban. Nem tökéletes megoldás Pl Ha X>0 akkor Ki: X a példában az öszszes utasítás végrehajtódik, de X=1 bemenő

adat esetén nem derülne ki, ha a feltételben az X>=0 szerepelne, vagyis a program hibás lenne b)Döntéslefedés elve: A programban minden egyes elágazás igaz-, illetve hamis-ágát legalább egyszer be kell járni a tesztelés során. Ezzel eleget teszünk az utasításlefedés követelményeinek is. Probléma: Ha X>0 és Y>0 akkor ki X*Y, (X=-1, Y=1) és (X=-1, Y=-1) lefedik a döntéseket, nem vennénk észre ha a második feltételt lehagytuk volna. c)Részfeltétellefedés elve: A döntésekben szereplő minden részfeltételt legalább egyszer HAMIS, illetve IGAZ eredménnyel értékelünk ki Pl. a fenti példa esetén (X=1, Y=1), (X=-1, Y=-1), (X=1, Y=-1) tesztesetekre is ki kell próbálni 3. Speciális tesztek: a) Elfogadhatósági teszt: Annak vizsgálata, hogy a specifikáció tartalmaz e hiányosságokat b) Funkcióteszt: Szerepel-e a programban az összes megvalósítandó funkció? A kívánt eredmények mindegyike megjelenik-e? c) Biztonsági teszt: A

program ellenőrzi-e a felhasználótól kapott adatokat? Hibás adatokkal meg lehet-e zavarni a működését? Ellenőrzi-e a szükséges állományok, perifériák meglétét, működését? d) Stressz teszt: A program számára egyszerre nagyon sok adat érkezzen. Összeomlik-e a rendszer? e) Volumen teszt: A programnak nagyon sok, a megadható legnagyobb darabszámú adattal kell dolgoznia. Megfelelően hatékony és gyors-e a program? f) Hatékonysági teszt: A program minimális, maximális, átlagos végrehajtási idejének meghatározása. g) Modulteszt: Modulokból álló programrendszer moduljainak tesztelése a többi modultól függetlenül. h) Összeépítési teszt: Önálló modulokból álló programrendszer moduljai összeépítésének ellenőrzése Hibakeresés: 1. Hibajelenségek: a) Szintaktikus hiba: A programszöveg nem felel meg az adott programozási nyelv szabályainak. Értelmezőprogramoknál csak futási időben jelentkezik ezért fontos hogy az

utasításokat legalább egyszer lefedjük a tesztelésnél. Fordítóprogramok esetén a hiba már a fordítási fázisban jelentkezik, el sem készül a futtatható változat Kijavítása: a nyelv szintaktikai szabályainak megfelelően ki kell javítani a programot. b) Végrehajtási hiba: A fordítóprogram által a programba épített hibafigyelő eljárás által adott hiba. Például nullával való osztás, túlcsordulás, stb Feltételezzük, hogy a hiba során a fordítóprogram jelzi hogy melyik változó értéke okozta a hibát Kijavítás: Meg kell keresnünk, hogy az adott változó értéke hol romlott el a programban. c) Nem áll le a program: Végtelen ciklusra utaló jelenség A program futását általában meg lehet szakítani, vagy szüneteltetni. Kijavítás: Meg kell keresni azt a ciklust ami nem fejeződött be, valamint az okot hogy miért nem fejeződött be a program. Valószínű, hogy a ciklusban nem változik vagy rosszul változik a ciklusváltozó

értéke, a ciklusfeltétel soha nem veheti fel a kilépési feltételt. d) Nem ír ki semmit, vagy részleges eredményt ír ki a program: Kiíró utasítás hiánya, vagy rossz helyen van a kiíró utasítás, nem a megfelelő programágon, nem a megfelelő pillanatban történik a kiírás. Kijavítás: A kiíró utasítások ellenőrzése, kijavítása 2. Hibakeresés alapelvei: - Hibakeresési eszközök használata előtt mindig vizsgáljuk végig a programot Hibakereső eszközöket csak ez után vegyük igénybe. - Amíg a hiba helyét és okát meg nem találtuk, ne kezdjünk bele a javításba. Meggondolatlan javítások újabb hibát okozhatnak - A kijavított hibák a program más részeire is hatással lehetnek, esetleg újabb hibákat generálva - A hibák száma és súlyossága általában a program méreténél sokkal gyorsabban növekszik. Hibajavítás alapelvei: - A hibát ki kell javítani és nem csak a tüneteit megszűntetni. - A javítás után a programot

alapos tesztnek kell alávetni, az esetleges új hibák megkeresése miatt. - Annak valószínűsége hogy egy hibát kijavítottunk, a program méretével arányosan csökken. -A hibajavítás visszanyúlhat a program tervezési fázisába is. Nagy programok esetén a programhibák többsége a tervezés során keletkezik 3. Hibakeresési módszerek: Kétféle kérdésre adhatnak választ: - bemenetnek mely részére működik hibásan a program, - a programban hol található a hibát okozó utasítás a) Indukciós módszer: INDUKCIÓ: Abból a tényből, hogy nagyszámú tárgynak meghatározott tulajdonsága van, és közös nemhez tartozik, arra következtethetünk, hogy az adott nemhez tartozó összes tárgynak megvan ez az ismertető jegye. (Új magyar lexikon.) Lépései: - Teszteset eredményeket megpróbáljuk rendezni, majd következtetéseket levonni a hiba okára vonatkozóan - Igazoljuk, hogy a program csak azokra az esetekre hibás amelyeket már kipróbáltunk és

hibás eredményt kaptunk. Ha nem így lenne akkor a hibás adatok körét próbáljuk meg bővíteni. - Meg kell állapítani, hogy a programon átvezető tesztutak mely ágai azok, melyek a hibás megállapításainkhoz vezethetnek. b) Dedukciós módszer: DEDUKCIO: Abból az ítéletből, hogy az adott nemhez tartozó összes tárgy meghatározott ismertetőjeggyel rendelkezik, arra következtetünk, hogy bizonyos, az adott nemhez tartozó tárgyak szintén rendelkeznek a szóban forgó ismertetőjeggyel. (Új magyar lexikon.) A meglévő teszteset eredményekből fel kell tételezni az összes lehetséges okot, majd ezek közül ki kell küszöbölni azokat, melyek nem állják meg a helyüket. Ha egy feltevést teszünk, ugyan úgy igazolnunk kell mint az előző esetben Ha elérkeztünk a hibás adatok köréhez, akkor ugyan az a teendőnk mint az előző esetben volt. c) Visszalépéses technika: A hiba előfordulásának helyéről indulunk és a programot visszafelé hajtjuk

végre, mindaddig míg a végrehajtás eredményét hibásnak találjuk. d) Teszteléssel segített hibakeresés: Teszteseteket megkülönböztetünk aszerint, hogy hibát akarunk felfedezni, vagy már ismert hibát akarunk előidézni Fontos, hogy a tesztesetek ismételhetőek legyenek A tesztesetek jellegzetessége hogy csak egyetlen feltételt fednek le 4. Hibakeresési eszközök: A programozási környezet elemei, a hiba okának megállapítását, a hiba helyének megkeresését teszik könnyebbé azáltal, hogy futás közbeni információt szolgáltatnak a programról a) tesztelő üzemmód: A tesztelő utasításokat is bele lehet fordítani a programba, a célprogramba azonban nem. A tesztelő utasításokat nem kell törölni a programszövegből b) Kiírás: - A programszöveg meghatározott helyeire helyezünk el kiíró utasításokat, majd a program futásakor vizsgáljuk a kiírt értékeket, - A kiírandó változókat rögzítjük, értékük mindig látszik a program

futása közben. c) Nyomkövetés: A végrehajtott utasítások követése a programban A változók eredményei mellett a programszöveget is látjuk futás közben. Az éppen végrehajtott utasítást kiírja, vagy mutatja d) Adatnyomkövetés: Nem az utasításokat vizsgáljuk, hanem a változókat. Akkor kapunk üzenetet, ha a változókat valamely programrész használja, illetve módosítja e) Töréspontok elhelyezése: A programban a végrehajtást szüneteltetjük, így információkat szerezhetünk a program állapotáról. (változók értékeinek megtekintése, megváltoztatása, nyomkövetés ki- bekapcsolása, program folytatása, megszakítása, stb) f) Lépésenkénti végrehajtás: A program minden utasítás után megáll, lehetőség van az előző pontban ismertetett lehetőségek beavatkozásokra. g) A hiba helyének és okának kijelzése: A futás közbeni ellenőrzéseket be lehet építeni a programba (Nullával való osztás, túlcsordulás, indextúllépés)

Futási időt növeli, a kész programokba nem építjük bele, az ilyen hibaüzenetek a fejlesztőnek szólnak, nem a felhasználónak. Hatékonyság, Globális hatékonyság: Az algoritmus egésze vizsgálandó 1. Végrehajtási idő csökkentése: Azokat a programrészeket kell vizsgálnunk amelyek sokszor hajtódnak végre. Ezek ciklusok, rekurzív eljárások lehetnek Ciklus átlagos futási ideje = lépésszám * egyszeri lefutás ideje 1.1 Ciklusok lépésszámának csökkentése 1.11 Sorozat elemszámának csökkentése: Kihasználjuk a feladat adta speciális tulajdonságot Ez a tulajdonság nem az adatszerkezetből adódik, hanem magából a feladatból Lényeg tehát a specifikáció szigorítása Pl Döntsük el egy számról hogy prímszám-e Az első lehető legegyszerűbb megoldás Prímvizsgálat (N) I:=2 Ciklus amíg I<N és I nem osztója N-nek I:=I+1 Ciklus vége Ha I=N akkor Ki: „prímszám” Eljárás vége Használjuk ki a következő tulajdonságot: Ha

egy számnak van osztója, akkor kell lenni a szám négyzetgyökénél kisebb vagy azzal egyenlő osztónak is. Prímvizsgálat (N) I:=2 Ciklus amíg I<=gyök(N) és I nem osztója N-nek I:=I+1 Ciklus vége Ha I>gyök(N) akkor Ki: „prímszám” Eljárás vége 1.12 Sorozat részekre osztása: - Tudjuk hogy a keresett elem a sorozat mely részében található, - A sorozatot úgy átrendezzük, hogy a feldolgozás során a vizsgálandó részek azonos elemszámúak legyenek, s a feldolgozást a részekre kelljen elvégezni. - Lineáris keresés helyett logaritmikus keresés (intervallumfelezés), - QUICKSORT, - ABC sorrendbe rendezett szavak keresésekor célszerű megadni minden egyes betühöz az azzal a betüvel kezdődő legelső szó sorszámát 1.13 Sorozatok párhuzamos feldolgozása: Két vagy több sorozat elemeit kell vizsgálni, valamilyen szempont alapján egymáshoz rendelni. Pl Adott két, rendezett sorozatként ábrázolt halmaz, adjuk meg az egyesítésüket!

Alapmegoldás az UNIO tételének alkalmazása. Kihasználva a sorozat rendezett tulajdonságát használhatjuk az ÖSSZEFUTTATÁS algoritmusát 1.14 Gyakoriság szerinti elrendezés: Keresésekben vannak olyan adatok, melyeket gyakrabban kell megkeresnünk Kereséskor a megtalált elemet cseréljük meg a sorban előtte állóval, hacsak nem a keresett elem volt az első. Keresés (X) I:=1 Ciklus amíg K<=N és A[I] nem T tulajdonságú I:=I+1 Ciklus vége Ha K<=Nakkor KI(A[I]): Csere((A[I],A[I+1]) Eljárás vége 1.15 Sorozat elemeinek csoportos feldolgozása: Az adatok valamilyen szempont szerint előre csoportosítva vannak Pl Adjunk össze sorozatként tárolt sokszámjegyű számokat (A számokat nagyságuk miatt nem lehet ábrázolni egyszerű adatszerkezettel.) Megoldás: A számok számjegyeinek csoportosítása pl négyes csoportokba. Ezeket már ábrázolhatjuk, sőt össze is adhatjuk 1.16 Ciklustranszformálás - indexelés: Egyetlen képlettel pontosan vagy

körülbelül meghatározzuk a keresett elem helyét a sorozatban. Pl Egy városban feljegyzik minden busz utasainak számát egy napra vonatkozóan. Minden megállóban megadják, hogy az adott buszra hányan szálltak fel, ill le Az adatokat beérkezési sorrendben a nap végén összesítik. Legyen B a megadott busz sorszáma, U az utasok száma, A[I,1] buszok sorszáma, A[I,2] utasok száma. Eljárás (B,U) Eljárás (B,U) I:=1 A[B,2]:=A[B,2]+U Ciklus amíg A[I,1]<>B Eljárás vége I:=I+1 Ciklus vége A[I,2]:=A[I,2]+U Eljárás vége 1.2 A ciklusmag végrehajtási idejének csökkentése 1.21 Elágazás transzformálása: Kockadobás Elágazást helyettesítünk egyetlen indexeléssel DB():=0 Ciklus I:=1 től 100-ig X:=RND(6) DB[X]:=DB[X]+1 Ciklus vége Eljárás vége 1.22 Kivételes eset kiküszöbölése Eldöntés I:=1 Minden lépésben megvizsgáljuk hogy Ciklus amíg I<=N és A[I] <>0 nem következett-e I:=I+1 be egy egyetlen egyCiklus vége szer

bekövetkező eset V:=I<=N Eljárás vége Eldöntés I:=1: A[N+1]:=0 Ciklus amíg I<=N és A[I] <>0 I:=I+1 Ciklus vége V:=I<=N Eljárás vége 1.23 Ciklusok szétválasztása: Ha a feldolgozó ciklus belsejében lévő feltétel nem függ az elemek értékétől akkor célszerű a ciklust kettéválasztani Számítás Számítás Ciklus I:=1-től N-ig Ciklus I:=1-től K-ig Ha I<=K akkor B[I]:=X-A[I] B[I]:=X-A[I] különben B[I]:=X+A[I] Ciklus vége Ciklus vége Ciklus I:=K+1-től N-ig Eljárás vége B[I]:=X+A[I] Ciklus vége Eljárás vége 1.24 Feltételek elhagyása: Feltételek elhagyhatók, ha elhagyásuk nem változtat az állapottéren, vagy a változtatás egyszerűen elhagyható Szimulációs lépés Szimulációs lépés Ciklus I:=1-től N-ig Ciklus I:=1-től N-ig Ha A[I]<>0 és RND<P Ha RND<P akkor A[I]:=0 akkor A[I]:=0 Ciklus vége Ciklus vége Eljárás vége Eljárás vége 1.25 Az adatok előfeldolgozása: A szükséges részeredményeket

nem akkor számítjuk ki, amikor szükség van rájuk, hanem esetleg jóval korábban Eljárás rajzol Eljárás rajzol Ciklus f:=1-től 360-ig Ciklus f:=1-től 360-ig X:=R*SIN(fok): A[I,1]:=R*SIN(f): Y:=R*COS(fok) A[I,2]:=R*COS(f) vonal(X,Y,X1,Y1) Ciklus vége Ciklus vége Ciklus I:=1-től 360-ig Eljárás vége vonal(A[I,1], A[I,2],X1,Y1) Ciklus vége Eljárás vége Szoftver kiértékelési folyamat: 1. Megnövekedett igény a szoftverek minőségére: - megbízhatóság, - felhasználóbarátság, - biztonság 2. Szükségessé vált egy hatékony minőségkiértékelési eljárás kidolgozása: - tervezés, - szabályozás, jelentés 3. A szoftverekre vonatkozó Nemzetközi Szabvány az ISO/IEC 9126 mely útmutatást ad: - Információs technológiákra, - Szoftverek kiértékelése, - Minőségi jellemzőkre és azok használatára. 4. A szabvány alapján számos kiértékelési eljárás született melyek általában a következőket tartalmazzák: - Általános

irányelvek, - Mérések tervezése, - Fejlesztők útmutatója, - Felhasználók útmutatója, - Mértékegységek, mutatók, - Kiértékelők útmutatója, - Kiértékelési modul fejlesztési útmutató 5. A kiértékelés tulajdonságai: a) A szoftver termékek kiértékelése hasznos kell legyen az: - ügyfeleknek (kormány, biztosítótársaságok, szervezetek, stb.), - termelőknek, - eladóknak, - felhasználóknak, - tágabb értelemben a társadalomnak. b) A kiértékelés legyen: - helyénvaló (mindig a megfelelő jellemzőket válassza ki), - széles körben alkalmazható, - költséghatékony, - olyan, hogy biztosítsa: a számítógépes program megbízható implementációja a tervezői előírásoknak 6. Általános követelmények, alapelvek a szoftver kiértékelési folyamatra: - Megismételhetőség: ugyanannak a terméknek megismételt kiértékelése ugyanolyan előírások szerint, ugyan abban a tesztelő laboratóriumban ugyan azt az eredményt adja -

Újra-előállíthatóság: ugyanannak a terméknek megismételt kiértékelése ugyanolyan előírások szerint, másik tesztelő laboratóriumban ugyan azt az eredményt adja - Pártatlanság: A kiértékelésnek mentesnek kell lenni mindenféle elfogultságtól - Tárgyilagosság: A kiértékelési eredmények a lehető legkevesebb szubjektívitást tartalmazzanak 7. Egy kiértékelési folyamat a következő típusú információkon alapszik: - Szofverjellemzők: amelyek a kiértékelés tárgyát képezik. - Termékinformáció: dokumentumok, felhasználói kézikönyv, tervezői dokumentáció, program forráskódja - Folyamatinformáció: vezetői jelentések, minőségbiztosítási jelentések, projekt akták - Kiértékelési technikák: meghatározott kiértékelési technikák, elkülönített kiértékelési modulok 8. A kiértékelési folyamatban résztvevők: - Ügyfelek (szoftver termékek gyártói, hardver elemeket gyártó cégek, vevők, felhasználók, kormány,

biztosítótársaságok, stb.), - Tesztelő laboratóriumok Szerződésben megállapodnak a kiértékelési folyamatban, melyet szabályok, szabványok, törvények, társaságok befolyásolhatnak. A kiértékelési folyamat az ügyfelek segítsége nélkül sokkal nehezebb és költségesebb 9. A kiértékelési folyamatban résztvevők felelősségei: a) Ügyfelek felelőssége: - szükséges információk megadása termékazonosításra, termékleírásra, - tesztelő-laboratóriummal közösen meghatározza a mérni kívánt szoftver-jellemzőket és meghatározza a kiértékelési szintet, - lehetőséget teremt azon eszközök használatára (számítógépek és egyéb eszközök) melyet a fejlesztés során felhasználtak, - általános támogatást ad a tesztelő laboratórium számára, pl. betanítja a program használatát, bizonyos funkciókat elmagyaráz, lehetőséget teremt a fejlesztői csoporttal való kommunikációra, - biztosítja a dokumentációkat és az egyéb

anyagokat, melyek a kiértékelés során szükségesek, - tájékoztatja a tesztelő laboratóriumot az egyéb tényezőkről. Pl a gyakrabban előforduló hibákról b) A tesztelő laboratórium felelőssége: - A munkafolyamat számos követelményeinek teljesítése mely az ISO/IEC szabvány által meghatározott, Létrehoz és karbantart egy minőségügyi rendszert a kiértékelési útmutató alapján. A minőségügyi rendszernek a minőségügyi kézikönyvben dokumentálva kell lennie 10. A minőségügyi kézikönyv a következőket tartalmazza: - Általános minőségügyi eljárások és tájékoztatás, - Minőségbiztosítási eljárások specifikusan minden kiértékelésre, - Visszacsatolás és helyesbítő tevékenységek valahányszor eltérések, vagy hibák mutatkoznak, - Eljárások a panaszok kezelésére, - A nemzetközi szabályok a tesztelő laboratóriumokra vonatkozóan még a következőket határozza meg: bizalmasság (az eredmények megfelelőségében),

biztonság (illetéktelenek kezébe nem kerülhetnek információk) 11. A kiértékelési szint fogalma: A kiértékelési szint meghatározza a kiértékelés alaposságát, mélységét A különböző szintek különböző biztonságot nyújtanak a szoftver termékekre vonatkozóan. A kiértékelési szintet a szoftver jellemzőktől függetlenül kell meghatározni. Négyféle szintet különböztetünk meg Az A a legmagasabb, a D a legalacsonyabb szint. Ezek a szintek más más kiértékelési eljárást határoznak meg Jellemzők funkcionalitás megbízhatóság használhatóság hatékonyság karbantarthatóság D szint fekete doboz tesztelés programozási nyelv szerepe felhasználói ellenőrzés végrehajtási idő mérése dokumentumok ellenőrzése C szint átvizsgálás hiba tolerancia elemzés megfelelés a szabványnak benchmarking statikai elemzés hordozhatóság a telepítés ellenőrzése programozási szabályoknak való megfelelés 12. A kiértékelési

modul fogalma: A kiértékelési eljárás átgondolt megfelelő szerkezet nélkül hamarosan kezelhetetlenné, otrombává és túlságosan összetetté válik. Ezért fontos hogy a kiértékelés: - jól strukturált legyen, - jól elhatárolt leírása a szoftver jellemzőknek, méréseknek, - meghatározza a kiértékelési technikákat, szoftver jellemzőket, kiértékelési eljárást, és annak leírását, eredmények, jelentések formáját, mértékrendszert, a jellemzők és a mértékrendszer kapcsolatát, - költségbecslést ad. 13. Kölcsönhatás a technikai és a jogi eljárások között: - A kiértékelési folyamat minden lépésében szükséges a technikai és jogi eljárások között Az ügyfélnek számos lehetősége van az egyetértésre, de a viszszalépésre is A kiértékelési folyamat 5 lépésből áll, és bármely lépésben az ügyfél visszalépet a kiértékelési folyamattól Visszalépés esetén az ügyfélnek az addig felmerült költségeket

állnia kell - A folyamatot felelősséggel szakítja meg, de minden következmény nélkül - A kiértékelés általános törvények és kiértékelési eljárások által szabályozott 14. A kiértékelés lépései: 1 Az ügyfél feltünteti a kiértékelési követelményeket lehetőleg szabványos formát használva, melyet a tesztelő laboratórium elfogad. Meghatározzák a kiértékelési szintet Az ügyfél egyetért abban hogy a szükséges anyagokat a laboratórium rendelkezésre bocsátja. 2 A tesztelő laboratórium megajánl egy kiértékelési előírást Az ügyfél elfogadja, vagy visszalép a kiértékeléstől Ha az ügyfél elfogadja az ajánlatot akkor a szükséges anyagokat a laboratórium rendelkezésére bocsátja, aki kidolgozza a kiértékelési előírásokat. 3 A tesztelő laboratórium felajánlja hogy kidolgozza a kiértékelési tervet a kiértékelési előírásokat alapul véve. Ezt az ajánlatot az ügyfél elfogadja vagy visszautasítja Ha a

tervet az ügyfél elfogadja akkor az kidolgozásra kerül. 4 A tesztelő laboratórium felajánlja hogy a kiértékelési terv alapján levezeti a kiértékelési eljárást. A kiértékelés előtt még egyszer egyeztet az ügyféllel a kiértékelés végrehajtásáról. Ha az ügyfél egyetért akkor végrehajtják a kiértékelést 5 A tesztelő laboratórium kidolgozza a kiértékelési jelentést A jelentést az ügyfél vagy elfogadja, vagy panasszal élhet az eredmények vagy az eljárás miatt. A szabvány előírja, hogy minden tesztelő laboratóriumnak rendelkeznie kell panaszkezelési eljárással 15. Tapasztalatok felhasználása: A kiértékelési eljárás során felgyülemlett tapasztalatokat tárolni kell Ezzel létrejön egy kiértékelési információs rendszer, mely a következő kiértékelésekhez nyújt segítséget. Segít meghatározni: - a költségek becslését, új kiértékelési folyamatban, - javítják a modul dokumentációt, - igényeket határoz

meg új kiértékelési technikákra. A tapasztalatokat célszerűen adatállományokban kell tárolni a későbbi kiértékelések számára. 16. Kiértékelési követelmények elemzése: - A döntést hogy a szoftvert előterjesszük-e kiértékelésre lehetőleg minél korábban már a tervezési fázisban hozzuk meg Már a tervezési fázisba be kell építenünk az ellenőrzést és tesztelést, csak így tudjuk biztosítani a maximális lehetőséget arra, hogy a termék sikeresen átmegy a kiértékelési folyamaton. - Korai kapcsolat a tesztelő laboratóriummal elősegítheti az ügyfelet hogy elébe vágjon a különleges igényeknek, problémáknak is. Szükséges erőfeszítés és a költségek becslése: Az elsődleges tényezők a kiértékelési szint, a kiválasztott szoftver jellemzők, és a termék mérete. Szi nt A B C D a kiértékelésben eltöltött idő hónapokban, személyenként 4-13 5-9 3-6 1-2 8-16 6-11 4-8 2-3 9-18 7-12 5-9 3-4 Termék méretére

vonatkozó útmutatás Méret kicsi közép nagy Példa beágyazott alkalmazások PC méretű alkalmazások hálózatok, nagygépes rendszer Dok.oldal 50 250 500 Bevezető költségbecslés: dokumentációk száma és mérete, program sorainak száma, programozási nyelv, kiértékelési szint előző kiértékelési tapasztalatok, speciális igények, törvények, szabályok, személyi költségek, technika felhasznált eszközök, tesztelő laboratórium felszereltsége B szint fehér doboz tesztelés A szint bizonyítás megnövelt megbízhatósági modell laboratóriumi tesztelés bizonyítás algoritmikus komplexitás fejlesztői folyamat ellenőrzése környezeti megkötések kiértékelése nyomonkövethetőségi kiértékelés program tervezés kiértékelése