Semestrální práce

Cílem semestrální práce je ověřit znalosti nabyté v rámci přednášek a cvičení, a umožnit studentům vyzkoušet si práci na větším projektu v Javě. Semestrální práci je možno vykonávat samostatně či ve dvojicích, větší skupiny nejsou dovoleny. Při práci ve dvojici se předpokládá, že rozsah celé práce bude větší než při samostatné práci. Studenti v týmu mohou být z různých paralelek - v tom případě se ale domluví s oběma cvičícími, u kterého z nich budou práci odevzdávat.

Téma semestrální práce si můžete určit sami, a pro formalizaci zadání je určen první checkpoint (viz níže); případně si můžete vybrat jedno z předpřipravených témat. V tom případě se však očekává, že dané zadání “obohatíte” o vlastní netriviální funkcionalitu. Předpřipravená zadání vám také mohou sloužit jako vodítko pro vlastní téma, abyste stanovili dostatečný rozsah práce. Rozsah bude případně korigován vašim cvičícím v jednotlivých checkpointech.

Předpřipravená témata

Nutné požadavky

  1. Semestrální práce bude psána v Javě >=21 (či po domluvě v jiném jazyku nad JVM), a spravována pomocí Mavenu.
  2. Bude doložitelný progress projektu na GitLab. Průběžně (každou hotovou funkcionalitu s popisem) commitují všichni členové týmu. Pozor: neadekvátně málo commitů (velmi orientačně: méně než 10) obvykle vzbudí u cvičících (oprávněné) podezření na plagiát!
  3. Oba účastníci projektu se musí podílet na tvorbě GUI. Alespoň jedno netriviální okno bude vytvořeno bez použití Designeru v Netbeans nebo jiného “klikacího” nástroje.
  4. V projektu student předvede schopnost správně použít vlákna (za to se nepovažuje použití např. třídy Timer). Například vytvořením hodin reálného času, které interagují s průběhem hry.
  5. Několik netriviálních tříd bude pokryto unittesty nebo komplexnějším funkčním testem, za použití libovolného testovacího frameworku.
  6. Budou použity loggery. Logovací zprávy bude možno zapnout nebo vypnout parametrem při spuštění.
  7. Veškeré netriviální public prvky v programu musí mít smysluplný Javadoc. Za triviální se považují například jednoduché gettery a settery bez vedlejších efektů, ty Javadoc nepotřebují.
  8. Všechny netriviální části kódu budou vhodně okomentovány.
  9. Ve Wiki projektu musí být aktuální a použitelný uživatelský manuál a technická dokumentace programu - jeho vlastností, struktura projektu, použité technologie podle výše popsaných podmínek. Pozor, nejedná se o Javadoc!
  10. Všechno kromě dokumentace na GitLabu musí být v angličtině. Anglicky musí být i Javadoc.

Odevzdání

Průběžná práce a samotné odevzdání semestrálních prací probíhá ve třech “Checkpointech”, a to vždy v GitLab projektu, který vám byl automaticky založen na začátku semestru, a který naleznete na adrese https://gitlab.fel.cvut.cz/B242_B0B36PJV/username - tedy např. https://gitlab.fel.cvut.cz/B242_B0B36PJV/novakjan.

CP1 - Vize projektu

Termín odevzdání („deadline“): 9.3.2025

Cílem tohoto odevzdání je formalizovat zadání, na kterém budete dále pracovat. Zadání bude tvořeno PDF dokumentem, o rozsahu ~2x A4, ve kterém je popsáno kompletní fungování aplikace z hlediska uživatele, a který by měl obsahovat:

  • zvolené téma práce
  • manažerské shrnutí - 1 - 2 odstavce, představující vizi projektu
  • podrobný popis funkcionalit, které bude/nebude práce umět, jako:
    • průběh a cíl hry
    • vlastnosti postavy
    • popis předmětů ve hře, jejich vlastnosti (a případná interakce s nimi)
    • ovládání, způsob načítání a ukládání
    • a další…
  • pro lepší pochopení lze přidat obrázky jako wireframes obrazovek, náčrty herního pole nebo herních map, vizuální návrhy prvků aplikace, apod.

V této fázi byste tedy měli mít podrobně vymyšlený celý projekt, a mělo by stačit se pustit do programování. Zároveň by měl mít každý po jeho přectení jasnou představu, jak bude vaše práce vypadat. Tedy například nikoliv „hráč bude hledat určité předměty“, ale „hráč bude hledat krystal, lektvar a meč…“; či nikoliv „uživatel ovládá raketu“, ale „uživatel pomocí kláves WASD ovládá raketu“.

Dokument se bude nacházet jednak ve vašem GitLab projektu, a jednak bude nahrán do BRUTE pod patřičný upload. Cvičící bude hodnotit podrobnost dokumentu, jeho formu i rozsah celé práce.

CP2 - Objektový návrh

Termín odevzdání („deadline“): 11.4.2025

V rámci druhého checkpointu připravíte ve svém repozitáři:

  • kostru kódu - deklarace tříd, jejich vlastností a metod (můžou být bez implementace)
  • základní technická dokumentace (zjednodušený diagram tříd a vztahů mezi nimi, popis stavů hry/aplikace, použité technologie, knihovny, apod.)
  • rozdělení práce mezi členy týmu (pokud pracujete ve dvojici)

Po tomto odevzdání by se základní struktura kódu neměla výrazně lišit, a mělo by stačit pouze doimplementovat předpřipravené třídy.

Veškeré dokumenty by se opět měly nacházet jednak v GitLab projektu, a jednak nahrané do BRUTE pod patřičný upload.

CP3 - Finální prezentace

Poslední checkpoint je zaměřen nejen na dokončení celého projektu dle zadání z CP1, ale i finální prezentaci, jejíž formu vám sdělí cvičící na hodině.

Součástí odevzdání je i uživatelská dokumentace, která může být formou uživatelského manuálu, a která zahrnuje všechny podstatné aspekty aplikace (včetně jejího spuštění!). Inspirací vám může být například tato příručka pro hru FlatOut UC.

Dokončena by měla být i technická dokumentace, obohacena o dokumentaci ve formátu JavaDoc (není třeba generovat HTML formu!). Pokud bude použita komunikace po síti, doporučuje se specifikovat komunikační protokol - tedy jaká data a v jakém formátu se budou mezi serverem a klientem posílat.

Kompletní práce se odevzdává během dvou posledních týdnů semestru. V případě dvojic se oba členové týmu musí zúčastnit odevzdání společně, a oba musí rozumět a být schopni odpovědět na otázky ohledně všech částí kódu (tedy ne jen svých).

Jiný termín odevzdání je možný pouze po předchozí domluvě s cvičícím, a to dostatečně dopředu! Pozdější odevzdání je možné pouze ve výjimečných případech (nemoc, apod.).

courses/b0b36pjv/semestral/start.txt · Last modified: 2025/02/17 06:56 by seredlad