2. Szoftver minőségbiztosítás A szoftver egy termelési folyamat végterméke, azaz végső soron a szoftver is egy termék. Az alábbiakban a minőség fogalmát tekintjük át általánosságban, mely így nemcsak a szoftverek esetén érvényes, majd a szoftverek minőségbiztosításának koncepcióját (elvek, elvárások, mérőszámok) tárgyaljuk. 2.1. Minőségi koncepciók, alapfogalmak Tágabb értelemben a minőség az emberiség történelmével egyidős. Korszerű értelmezése azonban az ipari termékek, az ipari termelés elterjedésével a múlt század elején jelent meg. A minőség és a minőségügy értelmezése manapság is folyamatosan fejlődik. A minőség fogalmát a termelésben és a fogyasztásban érdekelt személyek, illetve a társadalom értékítélete alapján definiálhatjuk, amely arra vonatkozik, hogy a termelési-fogyasztási folyamat mennyire elégíti ki az igényeket. Ebből adódik, hogy a minőség érték. A minőségügy a termelési-fogyasztási folyamat minőségének szabályozásával foglalkozik. Napjainkban egyre fontosabbá válik a minőségbiztosítás megvalósítása, azaz a termelés és a fogyasztás magas színvonalú minőségére való törekvés, amely a fogyasztóvédelem, és a fogyasztói igények kielégítése mellett a termelő nyereségét is eredményezi. Mindez nem csak a vállalkozás gazdasági felemelkedését vonja maga után, hanem hasznos a társadalom számára is. A minőség az igény-kielégítási folyamat szereplői számára mást és mást jelent. A műszaki életben azonban a minőség fogalmának a definícióját az ISO 8402 nemzetközi szabvány rögzíti: A minőség egy termék vagy szolgáltatás azon tulajdonságainak és jellemzőinek a halmaza, amelyek hatással vannak annak azon képességére, hogy kifejezett vagy elvárható igényeket elégítsen ki. Az ISO 8402 minőségdefiníciója egyértelmű azonban léteznek a minőség fogalmának különböző értelmezései is. A minőség filozófiai értelmezése A minőségügy központi fogalma az igény-kielégítési folyamatára vonatkozó minőség. Filozófiai szempontból a minőség az alábbiak szerint értelmezhető: A minőség általános filozófiai értelmezése a dolgok tulajdonságokkal történő leírása. A minőség értékszemléletű filozófiai értelmezése szubjektív, valamilyen értékrenden alapul, személyhez kötött. Ahhoz, hogy a minőséget értelmezzük meg kell fogalmazni a vizsgálati szempontokat, meg kell mérni a tulajdonságok értékét, meg kell határozni az értékrendet és meg kell adni az objektum minőségét, ami az értékrend alapján az objektumra vonatkozó értékítélet, minősítés. A minőség fogyasztói értelmezése 4
A termék és a fogyasztási folyamat az igény-kielégítési folyamat részei, minőségének fogyasztói értelmezése a minőség értékszemléletű filozófiai értelmezésén alapul. A fogyasztási folyamat minőségét a fogyasztó szempontjából azok a tulajdonságok határozzák meg, amelyek alkalmassá teszik a fogyasztó számára a terméket a fogyasztására, felhasználására. A minőség fogyasztói értelmezése a termék hasznosságát fejezi ki. A minőség termelői értelmezése Az igény-kielégítési folyamat, ezen belül elsősorban a termelési folyamat minőségének termelői értelmezése a minőség értékszemléletű filozófiai értelmezésén alapul. Az igény-kielégítési folyamat termelői minősége ugyanis attól függ, hogy a termelési folyamat és a termék a termelői érdekeltek szempontjából megfelelő-e, azaz a termelés folyamata az érdekeltek számára mennyire hasznos, mennyire gazdaságos, illetve mennyire veszélytelen. A minőség társadalmi értelmezése Az igény-kielégítési folyamat minőségének társadalmi értelmezése a termelői értelmezéshez hasonlóan ugyancsak a minőség értékszemléletű filozófiai értelmezésén alapul. Az igény kielégítési folyamat társadalmi minősége tehát attól függ, hogy megfelelő-e a társadalom számára, vagyis a termelési és fogyasztási folyamatok a társadalom számára mennyire hasznosak és biztonsági (például életvédelmi, környezetvédelmi) szempontból mennyire veszélytelenek. Az Európai Unió és a fejlett országok minőségügyi szabályozási gyakorlatában egyre fontosabb szerepet kap a minőség társadalmi értelmezése. A minőség társadalmi értelmezése alapján tehát a minőségügy magában foglalja a fogyasztóvédelem mellett a biztonságtechnika legkülönbözőbb területét is: munkavédelem, élet és egészségvédelem, erkölcsvédelem, környezetvédelem, valamint vagyon- és tűzvédelem. A minőség társadalmi értelmezésében, felfogásában a fejlett országokban az adott társadalmi értéket jelentő terület védelme mellett, annak fejlesztése, előmozdítása, valamint támogatása is beletartozik. A minőség minőségügyi értelmezése Az igény-kielégítési folyamat minősége korszerű minőségügyi szemléletben egyrészt a termék és a fogyasztási folyamat fogyasztói minőségét, azaz a fogyasztói igények kielégítését, másrészt a termelési folyamat és a termék termelői minőségét, a hasznosságot, valamint az igény-kielégítési folyamat társadalmi minőségét, ezen belül elsősorban a védelmet és a támogatást foglalja magában. J. Cons szerint a megfelelő minőség a műszaki (technical), az erkölcsi (ethical), a piaci (marketing), illetve a gazdasági (economical) követelmények egyensúlya. A minőség mérése Tekintettel arra, hogy a minőség szubjektív, ezért nehezen mérhető. A mérés nehézségét a következő problémák okozzák: 5
Nemcsak a minőség szubjektív, hanem a legtöbb, a minőséget meghatározó tulajdonság is az, ezért ezek mérése általában nem lehet objektív. A minőséget meghatározó funkciók, tulajdonságok nagy része nem mérhető. A minőség tulajdonképpen az emberek értékítélete, nincs társadalmilag elfogadott értékrend. A minőség, a minősítés az esetek többségében folyamatosan változik mind időben, mindpedig a környezettől függően. Sokan megfelelő háttér, illetve ismeret hiányában minősítenek, ami a minősítés jóságát, a minősítésbe vetett bizalmat rontja. A minőség ugyanakkor az igény-kielégítési folyamatra vonatkozóan alapvető értéket képvisel, ezért a problémák ellenére is mérni kell a minőséget, amennyire ez lehetséges. Szoftverminőség (Software quality) A szoftver is egy ugyanolyan termelő-folyamat végterméke, mint minden más termék. A minőségbiztosítás ezért ebben az esetben is elkerülhetetlen. A minőségbiztosítás a megfelelő eljárások, és szabványok definiálását, valamint azok betartásának ellenőrzését jelenti. A minőség azt jelenti, hogy a fejlesztési folyamat a specifikációs követelményeket mennyire elégíti ki. A szoftverek esetében azonban az alábbi problémák merül(het)nek fel: A szoftver specifikációjának a felhasználó által használni kívánt termék (szoftver) karakterisztikáját kell tartalmaznia, azonban a fejlesztésben résztvevőknek is vannak elvárásai, melyek nem szerepelnek a specifikációban. A szoftver specifikációk rendszerint nem teljesek, nem tartalmaznak minden részletet. A minőség tervezésének ugyanakkor kritikus pontja a legfontosabb minőségi tulajdonságok kiválasztása, és annak megtervezése, hogy ezek hogyan valósíthatók meg. A megfelelő szoftverminőség elérését menedzselő szakemberek az alábbi tevékenységekért felelősek: Minőségbiztosítás (quality assurance): olyan szervezeti eljárásokat, valamint szabványokat kell definiálni, amelyek jó minőségű szoftverek készítéséhez vezetnek. Minőségtervezés (quality planning): ki kell választani a megfelelő eljárásokat, szabványokat, és ezeket illeszteni kell a szoftverfejlesztési projekthez. Minőségszabályozás (quality control): biztosítani kell, hogy a minőségbiztosítás során definiált eljárásokat és szabványokat a szoftverfejlesztők alkalmazzák. A szoftverminőséget alapvetően az alábbi tényezők határozzák meg: Minősítési, illetve kiértékelési szempontok. 6
Minőségfaktorok (például megbízhatóság, hatékonyság, hordozhatóság, felhasználó-barátság, ), minőségjegyek. Szoftverjellemzők (például dokumentáltság, teljesség, pontosság, konzisztencia, eszközfüggetlenség, hatékonyság, elérhetőség, strukturálhatóság, tömörség, érthetőség, olvashatóság, módosíthatóság). 2.2. Mérőszámok, megbízhatóság A metrikák (szoftver-merőszámok) alapvetően a szoftver-rendszerekhez, szoftver-folyamatokhoz, vagy az ezekhez kapcsolódó dokumentációhoz tartoznak. A metrikákat két csoportba sorolhatjuk: ellenőrző metrikák (control metrics), illetve a prediktor metrikák (predictor metrics). Az ellenőrző metrikák a szoftver folyamatok ellenőrzéséhez kapcsolódnak. Ilyenek például az erőforrás használatára vonatkozó jellemzők, az átviteli kommunikációra jellemző értékek (például válaszidő). Ezen mérőszámok becslése használható a projekt tervezési folyamatok finomítására. Az ellenőrző metrika a szoftver folyamatának minőségéről ad információt, és így kapcsolódik a termék minőségéhez. A prediktor metrikák a szoftver vagy a hozzá tartozó dokumentáció jellemzőihez kapcsolónak, a termék minőségének előzetes tervezésére használhatóak. Ilyenek például a szoftverek bonyolultságára jellemző ciklomatikus komplexitás vagy a szoftver dokumentációjának olvashatóságára jellemző úgynevezett Fogindex. A szoftver minőségmértéke Egy szoftver, mint termék esetén a minőség szempontjából két fontos terület merül fel: a szoftvernek egyrészt hibamentesnek, másrészt karbantarthatónak kell lennie. A szoftverek minőségének vizsgálata szempontjából a hibamentesség, illetve a karbantarthatóság becslésére legtöbbször a szoftver 7
forráskódjára vonatkozó néhány jellemző mérése adhat megfelelő támpontot. Ilyen metrikák például az alábbiak: Kódhossz (Length of code): a program forráskódjának mérete. Általában a nagyobb méretű programkódban több hiba fordulhat elő. Ciklomatikus komplexitás (Cyclomatic complexity): a program bonyolultságának a mértéke. A programban lévő különböző végrehajtási szerkezeteiből adódó komplexitást jelenti. A szoftver forráskódjának bonyolultsága ezen túlmenően annak érthetőségével és így a karbantarthatósággal is szoros kapcsolatban van. Azonosítók hossza (Length of identifiers): a szoftverben használt különböző azonosítók (konstansok, változók, függvények, eljárások) átlagos hosszának a mértéke. A programban a hosszabb azonosítók általában több jelentést hordoznak és így könnyebben érthető a forráskód. Egymásba ágyazott szerkezetek mélysége: a program forráskódjában szereplő feltételes, illetve ciklusszervező utasítások beágyazottságának a mértéke. Ha egy programban többszörösen egymásba ágyazott vezérlési szerkezeteket használunk, akkor az nehezebben áttekinthetővé válik. A szoftver dokumentációjának minőségmértéke A szoftverhez kapcsolódó dokumentáció minőségének vizsgálata szintén nagyon lényeges szempont. A program dokumentációjára vonatkozóan az olvashatóság mértékeként a Fog-indexet használhatjuk, ami a mondatok hossza, és a hosszú szavak száma alapján értékeli a dokumentumot. Egy szó hosszát azonban nem az őt alkotó betűk száma adja, hanem a benne található hangok száma. A Fog-index számítása nem csupán az olvashatóság szempontjából lehet fontos, lehetőséget adhat továbbá a több szerző által készített dokumentáció különböző részeinek stílusbeli összehangolására is. 8
2.3. Szoftver minőségi modellek Az ISO-IEC 9126-os szabvány részletesen tárgyalja a szoftver minőségre jellemző tulajdonságokat, karakterisztikákat. A szabvány ezeket a tulajdonságokat az alábbiak szerint osztályozza: Funkcionalitás: Idetartoznak a szoftver alapvető működésével kapcsolatos tulajdonságok, például: alkalmasság, pontosság, együttműködés (más szoftverekkel), megfelelőség, védelem. Megbízhatóság: Ebbe a csoportba azokat a tulajdonságokat soroljuk, amelyek elsősorban a szoftver hibatűrésére, a hibák elfedésére jellemzőek, de fontos tulajdonság ebben a csoportban a visszaállíthatóság is. Használhatóság: Idesoroljuk a szoftver üzemeltetésére vonatkozó, a felhasználói kezelésre vonatkozó tulajdonságokat. Például: érthetőség, tanulhatóság, kezelhetőség. Hatékonyság: Ez a csoport azokat a jellemzőket egyesíti, amelyek azt írják le, hogy a szoftver mennyire hatékonyan képes ellátni a feladatát, például időben, vagy az erőforrások, illetve a kommunikációs csatorna használatában. Karbantarthatóság: Idetartoznak azok a jellemzők, amelyek a szoftver vizsgálati, javítási, illetve továbbfejlesztési lehetőségeire vonatkoznak. Például: vizsgálhatóság, elemezhetőség, változtathatóság, továbbfejleszthetőség, tesztelhetőség. Hordozhatóság: Ebbe a csoportba soroljuk azokat a tulajdonságokat, amelyek más rendszerekhez, szabványokhoz való kapcsolatukat testesítik meg. Például: adaptálhatóság, szabványoknak való megfelelés, cserélhetőség. 9