Razvoj_softvera_i_softversko_inzenjerstvo

Page 1

UVOD U RAČUNARSTVO - Razvoj softvera i softversko inženjerstvo Katedra za računarstvo, Elektronski fakultet Univerzitet u Nišu

Prof. dr Dragan Stojanović

Uvod u računarstvo Računarstvo i informatika

2010


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 podataka Algoritam se opisuje tekstualnim i grafičkim simbolima u obliku dijagrama toka ili blok šeme Programski 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)

Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo Uvod u računarstvo

2


Programski jezici Generacije programskih jezika Mašinski jezik Asemblerski (simbolički) jezik i makrasemblerski jezici Proceduralni 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

Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo Uvod u računarstvo

3


Mašinski jezik Maš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čunara U 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 Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo Uvod u računarstvo

4


Mašinske instrukcije Kategorije mašinskih instrukcija Instrukcije za prenos podataka Aritmetičko-logičke instrukcije Instrukcije za upravljanje tokom izvršenja programa (grananje, uslovne ili bezuslovne skokove, pozive potprograma, itd.) Ulazno-izlazne instrukcije Ostale instrukcije

Format mašinske instrukcije Kod operacije – binarni kod koji specificira datu operaciju Specifikator adresnog moda – specificira način interpretacije operanda instrukcije Specifikator registra – definiše da li i koji registar procesora ušestvuje u operaciji Operand – specificira adresu operanda koja se tumači u zavisnosti od specifikatora adresnog moda Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo Uvod u računarstvo

5


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

Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo Uvod u računarstvo

6


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šavati Vrste programskih prevodioca Asembleri i makroasemlberi – prevode program sa asemblerskog (makroasemblerskog) jezika, pri čemu se simbolička imena i oznake zamenjuju binarnim kodovima Kompilatori (kompajleri) – prevode program sa višeg programskog jezika u mašinski kod Interpretatori – prevode svaku naredbu programa i odmah je izvršavaju (interpretiraju) Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo Uvod u računarstvo

7


Razvoj i izvršenje programa Programski 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 disku Sistemski 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

Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo Uvod u računarstvo

8


Razvoj programa

Editor teksta

Izvorni program

Kompilator Sistemska biblioteka

Objektni program Povezivač

Izvršni program

Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo Uvod u računarstvo

9


Programski jezici Imperativni ili proceduralni programski jezici FORTRAN, COBOL, Basic, C, Pascal, Ada

Objektno-oriejentisani programski jezici (uključuju i karakteristike proceduralnih) SIMULA, Smalltalk, C++, Java, C#

Deklarativni (logički) programski jezici Prolog

Funkcionalni programski jezici LISP, Scheme (verzija LISP), ML

Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo Uvod u računarstvo

10


Tipovi podataka Tip 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 tipa Osnovni 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 Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo Uvod u računarstvo

11


Upravljačke strukture Upravljačka struktura je instrukcija programa koja određuje redosled izvršavanja ostalih instrukcija programa Upravljač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 redosled Selekcija na osnovu ispunjenosti ili neispunujenosti određenog uslova određuje koje će instrukcije sledeće biti izvršavane Petlja 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) izrazom Poziv 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 Razvoj softvera i softversko inženjerstvo Prof. dr Dragan Stojanović

Uvod u računarstvo

12


Bool-ov izraz Bool-ov izraz predstavlja sekvencu konstanti, promenljivih ili izraza povezanih odgovarajućim operatorima čija je vrednost tačno ili netačno Bool-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, …)

Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo Uvod u računarstvo

13


Deklaracija Instrukcija 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 jezika U zavisnosti od programskog jezika ista imena napisana različitim slovima (velikim ili malim) predstavljaju različita imena Primer deklaracija promenljivih u C++/Java int num; float sum = 0.0; char per; Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo Uvod u računarstvo

14


Naredba dodele i naredbe ulaza/izlaza Naredba dodele je naredba kojom se promenljivoj sa leve strane znaka jednakosti dodeljuje vrednost izraza navedenog sa desne strane znaka jednakosti u obliku promenljiva = izraz Primer:

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

Naredbe ulaza/izlaza se po strukturi i sintaksi veoma razlikuju u programskim jezicima visokog nivoa Ulazne 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. Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo Uvod u računarstvo

15


Naredba selekcije Naredba selekcije (if naredba) omogućava programu da ispita vrednosti programskih promenljivih korišćenjem Boolovog izraza i u zavisnosti od vrednosti izraza izvrši određenu sekvencu naredbi tačno

netačno

Bool-ov izraz

Nula ili više naredbi programa u sekvenci

Nula ili više naredbi programa u sekvenci

Ostale naredbe programa Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo Uvod u računarstvo

16


Primer if naredbe u programskim jezicima VB

Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo Uvod u računarstvo

17


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) naredbu Ona omogućava izvršavanje različitih sekvenci naredbi u zavisnosti od diskretnih vrednosti promenljive ili izraza iz skupa definisanih verdnosti Primer: switch op case a1: sekvenca naredbi 1 case a2: sekvenca naredbi 2 … case an: sekvenca naredbi n default: sekvenca naredbi n+1 Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo Uvod u računarstvo

18


Naredbe petlje Naredbe petlje omogućavaju višestruko izvršavanje istog bloka naredbi programa Naredba sa neodređenim brojem prolaza kroz petlju (while) 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

Bool-ov izraz

tačno

Skup naredbi programa

netačno Ostale naredbe programa

Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo Uvod u računarstvo

19


Petlja sa određenim brojem prolaza Koristi 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 petlje Primer VB

Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo Uvod u računarstvo

20


Naredbe potprograma Potprogram 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 programa Potprogram 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 potprogramu Po referenci - na osnovu parametra se očekuje da se adresa (referenca) argumenta prenese potprogramu tako da je svaka promena argumentaRazvoj u potpogramu vidljiva i u glavnom programu softvera i softversko inženjerstvo Prof. dr Dragan Stojanović

Uvod u računarstvo

21


Rekurzija Rekurzija je sposobnost potprograma da poziva sam sebe Pri svakoj rekurziji postoje dva slučaja u zavisnosti od određenog uslova: Izlaz iz potprograma Rekurzivni 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

Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo Uvod u računarstvo

22


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

Primer pristupa elementima sloga

Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo Uvod u računarstvo

23


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)

tenThings

Jednodimenzionalno polje – niz Dvodimenzionalno polje - matrica

Primer deklaracije niza u C++/Java

Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo Uvod u računarstvo

24


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). Class Osoba char ime[10] char prezime[20] int jmbg promeniIme(char nIme)

Prof. dr Dragan Stojanović

Deklaracija objekta klase Osoba pl1 Postavljanje vrednosti atributa objekta pl1.ime = “Petar” Poziv funkcije objekta pl1.promeniIme(“Milan”)

Razvoj softvera i softversko inženjerstvo Uvod u računarstvo

25


Objektno-orijentisani programski jezici Nasleđ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 klase Polimorfizam – 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

Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo Uvod u računarstvo

26


Softversko inženjerstvo Računarska disciplina kojom se primenjuju inženjerski principi i metodologije u razvoju softvera Proizvod 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

Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo Uvod u računarstvo

27


Životni ciklus softvera Glavne faze u razvoju softvera Planiranje Analiza Projektovanje Implementacija Testiranje Održavanje

Prateće faze tokom razvoja softvera Procena 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 sistema Upravljanje projektom – planiranje faza, održavanje vremenskih rokova i kontrola aktivnosti u toku životnog ciklusa softvera Dokumentacija – generisanje dokumentacije za svaku fazu razvoja Obezbeđenje kvaliteta – kontrola i postizanje visokog kvaliteta softverskog proizvoda Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo Uvod u računarstvo

28


Planiranje i analiza U okviru faze planiranja treba da se: Razmotre projektni zahtevi i utvrde prioriteti Dodele resursi neophodni za izvođenje projekta: novac, ljudi, oprema Odredi razvojni tim za projekat

Faza analize definiše šta softver treba da radi i sadrži sledeće aktivnosti: Preliminarno ispitivanje i formiranje studije izvodljivosti Istraživanje funkcionisanja postojećeg softverskog sistema Analiza 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 Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo Uvod u računarstvo

29


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 komunikacije Detaljno 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ži Razvoj programa (programiranje) u određenom programskom jeziku (na primer, Java, C++) i programskom okruženju (Borland JBuilder, Microsoft Visual Studio.NET, Eclipse) Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo Uvod u računarstvo

30


Testiranje i održavanje Faza 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 zahteva

Testiranje 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ženja Korekcije grešaka koje su uočene u njegovom radu

Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo Uvod u računarstvo

31


Modeli procesa razvoja softvera Proces razvoja softvera predstavlja skup postupaka i procedura u odgovarajućem redosledu s ciljem razvoja softverskog proizvoda Modeli 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 softvera Inkrementalni-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 Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo Uvod u računarstvo

32


CASE (Computer Aided Software Engineering) Softversko inženjersto pomoću računara (Computer Aided Software 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 fazama Postoje 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 razvoja Održavanje skladišta sa međusobno povezanim projektnim informacijama Razvoj programa – automatizacija pisanja programa korišćenjem generatora koda na osnovu dijagrama i šema razvijenih u fazi projektovanja, kao i automatizacija generisanja test primera

Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo Uvod u računarstvo

33


O-O analiza i projektovanje (notacije i dijagrami) UML (Unified Modeling Language) – Unificirani Jezik Modeliranja – definiše grafičke i tekstualne dijagrame i notacije za opis i predstavljanje modela softvera u svakoj fazi procesa razvoja softvera UML 2.0 definiše 13 dijagrama; neki od njih: Dijagram slučajeva korišćenja (Use case) – defniše specifikaciju zahteva i opisuje zahtevanu funckionalnost sistema Dijagrami klasa i objekata – definiše statičku strukturu sistema u obliku klasa, njihovih atributa i funkcija, kao i objekata Dijagrami sekvence i kolaboracije – definišu dinamičku strukturu softvera i međusobnu interakciju između objekata koji čine softver Dijagrami aktivnosti i stanja – definišu dinamičko ponašanje sistema, kao i tok upravljanja koji prevodi softver iz jednog u drugo stanje Dijagram komponenti – specificira interakciju softverskih komponenti Dijagram razmeštaja – definiše hardversko i softversko okruženje softvera, kao i način instalacije softverskih modula na računarima povezanim u mrežu Prof. dr Dragan Stojanović

Razvoj softvera i softversko inženjerstvo Uvod u računarstvo

34


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.