Fakultet organizacionih nauka, Univerzitet u Beogradu

Katedra za elektronsko poslovanje

Softversko inženjerstvo – odabrana poglavlja

Studijski programNaziv programNastavnik/nastavniciStatus predmetaBroj ESPB
Softversko inženjerstvo i elektronsko poslovanjeSoftversko inžerstvo - odabrana poglavlja Lazarević D. Saša, Devedžić B. Vladan, Ševerac V. Zoran Izborni10

Cilj predmeta

Sagledavanje celokupne oblasti softverskog inženjerstva, a posebno otvorenih problema i tekućih istraživanja. Omogućiti studentima da uvide karakteristike i rešenja savremenih izazova u oblasti (1) razvoja softvera i primenjene teorije algoritama, (2) skladištenja i analitičkog procesiranja velikih i kompleksnih strukturiranih i nestrukturiranih skupova podataka i (3) metodologije izrade softvera. Osposobljavanje studenata za učešće u istraživanjima u domenu softverskog inženjerstva. Pored prethodnog, cilj ovog predmeta jeste da studenti ovladaju naprednim metodama, tehnikama i alatima softverskog inženjerstva i da steknu znanja neophodna za samostalan istraživački rad.

Ishod predmeta

Student će biti osposobljen da:
– samostalno selektuje, kritički analizira i evaluira literaturu, postojeća teorijsko stručna dostignuća i ostvarena rešenja u oblasti softverskog inženjerstva
– definiše istraživački problem i odgovarajuću metodologiju rešavanja tog problema
– primeni odabranu metodologiju razvoja softvera i dođu do inženjerskog rešenja
– objektivno ocene razvijeno rešenje i prezentuje ga istraživačkoj zajednici

Sadržaj predmeta

Softverski procesi i njihovi modeli (klasični i iterativni). Faze životnog cikusa softvera: konceptualizacija, specifikacija, implementacija, eksploatacija. Aktivnosti u životnom ciklusu softvera. Sistemsko inženjerstvo i analiza sistema. Pregled metodoloških pristupa razvoju softvera (odnos agilnih i tradicionalnih metoda). Prototipski razvoj softvera. Razvoj softvera na bazi modela (Model Driven Architecture). Standardizacija funkcionalnih i vizualnih karakteristika tipskih softverskih sistema i izrada podloga za automatsko generisanje koda. Inženjerstvo softverskih zahteva (prikupljanje, definisanje). Analiza. Projektovanje (arhitekture, baze podataka, interfejsa). Kodiranje. Testiranje. Održavanje. Upravljanje softverskim projektima (troškovi, kvalitet softvera, upravljanje rizikom). Agilni pristup. Ekstremno (XP) programiranje. Programiranje u paru. Brzo razvijanje aplikacija. I/O Design – dizajn ulaza i izlaza. Softverske metrike. GQM. Metrike veličine produkta (KLOC, FP, Halstead-ove metrike…). Metrike kompleksnosti (McCabe-ovciklomatski broj). OO metrike (Chidamber-Kemerer, Lorenz-ove metrike, Veb metrike). Veb inženjerstvo. Alati i okruženja. Inverzno inženjerstvog. Clean room metoda. Brzi razvoj softvera. Metode i tehnike brzog razvoja softvera. Alati za brzi razvoj softvera. Generatori koda.
Istraživački rad:
– Upotreba savremenih alate za projektovanje softvera.
– Upotreba razvojnih okruženja za programiranje.
– Implementacija softverskih rešenja, koristeći adekvatne programske jezike.
– Primena tradicionalnih i savremenih metodologija za razvoj softvera.
– Definisanje zahteve za izradu softvera.
– Na osnovu zahteva za izradu softvera, projektovanje softversko rešenje.
– Kreiranje sve potrebne dokumentacije (projektne i korisničke).
– Definisanje i sprovođenje plana verifikacije i validacije softverskog rešenja koristeći odgovarajuće metode i tehnike.
– Planiranje i izvođenje testiranja softvera.
– Upravljanje zahtevima za promenom softvera
– Primena principa i postupaka vođenja softverskog projekta i procene resurse za njegovu izradu.
– Osposobljavanje za učešće u naučnim istraživanjima i stručnim projektima

Metode izvođenja nastave

Predavanja. Studijski primeri. Mentorski rad. Samostalan istraživački rad studenata.

Literatura

1. Sommerville, I. (2018), Software Engineering, Pearson, 10th ed.

2. Pressman, R., Maxim, B. (2019), Software Engineering: A Practitioners Approach, McGraw-Hill, 9th ed.

3. Z. Wan, X. Xia, D. Lo and G. C. Murphy, “How does Machine Learning Change Software Development Practices?,” in IEEE Transactions on Software Engineering, vol. 47, no. 9, pp. 1857-1871, 1 Sept. 2021, doi: 10.1109/TSE.2019.2937083.

4. Wiegers, K., Joy, B. (2013), Software Requirements, Microsoft Press

5. Marr, B. (2017)Data Strategy: How to Profit from a World of Big Data, Analytics and the Internet of Things, Kogan Page

6. Richards, M., Ford, N. (2020), Fundamentals of Software Architecture: An Engineering Approach, O’Reilly

7. Brooks, F. (1995), TheMythicalMan-Month: Essayson Software Engineering, Addison-Wesley Professional, Anniversary edition

8. Douglass, B.P. (2021), AgileModel-Based Systems Engineering: Improve system development, Packt Publishing   

9. Thomas, D., Hunt, A. (2019), ThePragmaticProgrammer: YourJourneyToMastery, 20th ed.

10. Unhelkar, B. (2017), Software Engineeringwith UML, Auerbach Publications