Sveučilište u Rijeci
ODJEL ZA INFORMATIKU
Ulica Radmile Matejčić 2, Rijeka
Akademska 2020/2021. godina

DINAMIČKE WEB APLIKACIJE 2

Studij: Preddiplomski studij informatike
Godina i semestar: 3. godina, 6. semestar
Studij: Preddiplomski dvopredmetni studij informatike
Godina i semestar: 3. godina, 6. semestar

Web stranice predmeta: https://lab.miletic.net/hr/nastava/kolegiji/DWA2/ https://moodle.srce.hr/2020-2021/

ECTS bodovi: 4 (3)

Nastavno opterećenje: 2 + 2 (2 + 1)

Nositelj predmeta:

v. pred. dr. sc. Vedran Miletić

Ured: Ulica Radmile Matejčić 2, O-520
Vrijeme konzultacija: utorkom od 14 do 16 sati ili po dogovoru e-mailom

Asistent:

Novi Asistent

Ured: Ulica Radmile Matejčić 2, O-XYZ
Vrijeme konzultacija: utorkom od 10 do 12 sati ili po dogovoru e-mailom

DINAMIČKE WEB APLIKACIJE 2

Razvijanje općih i specifičnih kompetencija (znanja i vještina)

  • usvajanje naprednijih znanja o metodama programiranja dinamičkih web aplikacija i servisa u programskom jeziku PHP

  • usvajanje tehnika korištenja sustava za upravljanje relacijskim bazama podataka (kao što su MySQL, PostgreSQL i druge koje koriste upitni jezik SQL) u procesu izrade dinamičkih web aplikacija i servisa

Korespodentnost i korelativnost programa

Sadržaj ovog kolegija izravno se nadovezuje na sadržaj kolegija Dinamičke web aplikacije 1.

Okvirni sadržaj predmeta

Relacijski model podataka i jezik SQL: definiranje tipova podataka; primarni, sekundarni i vanjski ključ; indeksiranje. Temeljna načela oblikovanja podataka. Tvorba baze podataka i tvorba tablica.

Konfiguracija baze podataka u dinamičkoj web aplikaciji ili servisu. Tvorba sastavljenih izraza. Metode rada sa bazom podataka. Transakcije. Količina podataka i učinkovitost mrežnih aplikacija i servisa. Rukovanje sa vremenom za izvršenje operacija. Zaštita integriteta baze podataka.

Objektno orjentirano programiranje u jeziku PHP: klase, objekti, metode; konstruktori, nasljeđivanje, nadjačavanje. Izrada dinamičkog web sjedišta uz uporabu klasa i ponovno iskorištavanje koda; korištenje okosnice. Objektno-relacijsko preslikavanje.

Sigurnost i zaštita podataka: identifikacija korisnika, ograničavanje pristupa i operacija; specifične ovlasti korisnika u dinamičkoj web aplikaciji ili servisu.

Strukturiranje i oblikovanje koda. Rukovanje greškama; strukturne greške, sintaktičke greške, logičke greške, greške pri izođenju aplikacija i servisa. Testiranje, metode traženja i ispravljanja grešaka (debugging). Uporaba prototipa i dokumentiranje.

Dominantni sustavi za izradu dinamičkih web aplikacija i servisa: ASP.NET Core (C#), Ruby on Rails (Ruby), Django (Python), Laravel (PHP), Spring (Java), Express (Node.js), Flask (Python), Lumen (PHP), Play (Java, Scala), Phoenix (Elixir), Sinatra (Ruby), Vapor (Swift), beego (go), Actix (Rust), Drogon (C++), Oat++ (C++); React, Angular, Vue, Svelte; usporedni prikaz specifičnosti, prednosti i ograničenja pojedinih tehnologija.

Oblici provođenja nastave i način provjere znanja

Predavanja, vježbe, samostalni zadaci, konzultacije.

Popis literature potrebne za studij i polaganje ispita

  1. Mitchell, L.J. PHP Web Services: APIs for the Modern Web. (O’Reilly, 2016).

  2. Redmond, P. Lumen Programming Guide: Writing PHP Microservices, REST and Web Service APIs. (Apress, 2016.)

  3. Lumen Documentation. (Laravel, 2021). Dostupno na: https://lumen.laravel.com/docs

  4. Wiggins, A. The Twelve-Factor App. (Heroku, 2017). Dostupno na: https://12factor.net/

  5. Skripte, prezentacije i ostali materijali za učenje dostupni u e-kolegiju.

Popis literature koja se preporučuje kao dopunska

  1. Stauffer, M. Laravel: Up & Running: A Framework for Building Modern PHP Apps. (O’Reilly, 2019).

  2. Laravel Documentation. (Laravel, 2021). Dostupno na: https://laravel.com/docs

  3. Symfony Documentation. (Symfony, 2021). Dostupno na: https://symfony.com/doc/current/index.html

  4. PHP Language Support at Heroku Dev Center. (Heroku, 2021). Dostupno na: https://devcenter.heroku.com/categories/php-support

  5. PHP Manual. (The PHP Group, 2021). Dostupno na: https://www.php.net/manual/

  6. Bergmann, S. PHPUnit Manual. Dostupno na: https://phpunit.readthedocs.io/

  7. phpDocumentor TODO. Dostupno na: https://phpdoc.org/

  8. Daux.io TODO. Dostupno na: https://daux.io/

  9. PHPStan User Guide. Dostupno na: https://phpstan.org/

  10. PHP Insights. Dostupno na: https://phpinsights.com/

  11. PHPoC. Dostupno na: https://www.phpoc.com/

  12. Rethans, D. Xdebug Documentation. Dostupno na: https://xdebug.org/docs/

  13. Fielding, R. T. Architectural Styles and the Design of Network-based Software Architectures (PhD Thesis). (University of California, Irvine, 2000).

  14. REST API Tutorial. Dostupno na: https://restfulapi.net/

  15. React Documentation. (Facebook, 2021). Dostupno na: https://reactjs.org/docs/getting-started.html

  16. Learn GraphQL. (The GraphQL Foundation, 2021). Dostupno na: https://graphql.org/learn/

Način praćenja kvalitete i uspješnosti izvedbe predmeta

Kroz ustrojeni sustav osiguranja kvalitete Odjela za informatiku.

Mogućnost izvođenja na stranom jeziku

Nema.

R . BR.

OČEKIVANI ISHODI

1.

integrirati elemente strukture sustava dinamičke web aplikacije i definirati dvosmjerne komunikacije između elemenata toga sustava (korisnički agent, dio web aplikacije koji se izvodi na strani klijenta (front-end), dio web aplikacije koji se izvodi na strani poslužitelja (back-end), PHP interpreter, sustav za upravljanje bazom podataka)

2.

složiti relacijsku bazu podataka korištenjem danog sustava za upravljanje i povezati je dinamičkom web aplikacijom ili servisom

3.

odabrati odgovarajuće dijelove okosnice za razvoj pojedinih značajki web aplikacije ili servisa

4.

stvoriti web aplikaciju ili servis prema zadanim funkcionalnim i nefunkcionalnim zahtjevima

5.

klasificirati i analizirati različite pristupe razvoju web aplikacija i servisa

6.

odabrati i primijeniti tehnike za dokumentiranje i testiranje koda web aplikacija ili servisa

7.

odabrati i primijeniti tehnike za traženje i ispravljanje grešaka web aplikacije ili servisa

8.

odabrati i primijeniti odgovarajući pristup analizi performansi web aplikacije ili servisa

AKTIVNOSTI I OCJENJIVANJE STUDENATA

VRSTA AKTIVNOSTI

ECTS

ISHODI UČENJA

SPECIFIČNA AKTIVNOST

METODA PROCJENJIVANJA

BODOVI MAX.

Pohađanje nastave

1

1–8

Prisutnost studenata

Popisivanje (evidencija)

0

Pisani ispit

0,5

1, 5

Online test na Merlinu

0–20 bodova, ovisno o stupnju točnosti i potpunosti

20

Kontinuirana provjera znanja

2

2, 3, 4, 7

Dva kolokvija

0–25 bodova za svaki kolokvij, ovisno o stupnju točnosti i potpunosti

50

Završni ispit

0,5

1–8

Implementacija web aplikacije ili servisa i prezentacija projekta

0–30 bodova, ovisno o stupnju točnosti i potpunosti

30

UKUPNO

4

100

Obveze i vrednovanje studenata

Pohađanje nastave

Nastava se odvija prema mješovitom modelu u kombinaciji klasične nastave u učionici i online nastave uz pomoć sustava za e-učenje Merlin (https://moodle.srce.hr/2020-2021/).

Pisani ispit

Tijekom semestra pisat će se online test na Merlinu koji će uključivati pitanja iz dijela gradiva predavanja i njemu će student moći skupiti maksimalno 20 bodova.

Kontinuirana provjera znanja

Tijekom semestra pisat će se dva kolokvija koji će uključivati praktične zadatke iz gradiva vježbi. Na svakom kolokviju student će moći skupiti najviše 25 bodova. Da bi ostvario ocjenske bodove na pojedinom kolokviju, student mora ostvariti barem 50% bodova od ukupnog broja bodova na tom kolokviju.

Ocjena iz kolegija

Završni ispit

Kontinuiranim radom tijekom semestra na prethodno opisani način studenti mogu ostvariti najviše 70 ocjenskih bodova, a da bi mogli pristupiti završnom ispitu moraju ostvarili 50% i više bodova (minimalno 35).

Studenti koji su skupili najmanje 35 ocjenskih bodova, mogu pristupiti završnom ispitu.

Tijekom semestra studenti će u grupama po dvoje ili troje odabrati projekt koji će izraditi i predati neposredno prije ispitnog roka, a zatim na završnom ispitu obraniti usmenim putem. Projekt se sastoji se od izrade web aplikacije ili servisa prema zadanim funkcionalnim i nefunkcionalnim zahtjevima i pripadne dokumentacije. Vrednovat će se točnost i potpunost predanog programskog koda i pripadne dokumentacije te opis načina rješavanja danog problema. Da bi student mogao pristupiti usmenoj obrani projekta, mora barem jednom doći na konzultacije s djelomično izrađenim projektom.

Završni ispit nosi udio od maksimalno 30 ocjenskih bodova, a smatra se položenim samo ako na njemu student postigne minimalno 50%-ni uspjeh (ispitni prag je 50% uspješno riješenih zadataka).

Ukoliko je završni ispit prolazan, skupljeni bodovi će se pribrojati prethodnima i prema ukupnom rezultatu formirati će se pripadajuća ocjena. U suprotnom, student ima pravo pristupa završnom ispitu još 2 puta (ukupno do 3 puta).

Konačna ocjena

Donosi se na osnovu zbroja svih bodova prikupljenih tijekom izvođenja nastave prema sljedećoj skali:

  • A – 90%–100% (ekvivalent: izvrstan 5)

  • B – 75%–89,9% (ekvivalent: vrlo dobar 4)

  • C – 60%–74,9% (ekvivalent: dobar 3)

  • D – 50%–59,9% (ekvivalent: dovoljan 2)

  • F – 0%–49,9% (ekvivalent: nedovoljan 1)

Ispitni rokovi

Redoviti:

  • 23. lipnja 2021.

  • 7. srpnja 2021.

Izvanredni:

  • 4. rujna 2021.

  • 18. rujna 2021.

Marko Dupor (Asseco) gostujuće predavanje Laravel u praksi (2h) Kristijan Lenković (iOLAP) gostujuće predavanje Express i AWS (2h) Milan Trbojević (GDI) gostujuće predavanje ASP.NET Core (1h) ??? (???) gostujuće predavanje Ruby on Rails (1h) Marin Jurjević (???) gostujuće predavanje Spring (1h) Matija Šegović (???) gostujuće predavanje infrastruktura (1h) ??? (???) gostujuće predavanje Django (1h) Luka Vretenar (Spyrosoft) gostujuće predavanje Flask (1h)

RASPORED NASTAVE – ljetni (IV) semestar ak. godine 2020./2021.

Nastava će se na predmetu odvijati u ljetnom semestru prema sljedećem rasporedu:

  • predavanja: srijeda 10:15–11:45, prostorija O-028

  • vježbe: četvrtak 10:15–15:45, prostorija O-350

Tj.

Datum

Vrijeme

Prostor

Tema

Nastava

Izvođač

1.

4. 03. 2021.

12:15–13:45

O-028

Objektno modeliranje web aplikacija i objektno programiranje u skriptnim programskim jezicima za web: klase, objekti, metode; konstruktori, nasljeđivanje, nadjačavanje

P

v. pred. dr. sc. Vedran Miletić

1.

5. 03. 2021.

12:15–15:45

O-350

Instalacija i struktura aplikacije

V

Novi Asistent

2.

11. 03. 2021.

12:15–13:45

O-028

Uzorci dizajna u web aplikacijama

P

v. pred. dr. sc. Vedran Miletić

2.

12. 03. 2021.

12:15–15:45

O-350

Konfiguracija i usmjeravanje

V

Novi Asistent

3.

18. 03. 2021.

12:15–13:45

O-028

Relacijski model i objektno-relacijsko preslikavanje. Složeni upiti i potreba za pristupanjem bazi podataka bez objektno-relacijskog preslikavanja

P

v. pred. dr. sc. Vedran Miletić

3.

19. 03. 2021.

12:15–15:45

O-350

Middleware

V

Novi Asistent

4.

25. 03. 2021.

12:15–13:45

O-028

Proceduralno programiranje. Asinkrono programiranje. Funkcijsko programiranje

P

v. pred. dr. sc. Vedran Miletić

4.

26. 03. 2021.

12:15–15:45

O-350

Kontroler

V

Novi Asistent

5.

1. 04. 2021.

12:15–13:45

O-028

Kontinuirana integracija i isporuka. Podrška za izvođenje na različitim verzijama platforme

P

v. pred. dr. sc. Vedran Miletić

5.

2. 04. 2021.

12:15–15:45

O-350

Zahtjev-odgovor

V

Novi Asistent

6.

8. 04. 2021.

12:15–13:45

O-028

Faktori razvoja web aplikacije: kod, ovisnosti, konfiguracija, usluge

P

v. pred. dr. sc. Vedran Miletić

6.

9. 04. 2021.

12:15–15:45

O-350

Provjera unosa

V

Novi Asistent

7.

15. 04. 2021.

12:15–13:45

O-028

Faktori razvoja web aplikacije: izgradnja, procesi, vezivanje na vrata, konkurentnost

P

v. pred. dr. sc. Vedran Miletić

7.

16. 04. 2021.

12:15–15:45

O-350

1. kolokvij

I

Novi Asistent

8.

22. 04. 2021.

12:15–13:45

O-028

Faktori razvoja web aplikacije: jednokratnost, paritet razvojne i produkcijske verzije, logging, administracijski procesi

P

v. pred. dr. sc. Vedran Miletić

8.

23. 04. 2021.

12:15–15:45

O-350

Baza podataka: izgradnja upita, straničenje

V

Novi Asistent

9.

29. 04. 2021.

12:15–13:45

O-028

Otklanjanje grešaka i profiliranje

P

v. pred. dr. sc. Vedran Miletić

9.

30. 04. 2021.

12:15–15:45

O-350

Baza podataka: migracije, sijanje

V

Novi Asistent

10.

6. 05. 2021.

12:15–13:45

O-028

Tehnike poboljšanja performansi: smanjenje broja zahtjeva, kompresija, korištenje mreža za distribuciju sadržaja, DNS prefetch, HTTP/2, web fontovi, optimizacije relacijske baze, keširanje podataka, keširanje operacija, JIT

P

v. pred. dr. sc. Vedran Miletić

10.

7. 05. 2021.

12:15–15:45

O-350

Objektno-relacijsko preslikavanje: odnosi, skupovi

V

Novi Asistent

11.

13. 05. 2021.

12:15–13:45

O-028

Sigurnost dinamičkih web aplikacija

P

v. pred. dr. sc. Vedran Miletić

11.

14. 05. 2021.

12:15–15:45

O-350

Objektno-relacijsko preslikavanje: mutatori, API

V

Novi Asistent

12.

20. 05. 2021.

12:15–13:45

O-028

Pisani ispit

I

v. pred. dr. sc. Vedran Miletić

12.

21. 05. 2021.

12:15–15:45

O-350

Baratanje greškama. Logging

V

Novi Asistent

13.

27. 05. 2021.

12:15–13:45

O-028

Pisanje i provođenje automatiziranih testova koda. Statička analiza koda

P

v. pred. dr. sc. Vedran Miletić

13.

28. 05. 2021.

12:15–15:45

O-350

Događaji. Redovi

V

Novi Asistent

14.

3. 06. 2021.

12:15–13:45

O-028

Pisanje i generiranje dokumentacije koda

P

v. pred. dr. sc. Vedran Miletić

14.

4. 06. 2021.

12:15–15:45

O-350

2. kolokvij

I

Novi Asistent

15.

10. 06. 2021.

12:15–13:45

O-028

Pregled postojećih sustava za razvoj web aplikacija

P

v. pred. dr. sc. Vedran Miletić

15.

11. 06. 2021.

12:15–15:45

O-350

Izgradnja jednostraničnih web aplikacija bez definiranja API-ja

V

Novi Asistent

P – predavanja
V – vježbe
I – pisani ili usmeni ispit, kontinuirana provjera znanja