<?xml version="1.0" encoding="utf-8"?>
<posudek>
  <datum>
    <content>05 06 2014</content>
    <druh>textfield</druh>
    <popis>Datum</popis>
    <poradie>8</poradie>
  </datum>
  <datum_popis>
    <content>V Brně dne</content>
    <druh>textfield</druh>
    <popis></popis>
  </datum_popis>
  <hlavicka>
    <name>cil_prace</name>
    <content>{Prostudujte stávající techniky pro testování použitelnosti založené na záznamu akcí uživatele. Popište jednotlivé třídy zazaznamenávaných událostí a diskutujte možnosti jejich použití při posuzování použitelnosti. Navrhněte knihovnu v jazyce Java, kterou bude možné začlenit do vyvíjené aplikace a vytvořit záznamy. Součástí řešení bude i možnost přehrání záznamu v prostředí této aplikace. Výsledky aplikujte v jednoduché aplikaci rozšířené o záznam akcí.}</content>
    <druh>textfield</druh>
    <popis>Zadání</popis>
    <poradie>3</poradie>
  </hlavicka>
  <hlavicka>
    <name>jmeno_studenta</name>
    <content>Michal Zbranek</content>
    <druh>textfield</druh>
    <popis>Autor</popis>
    <poradie>2</poradie>
  </hlavicka>
  <hlavicka>
    <name>nazev_prace</name>
    <content>Knihovna pro záznam akcí uživatele při ovládání aplikace</content>
    <druh>textfield</druh>
    <popis>Název práce</popis>
    <poradie>1</poradie>
  </hlavicka>
  <hlavicka>
    <name>oponent</name>
    <content>Mgr. Michal Vinkler</content>
    <druh>textfield</druh>
    <popis>Oponent</popis>
    <poradie>5</poradie>
  </hlavicka>
  <hlavicka>
    <name>vedouci</name>
    <content>doc. Ing. Jiří Sochor, CSc.</content>
    <druh>textfield</druh>
    <popis>Vedoucí práce</popis>
    <poradie>4</poradie>
  </hlavicka>
  <hodnoceni></hodnoceni>
  <hodnotil>
    <content>oponent</content>
    <druh>textfield</druh>
    <popis>Hodnotil</popis>
  </hodnotil>
  <idsablony>fi_mu</idsablony>
  <nazev_sablony>Fakulta informatiky</nazev_sablony>
  <ostatne>
    <name>hodnoceni</name>
    <content>&lt;p&gt;Student Michal Zbranek měl v rámci své bakalářské práce prostudovat stávající techniky pro testování použitelnosti založené na záznamu akcí uživatele. Dále měl navrhnout knihovnu v jazyce Java, pomocí které by bylo možné vytvořit záznamy akcí uživatele ve sledované aplikaci a také je opětovně přehrát v rámci dané aplikace.&lt;/p&gt;

&lt;p&gt;Struktura textu odpovídá zadání práce – autor nejprve teoreticky popisuje měření použitelnosti při softwarovém vývoji a existující metody sledování akcí uživatele. Druhá část textu pak popisuje samotnou implementaci knihovny.&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Úroveň textu je bohužel velmi nízká a dle mého názoru neodpovídá úrovni kvalitní bakalářské práce.&lt;/p&gt;

&lt;p&gt;K textu mám, mimo jiné, následující výhrady:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Z velkého množství obrázků použitých v textu práce lze pouze u jednoho s jistotou říci, že není převzatý (obr. 5.1). Autor však u žádného z obrázků necituje zdroj.&amp;nbsp;&lt;/li&gt;
	&lt;li&gt;Text obsahuje velké množství typografických chyb, ukázky zdrojového kódu jsou vysázeny zcela nevhodně (např. str. 30), dále se v textu vyskytuje také nezanedbatelné množství gramatických chyb.&lt;/li&gt;
	&lt;li&gt;Text je velmi stručný (cca 20 normostran).&amp;nbsp;&lt;/li&gt;
	&lt;li&gt;V některých částech textu (kapitola 4) autor rozepisuje triviality.&amp;nbsp;&lt;/li&gt;
	&lt;li&gt;V textu jsou bez většího smyslu uvedeny dlouhé výčty metod některých tříd (str. 20, 23).&lt;/li&gt;
	&lt;li&gt;Obrázky jsou opatřeny často nedostatečnými popisky, některé z nich mají pouze malou informační hodnotu. Obrázky jsou číslovány obdobně jako kapitoly a z textu odkazovány pouze pomocí svého čísla uvedeného v závorkách (např. str. 4), což je značně matoucí.&lt;/li&gt;
	&lt;li&gt;Autor nevhodně kombinuje české a anglické výrazy: „Existující metody trackování uživatelských aplikací“ (str. 4); „Pokud nastane, subject informuje o události tyto observers.“ (str. 18).&amp;nbsp;&lt;/li&gt;
	&lt;li&gt;Práce je psána česky, avšak některá klíčová slova jsou uvedena anglicky: Contents, Figure, Listing, Bibliography. V textu jsou nevhodně skloňovány anglické výrazy: „Na JPanely a JMenuBary obsažené v těchto kontejnerech použiji metody...“ (str. 25).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Samotnou knihovnu nelze, bohužel, hodnotit jinak než jako téměř nefunkční. Autor do archivu nenahrál zdrojové kódy ke knihovně. &amp;nbsp;Při zpětné dekompilaci knihovny lze však vidět, že celá funkcionalita logování je tvořena jedinou třídou TrackerUI &amp;nbsp;- &amp;nbsp;textové řetězce získané metodou toString() z poslouchaných událostí jsou zapisovány do textového souboru. Očekával bych použítí vhodnějšího formátu, např. XML. Třída RobotExp poté tento soubor zpracovává a snaží se replikovat zaznamenané události.&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Záznam akcí a následné přehrání zaznamenaných událostí funguje velmi sporadicky. Všechny akce jsou zaznamenávány do jediného souboru, nezávisle na tom, kolikrát byl program spuštěn. Při přehrání záznamu dojde k přehrání všech do té doby nahraných akcí, tzn. aby přehrání obsahovalo akce relevantní danému běhu, uživatel musí vždy před spuštěním log smazat. Aplikace nijak neřeší, v jakém stavu jsou jednotlivé ovládací prvky – pokud tedy chceme přehrát nahrané akce se stejným výsledkem jako při nahrávání, musíme aplikaci nejdříve restartovat, aby se znovu inicializovala do stavu, v jakém jsme začali nahrávat. Aplikace pracuje s absolutními souřadnicemi na obrazovce, je tedy zcela závislá na přesné poloze okna na obrazovce. Knihovna neumí zaznamenat a následně replikovat posun samotného okna aplikace po ploše. Často se tak stane, že při přehrávání akcí kurzor myši klikne mimo samotné okno aplikace a zbytek akcí se provede ve zcela jiném programu. Aplikace je napsána jako jednovláknová, takže při přehrávání akcí dojde k jejímu zamrznutí a výsledky interakce s aplikací při přehrávání akcí lze vidět až po ukončení samotného přehrávání.&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Autor popisuje, že editací souboru Config.properties je možné měnit některé parametry (str. 25). Tento soubor je ale také zabalen v jar archivu tvořícího knihovnu, takže pro uživatele není přímo dostupný. Dále nikde není popsán význam konstant uvedených v tomto souboru.&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;line-height:1.6em&quot;&gt;Všechny texty v komponentách typu JTextField jsou přepsány řetězcem vepsaným do poslední komponenty tohoto typu. Největší výtkou je však fakt, že autor implementoval sledování událostí pouze pro omezenou množinu komponent popř. dokonce i pro omezený počet, takže např. pro komponenty typu JTextArea, JScrollPane a mnoho dalších logování nefunguje. Toto považuji za hrubou chybu v návrhu knihovny.&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;Otázka k obhajobě: Jakým způsobem může uživatel editovat zmíněný soubor&amp;nbsp;Config.properties?&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;line-height:1.6em&quot;&gt;Dle mého názoru rozsah a provedení práce nesplňuje&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;line-height:1.6em&quot;&gt;nároky kladené na bakalářské práce.&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;</content>
    <druh>textarea</druh>
    <popis></popis>
    <poradie>6</poradie>
  </ostatne>
  <ostatne>
    <name>navrzena_znamka</name>
    <bez_dvojtecky>1</bez_dvojtecky>
    <content>S přihlédnutím k celkovému dosaženému výsledku navrhuji hodnotit práci známkou nevyhovující (F).</content>
    <druh>textfield</druh>
    <popis>\vspace{0cm}</popis>
    <poradie>7</poradie>
  </ostatne>
  <typ_studia>B</typ_studia>
</posudek>
