Cilj i ishod predmeta
Upoznavanje sa različitim tipovima modeliranja softvera, sa njihovim ključnim osobinama kao i sa najpoznatijim metodama koje obezbeđuju sistematičan pristup razvoju softvera. Student poznaje sve najznačajnije vrste modeliranja softvera i ume kako da tumači tako i da kritički sagleda ali i da kreira softverske modele različitih vrsta. Student je sposoban da selektuje odgovarajuću vrstu modela za opis određenog aspekta softverskog sistema. Student je upoznat sa ključnim karakteristikama najpoznatijih metoda koji se koriste u savremenom softverskom inženjerstvu.
Teorijska nastava
Principi modeliranja softvera – modeliranje ključnih elemenata softvera, obezbeđivanje perspektive, omogućavanje efikasne komunikacije. Osobine softverskih modela – kompletnost, konzistentnost, korektnost. Sintaksa, semantika i pragmatičnost softverskih modela. Metamodeli. Preduslovi, postuslovi i invarijante. Tipovi modela – modeliranje podataka, modeliranje ponašanja, strukturno modeliranje. Analiza softverskih modela. Heuristička metoda softverskog inženjerstva. Formalne metode. Jezici za specifikaciju softvera. Prototipske metode. Agilne metode i brz razvoj softvera.
Praktična nastava
Analiza studija slučaja korišćenjem različitih modela i jezika specifikacije softvera koji su obrađeni u okviru teoretske nastave. Ilustracija različitih pristupa modeliranju softvera na primerima poznatih softvera. Vežba anlalize modela softvera – analiza korektnosti, kompletnosti, konzistencije, mogućnosti praćenja, analize interakcije (kontrole toka). Pisanje različitih modela za različite aspekte softverskog sistema – strukturni model, model podataka, model ponašanja. Diskusija o metodama softverskog inženjerstva obrađenih u okviru teorijske nastave i prikaz studija slučaja primene različitih metoda u razvoju softvera.