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.

Predmet učimo na programih

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.

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