Softversko inženjerstvo je disciplina koja se bavi razvojem i održavanjem pouzdanih i efikasnih softverskih sistema. Značaj softverskog inženjerstva je porastao sa rastućim zahtevima za razvojem bezbednih aplikacija, tj. bezbednih softverskih sistema i sa većim značajem velikih i skupih softverskih sistema. Softversko inženjerstvo se razlikuje od svih drugih inženjerskih disciplina, zbog nefizičke prirode softvera (ne postoji u prostoru i nije opipljiv). Softversko inženjerstvo pokušava da integriše računarske nauke i inženjerske principe koji se primenjuju kod razvoja opipljivih tvorevina sa jasnim fizičkim osobinama. Softversko inženjerstvo se vezuje za upravljanje procesom i kvalitetom, za kreativnost i inovacije, za standarde, za individualne veštine pojedinaca, ali i za sposobnost timskog rada i primenu pravila i iskustva iz profesionalne prakse.
Ovaj predmet se bavi teorijom i praksom velikih softverskih sistema, njihovim dizajnom, razvojem, i razmeštanjem. Upravljanje projektima, napredni UML, reverzibilno inženjerstvo, inspekcija softverskih zahteva, verifikacija i validacija, softverska arhitektura, modelovanje i analiza performansi ovakvih sistema. Takodje, niz primera velikih softverskih sistema, i izgradnja, refaktorisanje, koncepti i tehnike koje se koriste kod ovakvih sistema. Cilj je da se student familijarizuje sa velikim softverskim sistemima i metodama i alatima i tehnikama rešavanja ovih sistema. Predvidjen je projekt i seminarski rad.
Ovladavanje osnovim i naprednim tehnikama i principima merenja u softverskom inženjerstvu. Poznavanje primene softverskih merenja. Ovladavanje primenom softverskih merenja pri donošenju odluka na projektu. Osposobljavanje za planiranje merenja u cilju unaprđenja kvalitetom softvera na projektu i u organizaciji. Kurs predstavlja pregled i detaljnu razradu najvažnijih tema vezanih za organizaciju procesa ocenjivanja i merenja softvera (metrika procesa i softverskog proizvoda), osnovne pojmove merenja kvaliteta softvera (broj potencijalnih grešaka, procenat otkrivanja i otklanjanja grešaka i dr.), merenja karakteristika performansi procesa razvoja softvera kroz odabir i prikupljanje softverskih metrika. Izučavaju se osnovne tehnike merenja i predviđanja kvaliteta softvera (modeli estimacije), ocenjivanje i merenje performansi članova projektnog tima.Takođe, izučavaju se i aspekti mernog okvira (izbor ciljeva softverskog projekta, standardi merenja i ocenjivanja veličine i kvaliteta softverskog proizvoda, nivo zrelosti kompanije – CMMi metodologija i td.), postupci prikupljanja atributa objekata merenja, njihovo čuvanje, analiza i obrada, izveštavanje tokom ciklusa razvoja softvera i drugo.
U okviru ovog predmeta predvidjeno je upoznavanje sa grupom razvojnih metoda softvera baziranih na iterativnom i inkrementalnom razvoju, gde softverski zahtevi i rešenja evoluiraju kroz kolaboraciju nekoliko autonomnih podtimova. Ovde se izučava adaptivno planiranje, evolutivni razvoj i isporuka, fiksirani rokovi, i brzi i fleksibilni odgovori na promene u toku procesa razvoja softvera. Takodje, upoznavanje sa Agilnim Manifestom, i komunikacionim tehnikama koje se koriste kod agilnih metoda razvoja softvera. Cilj predmeta je da se master student osposobi za primenu agilnih tehnika razvoja softvera, i da to demonstrira na jednom projektu. Takodje, student treba da uradi seminarski rad koji je teorijske prirode i podrazumeva pretragu po Internetu.
Osnovni cilj predmeta je sinteza stečenih znanja iz informatike usmerena na primenu savremenih alata za razvoj aplikacija za rad sa sistemima u realnom vremenu. Prеdmеt оspоsоbljаvа studеntе dа izađu iz okvira i kućišta računara, da rаzviјu јаsnе, kоnciznе i fоrmаlizоvаnе zаhtеvе zа prоširеnjеm pоstојеćеg sistеmа u sklаdu sа rеаlnim pоtrеbаmа kоrisnikа, dа primеnе principе prојеktоvаnjа distribuirаnih sistеmа, dа izvršе аnаlizu i prојеktоvаnjе оbјеktnо-оriјеntisаnih sistеmа, dа primеnе јеdnоstаvnе grаfičke interfejse računara sa merno regulacionim sistemima i ralnim fiim procesima koji su i sami mini ili mikro računarske komponente, sa ugrađenim kompleksnim softverom. Poseban cilj predmeta je osposobljavanje studenta za samostalan rad pri izradi softverskog proizvoda u komunikaciji sa realnim svetom, finim okruženjem i inteligentnim senzorskim sistemima kroz ovladavanje tehnikama kao što su: Konkurentno programiranje, Programiranje uz vremnska ograničenja, Bezbedna i struktuirana upotreba prekida u Rtsistemima, Programiranje i virtuelizacija distribuiranih multi-tasking senzorskih mreža, Projektovanje aplikacija sa distribuiranim podacima u realnom vremenu i dr. Kurs predstavlja pregled i detaljnu razradu najvažnijih tema projektovanja i razvoja softvera računarskih sistema za upravljanje u realnom vremenu. Cilj je da se studentima pruži jedan izbalansiran pogled na teoriju i praksu programiranja sistema u realnom vremenu. Ovaj kurs omogućava studentima da prepoznaju klasifikuju i formulišu zahteve za ovu vrstu računarskih sistema, da izaberu adekvatnu hardversko-softversku arhitekturu, da izaberu odgovarajući operativni sistem i programski jezik, da rešavaju problem komunikacije u realnom vremenu i da simuliraju rad sistema.
Ovaj predmet se bavi teorijom i praksom inteligentnih softverskih sistema. Cilj je da student ovlada inteligentnim softverskim sistemima, i metodama veštačke inteligencije. Student će se familijarizovati sa inteligentnim softverskim sistemima i metodama i alatima i tehnikama veštačke inteligencije. Predviđen je projekat i seminarski rad.
Cilj stručne prakse je da studente pripremi studenata za samostalni istraživački i stručni rad u prepoznavanju i rešavanju konkretnih zadataka iz oblasti studijskog programa, u realnim uslovima prakse i/ili u istraživačkim laboratorijama i centrima. Programski zadaci su orijentisani na uključenje studenata u projekte različitih vrsta, obima i namena, u njihovoj početnoj, razvojnoj ili završnoj, fazi. Kroz sagledavanje radne sredine i konkretnih radnih aktivnosti student treba steći nova znanja, sigurnost u radu i mogućnost integrisanja stečenih znanja i veština kroz prethodni studij u obimu od 120 sati. Sticanje iskustava i ovladavanje veštinama u korišćenju, produbljivanju i obogaćivanju stečenih teorijskih i praktičnih znanja radi prepoznavanja i rešavanja konkretnih pitanja i zadataka koji se pojavljuju u realnom sistemu.
Cilj predmeta je da upozna studenta sa teorijskim osnovama e-učenja, kao i sa savremenim tehnologijama koje se primenjuju pri e-učenju. Očekuje se od studenata posle položenog ispita bude spreman da radi na organiѕaciji i pripremi sistema za e-učenje u nekoj organizaciji, da odabere odgovarajuće tehnologije za pripremu nastavnih materijala za e-učenje, da odabere i pšrimeni neki od sistema za e-učenje, da izabere i konfiguriše infrastrukturu za e-učenje i organizuje rad centra za e-učenje. Takođe, student dobija solidnu osnovi istraživanja u oblasti e-učenja.
Predmet razmatra tehnologije semantičkog veba koje je preporučio W3C konzorcijum i koje se već primenjuju za razvoj inovativnih višejezične proizvoda i usluga u javnom sektoru, bioinformatici, energetici, transportu, itd. Cilj je upoznati studente sa inovativnim metodama predstavljanja i obrade podataka, alatima za razvoj semantičkih veb aplikacija, kao i trenutno stanje u istraživanju semantičkog veba.
Razumevanje principa semantičkog veba; sposobnost za primenu standardnih W3C rečnika i postojećih alata slobodnog otvorenog koda; cposobnost za projektovanje i razvoj semantičkih veb rešenja (XML/RDF/OWL/SPARQL), kao i samostalni istraživački rad.
Priprema studenta za dalje studije u okviru oblasti bezbednosti aplikacionog softvera, računarskih sistema i mreža kao i kvalifikacija visoko stručnog kadra za probleme projektovanja i revizije sigurnosti sistemskog i aplikacionog softvera. Student će biti u mogućnosti da analizira ranjivost na hekerski napad sistemskog i aplikacionog softvera kao i da dizajnira odbrambene mehanizme istih. Student će takođe biti sposoban da izvrši reviziju bezbednosno opasnih strukturnih i instalacionih defekata velikih softverskih sistema a zatim proizvede dokumenat investicionih preopruka za redizajn i osavremenjavanje sistema aplikativnih modula.
Sadržaj predmeta: Istorijski pregled tehnologije programiranja i softverskog inženjeringa. Pregled postojećih tehnologija i alata. Moderni objektno-orjentisan i objekt-bazirani metodi anlize, dizajna i programiranja. Razrešenje inženjerskog konflikta između produktivnosti razvoja softvera, efikasnosti izvršenja i bezbednosnidž zahteva. UMLsec i bezbednosni životni ciklus softvera. Programska unutrašnja i sistemska spoljašnja rešenja bezbednosnih problema softvera. Tehnologije Java i .NET, virtuelne mačine za izvršnja sofzvera i menadžment poveernja. Sertifikat softvera. Bezbedna distribucija softvera. Bezbednosna revizija. Praktična nastava uključuje demonstraciju softverskih defekata, slabih tačaka u softverskim sistemima, kao i različitih mehanizama provala u softver. Šel programi, ilegalni ulaz u aplikaciju na prednja i zadnja vrata, itd.
Cilj završnog rada je da da: prikaz usvojenih znanja i veština potrebnih za samostalan rad i rešavanje konkretnih problema u praksi, dokaz osposobljenosti da student u ekspozeu prikaže rad na sažet i zanimljiv način, a tokom odbrane da odbrani svoje argumente i odgovori na pitanja i kritike, stečena znanja tokom studiranja su dobar osnov da student uspešno izradi i odbrani završni rad i da nakon izrade i odbrane završnog rada bude kompetentan za uspešno primenjivanje stečenih znanja na radnom mestu. Student demonstrira da je sposoban da: uz pomoć mentora sprovede istraživanje i prikaže rezultate na način koji je u skladu sa usvojenim normama za prikazivanje rezultata, poveže dobijene rezultate sa dostupnim rezultatima drugih radova, pravilno koristi relevantnu stručnu i naučnu literaturu, pravilno koristi sručne i naučne termine, usmeno obrazlaže rezultate rada i argumentovano odgovara na pitanja u vezi rada.