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.