Preskoči na glavno vsebino

Sodobne metode razvoja programske opreme

2022/2023
Program:
Interdisciplinarni magistrski študijski program 2. stopnje Računalništvo in matematika
Letnik:
1 in 2 letnik
Semester:
drugi
Vrsta:
izbirni
ECTS:
6
Jezik:
slovenski, angleški
Nosilec predmeta:

Damjan Vavpotič

Izvajalec (kontaktna oseba):

Damjan Vavpotič

Ure na teden – 2. semester:
Predavanja
3
Seminar
0.67
Vaje
1.33
Laboratorij
0
Vsebina

Predavanja:
Vsebina predmeta se prilagaja trenutno aktualnim trendom na področju razvoja programske opreme. Trenutno je prilagojena obravnavi agilnih metod in empiričnemu ovrednotenju njihove učinkovitosti:
1. Pregled značilnosti agilnih metod za razvoj programske opreme
2. Vodenje agilnih projektov razvoja programske opreme
iterativen in inkrementalen razvoj
metoda Scrum
3. Tipične prakse ekstremnega programiranja
Programiranje v parih
Testno voden razvoj programske opreme
Sprotno preoblikovanje kode (refactoring)
Orodja za podporo testno vodenemu razvoju in preoblikovanju kode
4. Pomanjkljivosti ekstremnega programiranja
5. Kanban in vitek razvoj programske opreme
6. Metrike v programski opremi in merjenje učinkovitosti razvojnega procesa
7. Študija primera: empirično ovrednotenje posameznih praks iz točk 2 in 3
8. Primerjava agilnega pristopa z modeli za discipliniran razvoj programske opreme (Personal Software Process, Team Software Process, Capabilty Maturity Model)
Vaje:
Namen vaj je dvojen:
1. seznanjanje s sodobnimi orodji za razvoj programske opreme,
2. 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 razvijajo programe, ki so sestavni del projekta, ki služi kot osnova za študijo primera.

Temeljni literatura in viri
  1. K. Schwaber: Agile Project Management with Scrum, Microsoft Press, 2004.
  2. K. Beck: Extreme Programming Explained, Addison-Wesley, več izdaj.
  3. D. Anderson, Kanban – Successful Evolutionary Change for Your Technology Business, Sequim, WA: Blue Hole Press, 2010.
  4. K. Beck: Test-Driven Development: By Example, Addison-Wesley, 2003.
  5. M. Cohn: User stories applied, Addison-Wesley, 2004.
    Dodatna literatura:
    B. Boehm, R. Turner: Balancing Agility and Discipline – A Guide for the Perplexed, Pearson Education, 2004.
  6. CMMI for Development (CMMI-DEV), Version 1.2. CMU/SEI-2006-TR-008, Software Engineering Institute, Carnegie Mellon University, 2006.
Cilji in kompetence

Cilj predmeta je poglobljena obravnava sodobnih (trenutno aktualnih) metod 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.

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.

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.

Načini ocenjevanja

Sprotno preverjanje (domače naloge, kolokviji in projektno delo)
Končno preverjanje (pisni in ustni izpit)
(ocene: 5 (negativno), 6-10 (pozitivno), ob upoštevanju Statuta UL)

Reference nosilca

Pet najpomembnejših del:
1. MAHNIČ, Viljan. A capstone course on agile software development using Scrum. IEEE trans. ed., Feb. 2012, vol. 55, no. 1, str. 99-106.
2. MAHNIČ, Viljan, HOVELJA, Tomaž. On using planning poker for estimating user stories. J. syst. softw.. Sep. 2012, vol. 85, no. 9, str. 2086-2095.
3. MAHNIČ, Viljan, ŽABKAR, Nataša. Measuring progress of Scrum-based software projects. Electronics and Electrical Engineering. 2012, vol. 18, no. 8, str. 73-76.
4. MAHNIČ Viljan. Teaching Scrum through team-project work : students' perceptions and teacher's observations. International journal of engineering education, 2010, vol. 26, no. 1, str. 96-110.
5. MAHNIČ, , Viljan, HOVELJA, Tomaž. Teaching user stories within the scope of a software engineering capstone course: analysis of students’ opinions. International journal of
engineering education, 2014, vol. 30, no. 4, str. 901–915.

Celotna bibliografija je dostopna na SICRISu:
http://sicris.izum.si/search/rsr.aspx?lang=slv&id=4767.