Uvod u Softversko Inženjerstvo
I blok nastavnih jedinica
Šta je dobar softver?
nastavna jedinica 2
Pojam aplikativnog softvera
Sistemski softver
Računarski hardver
Aplikativni softver
Assembler
Word proc.
Graphics
Spreadsh.
Web app.
Databases
Games
Debugger
Compilers
File Mng.
OS
Utilities
Aplikativni softver čine programi napravljeni za specifičnu svrhu i nisu u direktnoj vezi sa hardverom. Pri svom izvršavanju oslanjaju se na sistemski softver, posebno na operativni sistem. Obično se kupuju odvojeno od računarskog hardvera.
Sistemski softver obuhvata programe na niskom nivou (low-level) koji služe za kontrolu operacija nad računarskom opremom.
U nekim slučajevima nema jasne granice između sistemskog i aplikativnog softvera. Na primer, nema saglasnosti oko toga da li je Internet Explorer web browser deo Windows OS ili nije.
Izazovi pri izradi softvera
Svaki problem se može rešiti na više načina. Oni se razlikuju po efikasnosti, preciznosti, mogućnosti modifikovanja, korisnosti, razumljivosti i drugim osobinama. Stoga pisanje softvera zahteva znanje, ali i domišljatost i veštinu.
Haker
Softverski
inženjer
Ume da napiše kod koji nešto radi.
Ume da proizvede sveobuhvatan stabilan i razumljiv kod koji se lako održava i koji efikasno radi ono zbog čega je napravljen. Taj kod predstavlja visoko kvalitetan softver.
Izazovi pri izradi softvera
I pored toga što proizvođači teže softveru bez mana, u stvarnosti mnogi softverski proizvodi sadrže nedostatke.
Neočekivana upotreba sistema
Tržište diktira brz razvoj softvera
Kvalitet je neophodan
O čemu treba voditi računa?
Savremeni pogled na kvalitet programa
Kvalitet programa
Pouzdanost
Kvalitet programa
Prilagodljivost-fleksibilnost, održavanje, prenosivost
Kvalitet programa
Efikasnost
Kvalitet programa
Razumljivost
Gledišta na kvalitet
Garvin (1984) opisuje kvalitet sa pet različitih gledišta:
Kvalitet softverskog proizvoda
Različit pogled na problem kvaliteta softvera zavisi od:
Šta je dobar softver?
Kvalitet softvera zavisi od konteksta posmatranja. Na primer, nedostaci koji se tolerišu u softveru za obradu teskta, ne mogu se prihvatiti u sistemima gde je faktor bezbednosti izuzetno bitan.
Kvalitet softvera mora se posmatrati na više načina:
Učesnici u razvoju softvera
Kupac
Kupac
Projektant
Softverski sistem
Ima potrebu
Ima potrebu
Ugovorna obaveza
Kupac je kompanija, organizacija ili pojedinac koji finansira razvoj softverskog sistema.
Korisnik je jedan ili više pojedinaca koji će stvarno koristiti sistem.
Projektant je kompanija, organizacija ili pojedinac koji pravi softverski sistem za kupca.
Učesnici u projektu mogu istovremeno da imaju više uloga. Na primer, ako neki sektor u kompaniji razvija sam softver za svoje potrebe, on je istovremeno i kupac i korisnik i projektant.
Kvalitet proizvoda
Karakteristike proizvoda koje određuju kvalitet zavise od toga
ko analizira softver
Korisnik
smatra da je softver kvalitetan ako radi na odgovarajući način, lako se uči i koristi.
Korisnik meri: tip i broj otkaza.
Projektant
razmatra interne karakteristike proizvoda i procenjuje nedostatke.
Projektant meri: broj nedostataka u zahtevima, projektu i kodu.
Modeli kvaliteta
dovode u vezu spoljni pogled korisnika i unutrašnji pogled programera na softver.
Boehm-ov model kvaliteta
Po ovom modelu, kvalitetan softver je onaj koji:
Boehm-ov model kvaliteta (Boehm i dr., 1978.) je jedan od najpoznatijih modela. On predstavlja hijerarhiju karakteristika od kojih svaka doprinosi ukupnom kvalitetu. U model su uključena očekivanja kako korisnika, tako i programera.
Boehm-ov model kvaliteta
Opšta korisnost
Mogućnost održavanja
Osnovni naručilac
Prenosivost
Pouzdanost
Efikasnost
Ljudsko inženjerstvo
Mogućnost testiranja
Razumljivost
Mogućnost izmene
Nezavisnost od uređaja
Samosadrživost
Tačnost
Potpunost
Robustnost/integritet
Doslednost
Odgovornost
Efikasnost uređaja
Pristupačnost
Komunikativnost
Samoopisivost
Strukturisanost
Sažetost
Čitljivost
Proširivost
Kvalitet procesa
Kvalitet procesa razvoja softvera je jednako važan kao i kvalitet proizvoda. Ako neka od aktivnosti krene u pogrešnom smeru, to može da pogorša kvalitet proizvoda. Zbog toga se radi modelovanje postupka koje omogućava lakšu analizu postupka i nalaženje načina za njegovo poboljšanje.
Pitanja koja treba postaviti u procesu razvoja:
Kvalitet se mora posmatrati na najmanje 3 načina:
Kvalitet proizvoda
McCallov model kvaliteta softvera
Kvalitet programa-korisnički pogled
Kvalitet procesa
Jedna od prednosti modelovanja postupka jeste da možemo da ga analiziramo i nađemo načine da ga poboljšamo. Na primer, možemo da postavimo pitanja kao što su:
- Gde i kada ćemo verovatno da nađemo određenu vrstu nedostatka?
- Kako možemo što ranije da pronađemo nedostatke u postupku razvoja?
- Kako možemo da ugradimo toleranciju na greške, da bismo smanjili verovatnoću da nedostatak pređe u otkaz?
- Da li postoje alternativne aktivnosti koje mogu da načine proces efektivnijim ili efikasnijim uz osiguranje kvaliteta?
Kvalitet u kontekstu poslovanja
Kvalitet sa aspekta poslovanja se posmatra u zavisnosti od proizvoda i usluga koje pruža poslovni sistem čiji je softver sastavni deo. Pri tome se analizira poslovna vrednost proizvoda.
Tehnička
vrednost proizvoda
Poslovna
vrednost proizvoda
Povratak investicije
Kraći put do kupca
Kvalitet
proizvoda
Kvalitet
procesa
Produktivnost
........
Kvalitet u kontekstu poslovnog okruženja-Povraćaj investicije �( Return on Investment – ROI )
Među kompanijama koje su ispitivane, povraćaj investicije obuhvatao je elemente kao što su:
2. Kriterijumi kvaliteta za softverske proizvode
Motivacija
„ Softversko inženjerstvo ... bavi se ekonomičnim razvojem softvera visokog kvaliteta.“ (Pagel / Six, s. 49)
→ značajno da razjasnimo:� �Koje karakteristike softvera određuju njegov kvalitet?
Kriterijumi kvaliteta za softverske proizvode
Source: Books of Balzert, Pagel/Six, Sommerville, Pomberger
SW - Kvalitet
Ispravnost
Pouzdanost
Robustnost
Efikasnost
Okrenutost
korisniku
Lakoća održavanja
Skalabilnost
Čitkost
Ponovno korišćenje
Modularnost
Portabilnost
Kompatibilnost
Mogućnost testiranja
Cena
...
Ispravnost – Pouzdanost
Greške su retke i imaju samo beznačajne efekte. �
?
?
Robustnost
?
Scalabilnost– Portabilnost
veći skupovi podataka, veći broj korisnika, ...
?
?
Lakoća održavanja – okrenutost korisniku
Koliko se jednostavno softverski sistem može izmeniti za potrebe
Faktori: Čitkost programa, dokumentovanost, modularnost�
Definisano po podosobinama:
?
?
2. Kriterijumi kvaliteta za softverske proizvode
Klasifikacija ?
SW - Kvalitet
Ispravnost
Pouzdanost
Robustnost
Efikasnost
Okrenutost�korisniku
Lakoća održavanja
Skalabilnost
Čitkost
Ponovno korišćenje
Modularnost
Portabilnost
Kompatibilnost
Mogućnost testiranja
Cena
...
Kako se ovaj skup kriterijuma kvaliteta �može klasifikovati?
KIasifikacija kriterijuma kvaliteta
Kriterijumi kvaliteta
eksterni interni
Kvalitet softvera sa raznih aspekata
dobro dokumentovan� nema mnogo grešaka� greške lake za pronalaženje � pouzdan � relativno jednostavan za menjanje� čitak kod� lak za privikavanje� jednostavan za unapređenje
jeftin� zahteva malo memorije� brz�poboljšava produktivnost rukovanja� ispunjava zadatke kontinualno i korektno� niski troškovi održavanja� primenljiv u više aspekata
radi ono što očekujem
brz� jednostavan za korišćenje� nudi željenu funkcionalnost� bez ugrađenih grešaka� jednostavan za savladavanje� ne prekida rad� dobra uputstva za upotrebu
Kupac
Inženjer održavanja
Korisnik
From Pagel/Six S. 50/51
Interni i eksterni kriterijumi kvaliteta sa raznih aspekata
Kupac
Inženjer održavanja
Korisnik
interni kriterijumi kvaliteta
eksterni kriterijumi kvaliteta
Pouzdanost
Ispravnost
Okrenutost
korisniku
� Robustnost
Efikasnost
Jednostavnost održavanja
Interakcija između kriterijuma kvaliteta �i njihovog uticaja na cenu i vreme
Source: Pomberger, Software Engineering and Modula 2 p. 12
Cena
Ispravnost
Pouzdanost
Adekvatnost
Jednostavnost učenja
Robustnost
Čitkost
Izmenljivost/Proširivost
Mogućnost testiranja
Efikasnost
Portabilnost
Korektnost
Pouzdanost
Adekvatnost
Jednostavnost učenja
Robustnost
Čitkost
Izmenljivost/Proširivost
Mogućnost testiranja
Efikasnost
Portabilnost
Kriterijum kvaliteta
Vreme razvoja
Vreme trajanja
Cena razvoja
Cena rukovanja
Cena održavanja
Cena prenosa
Kriterijumi
Utiče na
+ 0 0 + 0 0 0 0 0
+ 0 0 + 0 0 0 - 0
0 0 + + 0 0 0 + -
0 0 0 0 0 0 0 - 0
0 + + + 0 0 + - -
+ + 0 0 + + + - +
+ + + 0 + 0 + - +
+ + 0 0 + 0 + - +
- - + - - - - - -
0 0 - 0 0 + + 0 -
- + + 0
- + - -
- + - -
- + 0 0
- + + -
+ 0 + +
+ 0 + +
+ 0 + + - + - -
- - + +
- +
- +
- 0
- 0
- +
+ +
- +
+ +
- +
- +
Vreme
2. Kriterijumi kvaliteta za softverske proizvode
Kvalitet
�Koji aspekti su u današnje vreme značajniji?
Kriterijumi kvaliteta softvera po ISO 9126
Kriterijumi kvaliteta softvera�po ISO 9126
Funkcionalnost
Korisnost
Pouzdanost
Efikasnost
Portabilnost
Lakoća održavanja
Pogodnost
Tačnost
Interoperability
Saglasnost
Bezbednost
Zrelost
Osetljivost na greške
Mogućnost oporavka
Razumljivost
Jednostavnost učenja
Lakoća rukovanja
Mogućnost analize
Mogućnost izmene
Stabilnost
Mogućnost testiranja
Ponašanje u vremenu
Ponašanje prema resursima
Adaptabilnost
Mogućnost instalacije
Podesivost
Zamenljivost
ISO 9126: definicija glavnih karakteristika
Karakteristika | Kratak opis |
Funkcionalnost | � |
Pouzdanost | � |
Korisnost | � |
Efikasnost | � |
Lakoća održavanja | � |
Portabilnost | � |
Stepen u kom softver zadovoljava zadate potrebe označene sledećim pod-osobinama: pogodnost, tačnost, interoperability, saglasnost i bezbednost.
Količina vremena koliko je softver raspoloživ za upotrebu, označen sledećim pod-osobinama: zrelost, osetljivost na greške, mogućnost oporavka.
Stepen u kojem je softver jednostavan za upotrebu označen sledećim pod-osobinama: razumljivost, jednostavnost učenja, lakoća rukovanja .
Stepen u kojem softver optimalno koristi sistemske resurse, označen sledećim pod-osobinama: ponašanje u vremenu, ponašanje prema resursima.
Jednostavnost kojom se mogu napraviti izmene na softveru, označena sledećim pod-osobinama: mogućnost analize, mogućnost izmene, stabilnost, mogućnost testiranja.
Jednostavnost kojom se softver može premestiti iz jednog okruženja u drugo, označena sledećim pod-osobinama: adaptibilnost, mogućnost instalacije, podesivost, zamenljivost.
Najznačajniji kriterijumi kvaliteta gledani�sa aspekta industrije
Source: „Analyse und Evaluation der Softwareentwicklung in Deutschland“, GfK Marktforschung GmbH, Fraunhofer Institute IESE, ISI, 2000
Ispravnost
SW - Kvalitet
Pouzdanost
Robustnost
Efikasnost
Okrenutost�korisniku
Lakoća održavanja
Skalabilnost
Čitkost
Ponovno�korišćenje
Modularnost
Portabilnost
Kompatibilnost
Mogućnost testiranja
Cena
...
1
2
3
4
5
implicitno: adekvatna funkcionalnost
Kviz?