4IT353 - zadání druhé semestrální úlohy
Zadání:
Databázovou úlohu mohou studenti řešit sami nebo ve dvojici.
Základ zadání (tj. pro všechny)
Zadání databázové aplikace si studenti vymyslí sami, řešení musí splňovat následující podmínky:
- Logika aplikace musí mít minimálně 3 entitní třídy, které se ukládají do perzistentní vrstvy (tj. i v databázi musí být minimálně 3 tabulky). Mezi těmito třídami bude nejméně jeden vztah 1:n. Aplikace by měla používat transakce, není potřeba dělat speciální zamykání záznamů v databázi.
- Aplikace musí mít grafické uživatelské rozhraní (Swing, JavaFX, apod.).
- Aplikace musí dovolit prohlížení údajů, vkládání nových údajů, jejich aktualizaci a rušení.
- Aplikace nesmí dovolit porušení integrity dat (je přitom potřeba počítat s tím, že k databázi může přistupovat více uživatelů současně - např. aplikace bude souběžně spuštěná na 2 počítačích, nebo bude za běhu aplikace k databázi připojený také administrátor provádějící datové úpravy).
- Perzistentní vrstva bude realizována pomocí frameworku pro objektově-relační mapování - nejlépe pomocí specifikace JPA (Java Persistence API) a frameworku, který tuto specifikaci implementuje (Hibernate, EclipseLink, DataNucleus).
Rozšíření zadání pro dvoučlenný tým
- Aplikace bude obsahovat alespoň 6 entitních tříd.
- Mezi těmito třídami bude alespoň jeden vztah m:n nebo dědičnost.
Další podmínky
Předpokládá se, že aplikace bude splňovat typické podmínky, které studenti znají z povinných kurzů zaměřených na vývoj aplikací v Javě, především:
- Ve zdrojových kódech budou dodržovány základní konvence pro psaní kódu v Javě.
- Ve zdrojových kódech bude dokumentace ve formě javadocových komentářů (měly by být stručně popsány všechny nesoukromé třídy, metody, konstruktory a atributy).
- Zdrojové kódy budou zkontrolované pomocí vhodného nástroje pro statickou analýzu kódu (Checkstyle, PMD, FindBugs apod.) a před odevzdáním budou opraveny relevantní nálezy.
- Aplikace bude používat logovací framework, např. SLF4J + Logback nebo nějaký podobný.
Body za databázovou úlohu získá student (či dvojice studentů) pokud splní následující podmínky:
- Nejpozději do konce druhého týdne zkouškového období uloží do odevzdávárny v InSISu zadání své úlohy, kde bude:
- popis zadání úlohy,
- diagram logických tříd (tj. diagram tříd včetně datových atributů a vazeb),
- v případě 2-členných týmů rozdělení práce v týmu,
- Nejpozději 3 dny před termínem obhajoby uloží do odevzdávárny v InSISu hotovou aplikaci (archiv), kde bude:
- Adresář se všemi zdrojovými kódy (ideálně projekt sestavovaný pomocí nástrojů Maven nebo Gradle)
- Adresář s připravenou aplikací (buď tzv. fat-JAR, nebo běžný spustitelný JAR archiv společně s dalšími knihovnami, které aplikace potřebuje)
- SQL skript pro přípravu databáze (založení tabulek a dalších objektů), se kterou bude aplikace pracovat
- Readme soubor se základním popisem projektu, především:
- Jméno a kontakt na autora(y) aplikace
- Stručný popis aplikace (k čemu slouží)
- Kterou relační databázi aplikace používá
- Jakým způsobem lze projekt zkompilovat a sestavit
- Jaké problémy v projektu nejsou dořešené
- Jaké jsou odchylky oproti zadání
- Osobně předvede či předvedou funkci programu v termínech, které budou vypsány prostřednictvím InSISu.
Body se odečítají za následující nedostatky:
Nedostatek | Možná bodová ztráta |
Chybějící komentáře (pro javadoc) u tříd a metod | 1-10 bodů |
Nedodržení konvencí | 1-10 bodů |
Úloha neobsahuje spustitelný archiv | 10 bodů |
Drobné chyby ve funkčnosti | 1-20 bodů |
Neschopnost vysvětlit jakoukoli část kódu | 1-40 bodů |
Aplikace nemá oddělenou databázovou vrstvu | 20 bodů |
Aplikace dovoluje porušit integritu dat | 10 bodů |