Programiranje sistema

Cilj i ishod predmeta

Ovladavanje osnovnim teorijskim znanjima, tehnikama, alatima i preporučenom praksom iz oblasti programiranja sistema velike skale. Po okončanju predmeta studenti su sposobni da u razvoju složenih softverskih aplikacija uoče i primene softverske obrasce. Osposobljeni su da za konkretan zadatak izaberu i primene najpogodniju platformu, modeluju arhitekturu i dekomponuju sistem. U stanju su da implemetiraju delove u vidu softverskih komponenti. Takođe i da po potrebi primenjuju servisno-orijentisanu i mikroservisnu arhitekturu.

Teorijska nastava

Kategorije i katalozi softverskih obrazaca i antiobrazaca. Odvajanje specifikacije od implementacije. Poštovanje SOLID principa i primena dizajn obrazaca u razvoju zasnovanom na komponentama. Standardi za razvoj modularnih sistema za Java platformu – OSGi i Jigsaw. Softverske licence i verzije. Servisno orijentisana arhitektura i veb servisi. Tehnologije i standardi za implementaciju veb servisa – SOAP i REST. Konceptualni dizajn servisa: definisanje domena servisa, određivanje atomičkih servisa, kreiranje kompozitnih servisa. Razvoj logičkih servisa. Konverzija dizajna u specifikaciju: specifikacija operacija, specifikacija servisnog ugovora, specifikacija poruka. Upotreba mikroservisa. Razvoj aplikacija zasnovanih na metodologiji 12-factor app. Poređenje mikroservisa, servisno-orijentisanih arhitektura i arhitektura monolitnih aplikacija. Različite implementacije mikroservisa – domenski orijentisane arhitekture (Data-driven), programiranje vođeno događajima (Event-driven). Upravljanje distribuiranim bazama podataka. Agregacija logova mikroservisa i njihovo razumevanje. Bezbednost aplikacija zasnovanih na mikroservisima. Upotreba mikroservisa kod IoT aplikacija.

Praktična nastava

Obrasci i antiobrasci u programiranju sistema velike skale. Primer softverske komponente koja koristi druge komponente i njeno proširenje dodatnim funkcionalnostima. Korišćenje build alata za Javu – Apache Ant, Apache Maven i Gradle. Vežba kreiranja komponente sa odvojenom specifikacijom. HTTP protokol i REST arhitektura. Implementacija mikroservisne aplikacije korišćenjem Spring Boot tehnologije. Rad sa relacionim i nerelacionim bazama podataka u mikroservisnoj arhitekturi. Upotreba Hiberante ORM alata za perzistenciju podataka u relacionu bazu. Komunikacija između mikroservisa i korišćenje sistema za razmenu poruka. Izolovanje aplikacija u Docker kontejnere (pisanje Dockerfile-a, registar Docker image-a), orkestracija kontejnera, skaliranje mikroservisne aplikacije.

1 thought on “Programiranje sistema”

Comments are closed.