Szoftver értékelés és karbantartás

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

Szoftver karbantartás

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

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

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

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

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

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

IRÁNYÍTÓ RENDSZER IRÁNYÍTANDÓ FOLYAMAT. Biztonsági funkciók Biztonsági integritás. Normál működés. Hibák elleni védettség Saját (belső) biztonság

A BIZTONSÁGINTEGRITÁS ÉS A BIZTONSÁGORIENTÁLT ALKALMAZÁSI FELTÉTELEK TELJESÍTÉSE A VASÚTI BIZTOSÍTÓBERENDEZÉSEK TERVEZÉSE ÉS LÉTREHOZÁSA SORÁN

Szoftverminőségbiztosítá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

Szoftverminőségbiztosítás

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)

Modell alapú tesztelés mobil környezetben

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

II. rész: a rendszer felülvizsgálati stratégia kidolgozását támogató funkciói. Tóth László, Lenkeyné Biró Gyöngyvér, Kuczogi László

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

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

Biztonságkritikus rendszerek

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

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

Modellek ellenőrzése és tesztelése

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

Fejlesztés kockázati alapokon 2.

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

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

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

Biztonságkritikus rendszerek Gyakorlat: Architektúrák

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

Üzletmenet folytonosság menedzsment [BCM]

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

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

Részletes szoftver tervek ellenőrzése

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?

Veszély- és kockázatbecslés alapú rekonfigurált eljárás-befolyásolás a polgári légiközlekedésben

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

MIÉRT KELL TESZTELNI?

Bevezetés az informatikába

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

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

IRÁNYTŰ A SZABÁLYTENGERBEN

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

A szoftverellenőrzés szerepe Alapfogalmak

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

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

Szoftverminőségbiztosítás

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

30 MB INFORMATIKAI PROJEKTELLENŐR

2011. ÓE BGK Galla Jánosné,

Bevezetés a programozásba

Biztosítóberendezések biztonságának értékelése

Programozási alapismeretek 3. előadás

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

Integrációs mellékhatások és gyógymódok a felhőben. Géczy Viktor Üzletfejlesztési igazgató

Kiterjesztések sek szemantikája

5. Témakör TARTALOMJEGYZÉK

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

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

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

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

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

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

Dr. Schuster György február / 32

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

Objektum Vezérelt Szoftverek Analízise

Tartalom. Konfiguráció menedzsment bevezetési tapasztalatok. Bevezetés. Tipikus konfigurációs adatbázis kialakítási projekt. Adatbázis szerkezet

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

S atisztika 2. előadás

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

Valószínűségi modellellenőrzés Markov döntési folyamatokkal

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

Szoftverminőségbiztosítás

CEBS Consultative Paper 10 (folytatás) Krekó Béla PSZÁF, szeptember 15.

DW 9. előadás DW tervezése, DW-projekt

Szoftver architektúra tervek ellenőrzése

V. Félév Információs rendszerek tervezése Komplex információs rendszerek tervezése dr. Illyés László - adjunktus

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

Az informatika kulcsfogalmai

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

Maximum kiválasztás tömbben

Intelligens eszközök fejlesztése az ipari automatizálásban Evosoft Hungary kft., Evosoft Hungary Kft.

VÝZKUMNÝ ÚSTAV ŽELEZNIČNÍ, a.s.

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

ISO 9001:2015 Változások Fókuszban a kockázatelemzés

Méréselmélet MI BSc 1

Beszerzési és elosztási logisztika. Előadó: Telek Péter egy. adj. 2008/09. tanév I. félév GT5SZV

Megoldás. Feladat 1. Statikus teszt Specifikáció felülvizsgálat

Új dokumentálandó folyamatok, azok minimális tartalmi elvárásai

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

A szoftverellenőrzés szerepe

Algoritmusok bonyolultsága

I. Definíciók. 1. Üzletmenet folytonossági terv - katasztrófa terv. Üzletmenet folytonossági tervezés

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

S01-7 Komponens alapú szoftverfejlesztés 1

Szoftverfejlesztő képzés tematika oktatott modulok

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

Számítógépes szimulációkkal kapcsolatos hatósági tapasztalatok

Átírás:

Szoftver értékelés és karbantartás Majzik István Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék http://www.mit.bme.hu/~majzik/ Emlékeztető: Biztonsági követelmények ellenőrzése Véletlen meghibásodásokra (tipikusan hardver): A SIL tartományok betartása számításokkal ellenőrizhető Kvantitatív analízis, megbízhatósági modellezés Szisztematikus meghibásodásokra (pl. szoftver): Számításokkal nem ellenőrizhető valószínűség! Módszer- és eszközkészlet előírt a fejlesztés során: Komplex megoldás-csomag az egyes SIL szintekhez 1. Fejlesztési folyamat (életciklus modell) 2. Előírt technikák és intézkedések (megoldás-csomag) 3. Előírt dokumentáció 4. Szervezeti rend (felelősségek)

Emlékeztető: Szervezeti előírások Szervezet SIL 0: Személy TER, VER, VAL ÉRT SIL 1 és 2: TER VER, VAL ÉRT SIL 3 és 4: MGR ÉRT TER VER, VAL TER: Tervező VER: Verifikátor VAL: Validátor ÉRT: Értékelő MGR: Menedzser vagy: MGR TER VER VAL ÉRT Szoftver értékelés Rendszerbiztonsági követelmények specifikációja Az összes szoftver és hardver dokumentáció Szoftver értékelés Szoftverértékelési jelentés

Szoftver értékelés Cél az életciklus során végrehajtott eljárások és azok eredményeinek minősítése: a szoftver megfelel a biztonságintegritási szintnek a szoftver alkalmas a kijelölt feladatra (SIL 0 esetén csak megerősítés szükséges a SIL-ről) Független értékelő közreműködése Validálás egyeztetése További verifikáció vagy validáció indítványozása Nem megfelelőség jelzése (megoldási javaslat nélkül) SIL 1 és 2 esetén egyszerűsítés: Tervezés és fejlesztés, integráció értékelése R szintű Értékelési technikák Szabvány előírásai alapján: Ellenőrzőlisták Hibák, hiányosságok statikus elemzése: Statikus szoftverelemzés Hibafa, eseményfa, ok-okozati diagramok Szoftverhiba hatáselemzés Közös eredetű meghibásodások elemzése Markov-modellek Megbízhatósági blokkdiagramok Dinamikus szoftverelemzés és tesztelés Üzembe helyezés előtti próbák

Áttekintés Bevezető Biztonságintegritási szintek Életciklus és dokumentáció Követelmény-specifikáció Architektúra tervezés Részletes tervezés és kódolás Szoftver integráció Szoftver validáció Szoftver értékelés Karbantartás és konfig. kezelés Szoftver karbantartás Szoftver karbantartási terv Szoftver minőségbiztosítási terv Szoftver karbantartás Szoftver-változtatási feljegyzések Szoftver-karbantartási feljegyzések

Szoftver-karbantartási terv Legalább ISO 9000-3 irányelveinek megfelelő Rögzítendő eljárások: Hibajelentések, hibanaplók, feljegyzések módja Igazolás, érvényesítés é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, dokumentáció és irányítás szükséges Előírt módszerek (SIL 1-től HR, SIL 3-tól M): Hatáselemzés Adatrögzítés és -elemzés Dokumentáció: Szoftver változtatási feljegyzések Szoftver karbantartási feljegyzések Feljegyzések 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 érvényesítés, értékelés eredménye 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

A szoftver karbantartáshoz kötődő technológiák Feladatok: Debuggolás Hibajavítás Ellenőrzés (regressziós tesztelés) Megoldások, technológiák: Program szeletelés Debuggolás segítése Módosítások hatásainak felmérése Teszt kiválasztás támogatása Program szeletelés Debuggolás, kézi ellenőrzés, (újra)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?

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 Szeletelés: Kiválasztja az I-nél a V-beli változókat befolyásoló utasításokat Példaprogram 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) A program összeadja az első n páros számot.

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} 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

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 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 a 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

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 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

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 System Dependence Graph

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 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) t egy 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

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} 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}

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 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

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 esetére volt