PSI
Principi softverskog inženjerstva je obavezni predmet u šestom semestru.
Korisne veze
- ETF SI (rok iz juna 2020. godine, beleške)
Nastava
Na predavanjima se rade sledeće oblasti:
- Prvi kolokvijum: Modeli procesa, RUP, agilne metodologije, inženjerstvo zahteva
- Ispit: Objektno-orijentisano projektovanje, projektovanje veb aplikacija, mikroservisi, testiranje softvera, procena napora
Vežbe prate predavanja do prvog kolokvijuma, a posle nastavljaju da se bave programskim jezikom PHP (radni okviri CodeIgniter ili Laravel). Kako dolaze faze izrade projekta, tako se održavaju i vežbe iz tih faza (izrada SSU i prototipa, formalna inspekcija, modelovanje veb aplikacija i testiranje).
Na prvom kolokvijumu (na papiru) od gradiva dolazi gradivo rađeno i na predavanjima na vežbama (vežbe prate predavanja), na drugom kolokvijumu (na računaru) samo sa vežbi, a na ispitu (teorija na papiru, praktični deo na računaru) dolazi zajedno gradivo drugog kolokvijuma i sa predavanja drugog i trećeg bloka. Dok se na vežbama radi PHP, na laboratorijskim vežbama obrađuje se Python (radni okvir Django) i u tri pomenuta radna okvira moguće je raditi drugi kolokvijum i ispit.
Projekat
Projekat se radi u grupama od 2 do 4 člana, i cilj projekta jeste da se studenti upoznaju sa radom u timu na nekom složenijem softveru. Radi se iz nekoliko faza:
- Smišljanje teme
- U ovoj fazi je cilj da smislite nacrt projekta, koji sadrži barem 3 kategorije korisnika i dovoljan broj funkcionalnosti (primeri se mogu naći na stranici predmeta)
- Ukoliko se planira rad sa nekim drugim tehnologijama koje nisu obrađene na predmetu (ali sa kojima se takođe ne radi na drugim predmetima) to treba javiti predmetnim nastavnicima
- Izrada dokumenta sa specifikacijom slučajeva upotrebe i prototipa aplikacije
- Prvi deo ove faze sastoji se od toga da se u projektu definiše barem 12 (3 po članu tima) specifikacija slučajeva upotrebe (SSU) za koje se primeri mogu naći na stranici predmeta
- Drugi deo sastoji se od toga da se za napravljene SSU prave prototipi korišćenjem nekih alata za pravljenje prototipa (npr. Pencil, Figma) ili HTML
- Preporučuje se rad u HTML kako bi se prototip kasnije mogao iskorititi prilikom implementacije
- Moguća je takođe raspodela tako da jedan član pravi ceo prototip, a ostali pišu SSU dokumente
- Formalna inspekcija projekata drugih timova
- Prvi deo ove faze sastoji se od toga da radite formalnu inspekciju projekta drugog tima na sledeći način:
- Drugi tim vama pošalje projekat a vi pošaljete projekat nekom drugom timu (nasumično izabrano od strane asistenata)
- Održite sastanak na kome vođa tima podeli uloge članovima svog tima, a dostupne uloge su:
- Moderator — glavna osoba za ovu fazu
- Zapisničar — vodi zapisnik na konačnom sastanku tima
- Inspektori — članovi tima koji pregledaju prototip i SSU dokumente drugom timu
- Nakon podele uloga, inspektori pregledaju i popunjavaju logove inspektora
- Održava se konačni sastanak tima na kom zapisničar zapisuje zaključke sa sastanka
- Posle sastanka, zapisničar i moderator sastavljaju izveštaj o defektima
- Izveštaj o defektima se šalje drugom timu, a svi dokumenti u ovoj fazi predmetnim asistentima
- Prvi deo ove faze sastoji se od toga da radite formalnu inspekciju projekta drugog tima na sledeći način:
- Modelovanje baze podataka
- Cilj ove faze je modelovati bazu koja će se koristiti u fazi implementacije korišćenjem alata ERwin Data Modeler, Toad Data Modeler ili MySQL Workbench
- Pored modela baze, u ovoj fazi je takođe potrebno sastaviti dokument sa specifikacijom baze podataka čiji se primer može pronaći na stranici predmeta
- Implementacija veb aplikacije
- Glavna faza projekta, u kojoj se pravi da aplikacija radi to što je specifikovano u SSU i nacrtu projekta
- Neophodno je demonstrirati korišćenje XMLHttpRequest/Fetch API (na vežbama nazvani AJAX)
- Unutar svakog fajla sa kodom neophodno je napisati autore, dok je iznad svake klase i metode kontrolera i modela potrebno dodati dokumentacione komentare šta oni rade
- Vođa tima mora napisati dokument sa korišćenim alatima, gde su ukratko nabrojani svi alati korišćeni u svim fazama i opisi njihovog korišćenja
- Na kraju faze je potrebno predati i dovoljno popunjen model baze podataka u vidu SQL skripte
- Modelovanje veb aplikacije
- Modelovanje implementirane aplikacije u alatu StarUML, na sličan način kao na Projektovanju softvera
- Potrebno je iskoristiti relacije između klijentskih stranica kao što je pokazano na vežbama, ali u uputstvu može da se pominje neka zastarela WAE-UML ekstenzija koju nije moguće instalirati na novom StarUML i koja se ne mora koristiti
- Testiranje veb aplikacije
- Potrebno je sprovesti jedinično testiranje kontrolera i modela, kao i integraciono testiranje korišćenjem Selenium
- Nije potrebno pravljenje nikakvog test plana
Projekat se generalno radi u programskim jezicima obrađivanim na vežbama i laboratorijskim vežbama, ali moguće je izabrati neku drugu tehnologiju koja dosad nije bila obrađivana na fakultetu. Obavezna je upotreba nekog alata za verzionisanje softvera, i rezultati svake faze se šalju na repozitorijum koda.
Laboratorijske vežbe
Laboratorijske vežbe su pokaznog karaktera. Postoji četiri laboratorijske vežbe i na njima se obrađuju:
- Alati za verzionisanje poput Git i Subversion
- Jezik PHP sa MVC uzorcima / Django radni okvir (osnovno)
- PHP radni okviri / Django radni okvir (napredno)
- Povezivanje veb aplikacije sa ORM / Dodatne funkcionalnosti Django radnog okvira
Za svaku laboratorijsku vežbu, pored časa održanog uživo, ima dostupan snimak. Rad sa Django radnim okvirom se obrađuje samo na drugoj, trećoj i četvrtoj laboratorijskoj vežbi, i ne obrađuje se na regularnim vežbama.
Ispitni rokovi
Ispitni rokovi nisu dostupni sa stranice predmeta, ali jun 2020. se može naći na drajvu iz odeljka sa korisnim vezama.
Način ocenjivanja
- — bodovi sa prvog i drugog kolokvijuma, prvi kolokvijum se može nadoknaditi u prva dva ispitna roka dok se drugi kolokvijum može nadoknaditi bodovima sa ispita (0-20 svaki)
- — bodovi sa timskog projekta
- — bodovi sa ispita
- Konačni bodovi:
- Uslov: i
Potrebna pomoć
- Na ovom predmetu fale postavke rokova. Pomozite vikiju pamćenjem/prepisivanjem rokova i postavljanjem na viki.
- Na ovom predmetu postoje stariji rokovi lošeg kvaliteta. Pomozite vikiju prepisivanjem tih rokova na viki.
- Jun 2020. godine sa Vukovog drajva.