23
1 UVOD U PROGRAMSKO INŽENJERSTVO Ciljevi ove prezentacije: Upoznati se s programskim inženjerstvom, dati definicije i objasniti značaj. Odgovoriti na temeljna pitanja o programskom inženjerstvu. Izvori: Sommerville, I., Software engineering, 8th ed., Addison Wesley, 2007.

UVOD U PROGRAMSKO INŽENJERSTVO Ciljevi ove prezentacije:

  • Upload
    chuck

  • View
    68

  • Download
    0

Embed Size (px)

DESCRIPTION

UVOD U PROGRAMSKO INŽENJERSTVO Ciljevi ove prezentacije: Upoznati se s programskim inženjerstvom, dati definicije i objasniti značaj. Odgovoriti na temeljna pitanja o programskom inženjerstvu. Izvori: Sommerville, I., Software engineering, 8th ed . , Addison Wesley, 2007. - PowerPoint PPT Presentation

Citation preview

Page 1: UVOD U PROGRAMSKO INŽENJERSTVO Ciljevi ove prezentacije:

1

UVOD U PROGRAMSKO INŽENJERSTVO

Ciljevi ove prezentacije:

• Upoznati se s programskim inženjerstvom, dati definicije i objasniti značaj.

• Odgovoriti na temeljna pitanja o programskom inženjerstvu.

Izvori:• Sommerville, I., Software engineering, 8th ed., Addison

Wesley, 2007.

Page 2: UVOD U PROGRAMSKO INŽENJERSTVO Ciljevi ove prezentacije:

2

ZNAČAJ PROGRAMSKOG INŽENJERSTVA

• Zašto programsko inženjerstvo?

• Većina složenih sustava današnjice (društvenih i tehničkih) upravljana je računalnim programima.

• Ekonomije svih razvijenih zemalja ovise o računalnim programima.

• Potrošnja na računalne programe predstavlja značajan dio BDP-a svake zemlje.

• Potreba za računalnim programima je velika i raste.

• Veliki dio računalnih programa je neprihvatljive kakvoće, a situacija postaje sve gora.

• Kako bi se postigla prihvatljiva kakvoća, moramo naučiti i rabiti inženjerski pristup u oblikovanju programske potpore.

Page 3: UVOD U PROGRAMSKO INŽENJERSTVO Ciljevi ove prezentacije:

3

POSEBNE KARAKTERISTIKE PROGRAMSKE POTPORE

• Programska potpore je neopipljiva (teško je razumjeti napore procesa oblikovanja).

• Vrlo ju je jednostavno reproducirati (bitno različito od svih drugih artefakata).

• Industrija programske potpore je izrazito radno intenzivna. Teško ju je automatizirati.

• Lagano je unijeti izmjene (često se to čini bez dubljeg razumijevanja posljedica).

• Programska potpora se ne troši (ali se kvari ako se ne koristi kako je zamišljena ili ako postoje ugrađene pogreške).

Page 4: UVOD U PROGRAMSKO INŽENJERSTVO Ciljevi ove prezentacije:

4

CIJENA PROGRAMSKE POTPORE (u tržišnoj ekonomiji početno i stalno u fokusu)

• Cijena programske potpore danas dominira u cijeni cjelokupnog sustava.

• Cijena programske potpore sastoji se iz cijena specifikacije, oblikovanja, ispitivanja i održavanja.

• Kod većine programskih produkata cijena održavanja programske potpore jednaka je ili veća od cijene specifikacije, oblikovanja i ispitivanja. Kod dugo živućih sustava cijena održavanja je nekoliko puta veća od cijene razvoja.

• Cijena produkcije (kopiranja istovrsnih proizvoda) je zanemariva (to je bitno različito od svih drugih artefakta).

Page 5: UVOD U PROGRAMSKO INŽENJERSTVO Ciljevi ove prezentacije:

5

TEMELJNA PITANJA OKO PROGRAMSKOG INŽENJERSTVA (1/2)

1. Što je programska potpora?

2. Što je programsko inženjerstvo?

3. Koja je razlika između programskog inženjerstva i računarske znanosti?

4. Koja je razlika između programskog inženjerstva i inženjerstva računalnog sustava?

5. Što je proces programskog inženjerstva?

6. Što je model procesa programskog inženjerstva?

Page 6: UVOD U PROGRAMSKO INŽENJERSTVO Ciljevi ove prezentacije:

6

TEMELJNA PITANJA OKO PROGRAMSKOG INŽENJERSTVA (2/2)

7. Kakva je struktura cijene (troška) u programskom inženjerstvu?

8. Što su metode programskog inženjerstva?

9. Što je CASE (engl. Computer-Aided Software Engineering)?

10. Koje su značajke (atributi) dobre programske potpore?

11. Koje su osnovne poteškoće i izazovi u programskom inženjerstvu?

12. Koje vrste projekata postoje u programskom inženjerstvu?

13. Što je profesionalna i etička odgovornost?

Page 7: UVOD U PROGRAMSKO INŽENJERSTVO Ciljevi ove prezentacije:

7

1. ŠTO JE PROGRAMSKA POTPORA?

(računalni program, engl. software)

• To je računalni program (kod) i pridružena dokumentacija, kao što su: zahtjevi na sustav, tehnička dokumentacija te korisnički priručnici.

• Računalni programi mogu se razvijati za ciljanog kupca prema njegovim zahtjevima, za skupinu kupaca (npr. proračunske tablice za mobitele upravljane određenim operacijskim sustavom) ili za opće tržište (engl. COTS - Commercial Off The Shelf).

• Programski produkti mogu se stvoriti oblikovanjem novih programa, (re)konfiguracijom postojećih generičkih programa, ili ponovnom uporabom postojećih sastavnica (komponenata) programa.

Page 8: UVOD U PROGRAMSKO INŽENJERSTVO Ciljevi ove prezentacije:

8

2. ŠTO JE PROGRAMSKO INŽENJERSTVO?

• Programsko inženjerstvo je disciplina koja se bavi metodama i alatima za profesionalno oblikovanje i proizvodnju programske potpore uzimajući u obzir cjenovnu efikasnost.

• Programsko inženjerstvo mora prihvatiti sistematski i organizirani pristup procesu izrade te upotrebljavati prikladne alate i tehnike ovisno o problemu koji treba riješiti, ograničenjima u procesu izrade i postojećim resursima.

• Programsko inženjerstvo je proces rješavanja problema kupaca i korisnika (ponekad je rješenje: “kupi, a ne razvijaj”).

IEEE definicija (Software engineering): (1) The application of a systematic, disciplined, quantifiable

approach to the development, operation, maintenance of software; that is, the application of engineering to software. (2) The study of approaches as in (1).

Page 9: UVOD U PROGRAMSKO INŽENJERSTVO Ciljevi ove prezentacije:

9

3. KOJA JE RAZLIKA IZMEĐU PROGRAMSKOG INŽENJERSTVA I RAČUNARSKE ZNANOSTI?

• Računarska znanost se bavi teorijom i temeljima; programsko inženjerstvo se bavi praktičnim problemima razvoja, oblikovanja i isporuke korisnog računalnog programa.

• Teorije u okviru računarske znanosti još uvijek su nedostatne za ukupnu podlogu programskom inženjerstvu (za razliku od fizike u elektrici i elektronici).

Page 10: UVOD U PROGRAMSKO INŽENJERSTVO Ciljevi ove prezentacije:

10

4. KOJA JE RAZLIKA IZMEĐU PROGRAMSKOG INŽENJERSTVA I INŽENJERSTVA

RAČUNALNOG SUSTAVA?• Inženjerstvo računalnog sustava (engl. Computer system

engineering) bavi se svim aspektima sustava zasnovanim na računalima (sklopovlje, programska potpora, inženjerstvo procesa).

• Programsko inženjerstvo je dio inženjerstva sustava usredotočeno na razvoj programske infrastrukture, upravljanje i primjenu te rukovanjem podacima u sustavu.

• Inženjeri (računalnog) sustava su uključeni u specificiranju sustava, oblikovanju arhitekture, integraciji i postavljanju u korisničko okruženje.

Page 11: UVOD U PROGRAMSKO INŽENJERSTVO Ciljevi ove prezentacije:

11

5. ŠTO JE PROCES PROGRAMSKOG INŽENJERSTVA?

• To je skup aktivnosti čiji cilj je razvoj ili evolucija programskog produkta. Bitan je timski rad.

• Postoji više predloženih procesa programskog inženjerstva.

Generičke aktivnosti

(u svakom procesu programskog inženjerstva)

Specifikacija: Temeljem analize zahtjeva specificirati što sustav treba činiti i koja su

ograničenja u razvoju.

Razvoj i oblikovanje: Izbor arhitekture i proizvodnja programskog sustava.

Validacija i verifikacija: Provjera da li sustav ispravno čini samo ono što se od njega zahtijeva.

Evolucija: Rukovanje promjenama sukladno novim zahtjevima.

Page 12: UVOD U PROGRAMSKO INŽENJERSTVO Ciljevi ove prezentacije:

12

6. ŠTO JE MODEL PROCESA PROGRAMSKOG INŽENJERSTVA?

• To je pojednostavljeno predstavljanje procesa iz određene perspektive (pogleda na proces).

• Neki primjeri različitih perspektiva:

- Tijek podataka (protok informacija).

- Uloge i akcije (tko čini što – zadaci).

- Tijek posla (slijed aktivnosti – vremenski slijed).

- . . .

• Neki modeli procesa programskog inženjerstva:

Vodopadni, Komponentni, …

(Različiti modeli procesa programskog inženjerstva analizirat će se tijekom predavanja).

Page 13: UVOD U PROGRAMSKO INŽENJERSTVO Ciljevi ove prezentacije:

13

7. KAKVA JE STRUKTURA CIJENE (TROŠKA) U PROGRAMSKOM INŽENJERSTVU?

• Cijena programske potpore sadrži cijenu specifikacije, oblikovanja, ispitivanja i održavanja (evolucije).

• Cijena uvelike ovisi o tipu sustava, zahtjevima, performansama i pouzdanosti.

• Korist mora biti veća od troška.

• Potrebno je biti svjestan da postoji tržišno natjecanje u produkciji programske potpore (drugi mogu izgraditi brže i bolje).

• Za jedinstvene programske produkte trošak evolucije (promjene, prilagodbe i održavanja) je veći od troška razvoja i oblikovanja.

• Razdioba troška ovisi o modelu procesa programskog inženjerstva (vidi sljedeću sliku).

Page 14: UVOD U PROGRAMSKO INŽENJERSTVO Ciljevi ove prezentacije:

14

Waterfall model

Iterative development

Component-based software engineering

Development and evolution costs for long-lifetime systems

System evolution

10 200 30 4000

System development

Specification Design Development Integration and testing

25 50 75 1000

Specification Development Integration and testing

25 50 75 1000

Specification Iterative development System testing

25 50 75 1000

VODOPADNI

ITERATIVNI

KOMPONENTNI

DUGOVJEČNI

RAZDIOBA TROŠKA OVISNO O MODELU PROCESA PROG. INŽENJERSTVA

Page 15: UVOD U PROGRAMSKO INŽENJERSTVO Ciljevi ove prezentacije:

15

8. ŠTO SU METODE U PROGRAMSKOM INŽENJERSTVU?

• To su strukturni (organizirani) pristupi (načini povezivanja aktivnosti) u razvoju i oblikovanju programske potpore, što uključuje izbor modela sustava, notaciju (označavanje), pravila, preporuke i naputke.

• Metode uključuju:

• Opise modela programske potpore (najčešće grafički opisi).

• Pravila (ograničenja primijenjena na modele sustava).

• Preporuke (“dobra inženjerska praksa”).

• Naputke o procesu (koji slijed aktivnosti).

Page 16: UVOD U PROGRAMSKO INŽENJERSTVO Ciljevi ove prezentacije:

16

9. Što je CASE (engl. Computer-Aided Software Engineering)?

• CASE su programski produkti (veće ili manje složenosti) namijenjeni automatiziranoj podršci aktivnostima u procesu programskog inženjerstva.

• CASE produkti često podupiru određenu metodu razvoja programskog produkta.

• Viši CASE (engl. upper CASE) – podupiru rane aktivnosti (npr. analiza zahtjeva, oblikovanje modela, …).

• Niži CASE (engl. lower CASE) – podupiru kasnije aktivnosti (npr. programiranje – kodiranje, testiranje, …).

Page 17: UVOD U PROGRAMSKO INŽENJERSTVO Ciljevi ove prezentacije:

17

10. KOJE SU ZNAČAJKE DOBROG PROGRAMSKOG PRODUKTA?

• Programski produkt mora temeljno osigurati traženu funkcionalnost i performanse, ali također mora biti prihvatljiv korisniku, pouzdan i mora se moći održavati.

Značajke:

• Prihvatljivost – razumljiv, koristan i kompatibilan s ostalim korisnikovim sustavima.

• Pouzdanost – korisnik mora vjerovati u ispravnu funkcionalnost.

• Održavanje – naknadno ispravljanje pogrešaka, evolucija produkta sukladno izmijenjenim i proširenim zahtjevima.

Page 18: UVOD U PROGRAMSKO INŽENJERSTVO Ciljevi ove prezentacije:

18

10.1 Različiti pogledi na dobar programski produkt s aspekta različitih dionika (engl.

Stakeholders)• Kupac

Rješava problem uz prihvatljivu cijenu (novčanu i iz aspekta potrebnih resursa).

• Korisnik

Lagano učenje i prihvaćanje novog sustava, efikasnost u uporabi, zaista pomaže da se posao obavi.

• Osoba koja razvija i oblikuje

Jednostavno oblikovanje i održavanje, mogućnost ponovnog korištenja dijelova (engl. reuse).

• Rukovoditelj razvoja

Prodati što više i zadovoljiti kupce uz minimalan trošak razvoja i održavanja.

Page 19: UVOD U PROGRAMSKO INŽENJERSTVO Ciljevi ove prezentacije:

19

10.2 Proturječja u postizanju kakvoće programskog produkta

• Povećanje efikasnosti specijalizacijom čini sustav manje razumljivim i može smanjiti mogućnost održavanja ili ponovnog korištenja.

• Povećanje lakoće korištenja (npr. uključivanje uputa tijekom rada) može smanjiti efikasnost.

• Postavljanje razine kakvoće je ključna inženjerska aktivnost. Produkt se razvija kako bi zadovoljio tu razinu. Nužni su kompromisi i optimizacija ograničenih resursa (npr. postizanje pouzdanosti uz ograničen proračun).

• Dobra inženjerska praksa:“Avoid ‘over-engineering’ which wastes money.” – Izbjegavanje

suvišnog posla za ostvarivanje tražene funkcionalnosti.

Page 20: UVOD U PROGRAMSKO INŽENJERSTVO Ciljevi ove prezentacije:

20

11. KOJE SU OSNOVNE POTEŠKOĆE I IZAZOVI U PROGRAMSKOM INŽENJERSTVU?

• Heterogenost – postoje različite tehnike i metode razvoja programske potpore za različite platforme i okoline izvođenje.

• Vrijeme isporuke – kako osiguravati kratak interval od zamisli do stavljanja na tržište (engl. time-to-market), uz prihvatljivu kakvoću.

• Povjerenje – kako pokazati da korisnici mogu imati povjerenja u programski sustav (npr. možda uporabom matematičkih, tj. formalnih metoda).

• Postoji česta i iznenadna promjena zahtjeva kupaca.

• Programska potpora je složen sustav s velikim brojem detalja.

Page 21: UVOD U PROGRAMSKO INŽENJERSTVO Ciljevi ove prezentacije:

21

12. KOJE VRSTE PROJEKATA POSTOJE U PROGRAMSKOM INŽENJERSTVU?

• Većina projekata je evolucijska i vezana je uz održavanje starijih sustava (engl. legacy).

• Korektivni projekti (otklanjanje pogrešaka).

• Adaptivni projekti (izmjene temeljem promjene operacijskog sustava, baza podataka, pravila i zakonskih odredaba, …).

• Unapređujući, aditivni (dodavanje nove funkcionalnosti).

• Re-inženjerstvo (npr. unutarnje izmjene kako bi se olakšalo održavanje).

• Sasvim novi projekti (engl. green-field) – u manjini.

• Integrativni (oblikovanje novoga okruženja iz postojećih programskih komponenata i cjelina, engl. framework).

Page 22: UVOD U PROGRAMSKO INŽENJERSTVO Ciljevi ove prezentacije:

22

13. ŠTO JE TO PROFESIONALNA I ETIČKA ODGOVORNOST?

• Programski inženjer se mora ponašati profesionalno korektno i etički odgovorno! Etičko ponašanje je više od pukog pridržavanja zakona.

• Povjerljivost prema poslodavcu i kupcu.

• Kompetencije – prihvaćanje posla u okviru svojih kompetencija.

• Poštivanje prava intelektualnog vlasništva.

• Ne zloporabiti računalne sustave (npr. igranje za vrijeme rada (predavanja ?), širenje virusa, …)

• ACM/IEEE Code of Ethics (vidi Web stranice ACM/IEEE)

Page 23: UVOD U PROGRAMSKO INŽENJERSTVO Ciljevi ove prezentacije:

Sveučilište u Zagrebu, Fakultet elektrotehnike i računarstvaSveučilište u Zagrebu, Fakultet elektrotehnike i računarstva

IIEEE Code of EthicsEEE Code of Ethics

Mi, članovi udruge IEEE, prepoznavajući Mi, članovi udruge IEEE, prepoznavajući važnost tehnologijavažnost tehnologija i njihov utjecaj na kvalitetu života u i njihov utjecaj na kvalitetu života u cijelom svijetu, te prihvaćajući cijelom svijetu, te prihvaćajući osobnu obvezu prema vlastitom zanimanju, kolegama i zajednicama osobnu obvezu prema vlastitom zanimanju, kolegama i zajednicama kojima služimokojima služimo, ovime se obvezujemo na najviše etičko i prefesionalno ponašanje te smo odlučili:, ovime se obvezujemo na najviše etičko i prefesionalno ponašanje te smo odlučili:

prihvatiti odgovornosti u donošenju odluka koje su u suglasju sa sigurnošću, zdravljem i prihvatiti odgovornosti u donošenju odluka koje su u suglasju sa sigurnošću, zdravljem i općom dobrobiti i hitno otkriti čimbenike koji bi mogli ugroziti javnost ili okoliš;općom dobrobiti i hitno otkriti čimbenike koji bi mogli ugroziti javnost ili okoliš;

izbjegavati stvarne ili uočene sukobe interesa kada god je to moguće i otkriti ih izbjegavati stvarne ili uočene sukobe interesa kada god je to moguće i otkriti ih interesnim stranama ukoliko postoje;interesnim stranama ukoliko postoje;

biti pošteni i realni u iznošenju tvrdnji ili procjena temeljenih na dostupnim podacima;biti pošteni i realni u iznošenju tvrdnji ili procjena temeljenih na dostupnim podacima;

odbiti mito i sve njegove oblike;odbiti mito i sve njegove oblike;

unaprijediti razumijevanje tehnologije, njenih prikladnih primjena i potencijalnih unaprijediti razumijevanje tehnologije, njenih prikladnih primjena i potencijalnih posljedica;posljedica;

održavati i unaprjeđivati tehničku sposobnost i preuzeti tehnološke zadaće umjesto održavati i unaprjeđivati tehničku sposobnost i preuzeti tehnološke zadaće umjesto drugih samo zbog veće stručnosti i iskustva ili nakon potpunog iznošenja relevantnih drugih samo zbog veće stručnosti i iskustva ili nakon potpunog iznošenja relevantnih ograničenja;ograničenja;

tražiti, prihvatiti i nuditi objektivnu kritiku tehničkog, u svrhu prihvaćanja i ispravljanja tražiti, prihvatiti i nuditi objektivnu kritiku tehničkog, u svrhu prihvaćanja i ispravljanja pogrešaka te prikladno nagraditi tuđi doprinos;pogrešaka te prikladno nagraditi tuđi doprinos;

jednako se ophoditi prema svim osobama bez obzira na rasu, vjeru, spol, invaliditet, jednako se ophoditi prema svim osobama bez obzira na rasu, vjeru, spol, invaliditet, godine ili nacionalnost;godine ili nacionalnost;

izbjegavati ozljeđivanje drugi osoba, njihovog vlasništva, ugleda ili zaposlenja pogrešnim izbjegavati ozljeđivanje drugi osoba, njihovog vlasništva, ugleda ili zaposlenja pogrešnim ili zlobnim radnjama;ili zlobnim radnjama;

pomagati kolegama i suradnicima u njihovom profesionalnom razvoju i podržavati ih da pomagati kolegama i suradnicima u njihovom profesionalnom razvoju i podržavati ih da se pridržavaju ovog koda etičnosti.se pridržavaju ovog koda etičnosti.

Odobrio Upravni odbor IEEEOdobrio Upravni odbor IEEEVeljača 2006Veljača 2006