===== Domácí úkoly ===== * Zadání domácích úkolů naleznete níže. * Odevzdání řešení úkolů je termínováno, pro odevzdávání používejte system BRUTE: https://cw.felk.cvut.cz/brute/teacher/index.php * Pro odevzdání semestrálních prací pouzijte GitLab. * Je potřeba odevzdat všechny 4 domácí úlohy. * 1. domácí úloha se neboduje, ostatní 3 jsou ohodnoceny každá 5 body pokud ji odevzdáte včas /* * časy kdy se kontrolují domácí úlohy: 0,6,11,18,23*/ /* * Pokud řešení odevzdáte včas a bude správné, získáte plný počet bodů (2). * Pokud řešení odevzdáte maximálně se zpožděním 5 dnů a bude správné, získáte poloviční počet bodů (1). * Za později odevzdaná, či špatná řešení nezískáte žádné body. * První nálezce případné chyby v testu nebo zadání domácího úkolu bude odměněn body (množství závisí na závažnosti chyby). */ Zádání domácích úkolů: [[courses:b6b36omo:hw:012018:start|první]], [[courses:b6b36omo:hw:022018:start|druhý]], [[courses:b6b36omo:hw:032018:start|třetí]], [[courses:b6b36omo:hw:042018:start|čtvrtý]] /*, [[courses:a7b36omo:en:hw:07:start|pátý]], [[courses:a7b36omo:en:hw:08:start|šestý]] */ /* Zádání semestrální práce: {{:courses:b6b36omo:hw:projektsmarthome.docx| }} Týmy: https://docs.google.com/spreadsheets/d/10Ohwoaxds7JecvUjF1MTPRyPm0BOYTx4rKXvTeHZVns/edit#gid=0 */ /* [[courses:a7b36omo:hw:01|první]], [[courses:a7b36omo:hw:02|druhý]], [[courses:a7b36omo:hw:03|třetí]], [[courses:a7b36omo:hw:04|čtvrtý]], [[courses:a7b36omo:hw:05|pátý]], [[courses:a7b36omo:hw:06|šestý]] */ /*, [[courses:a7b36omo:en:hw:02|druhý]], [[courses:a7b36omo:en:hw:03|třetí]], [[courses:a7b36omo:en:hw:04|čtvrtý]], [[courses:a7b36omo:en:hw:05|pátý]], [[courses:a7b36omo:en:hw:06|šestý]], [[courses:a7b36omo:en:hw:07|sedmý]], [[courses:a7b36omo:en:hw:08|osmý]], [[courses:a7b36omo:en:hw:09|devátý]], [[courses:a7b36omo:en:hw:10|desátý]], [[courses:a7b36omo:en:hw:11|jedenáctý]] a [[courses:a7b36omo:en:hw:12|dvanáctý]].*/ //Pokud není řešeno jinak nebo to nevyplývá z kontextu tak, metodami se rozumí instanční metody, můžete definovat svoje pomocné atributy a metody a všechny vámi implementované neabstraktní třídy by měly mít konstruktor bez parametrů.// ===== Semestrální práce ===== **Hodnocení** * Čistota softwarového designu aplikace, použití design patternů (50%) * Množství naimplementovaných funkčních požadavků (50%) * Vlastní inovace - nový funkční požadavek, který jste přidali nebo zajímavý softwarový design (5%) **Logistika** Úloha se vypracovává ve dvou studentech (ze stejného cvičení), přičemž je požadováno, aby každá osoba napsala přibližně stejně komplexní část aplikace a rozuměla i částem, které nepsala (bude kontrolováno v gitu). Semestrální úloha může být znovu otevřena u zkoušky. Skupiny po třech jsou výjimkou, kterou musí explicitně schválit cvičící, přičemž hodnocení bude přísnější. Odevzdání je do konce semestru. Ideálně před vánoci, maximálně konec semestru. Minimálně tři týdny před finálním odevzdáním je potřeba cvičícímu zaslat design vaší aplikace. Pokud by byl design špatný, došlo k odchýlení od zadání nebo naopak budete chtít poradit, tak bude konzultace provedena na cvičení, případně mimo cvičení po dohodě s cvičícím. **Zadání** Vyberte si jedno z následujících zadání: * {{ :courses:b6b36omo:hw:projekt_smart_home_2_.docx |}} * {{ :courses:b6b36omo:hw:projekt_smart_factory.docx |}} * {{ :courses:b6b36omo:hw:projekt_food_chain.docx |}} **Hinty** - Namodelujte use case diagram. Umožní vám identifikovat jací actors interagují v systém a jaké interakce provádí. Příklady zde: https://www.uml-diagrams.org/examples/online-shopping-use-case-diagram-example.html, https://stackoverflow.com/questions/53024593/using-printers-as-actors-in-use-case-diagram. Uvědomte si,že actor bude i fyzické zařízení. Odprostěte se od toho, že úlohu spouštíte jako simulaci reálného systému - use case diagram modelujte pro ten systém, který simulujete a ne pro tu simulaci. Aby v diagramu nebyl jeden actor (žák) a jeden use case (spuštění simulace). - Namodeluje první verzi class diagramu - zaměřte se na klíčové entity, neřešte jejich atributy. V další iteraci přidejte vazby, jejich kardinality. Postupně přidáváte i méně důležité entity a klíčové atributy v entitách. Dále pak klíčové služby (funkcionality) a jejich rozhraní. Příklady zde: https://www.researchgate.net/figure/Domain-model-for-Earth-Observation-UML-Class-diagram_fig2_268807373, https://cz.pinterest.com/pin/781444972817861095/ - Rozpracovanou verzi Use case diagramu a Class diagramu si nechte zrevidovat cvičícím - Zamyslete se kde by se daly aplikovat jaké design patterny. Obvykle se postupuje obráceně, že nejdříve identifikujete problém a pak při hledání řešení se snažíte známé problémy řešit známým design patternem. Tedy cílem návrhu není obvykle snažit se "udat" za každou cenu design patterny, alt tady tomu půjdeme trochu naproti. - Simulaci neřešte pomocí více paralelních threadů, kde by thread např. reprezentoval konkrétní stroj. Problém se dá vyřešit sekvenčně v jednom threadu tím, že v každém "taktu" - diskrétní periodě reprezentující např. 10 minut - provedete po sobě změny na všech entitách a aplikujete reakce na tyto změny. Pak přecházíte k dalšímu taktu ...