3. ŠPECIFIKÁCIA POŽIADAVIEK

 

 

Počítačová podpora cvičení v predmete Strojovo orientované jazyky bude určená pre pedagógov katedry informatiky a výpočtovej techniky FEI STU, ktorí majú na starosti cvičenia predmetu SOJ.

Bude podporovať tie činnosti, ktoré najviac zaťažujú pedagógov pri preberaní zadaní od študentov a pri hodnotení obsahovej i formálnej stránky zadaní. Tento systém bude plniť tieto hlavné úlohy (funkcie):

 

·        Evidencia,

·        Analýza podobnosti,

·        Test funkčnosti,

·        Analýza programovacieho štýlu.

 

 

3.1. Špecifikácia funkcií systému:

 

Evidencia:

Modul evidencie bude slúžiť na uchovávanie vypracovaných zadaní od študentov, zoznamov študentov a taktiež aj na evidenciu jednotlivých úloh pre študentov.

Tento modul bude rozdelený na tri podsystémy:

·        Evidencia študentov,

·        Evidencia úloh,

·        Evidencia zadaní.

 

Evidencia študentov:

Tento podsystém bude určený na evidenciu základných údajov o študentoch, ktorí majú zapísaný predmet SOJ. Bude v sebe zahŕňať základnú manipuláciu s údajmi na databázovej úrovni – pridanie študenta, úprava študenta a jeho vymazanie zo zoznamu. Okrem toho bude existovať možnosť načítania zoznamu z iného systému (napríklad katedrového alebo fakultného) a samozrejme aj možnosť vytlačenia zoznamu študentov. Pri zobrazení a tlači študentov bude existovať možnosť nastaviť filter pre zobrazenie zoznamu študentov podľa zadaných požiadaviek. Filter bude možné dynamicky vytvárať za behu aplikácie a bude vždy uložený pre ďalšie použitie.

 

Evidencia úloh:

Podsystém evidencie úloh bude evidovať jednotivé úlohy pre študentov. Taktiež bude slúžiť na priradenie existujúcich úloh jednotlivým študentom. Systém bude navrhnutý tak, aby podporoval všetky kombinácie pridelenia úloh študentom. Takže bude možné prideliť jedno zadanie všetkým študentom, jedno zadanie skupine študentov (napríklad pre jeden krúžok), alebo každému študentovi prideliť inú úlohu.

Pridelené úlohy bude možné posielať študentom prostredníctvom elektronickej pošty, alebo ich vytlačiť ako zoznam študentov s pridelenými úlohami. Posielanie elektronickou poštou bude zabezpečené prostredníctvom protokolu SMTP. V evidencii úloh budú môcť byť zahrnuté okrem textov úloh aj doplnkové informácie o každom zadaní:

·        vzorové vypracovanie zadania,

·        množina vstupov a výstupov vzorového zadania pre potreby testovania zadania,

·        množina sekvencií inštrukcií, ktoré sú očakávané pri riešení úlohy (takzvané vzorové konštrukcie).

 

Evidencia zadaní:

Tento podsystém bude určený na ukladanie zadaní vypracovaných študentmi. Vypracované zadania bude možné do systému načítavať tromi spôsobmi:

·        jednotlivo pre každého študenta,

·        dávkovo, ak budú zadania v požadovanej stromovej štruktúre na disku alebo diskete (každý študent bude mať vytvorený adresár so svojím osobným číslom), systém rozpozná študentov a načíta zodpovedajúce zadania,

·        prostredníctvom elektronickej pošty (pomocou protokolu POP3) – po aktivovaní tejto možnosti bude zobrazený zoznam prijatých správ elektronickej pošty a bude možné vybrať si len tie, ktoré sa budú mať načítať do systému ako vypracované zadania  (ostatné správy ostanú naďalej na poštovom serveri).

 

Po načítaní prídu na rad ostatné moduly systému, ktoré budú mať za úlohu napomôcť pri hodnotení zadaní. Hodnotenia sa budú ukladať spoločne s odovzdanými zadaniami. Organizácia údajov bude umožňovať v podstate neobmedzený počet úloh v priebehu semestra, pričom za jednu z úloh bude možné považovať aj záverečnú písomnú skúšku. To umožní udržiavať hodnotenie v jednom ucelenom logickom bloku a nebudú potrebné ďalšie systémy alebo aplikácie na celkové hodnotenie študentov.

Samozrejme hodnotenia bude možné tlačiť priebežne aj celkove. Pre prípad potreby zvláštneho spracovania hodnotenia bude v systéme zabudovaná podpora exportu údajov do formátov iných aplikácií (napríklad formáty XLS, TXT a podobne).

 

 

Analýza podobnosti:

Táto časť systému bude mať za úlohu odhaliť zadania, ktoré nie sú vypracované študentmi, ktorí ich odovzdali. Analýza podobnosti bude teda analyzovať text zdrojového kódu a hľadať podobnosti s inými zadaniami.

Samotný proces hľadania podobnosti v zdrojových kódoch programov bude rozdelený do dvoch fáz:

·        hľadanie vzorových konštrukcií,

·        hľadanie zhodných konštrukcií.

 

Hľadanie vzorových konštrukcií:

V tejto fáze bude systém zisťovať prítomnosť vzorových konštrukcií v zadaniach a tieto sa v ďalšom porovnávaní a hľadaní podobnosti nebudú brať do úvahy.

 

Hľadanie zhodných konštrukcií:

Táto fáza bude mať na starosti inteligentné hľadanie úsekov alebo častí v programoch, ktoré sa vyskytujú v iných zadaniach.

Okrem neinteligentného hľadania jednoduchým porovnávaním zdrojových kódov dvoch zadaní sa bude hľadať hlavne:

·        premenovávanie návestí,

·        premenovávanie premenných,

·        premenovávanie procedúr,

·        zámena registrov,

·        vkladanie návestí – zdrojový program obsahuje niekoľko nadbytočných návestí, ktoré umožňujú inak sekvenčné programové konštrukcie rozmiestniť na rôzne miesta zdrojového súboru, tak aby sa nepodobali,

·        vkladanie nadbytočného programového kódu – do zdrojového programu sa vloží procedúra (alebo iná sekvencia inštrukcií), ktorá sa nikde nevolá a nikdy sa nevykoná, čo môže mať za následok skreslenie výsledkov porovnávania dvoch programov.

 

Aby sa predišlo situácii, že systém identické riešenia neodhalí, bude nutné vykonávať porovnanie zadania so všetkými ostatnými (pre danú úlohu). Samozrejme bude umožnené aj porovnanie s niektorým konkrétnym zadaním, prípadne s viacerými.

Výsledky hľadania môžu určiť napríklad koeficient s ktorým sa bude potom narábať pri celkovom hodnotení zadania.

 

 

Test funkčnosti:

 

Modul testovania funkčnosti bude tvorený viac-menej týmito nezávislými podsystémami (procesmi):

·        Preklad,

·        Spustenie,

·        Funkčnosť,

·        Riadenie,

·        Rozšírenia.

 

 

Preklad:

Proces bude mať na starosti preklad zdrojových súborov do spustiteľného tvaru a následné vyhodnotenie prekladu. Ak budú prítomné referenčné zadania pre konkrétny problém, vytvorí aj ich spustiteľné verzie. Budú možné aj prídavné nastavenia pre konkrétny prekladač.

 

Spustenie:

Proces bude mať na starosti spustenie preloženého programu, vytvorenie testovacích vstupov, alebo výber referenčných vstupov a zber výstupov (tak referenčných ako aj testovacích). Bude možné spustenie strážcu na dohliadanie nad vykonávaným programom.

 

Funkčnosť:

Proces bude mať na starosti porovnanie testovacích a referenčných vstupov.

 

 

Riadenie:

Proces bude mať na starosti koordináciu všetkých procesov a  komunikáciu s okolím. Postupne bude využívať funkcie ostatných podsystémov a zbierať čiastkové výsledky, na základe ktorých sa vyhodnotí proces testovania funkčnosti.

 

Rozšírenia:

Proces bude mať na starosti ponuku nových možností s ohľadom na budúce možné rozšírenia. Ďalej bude mať na starosti aktiváciu alebo deaktiváciu týchto možností. Bude možné pridanie externých programov do ponuky (menu).

 

Tok riadenia pôjde iba jedným smerom a to od procesu Riadenie k ostatným procesom.

Tok údajov medzi procesmi bude minimálny, keďže jednotlivé podsystémy budú nezávislé. Jediné údaje budú údaje o výsledkoch jednotlivých procesov. Prísun dát z externých entít bude obmedzený iba na proces Riadenie. Veľký vplyv na tok údajov bude mať výber reprezentácie (organizácie) zadaní a správy údajov v systéme.

 

 

Analýza programovacieho štýlu:

          Analýza a vyhodnotenie programovacieho štýlu autora zadania bude mať za úlohu "preskúmať" text zdrojového kódu programu, či sa jeho štruktúra riadi určitými pravidlami zápisu programu v JSI.

Pre program (1 riadok) zapísaný v JSI sú charakteristické tieto pravidlá (ktoré nie sú vo vzťahu logického súčinu):

·        riadok začína tabulátorom, za ktorým nasleduje inštrukcia (bez operandov),

·        riadok začína návestím, nasleduje tabulátor a inštrukcia (bez operandov),

·        riadok začína tabulátorom, za ktorým nasleduje inštrukcia, po nej tabulátor alebo medzera a operand inštrukcie,

·        riadok začína tabulátorom, nasleduje inštrukcia, tabulátor alebo medzera, operand1, za ním čiarkou oddelený operand2 (bez medzery),

a podobne.

 

Ďalšie pravidlá sú:

·        za číslo sa má písať označenie sústavy (20h, 01100101b, ...), okrem desiatkovej, ktorá sa explicitne uvádzať nemusí, lebo je to implicitná sústava ak nie je žiadna uvedená,

·        na jeden riadok sa má písať iba jedna inštrukcia,

·        komentáre (za bodkočiarkou) sa uvádzajú buď na samostatnom riadku, alebo za inštrukciou (oddelené tabulátorom/-mi)

 

Pravidlá pre jeden riadok zdrojového kódu programu je možné zhrnúť do všeobecnej formy zápisu (do dvoch všeobecných pravidiel):

1.     [návestie:]<TAB><inštrukcia>[<TAB>/<SPACE><operand1>[,<operand2>]][<TAB>[...<TAB>]]/<SPACE>[...<SPACE>];<komentár>]

2.     [;<komentár>]

 

Pričom <TAB> by mal byť väčší, ako maximálna dĺžka návestia + 2 (dvojbodka a jedna medzera). Štandardná dĺžka návestia používaná v programoch písaných v JSI je 6 znakov, teda <TAB> je 8 prázdnych znakov (medzier). <SPACE> je jeden prázdny znak (medzera).

 

 

3.2. Špecifikácia údajov v systéme:

 

Študent: Predstavuje jedného študenta, ktorý ma zapísaný predmet SOJ.

 

Atribúty:

·        identifikačné číslo študenta

·        meno

·        priezvisko

·        krúžok

·        ročník

·        adresa elektronickej pošty

·        poznámky

 

Úloha: Predstavuje jedno zadanie, ktoré by mali študenti vyriešiť do stanoveného termínu.

 

Atribúty:

·        identifikačné číslo úlohy

·        názov úlohy

·        text úlohy

·        vzorové riešenie

·        množina vstupov

·        množina výstupov

·        použité konštrukcie

·        počet bodov za úlohu

·        najneskorší dátum odovzdania

·        poznámky

 

Zadanie: Predstavuje odovzdané vypracovanie jednej úlohy jedným študentom. Je kombináciou entity študent a úloha a zahŕňa v sebe text zdrojového programu ako aj jeho hodnotenie.

 

Atribúty:

·        id študenta

·        id úlohy

·        text vypracovanej úlohy

·        dátum odovzdania

·        bodové ohodnotenie

·        poznámky

 

Ďalšími údajmi v systéme budú inštrukčné súbory rôznych procesorov. Teda systém nebude obmedzený iba na jednu platformu.

 


Vstupy a výstupy systému:

 

Vstupy:

Zadanie, Nastavenia testu funkčnosti, Nastavenia analýzy podobnosti, Nastavenia analýzy programovacieho štýlu.

 

Výstupy:

Úloha, Výsledok testu funkčnosti, Výsledok analýzy podobnosti, Výsledok analýzy programovacieho štýlu, Vyhodnotenie zadania.

 

 

3.2.1. Logický model údajov (ERD):

 


 



3.2.2. Diagram tokov údajov (DFD):

 

Kontextový DFD:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Dekomponovaný DFD – 1. úroveň:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Popis externých entít:

Študent: Táto externá entita reprezentuje študenta, ktorý odovzdáva zadania.

 

Učiteľ: Táto entita reprezentuje pedagóga, pre ktorého je tento systém určený.

 

Popis úložísk údajov:

Zadania: Toto úložisko obsahuje odovzdané vypracované zadania od študentov.

 

Úlohy: V tomto úložisku budú uložené texty úloh a s nimi súvisiace informácie.

 

Študenti: Toto úložisko bude obsahovať údaje potrebné na identifikáciu študenta.

 

 

3.3. Špecifikácia správania systému:

 

Životný cyklus študentského zadania v systéme:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


V tomto diagrame je naznačené, že zadanie je možné testovať a analyzovať nezávisle na ostatných testoch a analýzach (vtedy budú k dispozícii iba čiastkové vyhodnotenia toho-ktorého testu), alebo môže zadanie prejsť všetkými fázami kontroly (vtedy bude k dispozícii celkové vyhodnotenie zadania).

 

 


3.4. Ohraničenia systému:

 

Vzhľadom na špecifikované požiadavky bude tento podporný systém ohraničený:

·        operačným systémom – keďže sme si za implementačné prostredie zvolili prostredie Visual C++, prichádzajú do úvahy tieto OS:

·        Windows 95

·        Windows 98

·        Windows NT

·        Windows 2000

·        sieťovým prostredím – keďže systém bude poskytovať funkcie prijímania zadaní pomocou elektronickej pošty, je potrebná existencia protokolu TCP/IP a pripojenie na server poskytujúci služby elektronickej pošty.

·        hardvérovými prostriedkami – tieto budú odvodené od hardvérových nárokov operačného systému a sieťového prostredia.