Razvoj softvera @ MATF / O projektima

Opšte informacije

Projekti na kursu “Razvoj softvera” su predispitna obaveza za svakog studenta koji polaže kurs. Kao i svaka druga predispitna obaveza, projekat se mora završiti i odbraniti pre datuma prvog ispita u Januar 1 ispitnom roku. Očekivano je da razvoj projekta zahteva višenedeljne aktivnosti od strane svih članova u timu, tako da je neophodno u startu dobro upravljati vremenom kako bi se izvuklo maksimalno znanje i iskustvo iz ove obaveze.

Bodovanje

U akademskoj 2024/2025. godini, projekti nose 40 poena. Raspodela poena je sledeća:

Pravljenje timova i biranje tema za projekat

Timovi se formiraju od strane studenata. Svaki tim mora imati najmanje 5 članova. Kada studenti oforme timove, prelazi se na definisanje teme.

Teme mogu biti proizvoljne. Primere projekata iz prethodnih akademskih godina možete pronaći na narednim vezama:

Jedino ograničenje je vezano za izbegavanje projekata čija je tema opsluživanje neke baze podataka. Ovakvi projekti nisu dozvoljeni (na primer, aplikacija za biblioteku, bioskop, i sl.). Ukoliko je neophodno da vaš projekat podržava perzistentne podatke, razmislite da li vam je dovoljno da koristite, na primer, datoteke.

Jednom kada se tim odluči za neku temu, neophodno je da se sa asistentima dogovori oko skupa funkcionalnosti. Ukoliko se ovaj korak preskoči (a ne bi trebalo), možete doći u situaciju da projekat bude suviše mali (ili jednostavan) i da time izgubite deo poena, ili da projekat bude zamišljen preobimno i da zbog toga ne uspete da ga privedete kraju u predviđenom roku i tako izgubite sve poene. Idealno, dogovor sa asistentom treba uraditi uživo - bilo pre/posle časova vežbi ili u nekom od termina konsultacija. Kada se tim i asistent dogovore oko teme, onda može da se započne sa planiranjem obaveza oko projekta i sa dizajnom projekta. Tek nakon toga može da se pređe na implementaciju).

Preduslovi za prijavljivanje projekata

Svaki član tima mora za sebe da otvori GitLab nalog, ukoliko ga već ne poseduje. Obratite pažnju na sledeće elemente prilikom otvaranja novog naloga:

Dodatno, potrebno je da svi članovi tima poznaju git sistem za kontrolu verzija. Dobar tutorijal za učenje kako git funkcioniše kroz niz primera se može pronaći na veb prezentaciji Git How To.

Prijava teme za projekat

Prijava se vrši popunjavanjem ankete koja će biti blagovremeno objavljena na stranici kursa (u delu sa obaveštenjima). Samo jedan član tima prijavljuje temu za projekat. Ovaj član tima će upisati informacije za sve ostale članove tima. Član koji prijavljuje projekat treba da upiše naredne informacije o svakom članu tima (uključujući i sebe):

Otvaranje repozitorijuma i rad na projektu

Nakon što istekne rok za prijave projekata, repozitorijumi će biti otvoreni od strane asistenata. Nije potrebno da studenti samostalno kreiraju repozitorijume za projekte (na GitLab, ili bilo kom drugom, servisu).

Timovi rade isključivo u repozitorijumu koji im je dodeljen.

Ukoliko želite tokom rada da se oko nečega konsultujete sa asistentima, pored diskusije uživo ili putem mejla, možete otvoriti novu primedbu (issue) u okviru vašeg GitLab repozitorijuma i dodeliti (assign) tu primedbu asistentima. U tekstu primedbe je neophodno da detaljno opišete za šta vam je potrebna konsultacija. Poželjno je da primedbu označite labelom za potraživanje pomoći.

Izveštaji tokom rada

Izveštaji se pišu svake sedmice, bez izuzetaka, prema rokovima koji su detaljnije objašnjeni u nastavku teksta. Sasvim je u redu da, ako neke sedmice niste ništa radili na projektu, u izveštaju napišete da niste radili. Važno je da izveštaj postoji.

Izveštaji se kreiraju kao deo wiki dokumentacije. Više informacija o ovome možete pronaći na zvaničnoj GitLab stranici posvećenoj GitLab Wiki.

Rok za izveštaje je svaka nedelja u 18h. Asistenti će tada prolaziti kroz projekte i gledati da li izveštaji postoje i da li su u ispravnom formatu. Ako je sve na mestu, biće dodeljeni poeni za tekući izveštaj. Ako bilo šta nedostaje, poeni neće biti dodeljeni i ne mogu se nadoknaditi. Zbog toga se preporučuje da se izveštaji grade inkrementalno, a ne u poslednji čas.

Rok za 1. izveštaj je kraj prve cele sedmice nakon otvaranja repozitorijuma. Na primer, ako su repozitorijumi otvoreni u sredu 1. novembra 2024, onda se očekuje da prvi izveštaj bude kreiran najkasnije do 10. novembra 2024. u 18h. (Dakle, ne treba da pravite izveštaj u nedelju, 3. novembra, već ako ste nešto radili na projektu od 1. do 3. novembra, to ćete upisati u izveštaj zajedno sa sedmicom od 4. do 10. novembra).

Svaki projekat mora imati najmanje 7 izveštaja. Ukoliko ste radili na projektu nakon 7. sedmice od otvaranja repozitorijuma, onda je sasvim korektno da imate i više od 7 izveštaja.

Tačni rokovi za sve izveštaje će biti saopšteni nakon otvaranja repozitorijuma za projekte.

Svaki izveštaj mora imati sve naredne informacije:

Primeri kako bi wiki stranice za izveštaje trebalo da izgledaju: prvi, drugi.

Specifikacija projekta

U akademskoj 2021/22. godini uvedena je specifikacija projekta kao element koji se posebno ocenjuje. U skladu sa time, samo ove godine razlikujemo elemente specifikacije za kolege koji prenose projekte iz prethodnih akademskih godina i kolege koji rade projekte “od nule” tokom ove akademske godine.

Ukoliko prenosite projekat…

Specifikacija projekta obuhvata naredne elemente:

Bodovi i rokovi: Bodovi od prethodnih godina se skaliraju na 30. Specifikacija projekata nosi dodatnih 10 poena. Ako želite da radite na specifikaciji projekta, potrebno je da se javite asistentima do 29. novembra 2024. godine. Rok za predaju specifikacije je petak, 20. decembar 2024. u 23:59.

Važno: Specifikacija projekta mora da se nalazi u direktorijumu naziva “specifikacija”, “documentation” ili “docs” u zavisnosti od toga kakvu ste konvenciju pratili, na korenoj putanji repozitorijuma (na master grani).

Ukoliko razvijate projekat…

Specifikacija projekta se vrši u dve faze:

Prva faza (10 poena):

Druga faza (10 poena):

Rokovi: Rok za predaju specifikacije projekta u prvoj fazi je 24. novembar 2023. u 13:59. Rok za predaju specifikacije projekta u drugoj fazi je isti kao za predaju finalne verzije projekta. Ovaj rok će biti objavljen na sajtu kursa (očekujte da to bude poslednji petak u decembru). Asistenti će uzimati u obzir samo ona pohranjivanja koje se nalaze na master grani do ovog roka. Ukoliko ste razvijali na drugim granama, molimo vas da do ovog roka integrišete sve izmene na master granu.

Važno: Specifikacija projekta mora da se nalazi u direktorijumu naziva “specifikacija”, “documentation” ili “docs” u zavisnosti od toga kakvu ste konvenciju pratili, na korenoj putanji repozitorijuma (na master grani).

Odbrane projekata

Postojaće 2 ili 3 dana za odbranu projekata u januaru, pre početka ispitnog roka Januar 1, sa nekoliko termina odbrana po jednom danu. Studenti će biti nasumično raspoređeni po terminima i danima. Moguće je menjati se sa nekim drugim timom ako vašem timu ne odgovara dodeljen dan ili termin. U tom slučaju je potrebno poslati mejl predmetnom profesoru i svim asistentima o zameni, kako bi te informacije bile evidentirane pre samih odbrana projekata.

Svaki tim ima 10 minuta za odbranu svog projekta. Nakon toga, profesor i asistenti će postavljati pitanja vezano za rad na projektu. Ova pitanja mogu uključivati, ali nisu ograničena na:

Prvenstveni cilj odbrana jeste da se sumira celokupan rad na projektu i stekne finalni utisak. Ne morate (a nije ni poželjno) da na odbrani predstavite elemente koji se nalaze u demo video snimku. Umesto toga, poželjnije je da prikažete način na koji ste implementirali elemente vašeg projekta, pogotovo ako imate zanimljive delove koje biste želeli da prikažete.

Očekivanja od projekta

U nastavku navodimo nekoliko najvažnijih elemenata kojima se treba voditi prilikom razvoja projekata.

Očekivanja od implementacije

Implementacija se vrši isključivo u programskom jeziku C++. Moguće je korišćenje biblioteka koji su napisani u drugim programskim jezicima, ali te biblioteke moraju da imaju C++ API preko kojeg se vrši komunikacija iz vaših aplikacija ka tim bibliotekama.

Skup funkcionalnosti projekta mora biti dovoljan. Ovo se, naravno, razlikuje između projekata, ali postoje neke generalne smernice koje treba pratiti:

Kod mora biti dovoljno kvalitetan. Očekuje se da studenti primenjuju znanje steknuto na predavanjima i vežbama. Primeri lošeg koda:

Očekivanja od izveštaja

Očekivanja od git repozitorijuma

Git grane moraju biti čiste. Ne bi trebalo pohraniti: