.
==== Hodnocení předmětu ====
* klasifikace předmětu - 0-100 bodů
* max. 10 bodů za aktivitu na cvičeních (která jsou jinak dobrovolná, kromě těch, na kterých se odevzdávají checkpointy).
* max. 50 bodů za kvalitu a včasnost odevzdání semestrální práce.
* max. 40 bodů za závěrečný test. Test nebude delší než 90 min, bude poté opraven a následně bude probíhat udělování známek.
* EAR: předmět je zakončen klasifikovaným zápočtem, který bude udělen za **úspěšné** (viz níže) odevzdání všech tří checkpointů a za získání alespoň 20 bodů v závěrečném testu.
* WPA: předmět je zakončen zápočtem a zkouškou. Zápočet bude udělen za **úspěšné** (viz níže) odevzdání všech tří checkpointů. Hodnocení zkoušky bude tvořeno body za semestrální práci a hodnocením závěrečného testu. Zkouška bude úspěšně složena za získání alespoň 20 bodů v závěrečném testu. Test mohou absolvovat i studenti, kteří nemají dosud nárok na zápočet. Předmět bude uzavřen až poté, co získají zápočet.
* Semestrální práci budete vypracovávat ve dvojicích. Skupiny o více či méně lidech jsou možné pouze po domluvě.
* Body za semestrální práci se získávají průběžně v následujících checkpointech:
^ datum odevzdání ^ co musí odevzdávaný ZIP archiv obsahovat ^ maximální počet bodů ^
| **29.10.2017** | [[cp0 | CP0: Téma semestrální práce a krátký popis plánovaného řešení]]| 5 |
| **19.11.2017** | [[cp1 | CP1: High-level design aplikace, objektový model a persistentní vrstva]]| 15 |
| **7.1.2018** | [[cp2 | CP2: Odevzdání kompletní semestrální práce]]| 30 |
* **než začnete vypracovávat SP, pozorně si přečtěte popis všech checkpointů**,
* pro všechny checkpointy platí, že
* **datum odevzdání znamená poslední možné datum uploadu** (ve 23.59.59) do odevzdávacího systému (viz link na úvodní straně předmětu). Pro CP0 se odevzdává PDF soubor. **Pro CP1 a CP2 se odevzdává soubor ZIP, se strukturou projektu, v jehož kořenovém adresáři se náchází soubor pom.xml a současně soubor commit.txt, jehož jediným obsahem je číslo commitu ve vašem Git repozitáři systému Gitblit. Všichni členové skupiny budou mít daný commit ve vlastních repozitářích.**
* nejbližší cvičení následující po datu skutečného odevzdání je třeba daný checkpoint prezentovat svému cvičícímu; **prezentace musí vycházet z toho, co bylo odevzdáno do systému** (viz link na úvodní straně předmětu) - to bude předmětem hodnocení daného checkpointu. V dobře odůvodněných případech je možné prezentovat checkpoint v jiném termínu, vždy po předchozí **včasné** domluvě se cvičícím.
* **při odevzdání musí být přítomni všichni členové skupiny**,
* **za každý týden zpoždění se hodnocení daného checkpointu snižuje o 5 bodů. Toto platí i pro CP2 - zde navíc hrozí riziko, že v případě příliš pozdního odevzdání nebude již vypsán náhradní termín pro závěrečný test**.
* checkpoint je **úspěšně odevzdaný**, pokud za něj získáte alespoň 50% bodů (bez započtení penalizace za časové zpoždění)
* Celkové hodnocení předmětu se provádí dle ECTS stupnice:
^ Body ^ Stupeň ECTS ^ Známka ^
| 100 - 90 | A | výborně |
| 89 - 80 | B | velmi dobře |
| 79 - 70 | C | dobře |
| 69 - 60 | D | uspokojivě |
| 59 - 50 | E | dostatečně |
| 49 a méně | F | nedostatečně |
=== Závěrečný test ===
Závěrečný test trvá 90 minut a skládá se z 10 otázek, každé hodnocené 4 body. Otázky spadají do následujících kategorií:
* Zaškrtávací
* Otázka má 4 možnosti,
* Správně může být 0 či více možností,
* Za každou správnou odpověď získáte 1 bod, za špatnou 1 bod ztratíte (minimum je 0 bodů za otázku). Tedy např. má-li otázka správné možnosti //a)//, //c)// a student zaškrtne pouze možnost //a)//, získá 2 body, protože za nezaškrtnutí //c)// nejenže nezíská bod, ale zároveň je mu bod stržen za chybnou odpověď.
* **Příklad**
* Vyberte pravdivá tvrzení
* a) JPA slouží k odstínění uživatele od konkrétního druhu databázové technologie (souborový systém, relační databáze, NoSQL databáze, atp.), nikoliv však od její konkrétní implementace (PostgreSQL, MySQL, atp.).
* b) Metodu EntityManager.persist() je možné použít na objekt, který má hodnotu identifikátoru (@Id) různou od null.
* c) Perzistentní jednotka (Persistence Unit) slouží k popisu struktury konkrétní databáze a je tak sdílena více perzistentními kontexty.
* d) Inverzní stranu obousměrného vztahu nelze použít pro modifikaci daného vztahu.
* Analytická
* Otázka obsahuje část kódu a úkolem studenta je:
* Vysvětlit, co daný kód dělá,
* Odhalit chybu v kódu,
* Vysvětlit, proč daný kód nebude dělat to, co se od něj očekává apod.
* ** Příklad **
* Následující kód (metoda EnterpriseInformationSystem.addPerson) využívá framework Spring. Má umožnit přidání jména uživatele do hlavního repozitáře systému, a zálohování tohoto jména v druhém, záložním, repozitáři. Vysvětlete, jak předložený kód po zavolání metody addPerson funguje a co vypíše na konzoli.
@Component
@Scope("prototype")
public class EnterpriseInformationSystem {
@Autowired
private PersonRepository repository;
@Autowired
private PersonRepository backupRepository;
...
public void addPerson(String name) {
repository.getPersons().add(name);
backupRepository.getPersons().add(name);
repository.getPersons().clear();
System.out.println(backupRepository.getPersons().size());
}
}
@Component
@Scope("singleton")
public class PersonRepository {
private List persons;
public List getPersons() { return persons; }
}
* Syntetická
* Úkolem bude v pseudokódu naimplementovat nějakou funkcionalitu,
* Nebo popsat postup implementace nějaké funkcionality.
* ** Příklad **
* Jaké technologie využívá Spring pro implementaci horizontálních služeb (cross-cutting concerns). např. transakční přístup k metodám, autorizace přístupu k metodám, atp. Jak daná technologie funguje ?