U ovoj lekciji obrađivaćemo:
Kada se u fokusu ocenjivanja kvaliteta nalaze proizvodi i postupci, kvalitet obično merimo matematičkim izrazima koji uključuju nedostatke, otkaze i vreme. Ređe se opseg proširuje uključivanjem aspekata poslovanja, gde se kvalitet posmatra zavisno od proizvoda i usluga koje pruža poslovni sistem čiji je softver sastavni deo. Drugim rečima, posmatramo tehničku vrednost proizvoda i jedino na osnovu njih donosimo odluke, umesto da ih posmatramo sa mnogo šireg aspekta kakav je njihova poslovna vrednost. Pretpostavljamo da se unapređenje tehničkog kvaliteta automatski odslikava na poslovnu vrednost.
Bilo je više pokušaja za nalaženje veza između tehničke i poslovne vrednosti na kvantitativan i smislen način. Npr. Humphrey, Snyder i Willis (1991) napominju da je unapređenjem procesa razvoja u skladu sa CMM skalom „zrelosti“, kompanija Hughes Aircraft poboljšala produktivnost četiri puta i uštedela milione dolara. Slično tome, Dion (1993) izveštava da je Raytheon-ovo udvostručenje produktivnosti bilo praćeno sa 7,7 dolara povraćaja na svaki dolar investiran u unapređenje procesa. Osoblje u vazduhoplovnoj bazi Tinker u Oklahomi zabeležilo je poboljšanje produktivnosti od 6,35 puta (Lipke i Butler 1992).
Brodman i Johnson (1995) detaljnije su proučili poslovnu vrednost unapređenja postupka. Oni su ispitali 33 kompanije koje su izvele neku vrstu aktivnosti unapređenja postupka, pri čemu su istražili više ključnih pitanja. Među drugim stvarima, Brodman i Johnson pitali su kompanije kako definišu povraćaj investicije (Return on Investment, ROI), koncept koji je jasno definisan u poslovnim krugovima. Oni napominju da školska definicija povraćaja investicije, izvedena iz finansijskog okruženja, opisuje investiciju zavisno od toga šta je dodatno dobijeno. To jest, „investicija ne sme da vrati samo početni kapital, već dovoljno više, najmanje onoliko koliko bi bilo zarađeno na drugom mestu, plus dodatak za rizik“ (Putnam i Myers 1992).
Računarski sistemi su odavno postali veoma složeni, a softver koji se razvija ima stalnu tendenciju rasta kompleksnosti. Tržište zahteva od kompanija koje razvijaju softver sve kraće vreme razvoja softvera koje zbog toga vode bespoštednu borbu u izvršavanju poznate izreke: brže, bolje, jeftinije. Šampioni su one kompanije koje uspeju da pronađu kompromis između funkcionalnih zahteva, rokova, kvaliteta i raspoloživog budžeta. Sa rastom kompleksnosti realizovanih funkcija i primena posebno je narastao zahtev za kvalitetom softvera u pogledu pouzdanosti (kod softvera sa kritičnom misijom), pogodnosti za testiranje i održavanje, ponovne upotrebljivosti, otpornosti na greške i drugih faktora kvaliteta softvera.
Nedostatak iskusnog i utreniranog razvojnog tima, ograničeni resursi i sredstava za automatizovan razvoj softvera doveo je do niza sličnih problema kako u velikim tako i u malim kompanijama koje razvijaju softverski proizvod. Ovi problemi uključuju problem nekompletnog razvoja, neefikasnog testiranja softvera, nizak nivo kvaliteta softvera, visoki troškovi razvoja i održavanja softvera, nezadovoljan kupac, ali se time lista problema ne završava. U naporima da spreče defekte u softveru koji se predaje korisniku na upotrebu, kompanije sve više sredstava investiraju u inženjering kvaliteta softvera (procesa i proizvoda), a čiji najznačajniji deo se odnosi na testiranje softvera. U razvojnom ciklusu softvera sve je značajniji zadatak testiranja softvera ili verifikacije i validacije (V&V) koji treba da obezbedi zahtevani nivo poverenja u ispravnost (korektnost) softvera kao i obezbeđenja ostalih zahtevanih karakteristika softvera.
Inženjering kvaliteta softvera je komponovan od dve osnovne aktivnosti koje se bave nivoom kvaliteta procesa razvoja softvera, a koji se obično naziva obezbeđenjem kvaliteta i kvalitetom samog proizvoda. Nivo kvaliteta procesa razvoja softvera uspostavlja tehnike, procedure i alate koji pomažu promovisanju, ohrabrivanju, olakšavanju i kreiranju softverskog razvojnog okruženja u kome se izrađuje efikasan, optimizovan, prihvatljiv softverski proizvod sa minimalnim brojem grešaka. Kvalitet softverskog proizvoda se usmerava ka obezbeđenju što je moguće manje grešaka u softveru, njegovoj funkcionalnosti koja zadovoljava ili prevazilazi očekivanje korisnika softvera. Aktivnost testiranja softvera se normalno izvodi kao sredstvo pronalaženja grešaka sa ciljem njihovog odstranjivanja iz softverskog proizvoda.
Kada se razmatra kvalitet procesa testiranja softvera, kao najvažnije aktivnosti obezbeđenja i kontrole kvaliteta softvera u procesu razvoja softvera, veoma je važno ne mešati ga sa kvalitetom softvera. Nerazumevanje ova dva različita pojma vidi se kod autora koji kvalitet procesa testiranja softvera izražavaju i mere preko kvaliteta softvera koji ocenjuju testiranjem istog, npr. preko broja otkrivenih grešaka i otkaza u softveru, preko srednjeg vremena otkaza softvera i dr.
Čak i korektan softver može biti loše testiran tako da se projektantima ne pomaže u donošenju važnih odluka tokom procesa razvoja softvera. Dodatni problem predstavlja multidimenzionalni karakter kvaliteta softvera. Kvalitet softvera se izražava preko više atributa - opisnog karaktera ili faktora, kriterijuma i odgovarajućih metrika u odnosu na različite aspekte (upotrebe, održavanja, okruženja) na softver od strane pojedinih učesnika u procesu razvoja softvera.
Kvalitet Softvera nije jednoznačan i značenje pojedinih atributa kvaliteta softvera zavise od situacije u kojoj se kvalitet softvera tretira. Kvalitet softvera je višedimenzionalan, tj. mnogo faktora utiče na neki atribut kvalitet softvera pa ga je teško zbirno izraziti.
Kvalitet softvera se tretira uz mnoga ograničenja kao što je budžet, vreme, resursi i dr. Kvalitet softvera se tretira uz nužne kompromise, pošto na kvalitet softvera utiču mnoga ograničenja u procesu razvoja. Atributi kvaliteta softvera nisu nezavisni. Atributi nisu ni ortogonalni, već postoji njihova interakcija, ponekad je i konfliktna.
Softverski realizovani informacioni sistemi (IS) nastavljaju da rastu po veličini i složenosti, dok poslovne primene istih zahtevaju sve kraći ciklus razvoja softvera uz kompromis između zahteva za što nižu cenu, što bolji kvalitet i performanse softverskog proizvoda. Nedostatak iskustva, ograničeni resursi, trka sa vremenom, uz pretežno ljudski tj. umni rad u razvoju softvera dovodi do velikih problema kako kod velikih tako i malih kompanija. Ovi problemi se odnose na nedovršen razvoj, neefikasno testiranje, loš kvalitet softvera, visoka cena razvoja i održavanja softvera koji neminovno dovodi do nezadovoljstva korisnika softverskim proizvodom. Jedan od načina da se ovi problemi prevaziđu jeste da se preko adekvatnog testiranja spreči isporuka softverskog proizvoda sa ozbiljnim greškama kupcu kroz angažovanje sve većih resursa kako velikih tako i malih kompanija u proces testiranja.
Postoji više aspekata poboljšanja procesa testiranja (npr. obuka kadrova za proces testiranja, njegova automatizacija, razvoj novih alata, novog modela procesa testiranja), preko integracije procesa merenja parametara efikasnosti i efektivnosti procesa testiranja, analize slabih i jakih strana postojećeg procesa testiranja, identifikacije rizika i njihovih posledica na uspeh procesa testiranja. Mada je dobro dokumentovana, poznata činjenica da je mnogo jeftinje otkriti i otkloniti greške softvera u ranim ili fazama nastanka nego kasnije. Mnoge kompanije nisu svesne te činjenice kao ni koje rizike za uspeh projekta one imaju.
Upravljanje problemima, odnosno greškama i otkazima u softveru, je vrlo važna jer predstavlja osnovni izvor informacija za poboljšanje procesa testiranja. Jedna od dobrih metodologija je tzv. ortogonalna klasifikacija defekata (OKD) u softveru tzv. Orthogonal Defect Classification (ODC) metodologija koju primenjuje IBM. Ona omogućava nedvosmislenu klasifikaciju defekata i onemogućava redundanciju grešaka. Ortogonalna klasifikacija se pokazala uspešnom, tokom decenije primene, na više projekata u IBM koja uzima sve probleme i defekte u obzir tokom svih faza procesa razvoja softvera.
Sistem obezbeđenja kvaliteta softvera je skup sistematski postavljenih aktivnosti koje se brinu o:
Sistem kvaliteta kompanije treba izgraditi kroz:
Menadžment kvaliteta mora da obavlja aktivnosti vezane za kvalitet procesa i proizvoda kao važne aktivnosti ukupnih menadžerskih funkcija kroz:
Klasičan pristup testiranju softvera, kao najvažnije aktivnosti u obezbeđenju kvaliteta softvera, je neefikasan u pogledu otkrivanja i uklanjanja grešaka u fazi izrade projektnih zahteva i dizajna softverskog proizvoda. Kao rezultat, naučena lekcija u dosadašnjim pristupima testiranja softvera može pomoći da se preventivno deluje u cilju izbegavanja tj. ponavljanja istih grešaka u narednim projektima i kao osnova za poboljšanje procesa testiranja softvera, a time i sistema obezbeđenja kvaliteta kompanije. Umesto da je cilj testiranja softvera da se preko otkrivanja grešaka oceni kvalitet softvera, kvalitet softvera se mora ugraditi tj. dizajnom obezbediti. Zato se mora od početka dizajnirati kvalitetan softver kroz dizajn procesa testiranja i pojedinačnih test procedura softvera tj. aktivnosti testiranja kojima se ugrađuje kvalitet softvera, odnosno deluje aktivno. Stoga se proces testiranja i provere izvodi što ranije.
Inženjerstvo kvaliteta softvera predstavlja naprednu inženjersku oblast koja se primenjuje u svim fazama ciklusa procesa razvoja softvera i procesa testiranja softvera. Mora da uzme u obzir zahteve korisnika, posebno zahteve u pogledu kvaliteta softvera i standarde kvaliteta date kompanije. Cilj primene aktivnosti je da se obezbedi kvalitet softverskog proizvoda. Skup sistematizovanih aktivnosti koje obezbeđuju da se na kraju procesa razvoja softvera dobije softverski proizvod prema postavljenim projektnim zahtevima.
To je osmišljen i integrisan skup aktivnosti tokom čitavog procesa razvoja softvera sa ciljem da se ugradi zahtevani nivo kvaliteta softvera, gde se od početka vodi računa i o ovom skupu aktivnosti sa ciljem identifikacije i eliminacije defekata u softveru što pre, smanjujući na taj način vreme i troškove procesa testiranja softvera i kasnije održavanje softverskog proizvoda u njegovoj eksploataciji. Kako proces razvoja softvera napreduje sve više vrednih informacija biva prikupljeno koje doprinose i koriste se za poboljšanje ukupnog kvaliteta softvera. Parametri procesa razvoja softvera (broj otkrivenih grešaka, broj propuštenih grešaka, troškovi i sl.) procenjuju se i ažuriraju konstantno na osnovu kojih se vrši korekcija planiranih aktivnosti.
Softver dobija na kvalitetu i nakon izvesnog vremana rada. Softver koji se tek pusti u rad (“bez radnog iskustva”) neminovno sadrži greške. Prve verzije softvera najvećih proizvođača takođe. Nakon perioda probnog korišćenja, slede ispravke otkrivenih nedostataka. Nakon ispravki i dopune zahteva, sledi puno korišćenje sistema, npr. za sistem nakon ubacivanja više hiljada zapisa (klijenata, prodaja i dr.) i korišćenja od više stotina zaposlenih u periodu od nekoliko meseci itd, sa velikom sigurnošću se može tvrditi da je softver dobar, stabilan i kvalitetan. Reference prilikom kupovine predstavljaju važan izvor informacija po ovom pitanju.