PSI
Principi softverskog inženjerstva je, kako da kažem, obavezni predmet u šestom semestru.
Korisne veze
- ETF SI (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 do prvog kolokvijuma se odnose na različite faze projekta (izrada SSU i prototipa, formalna inspekcija, Modelovanje baze podataka) i Git, a posle nastavljaju da se bave programskim jezikom Python (radni okvir Django i wsgiref). Kako dolaze faze izrade projekta, tako se održavaju i vežbe iz tih faza (modelovanje veb aplikacija i testiranje).
Na prvom kolokvijumu (na papiru) od gradiva dolazi gradivo rađeno na predavanjima i jedan zadatak iz Git-a, 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 (od školske 2023/2024 će možda teorijski deo biti izbačen sa ispita). Dok se na vežbama radi Python, na laboratorijskim vežbama obrađuje se Gerrit.
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 su dostupni sa stranice predmeta, ali bez rešenja. Rešenja teorijskog dela junskog roka 2020. mogu se naći na drajvu iz odeljka sa korisnim vezama.
Sledeći ispitni rokovi su dostupni na vikiju:
Ukoliko želite da dodate rok, posetite stranicu za pravljenje roka.
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 fale rešenja rokova. Pomozite vikiju rešavanjem rokova i postavljanjem njihovih rešenja na viki.
- Rokovi kojima nedostaje poneko rešenje su:
- Na ovom predmetu postoje stariji rokovi lošeg kvaliteta. Pomozite vikiju prepisivanjem tih rokova na viki.