přístupů od 12.7.2000

Vysoké učení technické v Brně

Fakulta elektrotechniky a informatiky

Ústav automatizace a měřicí techniky

Školní rok 1999/2000

 

ZADÁNÍ DIPLOMOVÉ PRÁCE

 

pro posluchače jménem

Niedoba Pavel

studijní obor Kybernetika, automatizace a měření

Vedoucí ústavu a předseda oborové rady Vám určují tuto diplomovou práci:

Název tématu: Informační systém na Internetu

 

Zadání a zásady pro vypracování:

Seznamte se s problematikou budování informačních systémů v prostředí Internetu s využitím dostupných možností WWW prohlížečů, protokolu http a Java .

Seznamte se s vývojovým prostředím Magic verze 8.20 .

Navrhněte a zrealizujte Informační systém na bázi relačního datového prostředí Magic. Informační systém realizujte pro platformu Windows NT a systém řízení báze dat Btrieve.

Systém navrhněte tak, aby umožňoval prostřednictvím Internetu vyplňovat zkušební zprávy oprávněnými zaměstnanci fakulty. Administrátorskou část systému navrhněte v provedení Client/Server nebo Desktop Deployment dle svého uvážení.

Ověřte činnost systému na databázi pro zajištění výuky na ústavu UAMT.

Rozsah a struktura diplomové práce:

Vlastní diplomová práce musí obsahovat formulaci cíle, charakteristiku současného stavu, teoretická a odborná východiska řešených problémů.

Student odevzdá vytištěnou úplnou technickou zprávu, zdrojový tvar úplné technické zprávy v elektronické podobě a případnou úplnou programovou dokumentaci a zdrojové texty programů v elektronické podobě.

Informace v elektronické podobě budou uloženy na standardním paměťovém médiu (disketa, CD-ROM), ve formátu čitelném v běžném pracovním prostředí používaném na ÚAMT.

Seznam odborné literatury:

Podle vlastního literárního průzkumu a pokynů vedoucího DP.

 

P r o h l á š e n í

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Prohlašuji, že jsem předloženou diplomovou práci zpracoval sám s konzultační pomocí vedoucího projektu a uvedených konzultantů. Použité literární prameny jsou uvedeny v literárních odkazech.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

V Brně dne : Podpis:

 

Obsah

Obsah*

  1. Problematika informačních systémů v prostředí internetu
    1. Požadavky na internetový informační systém
      1. Internetovým informačním systémem rozumíme systém, který je přístupný zcela nebo jenom zčásti na počítačích připojených do sítě Internet. To umožňuje využití systému širokou veřejností ve světě bez hranic, kde vzdálenosti nehrají roli. Ačkoli by se mohlo zdát, že s Internetem je vše jednodušší, o tvorbě informačního systému to neplatí. Internet prochází velmi intenzívním vývojem a pravidla hry se mění ze dne na den. Jazyk HTML dnes již zdaleka není tím, čím býval v době svého vzniku. Téměř denně se objevují nové standardy vyvinuté spolky firem známých jmen. Pokud chceme vytvořit internetový informační systém, je třeba mít nejprve alespoň hrubý přehled o používaných protokolech, jazycích, prohlížečích a serverech.

        Nejběžnější realizace internetového informačního systému, spočívá v použití internetového prohlížeče (Internet browser) na straně klienta a jazyků HTML, DHTML a javascript. Tato koncepce předpokládá, že veškerou komunikaci vyvolává klient. Server pouze odpovídá na požadavky klienta. Neexistuje způsob jak vnutit klientovi informace ze serveru v případě, že si o ně sám nepožádal.

        Další vlastností protokolu HTTP je že předpokládá tzv. bezestavovost serveru. Odpověď serveru na požadavek klienta není a ani nemůže být svázána s předchozím požadavkem klienta, protože protokol HTTP nezaručuje, že data budou skutečně dodána na místo určení. Aplikace běžící na serveru většinou ani nemá možnost zjistit komu je odpověď na požadavek odesílána (IP adresu, číslo portu). Jsou dokonce případy kdy to není vůbec možné. Stačí aby klient seděl za firewallem, používal proxy server nebo cache server a je zcela nemožné pro WWW server aby určil adresu klienta. Toto je hlavní důvod, proč nelze použít transakční způsob komunikace mezi serverem a klientem. Všechny informace o stavu prováděné operace musí být neustále uloženy na straně klienta, a být znovu posílány serveru. Například, pokud chceme používat systém s rozlišením uživatele, musíme jméno uživatele, nebo jeho kód posílat s každým požadavkem klienta na server. Způsobuje to potíže při návrhu aplikace a zvyšuje objem přenášených dat. Tento postup má však také velké výhody v kompatibilitě s většinou prohlížečů a také v jednoduchosti základní myšlenky.

        V dalších odstavcích se pokusím provést analýzu současného stavu a uvedu různé možnosti realizace včetně zhodnocení argumentů pro a proti.

      2. Internetovým informačním systémem se rozumí, alespoň ve smyslu v jakém je chápán v této diplomové práci, soubor programů a nástrojů umožňující oprávněným osobám manipulaci s daty (přidávání, změnu, třídění, výběry, tisk a pod.), která jsou uložena na místě a formátech, které nejsou pro uživatele důležité, ale jsou přístupná pomocí počítače připojeného do sítě Internet. Z toho plyne několik základních požadavků na tento systém. V platnosti zůstávají stejné požadavky, které se vztahují ke konvenčním informačním systémům jako jsou spolehlivost, rychlost, realizovatelnost. Přibývají zde další požadavky, vyplývající z použití veřejné sítě. Jedná se hlavně o bezpečnost a dostupnost (přenositelnost mezi různými operačními systémy a hardwarovými platformami).

      3. Dostupností se rozumí mít možnost používat internetovou aplikaci, pomocí kteréhokoli počítače připojeného do Internetu, pokud není stanoveno omezení na určité podsítě. Vzhledem k samotné filosofii Internetu, je zde snaha tento problém řešit již od jeho vzniku. Síť je zbudována na použití univerzálního protokolu TCP/IP. Tento protokol využívají inernetové služby jako jsou WWW, FTP, POP3 a pod. Právě díky těmto službám může být internetová WWW aplikace zcela nezávislá na hardwarové platformě či operačním systému klienta.

      Podstatně větší problém je bezpečnost databázové aplikace před neoprávněným přístupem. Je potřeba chránit přenesená data během jejich celé cesty veřejnou sítí. Ačkoliv se to nemusí zdát pravděpodobné, nejvyšší napadnutelnost mají data na lokální síti klienta. Zde se totiž data dají velice snadno odposlouchávat, a je velká pravděpodobnost, že se právě na této síti vyskytují lidé, kteří mají zájem se do systému prolomit, anebo alespoň odposlechnout, datový tok, který často obsahuje uživatelské jméno a heslo.

      Proto vznikl pojem tzv. Secure transactions (bezpečné transakce). Je to označení pro takový druh on-line transakcí, které kromě své základní charakteristiky (nedělitelnosti) vykazují další vlastnosti bezpečnostního charakteru: je u nich například zajištěna privátnost, integrita, autentikace apod.

      Zatím bylo provedeno více pokusů o implementaci bezpečných transakcí. V mém případě ale nepotřebuji implementovat vlastnost nedělitelnosti, problém se zjednodušuje na sestavení bezpečného komunikačního kanálu, odolného proti odposlechu. Nejschůdnější cestou je implementace SSL (Secure Socket Layer) do komunikačního protokolu. Všechny datové přenosy jsou pak šifrovány. Mechanismus SSL byl vyvinutý firmou Netscape, a je podporovaný většinou významnějších prohlížečů (i mnoha WWW servery). Problém tohoto řešení je ale v jeho malé "zabezpečovací síle" – první verze SSL byla implementována tak nešťastně, že ji bylo možné prolomit na běžném PC již za 25 sekund. Novější, opravená verze SSL v prohlížečích Netscape však nedávno byla prolomena také. Dalším problémem v síle zabezpečení je nařízení amerického soudu, které zakazuje vyvážet šifrovací algoritmy s vysokým stupněm utajení mimo země severní Ameriky. V Evropě je proto k dispozici pouze verze protokolu SSL s délkou klíče 40 bitů, který se dá zlomit na stroji prověřující 1 000 000 variant za sekundu během necelých 13 dní.

      Výhodou tohoto řešení je jeho pohodlnost, tj. snadná implementace. Můžeme napsat aplikaci zcela bez ohledu na bezpečnost utajení přenášených dat a pak pouze implementovat SSL na určené adresáře WWW serveru. Toto je umožněno začleněním SSL jako další vrstvy v síťovém modelu (Layer = vrstva). Je možné nastavit SSL ochranu na všechna přenášená data, ale je potřeba si uvědomit, že šifrování znamená nemalou zátěž procesoru a na druhé straně je zbytečné šifrovat např. přenášené obrázky, které se podílejí vysokým procentem na celkovém objemu přenesených dat. Proto je potřeba s tímto aspektem počítat již při návrhu adresářové struktury aplikace.

    2. Protokoly Rodiny TCP/IP, HTTP a jazyk HTML
      1. O TCP/IP se často nesprávně mluví v jednotném čísle, jako o "protokolu TCP/IP". Ve skutečnosti jde o celou soustavu (rodinu) jednotlivých protokolů, které jsou spojeny společnou představou o tom, jak by měly vypadat a jak by měly fungovat. Tato představa vznikla v sedmdesátých letech v USA, pro potřeby budování tehdy teprve se rodícího Internetu - ten je také na protokolech TCP/IP vybudován. Neznamená to ale, že by protokoly TCP/IP byly výhradní specialitou Internetu. Jde vlastně o ucelenou "síťovou koncepci", která může být s úspěchem použita v jakékoli počítačové síti, a to jak lokální, tak i rozlehlé. Součástí rodiny protokolů je dnes více než 100 různých konkrétních protokolů, a další neustále vznikají. Kromě toho je s rodinou protokolů TCP/IP spojena i ucelená představa o tom, do jakých hierarchických vrstev by měly být rozděleny nejrůznější síťové funkce- tedy tzv. síťový model. Koncepce TCP/IP počítá s existencí čtyř takovýchto hierarchicky uspořádaných vrstev: aplikační vrstvou, transportní vrstvou, síťovou vrstvou, a vrstvou síťového rozhraní. Do nejvyšší (aplikační) vrstvy přitom zasahují jednotlivé aplikace - příslušným aplikační protokolům se budeme věnovat v dalších dílech. Nejnižší vrstvu (vrstvu síťového rozhraní) naproti tomu rodina protokolů TCP/IP vůbec "nezabydluje" - předpokládá, že zde budou použity fyzické přenosové protokoly, vzniklé jinde, mimo TCP/IP (například Ethernet, Token Ring, ATM apod.).

      2. Pojmenování "TCP/IP" vzniklo spojením jmen dvou zřejmě nejvýznamnějších protokolů z celé rodiny, a to protokolů IP (Internet Protocol) a TCP (Transmission Control Protocol). Protokol IP je protokolem tzv. síťové vrstvy (druhé odspodu, v rámci čtyřvrstvového modelu TCP/IP, resp. třetí, počítáno v rámci sedmivrstvého modelu ISO/OSI). Jeho úkolem je přesně to, co je hlavním úkolem síťové vrstvy: dopravovat data až na místo jejich určení, a to i přes eventuelní mezilehlé ("přestupní") uzly, neboli přes tzv. směrovače. Aby to protokol IP dokázal, musí hledat vhodné směry (cesty) v soustavě vzájemně propojených směrovačů, vedoucí až k požadovanému cíli - neboli zajišťovat to, čemu se říká směrování (routing). K tomu pak protokol IP potřebuje vhodné informace o topologii celé sítě, na kterou se snaží dívat jako na soustavu dílčích sítí, vzájemně propojených právě prostřednictvím směrovačů. Tato představa odpovídá tomu, čemu se v angličtině říká "internetwork", zkráceně "internet" (a co se na rozdíl od globálního Internetu píše s malým i) - právě této představě obecné soustavy vzájemně propojených sítí pak protokol IP vděčí za první polovinu svého jména. Kromě protokolu IP je ale síťová vrstva TCP/IP "obydlena" ještě mnoha dalšími protokoly, které většinou slouží jako "podpora" pro protokol IP - zajišťují například ošetření nestandardních situací, starají se o šíření informací potřebných ke korektnímu směrování atd.

      3. Protokol TCP se v rámci hierarchického vrstevnatého modelu nachází v tzv. transportní vrstvě, bezprostředně nad vrstvou síťovou, ve které sídlí protokol IP. V praxi to znamená, že protokol TCP je tzv. transportním protokolem, který sám využívá přenosových služeb síťového protokolu IP, které dále obohacuje a zdokonaluje. Jedním z takovýchto "obohacení" je i zvýšení přenosové spolehlivosti: protokol IP je tzv. nespolehlivý, v tom smyslu že když zjistí že se něco při přenosu poškodilo, nepovažuje za svou povinnost postarat se o nápravu (a poškozená data jednoduše zahodí a pokračuje dál). Transportní protokol TCP se již chová jinak - případné chyby se snaží napravit sám, a to podniknutím potřebných nápravných akcí (vyžádá si nový přenos dat, které se poškodily). Jinou odlišností protokolu TCP od protokolu IP je to, s jakými adresami tyto protokoly pracují. Protokol IP pracuje s tzv. IP adresami (viz předminule), které identifikují každý síťový uzel jako celek - protokol IP tedy "vidí" jen celé jednotlivé uzly, a nesnaží se o jakékoli jemnější rozlišení. To dělá až protokol TCP, který uvažuje různé příjemce či odesilatele v rámci jednotlivých uzlů (například různé aplikace a systémové programy, či skutečné "fyzické" uživatele apod.), a identifikuje je pomocí tzv. čísel portů. Součástí celé ucelené "síťové koncepce", kterou rodina protokolů TCP/IP představuje, je i konvence o tzv. dobře známých číslech portů - například to, že WWW server je standardně adresován číslem 80 (resp. "sedí" na portu číslo 80).

      4. Protokol TCP není jediným transportním protokolem z rodiny TCP/IP, neboli jediným "obyvatelem" transportní vrstvy. Vedle něj existuje ještě jeden významný transportní protokol, kterým je protokol UDP. Jeho odlišností od protokolu TCP je především způsob, jakým dále "rozvíjí a obohacuje" přenosové funkce protokolu IP - protokol UDP je v zásadě nijak kvalitativně nemění. Nesnaží se například zavádět spolehlivost, a jeho služby jsou proto stejně nespolehlivé jako přenosové služby samotného protokolu IP (samozřejmě ne v tom smyslu, že by tyto protokoly samovolně nějaká data zahazovaly - pouze v případě poškození nepovažují za svou povinnost postarat se o nápravu). Jeho významnou předností, oproti protokolu TCP, je jeho vyšší efektivnost - díky tomu, že se nesnaží dělat "nic navíc", nemusí nést režii která by s tím nutně byla spojena, a může tudíž fungovat efektivněji. Zajímavý je smysl dvou alternativních transportních protokolů, TCP a UDP, z nichž jeden je spíše "minimalistický" (protokol UDP), zatížený minimální režií, zatímco druhý (TCP) je spíše maximalistický, a snaží se dělat něco navíc (oproti protokolu IP), a tudíž s větší vlastní režií: aplikace, provozované v jednotlivých uzlech sítě, si mohou samy vybrat ten z obou transportních protokolů, který jim lépe vyhovuje. Například elektronická pošta pro své přenosy volí spolehlivý protokol TCP, zatímco např. služba WWW si kvůli efektivnosti a bezestavovému způsobu fungování volí protokol UDP.

      5. Přenosový protokol, pomocí kterého komunikují servery a klientské programy (prohlížeče) v rámci služby WWW. Podle pravidel jazyka HTTP tedy klient formuluje svůj požadavek na novou WWW stránku, kterou mu má server zaslat, a opět podle jazyka HTTP pak server formuluje svou odpověď. Klientský program (prohlížeč) přitom generuje jednotlivé požadavky na popud uživatele (jako důsledek toho, že uživatel klikne na určitý odkaz, tím vyjádří přání jej aktivovat, a klient si od serveru vyžádá WWW stránku, na kterou tento odkaz směřuje).

      Jazyk, ve kterém je zapisován obsah jednotlivých WWW stránek. Je založen na principu označování částí textu pomocí značek (anglicky: mark-up), které specifikují význam textu - například to, že určitá část textu představuje nadpis, či má být zobrazena tučně apod. Jiné značky zase specifikují, že na určité místo má být vložen obrázek, že určitá část textu představuje hypertextový odkaz apod. Podle těchto značek se pak při zobrazování stránek v prohlížeči (browseru) určuje jejich grafická reprezentace.

    3. Předávání parametrů mezi klientem a serverem

      V době svého vzniku byl protokol HTTP koncipován pouze pro zobrazování textů. S nástupem grafických uživatelských rozhraní byl doplněn o značky určené pro formátování textů, vkládání obrázků, statických tabulek později i jiných objektů, částečně bylo umožněno polohování objektů na stránce. Postupem času byl stále větší tlak na možnost předávat parametry zadané uživatelem zpět na server a řídit pomocí ní odezvu. Proto bylo nutno implementovat do HTML formulářové ovládací prvky, jako jsou textová pole pro jedno i víceřádkové texty, tlačítka, výběry, přepínače a seznamy. Tyto prvky musejí být sdruženy ve formuláři, který zastřešuje předání parametrů zpět na server.

      V dnešní době existuje několik způsobů předání parametrů a jejich zpracování. V každém případě je potřeba určit, který program provede zpracování předaných dat. Aby nebyla narušena koncepce WWW serveru, která se příliš nelišila od koncepce souborových serverů v lokálních sítích, kdy je serveru zadán název dokumentu a ten je odeslán klientovi jako prostý soubor, byl použit následující postup.

      Na serveru je umístěn spustitelný soubor. V prostředí Windows se jedná se buď o soubor .exe, .dll nebo .cgi. Adresář, ve kterém je soubor uložen musí umožňovat spouštění programů. Toto nastavení je závislé na typu WWW serveru. Soubory .exe nebo .dll jsou spustitelné přímo jako samostatná úloha v systému Windows. Soubor .cgi (většinou se používá označení CGI script) je první otevřen jako prostý textový soubor, který na prvním řádku obsahuje informaci o interpreteru, kterým má být samotný script spuštěn. Pokud server obdrží data od klienta, provede spuštění příslušného souboru. Systém předpokládá, že spuštěný program pracuje se soubory standardního vstupu a výstupu. Parametry předávané klientem mohou být předávány dvěmi způsoby. Způsob předání parametru je dán nastavením metody v sekci formuláře v samotném HTML kódu na stránce zobrazené u klienta. Jedná se o dvě metody : GET a POST.

      Starší metoda GET spočívá ve vytvoření proměnné prostředí (environment variable) ještě před samotným spuštěním programu nebo CGI scriptu a uložení parametrů, které jsou speciálně kódovány, protože proměnné prostředí na některých platformách nemohou obsahovat některé znaky (např. znaky konce řádku, mezery). Pak je na samotném programu, aby danou proměnnou prostředí přečetl, rozkódoval a přiřadil parametry do interních proměnných. Slabinou celého postupu je spousta úskalí na cestě informací od klienta do samotného zpracovávajícího programu. Pokud pomineme velkou dobu potřebnou na provedení celé transakce, setkáme se s většími problémy. Tím je značná závislost celého postupu na použité platformě. Ani tento problém není neřešitelný, ale komplikuje řešení. Největším problémem ovšem zůstává omezení délky přenesených dat. Proměnné prostředí mají svou maximální velikost, definovanou operačním systémem. V praxi to znamená, že zhruba od 1KB přenesených dat na server výše tento postup nemusí pracovat.

      Novější metoda POST pracuje podobným způsobem. Zásadní rozdíl je v přímém použití standardního souboru vstupu na, který jsou přesměrována data zaslaná klientem. Tento postup je rychlejší pro zpracování a také délka přenesených dat není omezena. Tento postup je také bezpečnější, protože data nejsou zaznamenávána v pamětích cache a ani nejsou zapsána do případného LOG souboru na serveru. Nebezpečí metody GET lze názorně ukázat při použití prohlížeče Internet explorer verze 4.0 a vyšší. Pokud je zapnuta funkce AutoComlete, která doplňuje obsah řádky Adresa podle výběru z posledně zadaných adres (včetně adres s parametry předanými metodou GET) , může uživatel zjistit osobní údaje předané jiným uživatelem, který navštívil stejnou WWW adresu před ním.

      Pokud je zpracovávající program spuštěn a jsou mu předány parametry buďto metodou GET čí POST, WWW server počká na dokončení zpracovávajícího programu a data zapsaná tímto programem do souboru standardního výstupu jsou přesměrována přímo ke klientovi. Z toho vyplývá, že výstupem musí být textový soubor obsahující platný HTML kód.

    4. Strana serveru

      Použití software na straně serveru je dáno již v zadání diplomové práci. Přesto bych ale chtěl stručně shrnout ostatní možnosti. Řešení vyplývající ze zadání předpokládá použití Magicu a Btrieve jako SŘBD (systém řízení báze dat) . Dále zde musí být instalován WWW server, který zajišťuje samotnou prezentaci dat na Internetu. Posledním článkem v řetězu musí být datový kanál mezi Magicem a WWW serverem. Tento kanál byl nazván Magic Broker a na WWW serveru je reprezentován dynamicky linkovanou knihovnou MGRQUISPI.DLL, která zprostředkovává předávání parametrů Magicu a zpětně vrací serveru dynamicky generované stránky v HTML. Tento postup je ještě stále s oblibou používán. Jeho největší nevýhodou je relativně nízká výkonnost při přístupu několika uživatelů současně, kdy se paralelně zpracovávají požadavky více uživatelů. Systém Windows při tom vytváří vždy novou instanci zpracovávajícího programu, musí pro něj alokovat paměť, řídit jeho provádění a poté paměť uvolnit. I tento proces se však dá do určité míry optimalizovat. Z tohoto důvodu vznikly nové standardy zpracování požadavků.

      1. Jazyk PHP vytvořil v roce 1994 Rasmus Lerdorf, když si naprogramoval v Perlu jednoduché počítadlo přístupů na jeho stránky. Aby spouštění Perlu tolik nezatěžovalo server, přepsal ho do jazyka C. Tento systém se brzy stal populárním, a proto ho autor rozšířil a uvolnil pod názvem Personal Home Page Tools, později Personal Home Page Construction Kit. No a když Lerdorf systém rozšířil i o možnost začleňování SQL příkazů do stránek, práci s formuláři a zobrazování výsledků dotazů SQL, získal systém název PHP/FI 2.0 (Profesional Home Page/Form Interpreter verze 2.0). Pod tímto názvem byl už jako jednoduchý programovací jazyk šířen do celého světa. Verze 2.0 však pracovala jen na svém domovském operačním systému, kterým je LINUX (UNIX). Proto bylo vytvořeno PHP 3.0, které již pracuje i na 32-bitových Windows a na operačním systému MACINTOSHE. S verzí 3.0 se upustilo od významu zkratky PHP a systém se dále označuje jako hypertextový preprocesor. Poslední uvolněnou verzí je PHP 4.0, která je šířena pod názvem ZEND. Udává se, že tato verze je 8 - 10 x rychlejší než verze předešlá. PHP řadíme do skupiny skriptovacích jazyků, které se provádějí na straně serveru. PHP je na serveru závislé, protože na něm běží jeho interpreter, který skripty provádí. PHP se tímto odlišuje např. od JavaScriptu, jehož skripty se stahují přímo s HTML stránkou a jsou vykonány na straně klienta jeho prohlížečem. Má to své výhody i nevýhody. Výhodou PHP v tomto případě je, že se ke zdrojovým kódům skriptů nedostane nikdo jiný než autor, kdežto ke zdrojovému kódu JavaScriptu se dostane každý, kdo si stáhne HTML stránku, v níž je skript obsažen. JavaScript má výhody ve své možnosti dynamicky reagovat na událost způsobenou klientem (např. pohyb kurzoru myši...), což PHP nedokáže, protože k provedení každé své nové události musí být vždy prohlížečem znovu odeslán požadavek na server. Proto je nejvhodnější variantou kombinovat PHP s JavaScriptem nebo jiným, dynamicky reagujícím jazykem (např. VB Script).
        Samotné PHP skripty se zapisují přímo do HTML stránky (nejčastěji s příponou *.php3). PHP interpreter na serveru pak pracuje tak, že HTML příkazy rovnou ukládá do výsledné HTML stránky, ale narazí-li na PHP skript, nejprve ho provede, a potom je do HTML stránky zapsán jeho výsledek (viz. příklad 1). To je celý princip dynamického generování HTML stránek, což je základním posláním jazyka PHP.

      2. Microsoft z počátku nástup Internetu poněkud zaspal, ale dnes již nabízí ucelenou řadu produktů pro vytvoření aplikací pracujících v prostředí Internetu. Firma Microsoft podporuje na svém WWW serveru (IIS Internet Information Server) systém nazvaný ASP (Active Server Pages). Jedná se o dynamický generátor HTML stránek, který podporuje různé druhy jazyků. Nejčastěji se jedná o Visual Basic Script nebo o Java Script. Další firmy nabízejí moduly i pro jiné jazyky -- např. pro Perl, REXX a Python. Aby server mohl odlišit běžné stránky od těch s ASP, ukládají se ASP do souborů s příponou .asp. ASP podporuje přístup do téměř všech databázových prostředí běžících v prostředí Windows pomocí ODBC (Open Database Conectivity). Tvorba vlastních stránek je zde však diametrálně odlišná od postupu použitém v Magicu. Postupuje se na principu doplňování částí dynamicky generovaného HTML kódu do kódu statického ve formě vsuvek. Znalost HTML a skriptovacího jazyka je podmínkou. Tento postup se široce rozšířil pro svou univerzálnost a širokou podporu ze strany Microsoftu.

        Pokud jsme chtěli dříve používat ASP, byla to celkem nákladná legrace. Museli jsme si pořídit Windows NT Server a IIS, což není žádná laciná záležitost. K tomu je ještě potřeba přičíst zvýšené nároky na hardware. Ať chceme nebo ne, je řešení postavené nad produktech od Microsoftu více náročné na systémové zdroje než obdobné řešení založené na volně šiřitelných produktech pro Unix.

        Cenovou náročnost částečně eliminuje Windows NT Option Pack, který uvolnil Microsoft na konci roku 1997. V balíku zdarma dostaneme i Personal Web Server s podporou ASP. To již dostačuje pro vývoj aplikací založených na ASP. Pokud však chceme, aby s výslednou aplikací mohlo pracovat větší množství uživatelů, musíte ji spustit pod Windows NT Server, na kterém poběží Internet Information Server.

      Magic přistupuje ke tvorbě WWW aplikací zcela odlišným způsobem. V manuálu se tvrdí, že můžete vytvářet plnohodnotné aplikace i s úplně nulovými znalostmi jazyka HTML a dokonce i vytvářet Klient/Server aplikace na Internetu v jazyce Java bez jeho znalosti. Jako obvykle je to pravda pouze z části.

      HTML stránka vzniká v Magicu ve visuálním návrháři stránek. Lze zde využívat předem definované ovládací prvky. Jedná se o všechny použitelné typy formulářových prvků, lze vkládat texty, ale pouze jednořádkové, statické tabulky, obrázky, ActiveX komponenty a dokonce i Java applety. Práce se dost podobá navrhování formulářů spouštěných přímo v prostředí Magicu. Cílem vývojářů Magicu bylo asi vytvořit návrháři pohodlí, které mu poskytují komerční WWW editory, jako jsou např. Microsoft FrontPage, HomeSite, nebo Namo WebEditor. Práce s návrhářem stránek v Magicu, je ale toporná. Je potřeba se často "proklikávat" systémem formulářů, spousta voleb zůstává nepřístupná a rozdělení pracovní plochy je přímo nešťastné. Za velký nedostatek považuji nemožnost nastavení pevné velikosti u některých formulářových prvků. Jejich velikost je nastavována automaticky, podle délky zobrazovaných dat. Tuto délku často programátor nemůže dopředu odhadnout a to často způsobuje zborcení formátu HTML stránek. Podpora statických tabulek je celkem solidní, i když i zde nemá vývojář tolik prostoru, kolik by si přál. Bohužel toto se již nedá říci o dynamicky generovaných tabulkách. Zde má vývojář jen velmi málo svobody pro tvůrčí činnost.

      Jak bude v následujícím odstavci popsáno, je možné některé operace provádět přímo na straně klienta. Tento postup je velmi výhodný, protože odlehčuje serveru, výrazně zrychluje interakci s uživatelem a minimalizuje objem přenesených dat. Toho se dá docílit vhodným vložením příkazů skriptovacího jazyka, který je podporován klientem. Bohužel Magic, k tomuto nenabízí téměř žádné prostředky. Neznamená to sice, že by do stránek nešel žádný skript vložit, ale vývojář si musí pracně hledat cestu, kterou doslova obejde předem nalinkovaný scénář Magicu.

      Nechci zde tvrdit, že koncepce tvorby WWW aplikací v Magicu se ubírá zcela špatným směrem, ale je zde vidět, že Magic se začal orientovat na Web teprve nedávno a spousta věcí je stále v plenkách.

    5. Strana klienta

      V této oblasti mi jako tvůrci projektu byla ponechána značná volnost ve výběru způsobu implementace. Protože mi přímo zadání určuje nastudování a následné využití možností dostupných internetových prohlížečů, věnoval jsem této části práce hodně času, aby výsledné řešení bylo pokud možno co nejoptimálnější. V dnešní době můžeme do množiny dostupných prohlížečů zařadit pouze prohlížeče z dílen Microsoft a Netscape. Microsoft Internet Explorer se dnes používá ve verzích od 3.0 až po poslední verzi 5.5, která je dnes přístupná pouze ve verzi beta. Firma Netscape byla půkopníkem v oblasti HTML prohlížečů, a právě ona určovala vývoj WWW služeb na Internetu v nedávných minulých letech. Dnes se můžeme setkat s prohlížeči této firmy ve verzích od 3.0 (Netscape Navigator ve verzi 3.0 pracuje i pod Windows 3.1) až po poslední verzi 6.0 (Netscape Comunikator), který je napsán v jazyce Java. Vzhledem k tomu, že mezi prohlížeči obou firem ve verzích mezi 3.0 a 4.0 byly zavedeny nové technologie, rozšíření podpory jazyka JavaScript a opraveny chyby týkající se bezpečnosti a také proto, že verze 4.0 obou společností se dají instalovat i pod systém Windows 3.1, jsem se rozhodl ve svém řešení nepodporovat tyto staré prohlížeče.

      Nyní bych chtěl popsat rozdíly v prohlížečích obou konkurenčních firem, které mají dopad na vývojáře WWW aplikací i na jejich uživatele. Třeba by se mohlo zdát, že specifikace jazyka je jednou daná a není problém HTML stánky zobrazit stejně ve všech prohlížečích. V praxi se setkáváme s mnoha rozdíly. Verze 3.0 zavádějí objektově orientované pojetí obsahu HTML stánek a skriptovací jazyk JavaScript pro manipulaci s těmito objekty. Objektová struktura stránky je relativně složitá a podpora JavaScriptu se v obou prohlížečích liší. Firma Microsoft dokonce prohrála soudní spor, který byl proti ní veden a bylo jí zakázáno označovat Internet Explorer jako Java kompatibilní. Microsoft nyní používá označení JScript jako svou variantu k JavaScriptu firmy Netscape. Pro vývojáře to znamená spoustu práce navíc, pokud chce docílit správné funkce své aplikace v obou prohlížečích.

      1. Pokud chceme napsat moderní aplikaci typu klient/server, je potřeba předem analyzovat tok dat a událostí v závislosti na interakci klienta. Cílem této analýzy je rozdělení operací, na dvě skupiny tj. na operace které mohou být provedeny přímo na straně klienta a operace, které musí být provedeny na straně serveru. Obecně se dá říci, že všechny operace může provádět server, ale v prostředí Internetu musíme počítat i s několika sekundovou prodlevou mezi odeslání požadavku a příjmem odpovědi. Také je v našem zájmu zbytečně nezatěžovat server. Proto se musíme snažit co nejvíce operací přenést na stranu klienta. K tomu je potřeba doručit klientovi stránky s proveditelným obsahem, který tyto operace provede.

      2. Dnešní prohlížeče nabízejí několik možností spouštění programů dodaných serverem. Mezi oblíbené metody patří používání skriptovacích jazyků. Dále můžeme použít vložené komponenty ActiveX. Poslední možností je vložit do stránky applet napsaný v jazyce Java. Postupně nyní shrnu výhody a nevýhody jednotlivých řešení.

      3. JavaScript je univerzální jazyk a můžeme v něm psát programy pro provádění libovolných výpočtů. Můžeme psát jednoduché scénáře (skripty), které počítají Fibonacciho čísla nebo vyhledávají prvočísla. V souvislosti s WWW aplikacemi to však nejsou zajímavé aplikace. Jak jsem již dříve zmínil, skutečná síla JavaScriptu je v prohlížeči a v dokumentově založených objektech, které jazyk podporuje. JavaScript umožňuje psát libovolný text do HTML souboru, před tím než jej prohlížeč zobrazí. Tímto způsobem vytvoříme libovolný objekt na stránce (tabulku, formulářové prvky, hyperlinky a pod.). Několik objektů JavaScriptu umožňuje řízení chování prohlížeče. Objekt Window podporuje metody dialogů pro zobrazování jednoduchých zpráv pro uživatele a pro jednoduchý uživatelský vstup. Můžeme také otevírat nová okna a zavírat stávající. Objekt Document a objekty, které obsahuje, umožňují programům číst a někdy i ovlivňovat části dokumentu. Zdaleka nejdůležitější schopnost ovlivňování obsahu dokumentů poskytuje objekt Form a jeho objekty prvků, obsahující: Button, CheckBox, Hidden, Password, Radio, Reset, Select, Submit, Text a TextArea. Tyto prvkové objekty umožňují číst a zapisovat do dokumentu v různém tvaru hodnoty libovolných vstupních prvků. JavaScript má metodu Window.setTimeOut(), která umožňuje, že blok libovolného kódu JavaScriptu bude proveden za určitý počet milisekund.

      4. Idea VisualBasic skriptu ve velmi podobná JavaScriptu, akorát syntaxe odpovídá populárnímu VisualBasicu z dílen Microsoftu. Vzhledem k tomu, že jej podporuje pouze Internet Explorer jsem usoudil že se nejedná o univerzální řešení a dále jsem možnosti VisualBasic skriptu nestudoval.

      5. ActiveX je pozměněný existující objektový model pro použití na WWW stránkách. ActiveX využívá existující technologie OLE (Object linking and embedding), kterou zapouzřuje do normalizovaného rozhraní a poskytuje objektům ActiveX komunikaci mezi sebou nezávisle na v jakém jazyce byly vytvořeny a na jaké platformě jsou spouštěny. Objekt ActiveX může být napsán v jakémkoli jazyce, ale musí být zkompilován pro cílovou platformu, na které musí být instalován. Je možné provádět instalaci ze sítě internet, ale uživatelům s nastavenou vysokou bezpečností prohlížeče tato instalace nebude povolena, protože objekt ActiveX je samospustitelný kód a prohlížeč nad ním nemá kontrolu. Tento objekt může tudíž snadno přenášet viry, nebo odesílat data z klientského počítače na server, tedy uživatele "špehovat".

        Výhoda ActiveX je ve velkém množství komponent, které již byly vytvořeny a jsou vývojářům často nabízeny zdarma. Také použití technologie OLE dává záruku robustnosti, protože tato technologie je léty prověřená.

        ActiveX využívá technologie DCOM, která umožňuje přístup jednoho objektu ActiveX k druhému nezávisle na tom zda-li jsou oba obsaženy v jednom kontejneru, na jednom počítači a nebo na různých počítačích.

        Microsoft poskytuje řadu nástrojů pro tvorbu komponent ActiveX. Komponenta je vytvořena uživatelem a pak pomocí průvodce je převedena do standardního tvaru, registrována v systému a je jí přiděleno unikátní identifikační číslo.

      Java je moderní komplexní programovací jazyk. Ačkoliv byl navržen pro prostředí Internetu, neubírá to nic z jeho univerzálnosti. Je možné v něm vytvářet aplikace databázové, grafické, matematické a pod. Pokud jej chceme využívat na straně klienta máme v podstatě dvě možnosti jak toto docílit.

      Jednodušší a používanější metoda spočívá v začlenění tzv. Java appletu do stránky. Applet je stažen s celou stránkou ze serveru a poté je u uživatele spuštěn. Applet se na stránce prezentuje jako obdélníková plocha předem dané velikosti, která může obsahovat jakoukoli grafiku, ovládací prvky, vstupní pole stejně jako samostatně spustitelný Javovský program.

      Druhá varianta, je v stažení tříd celého programu a jeho následném spuštění. Na klientském počítači musí být instalován JRE modul (Java Runtime Environment), který provede interpretaci a spuštění programu.

      Obě řešení mají své pro a proti. V prvním případě je výhodná jednoduchost, s kterou klient může spouštět Java applety. Platí zde, ale řada omezení, která mají své opodstatnění. Java, ostatně jako každý programovací jazyk má knihovnu funkcí sloužících k manipulaci se souborovým systémem. Pokud program běží v prostředí prohlížeče, nemůžeme tyto funkce z důvodu bezpečnosti využívat. Důvody jsou zřejmé. Pokud by uživatel otevřel neznámou stránku se zlomyslným appletem, ten by byl okamžitě spuštěn a mohl by poškodit lokální data, nebo odeslat cizí osobě soukromé informace o klientovi. Také není možné přistupovat na jiný počítač než ten, ze kterého byl applet stažen pomocí síťových služeb. Další nepříjemnost spočívá v použití virtuálního stroje dodávaného s prohlížečem, který dnes nepodporuje zobrazování moderních visuálních tříd Swing, které jsou volně použitelné při vývoji javovských aplikací.

      Druhá varianta má výhodu v tom, že klientský program je stále uložen u klienta a jeho spuštění je velmi rychlé, neboť jej není potřeba stahovat ze serveru. Nepříjemností je komplikovanější instalace. V tomto případě však můžeme plně využívat všech možností jazyka včetně přístupu k lokálnímu disku, síťového přístupu k libovolným počítačům a použití tříd Swing.

    6. Možnosti jazyka Java v prostředí Internetu

Java je objektově orientovaný jazyk, který vychází z jazyků C a C++. Narozdíl od svých předchůdců však neobsahuje některé konstrukce způsobující při programování největší potíže a naopak přidává řadu zajímavých vlastností:

Největším přínosem Javy je bezesporu plná přenositelnost programů na libovolnou platformu bez nutnosti jejich rekompilace. Programy se totiž nepřekládají do strojového kódu konkrétního procesoru, ale do nezávislé podoby, tzv. bytového kódu (bytecode). Tento kód pak může být interpretován na jakémkoliv počítači nebo průmyslovém zařízení. Kompatibilita je tedy zajištěna na binární úrovni.

Hardwarové rozdíly zastřešuje tzv. Java Platforma, která obsahuje dvě základní části:

V současné době probíhá návrh několika rozšiřujících programových rozhraní. Jedná se například o podporu 2D a 3D grafiky (Java 2D a 3D API), zvuk (Java Audio API), správu sítě (Java Management API), bezpečnost (Java Security API) atd.

Firma Sun rovněž vyvíjí speciální mikroprocesory určené pro rychlou interpretaci bytového kódu a také síťový počítač (JavaStation) s operačním systémem na bázi Javy (JavaOS).

Hlavním nedostatkem Javy je malá rychlost interpretovaných programů. To se týká zejména Internetových prohlížečů, které navíc mají mnohdy problémy se stabilitou appletů (ovšem nikoliv vinou Javy). Tuto vadu by měly v budoucnu odstranit vyvíjené JIT kompilátory.

Druhým problémem jsou značné nároky na paměť, vznikající v důsledku automatické správy paměťových prostředků. Kapacita pamětí počítačů však neustále roste, a tudíž se jedná o poněkud méně závažný nedostatek.

  1. Magic
    1. základní rysy

      Magic je vývojové prostředí pro tvorbu databázových aplikací. Svým pojetím se vymyká zažitým principům z většiny jiných nástrojů tohoto typu. V Magicu se nedá mluvit o programování ve stylu na jaký jsme si zvykli v konvenčních programovacích jazycích jako jsou např. Pascal, C++, Visual Basic, Visual FoxPro či Java.

      V Magicu vzniká aplikace vyplňováním předem definovaných tabulek. Jako hlavní lze vyjmenovat tabulku typů, tabulku souborů či tabulku programů, která je svázána s tabulkami úloh, formulářů, událostí, práv, vstupně výstupních souborů, atd. Pro vyplnění tabulek jsou definována dialogová okna, která zprostředkovávají jejich naplnění tak, že jsou nabízeny seznamy možností, případně provádějí kontrolu uživatelského vstupu. Distributoři Magicu se chlubí tím, že každou jejich aplikaci lze vytvořit pomocí pouhých 13 zabudovaných příkazů. Není to tak docela pravda, protože v Magicu jsou stovky příkazů, které se používají jako výrazy (např. všechny příkazy pro práci s řetězci). Také je v manuálu uvedeno, že se jedná o objektově orientované vývojové prostředí. Již po prvním seznámení však každému musí být jasné, že o vlastnostech jako zapouzdřenost či dědičnost nemůže být řeč. Magic je vybaven tzv. automatickým generátorem aplikací (Automatic Program Generator), který umí vytvořit program pro listování, přidávání, změnu a mazání záznamů, či generátor sestav. Ve skutečnosti se nejedná o příliš užitečný nástroj, ale je vhodný např. pro začínající uživatele, pro první seznámení s Magicem.

      Návrh aplikace je postaven na standardních postupech, které jsou v Magicu zabudovány. Proto lze na těchto postupech velmi rychle vybudovat i poměrně složité aplikace. Problémy vyvstávají pokud potřebujeme využít jiného něž standardního postupu. Pak jsou možnosti vývojáře značně omezené, většinou vysokou pracností, ale jsou i případy, kdy určitý postup nelze naprogramovat vůbec. Výhodou Magicu je jeho schopnost komunikovat mezi servery, na kterých je Magic nainstalován přes transparentní síťové rozhraní. Proto je možné propojit různorodé typy sítí. Magic také umožňuje pracovat s mnoha různými systémy řízení báze dat (SŘBD) a pracovat s daty z jednotlivých SŘBD současně. Většinou se jedná o různé typy SQL serverů jako např. Oracle, Informix, SyBase a podobně. Standardně je dodáván se SŘBD Btrieve. Pro vývojáře aplikace je k dispozici transparentní rozhraní mezi Magicem a SŘBD, takže je vývoj aplikace téměř nezávislý na použitém SŘBD. Magic je kompatibilní se systémy DOS, Windows, Unix a OpenVMS.

    2. způsob programování

      Jak již bylo zmíněno, způsob programování je zcela odlišný od programování ve více či méně tradičních jazycích. Nejprve je potřeba vyplnit tabulku datových typů, typy které předpokládáme, že budeme používat. Tento krok není povinný, ale může výrazně zkrátit vývoj aplikace, protože zaručuje kompatibilitu typů. Dále v tabulce souborů založíme záznamy popisující tabulky použité v aplikaci. Soubory se zde opravu rozumějí databázové tabulky. Tabulka souborů je svázána s tabulkou sloupců, kde založíme záznamy pro jednotlivé položky v tabulce. Zde můžeme využít specifikace typů z tabulky typů. Dále můžeme vyplnit tabulku indexů, která je rovněž svázána s tabulkou souborů. Indexy mohou obsahovat několik segmentů, které odpovídají jednotlivým položkám, lze určit pořadí třídění a také zda je klíč unikátní či ne. V této fázi nelze definovat relační vztahy ani definovat pravidla pro vnitřní konzistenci dat.

      Dalším krokem je návrh programů. Postup také spočívá ve vyplňování předem definovaných tabulek. Program sestává z jednoho záznamu v tabulce programů, který nese informaci o jeho názvu a globálním názvu, který se používá v internetových aplikacích a záznamech v navazujících tabulkách. Program je tvořen stromou strukturou úloh. V každé úloze mohou být definovány použité soubory (databázové tabulky), virtuální proměnné (paměťové - nejsou z tabulky), seznam výrazů, formulářů, vstupně výstupních polí a událostí. Hierarchická struktura úloh určuje, pravidla ve sdílení proměnných a volání podúloh. Každá úloha může používat proměnné, formuláře a vstupně výstupní soubory své volající úlohy a volat pouze přímo podřízené úlohy.

      Úloha je koncipována jako cyklus. Pokud je v úloze definován hlavní tabulka, znamená to , že v každém kroku je načten nový záznam z této tabulky. Po přečtení posledního záznamu v tabulce úloha skončí. Pokud není v úloze hlavní tabulka definována, je cyklus nekonečný, pokud není podmínka ukončení cyklu nastavena na ANO. Pak úloha skončí po prvním kroku. Důležitou vlastností úlohy je mód, ve kterém byla spuštěna. Mezi nejdůležitější patří módy vytvoření záznamu, zrušení, vyhledání, dotazování a rozsahu. Volbou tohoto módu se provádějí základní operace nad tabulkou.

    3. Magic a tvorba internetových aplikací

    Magic od verze 8 se začíná orientovat na Internet. Je zde zabudován Magic Broker, který zprostředkovává výměnu dat mezi Magicem a WWW serverem. Magic má několik prostředků pro generování HTML stránek. Magic může přímo generovat HTML kód z vizuálního návrháře formulářů. Lze vytvořit HTML dokument, který slouží pouze k zobrazení dotazu, HTML formulář obsahu vstupní pole, jejichž hodnota může být odeslána zpět na server. Tento formulář může obsahovat prvky ActiveX nebo Java applety. Rozdílný přístup používá funkce output merge, která doplňuje části HTML kódu do předem vytvořené stránky a začleňuje jej tam pomocí speciálních značek, které jsou posléze odstraněny.

    Magic dokáže sám vygenerovat Java applet, který je začleněn do stránky. Tento applet je však po každém odeslání dat na server odstraněn a opět nahrán ze serveru. Tento postup však zcela eliminuje všechny výhody, které Java applety poskytují. Vývojáři má jedinou možnost a to vytvořit applet sám a pak jej vložit do stránky generované Magicem, nebo samostatné stránky a veškerou komunikaci s Magicem ovládat kódem, napsaným v appletu. Toto řešení nabízí spoustu výhod a jedná se o moderní programovací techniku. Bohužel Magic nemá žádné rozhraní, které by umožňovalo pohodlnou výměnu dat, takže je nutno data separovat z formátovaného textového výstupu. Tento výstup je potřeba v Magicu vytvořit pomocí nástrojů sloužících k vytváření textových tiskových sestav určených pro znakové tiskárny. Zpětně lze předat data vytvořením HTTP propojení se stejnými parametry, jako formulář generovaný Magicem a tak jej "oklamat". Cesta je to klikatá a dlouhá, ale dá se jí dojít k cíli.

  2. Informační systém

    Zadání informačního systému není příliš přesné, takže jsem tento úkol pojal jako analýzu možných postupů a problémů, které provázejí realizaci. Aby byl systém použitelný, je potřeba jej propojit s jeho dalšími částmi, jako je zápis studentů do kurzů (částečně řešeno v programu), kontroly opakovaného zápisu, kontroly návaznosti předmětů, přihlašování na zkoušky, výpočty vážených průměrů, rozvrhy dle jednotlivých předmětů, učitelů, obsazení učeben, anotace kurzů, elektronická literatura, docházka do povinných předmětů, zprávy o ukončení ročníků, povolování studijních výjimek, individuální studijní plány, přihlášky na školu, stipendijní systém, dále třeba také školní účetnictví, odměňování zaměstnanců, služební jízdy nákupy spotřebních materiálů atd. Fantazii je potřeba při analýze uvolnit na nejvyšší možnou míru, protože připravenost na budoucí rozšiřování systémů je velmi důležitá. Nyní se tyto požadavky mohou zdát přehnané, ale představa plně mobilní kanceláře je lákavá. Přitom úspora času (moderně lidských zdrojů) by byla obrovská. Každý student si dovede představit, kolik sil stojí vyplnění všech dotazníků začátkem a koncem každého školního roku studenta i pracovnice studijního oddělení.

    Realizace takového systému by ovšem znamenala práci několika profesionálů, důkladnou analýzu současného stavu, analýzu nutných změn, sestavení testovací verze, nákup hardware, instalace, zaškolování uživatelů a postupné nasazení. Takovýto systém by samozřejmě vyžadoval zabezpečení velmi vysoké úrovně za pomoci certifikačních autorit a elektronického podpisu, protože možnost, že lze získat vysokoškolský diplom pomocí PC a modemu za pár hodin práce by vytvořila spoustu "čestných" univerzitních titulů spoustě nečestným kutilům.

    1. Analýza

      Při analýze problému, jem se nechal inspirovat zkušebními zprávami, tak jak jsou používány v papírové podobě. Zkušební zpráva obsahuje informace o kurzu, ke kterému se vztahuje, jméno učitele (garanta kurzu), informace o semestru a roce někdy sice uvedena není, ale v systému musí být začleněna. Dále zkušební zpráva obsahuje seznam zapsaných studentů, bodové hodnocení z průběhu semestru a bodové hodnocení z prvního a druhého termínu zkoušky.

      Chtěl jsem systém koncipovat, tak aby jej mohli využívat také studenti, kteří zde mohou najít informace o svém bodovém hodnocení. Student má tedy přístup ke zkušební zprávě pouze pro čtení.

      Přestože v zadání mám navrženo rozdělení systému na uživatelskou a administrátorskou část, kde uživatelská část má pracovat v okně WWW prohlížeče a administrátorská pomocí technologie Desktop Deployment nebo Client/Server dle mého uvážení, nechtěl jsem kombinovat několik technologií současně, protože tento postup přináší komplikace jak pro vývojáře i uživatelé. V zadání se hovoří pouze o části pro vyplňování zkušebních zpráv, ale protože toto řešení předpokládá napojení na modul, který nebyl k dispozici, rozhodl jsem se doplnit rozsah zadání o zakládání záznamů uživatelů, kurzů a zapisování studentů do jednotlivých kurzů.

      1. Přístupová práva jsem se rozhodl řešit ve třech úrovních. Definoval jsem přístupová práva typu student, učitel a správce. Protože předpokládám využití systému všemi typy uživatelů, vyplývá z toho nutnost použití jednotného přihlašovacího mechanismu. Proto jsem se rozhodl implementovat jednu tabulku Osob, která bude obsahovat společné údaje správců, učitelů i studentů jako jsou jméno, příjmení, přihlašovací jméno a heslo. V budoucnosti by k této tabulce měly být přivázány podřízené tabulky obsahující detailnější a specifické informace. Tabulka kurzů obsahuje zkratku kurzu, celý název, způsob zakončení (zkouška, zápočet) a vyučujícího, který je určen relačním vztahem 1:1 z tabulky kurzů do tabulky osob. Systém zastřešuje tabulka hodnocení, která definuje vazby N:M mezi kurzy a do nich zapsanými studenty. Tato tabulka také obsahuje bodové hodnocení jednotlivých studentů.

Pravidla platící pro všechny uživatele bez rozdílu přístupových práv :

Pravidla týkající se správce

Pravidla týkající se učitele

Učitel jako jediný může vyplňovat záznamy v tabulce hodnocení

Pravidla týkající se studenta

Bezpečnost je v tomto programu řešena použitím kombinace přihlašovací jméno a heslo. Protože se předpokládá nasazení serverové části na stroji s omezeným přístupem, je heslo v tabulce osob uloženo v textové podobě. Serverová část aplikace bude nainstalována na systému Windows NT se zapnutou SSL ochranou pro HTTP přenosy.

Při studiu způsobu zabezpečení internetových aplikací, jsem se setkal prakticky s dvěmi metodami. Jednodušší metoda předává uživatelské jméno spolu s heslem při každé operaci. Tato metoda je bez použití SSL šifrování velmi nebezpečná. Na druhé straně s použitím SSL je dosaženo vysoké míry bezpečnosti.

Druhá metoda používá generování dlouhých náhodných čísel pro identifikaci uživatele. Uživatel se nejprve přihlásí svým jménem a heslem. Poté server vygeneruje náhodný klíč, který je na serveru zapamatován a je použit pro identifikaci uživatele. Bezpečnost se zvyšuje teprve stanovením časové platnosti tohoto klíče. Pokud tedy útočník nepronikne do systému dříve než vyprší platnost tohoto klíče, je uživatel automaticky odhlášen a přihlásit se lze pouze pomocí hesla. Výhoda je v tom, že heslo putuje sítí pouze jednou. Proto je možné použít tuto metodu i bez SSL šifrování.

Protože má diplomová práce řeší jen malou část z komplexního informačního systému, bude potřeba řešit přihlašovaní na obecné úrovni. Byl zde vznesen požadavek synchronizace hesel se systémem Novell.

Z výše uvedených důvodů jsem zvolil jednodušší model zabezpečení, kde se kód uživatele předává spolu jeho heslem při každé operaci. Ačkoli se tento postup nemusí zdál příliš bezpečný, jeho slabina spočívá pouze v okamžiku, kdy je uživatel přihlášen a vzdálí se od počítače. Pak může cizí osoba odečíst uživatelské heslo, ovšem pouze za předpokladu, že dobře zná způsob předávání parametrů.

  1. Závěr

    V této práci jsem se snažil shrnout a rozebrat problematiku internetových informačních systémů, základní principy přenosů dat, nejpoužívanější programovací techniky, hypertextové jazyky, prostředí prohlížečů a WWW serverů. Výsledkem této práce je malý informační systém, který je funkční a splňuje zadání této práce. Přesto nebyl vytvářen se záměrem jeho nasazení ve stavu v jakém byl vytvořen. Pro praktické nasazení takového systému, by bylo nutno daleko přesněji specifikovat zadání, provést analýzu na podstatně obecnější úrovni, tak aby bylo umožněno začlenění do ostatních částí celofakultního systému. Myslím si že takovýto projekt nelze úspěšně realizovat v rámci jedné nebi několika samostatných diplomových prací, protože je potřeba, aby vedením projektu byl pověřen odborník, který nejenom, že ovládá vývoj internetových aplikací, ale současně velmi dobře zná strukturu organizace (školy), informační toky, funkce, práva a povinnosti stávajících i potencionálních uživatelů, studijní řád a směr jeho vývoje, kreditní systém a pod. Potom je potřeba informační systém rozčlenit na moduly, které se dají zcela přesně specifikovat a vytvořit standardní rozhraní pomocí něhož budou moduly komunikovat. Takovýto modul pak může být zpracován v rámci jedné diplomové práce, ale je neustále potřeba týmově pracovat s ostatními řešiteli. Ti jsou na sobě závislí, protože práce jednoho stále bude záviset na výsledcích práce jiného diplomanta.

    Přesto, že si nemyslím, že systém bude v praxi nasazen, ačkoliv tomu nic nebrání, není hodnota této práce nikterak snížena. Pominu-li obrovský přínos pro mě, díky nabytým znalostem z oblasti nejmodernějších informačních technologií, je v této práci detailně popsán postup vývoje internetového informačního systému na dané hardwarové i softwarové platformě, který může být velkým přínosem pro další řešitele podobného systému, ať se již bude jednat o například vyplňování formulářů o uzavření ročníků, elektronickou rezervaci učeben nebo podávání žádostí o ubytování na kolejích.

  2. Použitá literatura
  1. Magic V7 pro Windows, Uživatelská a referenční příručka
  2. JavaScript, Kompletní průvodce, David Flanagan, Computer Press
  3. Dynamické HTML, Scott Isaacs, Computer Press
  4. WWW stránky:

http://java.sun.com/

http://msdn.microsoft.com/workshop/

http://www.w3.org/

http://archiv.czech.net/index.html

http://www.kosek.cz/

http://dione.zcu.cz/java/sbornik/toc.html

http://java.tatousek.cz/index.asp

a další