Programsko inženjerstvo

Opis predmeta

Ovaj predmet daje uvod u razvoj programskih sustava s naglaskom na razvojni ciklus programske potpore, analizu zahtjeva, specifikaciju, oblikovanje, ispitivanje i formalne metode verifikacije. Osim stjecanja teoretskih znanja, studenti sudjeluju u timskom projektu tijekom cijelog semestra te stječu važne vještine programskog inženjerstva, uključujući uporabu sustava za upravljanje inačicama, planiranje projekta, izlučivanje zahtjeva, oblikovanje arhitekture programske potpore, aktivnosti validacije, verifikacije i dokumentiranja. Modeliranje strukture i ponašanja programskih sustava zasnovano je na uporabi UML standarda. Projektni timovi primjenjuju principe i tehnike predstavljene na predavanjima s ciljem efikasnog razvoja srednje složenog programskog sustava i isporuke obaveznih artefakata.

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

Predavanja se održavaju tijekom 13 tjedana semestra u satnici od 3 sata tjedno.

Laboratorij

Laboratorijske vježbe održavaju se u obliku projekta tijekom cijelog semestra.

Način ocjenjivanja

Kontinuirana nastava Ispitni rok
Vrsta provjere Prag Udio u ocjeni Prag Udio u ocjeni
Kratke provjere znanja 0 % 9 % 0 % 0 %
Seminar/Projekt 50 % 30 % 50 % 30 %
Međuispit: Pismeni 0 % 25 % 0 %
Završni ispit: Pismeni 0 % 36 %
Ispit: Pismeni 50 % 70 %

Tjedni plan nastave

  1. Profesionalni razvoj programske potpore i procesi programskog inženjerstva. Svojstva dobre programske potpore i načela projektiranja. Izazovi programskog inženjerstva. Modeli procesa programskog inženjerstva. Etika programskog inženjerstva.
  2. Životni ciklus programske potpore: proces razvoja programske potpore, dionici na projektu i timski razvoj. Alati za suradnički razvoj programske potpore. Dokumentiranje programske potpore.
  3. Analiza problema, prikupljanje, svojstva i provjera zahtjeva. Klasifikacija zahtjeva. Modeliranje zahtjeva. Specifikacija zahtjeva programske potpore. Primjena UML standarda u inženjerstvu zahtjeva, modeliranje obrascima uporabe.
  4. Modeli procesa programskog inženjerstva. Generičke aktivnosti procesa. Modeliranje sustava, strukturni modeli, modeli ponašanja, oblikovanje zasnovano na modelu. Tradicionalni modeli, unificirani proces. Ubrzane metode razvoja.
  5. Principi i koncepti oblikovanja arhitekture programske potpore. Svojstva dobre arhitekture programske potpore. Odnos arhitekture i implementacije. Stilovi arhitektura, atributi kvalitete. Principi oblikovanja, proces izbora i vrednovanja arhitekture programske potpore.
  6. Oblikovanje objektno usmjerene arhitekture. Modeliranje objektno usmjerene arhitekture jezikom UML. Uporaba UML dijagrama razreda u modeliranju.
  7. Dinamičko modeliranje UML dijagramima stanja. Modeliranje i dokumentiranje implementacije UML dijagramima komponenti i razmještaja.
  8. Međuispit
  9. Arhitekturno oblikovanje programske potpore. Detaljno oblikovanje: oblikovni obrasci, radni okviri. Osnovni arhitekturni obrasci. Monolitne i raspodijeljene arhitekture programske potpore.
  10. Automatizacija procesa razvoja programa. Aplikacijski okviri. Oblikovanje aplikacija uporabom radnog okvira Spring.
  11. Tehnike i strategije ispitivanje programske potpore. Kvarovi i zatajenja programske podrške. Oblikovanje ispitnih slučajeva. Alati za ispitivanje programske potpore.
  12. Upravljanje i procjena kvalitete programske potpore, Automatizacija ispitivanja. Jezici i alati za ispitivanje. Proces ispitivanja i mjere za vrednovanje ispitivanja.
  13. Uloga formalnih pristupa modeliranju i analizi programske potpore. Alati za potporu formalnim metodama, formalna verifikacija, opis ponašanja sustava CTL formalizmom, provjera modela.
  14. Osnove održavanja programske potpore, priroda i potreba za održavanjem; troškovi održavanja; evolucija i kategorije održavanja. Upravljanje konfiguracijama. Korisnička potpora.
  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ć, N. Frid, D. Ivošević: Procesi programskog inženjerstva, e-skripta, FER ZEMRIS (http://www.unizg.fer.hr/predmet/opp), 2019.,

Predavanja

Laboratorijske vježbe

Za studente

Izvedba

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

Ocjenjivanje

86 izvrstan
72 vrlo dobar
60 dobar
50 dovoljan