Opis predmeta
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.
Cilji in kompetence
Cilj predmeta je poglobljena obravnava naprednih tematik s področja programskega inženirstva s poudarkom na sodobnih metodah razvoja programske opreme v primerjavi z že uveljavljenimi pristopi. Študenti delajo na obsežnejšem projektu, ki služi kot študija primera za ovrednotenje novih pristopov, da bi ugotovili njihove prednosti in pomanjkljivosti.
Predvidene kompetence:
- sposobnost opredelitve, razumevanja in reševanja kreativnih strokovnih izzivov na področju računalništva in informatike;
- sposobnost uporabe pridobljenega znanja pri samostojnem delu za reševanje tehničnih in znanstvenih problemov na področju računalništva in informatike; sposobnost nadgradnje pridobljenega znanja,
- sposobnost skupinskega dela v profesionalnem delovnem okolju; vodenje manjše strokovne skupine;
- sposobnost administrativnega vodenja procesov, povezanih z raziskovanjem,
- industrijo, izobraževanjem in drugimi področji;
- sposobnost razumevanja in uporabe znanja računalništva in informatike na drugih tehničnih in relevantnih področjih (ekonomija, organizacijske vede ipd.);
- praktično znanje in spretnosti, potrebne za uspešno strokovno delo na področju računalništva in informatike;
- samostojno reševanje zahtevnih razvojnih, inženirskih in organizacijskih nalog kot tudi povprečno zahtevnih raziskovalnih nalog na področju računalništva in informatike.
Metode poučevanja in učenja
Predavanja z aktivno udeležbo študentov (razlaga, diskusija, primeri, reševanje problemov). Laboratorijske vaje s praktičnim delom na večjem projektu, ki služi kot študija primera za ovrednotenje posameznih pristopov k razvoju programske opreme.
Predvideni študijski rezultati
Po uspešnem zaključku tega predmeta bo študent zmožen:
· poznati in razumeti sodobne pristope k razvoju programske opreme
· razumeti ključne prednosti sodobnih metod razvoja programske opreme (v primerjavi z že uveljavljenim tradicionalnim pristopom)
· uporabljati orodja, ki podpirajo sodobne metode razvoja programske opreme
· uporabiti sodobne metode razvoja programske opreme pri razvoju dejanskih softverskih projektov
· empirično ovrednotiti rezultate novih metod
· bolje razumeti različne faktorje in okoliščine, ki vplivajo na uspešnost softverskih projektov
- izboljšati sposobnosti za skupinsko delo, vodenje, načrtovanje in organizacijo, medsebojno komuniciranje, pisno in ustno poročanje.
Reference nosilca
- VAVPOTIČ, Damjan, BAJEC, Marko. An approach for concurrent evaluation of technical and social aspects of software development methodologies. Information and software technology. 2009, vol. 51, no. 2, str. 528-545
- VAVPOTIČ, Damjan, VASILECAS, Olegas. An approach for assessment of software development methodologies suitability. Elektronika ir elektrotechnika. 2011, vol. 114, no. 8, str. 107-110
- VAVPOTIČ, Damjan, HOVELJA, Tomaž. Improving the evaluation of software development methodology adoption and its impact on enterprise performance. Computer science and information systems. Jan. 2012, vol. 9, no. 1, str. 165-187
- VRHOVEC, Simon, TRKMAN, Marina, KUMER, Aleš, KRISPER, Marjan, VAVPOTIČ, Damjan. Outsourcing as an economic development tool in transition economies : scattered global software development. Information technology for development. ISSN 0268-1102, 2015, vol. 21, no. 3, str. 445-459
- BAJEC, Marko, VAVPOTIČ, Damjan. A framework and tool-support for reengineering software development methods. Informatica. ISSN 0868-4952, 2008, vol. 19, no. 3, str. 321-344
Celotna bibliografija je dostopna na SICRISu:
http://www.sicris.si/search/rsr.aspx?lang=slv&id=13311http://sicris.izum.si/search/rsr.aspx?lang=slv&id=4767.
Temeljni viri in literatura
1. I. Sommerville: Software Engineering, Addison-Wesley, 9. (2011) ali 10. (2016) izdaja.
2. R. Stephens: Beginning Software Engineering, Wrox, 2015.
3. D. Anderson, Kanban – Successful Evolutionary Change for Your Technology Business, Sequim, WA: Blue Hole Press, 2010.
Dodatna literatura:
1. M. Cohn: User stories applied, Addison-Wesley, 2004.
2. K. Beck: Extreme Programming Explained, Addison-Wesley, več izdaj.
3. K. Schwaber: Agile Project Management with Scrum, Microsoft Press, 2004.