Predavanja:
Vsebina predmeta se prilagaja trenutno aktualnim trendom na področju razvoja programske opreme in programskega inženirstva. Poudarek je na obravnavi agilnih metod in izbranih naprednih tematikah s področja programskega inženirstva:
1. Pregled področja programskega inženirstva in sodobnih metod razvoja programske opreme
2. Vodenje agilnih in iterativnih projektov razvoja programske opreme
- iterativni in inkrementalni razvoj (Unified process)
- obvladovanje tveganj na projektih
- agilni pristopi (Scrum, XP, Kanban, Vitek razvoj)
- primerjava agilnih in tradicionalnih pristopov
3. Izbrane prakse agilnih pristopov (Programiranje v parih, Testno voden razvoj programske opreme, Sprotno preoblikovanje kode (refactoring))
4. Napredno inženirstvo zahtev:
- proces inženirstva zahtev
- upravljanje zahtev in sprememb zahtev
- napredne tehnike zajema zahtev
5. Arhitekturno načrtovanje (arhitekturne odločitve, arhitekturni pogledi,arhitekturni vzorci)
6. Načrtovanje zanesljivih sistemov (zanesljivost, varnost, odpornost)
7. Testiranje
- testiranje v razvoju
- testiranje izdaj
- uporabniško testiranje
- posebnosti testiranja pri agilnem razvoju
8. Upravljanje konfiguracij (upravljanje verzij, izgradnja sistema, upravljanje sprememb, upravljanje izdaj)
9. Agilni razvoj in DevOps (zvezna dostava, zvezna postavitev, postavitveni cevovod)
10. Merila v programskem inženirstvu:
- merila kakovosti programske opreme
- merila kakovosti razvojnega procesa
11. Uporaba sodobnih pristopov razvoja programske opreme v razvojnih skupinah (vpeljevanje, sprejemanje, prilagajanje, spremljanje in vrednotenje)
Vaje:
Namen vaj je dvojen:
1. seznanjanje s sodobnimi pristopi in orodji za razvoj programske opreme;
2. Študija primera: empirično ovrednotenje posameznih pristopov k razvoju programske opreme na podlagi praktičnega dela na projektih, ki so čim bolj podobni realnim.
Delo izven kontaktnih ur:
Študenti v okviru študije primera razvijajo programe skladno s pravili izbranega razvojnega procesa ter razvojni proces ovrednotijo.