• No results found

CODIANA PŘÍRUČKA PRO VÝVOJÁŘE SYSTÉMU

N/A
N/A
Protected

Academic year: 2022

Share "CODIANA PŘÍRUČKA PRO VÝVOJÁŘE SYSTÉMU"

Copied!
12
0
0

Loading.... (view fulltext now)

Full text

(1)

PŘÍRUČKA PRO VÝVOJÁŘE SYSTÉMU

CODIANA

Bc. Jan Hybš 2014

(2)

OBSAH PŘÍRUČKY

Princip funkce systému CoDiAna Struktura systému CoDiAna

Modul pro podporu zpracování programovacího jazyka

Modul pro určení podobnosti mezi zdrojovými kódy programovacího jazyka Závěrečné doporučení

(3)

PRINCIP FUNKCE SYSTÉMU CODIANA

V systému vystupují dvě role – pedagog a student.

Uživatelé zasílají požadavky na server, který obsahuje systém Moodle (výuková platforma Moodle)

Pedagog specifikuje algoritmické úlohy, na které studenti zasílají své řešení.

Systém Moodle obsahuje modul CoDiAna, který vyřizuje jednodušší požadavky a složitější předává Exekutivní aplikaci Java.

Exekutivní aplikace slouží pro zpracování přijatých algoritmů.

Podpora programovacích jazyků, je dána dostupností modulů pro Exekutivní aplikaci.

(4)

STRUKTURA SYSTÉMU CODIANA

systém se skládá ze dvou hlavních částí modul CoDiAna

správa úloh

zobrazení výsledků

exekutivní aplikace Java

zpracování náročnějších nebo potencionálně nebezpečných požadavků

Server pro zpracování úloh

Souborové úložiště Exekutivní

aplikace

Pedagog Student

Server se portálem Moodle

Modul CoDiAna Databázové

úložiště

SSH komunikace SSH komunikace

(5)

MODUL PRO PODPORU ZPRACOVÁNÍ PROGRAMOVACÍHO JAZYKA 1/4

Základní balíček pro vývojáře obsahuje všechny potřebné soubory pro vytvoření modulu pro zpracování určitého programovacího jazyka.

Na základě charakteru programovacího jazyka je nutné implementovat správné rozhraní, jsou zde rozlišovány jazyky, které jsou kompilované nebo spustitelné.

Nový modul vesměs připraví soubory na spuštění a definuje příkaz, jakým lze daný jazyk spustit.

Každé řešení se může skládat z více souborů, je nutné vytvořit takový algoritmus, který bere tuto skutečnost v potaz.

Rozhraní pro kompilované jazyky (ICompilableLanguage) rozšiřuje rozhraní pro spustitelné jazyky (IExecutableLanguage), jelikož každý programovací jazyk je vždy spustitelný.

Každé rozhraní obsahuje základní 3 metody, jsou to:

1) příprava na kompilaci/spuštění

2) definování příkazů pro kompilaci/spuštění 3) obslužná rutina po kompilaci/spuštění

Spustitelné rozhraní obsahuje navíc metodu pro předání objektu s nastavením. Tato metoda je volána jako první!

Metody jsou volány vždy v tomto pořadí.

(6)

MODUL PRO PODPORU ZPRACOVÁNÍ PROGRAMOVACÍHO JAZYKA 2/4

metoda obdržení objektu s nastavením

V této metodě je předán objekt, který obsahuje informace o úloze, jedná se zejména o:

název hlavního souboru úlohy

umístění složky, obsahující všechny soubory řešení

další detaily ohledně úlohy (umístění souborů, atd.)

metoda přípravy na kompilaci/spuštění

slouží pro přípravu pro danou akci (kompilaci/spuštění)

důležité připravit prostředí tak, aby bylo dále možné vykonat akci

lze zde provést lokalizace určitých souborů, případně určité opravy souborů (například modul pro zpracování jazyka Java se snaží opravit definice balíčků, pokud nejsou korektní)

v tomto místě je vhodné získat všechny hodnoty pro definování příkazu pro kompilaci/spuštění

(7)

MODUL PRO PODPORU ZPRACOVÁNÍ PROGRAMOVACÍHO JAZYKA 3/4

metoda definování příkazů pro kompilaci/spuštění

V této metodě je nutné definovat příkaz, pomocí kterého proběhne kompilace/spuštění.

V přípravné metody byly získány všechny detaily pro tuto operaci, nyní je nutné definovat objekt typu List<String>, který obsahuje příkaz s jeho argumenty.

příkladem může být modul pro zpracování jazyku Java, při kompilaci je definován příkaz

obdobně poté při spuštění

obslužná rutina po kompilaci/spuštění

Metody by měla uvést úložiště na severu do stejného stavu, jako před kompilací/spuštěním

To je například smazání dočasných souborů pokud byly nějaké vytvořeny apod.

javac –sourcepath adresar_se_soubory –d _vystupni_adresar

hlavni_soubor_reseni

java -classpath adresar_se_soubory nazev_a_balicek_hlavni_tridy

(8)

MODUL PRO PODPORU ZPRACOVÁNÍ PROGRAMOVACÍHO JAZYKA 4/4

Výjimky

Pokud řešení není možné spustit nebo zkompilovat, je důležité vyhodit výjimku RunException, která značí, že nastala chyba související s řešením. V popisu chyby je vhodné specifikovat, co chybu způsobilo (například skutečnost, že nelze lokalizovat hlavní třídu řešení, nebo nejednoznačnost souborů řešení). Popis chyby bude zobrazen uživateli, který řešení odeslal. To zda je řešení v korektním formátů, by měla řešit přípravná metoda.

Pokud proběhne přípravná metoda v pořádku, znamená to, že řešení je spustitelné/kompilovatelné. Metoda pro definování příkazu by neměla vyhazovat žádnou výjimku, ani provádět operace, které ji mohou vyhodit.

(9)

MODUL PRO URČENÍ PODOBNOSTI MEZI ZDROJOVÝMI KÓDY PROGRAMOVACÍHO JAZYKA 1/3

Tento modul slouží pro určení podobnosti mezi řešeními. Jsou zde tři metody, které jsou nutné implementovat. Určení podobnosti závisí na charakteru programovacího jazyka a mělo by být provedeno odpovídajícím způsobem (například syntaktickou analýzou zdrojových kódů).

Je nutné, aby porovnání bylo odolné (alespoň z části) refaktorování kódu

(přejmenování proměnných, metod, funkcí, atd.), jelikož tyto úpravy jsou velice lehké v moderních IDE a mohou způsobit rozsáhlé vizuální změny.

(10)

MODUL PRO URČENÍ PODOBNOSTI MEZI ZDROJOVÝMI KÓDY PROGRAMOVACÍHO JAZYKA 2/3

Všechny zdrojové kódy daného řešení jsou uloženy v jednom adresáři.

První je metoda

void prepare (File dir)

. Metoda by měla zanalyzovat zdrojové kódy z daného adresáře a předvypočítané výsledky uložit do paměti programu. Tato metoda slouží pouze pro optimalizaci – pokud modul nebude

podporovat optimalizaci, je důležité ponechat ji zcela prázdnou (použít návrhový vzor Null Object).

Druhá metoda

void clear ()

úzce souvisí s první a slouží pro smazání paměti s předpočítanými výsledky. Opět, pokud modul nebude podporovat optimalizaci, je důležité ponechat ji zcela prázdnou (použít návrhový vzor Null Object)

(11)

MODUL PRO URČENÍ PODOBNOSTI MEZI ZDROJOVÝMI KÓDY PROGRAMOVACÍHO JAZYKA 3/3

Poslední metoda slouží pro porovnání dvou řešení. Každé řešení může obsahovat více souborů, metoda by tedy měla porovnat předpočítané objekty v paměti, pokud je použita optimalizace.

Difference compare (File dirA, File dirB) throws CompareException Pokud modul optimalizace nepodporuje, je nutné načíst všechny soubory z adresářů a porovnat je odpovídajícím algoritmem.

Pokud nelze správně načíst nebo zanalyzovat řešení, je nutné vyhodit výjimku CompareException

Objekt, který metoda vrací je objekt třídy Difference, který obsahuje informace o porovnání a určuje do jaké míry jsou porovnané objekty rozdílné.

(12)

ZÁVĚREČNÉ DOPORUČENÍ

V případě nejasností je vhodné prohlédnout zdrojové kódy již vytvořených modulů.

Jsou k dispozici moduly, které slouží pro podporu zpracování i pro určení podobnosti.

Lze kontaktovat tvůrce systému pro další případnou pomoc s vytvářením nových modulů pro systém CoDiAna (jan.hybs@tul.cz)

References

Related documents

Jeden bude sloužit pro lokální komunikaci (náhrada serveru) přes jiný uživatelský účet v systému a druhý pro univerzitní cluster Hydra [3], na kterém

1) V případě využití klimatizace, by se příkon mohl následně pohybovat odhadem okolo hodnoty 2 kW (nominální), resp. Počítáno je s nominální hodnotou, kterou

Legováním nebo tepelným zpracováním lze získat rovn ě ž austenit, martenzit nebo bainit (ausferit). Vznik feritu tedy podporuje pomalé ochlazování. Perlit je

Hodnocen´ı navrhovan´ e vedouc´ım bakal´ aˇ rsk´ e pr´ ace: výborně Hodnocen´ı navrhovan´ e oponentem bakal´ aˇ rsk´ e pr´ ace:.. Pr˚ ubˇ eh obhajoby bakal´ aˇ rsk´

Člověk přijímá svůj absurdní úděl, přičemž si nemůže zvolit svět bez absurdity, nemůže si zvolit existenci bez absurdity, neboť nic takového není

1) Proč má posuzovat společnost uzavřenou smlouvu o poskytování pracovnělékařských služeb s takovým poskytovatelem, kdy zaměstnanci k lékařské prohlídce musí cestovat

Uživatel má právo používat ČSN pouze na objednatelem určených zařízeních. Přístup k ČSN bude mít na určeném zařízení každý z oprávněných uživatelů knihovny

Uživatel má právo používat ČSN pouze na objednatelem určených zařízeních. Přístup k ČSN bude mít na určeném zařízení každý z oprávněných uživatelů knihovny nebo