1072 Tehnologija programske opreme

1072 Tehnologija programske opreme

  • Vrsta programa: univerzitetni študijski program Upravna informatika 1. stopnja
  • 3. letnik
  • 6 ECTS
  • Tip predmeta: obvezni
  • Število ur predavanj: 45
  • Seminar: 10
  • Vaje: 20
  • Samostojno delo: 105
  • Nosilec: dr. Dejan Lavbič

1. Cilji in kompetence

Cilj predmeta je predstaviti pregled aktivnosti v življenjskem ciklu razvoja programske opreme, ki so potrebne ne glede na to, kateri model razvojnega procesa se uporablja. Da bi obvladali te aktivnosti, študentje kombinirajo teoretična znanja s praktičnim delom na (skoraj) realnem projektu.
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.

2. Vsebina predmeta

predavanja:
Temeljne vsebine:

  • Osnovni koncepti
    • Kaj je tehnologija programske opreme
    • Faze v razvoju programske opreme
    • Modeli razvojnega procesa (npr. slapovni, inkrementalni, agilni)
  • Orodja in okolja za razvoj programske opreme
    • Upravljanje konfiguracije in nadzor različic
    • Avtomatizirana gradnja in zvezna integracija
    • Orodja za pomoč pri analizi in načrtovanju (orodja CASE)
  • Opredelitev zahtev
    • Ugotavljanje zahtev
    • Dokumentiranje zahtev
    • Nefunkcionalne zahteve
    • Ovrednotenje in uporaba specifikacije zahtev
  • Modeliranje
    • Klasične tehnike (npr. diagrami entite-razmerja, diagrami podatkovnih tokov, diagrami prehajanja stanj)
    • Jezik UML 
  • Načrtovanje programske opreme
    • Principi načrtovanja (abstrakcija, modu¬larnost, delitev odgovornosti, skrivanje detajlov, sklopljenost in povezanost, ponovna uporaba)
    • Klasične metode načrtovanja (funkcio¬nalna dekompozicija, strukturirane metode)
    • Objektno usmerjena analiza in načrtovanje (RUP)
    • Načrtovalski vzorci
  • Programiranje
    • Dobre prakse (defenzivno programiranje, varno programiranje, uporaba mehanizmov za lovljenje izjem, prestrukturiranje kode)
    • Standardi kodiranja
    • Strategije za integracijo
  • Testiranje programske opreme
    • Testiranje in življenjski cikel
    • Strukturirani pregledi
    • Testiranje enot, integracijsko testiranje, testiranje funkcionalnosti, sistemsko testiranje
    • Testiranje po metodi črne in bele škatle
    • Regresijsko testiranje in avtomatizacija testiranja
    • Testno voden razvoj
  • Vzdrževanje in nadgradnje
    • Glavni vzroki problemov pri vzdrževanju
    • Značilnosti programske opreme, ki je primerna za vzdrževanje
    • Obratno inženirstvo in prestrukturiranje
    • Ponovna uporaba programske opreme

Izbirne vsebine:

  • Modeli za izboljšanje kakovosti razvojnega procesa
    • CMMI (Capability Maturity Model Integration) for Development
    • PSP (Personal Software Process)
    • TSP (Team Software Porcess)
  • Agilni in vitki razvoj programske opreme
    • Scrum
    • Extreme Programming
    • Kanban
    • Uravnoteženje agilnosti in discipline

vaje:

  • Skupinsko delo na projektih, ki so čim bolj podobni realnim.  Projekte lahko predlagajo študenti sami, potrditi pa jih morata nosilec predmeta in asistent. Lahko pa problem definira nosilec predmeta v sodelovanju z ustreznim naročnikom. Velikost skupin je omejena na štiri študente, študenti pa lahko sami izbirajo, s kom bodo delali. Vsaka skupina mora določiti vodjo projekta in ostale vloge, za katere meni, da so potrebne za realizacijo projekta. Študente spodbujamo, da delajo na projektu tudi izven ur, ki so po urniku predvidene za izvedbo predmeta. Za spremljanje dela na projektih  definiramo mejnike (kontrolne točke), na katerih študenti pokažejo, kaj so že naredili, in dobijo nasvete za nadaljnje delo.

3. Temeljna literatura in viri

  • Roger S. Pressman, Bruce R. Maxim: Software Engineering: A Practitioner's approach, 8th edition, McGraw Hill, 2014.
  • Ian Sommerville: Software Engineering, 9th edition, Pearson, 2010.
  • H. van Vliet: Software Engineering, Third Edition, John Wiley & Sons, 2008.
  • I. Jacobson, G. Booch, J. Rumbaugh: The unified software development process, Addison-Wesley, 1999.
  • Dodatno:
  • M. Seidl, M. Scholz, C. Huemer, G. Kappel: UML @ Classroom, An Introduction to Object-Oriented Modeling, Springer, 2015.
  • CMMI® for Development (CMMI-DEV), Version 1.3 CMU/SEI-2010-TR-033, Software Engine-ering Institute, Carnegie Mellon University, 2010.
  • K. Schwaber: Agile Project Management with Scrum, Microsoft Press, 2004.

4. Predvideni študijski rezultati

Po uspešnem zaključku tega predmeta bo študent zmožen:

  • poznati in razumeti aktivnosti v življenjskem ciklu razvoja programske opreme
  • poznati in razumeti različne pristope k razvoju programske opreme
  • poznati najpomembnejše metodologije za razvoj programske opreme
  • poznati in razumeti kriterije, ki vplivajo na izbor in prilagoditev razvojne metodologije
  • uporabljati diagramske tehnike za modeliranje novega sistema
  • razviti sposobnosti za skupinsko delo, vodenje, načrtovanje in organizacijo, pripravo predstavitev in medosebno komunici¬ranje, iskanje informacij, pisno in ustno poročanje
  • uporabiti pridobljeno znanje pri razvoju realnih softverskih projektov

5. Metode poučevanja in učenja

  • Predavanja z aktivno udeležbo študentov (razlaga, diskusija, vprašanja, primeri, reševanje problemov).
  • Laboratorijske vaje (skupinsko delo na večjem projektu razvoja programske opreme, ki služi kot študija primera za ilustracijo potrebnih aktivnosti).
  • Konsultacije (diskusija, dodatna razlaga, obravnava specifičnih vprašanj)

6. Načini ocenjevanja

  • Način (pisni izpit, ustno izpraševanje, naloge, projekt):
    Sprotno preverjanje: seminarske naloge, delo na projektu (50 %)
    Končno preverjanje: pisni izpit (50 %)