Softversko inženjerstvo

Softversko inženjerstvo

Uključene obrazovne institucije

Univerzitet u Kragujevcu

Upoznavanje sa metodama i tehnikama za razvoj softvera u svim fazama životnog ciklusa.

Znanja koja su studenti stekli posle savladavanja programa:
Poznavanje, razumevanje i korišćenje metoda i tehnika u pojedinim fazama razvoja softvera.
Veštine koje su studenti stekli posle savladavanja programa:
Efikasno korišćenje alata koji se primenjuju u određenim fazama razvoja softvera.
Stavovi koje su studenti stekli posle savladavanja programa:
Sistematičnost (sposobnost da se obavezno i adekvatno primenjuju određene metode i tehnike u
softverskom inženjerstvu), preciznost (jasno i nedvosmisleno predstavljanje činjenica),
iterativnost (potreba da se primenjuju povratne sprege između određenih faza u cilju poboljšanja
rešenja i koegzistentnosti), inkrementalnost (da nove verzije projekata i rešenja budu bolje od
predhodnih), dokumentovanje (shvatanje da bez dobrog dokumentovanja nije moguć uspešan razvoj
informacionih sistema).

Teorijska nastava

Uvod u softversko inženjerstvo. Analiza i sinteza. Tehnike, alati, procedure, paradigme. Kvalitet. Učesnici u procesu. Sistemski prilaz. Inženjerski pristup. Razvojni tim. Modelovanje procesa i životnog ciklusa. Proces, životni ciklus, struktura procesa. Faze razvoja. Modeli procesa (vodopad, vodopad sa prototipom, V model, prototipski model, inkrementalni i iterativni fazni razvoj, spiralni model). Agilne metode razvoja (ekstremno
programiranje, Scrum,…). Evidentiranje zahteva. Važnost zahteva. Izvođenje zahteva.Tipovi zahteva. Rešavanje konflikata. Notacije (dijagrami odnosa između entiteta, dijagrami sekvenci, konačni automati, dijagrami toka podataka, dijagrami slučajeva korišćenja). Izrada prototipova. Dokumentovanje zahteva (specifikacija softverskih zahteva). Dizajniranje sistema. Konceptualni i tehnički dizajn. Modularnost. Arhitektonski stilovi
(slojevi, mikroservisi,…). Karakteristike dobrog dizajna. Korisnički doživljaj. Objektno-orijentisani dizajn. Karakteristike (identitet, apstrakcija, klasifikacija, enkapsulacija, nasleđivanje, polimorfizam, perzistencija). Slučajevi korišćenja. Predstavljanje klasa (dijagrami klasa). Dijagrami sekvence saradnje, stanja, aktivnosti,…). Dokumentovanje dizajna softvera. Testiranje programa. Greške i otkazi. Vrste grešaka. Organizacija testiranja. Testni timovi.
Jedinično testiranje. Integraciono testiranje. Planiranje testa. Alati za automatizovano testiranje.

Praktična nastava

Instalacija radnog okruženja. Upoznavanje sa alatima za kolaboraciju. Upoznavanje sa alatima za
verzionisanje koda. Timski rad na razvoju softverskog rešenja zadatog problema. Dokumentovanje softverskih zahteva. Dokumentovanje dizajna softvera. Prezentovanje rešenja.