Programsko inženjerstvo

Ishodi učenja

  1. Usporediti koncepte programskog inženjerstva i opisati različite procese programskog inženjerstva i faze razvojnog ciklusa programske potpore
  2. Primijeniti jezik UML za modeliranje različitih pogleda na aplikaciju.
  3. Primijeniti unificirani proces i agilne metodologije
  4. Razviti dokumentaciju programske potpore koristeći UML modele.
  5. Primijeniti oblikovne obrazce u malom do srednje složenom programskom projektu.
  6. Pokazati rad u malim projektnim timovima na primjeru srednje složenog projekta.
  7. Sposobnost da se primijeni i vrednuju principi oblikovanja i razvoja u izgradnji programskih sustava različite složenosti.
  8. Primijeniti tehnike ispitivanja i osiguranja kvalitete programske potpore na razini modula i razumjeti primjenu na razinama sustava i organizacije.
  9. Koristiti odgovarajuće alate za dokumentiranje, modeliranje, oblikovanje i uklanjanje pogrešaka.

Oblici nastave

Predavanja

Samostalni zadaci

Laboratorij

Tjedni plan nastave

  1. Razmatranja na razini sustava, Uvod u modele softverskih procesa, Programiranje u velikim projektima naspram individualnog programiranja, Vrednovanje modela softverskih procesa, Načela projektiranja softvera
  2. Timski razvoj sofvera, Procjena napora (na osobnoj razini), Rizici razvoja softvera, Tehnike mjerenja i procjene softvera, Osiguranje kvalitete softvera i uloga mjerenja, Alati za kontrolu verzija sofvera
  3. Sofverski procesi i životni ciklus, Agilni i tradicionalni modeli razvoja, Zahtjevi na softver i specifikacija zahtjeva, Načela projektiranja softvera, Programski proizvod i metrika procesa; razrada procesa., Evaluacija. simulacija i poboljšanje softverskih procesa
  4. Opisivanje funkcionalnih zahtjeva. primjerice slučajevima korištenja ili korisničkim pričama, Svojstva zahtjeva. uključujući konzistentnost. valjanost. potpunost i izvedivost, Iznalaženje zahtjeva na softver, Opisivanje podataka. primjerice dijagramima razreda ili dijagramima entiteti-veze, Nefunkcionalni zahtjevi i njihova veza s kvalitetom softvera, Evaluacija i primjena specifikacija zahtjeva
  5. Alati za analizu i oblikovanje zahtjeva, Tehnike modeliranja analize zahtjeva, Razmatranja neizvjesnosti u pogledu primjene softvera ili sustava, Prototipiranje, Osnovni koncepti formalne specifikacije zahtjeva, Specifikacija zahtjeva, Validacija zahtjeva, Praćenje zahtjeva
  6. Paradigme projektiranja, Modeli strukture i modeli ponašanja, Oblikovni obrasci, Veza između zahtjeva i dizajna: transformacija modela. dizajn ugovora. invarijante, Koncepti sofverske arhitekture i standardne arhitekture
  7. Refaktoriranje dizajna i obrasci dizajna, Korištenje komponenti: selekcija. oblikovanje. prilagodba i sklapanje komponenti; komponente i obrasci; komponente i objekti., Kvaliteta unutarnjeg dizajna, Kvaliteta vanjskog dizajna, Mjerenje i analiza kvalitete dizajna, Balansiranje različitih aspekata kvalitete
  8. Međuispit
  9. Programska okruženja za automatizaciju pojedinih procesa konstukcije programa, Aplikacijski okviri, Načela sigurnog dizajna i sigurnog programiranja, Ponovno korištenje softvera, Dokumentacija i stil programiranja
  10. Alati za testiranje. uključujući alate za statičku i dinamičku analizu, Inspekcije. recenzije i pregledi, Vrste/tehnike ispitivanja, Osnove ispitivanja, Ograničenja ispitivanja u pojedinim domenama. kao što su paralelni i sigurnosno-kritični sustavi, Statički i dinamički pristupi verifikaciji
  11. Planiranje validacije; Dokumentacija za validaciju, Verifikacija i validacija artefakata koji nisu kod programa (dokumentacija. pomoćne datoteke. materijali za uvježbavanje korištenja), Praćenje kvarova i tehnička potpora za takve aktivnosti, Upravljanje i procjena kvalitete programske potpore, Automatizacija ispitivanja; Jezici i alati za ispitivanje, Proces ispitivanja i mjere za vrednovanje ispitivanja
  12. Uloga tehnika formalne specifikacije i analize u životnom ciklusu programske potpore, Jezici za iskazivanje tvrdnji u programima i pristupi analizi tvrdnji, Formalni pristupi modeliranju i analizi programske potpore, Alati za potporu formalnim metodama, Semantika komunicirajućih procesa, Procesne algebre. konceptualni modeli i Petrijeve mreže za modeliranje komunikacijskih procesa, Vremenska logika za verifikaciju reaktivne programske potpore
  13. Kruti i robustni razvoj programske potpore s domenski specifičnim jezicima, Specifikacijski jezici. jezici za ispitivanje i jezici za verifikaciju, Verifikacija programa u izvođenju, Provjera modela za reaktivnu programsku potporu, Automatsko i na automatima temeljeno programiranje za istovremene sustave, Validacija i verifikacija poslovnih procesa
  14. Koncepti i mehanizmi integracije alata, Kategorije i načela održavanja softvera, Karakteristike održivog softvera i metrike za održavanje, Upravljanje softverskom konfiguracijom, Upravljanje izdanjima, Preoblikovanje sustava, Povratno inženjerstvo, Ažuiranje softvera i ugradnja zakrpa
  15. Završni ispit

Studijski programi

Sveučilišni preddiplomski
Računarstvo (studij)
(5. semestar)

Literatura

(.), I. Sommerville. Software Engineering 10th Edition, Pearson Education, 2016,
(.), E. J. Braude, Michael E. Bernstein Software Engineering: Modern Approaches 2nd Edition, Waveland Press,2016,
(.), H. Gomma: Software Modeling and Design: UML, Use Cases, Patterns, and Software Architectures, Cambridge University Press, 2011,
(.), N. Bogunović, V. Sruk, A. Jović: Oblikovanje programske potpore - Materijali za predavanja, FER ZEMRIS, (http://www.unizg.fer.hr/predmet/opp) 2014,
(.), V. Sruk, D. Ivošević, A. Jović: Oblikovanje programske potpore - Projektna dokumentacija, FER ZEMRIS, (http://www.unizg.fer.hr/predmet/opp), 2013,
(.), A. Jović, M. Horvat, I. Grudenić: UML-dijagrami: zbirka primjera i riješenih zadataka, sveučilišni priručnik, GRAPHIS d.o.o. Zagreb, 2014,
(.), A. Jović, M. Horvat, D. Ivošević, N. Frid: Procesi programskog inženjerstva, e-skripta, FER ZEMRIS (http://www.unizg.fer.hr/predmet/opp), 2014,

Izvedba

ID 183400
  Zimski semestar
5 ECTS
R3 Engleski jezik
R2 E-učenje
45 Predavanja
0 Auditorne vježbe
26 Laboratorijske vježbe
0 Konstrukcijske vježbe