Sadržaj se učitava...
mdi-home Početna mdi-account-multiple Djelatnici mdi-script Studiji mdi-layers Katedre mdi-calendar-clock Raspored sati FOI Nastava search apps mdi-login
Analiza i razvoj programa
Software Analysis and Design
2024/2025
6 ECTSa
Organizacija poslovnih sustava 1.4 (OPS)
Baze podataka i baze znanja 1.4 (BPBZ)
Baze podataka i baze znanja 1.3 (BPBZ)
Informacijsko i programsko inženjerstvo 1.4 (IPI)
Informatika u obrazovanju 1.4 (IUO)
Katedra za razvoj informacijskih sustava
RI
1. semestar
Osnovne informacijemdi-information-variant Izvođači nastavemdi-account-group Nastavni plan i programmdi-clipboard-text-outline Model praćenjamdi-human-male-board Ispitni rokovimdi-clipboard-check-outline Rasporedmdi-calendar-clock Konzultacijemdi-account-voice
Izvođenje kolegija
Cilj kolegija
Cilj predmeta Analiza i razvoj programa je upoznavanje studenata sa suvremenim pristupima, metodama i alatima koji se koriste kroz sve faze životnog ciklusa razvoja suvremenog programskog proizvoda. Razvoj programa postao je važna grana industrije koja ima svoje zakonitosti i specifične standarde. Predmet obrađuje sve faze životnog ciklusa koje pri nastanku prolazi novi programski produkt: analizu domene sustava, specifikaciju programskih zahtjeva, metode i tehnike modeliranja programa, razvoj programa, ispitivanje programa i uklanjanje grešaka uz naglasak na postizanje unutarnje kvalitete i lakše održivosti softvera. Pri tome studenti uče temeljne pristupe korištene pri razvoju i inženjerstvu složenih programskih sustava te suvremene alate koji te postupke olakšavaju.
Preduvjeti
Kolegij nema definirane preduvjete
Norma kolegija
Predavanja
30 sati
Vježbe u praktikumu
30 sati
Nastavnik Uloga na kolegiju Oblik nastave Tjedana Sati Grupa
Stapić Zlatko Nositelj Predavanja 8 3 1
Vrček Neven Nositelj Predavanja 2 3 1
Posarić Lovro Suradnik Vježbe u praktikumu 8 3 2
Masnec Lea Suradnik Vježbe u praktikumu 8 3 4
Zekić Žana Vanjski suradnik Vježbe u praktikumu 2 3 6
Sadržaj predavanja
  • Paradigme razvoja programskih sustava
    Životni ciklus programskog proizvoda. Odnos razvojnog i životnog ciklusa. Pristupi razvoju programskog sustava i moguće varijacije: vodopadni, spiralni. Kompleksni razvojni ciklusi (paralelni razvoj, povratna veza).
  • Projekt razvoja programskog sustava
    Specifičnosti projekata u programskoj industriji. Veza projekta i razvojnog ciklusa programskog proizvoda. Karakteristične metode planiranja i praćenja projekata u razvoju programskog proizvoda. Troškovi projekta. Projektni timovi i njihove karakteristike: područja specijalizacije, potrebna znanja, preklapanje područja znanja. Alati za praćenje provedbe projekta razvoja programskog proizvoda.
  • Analiza zahtjeva na programski sustav – korisnički zahtjevi
    Definicija korisničkih zahtjeva. Poslovni procesi i utjecaj na korisničke zahtjeve. Izvori korisničkih zahtjeva. Organiziranje korisničkih zahtjeva. Tehnike prikupljanja korisničkih zahtjeva: intervjui, upitnici, poslovni dokumenti.
  • Analiza zahtjeva na programski sustav – sistemski zahtjevi
    Definicija sistemskih zahtjeva. Vrste sistemskih zahtjeva. Mapiranje korisničkih i sistemskih zahtjeva. Funkcionalni i nefunkcionalni zahtjevi. Prijelazno i dinamičko modeliranje. Organiziranje funkcionalnih zahtjeva.
  • Modeliranje programskog sustava
    Arhitektura programskog sustava i temeljni gradivni elementi. Dijagramske tehnike i notacije za modeliranje programskog sustava. Objektno orijentirana notacija. Temelji koncepti OO pristupa. Nasljeđivanje, enkapsulacija, polimorfizam. Objektno orijentiran pristup u programskim jezicima i alatima. UML paradigma i primjena pri arhitekturalno i struktnom dizajnu.
  • Prakse razvoja
    Moderne prakse i pristupi razvoju programskih proizvoda. Agilni razvoj. Razvoj vođen testiranjem. Razvoj vođen umjetnom inteligencijom.
  • Koncepti razvojnog dizajna programskog proizvoda
    Definicija razvojnog dizajna programskog proizvoda. Osnovna pitanja razvoja arhitekture (npr. postojani podaci, upravljanje memorijom, iznimke, itd.). Kontekst dizajna unutar višestrukih životnih ciklusa razvoja programskog sustava. Principi dizajna (skrivanje informacija, kohezija i uparivanje). Interakcije između dizajna i funkcionalnih i nefunkcionalnih zahtjeva. Dizajn usmjeren na kvalitetu atributa (npr. pouzdanost, iskoristivost, izvedba, mogućnost testiranja, tolerancija grešaka, itd.). Arhitekturalni stilovi, predlošci, ponovna iskoristivost. Interoperabilnost.
  • Alati za potporu razvoju i modeliranju programskog proizvoda
    Vrste alata za razvoj i modeliranje programskog proizvoda (npr. arhitekturalni, za statičku analizu, za dinamičku procjenu, itd.). Napredna integrirana razvojna okruženja. Alati za automatizaciju razvojnog procesa i DevOps.
  • Arhitektura programskog sustava
    Moderne arhitekture mobilnih i distribuiranih sustava. Slojevi arhitekture programskog sustava i tipične arhitekture. Karakteristične tehnologije po svakom od slojeva. Povezivanje slojeva i integracija programskog sustava. Utjecaj arhitekture na svojstva programskog sustava (otpornost na ispade, kvarove, brzinu).
  • Komponente i integracija
    Komponentna paradigma. Promišljanje ponovne iskoristivosti programskog koda. Vrste programskih komponenata. Tehnologije za razvoj programskih komponenata. Upravljanje transakcijama komponenata. Integracija komponenti. Tržište programskih komponenti.
  • Korisničko sučelje i korisničko iskustvo
    Opći principi dizajna humanog računalnog sučelja i korisničkog iskustva. Korištenje modova, navigacija. Tehnike kodiranja i vizualni dizajn (npr. boje, ikone, vrste slova, itd.). Vrijeme odziva i povratna informacija. Načini dizajna (npr. orijentiran na meni, forme, pitanja-odgovori, itd.); Lokalizacija i internacionalizacija. Metode dizajna humanog računalnog sučelja. Multimedija (npr. I/O tehnike, glas, prirodni jezik, web-stranica, zvuk, itd.). Metafore i konceptualni modeli. Psihologija humanog računalnog sučelja. Dizajn orijentiran korisniku (eng. User Centered Design).
  • Aplikacijski okviri
    Razlog i svrha aplikacijskih okvira. Vrste aplikacijskih okvira. Osmišljavanje i dizajn aplikacijskih okvira. Dokumentiranje okvira. Ispitni scenariji. Specifičnosti razvoja aplikacijskih okvira.
  • Modularan dizajn strukture programskog poizvoda
    Definicija modularnosti. Mjerenje modularnosti. Koheziija. Spajanje (eng. coupling). Moduli vs. komponente. Prednosti i nedostaci modularnog dizajna. Dizajn i implementacija modularnih sustava.
  • Nadzor i ispitivanje programskog sustava
    Značaj i pristupi ispitivanju programskog sustava. Ispitivanje komponenti i cjelovitog sustava. Odnos prema korisničkim zahtjevima. Scenariji ispitivanja. Analiza opsega ispitivanja (npr. ogranak, temeljna putanja, višestruki uvjeti, tok podataka, iznimke itd.). Obrada iznimaka (pisanje ispitnih primjera za pokretanje obrade iznimaka). Tehnika ispitivanja funkcionalnosti. Integracijsko ispitivanje. Razvijanje ispitnih primjera temeljenih na slučajevima upotrebe i/ili izjavama korisnika. Automatizacija i kontinuiranost procesa nadzora i ispitivanja modernim pristupima.
  • Specifične programske arhitekture
    Transakcijske i analitičke programske arhitekture. Kritični zahtjevi. Suprotni ciljevi dizajna i razvoja programskog sustava u zavisnosti od vrste arhitekture. Čista arhitektura.
Sadržaj seminara/vježbi
  • Vježbe
    U okviru vježbi studenti će raditi na agilnom razvoju programskog proizvoda i usvajanju teorijskih koncepata s predavanja. Radom u timu, i pod pretpostavkom da imaju određeno predznanje o svim fazama razvoja programskog proizvoda, studenti će razvijati sustav u kojem će se poseban naglasak staviti na mobilnu aplikaciju, višeslojnu i servisno orijentiranu arhitekturu, primjenu predložaka za razvoj programskog koda kako bi se osigurala modularnost i fleksibilnost proizvoda, te sinkronizaciju UML dijagrama i programskog koda. Spomenuti projekti neće biti tehnološki ograničeni, te će studenti moći razvijati aplikacijske okvire ili programske proizvode za bilo koju mobilnu, nosivu ili pametnu, IoT ili povezanu platformu.
  • Vježbe 01
    Cilj ovih vježbi je upoznati studente s osnovama programskog alata C#.Net i razvojnim okruženjem Microsoft Visual Studio 2008/2010. Studenti će se kroz jednostavnu aplikaciju podsjetiti objektnog pristupa u razvoju programskih proizvoda, te će savladati osnove komunikacije među klasama u smislu prosljeđivanja vrijednosti.
  • Vježbe 02
    Cilj ovih vježbi je upoznati studente s naprednijim konceptima programskog jezika C# kao što su komunikaciju između dviju klasa pomoću konstruktora, iteracije, selekcije, prosljeđivanje parametara i primanje vrijednosti, dinamičko alociranje memorije, te korištenje jednodimenzionalnih polja i slično. Važan cilj ovih vježbi je i upoznati studente s mogućnostima i načinom korištenja alata „Visual Studio 2008 Class Designer“, koji omogućuje sinkronizaciju dijagrama klasa i programskog koda.
  • Vježbe 03
    Cilj ovih vježbi je upoznati studente sa razvojem korisničkog sučelja u mobilnim aplikacijama. Studenti će osim korisničkog, kreirati i logičko sučelje te kreirati klase i dinamičkih alocirati objekte klase koji ga implementiraju. U drugom dijelu vježbi bit će kreirana infrastruktura slanja obavijesti korisniku.
  • Vježbe 04
    Studenti će na kraju ovih vježbi znati kreirati i koristiti korisničke kontrole (engl. User Controls), kreirati sučelje prema klasama koje podrazumijeva uporabu korisničkih kontrola te kreirati plug-in infrastrukturu koja podržava korištenje različitih korisničkih kontrola sukladno odabranoj implementaciji sučelja.
  • Vježbe 05
    Studenti će na kraju ovih vježbi znati kreirati novi Web Servis te ga objaviti na lokalno ili udaljeno računalo, kreirati reference između različitih projekata te napraviti reference na web servis i koristiti ga u aplikaciji.
  • Vježbe 06
    Studenti će na kraju ovih vježbi znati asinkrono pozivati web servise, kreirati posebne objekte (delegate) i kreirati vlastite događaje (engl. events) u svrhu korištenja delegata za pozivanje web servisa, ali i za rješavanje ostalih problema komunikacije među dretvama i objektima.
  • Vježbe 07
    Cilj ovih vježbi je upoznati studente sa načinima kreiranja i korištenja mobilnih baza podataka (mBP). Posebna pozornost biti će posvećena kreiranju arhitekturalnog sloja za rad s bazom podataka u višeslojnoj arhitekturi programskog proizvoda.
  • Vježbe 08
    Studenti će kroz ove vježbe dobiti uvid u načine i mogućnosti sinkronizacije standardnih i mobilnih baza podataka, te naučiti kreirati web servise u svrhu sinkronizacije podataka. U drugom dijelu vježbi studenti će naučiti koristiti Microsoft predefinirane objekte za rad s bazom i za sinkronizaciju podataka, te praktično provesti jednosmjernu sinkronizaciju pomoću web servisa.
  • Vježbe 09
    Studenti će kroz ove vježbe ponoviti mogućnosti korištenja web servisa u svrhu sinkronizacije podataka i praktično provesti jednosmjernu sinkronizaciju pomoću web servisa i parametara. Cilj vježbi je također olakšati studentima da shvate mehanizme inkrementalnog razvoja sustava (nadogradnja web servisa, nadogradnja podataka i slično).
  • Vježbe 10
    Cilj ovih vježbi je upoznati studente s naprednim konceptima koji se koriste pri razvoju mobilnih programskih proizvoda, kao što su rad s navigacijom (GPS), rad s portovima, pohrana parametara aplikacije i slično, kontinuirano komuniciranje s web servisima i slično.
Ishodi učenja kolegija
  • Integrirati tehnologije za razvoj programskih proizvoda za mobilne, nosive ili pametne uređaje.
  • Kreirati i koristiti suvremene mobilne, udaljene ili distribuirane baze podataka.
  • Dizajnirati suvremene arhitekture složenog ili distribuiranog informacijskog sustava.
  • Postaviti plan i provesti automatizirano i kontinuirano testiranje, integraciju i postavljanje programskog proizvoda u svrhu osiguranja kvalitete.
  • Primijeniti i dokumentirati moderne metodološke pristupe i alate u razvoju programskih proizvoda.
  • Primijeniti odgovarajuće metode i tehnike razvoja aplikacijskog (razvojnog) okvira ili programskog proizvoda u svakoj fazi životnog ciklusa.
  • Osmisliti, dokumentirati i implementirati višeslojnu, modularnu ili komponentnu aplikacijsku arhitekturu na primjeru projekta iz prakse.
Ishodi učenja programa
  • Primijeniti etička načela, zakonsku regulativu i norme koje se koriste u struci
  • Procijeniti uvjete za primjenu suvremenih informacijskih i komunikacijskih tehnologija (IKT), savjetovati druge u primjeni IKT-a te u zadanom kontekstu odrediti utjecaj na pojedinca, organizaciju i društvo.
  • Modelirati probleme iz područja informacijskih i poslovnih sustava korištenjem matematičkih metoda, metoda razvoja informacijskih sustava i koncepata planiranja, upravljanja i poslovanja
  • Analizirati uvjete, donositi odluke, savjetovati druge te primijeniti odluke u zadanom kontekstu rješavanja problema iz područja informacijskih i poslovnih sustava
  • Vrednovati učinkovitost uvođenja i korištenja programskih rješenja i pripadajuće infrastrukture za konkretne problemske domene
  • Voditi interdisciplinarni tim i raditi u takvom timu te razviti planove upravljanja karijerom za sebe i članove tima uključujući elemente cjeloživotnog učenja i razvoj kompetencija poduzetnosti
  • Svrsishodno komunicirati na hrvatskom i stranom jeziku, unaprijediti komunikaciju sa svim dionicima (klijentima, korisnicima i kolegama) uz primjenu odgovarajuće terminologije uključujući popularizaciju suvremenih informatičkih trendova i tema
  • Primijeniti odgovarajuće metode i tehnike projektiranja, planiranja, razvoja i uvođenja složenog informacijskog sustava u suvremenim razvojnim okolinama
  • Optimizirati procese poslovnog sustava organizacije u suradnji sa stručnjacima odabirom metoda i koncepata planiranja, upravljanja organizacijom i analize poslovanja
  • Oblikovati softversku arhitekturu složenog informacijskog sustava, odabrati i postaviti njegovu odgovarajuću tehnološku platformu i sigurnosne mehanizme te programirati dijelove složenog sustava
  • Utvrditi uvjete za primjenu ključnih informacijskih tehnologija, procijeniti njihov učinak i u zadanom kontekstu donositi odluke i davati savjete vezano uz upravljanje IT uslugama i resursima
  • Analizirati uvjete za primjenu, savjetovati i u zadanom kontekstu donositi odluke vezane uz metodološke pristupe razvoju organizacijskih i informacijskih sustava
  • Osmsliti projekt učinkovitog unapređenja poslovnog sustava u osnovnim vertikalnim područjima uz korištenje suvremenih IKT, realizirati takav projekt vlastitim razvojem ili izborom odgovarajućeg standardnog softvera
  • Analizirati objekte poslovnog sustava te postaviti formalni model objektnog sustava kao temelj izgradnje informacijskog sustava.
  • Dizajnirati i izgraditi sustav temeljen na distribuiranim bazama podataka i velikim izvorima znanja korištenjem tehnika izgradnje velikih i distribuiranih podatkovnih sustava i razrješavanja konflikata između kompetitivnih izvora znanja.
  • Izgraditi računalni sustav za pohranu podataka i znanja uključujući digitalne arhive.
  • Predložiti poboljšanja poslovnog sustava temeljem optimiziranog modela poslovnih procesa i poslovnih pravila.
  • Modelirati i izgraditi analitički podatkovni sustav skladišta podataka i višedimenzionalnih kocaka temeljen na postojećem transakcijskom sustavu.
  • Izgraditi i optimizirati model procesa, klasa podataka i poslovnih pravila poslovnog sustava te predložiti poboljšanja poslovnog sustava.
  • Modelirati i izgraditi sustave temeljene na znanju i sustave za podršku u odlučivanju.
  • Identificirati potrebe za strategijskim i upravljačkim promjenama u organizacijama
  • Primijeniti metode upravljanja životnim ciklusom informacijskog sustava organizacije te osmisliti i primijeniti suvremene strategije nastupa na tržištu informatičkih proizvoda i usluga
  • Definirati elemente strategijskog kontinuuma i primijeniti metode strategijskog upravljanja uz potporu informacijsko komunikacijske tehnologije.
  • Razviti i validirati sustav mjerenja organizacijske učinkovitosti uz primjenu IKT
  • Analizirati tržište primjenom informacijsko-komunikacijskih tehnologija
  • Analizirati poslovne procese te preporučiti i primijeniti odgovarajuće informacijske i komunikacijske tehnologije za unapređenje poslovnih procesa
  • Prezentirati razvoj i organizaciju odgojno-obrazovnih sustava, povijest informatike i računarstva, ustroj odgojno-obrazovnog procesa, društvenu uvjetovanost odgojno-obrazovne prakse i primijeniti suvremene odgojno-obrazovne koncepcije
  • Organizirati nastavni proces uključujući i poučavanje upotrebom tehnologije i u kriznim uvjetima te osmisliti postupke za upravljanje procesom učenja i poučavanja uz primjenu odrednica djelovanja i ponašanja ljudske jedinke i dinamike grupe
  • Artikulirati nastavni sat primjenjujući primjerene nastavne metode i oblike rada, didaktičke principe i nastavna sredstva
  • Voditi pedagošku dokumentaciju, ispitivanje, ocjenjivanje i vrednovanje u skladu sa zakonskom regulativom i kriterijima osobne i profesionalne etičnosti
  • Poučavati učenike primjeni različitih oblika učenja, samovrednovanju i samoreguliranom učenju
  • Upravljati razrednim odjeljenjem, i surađivati s roditeljima i drugim strukturama unutar i izvan odgojno-obrazovne institucije
  • Primijeniti i sukreirati suvremene računalne sustave u dizajnu obrazovnog informacijskog sustava u nastavi u skladu s pedagoškim i metodičkim principima te ih popularizirati sukladno trendovima i potrebama
  • Primijeniti principe proceduralnog programiranja, interneta, weba, stolnih aplikacija u kontekstu rješavanja problema iz realnog svijeta
  • Formulirati problem iz realnog svijeta u smislu problemskog zadatka u informatici te ga znati riješiti i rješenje evaluirati
  • Izvoditi proces poučavanja u multikulturalnim i multietničkim sredinama i drugim posebnim uvjetima (treća dob, centri izvrsnosti …)
  • Strukturirati i procjenjivati osobna i profesionalna iskustva (razvijati refleksivnu praksu) uključujući cjeloživotno učenje
Osnovna literatura
  • Martin, C.; Robert: Clean architecture : a craftsman’s guide to software structure and design, Prentice Hall, 2017.
  • Richards M.; Ford N.: Fundamentals of Software Architecture: An Engineering Approach, O'Reilly, 2020.
  • Bennett, S.; McRobb, S.; Farmer, R. Object-Oriented Systems Analysis and Design using UML. McGraw-Hill, 1999.
  • Bennett, S.; McRobb, S.; Farmer, R. Object-Oriented Systems Analysis and Design using UML. McGraw-Hill, 1999.
  • Stevens, P.; Pooley, R. Using UML - software engineering with objects and components. Addison Wesley, 2000.
  • Sommerville, Software Engineering. 5th edition, Addison-Wesley, 1996.
  • Pressman, R.S. Software Engineering: A Practioner's Approach. 5th edition, McGraw-Hill, 2000. (or the European adaptation by D. Ince).
  • Gilb, T. Principles of Software Engineering Management. Addison-Wesley, 1988.
Dopunska literatura
Slični kolegiji
Redoviti studenti Izvanredni studenti
U kalendaru ispod se nalaze konzultacije predmetnih nastavnika, no za detalje o konzultacijama možete provjeriti na profilu pojedinog predmetnog nastavnika.
2024 © Fakultet organizacije i informatike, Centar za razvoj programskih proizvoda