Cilj i ishod predmeta
Upoznavanje sa savremenim metodama i principima softverskog inženjerstva, kao i razumevanje i primena najčešće korišćenih metodologija za razvoj softvera. Student razume probleme savremenog razvoja softvera, upoznat je sa različitim metodama rešavanja ovih problema, sa njihovim prednostima i nedostacima. Student poznaje nekoliko najčešće korišćenih metodologija i metoda za razvoj softvera i ume da ih primeni u timskom radu.
Teorijska nastava
Definisanje funkcionalnih i nefunkcionalnih zahteva softvera. Formalna specifikacija zahteva. Profesionalni razvoj softvera. Etika softverskog inženjerstva. Aktivnosti softverskog inženjerstva. Svojstva kvalitetnog softvera. Izazovi u razvoju softvera. Softversko inženjerstvo i veb. Analiza studija slučaja razvoja softvera u različitim domenima i različitim softverskim tehnologijama. Modeli procesa razvoja softvera – vodopadni i inkrementalni model. Specifikacija softvera. Modeliranje softvera – kontekstualni model, model interakcije, strukturni model, model ponašanja. Dizajn i implementacija softvera. Razvoj softvera zasnovan na modelu. Prototipovi. Prilagođavanje promenama zahteva. Rational Unified Process – RUP. Osnove agilnog razvoja softvera. Testiranje softvera i razvoj zasnovan na testiranju. Evolucija softvera. Sigurnost softvera. Razvoj softvera zasnovan na komponentama. Korišćenje gotovih softverskih komponenti. Različite softverske arhitekture – servisno-orijentisana, monolitna, mikroservisna.
Praktična nastava
Analiza formalne specifikacije softvera. Analiza studija slučaja razvoja softvera. Timski rad na razvoju originalnog softverskog rešanja uz poštovanje principa softverskog inženjerstva obrađenih na predavanjima. Ilustracija različitih modela i metoda razvoja softvera – razvoj zasnovan na modelu, na testiranju, na komponentama. Demonstracija različitih softverskih arhitektura i njihove adekvatne primene.