Szoftver karbantartás



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

Szoftver értékelés és 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

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

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

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

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

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

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

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

Modell alapú tesztelés mobil környezetben

Modellek ellenőrzése és tesztelése

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

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

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

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

Szoftverminőségbiztosítás

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

Üzletmenet folytonosság menedzsment [BCM]

Szoftverminőségbiztosítás

Fejlesztés kockázati alapokon 2.

Biztonságkritikus rendszerek Gyakorlat: Architektúrák

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

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 fejlesztéshez használható eszközök

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

30 MB INFORMATIKAI PROJEKTELLENŐR

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

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?

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

Részletes szoftver tervek ellenőrzése

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

IRÁNYTŰ A SZABÁLYTENGERBEN

Objektum Vezérelt Szoftverek Analízise

MIÉRT KELL TESZTELNI?

Bevezetés az informatikába

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

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

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

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

5. Témakör TARTALOMJEGYZÉK

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

Járműinformatika A járműinformatikai fejlesztés

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

Szoftverminőségbiztosítás

Maximum kiválasztás tömbben

Bevezetés a programozásba

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

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

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

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

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

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

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

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

S atisztika 2. előadás

A szoftverellenőrzés szerepe Alapfogalmak

Dr. Schuster György február / 32

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

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

Az UPPAAL egyes modellezési lehetőségeinek összefoglalása. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

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

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

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

Szoftverminőségbiztosítás

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

2011. ÓE BGK Galla Jánosné,

A szoftverellenőrzés szerepe

Programozási alapismeretek 3. előadás

BGF. 4. Mi tartozik az adatmodellek szerkezeti elemei

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

Szoftverminőségbiztosítás

Folyamatmodellezés és eszközei. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

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

S01-7 Komponens alapú szoftverfejlesztés 1

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

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

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

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

Kiterjesztések sek szemantikája

Méréselmélet MI BSc 1

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

Záróvizsga kérdések a Gépek és berendezések biztonságtechnikája c. tantárgyból

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

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

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

Adatmodellezés. 1. Fogalmi modell

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

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

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

Operációs Rendszerek II. labor. 2. alkalom

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

Átírás:

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

Áttekintés Követelményspecifikálás Architektúra tervezés Részletes tervezés és kódolás Szoftver integráció Szoftver validáció Szoftver karbantartá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 Karbantartás tervezése, megvalósítása, ellenőrzése 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 biztonsági szabványokban: Adatrögzítés és -elemzés Hatáselemzé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 ellenőrzése (V&V) Szoftver-karbantartási feljegyzések Szoftverelemhez köthető történet 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: Módosítás esetén: Hatáselemzés Hibakezelés esetén: Debuggolás, hibajavítás Mindkettőhöz: Ellenőrzés (regressziós tesztelés) Támogató technológia: Program szeletelés Módosítások hatásainak felmérése Debuggolás segíté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

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átrafelé haladó szelet a példaprogramhoz Indulás a kritériumbeli utasítástól visszafelé a függőségeken 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 Indulás a kritériumbeli utasítástól előrefelé a függőségeken 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

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

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

Szoftver értékelé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/

Áttekintés Követelményspecifikálás Architektúra tervezés Részletes tervezés és kódolás Szoftver integráció Szoftver validáció Szoftver értékelés Szoftver karbantartás

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