====== Semestrální práce ====== /* ==== Témata ==== Jsou doporučena témata, která budou v souladu s předmětem Databázové systémy ([[https://cw.fel.cvut.cz/wiki/courses/a4b33ds/cviceni-1|témata ZDE]]). Semestrální práce z databázových systému je vhodné koncipovat jako aplikace Client-Server s komunikací po síti (především tak je možné rozumně použít technologie probírané v cvičeních). Po dohodě s cvičícím je ale možné vybrat si i jiné - vlastní, pokud bude splňovat všechny náležitosti SP. Vzhledem k tomu, že se předpokládá práce ve dvojici a témata předmětu DBS jsou obvykle typu informační systém, doporučujeme práci koncipovat jako distribuovanou aplikaci klient-server. Klientská část se bude primárně starat o komunikaci se serverem (např. po síti), vizualizaci a vstup uživatelských dat. Serverová část bude zajišťovat data ve vhodné formě z externího úložiště (např. SQL databáze), bude kontrolovat konzistenci dat a poskytovat data klientské aplikaci. Je tedy potřeba definovat vhodný komunikační protokol mezi klientem a serverem. */ ==== Odevzdání ==== Práce bude odevzdána v předepsaných týdnech (**dva poslední týdny semestru, tj. 10.-14. a 17.-21. 5. 2021**). Odevzdání ve zkouškovém termínu není možné, pouze ve výjimečných případech (nemoc apod.) lze po domluvě s cvičícím umožnit odevzdání v prvním týdnu zkouškového období. ==== Termíny ==== Do pátku **2.4.2021 do 23:59** bude na GitLab ve skupině ''https://gitlab.fel.cvut.cz/B202_B0B36PJV'' (a ne jinde!) založen projekt, a na stránce Wiki popsaná téma a cíl projektu, rozpracovaná dokumentace z hlediska uživatele (např. manuál) a z pohledu programátora (popisy tříd, stavů aplikace, použité technologie, knihovny, apod.) případné dělba práce. V repositáři budou i zdrojové soubory - kostry hlavních tříd a rozhraní, tak aby byla patrná navržená architektura. **Hodnotí se dodržení termínu**, dále kvalita a rozsah dokumentace. Představení práce a jeho ohodnocení se děje v během konzultace studenta s cvičícím. Kompletní práce se odevzdává do konce posledního výukového týdne, tj. do pátku **21.5.2021** opět v rámci konzultace s cvičícím. ==== Témata ==== Je možné pracovat samostatně i ve dvojicích. Semestrální práce tak bude rozsáhlejší, například se vyžaduje implementace síťové verze hry nebo distribuovaná simulace. * [[courses:b0b36pjv:semestral:herni_engine|Herní engine]] * [[courses:b0b36pjv:semestral:simulace|Simulace]] * [[courses:b0b36pjv:semestral:sachy|Šachy]] ==== Podmínky pro vypracování SP ==== - Pracuje se ve dvojicích nebo jednotlivě. Členové týmu nemusí být ze stejného cvičení. - Práce je vyvíjena za pomoci verzovacího systému GIT. Veškeré změny jsou ukládány výhradně na [[http://gitlab.fel.cvut.cz]]. Zadání pište do wiki u Vašeho projektu. - Na Gitlabu bude ve wikipedii do předepsaného termínu zapsáno téma práce a jména obou účastníků projektu. - Ve wiki bude udržována zvláštní stránka s odhadem pracnosti jednotlivých částí práce a rozdělení úkolů každého z týmu. - Oba členové týmu se v předepsaný týden musí společně zúčastnit **kontrolního pohovoru** nad vypracovaným objektovým návrhem práce a předpokládaným protokolem komunikace klient-server (bude-li použit). * **Ideální stav práce připravené k této konzultaci je:** * Pokud bude použita komunikace po síti, bude specifikován komunikační protokol - tedy jaká data a v jakém formátu se budou mezi serverem a klientem posílat. Tento protokol je zásadní a proto by se v průbehu další práce už ideálně neměl měnit * Student předvádí objektový návrh ideálně ve formátu kostry programu v Javě (balíčky, .java soubory). Ten by měl obsahovat definované třídy včetně vztahu dědičnosti mezi nimi, atributy tříd, hlavní metody všech tříd, pomocí kterých mezi sebou budou objekty komunikovat a také metody, které budou sloužit k ovládání objektů z GUI. Metody nemusí obsahovat tělo, ale je doporučeno, aby byl už připraven stručný Javadoc, který obsahuje textovou informaci, k čemu daná metoda nebo objekt slouží. * Objekty nemusí obsahovat privátní a jiné pomocné metody, stejně tak se nepředpokládá, že v metodách bude již definováno tělo. * Je možné konzultovat i materiál v jiné formě, ale musí z něj být patrné všechny informace, které jsou uvedeny výše. - Oba členové týmu se musí společně zúčastnit **odevzdání práce** na konci semestru. 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). Technické požadavky na semestrální práci: - Bude dokladovatelný progres projektu na Gitlabu. - Projekt bude v Mavenu. - Oba učástníci projektu musí vytvořit GUI (nemusí být shodné náročnosti). Alespoň jedno netriviální okno bude vytvořeno bez požití Designeru v Netbeans nebo jiném "klikacím" nástroji. - V projektu budou rozumně použita vlákna (za to se nepovažuje použití např. třídy Timer). - Několik netriviálních tříd bude pokryto unittesty - Budou použity loggery. - Javadoc - Veškeré public prvky v programu musí mít smysluplný Javadoc - Kód bude vhodně okomentován. - Návod/Popis - Na wiki FEL GitLabu musí být návod na používání programu (uživatelský manuál) a popis programu - jeho vlastností, struktura projektu, použité technologie (technická dokumentace). Pozor, nesuplujte Javadoc. - Angličtina - všechno kromě dokumentace na GitLabu musí být v angličtině. Anglicky musí být i Javadoc.