Sodobne metode razvoja programske opreme

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

  1. 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
  2. VAVPOTIČ, Damjan, VASILECAS, Olegas. An approach for assessment of software development methodologies suitability. Elektronika ir elektrotechnika. 2011, vol. 114, no. 8, str. 107-110
  3. 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
  4. 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
  5. 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.

Bodi na tekočem

Univerza v Ljubljani, Fakulteta za elektrotehniko, Tržaška cesta 25, 1000 Ljubljana

E:  dekanat@fe.uni-lj.si T:  01 4768 411