10
1 Humboldt University Berlin, University of Novi Sad, University of Plovdiv, University of Skopje, University of Belgrade, University of Niš, University of Kragujevac Version: Oct. 23, 2003 (D Sep. 22, 2003) DAAD Project “Joint Course on Software Engineering” Tema 1 Šta je softversko inženjerstvo? DAAD project „Joint Course on Software Engineering“ © 2 1. Šta je softversko inženjerstvo ? a) Oblasti softverskog inženjerstva (npr., šta mu pripada) b) Značaj softverskog inženjerstva u praksi – - problemi razvoja softvera c) O veličini softvera d) Istorija softverskog inženjerstva e) Nekoliko definicija softverskog inženjerstva f) Problem uvođenja softverskog inženjerstva u obrazovanje g) Razlike između razvoja softvera u obrazovnom okruženju i u praksi h) Ciljevi ovog kursa i) Literatura, članci, radovi, ... DAAD project „Joint Course on Software Engineering“ © 3 Predmet ... konstrukcija kompajlera baze podataka softversko inženjerstvo Prevođenje programskih jezika višeg nivoa u mašinske jezike upravljanje složenim i strukturiranim količinama podataka ? DAAD project „Joint Course on Software Engineering“ © 4 Oblast softverskog inženjerstva: Šta joj pripada ? „Programiranje je relativno mala komponenta oblasti softverskog inženjerstva. Neke druge komponente (uključujući na primer, specifikaciju softvera i projektovanje) su jednako važne.“ Upravljanje projektima Specifikacija softvera Korisnička dokumentacija Dizajniranje korisničkog interfejsa Dizajniranje softvera Programiranje Testiranje Hardverska razmatranja Softversko inženjerstvo Svet M. Pont: Softversko inženjerstvo korišćenjem C++ i CASE alata, Addison-Wesley 1996 DAAD project „Joint Course on Software Engineering“ © 5 Oblasti softverskog inženjerstva: iz udžbenika, istraživačkih radova, konferencija: (bez redosleda, delimično se preklapa) Modeli životnog ciklusa Softverski procesi (CMM, ISO 9000) Upravljanje konfiguracijom Procena truda Upravljanje projektima Upravljanje kvalitetom “Cleanroom” softversko inženjerstvo Reverzno inženjerstvo Shvatanje programa (razumevanje programa) Softverska metrika Softverska arhitektura Održavanje softvera Inženjerstvo zahteva Specifikacija softvera Ponovno korišćenje Verifikacija programa Dokumentovanje softvera SI “bazirano-na-znanju” Sistematsko testiranje Pravljenje prototipova CASE alati Programski jezici za SI Objektna-orijentisanost (analiza, dizajn, programiranje, testiranje) Ekstremno programiranje Programiranje u parovima DAAD project „Joint Course on Software Engineering“ © 6 Computer-Zeitung 25/96 (20. June 96) Razvoj softvera ostaje mešavina metoda Razvoj softvera kao nauka i kao praktična aktivnost imaju nešto zajedničko: heterogenost. Razvoj softvera ostaje mešavina metoda Razvoj softvera kao nauka i kao praktična aktivnost imaju nešto zajedničko: heterogenost.

Oblast softverskog inženjerstva: Šta joj pripada ?...Zadaci softverskih inženjera u svetlu ponuda za posao Menadžer projekta Kao menadžer projekta odgovorni ste za kreiranje složenih

  • Upload
    others

  • View
    33

  • Download
    0

Embed Size (px)

Citation preview

1

Humboldt University Berlin, University of Novi Sad, University of Plovdiv,University of Skopje, University of Belgrade, University of Niš, University of Kragujevac

Version: Oct. 23, 2003 (D Sep. 22, 2003)

DAAD Project“Joint Course on Software Engineering”

Tema 1Šta je softversko inženjerstvo?

DAAD project „Joint Course on Software Engineering“ © 2

1. Šta je softversko inženjerstvo ?

a) Oblasti softverskog inženjerstva (npr., šta mu pripada) b) Značaj softverskog inženjerstva u praksi –

- problemi razvoja softverac) O veličini softverad) Istorija softverskog inženjerstvae) Nekoliko definicija softverskog inženjerstvaf) Problem uvođenja softverskog inženjerstva u obrazovanjeg) Razlike između razvoja softvera u obrazovnom okruženju

i u praksih) Ciljevi ovog kursai) Literatura, članci, radovi, ...

DAAD project „Joint Course on Software Engineering“ © 3

Predmet ...

konstrukcija kompajlera

baze podataka

softversko inženjerstvo

Prevođenje programskih jezika višeg nivoa u mašinske jezike

upravljanje složenim i strukturiranimkoličinama podataka

?

DAAD project „Joint Course on Software Engineering“ © 4

Oblast softverskog inženjerstva:Šta joj pripada ?

„Programiranje je relativno mala komponenta oblasti softverskoginženjerstva. Neke druge komponente (uključujući na primer, specifikaciju softvera i projektovanje) su jednako važne.“

Upravljanjeprojektima

Specifikacijasoftvera

Korisničkadokumentacija

Dizajniranjekorisničkog

interfejsa

Dizajniranjesoftvera

Programiranje Testiranje

Hardverskarazmatranja

Softversko inženjerstvoSvet

M. Pont: Softversko inženjerstvo korišćenjem C++ i CASE alata, Addison-Wesley 1996

DAAD project „Joint Course on Software Engineering“ © 5

Oblasti softverskog inženjerstva:iz udžbenika, istraživačkih radova, konferencija:

(bez redosleda, delimično se preklapa)

Modeli životnog ciklusaSoftverski procesi(CMM, ISO 9000)Upravljanje konfiguracijomProcena trudaUpravljanje projektimaUpravljanje kvalitetom“Cleanroom” softverskoinženjerstvoReverzno inženjerstvoShvatanje programa(razumevanje programa)Softverska metrikaSoftverska arhitekturaOdržavanje softvera

Inženjerstvo zahtevaSpecifikacija softveraPonovno korišćenjeVerifikacija programaDokumentovanje softveraSI “bazirano-na-znanju”Sistematsko testiranjePravljenje prototipovaCASE alatiProgramski jezici za SIObjektna-orijentisanost (analiza, dizajn, programiranje, testiranje)Ekstremno programiranjeProgramiranje u parovima

DAAD project „Joint Course on Software Engineering“ © 6

Computer-Zeitung 25/96 (20. June 96)

Razvoj softveraostaje mešavina metodaRazvoj softvera kao nauka i kao praktičnaaktivnost imaju nešto zajedničko: heterogenost.

Razvoj softveraostaje mešavina metodaRazvoj softvera kao nauka i kao praktičnaaktivnost imaju nešto zajedničko: heterogenost.

2

DAAD project „Joint Course on Software Engineering“ © 7

Softversko inženjerstvouvodne definicije

„Softversko inženjerstvo ... bavi se ekonomičnimrazvojem softvera visokog kvaliteta“

(Pagel / Six 1994, p. 49)

„SE je inženjerska disciplina koja se bavi praktičnim problemima razvoja velikih softverskihsistema“

(Sommerville 1992, 4. ed., p. v)

DAAD project „Joint Course on Software Engineering“ © 8

1. What is Software Engineering ?

a) Oblasti softverskog inženjerstva (npr., šta mu pripada) b) Značaj softverskog inženjerstva u praksi –

- problemi razvoja softverac) O veličini softverad) Istorija softverskog inženjerstvae) Nekoliko definicija softverskog inženjerstvaf) Problem uvođenja softverskog inženjerstva u obrazovanjeg) Razlike između razvoja softvera u obrazovnom okruženju

i u praksih) Ciljevi ovog kursai) Literatura, članci, radovi, ...

DAAD project „Joint Course on Software Engineering“ © 9

Anketiranje mladihinformatičara koji rade u praksi, od strane Nemačkog informatičkog udruženja 1993

značaj podoblasti informatike(prvo najznačajnije podoblasti)

3.593.353.263.103.103.092.99 2.962.812.602.562.502.422.412.362.362.322.312.271.871.681.641.641.581.531.371.301.271.151.131.061.040.880.850.810.810.810.63

Timski radUpravljanje projektimaSoftversko inženjerstvoVođstvoBaze podataka RetorikaKomunikacioni sistemi / računarske mrežeOsiguravanje kvalitetaStrukture podataka i efikasni algoritmiOperativni sistemiErgonomija softveraUpravljanje poslovimaOsnove algoritama / složenostOsnove matematike i logikeDistribuirani sistemiNaučni radni metodiBezbednost podatakaInformacioni sistemiKoncepti programskih jezikaArhitektura računaraOsnove pravaSistemi upravljanjeAnaliza i procena računarskih sistemaGrafički i sistemi za vizualizacijuModeliranje i simulacijaFormalni jezici i automatiSistemi u realnom vremenuMultimedijaInformatika i društvoOsnove elektronikeProgramiranje mašinskog nivoaCIMEkspertni sistemiOsnove veštačke inteligencijeElectrična merenjaObrada slikaPrimena veštačke inteligencijePrepoznavanje oblika

rezultatPodoblasti informatike

DAAD project „Joint Course on Software Engineering“ © 10

Anketiranje iz 1993 (detaljnije)

3.593.353.263.103.103.092.99 2.962.812.602.562.502.422.412.362.362.322.312.271.87

Timski radUpravljanje projektimaSoftversko inženjerstvoVođstvoBaze podataka RetorikaKomunikacioni sistemi / računarskemrežeOsiguravanje kvalitetaStrukture podataka i efikasni algoritmiOperativni sistemiErgonomija softveraUpravljanje poslovimaOsnove algoritama / složenostOsnove matematike i logikeDistribuirani sistemiNaučni radni metodiBezbednost podatakaInformacioni sistemiKoncepti programskih jezikaArhitektura računara

scorePodoblasti informatike

Aktivnosti tokomrazvoja softvera

Podoblastisoftverskog inženjerstva

DAAD project „Joint Course on Software Engineering“ © 11

Süddeutsche Zeitung No. 120 /page V1/1

25.5.1996

Zadaci softverskih inženjera u svetlu ponuda za posao

Menadžer projekta

Kao menadžer projekta odgovorni ste za kreiranje složenih projektnih aplikacija za naše korisnike u industriji i zaupravljanje.

Glavni cilj je zadovoljan korisniku smislu ekonomično obavljenog projekta ...

Menadžer projekta

Kao menadžer projekta odgovorni ste za kreiranje složenih projektnih aplikacija za naše korisnike u industriji i zaupravljanje.

Glavni cilj je zadovoljan korisniku smislu ekonomično obavljenog projekta ...

DAAD project „Joint Course on Software Engineering“ © 12

računar Zeitung 16.10.97

Vaši zadaci:

• Analiza tehničkih zahteva• Projektovanje aplikacije• Programiranje• Testiranje i garancija kvaliteta• Instalacija u ciljnom okruženju

Vaši zadaci:

• Analiza tehničkih zahteva• Projektovanje aplikacije• Programiranje• Testiranje i garancija kvaliteta• Instalacija u ciljnom okruženju

Vaš profil:

• iskustvo u COBOL-u• znanje:

UNIX, Open VMS, OS/400• SQL i baze podataka, npr. Oracle• Komercijalno znanje

Vaš profil:

• iskustvo u COBOL-u• znanje:

UNIX, Open VMS, OS/400• SQL i baze podataka, npr. Oracle• Komercijalno znanje

3

DAAD project „Joint Course on Software Engineering“ © 13Süddeutsche Zeitung 15.12.96

Osoba zadužena za razvoj softveraVaši zadaci su:• Analiza zahteva datog sistema• Analiza izvodljivosti i procena truda• Tehničke specifikacije• Proširenje postojećih softverskih modula• Regresiono testiranje i postupci ažuriranja softvera

Osoba zadužena za razvoj softveraVaši zadaci su:• Analiza zahteva datog sistema• Analiza izvodljivosti i procena truda• Tehničke specifikacije• Proširenje postojećih softverskih modula• Regresiono testiranje i postupci ažuriranja softvera

DAAD project „Joint Course on Software Engineering“ © 14

Softver

Softver =

osobine softvera:• nema otpadaka tokom rada softvera• starenje (softver se stalno ažurira)

posle 10 godina upotrebe i ažuriranja, ne postoji ni jedna originalna linija koda (Pagel, Six p. 35)

• dugotrajna upotrebau proseku 10 - 15 godina (Wallmüller 90, p. 3)i do 30 godina (Hausi Müller)

• jednostavan za kopiranje ( takođe i grešaka)

• težak za merenje (metrike: kvalitet, kvantitet)

• relativno složen

programi, podaci, dokumentacija

DAAD project „Joint Course on Software Engineering“ © 15

Složenost softvera

Prepoznatljive karakteristike softvera industrijske snage je da je izuzetno složeno, ako ne i nemoguće, za pojedinca da shvati sve veze u njegovom projektovanju. Prosto rečeno, složenostovakvih sistema prevazilazi intelektialni kapacitet čoveka.(Booch, Objektno-orijentisana analiza i projektovanje, s. 4)

DAAD project „Joint Course on Software Engineering“ © 16

Povećana složenost softvera

MDI: milioni instrukcija objektnog kôdaEWSD: elektronski telefonski sistem Digital-a

1960 1970 1980 1990 200060 MOI

50 MOI

40 MOI

30 MOI

20 MOI

10 MOI

EWSD zaBB-ISDN

SPACEŠATL

APOLOEWSD-APSWM4.2

KONTROLA MISIJE NA MESEC

GEMINI

MERCURY

EWSD-APSDBP-14

7% godišnjiprirastproduktivnosti

DAAD project „Joint Course on Software Engineering“ © 17

Ali: „Softverska rešenja traževisoku preciznost“ (Denert, s. 4)

Softver je …

• sklon greškama• ponaša se drugačije od očekivanog

• završen prekasno• skuplji nego što je planirano

• neprimenljiv

veoma često: propast projekta

DAAD project „Joint Course on Software Engineering“ © 18

Primeri softverskih problema

Aerodrom u Denveru: nije mogao biti pušten u rad (nije otvoren) 1994 – softver za sistem za transport prtljaga nije radioSiemens: računovodstveni softver za lekove razvijen za fondove zdravstvenog osiguranja nije bio gotov na vreme (sledstveni troškoviod 1 milijarde DEM - Berliner Zeitung 22.05.96)Deutsche Telekom: pogrešan proračun cene telefonskih impulsa za 1.1.96 (softverska greška: bez praznične tarife – šteta: stotine milionaDEM)F18 ratni avion: tokom vežbe 1983 sa novorazvijenim softverom –nakon prelaska ekvatora, avion se okrenuo naglavačke. Razlog je bila greška u znaku operacije (+ - ) (Wallmüller 1990, s. 1).

4

DAAD project „Joint Course on Software Engineering“ © 19

Primeri softverskih problema - nastavak

Prva svemirska raketa za Veneru: 1979 nije pronašla metu:U Fortran programu, upotrebljena je decimalna tačka, umesto zareza.Gubitak: više stotina miliona dolara (Wallmüller 1990, s. 1).Therac 25 – računarski kontrolisani uredjaj za terapijsku radijaciju: izmedju juna 1985. i januara 1987. 6 ljudi je predozirano (5 od njih je kasnije umrlo) kao posledica nedostajuće softverske sigurnosne brave koja bi trebala da spreči predoziranje (Berry, D.M., “Myths and realities of software development”).

DAAD project „Joint Course on Software Engineering“ © 20

Pitanja: statistika koja se tiče razvoja softvera (1): (Mynatt: Softversko inženjerstvo, s. 1)

1. Razvoj tipičnog softverskog projekta trajea) 1 - 5 b) 6 - 11 c) 12 - 23 d) 24 - 48 meSIci.

2. Za softverski sistem srednje veličine,a) manje od 10 b) 10 - 20 c) 21 - 30 d) više od 30linija izvršnog izvornog koda se tipično proizvede po danu, po osobi tokom celokupnog perioda razvoja sistema.

3. Približan broj grešaka koje se pronađu na svakih 1000 linija izvršnog izvornog koda tokom razvoja softverskog sistema je:a) manje od 30 b) 30 - 40 c) 40 - 50 d) 50 - 60

4. Približan broj grešaka koje se pronađu na svakih 1000 linija izvršnog izvornog koda u isporučenim softverskim sistemima je:a) manje od 4 b) 4 - 8 c) 8 - 12 d) više od 12

5. Koliki je približan procenat softverskih sistema čiji razvoj je započet, koji se konačno i dovrše?a) 90 - 100% b) 80 - 90% c) 70 - 80% d) 60 - 70%

DAAD project „Joint Course on Software Engineering“ © 21

Pitanja: statistika koja se tiče razvoja softvera (2): (Mynatt: Softversko inženjerstvo, s. 1)

6. Cena posedovanja i održavanja softvera je tipičnoia) jedna polovina b) jednaka c) dvostrukacena od cene razvoja softvera.

7. Najveći broj grešaka koje pronađu korisnici u softveru su rezultata) greške programerab) problema u definisanju zahteva ili razumevanju definisanih zahtevac) štamparske grešked) greške u projektovanju

8. Koji procenat procesa razvoja softvera čini programiranje ? a) 99% b) 70% c) 50% d) 20% e) 10%

9. U današnjim softverskim sistemima, sistem se tretira kao velik ako sadrži barem a) 10.000 b) 30.000 c) 50.000 d) 100.000 linija izvršnog izvornog koda.

Mynatt, 1990

DAAD project „Joint Course on Software Engineering“ © 22

Pitanje: srazmera grešaka

Srazmera grešaka= broj grešaka u 1000 linija koda

Zbog rastuće složenosti softvera, srazmera grešaka se od 1977 do 1994 razvijala na sledeći način:a) porasla 10 putab) porasla 2 putac) ostala neizmenjena

DAAD project „Joint Course on Software Engineering“ © 23

Značaj softverske industrije

3000

2500

2000

1500

1000

500

za ceo svet, u milijardama US$

800 8001100

13201620

2850 2900

vojska &

odbrana

mašinska

industraija

autoindustrija

hemijska

industrija

tekstilna

industrija

informatika

Izvor: G.Koch, Evropska IT Konferencija (EITC), Brüssel, Jun 1994

turizam

DAAD project „Joint Course on Software Engineering“ © 24

1. Šta je softversko inženjerstvo ?

a) Oblasti softverskog inženjerstva (npr., šta mu pripada) b) Značaj softverskog inženjerstva u praksi –

- problemi razvoja softverac) O veličini softverad) Istorija softverskog inženjerstvae) Nekoliko definicija softverskog inženjerstvaf) Problem uvođenja softverskog inženjerstva u obrazovanjeg) Razlike između razvoja softvera u obrazovnom okruženju

i u praksih) Ciljevi ovog kursai) Literatura, članci, radovi, ...

5

DAAD project „Joint Course on Software Engineering“ © 25

Koliko je velik softver ?Klasifikacija softvera u zavisnosti od njegove veličine:mali: do 2000 linija kodasrednji: 2000 – 100.000veliki: 100 000 – 1.000.000veoma veliki: > 1 Mil.(A. Macro, s. 70)

prosečna veličina softvera u svakoj od 100 najvećih kompanija u SAD:35 Mil. linija koda(Hausi Müller, s. 3-12)

recimo, SAD, Ministarstvo odbrane:1,4 milijarda linija koda(raspoređeni u 1.700 centara podataka)troškovi rukovanja ovim sistemima:9 milijardi dolara godišnje(CACM, 5, 1994, s. 26)

DAAD project „Joint Course on Software Engineering“ © 26

1. Šta je softversko inženjerstvo ?

a) Oblasti softverskog inženjerstva (npr., šta mu pripada) b) Značaj softverskog inženjerstva u praksi –

- problemi razvoja softverac) O veličini softverad) Istorija softverskog inženjerstvae) Nekoliko definicija softverskog inženjerstvaf) Problem uvođenja softverskog inženjerstva u obrazovanjeg) Razlike između razvoja softvera u obrazovnom okruženju

i u praksih) Ciljevi ovog kursai) Literatura, članci, radovi, ...

DAAD project „Joint Course on Software Engineering“ © 27

Istorijasoftverska kriza:pojam od sredine 60-ihsredinom 60-ihcene softvera postaju veće nego cene hardvera (slika)

NATO konferencije 1968, 69:definicija pojma softverskog inženjerstva

velike prednostiali: i danas imamo kriza softveracene softvera (širom sveta)1985: 140 milijardi dolara1995: 435(poređenje: budžet Nemačke 1992: 430 milijardi DEM)(Balzert, Yourdon)

DAAD project „Joint Course on Software Engineering“ © 28

Troškovi hardvera i softvera100

80

60

40

20

1955 1960 1969 1976 1985

Hardver

Softver

DAAD project „Joint Course on Software Engineering“ © 29

1. Šta je softversko inženjerstvo ?

a) Oblasti softverskog inženjerstva (npr., šta mu pripada) b) Značaj softverskog inženjerstva u praksi –

- problemi razvoja softverac) O veličini softverad) Istorija softverskog inženjerstvae) Nekoliko definicija softverskog inženjerstvaf) Problem uvođenja softverskog inženjerstva u obrazovanjeg) Razlike između razvoja softvera u obrazovnom okruženju

i u praksih) Ciljevi ovog kursai) Literatura, članci, radovi, ...

DAAD project „Joint Course on Software Engineering“ © 30

Definicije softverskog inženjerstva

1. „Softversko inženjerstvo ... bavi se ekonomskimrazvojem softvera visokog kvaliteta “ (Pagel / Six 1994, strana 49)

2. „SI je inženjerska disciplina koja se bavi praktičnim problemima razvoja velikih softverskih sistema“(Sommerville 92, p. v).

3. „SI je primena sistematskih, disciplinovanih, merljivih pristupa razvoju, rukovanju i održavanju softvera; drugim rečima, primeni inženjerstva na softver“ (IEEE standardnirečnik terminologije softverskog inženjerstva, 1990).

4. „Softversko inženjerstvo je definisani, korak-po-korakproces, koji olakšava specificiranje, projektovanje, implementaciju i testiranje softvera za skup iznetih zahteva, na najbrži i najprofitabilniji mogući način“(Kehoe: ISO 9000-3, 1995, S. 11).

6

DAAD project „Joint Course on Software Engineering“ © 31

Softversko inženjerstvo nije posebno polje informatike

Šta nije

konstrukcija kompajlera

računarske komunikacije

baza podataka

veštačka inteligencija

.

.

.

softversko inženjerstvo

Ludewig, SEUH 97, p. 11 f.

softversko-inženjerstvo

konstrukcija kompajlera

računars

ke ko

munikacij

e

baza

poda

taka

vešt

ačka

inte

ligen

cija

..

.

Šta zaista jeste

DAAD project „Joint Course on Software Engineering“ © 32

1. Šta je softversko inženjerstvo ?

a) Oblasti softverskog inženjerstva (npr., šta mu pripada) b) Značaj softverskog inženjerstva u praksi –

- problemi razvoja softverac) O veličini softverad) Istorija softverskog inženjerstvae) Nekoliko definicija softverskog inženjerstvaf) Problem uvođenja softverskog inženjerstva u obrazovanjeg) Razlike između razvoja softvera u obrazovnom okruženju

i u praksih) Ciljevi ovog kursai) Literatura, članci, radovi, ...

DAAD project „Joint Course on Software Engineering“ © 33

Studentski razvoj softvera

„Uobičajeni“ studentski pogled na životni vek softvera

Modesitt, LNCS 750, p 42

Čitanjezadatka

(dan 1)

Kodi-ranje

(dan 1 ... n - 2)

Traženjegrešaka(dan n - 1)

Dokumen-tovanje(dan n - ε)

Preda-vanje(dan n)

DAAD project „Joint Course on Software Engineering“ © 34

Distribucija aktivnosti projektau funkciji veličine projekta

0%10%20%30%40%50%60%70%80%90%

100%

1024

051

2025

6012

80 640

320

160 80 40 20 10

veličina projekta (funkcijski bodovi)

kodiranje

otklanjanje grešaka

administriranje

upravljanje i podrška

Yourdon, 1993, p. 151

DAAD project „Joint Course on Software Engineering“ © 35

1. Šta je softversko inženjerstvo ?

a) Oblasti softverskog inženjerstva (npr., šta mu pripada) b) Značaj softverskog inženjerstva u praksi –

- problemi razvoja softverac) O veličini softverad) Istorija softverskog inženjerstvae) Nekoliko definicija softverskog inženjerstvaf) Problem uvođenja softverskog inženjerstva u obrazovanjeg) Razlike između razvoja softvera u obrazovnom okruženju

i u praksih) Ciljevi ovog kursai) Literatura, članci, radovi, ...

DAAD project „Joint Course on Software Engineering“ © 36

Razvoj softvera u praksipravi kupacpre programiranja: pregovori sa kupcem u cilju raščišćavanja zahtevačeste promene želja kupacanesporazumisloženi zadaci – složen program softver podložan greškamastrogi rokovitimski radvelika količina dokumenata:videti sledeći slajdprogramiranje čini samo 20 % svih aktivnosti projektadugogodišnje korišćenje (10 ... 25 godina) izmene softvera nakon isporuke(nove želje, novi hardver ...)

7

DAAD project „Joint Course on Software Engineering“ © 37

Softverski dokumenti(Sommerville, Softversko inženjerstvo, 5-to izd., s. 17)

Završni sistem i dokumentacijaPrijemni testIzveštaj o testiranju sistemaTestiranje sistema

Izveštaj o testiranju integracijeKonačno uputstvo za upotrebu

Integraciono testiranjeIzveštaj o testiranju modulaTestiranje modulaIzveštaj o testiranju elemenataTestiranje elemenata Programski kodKodiranje

Specifikacija dizajnaPlan testiranja elemenata

Detaljni dizajn

Specifikacija interfejsaPlan integracionog testiranja

Dizajn interfejsa

Specifikacija arhitekturePlan prijemnog testiranja

Dizajn arhitekture

Funkcionalna specifikacijaPlan prijemnog testiranjaSkica uputstva za upotrebu

Specifikacija zahtevaDokumenat zahtevaDefinisanje zahteva

Studija izvodljivostiSkica zahteva

Analiza zahtevaIzlazni dokumentiActivnost

DAAD project „Joint Course on Software Engineering“ © 38

Softverski dokumenti(IEEE standardi)

Plan valjanosti i verifikacije softvera (SVVP) Plan garancije kvaliteta (SQAP) Plan upravljanja softverskom konfiguracijom (SCMP) Plan upravljanja softverskim projektom (SPMP)

Specifikacija softverskih zahteva (SRS) (orijentisanih kupcu i orijentisanih osobi za razvoj) Dokument softverskog dizajna (SDD) (arhitektura i detaljni dizajn) Izvorni kodDokumentacija softverskog testiranja (STD) Uputstvo za upotrebu

DAAD project „Joint Course on Software Engineering“ © 39

1. Šta je softversko inženjerstvo ?

a) Oblasti softverskog inženjerstva (npr., šta mu pripada) b) Značaj softverskog inženjerstva u praksi –

- problemi razvoja softverac) O veličini softverad) Istorija softverskog inženjerstvae) Nekoliko definicija softverskog inženjerstvaf) Problem uvođenja softverskog inženjerstva u obrazovanjeg) Razlike između razvoja softvera u obrazovnom okruženju

i u praksih) Ciljevi ovog kursai) Literatura, članci, radovi, ...

DAAD project „Joint Course on Software Engineering“ © 40

Ciljevi ovog kursa(... i šta ne nudimo)

1. Uvod u SI2. Opšti pregled SI

pojmovi, metode, alati3. Međuodnosi između pod-oblasti (pomoć pri orijentisanju) 4. Ilustrativni primeri: kontinualni studijski primer5. Ulazak u dubinu: zadaci6. Svest o problemima SI7. Trenutni problemi SI

(metrike, reverzno inženjerstvo, CMM, SI “čiste sobe”, ekstremno programiranje ...)

8. Iskustvo sa softverskim-alatima

Ne nudimo: velike projekte, bez kupaca,bez pregovaranja, bez promena želja, bez strogih rokova ...

DAAD project „Joint Course on Software Engineering“ © 41

Softversko inženjerstvo u posebnim kursevima

Deo I: Uvod u SIDeo II: Inženjerstvo zahteva11. Osnovni koncepti pogleda

orijentisanog ka stanju12. Osnovni koncepti pogleda

orijentisanog ka scenariu13. Objektno-orijentisana analiza14. Formalna specifikacija i verifikacija

programaDeo III: Dizajn17. Objektno-orijentisani dizajnDeo IV: Implementacija i testiranje19. Sistematično testiranjeDeo VI: Napredni problemi21. Softverska metrika23. Reverzno inženjerstvo24. Kvalitet procesa razvoja softvera i

njegova standardizacija24. Ergonomija softvera25. Upravljanje projektima

Inženjerstvo zahteva (SEI, Pittsburgh, USA)Petri mreže (Reisig, HU)

Formalni metodi u razvoju softvera (SEI, Pittsburgh, USA)

Objektno-orijentisani razvojsoftvera (sa UML) (Fischer, HU)

Arhitektura softvera (SEI)Metodi testiranja softvera(Spillner, Bremen)CAME-alati (Dumke, Magdeburg)Softversko reinženjerstvo (Koschke, Stuttgart)PSP (SEI)CMM (SEI)

Ergonomija softvera (Wandtke, Inst. of psychology, HU)Upravljanje projektima (SEI, Pittsburgh, USAč DMI, Novi Sad, SCG)

DAAD project „Joint Course on Software Engineering“ © 42

1. Šta je softversko inženjerstvo ?

a) Oblasti softverskog inženjerstva (npr., šta mu pripada) b) Značaj softverskog inženjerstva u praksi –

- problemi razvoja softverac) O veličini softverad) Istorija softverskog inženjerstvae) Nekoliko definicija softverskog inženjerstvaf) Problem uvođenja softverskog inženjerstva u obrazovanjeg) Razlike između razvoja softvera u obrazovnom okruženju

i u praksih) Ciljevi ovog kursai) Literatura, članci, radovi, ...

8

DAAD project „Joint Course on Software Engineering“ © 43

Literatura (1)Udžbenici: • I. Sommerville: Software Engineering (742 strana),

6. ed. Addison-Wesley, 2001• H. Balzert: Lehrbuch der Software-Technik,

Spektrum-Verlag, Vol. 1: 1996, Vol. 2: 1998 (769 strana),Vol. 1 (2nd ed.): 2001 (1136 strana)

• B.-U. Pagel, H.-W. Six: Software Engineering.Addison-Wesley (895 strana), 1994 (na nemačkom)

• E. Braude: Software Engineering, An Object-Oriented Perspective, Wiley & Sons, 2001

• R. Pressman: Software Engineering, A Practitioner‘s Approach, European Adaptation (840 strana), McGraw-Hill, 5th ed., 2000

• J. Marciniak: Encyclopedia of Software Engineering, Vol. 1, 2 (1453 strana), Wiley & Sons, 1994

• IEEE Standards Collection, Software Engineering, 1994 Edition

DAAD project „Joint Course on Software Engineering“ © 44

Delovi prezentacija koriste materijal iz udžbenika Helmut Balzert, Software Technik (Vol. 1), 2nd edition, Spektrum AkademischerVerlag, Heidelberg 2001.

Ovo se posebno odnosi na lekcije od 4 do 13 i od 15 do 18.

DAAD project „Joint Course on Software Engineering“ © 45

Literatura (2)

Časopisi:• IEEE Transactions on Software Engineering• IEEE Software• ACM Software Engineering Notes• ACM Transactions on Software Engineering and Methodology

Konferencije: • International Conference on Software Engineering• Conference on Software Engineering Education• Software Metrics Symposium • i mnoge druge.

DAAD project „Joint Course on Software Engineering“ © 46

najznačajnijameđunarodnakonferencija

DAAD project „Joint Course on Software Engineering“ © 47

DAAD project „Joint Course on Software Engineering“ © 48

9

DAAD project „Joint Course on Software Engineering“ © 49

DAAD project „Joint Course on Software Engineering“ © 50

DAAD project „Joint Course on Software Engineering“ © 51

DAAD project „Joint Course on Software Engineering“ © 52

SEI: Institut za softversko inženjerstvo(Osnovna stranica: http://www.sei.cmu.edu)

O Institutu za softversko inženjerstvo - Dobrodošlica

Institut za softversko inženjerstvo (SEI) je istraživački i razvojni centar koji finansira država i to Departman za odbranu USA kroz službe podsekretara za odbranu zaduženog za nabavke, tehnologiju i logistiku [OUSD (AT&L)]. Ugovor o radu SEI je konkursom dodeljen Carnegie Mellon Univerzitetu u Decembru 1984. Zaposleni u SEI imaju ogromno tehničko i upravljačko iskustvo iz vlade, industrije i akademije.

Zadatak

Departman za odbranu USA osnovao je Institut za softversko inženjerstvo u cilju unapređivanja prakse softverskog inženjerstva, jer je obezbeđivanje kvalitetnog softvera koji se proizvodi u zadatim rokovima i u skladu sa budžetom kritična komponenta odbrambenog sistema USA [...]

DAAD project „Joint Course on Software Engineering“ © 53

SEI: Institut za softversko inženjerstvoDetalj: Upravljačke prakse

DAAD project „Joint Course on Software Engineering“ © 54

ESI: Evropski softverski institut(Osnovna stranica: http://www.esi.es)

10

DAAD project „Joint Course on Software Engineering“ © 55

‘Joint MSc studies in SE’, perun.im.ns.ac.yu/msc-se/