4it353»4IT353 - zadání druhé semestrální úlohy

4IT353 - zadání druhé semestrální úlohy

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:

  1. 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,
  2. 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í
  3. 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:

NedostatekMožná bodová ztráta
Chybějící komentáře (pro javadoc) u tříd a metod1-10 bodů
Nedodržení konvencí1-10 bodů
Úloha neobsahuje spustitelný archiv10 bodů
Drobné chyby ve funkčnosti1-20 bodů
Neschopnost vysvětlit jakoukoli část kódu1-40 bodů
Aplikace nemá oddělenou databázovou vrstvu20 bodů
Aplikace dovoluje porušit integritu dat10 bodů