Osnove softverskog inženjerstva: Procesi, modeli i upravljanje zahtevima
Enviado por Anónimo y clasificado en Otras materias
Escrito el en
serbocroata con un tamaño de 618,99 KB
Šta je softver i čime se bavi softversko inženjerstvo?
Softver je računarski program, pridružena dokumentacija i konfiguracioni podaci neophodni da bi softver radio korektno. Softverski sistem se obično sastoji od:
- Određenog broja programa
- Konfiguracionih fajlova
- Sistemske dokumentacije koja opisuje strukturu sistema
- Korisničke dokumentacije
- Veb sajtova za podršku korisnicima
Softversko inženjerstvo je inženjerska disciplina koja se bavi teorijom, metodama i alatima za profesionalni razvoj softvera.
Tipovi softvera
Postoje dva osnovna tipa softvera:
- Generički: Samostalni sistemi namenjeni za prodaju na slobodnom tržištu.
- Ugovorni (custom): Razvijeni za jednog korisnika prema njegovim zahtevima.
Osnovna razlika je u tome ko definiše specifikaciju zahteva.
Softversko inženjerstvo vs. Informatika
Dok se nauka o računarstvu (informatika) bavi teorijom i osnovama računarstva, softversko inženjerstvo se fokusira na praktičnu stranu razvoja i isporuke korisnog softvera, obuhvatajući sve aspekte proizvodnje uz sistemski i organizovan pristup.
Atributi dobrog softvera
- Pogodnost za održavanje (Maintainability): Softver treba da se lako menja.
- Stabilnost (Dependability): Mora ulivati poverenje (pouzdanost, bezbednost, sigurnost).
- Efikasnost (Efficiency): Ekonomično korišćenje resursa sistema.
- Upotrebljivost (Usability): Pogodan za korišćenje.
"Shall-not" svojstva
To su svojstva sistema koja sistem ne sme da dopusti (npr. sigurnost ili bezbednost). Teško se mere, pa se definišu kroz ograničenja onoga što sistem ne sme da uradi.
Proces sistemskog inženjerstva
Proces obuhvata: definisanje zahteva, projektovanje sistema, razvoj podsistema, integraciju, instalaciju, evoluciju i rasturanje sistema.
Proces nabavke sistema
Podrazumeva traženje sistema koji zadovoljava potrebe organizacije. Često se koristi kupovina postojećih COTS (Commercial Off-The-Shelf) sistema, što je ekonomičnije. Nabavka velikih sistema obuhvata glavnog izvođača koji angažuje podizvođače.
Softverski proces
Predstavlja strukturiran skup aktivnosti za razvoj softvera:
- Specifikacija: Određivanje servisa i ograničenja.
- Projektovanje i implementacija: Definisanje strukture i pisanje koda.
- Validacija: Provera da li sistem radi ono što naručilac želi.
- Evolucija: Prilagođavanje sistema novim potrebama.
Model vodopada (Waterfall)
Planom vođen model sa potpuno odvojenim fazama: analiza, projektovanje, implementacija, integracija i održavanje. Nedostatak: Nefleksibilnost pri izmenama zahteva.
Agilni razvoj
Vrednosti Agilnog manifesta
- Pojedinci i interakcije > procesi i alati
- Softver koji radi > dokumentacija
- Saradnja s klijentima > ugovori
- Odgovor na promene > praćenje plana
Inkrementalni razvoj
Aktivnosti specifikacije, razvoja i validacije se preklapaju. Prednost je brža isporuka i lakše prihvatanje izmena, dok je problem potencijalna degradacija strukture sistema.
Scrum proces
Agilni proces fokusiran na isporuku vrednosti kroz kratke iteracije (sprintove). Sastanci uključuju: planiranje sprinta, dnevni scrum, pregled sprinta i retrospektivu.
RUP (Rational Unified Process)
Faze RUP-a: Inception (vizija), Elaboration (arhitektura), Construction (realizacija) i Transition (isporuka). Za razliku od Scrum-a, RUP je strukturiraniji i teži ka detaljnijem planiranju faza.
Upravljanje zahtevima
Proces obuhvata prikupljanje, analizu, specifikaciju i validaciju zahteva. Najpoznatije metode su DFD, objektno-orijentisane metode, formalne metode i Use-case metode.
Objektno-orijentisano modelovanje
Koraci: identifikacija objekata/klasa, struktura (veza), atributa, servisa i poruka (interakcija).
Use-case dijagrami
Osnovne veze: asocijacija, uključivanje (include), proširivanje (extend) i generalizacija.
4+1 model arhitekture
Obuhvata: logičku, procesnu, implementacionu i fizičku arhitekturu, povezane korisničkim pogledom (use-case).