Projekt

Postup při vytváření projektu a bodování je uvedeno zde, termíny jsou uvedeny v plánu cvičení.

Projekt bude hodnocen a opravován (v rámci možností) průběžně. Hodnocen však bude jednotně jako celek v IS až po skončení semestru.

Na cvičení, ve kterém je určeno odevzdání (jednotlivých částí), můžete ještě provést konzultaci, termín do kdy odevzdáte do svn stanoví cvičící (při vážných problémech na straně svn (!) lze zaslat projekt na e-mail cvičícího. Problémy popište, abychom mohli svn upravit). Do svn uložíte aktuální verzi, která se k udanému termínu „zmrazí“ (v době kolem termínu odevzdávání proto raději provádějte minimum změn). Sledujte kdy se objeví opravená/okomentovaná verze a připomínky zakomponujete do projektu. Projekt bude obodován pro celou skupinu. Pro jednotlivé členy skupiny může dojít ke korekci (snížení bodů) podle počtu komitů a kvality provedených akci, tak aby odpovídaly množství odvedené práce - proto si úkol rozdělte na (přibližně stejné) části a na nich pracujte samostatně - neodevzdávejte z jednoho konta/počítače.
V případě náhradního e-mailu (tj vážná závada SVN) uveďte: Subjekt „zadání BPPC“. Odevzdávaný „zip“ soubor pojmenujte kódem cvičení (po13=pondělí 13:00), jménem autora a názvem tj. „po13_novak_zlomky“. Koncovku zip pro odeslání smažte. Odevzdává jen jeden ze skupiny autorů. Po odevzdání kontrolujte svůj mail, zda cvičící neodepíše, že přišlo bez přílohy (například kontrola virů …, doporučuji pro kontrolu poslat kopii na jiný mail, například někomu ze skupiny) - posílejte pouze soubory typu „h“, „c“ a „cpp“ (jinak se stanete obětí spam a vir filtrů).



Hierarchie projektu je součástí vzorového zadání.





Pozn.: tato stránka bude upravována/upřesňována na základě vašich dotazů.

Zadání témat projektů

Vyberte si téma a dva spoluautory – do příštího cvičení

Výběr spolupracovníků – projekt se vypracovává ve skupinách po třech studentech z jednoho cvičení (z důvodu času na konzultace). Doporučuji, aby projekt vytvářel každý ze skupiny samostatně, poté jednotlivé verze srovnat, prokonzultovat a složit to nejlepší. Menší skupiny mohou být penalizovány.

Výběr tématu: zvolte typ kontejneru a dvou datových typů - stejné téma mohou mít maximálně dvě skupiny(trojice) na cvičení (po vyčerpání samostatných možností). Seznam témat je součástí formuláře zadání.

Zde zveřejněný formulář je předběžný, originál formuláře zadání (očekávejte pouze minimální změny) naleznete v svn po obdržení přístupových hesel.

Nahlášení projektů

Nahlaste zvolené téma a skupinu spoluautorů ve svých cvičeních

Formulace zadání

Na základě předloženého formuláře napište vlastní zadání vašeho projektu

Napište zadání projektu podle předlohy. Ve formuláři nahraďte zvýrazněné části textu na základě vlastností vašeho projektu. Zadání specifikuje základní metody, které musí třída mít z hlediska procvičení základních mechanizmů fungování tříd.
Zadání pište s vědomím toho, že se bude měnit – napište ho podle vašich současných znalostí či podle toho jak byste si představovali aby řešení vypadalo. Při odevzdání konečné podoby projektu uvedete nové znění zadání a důvody změn.
U jednotlivých metod zadání uveďte monogram jednoho ze skupiny, který danou metodu vypracuje.
Všechny metody uvedené v zadání budou mít jméno (název metody bude uveden). Metody budou mít jednoznačně popsánu svou činnost (vyvarujte se formulací „a další“, „dělá to nebo to“, .. ) tak aby bylo jasné co budou dělat (například co znamená nulování, co je to nastavení, kolika prvků se to týká, u operátorů jasně uvést co se rozumí součtem, rozdílem …).

Odevzdání zadání

hodnocení úplnosti a kvality zadání - 4 body

Připomínky k zadání

„globální“ chyby v zadání

Tvorba a odevzdání hlavičkového souboru

Další postup

1) Spojit verze (merge) okomentovaného zadání a aktuálního textu.
2) Opravit zadání - změnit text, do komentáře bugu zapsat kdo provedl změnu, změnit bug na bugfix. (Commit)
3) Vytvořit dva nové CNode (v adresáři/projektu CSLNode) a odladit je proti původnímu nemodifikovanému main() v CNode.h zkusit postupně přepnout na všechny realizované Cnode.
4) V adresáři/projektu Project vytvořit soubory pro třídu kontejneru. Napsat třídu kontejneru (stačí jméno členského datového členu nebo metody s parametry a návratovou hodnotou).
5) Každou metodu "vzorově" zavolat z main. (Volání má demonstrovat skutečnost, že je funkce/metoda dobře napsaná pouze z hlediska rozhraní - bude mít parametry a prozatím fixní návratovou hodnotu (těla metod doplní po opravení hlavičkových souborů)

Detailní popis:

Odevzdávané zdrojové soubory by měly začínat komentářem, jehož součástí jsou jména autorů, název projektu, skupina. Jako součást odevzdání se budou hodnotit správně fungující třídy pro dva vlastní typy odladěné v projektu v adresáři: CSLNode, přeložitelné s původním mainem (do funkce main tedy raději nezasahujte). Dále se hodnotí hlavičkový soubor kontejneru uložený v projektu v adresáři Project, a pro něj vytvořený zdrojový soubor s funkcí main, ve kterém bude demonstrováno volání všech vytvořených metod a funkcí kontejneru uvedených v hlavičkovém souboru.
Všechny hlavičkové soubory by měly být standardně ošetřeny proti vícenásobnému načtení.

Zdrojové soubory CNode_xxx.h:

Třídy pro uložení prvku CNode jsou součástí připraveného projektu (společně s ostatními, které však neměňte) a měly by být doplněny pro zvolené typy (různé od připraveného vzorového bool a TWeekDay) v hlavičkové i zdrojové části. Původní CNode pro bool a TWeekDay zůstávají součástí projektu (a main s nimi musí nadále být schopen pracovat bez modifikace, stejně jako s novými třídami). Určení, která z variant CNode je používán je realizováno pomocí jeho zveřejnění do globálního jmenného prostoru (ke změně dochází pouze na jediném místě v souboru CNode.h).
Vámi vytvořené třídy CNode musí jít bez chyb přeložit proti původnímu dodanému souboru main v projektu CSLNode pro všechny čtyři třídy. Zkompilovaný program musí po spuštění s dodaným souborem
CSLNode\CSLNode\main.cpp správně fungovat!!! Očekáváme, že projekt CSLNode bude tyto třídy obsahovat, tak abychom je mohli otestovat a opravit!!! Nepředpokládejte, že opravující si do projektu CSLNode budou Vámi vytvořené soubory dalších tříd sami přidávat a laborovat nad následnými úpravami!!! To je Váš úkol!!!

Hlavičkové soubory kontejneru:

Vlastní projekt kontejneru se „odevzdává“ do svn, kde v adresáři trunk je vytvořen podadresář Project, ve kterém na projektu budete průběžně pracovat (aby se nepřetěžovala svn, ověřte nakonfigurování clienta - viz www). Očekáváme, že projekt v svn (nejprve hlavička s prázdnými metodami a ukázkové volání těchto metod) bude vždy přeložitelný bez chyb (errors). Do stejného adresáře se bude později „odevzdávat“ i dokončený projekt (opravy a doplněná implementace metod) a konečná verze dokumentace. Vlastní dokumentace metod a projektu je již součástí odevzdání hlavičky. Všímejte si i warningů překladače, zpráv knihovny check, „překlad“ Doxygen a zkuste i analýzu kódu překladačem.

Navržená třída kontejneru by měla pokrýt plně metody a funkce definované v zadání (v rozsahu původní verze).
Těla metod a funkcí mohou (ale nemusí) být prázdná (zatím se hodnotí pouze rozhraní třídy), měly by ovšem alespoň vracet správné návratové hodnoty (metoda by již nyní měla vracet typ, který bude vracet v dokončeném projektu).
Třída by měla obsahovat členská data, včetně statických dat.
Funkce main projektu kontejneru bude obsahovat ukázkový program volající jednotlivé metody a operátory obsažené ve třídě (zatím bez funkčnosti, jde o kontrolu správnosti prototypů metod a operátorů, kontrola možnosti/správnosti jejich volání). Funkce main (a samozřejmě kontejner) by měla být použitelná společně pro všechny třídy CNode (po jejich „přepnutí“ pomocí namespace), stejně tak jako je tomu u funkce main demonstrující použití tříd CNode.
Hlavičkový soubor kontejneru (včetně demonstrace
volání navržených metod z ukázkového programu) by měl být přeložitelný bez errorů a zbytečných warningů.
V další práci může být samozřejmě obsah hlaviček dále modifikován. Rozdíly zhodnoťte v závěrečné dokumentaci.
Používáte-li více tříd, definujte je v samostatných zdrojových souborech (.h i .cpp).

V rámci tvorby hlavičky vytvořte i komentáře pro dokumentaci projektu formou vhodnou pro zpracování pomocí nástroje Doxygen. Dokumentujte soubory, třídy, datové členy a metody (pro ty použijte text zadání a popište předávané a návratové parametry).

Odevzdání tedy bude minimálně obsahovat:
- třídy CNode_XXX (cpp i h) původní i upravené pro vaše typy (různé od demonstračnch. Celkem 4 třídy) v projektu v adresáři:
CSLNode fungující pro všechny modifikace CNode.
- soubor CNode.h (s doplněním pro „zapnutí“ nových tříd) a třídu CSLNode (cpp i h), která bude originální (neprovádí se v ní změny)
- hlavičkový a zdrojový soubor třídy vašeho kontejneru v takovém stavu, aby bylo možné je přeložit a spustit a to v projektu v adresáři
Project. Metody třídy uvedené v hlavičce mohou mít prázdná těla až na předávání návratové hodnoty. Ve zdrojovém souboru třídy bude hodnocena pouze definice statických proměnných tj. ostatní zdrojové části třídy (těla metod, ...) jsou v současnosti nepovinné.
- demonstrační soubor, obsahující funkci main demonstrující použití navržených metod (a funkcí) kontejneru navržený tak aby fungoval bez úprav pro všechny CNode_XXX (po „přepnutí“).
- soubory pro kontrolu paměti check (cpp i h)
- komentáře popisující funkci tříd, vlastnosti členských dat, činnost a popis parametrů metod.

 

Hodnocení - podle kvality a úplnosti a počtu commitů do svn (každý člen pracující na projektu by měl minimálně dvakrát týdně upravit projekt smysluplným a výrazným způsobem) - 3 body


Zhodnocení hlaviček

„globální“ chyby v hlavičkových souborech.
Zapracování opravených souborů do projektu - (Před začátkem spojování Update.). Opravené a vaše soubory je možné „spojit“ pomocí (pravé tlačítko myši) tortoiseSVN/Merge na adresáři kde budeme spojovat (trunk), dále volba reintegrate branch („vedlejší“ větev se natrvalo vrací do původní), nastavit URL adresu (svn:\\savanna ....\tags\opravena_hlavicka) s opraveným projektem v adresáři \tags. Pomocí Test merge je možné překontrolovat zda nedojde ke kolizi. Následně se spojí „naostro“ pomocí volby merge a vyřeší se případné konflikty (změny na jednom řádku). Je-li výsledek v pořádku, je potřebné ho pomocí Commit zapsat do SVN.

Odevzdání zdrojů

Pro zdrojové texty platí v podstatě totéž co pro odevzdání hlavičky, pouze s tím rozdílem, že se doplní i tělíčka metod/funkcí/operátorů a program bude fungovat tak, jak se od něj (v konečném stavu) očekává. Součástí je ukázka činnosti projektu (okomentovaný zdrojový soubor s main, který ukáže volání všech vytvořených metod/funkcí a zajistí kontrolu správného fungování vaší třídy (automatické testování správné funkcionality třídy)). Testováním se myslí například vyzkoušení metod pro odebrání prvku z prázdného objektu, operátor = pro a = a, zjištění počtu prvků objektu po několika přidáních a odebráních ... Samotná třída nebude interaktivně komunikovat s uživatelem. V ideálním případě nebude vypisovat a číst z konzoly vůbec nic (kromě streamů). Chybové stavy může main funkce detekovat zvláštní metodou třídy nebo je možné využít výjimky. Demonstrační program (funkce main) naopak interaktivní být mohou. Program bude demonstrovat načítání dat z konzoly (předtím vypíše popis formátu vkládaných dat se vzorovým příkladem takovýchto dat). Většina hodnot tedy nemusí být zadávány „z venčí“ programu ale mohou být součástí programu (nastavení pomocí konstruktorů, setterů). Tisk obsahu vašeho objektu na konzolu by měl být součástí demonstrace, není však nutné tisknout každou proměnnou po zavolání jednotlivých metod. Program se správně implementovanou knihovnou check nebude hlásit žádné memoryleaky. Soubory budou obsahovat jednoduché komentáře. Očekává se zapracování všech připomínek z předchozích hodnocení a implementace metod v rozsahu (původního) zadání. Změny vůči zadání i odevzdané hodnocené hlavičce jsou povoleny, očekává se, že změny a jejich důvody budou následně popsány v dokumentaci.

Odevzdává se tedy do adresáře projekt minimálně: hlavičkový soubor třídy, zdrojový soubor třídy, soubory CNode_XXX (2x4ks), cpp soubor s ukázkou použití třídy (soubor s main), check, soubor vzorového zadání dat (je-li použit). Tyto soubory musí být přeložitelné (na učebně, bez chyb a warningů) v prostředí MS Visual C++ (projekt prázdná konzola s default nastavením překladače).



Hodnocení zdrojů - kvalita zdrojových textů, demonstrační program prezentující práci se třídou s komentáři – 4 body,
kvalita projektu, splnění zadání, obtížnost - 2 body

Zhodnocení zdrojů

„globální“ chyby ve zdrojových souborech

Obhajoba

Krátká prezentace a obhajoba projektu (upřesněno cvičícím na předposledním cvičení) – cca 5 minut + dotazy - členové skupiny obhajují jednotlivě.

Konkrétní formu upřesní cvičící. Může v ní být například:

Prezentace, která by měla obsahovat: úvod, datová reprezentace včetně variant, přehled zajímavých metod, zajímavý kód, ukázka volání, možnosti zlepšení. Prezentovat to v čem si myslíte, že váš projekt je výjimečný, čím byste mohli obohatit ostatní.

Při ústní obhajobě bude k dispozici dataprojektor.

Při obhajobě zodpovíte dotazy – krátký test na autorství – dopište funkci, upravte kód ....

obhajoba bodování - 3 body – odpovědi k dotazům na některé části: úvod, datová reprezentace včetně variant, přehled metod, zajímavý kód, ukázka volání, možnosti zlepšení, dopsání části projektu, úprava projektu, vysvětlení části projektu

Odevzdání dokumentace

Dokumentaci, vytvářejte průběžně při řešení projektu, tak aby obsahoval následující body (Dokumentace bude napsána v souborech projektu *.h *.cpp a *.txt a musí být bez chyb vytvořitelná pomocí Doxygen).

1) Jméno, skupina, název
2) Původní zadání (tj. zadaní které odevzdávali jako první)
3) Popis změn v zadání, které jste provedli (nejlépe spojit body 2 a 3: původní zadání - upravené zadání - zdůvodnění každé změny)
4) UML diagram nebo seznam private/public metod i atributů. Popis koncepce třídy – co reprezentují proměnné, jak spolu souvisejí ...
5) Popis činnosti a významu metod (tj. manuál pro používání jednotlivých metod třídy). Popis parametrů metod a operátorů.
6) Výpis programu main (okomentovaný význam jednotlivých řádků).
7) Závěr (tj. Co jste případně nestihli. Proč jste byli nuceni změnit zadáni, hlavičku (oproti odevzdané verzi). Jaký k tomu byl důvod. ...)

Dokumentace by se měla vztahovat k verzi ke dni odevzdání zdrojových textů. Po odevzdání zdrojových textů zůstává adresář trunk „otevřený“, ale ke změnám zdrojových textů již nebude přihlédnuto.

dokumentace bodování – zadání, hlavička (1b), filozofie návrhu, volba dat, (1b) privátní a veřejné funkce, konstruktory, UML diagram (1b), popis funkcí rozhraní, … závěr (1b) – celkem 6 bodů

Zhodnocení projektů

„globální“ chyby v projektech









Poslední úpravy 2015-11-09