1 of 44

Uvod u Softversko Inženjerstvo

I blok nastavnih jedinica

2 of 44

Šta je dobar softver?

nastavna jedinica 2

3 of 44

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.

4 of 44

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.

5 of 44

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

  • usled zloupotrebe
  • usled nestručnog rukovanja

Tržište diktira brz razvoj softvera

  • brza isporuka ostavlja malo vremena za testiranje, pa su greške češće
  • ponekad je teže ispraviti uočene nedostatke, nego napisati kompletan novi softver

Kvalitet je neophodan

  • što je nedostatak duže neotkriven, njegovo otklanjanje više košta (troškovi ispravljanja greške u fazi analize su 10 puta manji od troškova nakon isporuke).

O čemu treba voditi računa?

6 of 44

Savremeni pogled na kvalitet programa

  • Prilagodljivost (Adaptivness) – softver mora posedovati osobinu prilagođavanja da bi odgovorio potrebama brzih promena u okruženju!
  • Otpornost (Resilience) – softver mora posedovati osobinu mogućnosti oporavka od izuzetaka ili grešaka koje mogu nastupiti u toku njegovog operativnog korišćenja.
  • Adekvatnost – softver mora dovoljno dobro odgovarati nameni!

7 of 44

Kvalitet programa

Pouzdanost

  • Pouzdanost (software reliability) je verovatnoća da će program ispravno raditi u nekom vremenskom intervalu t, pod uslovom da je korišćen na propisani način na odgovarajućem računarskom sistemu.
  • Za program kažemo da ispravno radi ako za tačne ulazne podatke daje tačne rezultate, i ako se završava na propisan način. Pouzdanost se upravo meri vremenom t koje je proteklo između dva otkaza (srednje vreme između dva otkaza).
  • To vreme se meri ciklusima sistemskog sata (system clock), a kod programa koji rade u realnom vremenu samim realnim vremenom (real time).

8 of 44

Kvalitet programa

Prilagodljivost-fleksibilnost, održavanje, prenosivost

  • Prilagodljivost (adaptability) se meri vremenom koje je potrebno iskusnom programeru da unese ispravke u rad programa. Prilagodljivost je vrlo važna osobina kvaliteta programa, jer se samo u dobre programe mogu unositi izmene i popravke.
  • Popravke dobrih programa su nužne, jer se u toku njihove eksploatacije nužno menjaju uslovi rada, ili se otkrivaju greške. Drugi razlog za popravke je prenošenje programa na drugi računarski sistem. Troškovi održavanja programa čine veliki deo troškova rešavanja zadataka na računaru.

9 of 44

Kvalitet programa

Efikasnost

  • Efikasnost (program efficiency) je obrnuto srazmerna u vremenu koje je potrebno za izvršenje programa, ali i količini memorije i drugih resursa koji su za to neophodni.
  • Efikasnost zavisi, najčešće, od kvaliteta kodiranja samo nekih vremenski kritičnih delova programa, što kod većine programa nije suviše važno, jer nisu vremenski ograničeni.
  • Efikasnost programa, često, više zavisi od algoritma, tj. idejnog rešenja nego od samog koda.
  • Ona je takođe u tesnoj vezi sa drugim osobinama programa, i ne sme biti ostvarena na račun čitljivosti ili jednostavnosti, odnosno razumljivosti.

10 of 44

Kvalitet programa

Razumljivost

  • Razumljivost (understanding) je funkcija čitljivosti i jednostavnosti (složenosti) strukture programa, a meri se vremenom koje je potrebno da programer potpuno shvati logičko značenje koda.
  • Razumljivost programskog koda zavisi, u stvari, od svih faza programiranja i primenjenih tehnika (modularnost, strukturiranje, dokumentovanost), a ne samo od kvaliteta kodiranja.
  • Razumljivost je od velikog značaja jer omogućava drugom programeru ili autoru da, posle nekog vremena, bez velikih napora, shvati programsku logiku, što je od posebnog značaja u uslovima timskog rada i razmene programa.

11 of 44

Gledišta na kvalitet

Garvin (1984) opisuje kvalitet sa pet različitih gledišta:

  • transcendentalni pogled, gde je kvalitet nešto što možemo da prepoznamo ali ne i da definišemo;
  • korisnički pogled, gde je kvalitet usklađenost sa namenom;
  • pogled sa aspekta proizvodnje, gde je kvalitet usklađenost sa specifikacijom;
  • pogled sa aspekta proizvoda, gde je kvalitet vezan za karakteristike samog proizvoda;
  • pogled na bazi vrednosti, gde kvalitet zavisi od toga koliko je kupac spreman da za njega plati.

12 of 44

Kvalitet softverskog proizvoda

Različit pogled na problem kvaliteta softvera zavisi od:

  • toga ko analizira softver;
  • višedimenzionalnog pogleda na kvalitet softvera;
  • kompromisnog rešenja u odnosu na projektna ograničenja (vreme, novac, resursi i dr.).

13 of 44

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

  • Kvalitet proizvoda

  • Kvalitet postupka izrade proizvoda

  • Kvalitet proizvoda u kontekstu poslovnog okruženja u kome će se koristiti

14 of 44

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.

15 of 44

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.

16 of 44

Boehm-ov model kvaliteta

Po ovom modelu, kvalitetan softver je onaj koji:

  • radi ono što korisnik od njega traži,

  • ispravno i efikasno koristi računarske resurse,

  • jednostavan je za učenje i korišćenje,

  • dobro je projektovan, dobro kodiran i lako se testira i održava.

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.

17 of 44

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

18 of 44

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:

  • Gde i kada ćemo verovatno naći neku vrstu nedostatka?

  • Kako možemo što ranije da pronađemo nedostatke u procesu razvoja?

  • Kako možemo da ugradimo toleranciju na greške, da bi smanjili verovatnoću da nedostatak pređe u otkaz?

  • Da li postoje alternativne aktivnosti koje mogu da načine proces efikasnijim, uz osiguranje kvaliteta?

19 of 44

Kvalitet se mora posmatrati na najmanje 3 načina:

  • Kvalitet proizvoda,
  • Kvalitet postupka izrade proizvoda i
  • Kvalitet proizvoda u kontekstu poslovnog okruženja u kojem se on koristi.

20 of 44

Kvalitet proizvoda

  • Procenjuju ga korisnici (broj otkaza, tip otkaza, ...),
  • oni koji ga pišu.
  • Modeli povezuju spoljni pogled korisnika i unutrašnji pogled programera.
  • McCalll dao model koji povezuje spoljne faktore (leva strana) sa kriterijumima kvaliteta proizvoda (desna strana).

21 of 44

McCallov model kvaliteta softvera

22 of 44

Kvalitet programa-korisnički pogled

  • Ispravnost
  • Pouzdanost
  • Efikasnost, resursi i odnos kvalitet/cena
  • Celovitost
  • Iskoristivost
  • Mogućnost održavanja
  • Mogućnost testiranja
  • Fleksibilnost
  • Prenosivost
  • Ponovna iskoristivost
  • Međuoperativnost
  • Pristupačnost korisniku

23 of 44

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?

24 of 44

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

........

25 of 44

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:

  • obuka,
  • raspored rada,
  • rizik,
  • kvalitet,
  • produktivnost,
  • postupak,
  • kupac,
  • troškovi,
  • Preduzetništvo.

26 of 44

2. Kriterijumi kvaliteta za softverske proizvode

  1. Koji kriterijumi kvaliteta su značajni za softverske proizvode?�
  2. Kako se mogu klasifikovati?�
  3. Standard ISO 9126

27 of 44

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?

28 of 44

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

...

29 of 44

Ispravnost – Pouzdanost

  • Pouzdanost:
  • Ispravnost:
  • Program se ponaša onako kako treba� odnosno, program ⇔ specifikaciji zahteva (zadatku)
  • Problemi: ???
  • Softverski proizvod je ispravan, ali, ne postiže ono što je� kupac očekivao.

Greške su retke i imaju samo beznačajne efekte. �

?

?

30 of 44

Robustnost

  • Robustnost:
  • Grubo: Savladavanje uticaja pogrešne okoline (greške u radu, pogrešne ulazne podatke, hardverske greške, izuzetne situacije)�
  • Precizno: „Programski sistem je robustan, ako su (negativni)� uticaji grešaka u radu, pogrešnih podataka, ili hardverskih� grešaka, obrnuto proporcionalni verovatnoći pojave ovih� grešaka u aplikaciji.“� (Pomberger)

?

31 of 44

Scalabilnost– Portabilnost

  • Portabilnost:
  • Koliko je jednostavan prenos softvera na drugi računar� ili drugi operativni sistem?
  • Stepen nezavisnosti računara i operativnog sistema.
  • Softver je portabilan, kada je trud oko prenosa na drugi � računar značajno manji od nove implementacije.
  • Skalabilnost:
  • Proširivost u odnosu na određene parametre:

veći skupovi podataka, veći broj korisnika, ...

?

?

32 of 44

Lakoća održavanja – okrenutost korisniku

  • Okrenutost korisniku:
  • Lakoća održavanja:

Koliko se jednostavno softverski sistem može izmeniti za potrebe

  • otklanjanja grešaka
  • poboljšanja
  • prenos?

Faktori: Čitkost programa, dokumentovanost, modularnost�

Definisano po podosobinama:

  • Adekvatnost (recimo, mogući unos podataka mora korisniku � biti ograničen na neophodan)
  • Lakoća obuke
  • Robustnost (ovde: deo osobina okrenutosti korisniku)

?

?

33 of 44

2. Kriterijumi kvaliteta za softverske proizvode

  1. Koji kriterijumi kvaliteta su značajni za softverske proizvode?�
  2. Kako se mogu klasifikovati?�
  3. Standard ISO 9126

34 of 44

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?

35 of 44

KIasifikacija kriterijuma kvaliteta

    • Ispravnost
    • Pouzdanost
    • Skalabilnost
    • Robustnost
    • Efikasnost
    • Kompatibilnost
    • Lakoća održavanja
    • Čitkost
    • Portabilnost
    • Ponovno korišćenje�(prema Meyer-u: spoljna osobina)
    • Modularnost �(npr. OO Softverska arhitektura)
    • Mogućnost testiranja
  • spoljne (tokom izvršavanja) vidljive karakteristike: ono što korisnik može zapaziti (Def.: Meyer)
  • samo tokom rada na implementaciji (izvornom kodu): mogu zapaziti samo računarski stručnjaci

Kriterijumi kvaliteta

eksterni interni

36 of 44

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

37 of 44

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

38 of 44

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

39 of 44

2. Kriterijumi kvaliteta za softverske proizvode

  1. Koji kriterijumi kvaliteta su značajni za softverske proizvode?�
  2. Kako se mogu klasifikovati?�
  3. Standard ISO 9126

40 of 44

Kvalitet

  • Tokom razvoja softvera, možemo uočiti �razliku između kvaliteta
    • softverskog proizvoda �→ ISO 9126
    • razvojnog procesa softvera�→ ISO 9000 (Topic 24)

Koji aspekti su u današnje vreme značajniji?

41 of 44

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

42 of 44

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.

43 of 44

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

44 of 44

Kviz?

  • Šta je kvalitet softverskog proizvoda?
  • Koja su gledišta na kvalitet softvera?
  • Šta je kvalitet procesa?
  • Šta je pouzdanost?