You are on page 1of 26

Oblikovanje programske potpore

ak.god. 2015./2016.

Uvod u programsko inenjerstvo

Sveuilite u Zagrebu
Fakultet elektrotehnike i raunarstva

Zavod za elektroniku, mikroel., raunalne i inteligentne sustave

Literatura

Sommerville, I.: Software Engineering, Addison-Wesley,


2007. (8th ed.) i 2010. (9th ed.)

Uvod u programsko inenjerstvo

Uvod u programsko inenjerstvo

Cilj: Upoznavanje s programskim inenjerstvom

Prodiskutirati definicije i znaaj PI

Vanost etikih i profesionalnih pitanja za programske inenjere

Uvod u programsko inenjerstvo

Programsko inenjerstvo

Veina sloenih sustava (drutvenih i tehnikih) upravljana je


raunalnim programima

Ovisnost ekonomije o raunalnim programima

Potronja na raunalne programe predstavlja znaajan dio


BDP-a svake zemlje

Potreba za raunalnim programima je velika i raste.

Veliki dio raunalnih programa je neprihvatljive kakvoe, a


situacija postaje sve gora.

Kako bi se postigla prihvatljiva kakvoa moramo nauiti i rabiti


inenjerski pristup u oblikovanju programske potpore.

Programsko inenjerstvo bavi se teorijama, metodama i alatima


za profesionalno oblikovanje programske potpore
Uvod u programsko inenjerstvo

Karakteristike programske potpore

Programska potpore je neopipljiva

Jednostavna za reproducirati

teko je automatizirati u kljunim segmentima

Lagano je unijeti izmjene

bitno razliita od svih drugih artefakata (do sada)

Industrija programske potpore je izrazito radno intenzivna

teko je razumjeti napore procesa oblikovanja

esto i bez dubljeg razumijevanja posljedica

Programska potpora se ne troi

ali se kvari ako se ne koristi kako je zamiljena ili ako postoje ugraene
pogreke

Uvod u programsko inenjerstvo

Cijena programske potpore

Cijena programske potpore dominira u cijeni cjelokupnog


sustava!

Cijena programske potpore sastoji se iz cijena:

razvoja, oblikovanja, ispitivanja i odravanja.

Cijena odravanja programske potpore vea je od cijene


razvoja i oblikovanja.

Kod dugo ivuih sustava cijena odravanja je nekoliko puta vea od


cijene razvoja.

Cijena proizvodnje (kopiranja istovrsnih proizvoda) je


zanemariva (to je bitno razliito od svih drugih artefakta).

Programsko inenjerstvo bavi se cjenovno uinkovitim


postupcima razvoja i oblikovanja programske potpore.

Uvod u programsko inenjerstvo

Pitanja programskog inenjerstva (1/2)

to je programska potpora?

to je programsko inenjerstvo?

Koja je razlika izmeu programskog inenjerstva i raunarske


znanosti?

Koja je razlika izmeu programskog inenjerstva i inenjerstva


raunalnih sustava (raunalnog inenjerstva)?

to je to i kako izgleda proces programskog inenjerstva?

to je to i koji su sve modeli procesa programskog


inenjerstva?

Uvod u programsko inenjerstvo

Pitanja programskog inenjerstva (2/2)

Kakva je struktura cijene (troka) u programskom inenjerstvu?

to su to metode programskog inenjerstva?

to je CASE (Computer-Aided Software Engineering)?

Koje su znaajke dobrog programskog proizvoda?

Koji su osnovne potekoe i izazovi u programskom


inenjerstvu?

Koje vrste programskih projekata postoje i koje su njihove


znaajke?

to je profesionalna i etika odgovornost u programskom


inenjerstvu?

Uvod u programsko inenjerstvo

Programska potpora

engl. Software

U irem smislu, programska potpora ukljuuje raunalni


program i dokumentaciju: zahtjevi na sustav, modeli arhitekture
i oblikovanja, korisniki prirunici.

Programska potpora moe se razvijati za

ciljanog kupca prema njegovim zahtjevima;

skupinu kupaca (npr. pekarnice, rekreacijski centri);

ope trite (engl. COTS - Commercial Off The Shelf).

Programski proizvodi mogu se razviti:

oblikovanjem novih programa;

(re)konfiguracijom postojeih generikih programa;

ponovnom uporabom postojeih programa (komponenti).


Uvod u programsko inenjerstvo

Programsko inenjerstvo

Programsko inenjerstvo je inenjerska disciplina koja se bavi


svim aspektima izgradnje programske potpore.

metodama i alatima za profesionalno oblikovanje i proizvodnju


programske potpore uzimajui u obzir cjenovnu efikasnost

Programsko inenjerstvo

sistematski i organiziran pristup procesu izrade;

upotrebljavati prikladne alate i tehnike ovisno o problemu koji treba


rijeiti, ogranienjima u procesu izrade i postojeim resursima.

proces rjeavanja problema kupaca i korisnika (ponekad je rjeenje:


kupi, ne razvijaj)

IEEE definicija:
the application of a systematic, disciplined, quantifiable approach to the
development, operation, maintenance of software; that is, the application of
engineering to software.
Uvod u programsko inenjerstvo

10

PROGRAMSKO INENJERSTVO RAUNARSKA ZNANOST

Raunarska znanost se bavi teorijom i temeljima; programsko


inenjerstvo se bavi praktinim problemima razvoja,
oblikovanja i isporuke korisnog raunalnog programa.

Teorije u okviru raunarske znanosti jo uvijek su nedostatne


za ukupnu podlogu programskom inenjerstvu

npr. razlika od fizike u elektrotehnici i elektronici.

Uvod u programsko inenjerstvo

11

PROGRAMSKO INENJERSTVO INENJERSKI SUSTAVI

Inenjerstvo sustava engl. system engineering

Inenjerstvo raunalnih sustava (engl. computer system


engineering) se bavi svim aspektima sustava zasnovanim na
raunalima (sklopovlje, programska potpora, inenjerstvo
procesa).

Interdisciplinarno - sagledavanje cjeline, primjenjivo na sve sloene


sustave

Programsko inenjerstvo je dio procesa usredotoeno na razvoj


programske infrastrukture, upravljanje, primjenu i baze podataka u
sustavu.

Inenjeri sustava (raunalnog) su ukljueni u specificiranje


sustava, oblikovanju arhitekture, integraciju i postavljanju u
korisniko okruenje.
Uvod u programsko inenjerstvo

12

Proces programskog inenjerstva

Skup aktivnosti iji cilj je razvoj ili evolucija programskog


proizvoda (podrazumijeva timski rad).

u primjeni velik broj procesa programskog inenjerstva

Generike aktivnosti u svim procesima programskog


inenjerstva su:
Specifikacija

Oblikovanje i
implementacija

Temeljem analize zahtjeva odrediti to sustav


treba initi i koja su ogranienja u razvoju
Izbor arhitekture i ostvarenje programskog
sustava

Validacija i verifikacija

Provjera da li sustav ini ono to se od njega


zahtijeva

Evolucija

Promjene sukladno novim zahtjevima


Uvod u programsko inenjerstvo

13

Model procesa programskog inenjerstva

Model - pojednostavljeno predstavljanje procesa iz odreene


perspektive.

Neki primjeri razliitih perspektiva:

Tijek podataka (protok informacija);

Uloge i akcije (tko ini to);

Tijek posla (sekvenca aktivnosti).

Generiki modeli:

Vodopadni, evolucijski, komponentni

Uvod u programsko inenjerstvo

14

Struktura trokova u programskom inenjerstvu

Cijena programske potpore sadri cijenu specifikacije,


oblikovanja, ispitivanja i odravanja.

Grubo 50% cijene je troak razvoja, a 50% ispitivanja.

za jedinstvene programske proizvode troak evolucije (promjene,


prilagodbe i odravanja) je vei od troka razvoja.

Cijena uvelike ovisi o tipu sustava, zahtjevima, performansama


i pouzdanosti.

Razdioba troka ovisi o modelu procesa programskog


inenjerstva.

Zahtjev: Korist mora biti vea od troka.

Utjecaj okoline: Trino natjecanje u proizvodnji programske


potpore (drugi mogu izgraditi bre i bolje).

Uvod u programsko inenjerstvo

15

Usporedba razdioba trokova


VODOPADNI eng. Waterfall model
0

25

Specifikacija

50

Oblikovanje

100

75

Razvoj

Integracija i ispitivanje

ITERATIVNI engl. Iterative development


0

25

Specifikacija

50

75

Iterativni razvoj

1 00

Ispitivanje

KOMPONENTNI engl. Component-based software


engineering
0
25
50
75
Specifikacija

Razvoj

1 00

IIntegracija i ispitivanje

DUGOVJENI engl. Development and evolution costs for long-lifetime system


0

10

Razvoj

200

30

400

Razvoj sustava
Uvod u programsko inenjerstvo

16

Metode programskog inenjerstva

Strukturni (organizirani) pristup razvoju i oblikovanju programske


potpore koji ukljuuje:

Opisi modela

ogranienja primijenjena na modele sustava - npr. svaki entitet u modelu


sustava mora imati svoj naziv

Preporuke

najee grafiki

Pravila

izbor modela sustava (objektno-orijentirani, tok podataka...);


notaciju (oznaavanje) opis modela;
pravila
preporuke i naputci

dobra inenjerska praksa - npr. jedan razred jedna odgovornost

Naputci o procesu

slijed aktivnosti
Uvod u programsko inenjerstvo

17

CASE (Computer-Aided Software Engineering)

Programski proizvodi namijenjeni automatiziranoj podrci


aktivnostima u procesu programskog inenjerstva.

CASE-alati esto podupiru odreenu metodu ili fazu razvoja


programskog proizvoda.

Vii CASE (engl. upper CASE)

Nii CASE (engl. lower CASE)

podupiru rane aktivnosti (npr. analiza zahtjeva, oblikovanje modela, )

podupire kasnije aktivnosti (npr. programiranje kodiranje, ispitivanje..)

Integrirani CASE

podupire cjeloivotni ciklus proizvoda

Uvod u programsko inenjerstvo

18

Znaajke dobrog programskog proizvoda

Programski proizvod mora osigurati traenu funkcionalnost i


performanse, te mora biti prihvatljiv korisniku, pouzdan i mora
se moi odravati.

Prihvatljivost (engl. Acceptability, Usability)

Oslonljivost/Pouzdanost (engl. Dependability)

korisnik mora vjerovati u ispravnu funkcionalnost

Odravanje (engl. Maintainability)

razumljiv, koristan i kompatibilan s ostalim korisnikovim sustavima

evolucija proizvoda sukladno izmijenjenim i proirenim zahtjevima

Uinkovitost/ekonominost

Razumna uporaba resursa

Uvod u programsko inenjerstvo

19

Dionici programskog proizvoda

dionici (engl. Stakeholders)


Kupac

Rjeava problem uz prihvatljivu cijenu

Korisnik

Kakvoa
programskog proizvoda

Programer/Osoba
koja razvija

Lagano uenje i prihvaanje


novog sustava, efikasnost u
uporabi, pomae da se posao
obavi.

Rukovoditelj razvoja

Jednostavno oblikovanje i
odravanje, mogunost ponovnog
koritenja dijelova (engl. reuse).

Prodati to vie i zadovoljiti


kupce uz minimalni troak
razvoja i odravanja.

Uvod u programsko inenjerstvo

20

Proturjeja kakvoe programskog proizvoda

Poveanje uinkovitosti specijalizacijom ini sustav manje


razumljivim i moe smanjiti mogunost odravanja ili ponovnog
koritenja.

Poveanje lakoe koritenja (npr. ukljuivanje uputa tijekom


rada) moe smanjiti uinkovitost.

Postavljanje razine kakvoe je kljuna inenjerska aktivnost.

Proizvod se razvija kako bi zadovoljio tu razinu. Nuni su kompromisi i


optimizacija ogranienih resursa (npr. pouzdanost uz vrsti proraun).
Dobra inenjerska praksa:

Izbjegavaj suvian posao dodavanja funkcionalnosti (engl. Over-engineering)


koje korisnik nije traio, jer se time tedi i vrijeme i novac.

Uvod u programsko inenjerstvo

21

Osnovni izazovi programskog inenjerstva

Heterogenost (engl. Heterogeneity)

Vrijeme isporuke (engl. Delivery)

tehnike koje pokazuju da korisnici mogu imati povjerenja u programski


sustav (npr. uporaba matematikih, t.j. formalnih metoda).

Promjena zahtjeva (engl. Requirements changes)

tehnike koje osiguravaju kratak interval od zamisli do stavljanja na trite


(engl. time-to-market) uz prihvatljivu kakvou

Povjerenje (engl. Trust)

tehnike razvoja programske potpore za razliite platforme okoline


izvoenje.

Postoji esta i iznenadna promjena zahtjeva kupaca.

Sloenost (engl. Complexity)

Programska potpora je sloen (kompliciran) sustav s velikim brojem


detalja.
Uvod u programsko inenjerstvo

22

Vrste projekata

Veina projekata je evolucijska i u svezi s odravanjem starijih


sustava (engl. legacy).

Korektivni projekti (otklanjanje pogreaka).


Adaptivni projekti (izmjene temeljem promjene operacijskog
sustava, baza podataka, pravila i zakonskih odredaba, ).
Unapreujui, aditivni (dodavanje nove funkcionalnosti).
Reinenjerstvo (npr. unutarnje izmjene kako bi se olakalo
odravanje).
Potpuno novi projekti (engl. greenfield) u manjini.
Integrativni (oblikovanje novoga okruenja iz postojeih
programskih komponenata i cjelina, engl. framework).
Hibridni kombinacija (npr. korektivni + adaptivni)

Uvod u programsko inenjerstvo

23

Profesionalna i etika odgovornost

Programski inenjer se mora ponaati profesionalno korektno i


etiki odgovorno. Etiko ponaanje je vie nego puko
pridravanje zakona.

Povjerljivost prema poslodavcu i kupcu

Formalni ugovori

CONFIDENTIALITY AND NON-DISCLOUSURE AGREEMENT

Kompetencije

prihvaanje posla u okviru svojih kompetencija.

Potivanje prava intelektualnog vlasnitva.

Ne zlouporabiti raunalne sustave

npr. igranje za vrijeme rada, irenje virusa, spama

ACM/IEEE Code of Ethics

http://www.ieee.hr/ieee/upoznajte_ieee/kod_eticnosti
Uvod u programsko inenjerstvo

24

IEEE kod etinosti


Mi, lanovi udruge IEEE, prepoznavajui vanost tehnologija i njihov utjecaj na kvalitetu ivota u cijelom
svijetu, te prihvaajui osobnu obvezu prema vlastitom zanimanju, kolegama i zajednicama kojima
sluimo, ovime se obvezujemo na najvie etiko i profesionalno ponaanje te smo odluili:
1.
Prihvatiti odgovornosti u donoenju odluka koje su u suglasju sa sigurnou, zdravljem i
opom dobrobiti i hitno otkriti imbenike koji bi mogli ugroziti javnost ili okoli;
2.
Izbjegavati stvarne ili uoene sukobe interesa kada god je to mogue i otkriti ih interesnim
stranama ukoliko postoje;
3.
Biti poteni i realni u iznoenju tvrdnji ili procjena temeljenih na dostupnim podacima;
4.
Odbiti mito i sve njegove oblike;
5.
Unaprijediti razumijevanje tehnologije, njenih prikladnih primjena i potencijalnih posljedica;
6.
Odravati i unaprjeivati tehniku sposobnost i preuzeti tehnoloke zadae umjesto drugih
samo zbog vee strunosti i iskustva ili nakon potpunog iznoenja relevantnih ogranienja;
7.
Traiti, prihvatiti i nuditi objektivnu kritiku tehnikog, u svrhu prihvaanja i ispravljanja
pogreaka te prikladno nagraditi tui doprinos;
8.
Jednako se ophoditi prema svim osobama bez obzira na rasu, vjeru, spol, invaliditet, godine ili
nacionalnost;
9.
Izbjegavati ozljeivanje drugi osoba, njihovog vlasnitva, ugleda ili zaposlenja pogrenim ili
zlobnim radnjama;
10. Pomagati kolegama i suradnicima u njihovom profesionalnom razvoju i podravati ih da se
pridravaju ovog koda etinosti.
Odobrio Upravni odbor IEEE Veljaa 2006

Uvod u programsko inenjerstvo

25

Saetak

Problemi razvoja programske podrke uzrokovana sloenou


proizvoda i komunikacijskim problemima

Dualnost (proturjeje) programske potpore

Osnovni cilj procesa razvoja programske podrke je osiguranje


kvalitete

Programsko inenjerstvo je inenjerska disciplina koja se bavi


primjenom sistematskog, discipliniranog i mjerljivog pristupa u
svim fazama ivota programske podrke

Uvod u programsko inenjerstvo

26

You might also like