Prototyp

Pozn. : tento súbor nebolo možné 100% konvertovať do html, preto niektoré obrázky sú poškodené

 

V rámci prototypovania sme sa rozhodli navrhnúť a implementovať prototyp týchto vybraných častí (podsystémov):

·        Test funkčnosti,

·        Analýza podobnosti,

·        Evidencia,

·        Integrované prostredie.

 

 

4.1. Návrh:

 

Test funkčnosti:

 

Prototyp je navrhovaný vzhľadom na čo najväčšiu modulárnosť a rozšíriteľnosť. Snahou je čo najviac znížiť aj závislosť jednotlivých modulov (funkčných jednotiek) medzi sebou a zároveň zvýšiť závislosť vo funkčnej jednotke. Ďalej je potrebné čo najviac obmedziť nadbytočnosť celého podsystému a obmedziť prístup k údajom jednotlivých modulov, čím sa obmedzí výskyt chýb práve na konkrétny modul.

Každá funkčná jednotka predstavuje logickú časť podsystému Testovanie. Preto sa podsystém delí na 5 funkčných jednotiek:

·        Preklad,

·        Spustenie,

·        Funkčnosť,

·        Riadenie,

·        Možnosti.

Takto sa obmedzil tok údajov aj tok riadenia medzi jednotlivými jednotkami na minimum. Zároveň sa obmedzila nadbytočnosť v niektorých funkčných častiach.

 

Preklad:

Pri prekladaní zdrojového súboru prekladačom sa vytvárajú hlásenia o úspešnosti prekladu jednotlivých častí. Počíta sa teda s tým, že každý použitý prekladač vytvára odlišné výstupné hlásenia pre ten istý súbor. Ďalej platí, že pre dva rozdielne zdrojové súbory vygeneruje prekladač dva rôzne výstupy. Ďalej ak chceme zachovať možnosť rozšíriteľnosti o prípadné ďalšie prekladače, je potrebná taká údajová štruktúra, ktorá má schopnosť uchovať si jazyk, príponu súboru pre konkrétny programovací jazyk a cestu k prislúchajúcemu prekladaču. Zároveň je pridaná aj možnosť spúšťať prekladač s požadovanými prepínačmi.

 

struct

{

TYP_SPRACOVAVANEHO_SUBORU;

// je to vlastne jazyk (napríklad JSI, C), ale aj iný typ (napríklad OBJ)

PRIPONA_SUBORU;

// pre každý typ súboru môže byť rôzna prípona (pre JSI:  .asm, .s)

PRIKAZ_PRE_SPRACOVANIE;

//väčšinou cesta k prekladaču pre zdrojový súbor, alebo linker

PARAMETRE_PRE_PRIKAZ;

//prepínače pre lepšie nastavenie konkrétneho prekladača

};

 

Takto je možný výber prekladača pre požadovaný typ súboru, alebo výber parametrov pre prekladač vzhľadom k požadovaným vlastnostiam prekladu. Konkrétne požiadavky na nastavenia sú posielané modulu Možnosti. Typ požadovanej vlastnosti je súčasťou požiadavky.

 

enum

{

          POZIADAVKA_NA_PREKLADAC,

          POZIADAVKA_NA_SUBOR,

          POZIADAVKA_NA_PREPINACE,

          ...

};

 

Zároveň ak bude potrebné pridať novú požiadavku do systému, stačí pridať položku identifikujúcu nový typ, prípadne aj novú štruktúru zahrňujúcu miesto pre vlastnosti (ak existujúce štruktúry nevyhovujú). Ďalej je nutné dopísať obsluhu pre túto požiadavku v module pre nastavovanie možností.

Ako bolo spomenuté už na začiatku, problém je v zbere údajov od rôznych prekladačov a dokonca aj pre ten istý prekladač použitý na rôzne zdrojové súbory. Z uvedeného vyplýva, že ideálnym prípadom by bolo, keby prekladače pri úspešnom preklade nevytvárali žiadne hlásenia.

Keďže táto myšlienka je jednoducho realizovateľná, je to prvoradá vec, ktorou sa začína spracovanie výstupu z prekladača. Ak cheme podporovať ľubovoľný prekladač, musíme poznať formát jeho výstupu a vytvoriť pre každý rozdielny formát výstupu vlastnú spracovateľskú funkciu, ktorá podľa výstupu zistí, či preklad prebehol bezchybne, alebo sa v preklade vyskytli nejaké chyby. Zároveň je vhodné (pri neúspešnom preklade) ukladať chybové hlásenia do záznamového súboru.

V prototype sa ráta s podporou pre prekladač JSI "tasm.exe" od firmy BORLAND. Pre ďalšie prekladače je potrebné dopísať ich spracovateľské funkcie.

 

Veľmi jednoduchým a ľahko implementovateľným je riešenie opierajúce sa o takzvané referenčné zadania, kde sa výstupy generované prekladačom pre tento súbor porovnávajú s výstupmi z prekladača pre požadovaný súbor. Toto riešenie však má aj nevýhody. Tieto nevýhody sú v potenciálne odlišných výstupoch pre správne programy. Ako príklad tu môže byť výstup pre súbor, ktorý je napísaný v JSI pre výsledný "COM" súbor a pre "EXE" súbor, kde jeden z prekladov vygeneruje o jedno hlásenie viac a tým by mohlo dôjsť k omylu pri určovaní funkčnosti. Ďalšou možnou príčinou omylu by mohli byť aj takzvané varovné správy, kedy príčina, ktorá tieto správy vygenerovala môže a nemusí mať vplyv na funkčnosť programu. Preto sme sa rozhodli, že varovné správy budeme ignorovať. Samozrejme je možné aj nastavenie možností pre dovolenie alebo zakázanie varovných správ.

 

Spustenie:

Ak chceme využiť už existujúce prostriedky na preklad zdrojových súborov, musíme ich dokázať spustiť z kontextu tejto jednotky. Veľmi dobre vieme, že každý operačný systém poskytuje tieto služby v rámci systémových volaní. Sú dve všeobecne známe volania. Buď sa použije systémové volanie fork (UNIX), alebo CreateProcess (Win32). Jednoduchšie a ľahšie realizovateľné by bolo použiť volanie fork, avšak vzhľadom na to, že cieľovou platformou je Win32, musíme použiť volanie CreateProcess.

Pri spúšťaní je treba uvažovať, akým spôsobom sa bude vykonávať samotný zber výsledkov od programu. Najjednoduchším riešením pre tento problém je presmerovanie výstupu z programu do súboru priamo v príkaze pre operačný systém, avšak týmto spôsobom by sme vlastne stratili akúkoľvek kontrolu nad výstupom. Ďalej by nebolo možné spustenie viac ako jednej inštancie programu vzhľadom na možnosť prepísania jedného výstupu výstupom z druhého programu. Preto sme zvolili prostriedok poskytovaný operačným systémom, takzvané prepojenie odkazov, alebo rúru (pipe). Takýmto spôsobom dosiahneme ako úplnú kontrolu nad všetkými údajmi prichádzajúcimi z výstupu programu, tak aj možnosť ich okamžitého spracovania. Zároveň dosiahneme aj možnosť kontroly nad prístupom rôznych procesov k tomuto prostriedku. V praxi to znamená, že napríklad pri viacnásobnom požiadavku  rôznych procesov na zápis do rúry, môžeme pripustiť v jednom okamihu len jedného a to mi zaručuje konzistentnosť neskôr z rúry načítavaných údajov. Nevýhodou tohto prístupu je vlastne samotné zosynchronizovanie procesov, pretože sa používa iba jediný prostriedok a to má za následok čakanie ostatných procesov na uvoľnenie tohto prostriedku procesom, ktorý ho používa:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Možným riešením by v takomto prípade mohla byť existencia viacerých rúr súčasne. Týmto riešením sa však v prototype zaoberať nebudeme.

 

Funkčnosť:

Pri zisťovaní funkčnosti programu je veľmi ťažké nájsť hranicu medzi funkčným, čiastočne funkčným a nefunkčným programom. Preto je tu možné uplatniť percentuálne priblíženia k správnym výsledkom. Napríklad ak požadujeme úplne totožný výstup pre kontrolovaný program ako pre referenčný, uplatníme 100% zhodu. Ak postačuje napríklad zhodný výsledok v deviatich okruhoch z desiatich, uplatníme 90% zhodu. V prototype neimplementované.

V tomto module sa vykonáva samotné porovnávanie výstupov pre referenčné a testované zadanie. Pri zisťovaní zhody medzi výstupmi si treba uvedomiť, že nie každý výstup musí vyzerať úplne rovnako. Ako prvou neuvažovanou odlišnosťou bude formátovanie výstupu. To znamená, že žiadne formátovacie znaky nebudú do porovnávania uvažované, iba ak o to bude požiadané (sú aj také typy programov). Ďalej môžu byť aj také typy programov, kde nemusí záležať na poradí, v ktorých sa informácie vypisujú. V takomto prípade sa bude hľadať iba jedinečný výskyt riadkov z referenčného zadania v testovanom.

 

Riadenie:

V tejto funkčnej jednotke je vytvorená samotná logická väzba jednotlivých modulov. Znamená to, že tu sa vykonáva samotné rozdeľovanie úloh a zber údajov. Zároveň sa tu vyhodnocujú výsledky z jednotlivých modulov a následne sa ošetrujú prípadné chybové stavy podsystému. Riadenie rozlišuje dva spracovateľské režimy a to dávkový a interaktívny. Pri dávkovom spracovaní sú všetky etapy spracovávania súboru vykonávané automaticky. Pri interaktívnom spracovaní sa každá etapa vykonáva osobitne. O ktorú etapu sa jedná je zrejmé z požiadavky pre riadenie.

 

enum

{

          POZIADAVKA_PREKLAD,

          POZIADAVKA_SPUSTENIE,

          POZIADAVKA_FUNKCNOST,

          ...

};

 

Pri dávkovom móde spracovania sa postupne vykonávajú jednotlivé etapy testovania. Najprv sa spustí preklad a zistí sa správnosť programu. Potom sa program spustí s prípadnými testovacími vstupmi. Výstup sa potom vyhodnotí po funkčnej stránke. Nakoniec sa vygenerujú správy týkajúce sa stavu testovania. Pri interaktívnom móde sa vždy vykoná len požadovaná akcia a následne sa vygeneruje výsledok tejto akcie.

Pri obidvoch módoch sú ako vstupy uvažované zdrojové súbory. Cieľové súbory nie sú explicitne uvažované, to znamená že je na použitom spracovávajúcom programe, aký cieľový súbor vytvorí. Ako možnosť je tu povolené nastavenie cieľového súboru. Ako vstup nemusí byť len jeden zdrojový súbor, ale môže sa špecifikovať vstup, ktorý bude obsahovať takzvané vzory, ako napr. *, [abc] a podobne. Táto funkcia však v prototype nie je uplatnená.

 

Možnosti:

Tento modul je vytvorený vzhľadom na potreby nastavovania poskytovaných možností jednotlivými funkčnými jednotkami. Každá funkčná jednotka si môže vytvoriť vlastné úložiská pre nastavenia, avšak aby táto jednotka mohla tieto vlastnosti nastaviť, musí jej byť umožnené tieto úložiská poznať. Ďalej je potrebné vytvoriť jednoduché rozhranie, cez ktoré by sa tieto vlastnosti predávali z tohto modulu do volajúceho. Na tento účel slúži štruktúra, ktorá môže obsahovať ľubovoľnú zo štruktúr pre konkrétny modul. Zároveň však treba vedieť, o ktorú štruktúru ide, takže treba pridať aj identifikátor vnorenej štruktúry.

 

struct

{

ID_VNORENEJ_STRUKTURY;

union

{

STRUKTURA_1,

...

STRUKTURA_N

          };

};

 

Takýmto spôsobom dosiahneme možnosť pridávať aj nové nastavenia pre existujúce alebo nové moduly. Nevýhodou takéhoto prístupu je závislosť tohto modulu od ostatných, pretože v tomto module sa spracovávajú požiadavky od ostatných modulov, kde je však potrebná znalosť vnútornej štruktúry pre nastavenie konkrétnej vlastnosti. Takýmto spôsobom sme síce odbremenili všetky ostatné moduly od vlastných nastavení, avšak tým sme im aj znemožnili akúkoľvek kontrolu nad priebehom nastavovania, pretože všetky operácie pre všetky moduly sú vykonávané tu. Výhodou môže byť to, že takto sme dosiahli akési zoskupenie všetkých dátových štruktúr pod jeden modul a tým sme vlastne uľahčili detekciu chyby práve na tento modul.

 

Princíp spočíva v tom, že nastavovanie možností prebieha cez používateľa, prípadne konfiguračný súbor. Tieto nastavenia však pozná a má k nim prístup iba tento modul, takže ak chce nejaká funkčná jednotka začať prácu, najprv by si mala vypýtať jej aktuálne nastavenia pre konkrétne vlastnosti. Takto je zaručená možnosť meniť nastavenia počas behu programu a zároveň sa o nich dozvedieť v prislúchajúcich funkčných jednotkách.

 

 

Analýza podobnosti:

 

Po dôkladnej analýze problému a špecifikácii porovnávania zadaní, pri ktorom sa snažíme nájsť a odhaliť podobné riešenia, pristupujeme teraz k fáze vytvárania prototypu. Keďže sa jedná o prototyp, je nutné hlavne vytvoriť určitý funkčný základ, na ktorom potom postupne vybudujeme komplexné riešenie tejto časti systému.

Rozhodli sme sa vytvoriť jednoduchú aplikáciu porovnávajúcu dva ľubovoľné zdrojové súbory jazyka symbolických inštrukcií (JSI) s cieľom zhodnotiť podobnosť riešení. Pred samotným porovnávaním je však nutné vykonať v oboch zdrojových programoch úpravy potrebné k tomu, aby sme mohli kontrolovať už len samotné inštrukcie JSI, čiže odstrániť nepotrebný obsah súboru a pripraviť zvyšok na testovanie (predspracovanie). V tomto prípade sa jedná o:

·     odstránenie komentárov – zo zdrojových programov odfiltrujeme všetky komentáre, aby sme dostali len samotné konštrukcie JSI; týmto zabezpečíme, že komentáre nemusíme potom filtrovať v ďalších krokoch porovnávania a najmä ľahko odhalíme identickosť riešení založených len na zmene komentárov;

·      odstránenie "bielych" znakov – odfiltrovanie nadbytočných znakov space (medzera) a tab (tabulátor), ktoré môžu komplikovať ďalšie porovnávanie;

·      odstránenie nadbytočných riadkov – zdrojový program sa upraví tak, aby sa v jednom riadku nachádzala jedna inštrukcia, prípadne rezervované slovo.

 

Predpokladáme, že v konečnom riešení bude predspracovanie zložitejšie vzhľadom na to, že kontrola zhodnosti bude komplikovanejšia a bude si vyžadovať abstraktnejšiu reprezentáciu zdrojových programov.

 

Keď máme takto upravené zdrojové programy, môžeme prejsť k samotnému porovnávaniu. Aplikácia ich porovnáva nasledovnými spôsobmi:

·      hrubé porovnanie – vykonáva sa len vtedy, ak majú zdrojové programy rovnaký počet programových riadkov; je to vlastne ich porovnanie znak po znaku, pričom zhodnosť sa dosiahne, len ak sú naozaj zhodné, teda ak bol v jednom zmenený len komentár, pridané riadky, prípadne nebolo zmenené vôbec nič;

·      porovnanie histogramom – v oboch programoch sa zistí počet jednotlivých znakov (histogram) a vypočíta sa entrópia z rozdielu týchto histogramov; to znamená, že výsledkom je miera podobnosti zdrojových programov; pri ich zhodnosti dosiahne hodnotu blízku 100% (v dôsledku zaokrúhľovania nie presne 100%).

 

Tieto typy porovnávania nepredstavujú veľmi spoľahlivé metódy hľadania identickosti v zadaniach, sú použité kvôli jednoduchosti a rozsahu prototypu. Samozrejme konečné riešenie bude poskytovať viac možností kontroly, bude obsahovať oveľa zložitejšie a hlavne spoľahlivejšie metódy.

 

 

Evidencia:

 

Úložisko údajov:

V prototype je ako úložisko použitá databáza jazyka MS Access, v ktorej sú definované tabuľky presne podľa špecifikácie údajov. Obsahuje taktiež pravidlá pre dodržanie integrity údajov, ktoré vlastne reprezentujú referencie medzi údajmi. Dôvodom pre určenie tohto druhu databázy bola hlavne podmienka vytvorenia prototypu v čo najkratšom čase, pretože termíny odovzdania sú veľmi krátke.

Keďže ako model databázy bol použitý MS Access a ako vývojové prostredie sme zvolili MS Visual C++, na implementáciu rozhrania s databázou bol použitý model DAO, ktorý je primárne určený pre prácu s databázovými súbormi MS Access. Technika použitá v prototype však nemusí byť použitá aj v konečnom produkte, pretože už v súčasnej dobe je projekt vyvíjaný aj pomocou technológie ADO (ActiveX Data Objects).

 

Spracovanie:

Prototyp obsahuje tri časti, ktoré zabezpečujú kompletnú evidenciu študentov, otázok a vypracovaných zadaní. Časti určené pre evidenciu študentov a otázok sú štandardné databázové moduly s funkciami pre pridávanie, mazanie a úpravu jednotlivých položiek databázy. Všetky časti majú veľmi podobný vzhľad a takmer zhodné ovládanie. Pri zobrazení obsahujú všetky časti zoznam všetkých viet tabuľky databázy, nad ktorou prebiehajú užívateľom vyvolané akcie.

Na zobrazenie údajov je použitý vlastný prvok odvodený od triedy Cwnd. Prvok je priamo navrhnutý pre prácu s databázou. Obsahuje funkcie pre načítanie a zobrazenie údajov databázy.

 

Evidencia študentov:

Štandardné databázové funkcie - pridať, upraviť, vymazať. Trieda odvodená od CFormView.

 

Evidencia úloh:

Štandardné databázové funkcie - pridať, upraviť, vymazať. Trieda odvodená od CFormView.

 

Evidencia zadaní:

Trieda odvodená od CFormView. Realizuje tieto funkcie:

·        Prijímanie pomocou elektronickej pošty – pre tento postup bola navrhnutá trieda, ktorá zabezpečuje funkcie komunikácie s POP3 serverom (bola navrhnutá na základe preštudovaných RFC dokumentov). Protokol umožňuje odosielanie hlavičiek správ, čo umožňuje vytváranie si zoznamov správ na serveri. Táto možnosť bola využitá aj pri automatickom prijímaní zadaní.

·        Načítanie z média – pri tejto metóde je po zadaní cesty prehľadaný zadaný adresár a kontroluje sa existencia adresárov s identifikačnými číslami študentov, ktoré obsahujú súbor s vypracovaným zadaním.

·        Hodnotenie – je určené pre spúšťanie modulov testovania, porovnávania a hodnotenia štýlu. Na základe výsledkov jednotlivých testov môže cvičiaci ohodnotiť zadania určitým počtom bodov, ktorý sa zapíše do databázy.

 

 

Integrované prostredie:

 

Časti evidencie sú zastrešené integrovaným prostredím, ktoré poskytuje základné možnosti prepínania sa medzi evidenčnými časťami.

Prvok je zložený z dvoch tried, jedna je odvodená od CSplitterWnd a slúži na rozdelenie okna aplikácie na dve časti s tým, že v ľavej časti je zoznam zadaných modulov a v pravej časti sú prepínané jednotlivé moduly.

 

Návrh obrazoviek:

 


Zadávanie hodnôt študenta:                       Zadávanie hodnôt úlohy:


 



Konfigurácia:

 

 



4.2. Používateľská príručka:

 

Test funkčnosti:

 

Prototyp tejto časti je reprezentovaný samostatnou aplikáciou. Je implementovaná v prostredí API Win32, je teda spustiteľná v OS Windows 9x/NT.

Spúšťa sa vykonateľným súborom "test_prot.exe". Po spustení sa na obrazovke objaví okno, v ktorom je vykreslených päť tlačidiel. Tieto tlačidlá slúžia ako skratky k funkciám, ktoré aplikácia poskytuje. Niektoré z nich sú vo fáze prototypovania nefunkčné, pretože funkcie, ktoré reprezentujú, budú implementované až vo fáze implementácie celého systému.

Popis jednotlivých tlačidiel modulov (funkcií):

 

Preklad:

Toto tlačidlo umožňuje využívať služby modulu Preklad. Ak ešte nebol vybratý súbor, ktorý má byť testovaný, je toto tlačidlo nepoužiteľné. Výber súboru je možný v module Možnosti. Po výbere súboru treba stlačiť tlačidlo Preklad a počkať na ukončenie prekladu. Po skončení prekladu sa vypíše správa o stave prekladu (úspech alebo neúspech). Ak preklad prebehol bez chyby, spustí sa linkovanie (vytvorí sa spustiteľný súbor). Aj po skončení linkovania sa vypíše výsledok. To znamená, že ak sa podarilo vytvoriť spustiteľný súbor, vypíše sa úspech, inak sa vypíše hlásenie o chybe. Po správnom vytvorení spustiteľného súboru je možné použiť službu Spustenie, ktorá spustí preložený program.

 

Spustenie:

Tlačidlo poskytuje službu spustenia programu z prostredia aplikácie. Ak spusteniu predchádzal preklad, ako spustiteľný súbor sa použije prekladom vytvorený súbor. Je možné vybrať si aj vlastný program a to cez modul Možnosti. Ďalej je možné program spustiť aj s parametrami, ktoré sa tiež dajú nastaviť v module Možnosti. Po spustení programu sa čaká na jeho ukončenie (v prototype nie je možné spustenie viacerých programov naraz). Po ukončení programu sa vypíše správa o úspešnosti spustenia programu.

 

Funkčnosť:

Toto tlačidlo slúži na testovanie výstupu zo spusteného programu, takže nemá žiadny význam stláčať ho inokedy. Zatiaľ nie je implementovaná žiadna metóda testovania funkčnosti, takže pri existencii výstupných dát sa vždy vypíše úspech.

 

Riadenie:

Táto funkcia nie je v prototype implementovaná.

 

Možnosti:

V tomto module sa dá aplikácia prispôsobiť požiadavkám používateľa. Toto prispôsobovanie spočíva hlavne v nastavovaní parametrov pre preklad, spúšťanie, testovanie funkčnosti a podobne. Po stlačení tohto tlačidla sa objaví dialógové okno, z ktorého je možné vybrať modul, ktorý bude prispôsobovaný. Po výbere modulu sa objaví ďalšie dialógové okno, v ktorom je možné vybrať konkrétne nastavované vlastnosť a priradiť im hodnoty.

 

 

Analýza podobnosti:

 

Prototyp tejto časti je reprezentovaný jednoduchou aplikáciou. Je implementovaná v prostredí API Win32, je teda spustiteľná v OS Windows 9x/NT.

Pracuje so zdrojovými súbormi jazyka symbolických inštrukcií. Je to jednoduchá dialógová aplikácia s intuitívnym ovládaním a prehľadným výstupom.  Samozrejme v konečnom riešení budú funkcie porovnávajúce programy zakomponované do kompletného systému, ale pre prototyp sme zvolili (kvôli väčšej prehľadnosti) samostatné riešenie.

Po štarte aplikácie (spustiteľný súbor "asmproto.exe") sa používateľovi objaví nasledovné dialógové okno:

 

výstupné okno aplikácie

 

sem môže používateľ zadať meno súboru (aj s cestou), ktorý sa bude porovnávať

 

umožňuje nájsť zdrojový súbor, ktorý sa bude porovnávať

 

vo výstupnom okne sa objaví zdrojový text programu už po úpravách (predspracovaní)

 

štart porovnávania

 

ukončenie aplikácie

 

 

 

 

 

 

 


Postup porovnávania zdrojových programov:

1.   Do vstupných okien zadáme mená súborov ktoré chceme porovnať; pre jednoduchosť môžeme použiť tlačidlo Nájdi.

2.   Potom stlačíme tlačidlo Porovnaj a zadané programy sa porovnajú.

3.   Vo výstupnom okne sa objavia výsledky porovnania.

4.   Stlačením tlačidla Zobraz si môžeme pozrieť zdrojové súbory.

5.   Aplikáciu možno ukončiť tlačidlom Koniec.

 

Výsledky porovnania:

Ako výsledok dostávame vo výstupnom okne aplikácie:

·        meno prvého zdrojového súboru (celkový počet riadkov, počet riadkov programového kódu),

·        meno druhého zdrojového súboru (celkový počet riadkov, počet riadkov programového kódu),

·        ak sú súbory zhodné (po predspracovaní), vypíše sa informácia o ich zhodnosti, inak je výsledkom hodnota porovnania histogramov [%].

 

 

Evidencia:

 

Prototyp tejto časti je reprezentovaný aplikáciou, ktorá sa po nainštalovaní spúšťa spustiteľným súborom "soj.exe". Je implementovaná v prostredí API Win32, je teda spustiteľná v OS Windows 9x/NT.

Integrované prostredie aplikácie poskytuje používateľovi komfortné ovládanie jednotlivých modulov aplikácie. Zoznam modulov aplikácie je zobrazený v ľavej časti okna. Z tohto zoznamu sa jednoduchým stlačením ľavého tlačidla myši zobrazí v pravej časti okna požadovaný modul. V súčasnosti sú implementované tri moduly. Modul evidencie študentov, otázok a vypracovaných zadaní:

 

 

 

Jednotlivé moduly evidencie majú zhodné základné ovládanie a zobrazenie údajov, majú zobrazené údaje vo forme listovacieho zoznamu so štandardným ovládaním myšou alebo klávesnicou. Všetky operácie, ktoré užívateľ vykonáva, sú prevádzané nad aktuálne vybraným záznamom, ktorý je farebne odlíšený od ostatných.

 

Evidencia študentov:

Táto časť aplikácie slúži na evidenciu základných údajov o študentoch a zabezpečuje základné operácie s údajmi. Evidujú sa nasledovné údaje:

·        meno a priezvisko,

·        ročník a krúžok,

·        e-mailová adresa,

·        pomocné poznámky.

 

Pridanie študenta:

Zobrazí sa vstupný formulár pre požadované údaje. Po vyplnení formuláru sa údaje zapíšu do databázy študentov. Pri zápise sa kontroluje jedinečnosť identifikačného čísla nového študenta.

 

Oprava údajov študenta:

Zobrazí sa formulár zhodný so zadávaním študenta, ktorý je naplnený súčasnými hodnotami. Hodnoty je možné zmeniť a zapísať, alebo opustiť formulár bez uloženia zmien (Storno).

 

Vymazanie študenta:

Zobrazí sa okno potvrdenia. Po kladnej odpovedi sa záznam nenávratne vymaže.

 

Evidencia úloh:

Táto časť aplikácie slúži na evidenciu základných údajov o úlohách pre študentov. Zabezpečuje základné operácie s údajmi. Eviduje sa:

·        názov úlohy,

·        dátum odovzdania,

·        bodové hodnotenie,

·        text úlohy a vzorového zadania,

·        očakávané konštrukcie použité v zadaní,

·        množina vstupov a výstupov pre testovanie zadaní.

 

Pridanie úlohy:

Zobrazí sa vstupný formulár pre základné údaje o úlohe. Formulár neobsahuje priamo texty zadaní, tie sú prístupné po stlačení príslušného tlačidla. Po jeho stlačení je text zobrazený a je možné ho meniť. To isté platí aj o vzorovom zadaní, použitých konštrukciách a množinách vstupov a výstupov. Po vyplnení formuláru sa údaje zapíšu do databázy úloh. Pri zápise sa generuje jedinečné identifikačné číslo pre novú úlohu.

 

Oprava úlohy:

Zobrazí sa formulár zhodný so zadávaním novej úlohy, ktorý sa naplní súčasnými hodnotami. Hodnoty je možné zmeniť a zapísať, alebo opustiť formulár bez uloženia zmien (Storno).

 

Vymazanie študenta:

Zobrazí sa okno potvrdenia. Po kladnej odpovedi sa záznam z databázy nenávratne vymaže.

 

Evidencia zadaní:

Táto časť aplikácie slúži na evidenciu vypracovaných zadaní študentov. Poskytuje nasledovné možnosti spracovania zadaní:

 

Prijímanie pomocou elektronickej pošty:

Vždy sa zobrazí zoznam zadaní na serveri elektronickej pošty, z ktorého je možné jednoducho si vybrať len niektoré a ostatné ponechať na serveri. Nastavenia servera elektronickej pošty sú preberané z konfigurácie aplikácie.

 

Načítanie z média:

Po zadaní cesty k zadaniam je taktiež zobrazený zoznam zadaní, ale už len pre informačné účely. Zadania sú rozoznávané podľa adresárovej štruktúry, kde každý študent musí mať vytvorený adresár so svojím identifikačným číslom.

 

Hodnotenie:

Je určené na spúšťanie modulov testovania, porovnávania a hodnotenia štýlu. Na základe výsledkov jednotlivých testov cvičiaci môže ohodnotiť zadania určitým počtom bodov, ktorý sa zapíše do databázy.

 

Konfigurácia:

Samostatná časť aplikácie, ktorá slúži na nastavenie jednotlivých modulov aplikácie. Je založená na prepínaní záložiek, kde každá záložka obsahuje konfiguračné údaje pre jeden modul.