eské vysoké u£ení technické v Praze Fakulta elektrotechnická Katedra po£íta£·
Bakalá°ská práce
Studentova Berli£ka III - Jádro aplikace
Jaromír Van¥k
Vedoucí práce:
Ing. Ji°í Chludil
Studijní program: Softwarové technologie a management, Bakalá°ský
Obor: Softwarové inºenýrství
18. dubna 2010
iv
Pod¥kování
v
Prohlá²ení Prohla²uji, ºe jsem práci vypracoval samostatn¥ a pouºil jsem pouze podklady uvedené v p°iloºeném seznamu. Nemám závaºný d·vod proti uºití tohoto ²kolního díla ve smyslu 60 Zákona £. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o zm¥n¥ n¥kterých zákon· (autorský zákon).
V Praze dne 18. dubna 2010
.............................................................
Abstract Translation of Czech abstract into English.
Abstrakt Tato práce se zabývá návrhem a následnou realizací jádra systému Studentova berli£ka, který byl vyvíjen v minulých letech v rámci bakalá°ských a diplomových prací. Systém Studentova berli£ka °e²í problematiku elektronické komunikace mezi studenty, cvi£ícími a p°edná²ejícími. Ú£elem je umoºnit studentovi být informován o svých studijních výsledcích, cvi£ícím a p°edná²ejícím kvalitn¥j²í a jednodu²²í organizaci p°edm¥tu. Cílem práce je p°epracovat stávající systém tak, aby mohl být do budoucna roz²i°ován a integrován s dal²ími zásuvnými moduly.
vi
Obsah 1 Úvod 1.1
1
Existující informa£ní systémy
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Univerzitní informa£ní systémy
1.1.2
Systémy pro podporu jednotlivých p°edm¥t·
. . . . . . . . . . . . . .
2
1.1.3
Historie systému Studentova berli£ka . . . . . . . . . . . . . . . . . . .
2
2 Popis problému, specikace cíle 2.1
3.2
Sou£asný stav systému Studentova berli£ka
. . . . . . . . . . . . . . . . . . .
4
5
Volba programovacího jazyka
. . . . . . . . . . . . . . . . . . . . . . . . . . .
5
3.1.1
Java Enterprise Edition
. . . . . . . . . . . . . . . . . . . . . . . . . .
5
3.1.2
PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
3.1.2.1
Výhody . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
3.1.2.2
Nevýhody . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Databázové úloºi²t¥, komunikace s databází
6
. . . . . . . . . . . . . . . . . . .
6
3.2.1
PDO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
3.2.2
MySQL
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
3.2.3
Historie
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
3.2.4
Výhody a nevýhody
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
4 Návrh °e²ení 4.1
2
4
3 Analýza 3.1
1
1.1.1
7
9
Celkový pohled na architekturu . . . . . . . . . . . . . . . . . . . . . . . . . .
9
5 Realizace
11
6 Testování
12
7 Záv¥r
13
Literatura
14
vii
Seznam obrázk· 1.1
Ukázka první verze systému Studentova berli£ka. Zdroj [1] . . . . . . . . . . .
2
3.1
Vloºená abstraktní datová vrstva
. . . . . . . . . . . . . . . . . . . . . . . . .
8
4.1
Celkový pohled na architekturu jádra . . . . . . . . . . . . . . . . . . . . . . .
10
viii
Seznam tabulek 3.1
Podporované databázové systémy . . . . . . . . . . . . . . . . . . . . . . . . .
ix
7
Kapitola 1
Úvod Studium na dne²ní moderní vysoké ²kole klade na studenty vysoké nároky a velké mnoºství povinností. Aby mohl student t¥mto nárok·m vyhov¥t musí být v prvé °ád¥ o svých povinnostech a výsledcích co nejlépe informován. D·leºité je najít kompromis mezi náro£ností na drahocenný £as cvi£ícího a informovaností studenta. V n¥kterých p°edm¥tech není toto zatím vy°e²eno, coº vede k n¥kterým nep°íjemným jev·m:
•
cvi£ící nosí výsledky test· pouze v písemné form¥ u sebe, nejsou nikde zve°ejn¥ny
studenti musí na výsledky £ekat minimáln¥ týden i p°esto, ºe testy jsou opraveny dríve
pokud student na cvi£ení absentuje, nemá ²anci se své výsledky dozv¥d¥t studenti poté £asto pí²í osobní e-maily s ºádostí o sv·j výsledek, coº zdrºuje jak cvi£ící, tak samotné studenty
•
cvi£ící zve°ej¬uje výsledky na svých osobních webových stránkách
neexistuje ºádný ociální rozcestník jednotlivých webových stránek, student tak netu²í, kde výsledky hledat
údrºba vlastních stránek je pro cvi£ícího zbyte£n¥ £asov¥ náro£ná studijní výsledky jsou povaºovány za osobní údaj a nem¥ly by být bez souhlasu zve°ej¬ovány
1.1
Existující informa£ní systémy
Na základ¥ zmi¬ovaných nep°íjemností vznikají r·zné pomocné nástroje, které by komunikaci mezi studenty a kantory zjednodu²ovali. V rámci VUT, potaºmo Fakulty elektrotechnické existuje °ada systém·, které toto °e²í. Jejich problémem ov²em v¥t²inou je, ºe kaºdý takový systém vystupuje sám za sebe, není nijak integrován s ostatními a není moºnost, jak ho dále vylep²ovat a roz²i°ovat. Typicky se tak stává, ºe student pot°ebuje ke svému fungování v rámci ²koly n¥kolik r·zných uºivatelských jmen a hesel, aby do r·zných systém· mohl p°istupovat (a£koli je pravdou, ºe se situace za dobu mého studia znateln¥ zlep²ila).
1
KAPITOLA 1.
1.1.1
2
ÚVOD
Univerzitní informa£ní systémy
Jednou skupinou systém· pro podporu výuky jsou velmi rozsáhlé informa£ní systémy zam¥°ené na studium na vysoké ²kole jako na celek. P°íkladem takového systému je Komponenta Studium (známá jako KOS) doprovázející studenty po celou dobu studia na v²ech fakultách VUT. KOS umoº¬uje student·m zápis p°edm¥t·, tvorbu a zobrazení rozvrhu, p°ihla²ování ke zkou²kám, p°ehled pln¥ní studijního plánu, p°ehled známek z absolvovaných p°edm¥t· a °adu dal²ích funkcí, které z velké £ásti nahrazují osobní komunikaci se studijním odd¥lením. P°edchozí odstavec p°evzat z [2]
1.1.2
Systémy pro podporu jednotlivých p°edm¥t·
Jak uº bylo zmín¥no. Nejjednodu²²í formou systému pro podpory je soubor statických webových stránek. Tento p°ístup pouºívá
Service - K336 Community Web Server1 , který pouºívá
Katedra po£íta£·. Lep²í moºností je vyuºití systému zaloºeném na koncepci wiki (pouºívá nap°íklad
Eduweb2 ), z d·vodu men²í náro£nosti p°i tvo°ení a aktualizaci obsahu. Ideálním
°e²ením je pouºití úzce specializovaného systému, který je vytvo°en p°ímo a pouze pro podporu výuky. Takovým systémem je práv¥
1.1.3
Studentova berli£ka3 .
Historie systému Studentova berli£ka
První verze Studentovy berli£ka byla vytvo°ena v zimním semestru 2005/2006 pro pot°eby p°edm¥tu DSA (Datové Struktury a Algoritmy) vedeným Ing. Ji°ím Chludilem. Jednalo se (alespo¬ ve srovnání se sou£asnou podobou) o primitivní dynamickou stránku, která umoºnovala zadávat a prohlíºet hodnocení v daných t°ídách.
Obrázek 1.1: Ukázka první verze systému Studentova berli£ka. Zdroj [1]
V druhé verzi do²lo k zobecn¥ní systému, aby mohl být pouºit i v jiných p°edm¥tech neº jen DSA. Nová verze p°inesla mnohá vylep²ení jako moºnost evidovat docházku nebo 1 2 3
http://service.felk.cvut.cz/service.html http://eduweb.fel.cvut.cz/ http://berlicka.jagu.cz
KAPITOLA 1.
ÚVOD
3
zadávat semestrální práce a poté evidovat jejich výsledky. Od roku 2007 je systém pouºíván v ostrém provozu pro p°edm¥ty TIN (Teoretická informatika) a DSA (Datové struktury a algoritmy). Podrobnosti k t¥mto dv¥ma verzím lze nalézt v bakalá°ské a diplomové práci jejich autora Ji°ího Hunky [1]. V dal²ích letech, konkrétn¥ v akedemickém roce 2008/2009, bylo rozhodnuto, ºe dal²í vývoj Studentovi berli£ky bude sm¥°ován k modulární architektu°e. V souvislosti s tím mohla být zahájena práce na n¥kolika paralelních samostatných projektech, které funk£nost Berli£ky roz²i°ují:
•
Plugn-in support (BP) Marek Sacha
•
Managment webu semestrálních prací (BP) Jakub Fi²er
•
Generování test· (BP) Ji°í And¥l
•
Automatické vyhodnocení test· (BP) Petr Kotek
•
Rozhraní pro Studentovu Berli£ku (SP, pokra£uje do DP) Lud¥k Chmurovský
Kapitola 2
Popis problému, specikace cíle 2.1
•
Sou£asný stav systému Studentova berli£ka Popis °e²eného problému, vymezení cíl· DP/BP a poºadavk· na implementovaný systém.
•
Popis struktury DP/BP ve vztahu k vyty£eným cíl·m.
•
Re²er²ní zpracování existujících implementací, pokud jsou známy.
4
Kapitola 3
Analýza 3.1
Volba programovacího jazyka
P°i výb¥ru programovacího jazyka pro webové aplikace p°ipadaly v sou£asné dob¥ v úvahu dv¥ nejpouºívan¥j²í varianty. Jazyk Java na platform¥ Java EE, nebo skriptovací jazyk PHP [5].
3.1.1
Java Enterprise Edition
Java EE (d°íve ozna£ovaná jako J2EE) je platforma pro vývoj tzv. enterprise aplikací. Poskytuje sadu specikací pro vytvá°ení a provoz v¥t²ích distribuovaných multivrstevnatých Java aplikací. Hlavním d·vodem pro nepouºití této technologie pro vývoj jádra aplikace Berli£ka je zbyte£ná komplexnost.
3.1.2
PHP
Skriptovací programovací jazyk ur£ený hlavn¥ k vývoji webových aplikací. Historie PHP sahá aº do roku 1995, kdy p·vodní autor Rasmus Lerdorf p°edstavil sadu skript·, které nazval Personal Home Page Tools. Do roku 1997 byla vytvo°ena verze 2.0, která uº byla implementována v jazyce C, zatímco p·vodní skripty byly v jazyku Perl. V roce 1997 zárove¬ p·vodní zdrojové kódy p°evzali pánové Andi Gutmans a Zeev Suraski. Tyto kompletn¥ p°epsali a v polovin¥ roku vydali jako verzi PHP 3.0, která dokonce roku dosáhla 10% podílu mezi webovými servery na internetu. Okamºit¥ po vydání t°etí verze za£ali oba auto°i pracovat na dal²ím vylep²ení jazyka. Nová verze 4.0 zaloºená Zend Engine (Zend jako zkratka jmen Zeev a Andi) byla p°edstavena v polovin¥ roku 1999, zárove¬ byla zaloºena rma Zend Technologies, která se o vývoj jazyka PHP stará dodnes. V sou£asnosti nejpouºívan¥j²í verzí jazyka PHP je verze 5 (p°edstavena v roce 2004) a od ní odvozené varianty (nap°íklad v sou£asné dob¥ nejnov¥j²í verze 5.3.2). Nejd·leºit¥j²ími novinkami, které p°i²ly s verzí PHP 5, byla nová vylep²ená podpora OOP a abstraktní datová vrstva PDO, o které se také budu podrobn¥ji zmi¬ovat dále v textu v souvislosti se svojí prací.[4]
5
KAPITOLA 3.
ANALÝZA
6
3.1.2.1 Výhody •
Velká rozsáhlost funkcí p°ímo v základní verzi
•
Velké mnoºství roz²i°ujících knihoven, které pokryvají v¥t²inu b¥ºných pot°eb
•
Nativní podpora mnoha databázových systém·
•
Multiplatformnost
•
Pravd¥podobn¥ stále nejpouºívan¥j²í jazyk pro psaní webových aplikací a z toho vyplývající rozsáhlost uºivatelské komunity
•
Jednoduchá instalace na serveru, velké mnoºství server· podporující hosting PHP
•
Dobrý manuál
3.1.2.2 Nevýhody •
Zatíºenost historickým vývojem
Nedokonalá podpora OOP Míchání objektového a procedurálního p°ístupu v²echny p·vodní nativní funkce jsou pouºívány jako procedurální
Nekonzistentní pojmenování nativních funkcí a nejednotnost v logice po°adí parametr·
•
Není zaru£ena zp¥tná kompatibilita
•
Nativní funkce nevyhazují výjimky (ty byly p°idány do PHP aº od verze 5)
•
Po zpracování poºadavku se ztrácí kontext aplikace p°i kaºdém poºadavku vzniká nové vlákno, p°ípdn¥ proces, musí se navázat nové spojení s databází apod.
•
Z p°edchozího bodu vyplývající slab²í výkon
3.2
Databázové úloºi²t¥, komunikace s databází
Výb¥r konkrétní databáze byl £áste£n¥ limitován moºnostmi jazyka PHP. Pro p°ístup do databáze bylo pouºito rozhraní PDO[3], které podporuje v¥t²inu znám¥j²ích databázových systému. Kompletní seznam k dispozici níºe.
3.2.1
PDO
PDO (PHP Data Object) je abstraktní datová vrstva slouºící k jednotnému p°ístupu k r·zným databázím z jazyka PHP. Jedná se o sadu databázových ovlada£·, z nichº kaºdý musí implementovat dané standardizované rozhraní. Tím je zaji²t¥na konzistence p°i jejich pouºívání. PDO se v jazyce PHP objevuje od verze 5.1.
KAPITOLA 3.
7
ANALÝZA
Ovlada£
Podporované databáze
PDO_DBLIB
FreeTDS / Microsoft SQL Server / Sybase
PDO_FIREBIRD
Firebird/Interbase 6
PDO_IBM
IBM DB2
PDO_INFORMIX
IBM Informix Dynamic Server
PDO_MYSQL
MySQL 3.x/4.x/5.x
PDO_OCI
Oracle Call Interface
PDO_ODBC
ODBC v3 (IBM DB2, unixODBC and win32 ODBC)
PDO_PGSQL
PostgreSQL
PDO_SQLITE
SQLite 3 and SQLite 2
PDO_4D
4D
Tabulka 3.1: Podporované databázové systémy
3.2.2
MySQL
Z vý²e uvedených moºností byla vybraná jako nejvhodn¥j²í kandidát databáze MySQL. D·vody byly následující:
•
p·vodní systém Berli£ky pouºívá také databázi MySQL pro snaº²í migraci dat je vhodné pouºít stejnou databázi
•
na testovacím serveru dostupná
•
zku²enosti £len· týmu nejvíce s touto databází
3.2.3
Historie
Vydání první verze databazového systému MySQL se usute£nilo roku 1995 rmou
MySQL
AB (která se pozd¥ji stala sou£ástí Sun Microsystems nyní sou£ástí Oracle). Tato první verze fungovalo pouze pod OS Linux a UNIX. Verze pro opera£ní systém MS Windows byla p°idána v roce 1998. Od roku 2005, kdy vychází MySQL verze 5.0 se stává plnohodnotnou databáz, která podporuje funkce jako: p°edp°ipravené dotazy (prepared statements), uloºené procedury (stored procedures), triggery, pohledy (views), transakce (transactions).
3.2.4
Výhody a nevýhody
•
²í°ena pod licencí GPL moºnost pouºití zdarma
•
moºnost pouºití r·zných úloºi²´ (storage engines) MyISAM, InnoDB, MEMORY, CSV . . .
KAPITOLA 3.
ANALÝZA
Obrázek 3.1: Vloºená abstraktní datová vrstva
8
Kapitola 4
Návrh °e²ení 4.1
Celkový pohled na architekturu
A£koliv se tato práce zabývá pouze návrhem jádra aplikace, je d·leºité se podívat na celkovou architekturu z v¥t²í perspektivy.
9
KAPITOLA 4.
NÁVRH EENÍ
Obrázek 4.1: Celkový pohled na architekturu jádra
10
Kapitola 5
Realizace Popis implementace/realizace se zam¥°ením na nestandardní £ásti °e²ení.
11
Kapitola 6
Testování •
Zp·sob, pr·b¥h a výsledky testování.
•
Srovnání s existujícími °e²eními, pokud jsou známy.
12
Kapitola 7
Záv¥r •
Zhodnocení spln¥ní cíl· DP/BP a vlastního p°ínosu práce (p°i formulaci je t°eba vzít v potaz zadání práce).
•
Diskuse dal²ího moºného pokra£ování práce.
13
Literatura [1] J. Hunka. Studentova Berli£ka. 2007. [2] P. Kotek. Studentova berli£ka II - Automatické vyhodnocení test·. 2009. [3] PHP: PDO - Manual.
http://php.net/manual/en/book.pdo.php. [4] PHP: History of PHP - Manual.
http://cz.php.net/manual/en/history.php.php. [5] PHP: Hypertext Preprocessor.
http://php.net/.
14