razvoj_softvera_i_softversko_inzenjerstvo

34
Prof. dr Dragan Stojanović Uvod u računarstvo Računarstvo i informatika 2010 UVOD U RAČUNARSTVO - Razvoj softvera i softversko inženjerstvo - Katedra za računarstvo, Elektronski fakultet Univerzitet u Nišu

Upload: nmenja-tonic

Post on 11-Mar-2016

219 views

Category:

Documents


1 download

DESCRIPTION

UVOD U RAČUNARSTVO Katedra za računarstvo, ElektronskifakultetUniverzitetu Nišu Uvodu računarstvo Računarstvo i informatika 2010 Prof. dr Dragan Stojanović Razvojsoftvera i softversko inženjerstvo Uvod u računarstvo 2 Prof. dr Dragan Stojanović

TRANSCRIPT

Page 1: Razvoj_softvera_i_softversko_inzenjerstvo

Prof. dr Dragan Stojanović

Uvod u računarstvo

Računarstvo i informatika 2010

UVOD U RAČUNARSTVO

- Razvoj softvera i softversko inženjerstvo -

Katedra za računarstvo,

Elektronski fakultet Univerzitet u Nišu

Page 2: Razvoj_softvera_i_softversko_inzenjerstvo

Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo

Uvod u računarstvo 2

Aloritmi i programiranje

Algoritam je konačan, uređen skup, nedvosmislenih izvršnih koraka za rešavanje određenog problema u konačnom vremenskom periodu sa konačnom količinom podatakaAlgoritam se opisuje tekstualnim i grafičkim simbolima u obliku dijagrama toka ili blok šemeProgramski jezici definišu skup instrukcija, njihovu sintaksu (format instrukcije i pravila za kombinovanje instrukcija i veće celine) i semantiku instrukcija (značenje instrukcije i akciju u programu koju izvršava)Program predstavlja sekvencu instrukcija napisanih u nekom programskom jeziku koje se mogu prevesti u instrukcije koje računar može direktno izvršiti (mašinske instrukcije)

Page 3: Razvoj_softvera_i_softversko_inzenjerstvo

Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo

Uvod u računarstvo 3

Programski jezici

Generacije programskih jezikaMašinski jezikAsemblerski (simbolički) jezik i makrasemblerski jeziciProceduralni programski jezici (jezici visokog nivoa, 3. generacije): Pascal, C, C++, Java, Basic, C# Neproceduralni programski jezici (deklarativni programski jezici, jezici vrlo visokog nivoa, 4. generacije): Prolog, SQL (upitni jezik baze podataka), generatori programa, jezici za specifikacije, itd.Jezici veštačke inteligencije i prirodni programski jezici

Page 4: Razvoj_softvera_i_softversko_inzenjerstvo

Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo

Uvod u računarstvo 4

Mašinski jezikMašinski jezik predstavlja skup mašinskih naredbi kojima se specificiraju elementarne operacije koje računar direktno prepoznaje i izvršava. Ove elementarne operacije su zadate u binarnom obliku i nazivaju se mašinske instrukcije i svaki procesor ima svoj skup ugrađenih mašinskih instrukcija koje direktno izvršava, dakle ove instrukcije su ugrađene u sam hardver računaraU početku jedini način za pisanje programa je bio korišćenjem mašinskog jezika, što je bio vrlo složen proces podložan greškama.Broj i vrsta mašinskih instrukcija ugrađenih u jedan računar zavisi od tipa i karakteristika procesora:

RISC i CISC tipovi procesora u zavisnosti od broja i kompleksnosti mašinskih instrukcija koje realizuju

Page 5: Razvoj_softvera_i_softversko_inzenjerstvo

Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo

Uvod u računarstvo 5

Mašinske instrukcijeKategorije mašinskih instrukcija

Instrukcije za prenos podatakaAritmetičko-logičke instrukcijeInstrukcije za upravljanje tokom izvršenja programa (grananje, uslovne ili bezuslovne skokove, pozive potprograma, itd.)Ulazno-izlazne instrukcijeOstale instrukcije

Format mašinske instrukcijeKod operacije – binarni kod koji specificira datu operacijuSpecifikator adresnog moda – specificira način interpretacije operanda instrukcije Specifikator registra – definiše da li i koji registar procesora ušestvuje u operacijiOperand – specificira adresu operanda koja se tumači u zavisnosti od specifikatora adresnog moda

Page 6: Razvoj_softvera_i_softversko_inzenjerstvo

Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo

Uvod u računarstvo 6

Asemblerski jezik

Programski jezik koji koristi simboličke oznake (mnemoničkekodove) za predstavljanje instrukcija mašinskog jezikaProgramer koristi ove alfanumeričke kodove umesto binarnih cifara, 0 i 1.Svakoj naredbi asemblerskog jezika odgovara jedna mašinska instrukcijaViše naredbi asemblerskog jezika koje čine neku funkcionalnu celinu može biti grupisano u jednu makro naredbu i time je formiran makroasemblerski jezik

Page 7: Razvoj_softvera_i_softversko_inzenjerstvo

Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo

Uvod u računarstvo 7

Programski prevodioci

Prevode program napisan u višem programskoj jeziku u naredbe napisane u mašinskom jeziku (mašinske naredbe), koje procesor može direktno izvršavatiVrste programskih prevodioca

Asembleri i makroasemlberi – prevode program sa asemblerskog (makroasemblerskog) jezika, pri čemu se simbolička imena i oznake zamenjuju binarnim kodovimaKompilatori (kompajleri) – prevode program sa višeg programskog jezika u mašinski kodInterpretatori – prevode svaku naredbu programa i odmah je izvršavaju (interpretiraju)

Page 8: Razvoj_softvera_i_softversko_inzenjerstvo

Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo

Uvod u računarstvo 8

Razvoj i izvršenje programaProgramski prevodilac (compiler) prevodi program napisan u nekom programskom jeziku (izvorni program, kod) u program napisan u mašinskom jeziku koji se naziva objektni program (kod)Povezivač (linker) je sistemski program integriše objektne kodove programskih modula i modula sistemskih biblioteka i formira izvršni program (kod) koji je u obliku datoteke (.exe) na diskuSistemski program punioc (loader) prenosi izvršni program sa diska u glavnu memoriju prilikom startovanja izvršenja programa (npr. dvostrukim klikom miša na ikonu programa) aktivira se proces i započinje izvršavanje mašinskih instrukcija programa

Page 9: Razvoj_softvera_i_softversko_inzenjerstvo

Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo

Uvod u računarstvo 9

Razvoj programa

Editor teksta

Kompilator

Povezivač

Sistemska biblioteka

Izvorniprogram

Objektni program

Izvršni program

Page 10: Razvoj_softvera_i_softversko_inzenjerstvo

Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo

Uvod u računarstvo 10

Programski jezici

Imperativni ili proceduralni programski jeziciFORTRAN, COBOL, Basic, C, Pascal, Ada

Objektno-oriejentisani programski jezici (uključuju i karakteristike proceduralnih)

SIMULA, Smalltalk, C++, Java, C#

Deklarativni (logički) programski jeziciProlog

Funkcionalni programski jeziciLISP, Scheme (verzija LISP), ML

Page 11: Razvoj_softvera_i_softversko_inzenjerstvo

Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo

Uvod u računarstvo 11

Tipovi podatakaTip podataka definiše skup vrednosti koje podaci tog tipa mogu da imaju, način njihove memorijske reprezentacije, kao i operacije koje se mogu izvršavati nad podacima tog tipaOsnovni tipovi podataka

Celi brojevi (Integer, Long Integer). Programski jezici definišu nekoliko verzija celih brojeva različite veličine i opsega vrednosti u zavisnosti od broja bajtova koji se koriste za njihovu reprezentaciju. Operacije nad celim brojevima su standardne aritmetičke i relacione operacije.Realni brojevi jednostruke i dvostruke tačnosti (Real, Double). Operacije nad realnim brojevima su standardne aritmetičke i relacione operacije.Znakovi (Character) – predstavljeni ASCII kodom ili UNICODE (1 ili 2 bajta) Aritmetičke i logičke operacije nad znakovima odnose se na njihove kodove.Bool-ove vrednosti. Podaci ovog tipa imaju dve vrednosti: tačno i netačno (true, false). Logičke operacije nad ovim podacima (AND, OR, NOT, XOR, …)Nizovi znakova (String) – Sekvenca znakova koja se tretira kao jedinstven podatak, npr. “Ovo je string”. Operacije nad nizovima znakova su konkatenacija (spajanje) i relacione operacije u odnosu na leksikografsko uređenje

Promenljiva je lokacija u memoriji na koju se referencira identifikatorom (simboličkim imenom) i koja sadrži podatke određenog tipa

Page 12: Razvoj_softvera_i_softversko_inzenjerstvo

Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo

Uvod u računarstvo 12

Upravljačke struktureUpravljačka struktura je instrukcija programa koja određuje redosled izvršavanja ostalih instrukcija programaUpravljačke strukture su: sekvenca, selekcija, petlja i poziv potprogama

Sekvenca predstavlja izvršenje instrukcija programa u sekvenci, jedne za drugom, dok se ne naiđe na instrukciju kojom se menja ovaj redosledSelekcija na osnovu ispunjenosti ili neispunujenosti određenog uslova određuje koje će instrukcije sledeće biti izvršavanePetlja ponavlja izvršenje određenog skupa instrukcija dok je (ne bude) zadovoljen određeni uslov. I selekcija i petlja uslov specificiraju logičkim (Bool-ovim) izrazomPoziv potprograma – započinje se sa izvršavanjem posebno izdvojene grupe instrukcija koje čine potprogram

Strukturno programiranje je metodologija programiranja u kojoj svaka logička jedinica programa treba da ima jedan ulaz i jedan izlaz

Page 13: Razvoj_softvera_i_softversko_inzenjerstvo

Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo

Uvod u računarstvo 13

Bool-ov izraz

Bool-ov izraz predstavlja sekvencu konstanti, promenljivih ili izraza povezanih odgovarajućim operatorima čija je vrednost tačno ili netačnoBool-ov izraz može biti

Bool-ova konstanta (true, false) ili promenljiva

Dva ili više aritmetička ili znakovna izraza povezana relacionim operatorima (<, >, ≤≤≤≤, =, !=,…)

Dva ili više Bool-ova izraza povezana logičkim operatorima (AND, OR, NOT, XOR, EQV, …)

Page 14: Razvoj_softvera_i_softversko_inzenjerstvo

Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo

Uvod u računarstvo 14

DeklaracijaInstrukcija programa kojom se pridružuje identifikator nekoj promenljivoj, funkciji ili nekom drugom elementu programskog jezika, tako da se programer može referencirati na taj element putem tog identifikatora (imena)Za imena elemenata ne mogu se koristiti rezervisane (ključne) reči programskog jezikaU zavisnosti od programskog jezika ista imena napisana različitim slovima (velikim ili malim) predstavljaju različita imenaPrimer deklaracija promenljivih u C++/Java

int num;float sum = 0.0;char per;

Page 15: Razvoj_softvera_i_softversko_inzenjerstvo

Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo

Uvod u računarstvo 15

Naredba dodele i naredbe ulaza/izlazaNaredba dodele je naredba kojom se promenljivoj sa leve strane znaka jednakosti dodeljuje vrednost izraza navedenog sa desne strane znaka jednakosti u oblikupromenljiva = izraz

Primer: xp = asd * (t - 12.45) / 9.25;

Naredbe ulaza/izlaza se po strukturi i sintaksi veoma razlikuju u programskim jezicima visokog nivoaUlazne naredbe tretiraju ulazne podatke kao niz znakova podeljen u linije, a samom naredbom se definiše kako se tumače vrednosti definisane ovim znakovima (kao celi brojevi, realni brojevi, stringovi, itd.)Izlazne naredbe vrednosti promenljivih u odgovarajućem formatu prevode u niz znakova koji se prikazuje na monitoru, upisuje u datoteku ili prikazuje na štampaču.

Page 16: Razvoj_softvera_i_softversko_inzenjerstvo

Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo

Uvod u računarstvo 16

Bool-ovizraz

Nula ili više naredbi programa u sekvenci

Ostale naredbeprograma

Nula ili više naredbi programa u sekvenci

tačno netačno

Naredba selekcijeNaredba selekcije (if naredba) omogućava programu da ispita vrednosti programskih promenljivih korišćenjem Bool-ovog izraza i u zavisnosti od vrednosti izraza izvrši određenu sekvencu naredbi

Page 17: Razvoj_softvera_i_softversko_inzenjerstvo

Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo

Uvod u računarstvo 17

Primer if naredbe u programskim jezicima

VB

Page 18: Razvoj_softvera_i_softversko_inzenjerstvo

Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo

Uvod u računarstvo 18

Naredba “češlja” (case)Da bi se ispitali višestruki uslovi, u granama if naredbe mogu biti nove if naredbe (ugnježdene if naredbe) Mnogi programski jezici visokog nivoa uključuju naredbu “češlja”, case (switch) naredbuOna omogućava izvršavanje različitih sekvenci naredbi u zavisnosti od diskretnih vrednosti promenljive ili izraza iz skupa definisanih verdnostiPrimer: switch op

case a1: sekvenca naredbi 1case a2: sekvenca naredbi 2…case an: sekvenca naredbi ndefault: sekvenca naredbi n+1

Page 19: Razvoj_softvera_i_softversko_inzenjerstvo

Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo

Uvod u računarstvo 19

Naredbe petlje

Uslov izlaska iz petlje je zadat kao Bool-ov izraz čija se vrednost ispituje pre svakog prolaska kroz petlju, ukoliko je tačan (ili netačan) izlazi se iz petlje

Naredbe petlje omogućavaju višestruko izvršavanje istog bloka naredbi programaNaredba sa neodređenim brojem prolaza kroz petlju (while)

tačno Skup naredbiprograma

Bool-ovizraz

netačno

Ostale naredbeprograma

Page 20: Razvoj_softvera_i_softversko_inzenjerstvo

Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo

Uvod u računarstvo 20

Petlja sa određenim brojem prolazaKoristi specijalnu promenljivu nazvanu brojač petlje, koja pri svakom izvršenju naredbi u petlji menja svoju vrednost počev od startne vrednosti, do konačne vrednosti za određeni inkrement (for naredba)Primer: for i = 1 to N

naredbe petljePrimer VB

Page 21: Razvoj_softvera_i_softversko_inzenjerstvo

Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo

Uvod u računarstvo 21

Naredbe potprogramaPotprogram je deo programskog koda koji obavlja tačno određenu funkciju i koji se može izdvojiti kao posebna programska celina, sa odredjenim nazivom po kome se poziva u okviru ostalih programaPotprogram definiše listu identifikatora određenog tipa koji su neophodni za njegovo izvršavanje i to su parametri potprograma (fiktivni, formalni parametri)Pri pozivu potprograma uz naziv potrpograma, glavni program prosleđuje listu argumenata koji po broju, tipu i redosledu odgovaraju parametrima (stvarni parametri, argumenti)Prenos argumenata potprogramu

Po vrednosti – na osnovu parametra se očekuje da se vrednost argumenta kopira i prenese potprogramuPo referenci - na osnovu parametra se očekuje da se adresa (referenca) argumenta prenese potprogramu tako da je svakapromena argumenta u potpogramu vidljiva i u glavnom programu

Page 22: Razvoj_softvera_i_softversko_inzenjerstvo

Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo

Uvod u računarstvo 22

RekurzijaRekurzija je sposobnost potprograma da poziva sam sebePri svakoj rekurziji postoje dva slučaja u zavisnosti od određenog uslova:

Izlaz iz potprogramaRekurzivni poziv istog potprograma sa smanjenom verzijom problema

Na primer, faktorijel broja N koji predstavlja proizvod svih celih brojeva od 0 do N, može se rekurzivno predstaviti :

N! = N * (N − 1)! i realiovati rekurzivnim potprogramom

Page 23: Razvoj_softvera_i_softversko_inzenjerstvo

Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo

Uvod u računarstvo 23

Složeni tipovi podataka - SlogSlog (record, structura) je imenovana kolekcija heterogenih elemenata pri čemu se svakom elementu pristupa po imenu. Elementi sloga mogu biti različitog tipaPrimer deklaracije sloga u C++

Primer pristupa elementima sloga

Page 24: Razvoj_softvera_i_softversko_inzenjerstvo

Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo

Uvod u računarstvo 24

Složeni tipovi podataka - Polje

Polje je imenovana kolekcija homogenih elemenata u kome se svakom elementu pristupa na osnovu pozicije u kolekciji koja se označava indeksom (-ima)

Jednodimenzionalno polje – nizDvodimenzionalno polje - matrica

Primer deklaracije niza u C++/Java

tenThings

Page 25: Razvoj_softvera_i_softversko_inzenjerstvo

Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo

Uvod u računarstvo 25

Objektno-orijentisani programski jezici

Enkapsulacija – karakteristika programskog jezika kojom se u okviru strukture definišu atributi i funkcije (metodi) koje pristupaju atributima i obavljaju obradu nad njima. Ova struktura se naziva klasa, a objekti predstavljaju promenljive tipa klase (instance klase).

Deklaracija objekta klaseOsoba pl1

Postavljanje vrednosti atributa objekta

pl1.ime = “Petar”Poziv funkcije objekta

pl1.promeniIme(“Milan”)

Class Osoba

char ime[10]char prezime[20]int jmbg

promeniIme(char nIme)

Page 26: Razvoj_softvera_i_softversko_inzenjerstvo

Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo

Uvod u računarstvo 26

Objektno-orijentisani programski jeziciNasleđivanje (inheritance) – definicija klase koja nasleđuje sve atribute i funkcije osnovne klase, i definiše specifične atribute i funkcije.Na primer, klasa Student nasleđuje klasu Osoba i definiše svoje atribute: broj indeksa, semestar, prosečna ocena, itd., kao i funkcije za pristup i obradu tih atributa koje su karakteristične za objekte te klasePolimorfizam – karakteristika objektno-orijentisanih programskih jezika da se u okviru klasa definišu funkcije sa istim nazivom i listom parametara, a da se u vreme izvršenja programa određuje koja će funckija bioti pozvana u zavisnosti od tipa objekta za koji je pozvana.Polimorfizam i nasleđivanje omogućavaju programeru da razvije hijerarhiju klasa koja se može upotrebiti u različitim aplikacijama

Page 27: Razvoj_softvera_i_softversko_inzenjerstvo

Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo

Uvod u računarstvo 27

Softversko inženjerstvo

Računarska disciplina kojom se primenjuju inženjerski principi i metodologije u razvoju softveraProizvod softverskog inženjerstva (razvoja

softvera) nije samo softverska aplikacija već i svi prateći dokumenti, dijagrami, specifikacije koje su rezultat različitih faza u razvoju softvera

Page 28: Razvoj_softvera_i_softversko_inzenjerstvo

Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo

Uvod u računarstvo 28

Životni ciklus softveraGlavne faze u razvoju softvera

PlaniranjeAnaliza ProjektovanjeImplementacijaTestiranjeOdržavanje

Prateće faze tokom razvoja softveraProcena izvodljivosti – procena izvodljivosti razvoja softvera u odnosu na vremenske rokove, raspoložive ljudske i materijalne resurse (hardver, softver, mreža, itd.), procena koliko je opravdan razvoj u odnosu na neophodna finansijska sredstva i ekonomske koristi od sistemaUpravljanje projektom – planiranje faza, održavanje vremenskih rokova i kontrola aktivnosti u toku životnog ciklusa softveraDokumentacija – generisanje dokumentacije za svaku fazu razvojaObezbeđenje kvaliteta – kontrola i postizanje visokog kvaliteta softverskog proizvoda

Page 29: Razvoj_softvera_i_softversko_inzenjerstvo

Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo

Uvod u računarstvo 29

Planiranje i analiza

U okviru faze planiranja treba da se:Razmotre projektni zahtevi i utvrde prioritetiDodele resursi neophodni za izvođenje projekta: novac, ljudi, opremaOdredi razvojni tim za projekat

Faza analize definiše šta softver treba da radi i sadrži sledeće aktivnosti:

Preliminarno ispitivanje i formiranje studije izvodljivostiIstraživanje funkcionisanja postojećeg softverskog sistemaAnaliza i određivanje korisnikovih zahteva koje treba da zadovolji softver i definisanje specifikacije zahteva (funkcionalni zahtevi i nefunkcionalni zahtevi: performanse, pouzdanost, inetrakcija sa korisnikom i ograničenja)Preporuku mogućeg softverskog rešenja

Page 30: Razvoj_softvera_i_softversko_inzenjerstvo

Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo

Uvod u računarstvo 30

Projektovanje i implementacija

Faza projektovanja definiše kako softver treba da radi i sadrži dve podfaze:

Arhitekturno projektovanje – definisanje arhitekture softvera sastavljene od međusobno zavisnih softverskih modula i komponenti i specifikacija njihove međusobne komunikacijeDetaljno projektovanje

• Projektovanje struktura podataka i baza podataka• Projektovanje korisničkog interfejsa za interakciju korisnika sa

softverskim sistemom• Projektovanje algoritama za funkcije i module

Faza implementacije sadržiRazvoj programa (programiranje) u određenom programskom jeziku (na primer, Java, C++) i programskom okruženju (Borland JBuilder, Microsoft Visual Studio.NET, Eclipse)

Page 31: Razvoj_softvera_i_softversko_inzenjerstvo

Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo

Uvod u računarstvo 31

Testiranje i održavanjeFaza testiranja softvera sadrži aktivnosti

Testiranje modula softvera• Generisanje test primera• Izvođenje testiranja, otkrivanje i korekcija grešaka u softveru

metodama:– Bele kutije – test primeri su formirani tako da se testira svaka

naredba programa– Crne kutije – test primeri su formirani tako da se ispitaju sve

funkcije programa definisane u specifikaciji zahtevaTestiranje integracije modula u softverski sistem

Faza održavanja podrazumeva postupke modifikovanja softvera koji je isporučen i instaliran na računarima korisnika u cilju:

Unapređenja njegove funkcionalnosti u skladu sa novim korisničkim zahtevima ili usled novog hardverskog i softverskog okruženjaKorekcije grešaka koje su uočene u njegovom radu

Page 32: Razvoj_softvera_i_softversko_inzenjerstvo

Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo

Uvod u računarstvo 32

Modeli procesa razvoja softveraProces razvoja softvera predstavlja skup postupaka i procedura u odgovarajućem redosledu s ciljem razvoja softverskog proizvodaModeli procesa razvoja softvera

Model vodopada (waterfall) – sve faze u razvoju softvera (analiza, projektovanje, implementacija, testiranje) se obavljaju sekvencijalno; tek nakon završetka jedne faze započinje druga. Nedostatak: relativno kasno nastaje prva verzije softvera, dok se sekvencijalno ne završe sve faze u razvoju softveraInkrementalni-iterativni model – Razvoj softvera se obavlja u inkrementima, svaki inkrement dodaje novu ili proširuje postojeću funkcionalnost softvera, i svaki inkremement se razvija kroz jedan ili više prolaza svih faza razvoja (analiza, projektovanje, implementacija, testiranje) nakon čega se integriše u do tada razvijenu celinu. Često se zasniva na razvoju prototipa – radnog modela zahtevanog softvera, koji poseduje osnovnu funkcionalnost i evolutivno se unapređuje do potpune funkcionalnosti

Page 33: Razvoj_softvera_i_softversko_inzenjerstvo

Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo

Uvod u računarstvo 33

CASE (Computer Aided SoftwareEngineering)

Softversko inženjersto pomoću računara (Computer AidedSoftware Engineering)Softverski alati namenjeni podršci jedne ili više faza u procesu razvoja softvera, kao i automatizaciji određenih aktivnosti i postupaka u ovim fazamaPostoje kao nezavisni alati ili integrisani u celovit proizvod koji može da obuhvati alate za:

Analizu i projektovanje – razvoj šematskog prikaza i dijagrama koji definišu model softvera u odgovarajućoj fazi razvojaOdržavanje skladišta sa međusobno povezanim projektnim informacijamaRazvoj programa – automatizacija pisanja programa korišćenjem generatora koda na osnovu dijagrama i šema razvijenih u fazi projektovanja, kao i automatizacija generisanja test primera

Page 34: Razvoj_softvera_i_softversko_inzenjerstvo

Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo

Uvod u računarstvo 34

O-O analiza i projektovanje(notacije i dijagrami)

UML (Unified Modeling Language) – Unificirani JezikModeliranja – definiše grafičke i tekstualne dijagrame i notacije za opis i predstavljanje modela softvera u svakojfazi procesa razvoja softveraUML 2.0 definiše 13 dijagrama; neki od njih:

Dijagram slučajeva korišćenja (Use case) – defniše specifikacijuzahteva i opisuje zahtevanu funckionalnost sistemaDijagrami klasa i objekata – definiše statičku strukturu sistema u obliku klasa, njihovih atributa i funkcija, kao i objekataDijagrami sekvence i kolaboracije – definišu dinamičku strukturusoftvera i međusobnu interakciju između objekata koji čine softverDijagrami aktivnosti i stanja – definišu dinamičko ponašanje sistema, kao i tok upravljanja koji prevodi softver iz jednog u drugo stanjeDijagram komponenti – specificira interakciju softverskih komponentiDijagram razmeštaja – definiše hardversko i softversko okruženje softvera, kao i način instalacije softverskih modula na računarima povezanim u mrežu