Gyakorlati alapok II.
A szoftverfejlesztés
Amit most kell tisztáznunk: validálás és verifikálás
A validálás és verifikálás fogalmai először az előző,
Szoftverfejlesztési modellek
című fejezetben merültek fel, bár nyilvánvalóan szoftverfejlesztési
módszertanok megalkotásakor már jóval hamar szükséges foglalkozni velük. Az
Interneten elérhető ezzel kapcsolatos megállapítások zöme annyira absztraktra
sikerült, hogy majdhogynem érthetetlenek. Sőt, nagy Fermi-sejtésem szerint
sok, a fogalmakat használó szakember egyenesen keveri vagy éppen nem érti a
definíciókat. Kezdésként a számomra leérthetőbbeket idemásolom:
1.
A módszer validálása a módszer eljárásának igazolása abból a szempontból, hogy
a kívánt eredményekre juthatunk.
Ezzel szemben a módszer verifikálása az a tevékenység, amely során arról
győződünk meg: megfelelőképpen jártunk el a módszer megvalósításában ahhoz,
hogy megfelelő pontosságú értékelést kapjunk.
2.
A validáláson értjük azt az eljárást, ami bizonyítja, hogy a módszer, az
eljárás a kívánt eredményre vezet, azaz a méréskor azt a paramétert
szolgáltatja, amit szeretnénk, a definíciónak megfelelő paraméter értéket
kapunk, ha helyesen hajtjuk végre az eljárást (módszert).
Verifikálásnál már nem a módszernek, illetve eljárásnak a megfelelőségét
ellenőrizzük, hanem azt, hogy a módszerünk megfelelően van-e végrehajtva
ahhoz, hogy a kívánt paramétert kapjuk. A verifikálásnál tehát a módszert már
jónak minősítettük és azt ellenőrizzük, hogy helyesen működik-e a módszerünk
az adott megvalósításban.
A validálás szorosan függ össze a valóság modellezésével.
Forrás - Source: www.nineexposures.com
Ekkor a valóság egy adott szeletét kezdjük el figyelni, méréseket végzünk el
rajta és sokszor mélyebb, matematikailag is megfogalmazható kapcsolatokat
fedezhetünk fel. A szerzett matematikai és tapasztalati apparátussal pedig
megalkothatunk egy olyan eljárást, amely képes modellezni, pontosan leírni a
megfigyelt valóságszeletet. (Gondoljunk csak házak, sőt egész városok 3D
modellezésére.) Ez legtöbbször több lépésben történik, azaz a validáló eljárás
algoritmikusan úgy van felépítve, hogy mindig az elvárt végeredményeket
szolgáltassa.
A verifikálás folyamatakor a validáló eljárás már adott, előzetesen
megalkotott, ekkor csupán azt ellenőrizzük, hogy a validáló eljárás
megfelelően,"szabványosan" van-e végrehajtva.
Mindez a szoftverfejlesztésre vonatkoztatva (az IEEE-STD-610 szabvány szerint):
A szoftvervalidáció az a folyamat, amelynek során értékeljük a szoftvert, miszerint kielégíti-e a megadott követelményeket.
A szoftververifikáció az a folyamat, amelynek során értékeljük a szoftvert és fejlesztési körülményeit, miszerint azok kielégítik-e azon feltételeket, amelyekkel a validált szoftvert meg tudjuk alkotni.
Lássunk erre egy konkrét példát!
Tételezzük fel, hogy egy megrendelő nagyon magas szintű és egyedi fejlesztésű
biztonsági szoftvert rendel egy programozási cégtől.
Forrás - Source: threatpost.com
Ekkor nyilvánvalóan magát a biztonsági protokollt is a programozási cégnek
kell kifejlesztenie. Alapvetően nem probléma ez, minden nagyobb cég képes
elvégezni ebbéli feladatait, azonban később össze kell vetnie a megrendelő
elvárásait és a keletkezett szoftver minőségi jellemzőit, nevezetesen: a
szoftver kielégíti-e a megadott követelményeket (szoftvervalidáció).
Egy biztonsági szoftvert nem lehet csak úgy "az utcán" fejleszteni. Annak
összes fejlesztési fázisa éppúgy szupertitkos, mint maga a keletkezett
biztonsági protokoll és működtető kód. A szoftververifikáció az a folyamat,
amelynek során értékeljük a szoftvert és fejlesztési körülményeit, miszerint
azok kielégítik-e azon feltételeket, amelyekkel ezt a biztonsági szoftvert a
biztonsági előírások maximális figyelembevételével megalkothatjuk.