Szoftver karbantartási lépések ellenőrzése

Hasonló dokumentumok
Szoftver értékelés és karbantartás

Szoftver karbantartás

OpenCL alapú eszközök verifikációja és validációja a gyakorlatban

Algoritmizálás, adatmodellezés tanítása 6. előadás

Szoftver min ség és menedzsment

Szoftver min ség és menedzsment -15. Tartalom. A tesztelés 2002 / Tesztelési módszerek, technikák. Dr. Balla Katalin

Verifikáció és validáció Általános bevezető

Modell alapú tesztelés mobil környezetben

Modellek ellenőrzése és tesztelése

Algoritmusok helyességének bizonyítása. A Floyd-módszer

Modell alapú tesztelés: célok és lehetőségek

Szoftverminőségbiztosítás

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

Fordítás Kódoptimalizálás

Rendszermodellezés. Modellellenőrzés. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Programtervezés. Dr. Iványi Péter

Szoftverminőségbiztosítás

PROGRAMOZÁS tantárgy. Gregorics Tibor egyetemi docens ELTE Informatikai Kar

A fejlesztési szabványok szerepe a szoftverellenőrzésben

Megoldások a mintavizsga kérdések a VIMIAC04 tárgy ellenőrzési technikák részéhez kapcsolódóan (2017. május)

A félév során előkerülő témakörök

Specifikáció alapú teszttervezési módszerek

Specifikáció alapú teszttervezési módszerek

A szoftver-folyamat. Szoftver életciklus modellek. Szoftver-technológia I. Irodalom

Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1

Kiterjesztések sek szemantikája

Orvostechnikai eszközök gyártmányfejlesztése Aktív orvosi eszközök fejlesztése PEMS V&V. Nagy Katinka

Verziókövető rendszerek használata a szoftverfejlesztésben

Programozási alapismeretek beadandó feladat: ProgAlap beadandó feladatok téma 99. feladat 1

Bevezetés az informatikába

Programrendszerek tanúsítása szoftverminőség mérése

1. Alapfogalmak Algoritmus Számítási probléma Specifikáció Algoritmusok futási ideje

Szoftverminőségbiztosítás

Unit Teszt. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Unit Teszt / 22

Dr. Schuster György február / 32

A modellellenőrzés érdekes alkalmazása: Tesztgenerálás modellellenőrzővel

A modellellenőrzés érdekes alkalmazása: Tesztgenerálás modellellenőrzővel

Maximum kiválasztás tömbben

Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1

ORVOSTECHNIKAI ESZKÖZÖK GYÁRTMÁNYFEJLESZTÉSE AKTÍV ORVOSI ESZKÖZÖK FEJLESZTÉSE - PEMS V&V

Kinek szól a könyv? A könyv témája A könyv felépítése Mire van szükség a könyv használatához? A könyvben használt jelölések. 1. Mi a programozás?

Programozási alapismeretek 3. előadás

Programozási alapismeretek 1. előadás

Algoritmizálás, adatmodellezés 1. előadás

Teszttervezés. Majzik István, Micskei Zoltán. Integrációs és ellenőrzési technikák (VIMIA04) Méréstechnika és Információs Rendszerek Tanszék

Komputeralgebra Rendszerek

Biztonsági folyamatirányító. rendszerek szoftvere

Bevezetés a programozásba

IRÁNYTŰ A SZABÁLYTENGERBEN

The nontrivial extraction of implicit, previously unknown, and potentially useful information from data.

Digitális technika (VIMIAA02) Laboratórium 4

MIÉRT KELL TESZTELNI?

Méréselmélet MI BSc 1

A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai

Algoritmuselmélet. Gráfok megadása, szélességi bejárás, összefüggőség, párosítás. Katona Gyula Y.

A TESZTELÉS ALAPJAI MIÉRT SZÜKSÉGES A TESZTELÉS? MI A TESZTELÉS? ÁLTALÁNOS TESZTELÉSI ALAPELVEK

5. Témakör TARTALOMJEGYZÉK

Algoritmusok bonyolultsága

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása

Algoritmuselmélet. Mélységi keresés és alkalmazásai. Katona Gyula Y.

Forráskód analízis és szeletelés a programmegértés támogatásához

Programozás I. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar szeptember 10.

Részletes szoftver tervek ellenőrzése

Programozás I. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar szeptember 10.

Digitális technika (VIMIAA02) Laboratórium 1

Kód átvizsgálás. Irodalom. (Code review) code review,smart Bear Inc., ! Jason Cohen: Best kept secrets of peer

Digitális technika (VIMIAA02) Laboratórium 1

MŰSZAKI TESZTTERVEZÉSI TECHNIKÁK A TESZT FEJLESZTÉSI FOLYAMATA A TESZTTERVEZÉSI TECHNIKÁK KATEGÓRIÁI

Robusztusság tesztelés

TESZTMENEDZSMENT TESZTELŐ SZERVEZET TESZTTERVEZÉS ÉS BECSLÉS

Teszttervezés. Majzik István, Micskei Zoltán. Integrációs és ellenőrzési technikák (VIMIA04) Méréstechnika és Információs Rendszerek Tanszék

Dokumentáció az 1. feladatsorhoz (egyszerű, rövidített kivitelben)

Dinamikus modellek szerkezete, SDG modellek

Mintavételes szabályozás mikrovezérlő segítségével

30 MB INFORMATIKAI PROJEKTELLENŐR

Szoftver-mérés. Szoftver metrikák. Szoftver mérés

Modellek dokumentálása

Autóipari beágyazott rendszerek. Kockázatelemzés

Algoritmizálás és adatmodellezés tanítása 1. előadás

A szerzõrõl... xi Bevezetés... xiii

1. Bevezető. 2. Sérülékenységek

Adatmodellezés. 1. Fogalmi modell

Informatika tanítási módszerek

Mérés és modellezés Méréstechnika VM, GM, MM 1

Modellező eszközök, kódgenerálás

Programozási nyelvek (ADA)

A fejlesztéshez használható eszközök

Java programozási nyelv

Miskolci Egyetem Alkalmazott Informatikai Intézeti Tanszék A minőségbiztosítás informatikája. Készítette: Urbán Norbert

Automatikus tesztgenerálás modell ellenőrző segítségével

Biztonságkritikus rendszerek Gyakorlat: Architektúrák

Bevezetés a programozásba. 5. Előadás: Tömbök

AWK programozás, minták, vezérlési szerkezetek

Szkriptnyelvek. 1. UNIX shell

S atisztika 2. előadás

MŰSZAKI TESZTTERVEZÉSI TECHNIKÁK STRUKTÚRA ALAPÚ, VAGY FEHÉRDOBOZ TECHNIKÁK TAPASZTALAT ALAPÚ TECHNIKÁK

Modellellenőrzés a vasút automatikai rendszerek fejlesztésében. XIX. Közlekedésfejlesztési és beruházási konferencia Bükfürdő

Algoritmusok Tervezése. 6. Előadás Algoritmusok 101 Dr. Bécsi Tamás

Szkriptelési feladat megoldása

Gráfok 2. Legrövidebb utak, feszítőfák. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor

Átírás:

Szoftverellenőrzési technikák (vimim148) Szoftver karbantartási lépések ellenőrzése Majzik István Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék http://www.inf.mit.bme.hu/ 1 Tartalomjegyzék A karbantartás tervezése Dokumentáció Alkalmazható technológiák Statikus szeletelés Dinamikus szeletelés 2

Szoftver karbantartási terv Minőségirányítási rendszer fennhatósága alatt Rögzítendő eljárások: A karbantartás életciklusa Hibajelentések, hibanaplók, módosítási igények elemzése Módosítás specifikálása, tervezése és megvalósítása Verifikáció, validáció és értékelés Engedélyezés és jóváhagyás módja Fejlesztéssel azonos szintű szaktudás, eszközök, tervezés, megvalósítás, dokumentáció és irányítás szükséges Specifikus módszerek: Adatrögzítés és -elemzés Hatáselemzés Jellegzetes dokumentáció: Szoftver változtatási feljegyzések Szoftver karbantartási feljegyzések 3 Jellegzetes dokumentáció Szoftver-változtatási feljegyzések Változtatási tevékenységhez köthető Módosítási igény Módosítás specifikációja Módosítás hatásának elemzése Módosítás tervezése és megvalósítása Módosítás verifikációja és validációja Szoftver-karbantartási feljegyzések Szoftverelemhez köthető Hivatkozás a szoftver-változtatási feljegyzések elemeire Változtatás következményeire vonatkozó információk Regressziós tesztesetek, ismételt érvényesítés feladatai Konfiguráció előzményei és változásai 4

A szoftver karbantartáshoz kötődő technológiák Feladatok: Hibakeresés (debuggolás) Hibajavítás tervezése és megvalósítása Hatáselemzés Ellenőrzés (regressziós tesztelés) Megoldások, technológiák: Program szeletelés Hibakeresés segítése Módosítások hatásainak felmérése Teszt kiválasztás támogatása Regressziós tesztelés 5 Tartalomjegyzék A karbantartás tervezése Dokumentáció Alkalmazható technológiák Statikus szeletelés Dinamikus szeletelés 6

Program szeletelés Debuggolás, ellenőrzés, tesztelés során a programnak csak egy részét (szeletét) szeretnénk figyelembe venni: Mely sorok vannak hatással egy változó értékére? Mit befolyásol, ha módosítunk egy utasítást? Mi okozza az itteni hibát? Mi a változtatás hatása? 7 A statikus szeletelés definíciója Statikus szeletelési kritérium: C = (V, I) Va program változóinak egy halmaza Ia program egy kiválasztott utasítása Az M program C = (V, I) kritérium szerinti S statikus szelete: Egy olyan futtatható részprogramja M-nek, amelyre igaz: M-et és S-et futtatva tetszőleges program bemenetre az I utasításnál a V halmazbeli változók értékei megegyeznek Hátra haladó szeletelés: Kiválasztja az I-nél a V- beli változókat befolyásoló utasításokat 8

Szeletelési példa procedure SumEven int n, sum, j 1 sum = 0 2 j = 2 3 n=read() 4 while n > 0 do 5 sum = sum + j 6 j = j + 2 7 n = n - 1 endwhile 8 write (sum) Kritérium: C=({j}, 6) Befolyásoló utasítások: 2. utasítás (j értékadása) 4. utasítás (ciklus) 3. utasítás (4-esre hat) 7. utasítás (4-esre hat) Szelet: {2, 3, 4, 6, 7} C=({n},7) szerinti szelet: {3, 4, 7} 11 Szeletelés alapja: Függőségek A program CFG-ben b utasítás vezérlésfüggő a-tól, ha: b-be vezető út tartalmazza a-t is (elérhetőség), a-ból indulva létezik elágazás, amelyen keresztül olyan út vezet, amely nem tartalmazza b-t (más irány) Egy b utasítás adatfüggő egy a utasítástól, ha: az (a, b) pár egy du-párt alkot (definíció és felhasználás) Egy program függőségi gráfja (PDG, Program Dependence Graph) a következő: egy egyedi kiindulási csomópontot tartalmaz (vezérlésfüggés), a program minden egyes utasítása a PDG gráf egy csomópontja, az a csomópontból vezet él b csomópontba, ha b vezérlésfüggő, vagy adatfüggő a-tól 12

A példaprogram függőségi gráfja entry sum:=0 j:=2 n=read() while n>0 write(sum) sum:=sum+j j:=j+2 n:=n-1 Vezérlésfüggés vastagított vonal, adatfüggés normál vonal 13 Statikus szelet meghatározása Hátra haladó szelet (backward slice) képzése: PDG felépítése Indulás a szeletelési kritérium által megadott utasítástól visszafelé Szelet részei azok az utasítások, ahová az éleken visszafelé vezet út Listás feldolgozás PDG-re (elérhetőségi probléma): 1. Listára felvenni a kritérium által adott utasítást 2. Kivenni egy lista-elemet és a szeletbe tenni 3. Az ebbe vezető élek végein lévő utasításokat, ha még nem voltak feldolgozva, felvenni a listára 4. Folytatás 2-ben, míg ki nem ürül a lista 14

Hátra haladó szelet a példaprogramhoz Hátra haladó szelet: Indulás a kritériumbeli utasítástól visszafelé Példa: C=({n},7) kritérium szerinti statikus hátra haladó szelet: entry sum:=0 j:=2 n=read() while n>0 write(sum) sum:=sum+j j:=j+2 n:=n-1 15 Előre haladó szelet a példaprogramhoz Előre haladó szelet: Indulás a kritériumbeli utasítástól előrefelé Példa: C=({j},2) kritérium szerinti statikus előre haladó szelet: entry sum:=0 j:=2 n=read() while n>0 write(sum) sum:=sum+j j:=j+2 n:=n-1 16

Struktúrák a szeleteléshez Control Dependence Graph (CDG) Data Dependence Graph (DDG) Hívási élek beillesztése Program Dependence Graph (PDG) System Dependence Graph (SDG) Intraprocedurális szeletelés Interprocedurális szeletelés A szeletek meghatározása elérhetőségi probléma 17 System Dependence Graph 18

Statikus szeletek használata Szeletelés kisebb programot eredményez Könnyebb áttekintés, megértés hibakeresés során Kisebb kódméret tesztelés során Jellegzetes kérdések, amire válaszolni lehet: Hátra haladó szelet: Mi lehet befolyással egy hibás eredményű utasításra? Előre haladó szelet: Mit befolyásol egy adott utasítás megváltoztatása? Mit kell újratesztelni? Konkrét teszt esetre vonatkozó hibakeresés Adott bemenettel történő programfutás volt! Tovább csökkenthető a szelet mérete 19 Tartalomjegyzék A karbantartás tervezése Dokumentáció Alkalmazható technológiák Statikus szeletelés Dinamikus szeletelés 20

A dinamikus szeletelés definíciója Szeletelést egy adott bemenetre történő program futáson (számításon) végezzük el. Ciklusok: Többször végrehajtott utasítások a futásban! Dinamikus szeletelési kritérium: C = (t, I q, V) tegy adott bemenet (teszt eset), I q egy kiválasztott utasítás (q-adik végrehajtása), V a program I-beli változóinak egy halmaza. Az M program C=(t, I q, V) szerinti S dinamikus szelete: Egy olyan futtatható részprogramja M-nek, amelyre igaz: M-et és S-et futtatva t program bemenetre az I utasítás q-adik végrehajtásakor V változóinak értékei megegyeznek 21 A példaprogram dinamikus szeletelése procedure SumEven int n, sum, j 1 sum = 0 2 j = 2 3 n=read() 4 1 while n > 0 do 5 1 sum = sum + j 6 1 j = j + 2 7 1 n = n - 1 endwhile 8 write (sum) Kritérium: C=(n=1, 8 1, {sum}) Ciklus egyszer fut le (n=1). Befolyásoló utasítások: 5 1: értékadás 3: beolvasás 1 és 2: értékadás Dinamikus szelet: {1, 2, 3, 5, 8} 22

A példaprogram dinamikus szeletelése procedure SumEven int n, sum, j 1 sum = 0 2 j = 2 3 n=read() 4 0 while n > 0 do 5 0 sum = sum + j 6 0 j = j + 2 7 0 n = n - 1 endwhile 8 write (sum) Kritérium: C=(n=0, 8 1, {sum}) Ciklus egyszer sem fut le. Befolyásoló utasítások: 3: beolvasás 1: értékadás Dinamikus szelet: {1, 3, 8} 23 Dinamikus szeletelés használata Programutak szerinti különbség: Statikus szelet: Minden lehetséges programfutást (függőséget) figyelembe vesz (nincs meghatározott bemenet) Dinamikus szelet: Meghatározott bemenetre (függőségre) szorítkozik, ami egy konkrét programfutást jelent, így a statikusnál általában kisebb méretű a szelet Tesztelés során kimutatott hiba keresése: A dinamikus szeleten dolgozunk Konkrét teszt esetre történik a hibakeresés Általában kisebb méretű mint a teljes kód 24

Szeletelési technikák áttekintése Szelet(elés) típusok: Futtatható nem futtatható Statikus dinamikus Előre haladó hátrafelé haladó Interprocedurális intraprocedurális Amorf A szelet nem az eredeti program utasításait tartalmazza, csak a hatása ugyanaz az adott helyen Az alkalmazandó típus a felhasználástól függ Hibakeresés Hatásanalízis, függőségi analízis Program megértés Tesztelés 25 Szeletelő eszközök WPS - The Wisconsin Program Slicing System http://www.cs.wisc.edu/wpis/html/ CodeSurfer http://cayuga.grammatech.com/products/codesurfer Unravel http://www.nist.gov/itl/div897/sqg/unravel/unravel.html ClearMaker Y2K probléma 26