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 souborech budou dodrženy základní konvence pro psaní kódu v Javě.
- Ve zdrojových souborech bude dokumentace ve formě javadocových komentářů (měly by být stručně popsány všechny třídy a všechny metody s vyjímkou primitivních getterů a setterů).
- 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 kalendářního roku 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 do neděle předposledního týdne zkouškového období uloží do odevzdávárny v InSISu hotovou aplikaci, kde bude:
- spustitelný JAR archiv,
- všechny zdrojové soubory, které jsou potřeba pro kompilaci aplikace,
- SQL skript pro přípravu databáze (založení tabulek a dalších objektů), se kterou bude aplikace pracovat,
- readme soubor, ve kterém bude stručný popis aplikace, případné odchylky oproti zadání, jméno a kontakt na autora(y) aplikace,
- 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ů |