Programsko inženjerstvo
Ishodi učenja
- Usporediti koncepte programskog inženjerstva i opisati različite procese programskog inženjerstva i faze razvojnog ciklusa programske potpore
- Primijeniti jezik UML za modeliranje različitih pogleda na aplikaciju.
- Primijeniti unificirani proces i agilne metodologije
- Razviti dokumentaciju programske potpore koristeći UML modele.
- Primijeniti oblikovne obrazce u malom do srednje složenom programskom projektu.
- Pokazati rad u malim projektnim timovima na primjeru srednje složenog projekta.
- Sposobnost da se primijeni i vrednuju principi oblikovanja i razvoja u izgradnji programskih sustava različite složenosti.
- Primijeniti tehnike ispitivanja i osiguranja kvalitete programske potpore na razini modula i razumjeti primjenu na razinama sustava i organizacije.
- 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.
LaboratorijLaboratorijske vježbe održavaju se u obliku projekta tijekom cijelog semestra.
Tjedni plan nastave
- Razmatranja na razini sustava. Uvod u modele softverskih procesa. Programiranje u velikim projektima naspram individualnog programiranja. Vrednovanje modela softverskih procesa. Načela projektiranja softvera.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- Međuispit.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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
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
Ocjenjivanje
86 izvrstan
72 vrlo dobar
60 dobar
50 dovoljan