Sodobne metode razvoja programske opreme (FRI)

Visokošolski učitelji: Mahnič Viljan
Število kreditnih točk: 6
Semester izvajanja: poletni
Koda predmeta: 63515



Opis predmeta

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.

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:

Poznavanje in razumevanje:

  • sodobnih pristopov k razvoju programske opreme
  • ključnih faktorjev, ki vplivajo na uspešnost tovrstnih projektov
  • pomena empiričnega spremljanja razvojnega procesa.

Uporaba: Uporaba obravnavanih metod in orodij pri delu na konkretnem projektu.

Refleksija: Razumevanje okoliščin, ki vplivajo na potek razvoja programskih sistemov.

Prenosljive spretnosti - niso vezane le na en

predmet: Sposobnost 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.





Gradiva

  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.
  6. Dodatna literatura:
  7. B. Boehm, R. Turner: Balancing Agility and Discipline – A Guide for the Perplexed, Pearson Education, 2004.
  8. CMMI for Development (CMMI-DEV), Version 1.2. CMU/SEI-2006-TR-008, Software Engineering Institute, Carnegie Mellon University, 2006.



Študiji na katerih se predmet izvaja

  • 1 letnik - 2. stopnja - Multimedija