ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE FAKULTA ELEKTROTECHNICKÁ
BAKALÁŘSKÁ PRÁCE AKIS Automatizovaný knihovní systém
Chlumecký Martin
Vedoucí práce: Ing. Božena Mannová, M.Math, Ph.D Studijní program: Softwarové technologie a management Obor: Softwarové inženýrství červen 2009
Prohlášení
Prohlašuji, že jsme bakalářskou práci vypracoval samostatně, uvedl veškerou použitou literaturu a souhlasím s využitím výsledků této práce Elektrotechnickou fakultou Českého vysokého učení technického v Praze. Dále nemám závazný důvod aby dílo podléhalo autorskému zákonu.
V Praze dne 10.6.2009
Chlumecký Martin
2
Abstrakt Bakalářská práce se zabývá analýzou, návrhem a implementací informačního systému pro správu malých knihoven. Systém eviduje informace o knihách, čtenářích a historii jejich výpůjček. Systém je vytvořen v jednoduchém uživatelském rozhraní, které vyplývá z požadavku na jednoduchost ovládání. V práci je provedena a popsána i analýza podobného systém. Součástí práce je testování systému a jeho nasazení do provozu.
Abstract The bachelor thesis deals with analysis, design and implementation of small library information system. The system process book agenda, library member’s agenda and borrow history. The analysis of similar system is also done and described. GUI of the information system is very simple according to simple usability requirement. Testing and maintenance of system is also performed.
3
Obsah 1.Úvod..................................................................................................................................................7 2. Úvod do problematiky knihovní správy.......................................................................................8 2.1 Dokumenty knihovny...............................................................................................................8 2.1.1 Seznam knih.......................................................................................................................8 2.1.2 Seznam čtenářů..................................................................................................................9 2.1.3 Deník knihovny..................................................................................................................9 2.2 Dění v knihovně........................................................................................................................9 2.2.1 Vyhledání knihy.................................................................................................................9 2.2.2 Vypůjčení knihy.................................................................................................................9 2.2.3 Vrácení knihy.....................................................................................................................9 2.2.4 Historie knihy.....................................................................................................................9 2.2.5 Historie čtenáře..................................................................................................................9 2.2.6 Vypůjčené knihy.................................................................................................................9 3. Dostupné SW produkty................................................................................................................10 3.1 3.2 3.3 3.4 3.5 3.6 3.7
LANius a Clavius ...................................................................................................................10 DAWINCI...............................................................................................................................11 DAIMON................................................................................................................................12 ANTIX....................................................................................................................................13 Perfect Library........................................................................................................................13 Freeware produkty..................................................................................................................13 Shrnutí.....................................................................................................................................14
4. Návrh systému..............................................................................................................................15 4.1 Architektura............................................................................................................................15 4.2 Výběr operačního systému......................................................................................................15 4.3 Výběr databázového serveru...................................................................................................16 4.4 Vzhled a návrh GUI................................................................................................................17 4.4.1 Předběžný návrh GUI.......................................................................................................17 4.5 Ovládání..................................................................................................................................18 4.6 Uživatelské role......................................................................................................................19 4.6.1 Administrátor....................................................................................................................19 4.6.2 Knihovna..........................................................................................................................19 4.7 Licence systému......................................................................................................................19 5. Výběr technologií a nástrojů pro vývoj......................................................................................20 5.1 Technologie.............................................................................................................................20 5.1.1 C/C++...............................................................................................................................20 5.1.2 OCL (Oracle Class Library).............................................................................................20 5.1.3 API (Application Programming Interface).......................................................................21 5.1.4 SQL jazyk.........................................................................................................................21 4
5.2 Nástroje...................................................................................................................................21 5.2.1 Oracle SQL Developer.....................................................................................................21 5.2.2 E-R modelář.....................................................................................................................21 5.2.3 Magic Draw UML............................................................................................................22 5.2.4 Microsoft Visual Studio (MSVC)....................................................................................22 5.2.5 Subversion (SVN)............................................................................................................22 6. Analýza a návrh implementace...................................................................................................23 6.1 Use-Case diagram...................................................................................................................23 6.1.1 Přihlášení..........................................................................................................................23 6.1.2 Změna hesla.....................................................................................................................23 6.1.3 Nastavení knihovny..........................................................................................................23 6.1.4 Pohyb a výběr položek menu...........................................................................................24 6.1.5 Vkládání záznamů............................................................................................................25 6.1.6 Vložení knihy, čtenáře......................................................................................................25 6.1.7 Vypůjčení knihy...............................................................................................................25 6.1.8 Vrácení knihy...................................................................................................................25 6.1.9 Historie výpůjček.............................................................................................................26 6.1.10 Při ztrátě spojení.............................................................................................................26 6.2 Class diagram..........................................................................................................................27 6.2.1 Orientované na vstup a výstup.........................................................................................27 6.2.1.1 CIO (Console Input Output).....................................................................................27 6.2.1.2 CLIB (Console Library)...........................................................................................27 6.2.1.3 GCO (Graphic Console Output)...............................................................................27 6.2.1.4 IOF (Input Output Functions)...................................................................................27 6.2.1.5 Mess (Messages)......................................................................................................28 6.2.2 Orientované na spojení s databází....................................................................................28 6.2.2.1 Table View................................................................................................................28 6.2.2.2 Login........................................................................................................................28 6.2.2.3 Connect AKIS...........................................................................................................28 6.2.2.4 Setting.......................................................................................................................28 6.2.2.5 Change password......................................................................................................28 6.2.3 Orientované na obsluhu požadavků.................................................................................28 6.2.3.1 Menu.........................................................................................................................29 6.2.3.2 Common Table.........................................................................................................29 6.2.3.3 Historie Knih, Seznam Knih, Seznam Čtenářů, Správa výpůjček...........................29 6.3 Datový model..........................................................................................................................31 6.4 Postup při implementaci.........................................................................................................32 7. Testování........................................................................................................................................33 7.1 Ruční testování.......................................................................................................................33 7.1.1 Test zobrazených dat v tabulce.........................................................................................33 7.1.2 Test vkládání hodnot ze vstupu od uživatele....................................................................33 5
7.1.2.1 Řetězec znaků...........................................................................................................33 7.1.2.2 Celočíselný vstup.....................................................................................................34 7.1.2.3 Datum.......................................................................................................................34 7.1.3 Test grafického vykreslení položek..................................................................................34 7.1.4 Test na rekci systému při ztrátě spojení...........................................................................34 7.1.4.1 Ztráta spojení............................................................................................................34 7.1.4.2 Chybný datový model..............................................................................................34 7.2 Automatické testování.............................................................................................................34 7.3 Test použitelnosti „Usability test“..........................................................................................35 7.4 Testovací data..........................................................................................................................35 7.5 Výsledky testu.........................................................................................................................35 8. Závěr a hodnocení........................................................................................................................36 9. Použitá literatura..........................................................................................................................37 10. Seznam příloh.............................................................................................................................38 Příloha A: Objednávka..............................................................................................................39 Příloha B: Obsah přiloženého CD.............................................................................................40 Příloha C: Instalační příručka...................................................................................................41 C.1 Instalace serveru AKIS...............................................................................................41 C.2 Instalace klienta AKIS................................................................................................41 C.3 Vytvoření nové knihovny............................................................................................41 Příloha D: Uživatelská příručka................................................................................................42 D.1 Základní ovládání.......................................................................................................42 D.2 Vložení nové knihy.....................................................................................................44 D.3 Vložení nového čtenáře..............................................................................................44 D.4 Zrušení / upravení knihy.............................................................................................44 D.5 Zrušení / upravení čtenáře..........................................................................................45 D.6 Vypůjčení knih............................................................................................................45 D.7 Vrácení knihy..............................................................................................................45 D.8 Seznam všech vypůjčených knih................................................................................45 D.9 Vypůjčené knihy čtenáře.............................................................................................46 D.10 Historie výpůjček......................................................................................................46 D.11 Změna hesla..............................................................................................................46 D.12 Nastavení informací o knihovně...............................................................................46 Příloha E: Ukázka kódu............................................................................................................47 Příloha F: Ukázka aplikace.......................................................................................................48 Příloha G: Usability test............................................................................................................49
6
1
.
Úvod
Hlavním úkolem bakalářské práce je implementace informačního systému, který spravuje každodenní činnost v malých knihovnách. Tyto knihovny nemají často z finančních důvodů žádný dostupný software. Veškerá evidence probíhá pomocí tužky a papíru. Na trhu existuje řada produktů zabývající se touto problematikou. Tyto produkty jsou pro knihovny buďto cenově nedostupné, nebo nedokážou pokrýt požadavky na správu. Zadání bylo založeno dle objednávky Obecního úřadu Všemyslice (příloha A). Nový systém by měl přehledně zobrazovat a evidovat činnost v knihovně. Hlavním požadavkem na systém je jednoduchost ovládání, protože nový systém bude převážně určen starším uživatelům, kteří mají minimální znalosti práce s počítačem. Z těchto důvodů se zadavatelé objednávky rozhodli nechat si vytvořit software, který by splňoval přesně jejich požadavky. Vzhledem k požadavkům na jednoduché ovládání nového systému pracovníky knihoven, kteří nemají velkou praxi v používání počítačů, byla zvolena forma uživatelského prostředí pomocí textového rozhraní. Systém je ovládán několika základními klávesami bez použití myši. Více k ovládání v kapitole 4. Práce popisuje postup při analýze, návrhu a implementaci zadaného systému. V úvodu bakalářské práce je popsána problematika správy knihoven obce Všemyslice. V následující kapitole je proveden obecný rozbor nad dostupným softwarem, podle kterého probíhal návrh nového systému. V další části je popsána implementace (kapitoly 4 a 5) a výběr technologií pro řešení zadaného problému. V závěru práce je detailně popsáno testování a jeho průběh. V závěru jsou shrnuty výsledky a další možnosti rozšíření a vylepšení systému.
7
2
.
Úvod do problematiky knihovní správy
V
této kapitole provedeme analýzu problematiky knihovny, která byla poskytnuta
zadavatelem systému. Uvedeme dokumenty a jejich položky, které se v knihovně evidují a jaké položky obsahují. Popíšeme jednotlivé činnosti, které patří pod běžnou správu knihovny.
2.1 Dokumenty knihovny 2.1.1 Seznam knih Každá kniha je opatřena razítkem, přírůstkovým číslem a žánrem do kterého spadá. V knize je přiložen knižní lístek. Knihy jsou fyzicky (v regálech) řazeny podle žánru a žánry jsou tříděny dle spisovatele. Seznam knih obsahuje detailní informace o každé knize evidované v knihovně, jsou to: Přírůstkové číslo
Celé číslo, které je každé evidované knize přiděleno při zapsání. Přírůstkové číslo musí být unikátní v rámci knihovny. Spisovatel
Plné jméno spisovatele, které je zapsáno ve tvaru: „příjmení _ první a druhé jméno “. Název, Žánr, Nakladatelství, Cena Rok
Rok vydání knihy, pokud není v knize určeno, je rok zapsán jako 0. Značka
Značka je technické označení knihovny. Knihy jsou rozděleny do pěti skupin: Bk (beletrie krásná), Bn (beletrie naučná), Mk (mládež krásná), Mn (mládež naučná), Cb (vypůjčeno z jiné knihovny).
8
2.1.2 Seznam čtenářů Čtenář, který je zaregistrován v knihovně, má přidělené jedinečné číslo. Pomocí tohoto čísla je čtenář identifikován. Každý čtenář má vlastní igelitové pouzdro se štítkem obsahující informace: Číslo čtenáře, Jméno, Příjmení, Adresa, Poznámky
2.1.3 Deník knihovny Deník zachycuje dění v knihovně. Eviduje kolik knih bylo kdy půjčeno a kolik čtenářů kdy knihovnu navštívilo. Na konci roku se vyplňuje statistický formulář, který je odeslán na Ministerstvo kultury.
2.2 Dění v knihovně 2.2.1 Vyhledání knihy Pokud čtenář nezná spisovatele knihy je její nalezení závislé na knihovníkově paměti. Pokud je spisovatel znám, knihovník ručně projde příslušný regál. 2.2.2 Vypůjčení knihy Čtenář si vybere knihu. Knihovník z knihy vyndá knižní lístek a zapíše do něj číslo čtenáře a datum půjčení. Knižní lístek pak vloží do čtenářova pouzdra. 2.2.3 Vrácení knihy Knihovník vracenou knihu prohlídne, nalezne knižní lístek vracené knihy (v pouzdře čtenáře), který založí zpět do knihy a vrátí ji do regálu. 2.2.4 Historie knihy Knihovník nalezne požadovanou knihu a z knižního lístku vyčte čísla čtenářů. Poté projde seznam čtenářů a podle čísel z knižního lístku nalezne čtenáře, kteří knihu měli vypůjčenu. 2.2.5 Historie čtenáře Historie čtenáře je prakticky nevyhledatelná. Bylo by zapotřebí projít všechny knihy a jejich knižní lístky. 2.2.6 Vypůjčené knihy Ručně projdeme všechny pouzdra čtenářů a vypíšeme si názvy knih z knižního lístku.
9
3
.
Dostupné SW produkty
V dnešní době existuje mnoho produktů zaměřených na správu knihoven. Tyto produkty můžeme rozdělit podle hlavního kritéria, kterým je velikost spravované knihovny. Hlavní výhodou produktů zaměřených na velké knihovní jednotky, je jejich komplexnost. Jsou velmi flexibilní a pokrývají kompletní správu knihoven, včetně evidence deníku knihovny nebo evidence zařízení knihovny. Tyto systémy jsou vhodné pro knihovny, které poskytují profesionální služby. Pro knihovny menších velikostí (přibližně do 5000 svazků), jsou velké systémy cenově nedostupné. A malé knihovny nevyužijí veškeré možnosti těchto systémů. Malé systémy, jejichž cena se pohybuje v řádech tisíců korun, jsou cenově přijatelné, ale možnosti evidence a správy jsou omezené. Pro potřeby naší věci je potřeba vytvořit software, který by bylo možné nasadit právě v malých knihovnách. Hlavním kritériem při vývoji knihovního systému je jeho cena, náklady spojené s provozem a jednoduchost ovládání. Uvedeme si několik druhů knihovních systémů od různých výrobců, které jsou dostupné na našem trhu. Ukážeme si systémy pro profesionální užití. Produkty pro malé knihovny, nebo soukromé účely.
3.1 LANius a Clavius Tento systém je nejrozšířenější knihovní systém v České republice, který vyvíjí firma LANius s.r.o. Systém byl vyvíjen a testován za pomoci Městské knihovny města Tábora. Díky této pilotní verzi vznikl systém, který je možné využívat i v jiných větších knihovnách obdobného typu. Používá se jak ve školství tak ve vědeckých, univerzitních a krajských knihovnách. Clavius je modernější verze předchozího systému LANius. Jde o integrovaný systém, který obsahuje soubor programů. V tomto systému jsou zavedeny základní činnosti pro vedení a správy v knihovnách. Systém umožňuje práci současně několika knihovníků nad jednou knihovnou. Systém používá evidenci pomocí čárového kódu, který zrychluje a zpřesňuje evidenci.
10
Program je rozdělen do modulů, kde každý modul má svojí vlastní funkci. Tyto moduly pracují nad stejnou množinou dat a proto se navzájem ovlivňují. Systém je distribuován v různých verzích, kde každá verze se liší množinou použitých modulů. Takže zákazník si může objednat a zaplatit právě takové funkce, které své knihovní správy potřebuje.
Obrázek 3.1: Rozšíření knihovního systému LANius Uživatelé systému LANius [online]. 1994 , 12.04.2009 [cit. 2009-05-28]. Dostupný z WWW:
Systém má další příjemnou vlastnost a to, že uživatel se může podílet na tvorbě elektronického katalogu své informační jednotky. Uživatelé systémů LANius a Clavius mohou být přijati do sdružení uživatelů těchto systémů. Ovšem je zde zapotřebí mít zakoupený příslušný modul pro generování obsahu. Katalog obsahuje více jak 300 tisíc titulů všech knihoven České republiky, které jsou uživateli těchto systémů. V dnešní době byl vývoj systému LANius ukončen a uživatelé mají možnost přejít na nový systém Clavius.
3.2 DAWINCI Systém vyvíjí firma ASP a.s ve spolupráci se zkušenými knihovníky Regionální knihovny Karviná. Jde o poměrně moderní systém využívající moderní objektové prostředky. Architektura je založená na technologii klient-server, která umožňuje snadné šíření aplikace pomocí internetu či intranetu. Pro přístup k datům je využíván jazyk SQL v kombinaci s několika databázovými systémy (Oracle, MS SQL). Což umožňuje zcela komplexní vyhledávání v datech knihoven. DAWINCI systém obsahuje samozřejmě standardní moduly pro správu informační jednotky, jako je modul pro katalogizaci, výpůjčky a on-line katalog. Základní funkce systému je možné ovládat i pomocí webového prohlížeče.
11
3.3 DAIMON Další systém se špičkovým vybavením pro správu větších knihoven z dílny firmy SEFIRA. Systém obdobných vlastností jako výše uvedené produkty. Opět založeno na technologii klient - server s centrální instalací. Technologie
založená na centrálním databázovém serveru
firmy Oracle. Komunikace mezi čtenáři přistupujících k systému je pomocí webového prohlížeče, kde na straně serveru je webový server APACHE komunikující s relační databází. V systému je možné zakládat více knihoven, které jsou všechny uloženy na centrálním úložišti. To mimo jiné umožňuje provázání knihoven mezi sebou. Knihovny si můžou mezi sebou vypůjčovat knihy, podávat informace o neplatících čtenářích a podobně. Systém pro svou evidenci knih využívá opět čárový kód. Modul zvaný „Revize knihovního fondu“ umožňuje zjistit rozdíl mezi knihami zapsanými v systému a knihami fyzicky přítomnými v knihovně. Což je velká pomoc při inventuře. Další velmi užitečným modulem je modul „Statistiky“. Modul umožní předefinovat dotazy nad daty ze všech modulů. Je možné tedy získat informace o výpůjční aktivitě, o přístupu na on-line katalog a mnohé další. Takto získaná data je možné exportovat například do formátu tabulkového procesoru MS Excel, kde je uživatel může dále zpracovávat dle libosti.
Obrázek 3.2: Architektura SEFIRA S.R.O. Popis systému [str. 18]. 2008 [cit. 2009-05-28]. Dostupný z WWW:
12
3.4 ANTIX Systém je určený převážně pro správu veřejných
knihoven.
Dokáže
zpracovávat
většinu agendy potřebnou pro každodenní činnost knihovny. Jako je katalogizace svazků, výpůjček atd. Předností systému je jeho snadné ovládání ve znakovém režimu, ale jinak jde o plně hodnotnou 32 bitovou aplikaci. Systém má minimální
požadavky
na
hardwarovou
Obrázek 3.3: Ukázka aplikace ANTIX
konfiguraci a je spustitelný i v operačních systémech DOS.
3.5 Perfect Library Moderní knihovní systém, který najde uplatnění v malých i středně velkých, ale i domácích knihovnách. V domácím použití, ale nevyužijeme funkce, které nám systém dokáže nabídnout. Podporuje čtení a generování čárového kódu jak pro knihy tak i pro čtenáře. Umí spravovat výpůjčky včetně upomínek. Systém dokáže exportovat data do různých formátů (Excel, atd. ). Program využívá databázový server PostgreSQL a jde o aplikaci síťovou. Program používá databázový server PostgreSQL, pracuje tedy v síti. Všechny funkce jsou součástí jedné instalace, bez nutnosti dokupovat další balíčky či moduly.
3.6 Freeware produkty Na softwarovém trhu existuje mnoho volně šiřitelných produktů. Jejich výhodou je samozřejmě cena. Ale mají mnohé nevýhody, které by pro použití v knihovnách byly dosti kritické. Zde se nebudeme zabývat žádnými konkrétními freeware produkty. Pouze si
uvedeme produkty,
podle nichž byla analýza prováděna. Byly to BookDB, VLKsoft Knihovna a TomeBase. Nejkritičtější nevýhodou (co se týče bezpečnosti užívání) těchto produktů je, že mají téměř nulovou podporu ze strany výrobce. Ve valné většině licenčních ujednání se uvádí, že výrobce softwaru nenese žádnou odpovědnost za případné problémy týkající se například ztráty dat. Takže pokud dojde k nějakému problému (jako je poškození datových souborů) při používání takových systému, nikdo nám nedá žádnou záruku.
13
Nevýhodou číslo dva je, že nedokáží evidovat informace, které požadujeme. Jde například o informace spojené s katalogizací svazků v knihovně. Navíc některé produkty mají těžkopádné ovládání. Další nevýhodou pro použití je, že žádný z uvedených produktů neposkytuje všechny funkce, které od systému očekáváme. Systémy dokáží evidovat seznamy knih, čtenářů, popřípadě výpůjček, ale například informace o výpůjčkách jsou pro nás nepoužitelné. Takže jsou takové produkty pro nás nepoužitelné.
3.7 Shrnutí Shrneme si vlastnosti systémů, které by mohly být vhodnými kandidáty pro tento účel:
Cena v Kč Komplexnost funkcí Technická podpora
LANius a Clavius
Daimon
Antix
Freeware
13.000 – 30.000
15.000 – 45.000
7.000 – 16.000
0
Vysoká
Vysoká
Střední
Velmi nízká
Výborná
Výborná
Uspokojivá
Téměř nulová
Hlavním požadavkem je cena. Takže velké a komplexní systémy (LANius, Dawinci, atd.) jsou pro nás nedostupné. Co se týče středních systémů (Antix, Perfect library) je cena relativně nízká, nicméně pro tento účel opět nevyhovující. Poslední kategorií je freeware software. Jeho cena je ve většině případů téměř nulová, ale co se týče funkcí, které poskytují jsou tyto produkty nepřijatelné. Z těchto důvodů bylo rozhodnuto vytvořit vlastní aplikaci, která bude obsahovat všechny potřebné funkce pro chod našich knihoven.
14
4
.
Návrh systému
Návrh ovládání, vzhledu a chování je jedna z nejdůležitějších věcí, nad kterou je třeba se důkladně zamyslet a zanalyzovat ji. Existuje mnoho aplikací, které jsou implementačně výborné, ale jejich ovládání anebo GUI je na horší úrovni. A tyto aplikace často odradí uživatele od jejich užívání.
4.1 Architektura Byla zvolena architekturu klient-server. Systém bude obsahovat jeden centrální databázový server, zvaný AKIS server. Klientské aplikace (tencí klienti) nebudou lokálně ukládat žádná data spojená se správou knihovny. Veškerá komunikace bude probíhat přímo se serverem AKIS. Data mezi knihovnami sdílena nebudou.
Obrázek 4.1: Návrh systému AKIS
4.2 Výběr operačního systému V úvahu připadaly dvě varianty operačních systémů, Linux a Microsoft Windows. Celý projekt bude freeware. Takže by bylo vhodné použít nějakou verzi open Linuxu, abychom se zbavili nutnosti koupě licence různých komerčních operačních systémů. Vzhledem k tomu, že knihovny obce jsou zapojeny do projektu PIK (Projekt internetizace knihoven http://web.mvcr.cz/archiv2008/micr/files/1877/pik_prezentace.ppt). Který vznikl v roce 2004 a byl dokončen roku 2007. Cílem projektu bylo zapojit všechny registrované knihovny (dle 15
knihovního zákona) do sítě internet. Součástí projektu bylo i poskytnutí hardwarového a softwarového vybavení, které obsahuje osobní počítač (monitor, základní jednotka, klávesnice, ...), tiskárnu a modem pro připojení k internetu. K základním softwarovým vybavením našich knihoven je operační systém Microsoft Windows XP professional, antivirový program AVG a řada dalších programů. Z důvodu PIK byl jako operační systém pro projekt zvolen operační systém firmy Microsoft Windows XP.
4.3 Výběr databázového serveru V zadání bakalářské práce je určen databázový server Oracle Express Edition. (http://www.oracle.com/technology/products/database/xe/index.html). Oproti vyšším verzím je Express Edition poskytován zdarma. Lze jej zdarma použít, jak pro vývoj, tak i pro komerční účely. Databázi je možné distribuovat i s vlastními aplikacemi. Samozřejmě Express Edition má určitá omezení (nasazení, či funkčnost). Dokáže spravovat maximálně 4 GB dat, je omezen na 1 CPU a 1 GB RAM. Tato omezení pro potřeby systému nejsou kritická. Předběžně se plánuje, že se k databázi budou připojovat přibližně 4-6 klientských aplikacích. Rozsah dat je odhadován přibližně na 20 tisíc záznamů. V první fázi bude mít každá knihovna nainstalovaný svůj databázový server lokálně, ke kterému bude přistupovat. V druhé fázi proběhne centralizace dat na jeden centrální server.
Obrázek 4.2: Nasazení systému AKIS
16
4.4 Vzhled a návrh GUI Hlavní požadavek je, aby ovládání aplikace bylo pro uživatele jednoduché a přímočaré (pomocí několika základních kláves). Bylo rozhodnuto, že systém bude navržen pomocí textového rozhraní. Toto rozhraní je známo například ze starých DOS účetních programů. Hlavní inspirací pro návrh GUI, byla aplikace APOST, který si nechala navrhnout Česká pošta. APOST a její ovládání je primárně určeno lidem, kteří mají minimální nebo žádné zkušenosti s osobními počítači. Aplikace pracuje v textovém režimu a její ovládání je pouze pomocí klávesnice. Proběhla analýza se zaměstnanci pošty Týn nad Vltavou. Předmětem analýzy bylo, jak jsou s ovládáním a vzhledem spokojeni. Systém APOST je též učen lidem s minimální znalostí práce s počítačem. Vzhled a barevné schéma aplikace bylo inspirováno systémem APOST.
Obrázek 4.3: Ukázka aplikace APOST http://blog.janik.cz/. Prezentace APOST [str. 4]. 2004 [cit. 2009-05-28]. Dostupný z WWW:
4.4.1 Předběžný návrh GUI Zde je pár ukázek návrhu uživatelského rozhraní:
Obrázek 4.4: Ukázka návrhu GUI (upravit knihu)
17
Obrázek 4.5: Ukázka návrhu GUI (vrátit knihu)
4.5 Ovládání Systém je určen v prvé řadě uživatelům s minimálními počítačovými dovednostmi. Těmto uživatelům často dělá problém práce s myší (nastavení kurzoru na určité místo, dvojkliky). Proto bylo rozhodnuto, že se myš v systému využívat nebudeme. Celé ovládání aplikace je pomocí klávesnice. Další problém pro starší uživatele systému by mohlo být čtení drobného textu z monitoru. Písmo o velikosti 12 bodů má přibližně 4 mm při rozlišení (1024x768). V textovém režimu má text přibližně 8mm, což už je pro většinu uživatelů přijatelné. Aplikace je ovládána pomocí 6 základních skupin kláves: Klávesa Enter Esc Tab Ctrl+F
Funkce Potvrzení výběr / vstupu Návrat zpět / zrušení výběru Přepínání mezi tabulkami / přesun mezi položkami při vkládání datumu Filtrace záznamů
Home, End PgUp, PgDown
Pohyb v tabulce a při vkládání textu
↑,↓ Del Backspace
Mazání znaku ze vstupu
18
4.6 Uživatelské role Systém obsahuje dvě uživatelské role: administrátor a knihovna (AKIS klient). 4.6.1 Administrátor Tato uživatelská role instaluje a spravuje databázový server AKIS. Je odpovědný za instalaci a provoz klientských aplikací. Časové vytížení administrátora je pouze v počátcích zavedení systému. Hlavními úkoly administrátora jsou: •
vytváření a spravování uživatelských účtů (knihoven);
•
záloha dat všech knihoven uložených na serveru;
•
odstraňování nepotřebných (starých) dat z databáze.
4.6.2 Knihovna Uživatelská role Knihovna vkládá, upravuje a odstraňuje záznamy v databázi, které jsou spojeny se správou knihovny. Knihovna je uživatelský účet serveru AKIS, který může vytvořit (odstranit) administrátor.
4.7 Licence systému Systém je primárně určen pro správu knihoven obce Všemyslice. Není však důvod, proč znemožnit jiným knihovnám užívání tohoto systému. Licence produktu tedy je freeware. Zdrojové kódy nebudou poskytovány při distribuci jiným knihovnám, ale budou poskytnuty studentům ČVUT.
19
5
.
Výběr technologií a nástrojů pro vývoj
Výběr
technologií byl silně ovlivněn zadáním a požadavky na systém. Popíšeme si
jednotlivé technologie, které byly použity pro vývoj aplikace. Stručně shrneme požadavky na systém. Hlavním požadavkem tedy bylo jednoduché ovládání, proto bylo rozhodnuto implementovat aplikaci pomocí textového rozhraní. Dalším požadavkem byl operační systém Microsoft Windows XP.
5.1 Technologie 5.1.1 C/C++ Programovací jazyk byl určen zadáním bakalářské práce. Jiný jazyk není příliš vhodný pro aplikaci, která má být navržena v textovém režimu. Aplikace je navržena pomocí objektově orientovaného návrhu (třídy, volání, …). Ovšem je zapotřebí použít i procedurální návrh. Půjde hlavně o funkce nízkoúrovňové, jako je snímání vstupu z kláves (volání systémového rozhraní API), vykreslování GUI na obrazovku pomocí ASCII Artu, atd. Dalším dobrým důvodem pro použití jazyka C/C++ je rychlost. Na rychlost a výkon je také kladen požadavek. 5.1.2 OCL (Oracle Class Library) OCL poskytuje přímé spojení k databázi Oracle. OCL přímo využívá volání OCI (Oracle Call Interface), kde OCI je nízkoúrovňové rozhraní pro práci s databází Oracle. OCL je tedy nadstavba OCI, pomocí které můžeme vyvíjet aplikace za pomoci vysokoúrovňového volání jazyka C++. OCL obsahuje třídy pro připojení k databázi, provádění SQL příkazů, ukládání záznamů, atd. Všechny třídy mají intuitivní a jednoduché rozhraní. OCL je napsáno v jazyce C++ s použitím Standardní knihovny C++. To umožňuje snadnou platformovou nezávislost.
OCL
je
podporováno
mnoha
kompilátory
a
vývojovými
nástroji
( Borland C++Builder, Microsoft Visual Studio, GCC ). OCL podporuje připojení k databázím 20
Oracle od verze 7.3 až po verzi 11g. V tomto případě používáme verzi Oracle 10 Express edition. Licence pro OCL je od 26.3.2009 open source, a to i pro komerční aplikace. Před 26.3.2009 byla licence freeware také pro komerční účely, ale bylo možné využívat pouze knihovnu nikoliv zdrojový kód. Bylo by možné použít přímo OCI, ale je to zbytečně komplikované oproti OCL. Z těchto důvodů byla vybrána pro vývoj knihovna OCL. 5.1.3 API (Application Programming Interface) Z API využíváme pouze funkce pro načítání vstupu z klávesnice. Knihovní funkce nebyly použity, protože pro tyto účely byly nevhodné. Nedokázaly přesně načítat rozšířené a řídící klávesy ze vstupu (např. klávesy F1, kombinace různých kláves např. CTRL+F2, atd.) Výhodou těchto funkcí je jejich rychlost, neboť jsou volány přímo ze systému. Další funkce postavené na API byly funkce pro zobrazení unicode a funkce pro práci s konzolovým oknem. Jako je změna barvy, zobrazení kurzoru atd. 5.1.4 SQL jazyk Pomocí jazyka SQL byly vytvořeny všechny dotazy na databázi.
5.2 Nástroje 5.2.1 Oracle SQL Developer SQL Developer je zdarma použitelný grafický nástroj pro vývoj v databázi Oracle. Pomocí tohoto nástroje můžeme vytvářet a optimalizovat dotazy. Lze vytvářet a spouštět skripty například pro vytvoření nového uživatele (a jejich práv) v jednom snadném kroku. Podporuje a umožňuje programování PL/SQL funkcí a procedur. Další předností produktu je získávání informací o databázi, se kterou pracujeme. Nástroj je mnohem pohodlnější, než webové rozhraní dodávané s Oracle databází. 5.2.2 E-R modelář Jde o jednoduchou aplikaci napsanou v jazyce Java. Slouží pro návrh datového modelu. Výstupem
tohoto
programu
je
SQL
skript,
který
je
možné
přímo
pomocí
Oracle SQL Developer spustit nad požadovanou databází. Aplikace je z dílny studentů ČVUT FEL.
21
5.2.3 Magic Draw UML Pomocí tohoto nástroje byla prováděna analýza problému. Pro analýzu bylo použito pouze diagramů USE-CASE a Class diagram. Software je licencován. Byla použita školní licenci, kterou fakulta má k dispozici. 5.2.4 Microsoft Visual Studio (MSVC) Produkt je licencován a opět ji byla využívat v rámci studentské licence (nelze použít pro komerční účely). MSVC je nástroj pro vývoj aplikací různých programovacích jazyků. V tomto případě postačoval pouze jazyk C/C++. Nástrojem je možné testovat, analyzovat nebo krokovat aplikaci, kterou vyvíjíme. 5.2.5 Subversion (SVN) SVN je open source nástroj pro správu zdrojového kódu. Obsahuje funkce pro verzování zdrojového kódu. Subversion použijeme na lokálním počítači.
22
6
.
Analýza a návrh implementace
Hlavní a podstatnou částí analýzy byly Use-Case diagramy popisující ovládání aplikace. Návrhy na ovládání byly konzultovány s kolegy knihovníky, aby návrh byl vytvořen podle jejich představ a požadavků. Class diagramy se během implementace vyvíjely. Především to bylo způsobeno optimalizací zdrojových kódů. V této kapitole uvedu pouze několik diagramů. Kompletní dokumentace analýzy je přiložena na CD ve formátu HTML, která byla automaticky vygenerována nástrojem Magic Draw UML.
6.1 Use-Case diagram Popíšeme si hlavní požadavky na systém a na konci podkapitoly uvedeme několik grafických případů užití a Class diagramů. 6.1.1 Přihlášení Knihovník se do systému přihlašuje pomocí uživatelského jména a hesla knihovny přidělené administrátorem serveru AKIS. Uživatel (knihovník) zadá název knihovny a heslo pro přihlášení. Server ověří uživatele a přihlásí jej do systému. 6.1.2 Změna hesla Uživateli je umožněno změnit si heslo do systému. Uživatel zadá původní heslo a pak zadá dvakrát nové heslo (druhé je pro ověření). V případě, že uživatel zapomene svoje heslo, musí požádat administrátora, aby mu heslo přenastavil. 6.1.3 Nastavení knihovny Každá knihovna má na serveru uložené informace o názvu knihovny, číslo knihovny (přidělené ministerstvem kultury) a jméno knihovníka. Tyto informace může měnit uživatel i administrátor. Pokud uživatel chce informace změnit, musí nejdříve zadat heslo, kterým se přihlašuje do systému, po ověří je mu umožněno informace změnit.
23
6.1.4 Pohyb a výběr položek menu V menu se uživatel pohybuje pomocí šipek (nahoru a dolu), popřípadě klávesami Home a End. Výběr položky menu se potvrdí klávesou ENTER. Návrat do menu vyšší úrovně se potvrdí klávesou ESC. Struktura menu je následující: I. Správa knihovny 1. Seznam knih a. Prohlížení b. Vložení nové knihy c. Zrušit / Upravit knihu 2. Seznam čtenářů a. Prohlížení b. Registrace nového čtenáře c. Zrušit / Upravit čtenáře 3. Správa výpůjček a. Seznam výpůjček b. Vypůjčit knihy c. Vrátit knihy d. Výpůjčky čtenáře 4. Historie výpůjček a. dle knihy b. dle datumu c. dle čtenáře II. Nastavení III.Změna hesla
Obrázek 6.1: Ukázka Use-Case „Historie výpůjček“ 24
6.1.5 Vkládání záznamů Při vkládání záznamů musí systém důkladně ošetřit vstup od uživatele. Pokud je třeba zadat číslo, musí systém ověřit, že bylo číslo opravdu zadáno, a že číslo neobsahuje neplatné znaky. Při vložení datumu opět systém musí ověřit platnost, zda není datum mimo rozsah platného formátu. Také při vkládání řetězců znaků musí systém umět ohlídat délku vstupního řetězce. 6.1.6 Vložení knihy, čtenáře Uživatel zadá číslo knihy (čtenáře). Systém ověří, zda zadané číslo není již v databázi uloženo. Pokud ano, vypíše hlášku o této skutečnosti do informačního pruhu. Poté uživatel vloží další informace o čtenáři (knize). V případě, že některé informace jsou povinné a uživatel je vyplní, musí být upozorněn systémem na tuto skutečnost. 6.1.7 Vypůjčení knihy Knihovník postupně zadávat čísla knih, které si čtenář chce vypůjčit. Knihovník zadá číslo knihy a potvrdí jej klávesou ENTER. Systém zobrazí název a spisovatele dané knihy (pro kontrolu). Systém předvyplní datum půjčení, knihovník jej může upravit nebo ponechat. Datum potvrdí klávesou ENTER. Systém knihu zařadí do výpůjček daného čtenáře. V tabulce se budou zobrazovat knihy, které byly čtenáři vypůjčeny v této dávce. Po ukončení vlákání knih, knihovník ukončí vkládání klávesou ESC. 6.1.8 Vrácení knihy Knihovník vybere ze seznamu čtenáře, který bude vracet knihy a výběr potvrdí klávesou ENTER. Poté systém zobrazí seznam všech knih, které má čtenář vypůjčené. Knihovník vybere knihu k vrácení a stiskne ENTER. Systém předvyplní datum vrácení a čeká, dokud jej knihovník nezmění nebo nepotvrdí. Knihovník je pak vyzván k zadání poznámky o stavu vrácené knihy. Po vrácení knihy ze seznamu vypůjčených knih, je odstraněna položka vrácené knihy. Pro ukončení vracení knih, knihovník stiskne klávesu ESC.
25
6.1.9 Historie výpůjček Systém eviduje historii všech ukončených výpůjček. Knihovní záznamy můžeme třídit dle vypůjčené knihy, dle čtenáře a podle datumu (popřípadě jeho rozsahu). 6.1.10 Při ztrátě spojení Veškerý datový přenos se serverem AKIS probíhá ihned. Žádná data nejsou ukládaná lokálně. Pokud nastane výpadek spojení se serverem, dojde ihned k zastavení systému a vypsání informace o skutečnosti, která nastala. Zároveň je událost uložena do souboru pro pozdější analýzu pádu.
Obrázek 6.2: Ukázka Use-Case "Správa výpůjček"
26
6.2 Class diagram Opět popíšeme hlavní části návrhu. Uvedeme pár ukázek class diagramů. Na obrázku níže je graficky znázorněna architektura aplikace.
Obrázek 6.3: Architektura AKIS Třídy můžeme rozdělit do tří kategorií: 6.2.1 Orientované na vstup a výstup Nejde přímo o třídy, jak je známe z objektového návrhu. Spíše jde o struktury a funkce, které zajišťují vstup z klávesnice a výstup na obrazovku. 6.2.1.1 CIO (Console Input Output)
Struktura obsahující základní funkce pro snímání vstupu z klávesnice, rozeznávání kontrolních kláves, změnu barvy textu, práce s kurzorem, výpis textu na obrazovku. Tyto funkce přímo volají systémové rozhraní API. 6.2.1.2 CLIB (Console Library)
Funkce, které testují vstupní stisky kláves a rozhodují, zda jde o řídící klávesy či nikoliv. Obsahuje funkce pro kontrolu správnosti zadaného datumu, převod z unicode na ascii kód. 6.2.1.3 GCO (Graphic Console Output)
Metody pro vykreslování oken (ASCII art), grafické metody pro vykreslení loga, hlavního okna, atd. 6.2.1.4 IOF (Input Output Functions)
Nejdůležitější třída, která zajišťuje získání textu, čísla, datumu a hesla od uživatele. Textové funkce vrací pole znaků zadaných od uživatele. Funkce hlídají korektnost zadávaných znaků.
27
6.2.1.5 Mess (Messages)
Metody, které vykreslují informace pro uživatele na informační pruh. Vykreslení nápovědy, nebo varování při chybném vstupu. 6.2.2 Orientované na spojení s databází Třídy zajišťují spojení s databází Oracle. Pomocí nich jsou odesílány SQL dotazy na server a jsou přijímány odpovědi od serveru, které jsou předávány jiným třídám ke zpracování. 6.2.2.1 Table View
Nejdůležitější třída, která má za úkol graficky reprezentovat data ze serveru. Konstruktor nastaví SQL dotaz a strukturu, která říká, jaké sloupce se mají z dotazu zobrazit. Třída zobrazí tabulku dat, ve které je možné se pohybovat. Tabulka reaguje na různá přerušení (stisknutí speciálních kláves), která volající třída dále zpracovává. 6.2.2.2 Login
Tato třída zajistí přihlášení do databáze. Snímá vstup od uživatele (uživatelské jméno, heslo, adresa serveru) a reaguje na případné události, jako je nesprávné heslo, nedostupný server a podobně. 6.2.2.3 Connect AKIS
Zajišťuje spojení s databází Oracle pomocí OCI rozhraní. 6.2.2.4 Setting
Třída je zodpovědná za změnu údajů o knihovně, ověřuje uživatele, který se snaží údaje změnit. 6.2.2.5 Change password
Pomocí této třídy, může oprávněný uživatel změnit heslo svého uživatelského účtu. Třída ověří staré heslo a pak požádá o zadání nového hesla. 6.2.3 Orientované na obsluhu požadavků Ostatní třídy jsou pouze určeny k tomu, aby přijímaly požadavky od uživatele a dle potřeb požadavky obsluhovaly. Přitom využívají (děděním, přímým voláním) třídy a funkce uvedené výše.
28
6.2.3.1 Menu
Zajišťuje vykreslení a práci s menu (pohyb a výběr). 6.2.3.2 Common Table
Třída obsahující společné funkce pro manipulaci se záznamy z databáze a jejich vykreslení na obrazovku a reakci na vstup od uživatele. Od této třídy dědí ostatní níže uvedené třídy. 6.2.3.3 Historie Knih, Seznam Knih, Seznam Čtenářů, Správa výpůjček
Každá třída řeší svůj vlastní problém, pro který byla navrhnuta. Třídy ale navzájem spolupracují.
Obrázek 6.4: Class diagram "Databáze"
29
Obrázek 6.5: Class diagram "Vstupně / Výstupní třída"
Obrázek 6.6: Class diagram "Menu" 30
6.3 Datový model Návrh datového modelu ve finální podobě je velmi jednoduchý. Obsahuje celkem 4 tabulky, ale nejvíce se používají 3 z nich. Tabulka nastavení je použita minimálně, jsou v ní uloženy informace o uživatelském účtu (knihovně). Používané tabulky jsou tedy jenom 3, na druhou stranu SQL dotazy do databáze jsou komplikovanější. Ale pomocí nich je možné z databáze získat téměř jakékoliv informace, které pro správu knihovny vyžadujeme. V tabulce Seznam knih jsou kromě informace o knize ještě dva atributy, které určují číslo čtenáře a datum vypůjčení. Pokud jsou tyto poslední dva záznamy prázdné, kniha není vypůjčena. Pokud se odstraňuje kniha, jsou kaskádově odstraněny všechny odkazy spojené s touto knihou. Po odstranění záznamu je kniha (a její historie) nenávratně odstraněna. Pokud odtajňujeme čtenáře, pak jeho odkazy do tabulek (kromě tabulky Historie) nejsou mazány kaskádově. A to proto, že kdyby měl čtenář nějakou knihu vypůjčenou a knihovník se čtenáře chystal odstranit, nezjistil by později, že čtenář měl ještě nějaké knihy vypůjčené. Tabulka Historie obsahuje číslo knihy a čtenáře, datum vypůjčení a vrácení, a také informaci o tom, v jakém stavu byla kniha vrácena. V tabulce se stejné záznamy mohou vyskytovat vícekrát (jeden čtenář si může půjčit jednu a tu samou knihu například třikrát). Tabulka Historie je postupně mazána administrátorem (například jednou za tři měsíce odstraní záznamy starší 5 let).
Obrázek 6.7: Datový model 31
6.4 Postup při implementaci Před samotnou implementací byly nainstalovány vývojové a pomocné nástroje, které byly nastaveny a odzkoušeny. Časově náročné bylo správně nastavit C/C++ kompilátor a linker. Neboť bylo použito několik nestandardních knihoven pro práci s databází, které musely být nastaveny tak, aby vývojové prostředí MS Visual Studia dokázalo s těmito knihovnami pracovat a odlaďovat naši aplikaci. V prvé řadě, bylo zapotřebí vytvořit a otestovat funkce, které zajišťovaly spojení s databází. Poté vytvořit třídy (funkce), pro snímání vstupu z klávesnice a grafický výstup na obrazovku. Po otestování základních vstupně / výstupních funkcí, přišla na řadu implementace tříd řešící samotný problém správy knihovny. Problém byl rozdělen do modulů (tříd), kde každý modul byl zodpovědný za určitý úsek řešeného problému. Každý modul byl zvláště testován. V poslední fázi došlo ke sloučení všech modulů do jednoho funkčního celku a jeho odladění, které probíhalo za použití nástrojů obsažené v Microsoft Visual Studiu. Další částí bylo testování celého systému, tomuto testování je věnována další kapitola. Po prvních testech bylo třeba vytvořit instalační aplikaci pro klientskou část systému. A tuto klientskou aplikaci nainstalovat na počítač, kde není server AKIS nainstalovaný lokálně. Pomocí nástroje ProcMon (http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx) byly zjištěny, soubory a knihovny, které jsou potřebné pro správný chod aplikace. Tyto soubory byly přidány do instalace klientské části. Klientské části byly testovány, jak na virtuálních strojích s operačním systémem Windows XP, tak na jiných strojích, kde server AKIS a ostatní klientské aplikace byly na společné Ethernetové síti LAN.
32
7
.
Testování
V této kapitole si popíšeme postup, kterým byl celý systém AKIS testován. Rozebereme různé situace, které by mohly vést k pádu systému a jak tyto události byly ošetřeny. Testování probíhalo ve třech fázích. První fáze testování probíhala již při samotném vývoji (pro implementaci byl zvolen modulární model). Každý z modulů byl samostatně testován a odlaďován. V druhé fázi se testoval systém jako celek. A nakonec byl použit test použitelnosti (usability test) aplikace. A jako další forma testování je pilotní verze systému, která běží od 5.6.2009 v Obecní knihovně Neznašov.
7.1 Ruční testování Uvedeme si kategorie ručního testování, které probíhaly. Ruční testování probíhalo ve všech třech fázích testování. 7.1.1 Test zobrazených dat v tabulce V tomto testu byla testována korektnost zobrazených dat v tabulkách. Implementačně byla použita jedna třída, která zajišťovala vykreslení dat do tabulky a pohyb v ní. Jaké data se mají zobrazovat, určoval konstruktor dané třídy. Testování muselo probíhat ručně. Byly testovány reakce na klávesy, správnost překreslování při pohybu v tabulce, korektnost zobrazení po odstranění dat z tabulky. 7.1.2 Test vkládání hodnot ze vstupu od uživatele 7.1.2.1 Řetězec znaků
Ručně se testovalo, zda stisky jednotlivých znaků neodpovídají řídícím klávesám. Testovalo se správné zobrazení textu, jehož velikost byla větší než graficky přidělená oblast. A důležitou části testu bylo ověření, zda to, co uživatel zadal, bylo správně uloženo v paměti.
33
7.1.2.2 Celočíselný vstup
Testovalo se, zda vstup reaguje pouze na stisky kláves čísel 0-9. Další postup při testování probíhal podobně jako u testu řetězce znaků. 7.1.2.3 Datum
Zde bylo použito systémové volání na test správnosti vloženého datumu. Funkce pouze naplnila systémovou strukturu datumu a zavolala systémovou funkci getDateFormat(), jejíž výstup byl testován. 7.1.3 Test grafického vykreslení položek Opět bylo nutno tento test provést ručně. Kontrolovala se správnost překreslování komponent systému (menu, informační pruh, tabulky, vkládací pole). Testovala se správnost nastavení barev a zda se obrazovka tzv. „nerozsypala“. 7.1.4 Test na rekci systému při ztrátě spojení Výpadky spojení se serverem nejsou častou událostí, nicméně jejich podchycení je důležité. Tyto výpadky musely být simulovány, neboť nejsou častým jevem. V testu byly podchyceny i situace, při poškození datového modelu uloženého v databázi (zpřeházené sloupce, změna datových typů, nepřítomnost tabulky, atd.). Průběh testu: 7.1.4.1 Ztráta spojení
Aplikace byla spuštěna a provádělo se běžné testování (např. se prohlížel seznam knih). Poté došlo k zastavení serveru AKIS a byly sledovány rekce systému na ztrátu spojení. Test byl prováděn několikrát, pokaždé z jiného modulu (Historie knih, Správa výpůjček, atd.). 7.1.4.2 Chybný datový model
Aplikace byla opět spuštěna, ale během užívání se v datovém modelu změnilo pořadí sloupců (a jejich názvy) a byly přejmenovány datové tabulky (popřípadě úplně odstranily). Pravděpodobnost, že dojde k takovéto chybě je minimální a je spíše způsobena administrátorem serveru.
7.2 Automatické testování Systém je navržen hlavně na interakci s uživatelem, neprovádí se zde složité výpočty. Takže neobsahuje funkce, které by bylo třeba otestovat pomocí Unit testu. Jako automatické testování byla použita tzv. „Dump monkey“. Testovací program náhodně generuje stisky kláves. A přitom testujeme, zda testovací aplikace nezpůsobí pád díky náhodnému vstupu.
34
7.3 Test použitelnosti „Usability test“ Test použitelnosti byl prováděn na 5 testerech. Především byli preferováni testeři s minimální (nebo lehce pokročilejší) znalostí základů práce s počítačem (systém je určen především pro ně). V příloze je osnova úkolů spojená s usability testem a dotazník, který byl respondentům předložen k vyplnění. Věkový průměr respondentů je přibližně 35 let. Test probíhal na přenosném počítači P4 2.2 GHz, 700 MB RAM. V prvé řadě byl spuštěn server AKIS a po jeho spuštění i klientská část aplikace. Tester byl posazen k počítači a byly mu předloženy na papíře úkoly pro vypracování. Celkem bylo 6 základních úkolů, týkajících se základní správy knihovny.
7.4 Testovací data Testovací data obsahovala přibližně 300 záznamů knih, 7 záznamů čtenářů a několik položek v tabulce Historie. Na instalačním CD je skript, který po spuštění vytvoří testovací verzi knihovny (přihlašovací jméno: demo, heslo: demo).
7.5 Výsledky testu Během testu byla odhalena řada chyb. Po každém opravení chyby proběhlo celé testování znova od začátku. Test použitelnosti byl nad očekávání úspěšný, žádný ze zúčastněných osob neměl závažné problémy s ovládáním aplikace (a to ani lidé, kteří počítač používají minimálně). Někteří uživatelé v prvním úkolu váhali, ale v dalších úkolech už postupovali intuitivně.
35
8
.
Závěr a hodnocení
Zadání
bakalářské práce bylo přes specifické požadavky relativně obecné, proto byly
hlavní požadavky upřesněny komunikací se zadavatelem systému. Systém byl navrhnut na základě analyzovaného existujícího softwaru. Hlavní požadavek na jednoduché ovládání byl splněn v maximální možné míře. Požadavky na evidenci dokumentů a jejich správu byly splněny dle požadavků zadavatele. Byly přidány i funkce nad rámec požadavků, které ulehčují úkoly administrátora serveru (změna hesla, změna informací o knihovně). Implementace byla podle zadání provedena kompletně v jazyce C/C++. Během implementace byla objevena marginální chyba v knihovně OCL. Z těchto důvodů byl návrh nepatrně zkomplikován. Testování nového systému zabralo podstatnou část vývoje a testování bude pokračovat při reálném nasazení v provozu. Návrhy na zlepšení ovládání či vzhled aplikace budou určovány pilotními uživateli systému. Výsledkem bakalářské práce jsou instalační soubory (uložené na přiloženém CD), skripty a dokumentace projektu (včetně instalační a uživatelské příručky). Od 5.6.2009 je systém nasazen jako pilotní verze v Obecní knihovně Neznašov. Kde probíhá konečná fáze testování (testování použitelnosti). Po dokončení této fáze bude systém nasazen i do ostatních knihoven zadavatele práce. Systém bude i nadále vyvíjen. Dalším návrhem na rozšíření je implementace tiskových sestav a vytvoření administrátorského nástroje (pomocí grafického rozhraní) pro snadnější zprávu serveru. Projekt bude pokračovat jako diplomová práce. Data jsou ukládána na databázovém serveru, proto je možné vytvořit systém jako webovou aplikaci. Webová aplikace by také spravovala každodenní činnost v knihovně, ale byla implementována pomocí moderních technologií. Dále by bylo možné informace o knihách (všech zúčastněných knihoven) publikovat na internetu jako online katalog.
36
9
.
Použitá literatura [1]
PETZOLD, Charles. Programování ve Windows : programování WIN 32 API. [s.l.] : [s.n.], 1999. 1067 s. ISBN 80-7226-206-8.
[2]
JOSUTTIS, Nocolai M. Standardní knihovna a STL : Kompletní průvodce. [s.l.] : [s.n.], 2005. 743 s. ISBN 80-251-0511-1.
[3]
POKORNÝ, Jaroslav, HALAŠKA, Ivan. Databázové systémy. Praha : ČVUT, 2004. 148 s.
[4]
Dokumentace OCL, 2009 [cit. 2009-01-12]. Dostupný z WWW: http://download.devart.com/ocl/oclpdf.zip
[5]
Knihovní systém LANius, 2009 [cit. 2009-04-12]. Dostupný z WWW: http://www.lanius.cz/
[6]
Knihovní systém DAWINCI, 2000 [cit. 2009-05-18]. Dostupný z WWW: http://www.ikaros.cz/node/1041
[7]
Knihovní systém DAIMON, 2008 [cit. 2009-05-18]. Dostupný z WWW: http://www.sefira.cz/reseni/daimon/doc/20070118%20DAIMON_popis %20systemu.pdf
[8]
Knihovní systém ANTIX, 2004 [cit. 2009-05-20]. Dostupný z WWW: http://www.antix.prodejce.cz/index.htm
[9]
Knihovní systém Perfect Library 3.0, 2007 [cit. 2009-05-21]. Dostupný z WWW: http://www.ph-software.com/
[10]
APOST systém, 2004 [cit. 2009-02-4]. Dostupný z WWW: http://blog.janik.cz/files/LinuxHall-CPOST.pdf
[11]
Oracle SQL Developer, [cit. 2009-05-30]. Dostupný z WWW: http://www.oracle.com/global/cz/solutions/sme/developers.html
[12]
Oracle Express Edition 10g, 2008 [cit. 2008-10-7]. Dostupný z WWW: http://www.oracle.com/technology/products/database/xe/index.html
[13]
Internetizace knihoven, 2004 [cit. 2009-06-1]. Dostupný z WWW: http://web.mvcr.cz/archiv2008/micr/files/1877/pik_prezentace.ppt
37
10
.
Seznam příloh Příloha A – Objednávka na vytvoření systému Příloha B – Obsah instalačního CD Příloha C – Instalační příručka Příloha D – Uživatelská příručka Příloha E – Ukázka kódu Příloha F – Ukázky aplikace Příloha G – Usability test
38
Příloha A : Objednávka
39
Příloha B : Obsah přiloženého CD
➢ Instalace ⌐ ⌐ ⌐
server klient SQL skripty – pro správu serveru AKIS
➢ Analýza ⌐ ⌐
dokumentace – vygenerovaný report z Magic Draw UML návrh GUI
➢ Dokumentace
40
Příloha C :
Celý
Instalační příručka
systém se skládá z aplikačního serveru AKIS (Oracle Express Edition 10g) a
klientských aplikací AKIS. V celém systému musí být nainstalovaný alespoň jeden server AKIS, ke kterým se budou klientské aplikace AKIS přihlašovat.
C.1
Instalace serveru AKIS
Na instalačním CD ve složce Instalace spusťte soubor serverAKIS.exe (pro instalaci musíte mít administrátorské oprávnění). Instalátor Vás provede celou instalací serveru, která se skládá ze čtyř jednoduchých kroků: •
potvrdíte licenční podmínky produktu Oracle Express Edition 10g;
•
zvolíte cestu, kam se má server AKIS (databáze Oracle) nainstalovat. Doporučujeme cestu nechat neměnnou a mít alespoň 2GB volného místa na disku;
•
poté zadáte heslo administrátora serveru AKIS (heslo si dobře zapamatujte);
•
nakonec potvrdíte instalaci.
Po instalaci serveru AKIS se server automaticky spustí. Server je nakonfigurován na přijímání lokálních požadavků z adresy 127.0.0.1 (localhost). Pro změnu adresy (na které má server přijímat požadavky) serveru postupujte dle dokumentace Oracle Express edition.
C.2
Instalace klienta AKIS
Na instalačním CD ve složce Instalace spusťte soubor clientAKIS.exe (pro instalaci musíte mít administrátorské oprávnění). Instalátor od Vás bude pouze chtít potvrzení cesty instalace. Po nainstalování se klient AKIS připraven k použití.
C.3
Vytvoření nové knihovny
Na instalačním CD ve složce Instalace je soubor createNewLibrary.sql, který obsahuje SQL skript. Tento skript administrátor spustí na serveru AKIS. Pouze ve skriptu změní název knihovny a heslo. Po provedení SQL skriptu, je knihovna připravena k přihlášení.
41
Příloha D :
D.1
Uživatelská příručka
Základní ovládání
Klávesy pro ovládání a jejich význam Klávesa Enter Esc Tab Ctrl+F
Funkce Potvrzení výběr / vstupu Návrat zpět / zrušení výběru Přepínání mezi tabulkami / přesun mezi položkami při vkládání datumu Filtrace záznamů
Home, End PgUp, PgDdown
Pohyb v tabulce a při vkládání textu
↑,↓ Del Backspace
Mazání znaku ze vstupu
Práce s tabulkami Tabulka se skládá z nadpisů sloupců z posuvníku – zobrazuje aktuální polohu vybraného záznamu v tabulce dat (začátek, konec, střed, ...) ze záznamů – aktuálně vybraný záznam je podsvícen bílou barvou Pohyb v tabulce − základní pohyb je šipkami nahoru a dolu, vždy o jeden záznam − pro zrychlený posun v tabulce, můžete použít klávesu PGUP pro směr nahoru a klávesu PGDOWN pro pohyb směrem dolu − pokud se chcete přemístit na úplný začátek nebo konec tabulky stiskněte klávesu HOME pro přesun úplně na začátek a nebo klávesu END pro přesun na úplný konec tabulky − odchod z tabulky provedete stiskem klávesy ESC − pro potvrzení výběru záznamu stiskněte klávesu ENTER Práce s menu − menu je ovládáno pomocí šipek nahoru a dolu, při stisku šipky nahoru se posune výběr menu o jednu pozici směrem nahoru a opačně při stisku klávesy dolu − pro výběr první položky menu můžete použít klávesu HOME a naopak klávesu END pro výběr poslední položky v menu − výběr menu potvrdíte stiskem klávesy ENTER 42
− návrat z aktuálního menu provedete stisknutím klávesy ESC Vkládání textu (čísla) − pokud Vás systém vyzve k vyplnění textu (čísla), poznáte to podle blikajícího kurzoru (na tomto místě se bude zobrazovat Vámi napsaný text), před nebo nad místem, kam budete vkládat text, je vždy umístěn bílý nadpis, který Vás informuje o tom, jaký údaj máte vyplnit (např. jméno, příjmení, adresa, atd.) − mazání vložených znaků můžete provést stiskem kláves DELETE a BACKSPACE, v prvním případě bude smazán znak pod kterým bliká kurzor, v druhém případě se smaže znak, který leží nalevo od kurzoru − kurzorem můžete pohybovat pomocí šipek doprava a doleva − pokud je text delší než viditelná oblast, bude text automaticky posunován − pokud již nejde vložit další znak, znamená to, že pole už překročilo povolenou kapacitu a další vkládání textu není možné − pro potvrzení vloženého textu stiskněte klávesu ENTER − pro návrat zpět stiskněte klávesu ESC Vkládání datumu − datum je rozdělen na tři (den.měsíc.rok) části oddělené tečkou − při požádání vložení datumu je kurzor v části „den“ pomocí čísel vložíte den, pokud je den dvojčíslí, pak se kurzor posune automaticky do další části. Pokud ne, musíte se posunout ručně stiskem klávesy TAB. − v druhé části zadáte měsíc (opět platí stejná podmínka o přesunu do další části) − nakonec vložíte rok a celý datum potvrdíte klávesou ENTER, pokud vaše datum není plané, přesune se kurzor zpět na začátek do první části „den“ − pohyb mezi jednotlivými částmi datumu je možné pomocí kombinace kláves TAB (dopředu), nebo TAB + SHIFT (zpět) Filtrace záznamů − v tabulce můžete hledat záznamy pomocí funkce filtrace − filtraci nastavíte stiskem kláves CTRL+F − zobrazí se název sloupce, ve kterém se bude hledat − sloupec můžete změnit pomocí šipek nahoru a dolu − po výběru sloupce stiskněte ENTER − do políčka filtr zadáte hledaný řetězec a potvrdíte jej klávesou ENTER − poté systém zobrazí v tabulce pouze data, která odpovídají zadanému filtru − formát filtru − třídění záznamů vzestupně − pokud je položka „filtr“ prázdná, seřadí se tabulka vzestupně podle zvoleného sloupce − hledání záznamů začínající textem − při zadání neprázdného textu systém zobrazí záznamy, které začínají právě vloženým textem − hledání libovolného textu − pro hledání libovolného textu obsaženého v záznamu použijeme řídící znak %, které říká že místo procenta může být kterýkoliv jiný text − například „%noc“ najde všechny záznamy obsahující slovo „noc“ (ve zvoleném sloupci) − hledání podle začátečního znaku − do položky filtr vložíme pouze jeden požadovaný znak − příklad: zadaný filtr „A“ vypíše všechny záznamy začínající znakem A(a) − hledání nerozeznává velká a malá písmena, ale je citlivý na porovnání diakritiky
43
D.2
Vložení nové knihy
− v hlavním menu vybereme položku: „Správa knihovny - Seznam knih – Vložení nové knihy“ − zadejte přírůstkové číslo nové knihy a stiskněte ENTER − zadejte spisovatele a stiskněte ENTER − zadejte název a stiskněte ENTER − takto vyplňte všechny požadované položky − přechod mezi položkami je umožněn klávesami ENTER směrem dopředu a ESC směrem dozadu − pokud jste na poslední položce a stisknete ENTER, bude kniha uložena do systému − pokud jste na první položce a stisknete ESC, ukončíte režim vkládání a vrátíte se zpět do menu − při potvrzení poslední položky je kniha uložena a zobrazena v horní tabulce − prohlížení aktuálně zapsaných knih lze pomocí klávesy TAB, kdy se přepnete do režimu pohybu v tabulce, dalším stisknutím klávesy TAB se vrátíte zpět do režimu vkládání D.3
Vložení nového čtenáře
− v hlavním menu vybereme položku: „Správa knihovny - Seznam čtenářů – Registrace nového čtenáře“ − zadejte registrační číslo čtenáře a stiskněte ENTER − zadejte všechny požadované položky a každou z nich potvrďte klávesou ENTER − přechod mezi položkami je umožněn klávesami ENTER směrem dopředu a ESC směrem dozadu − pokud jste na poslední položce a stisknete ENTER, bude čtenář uložen do systému − pokud jste na první položce a stisknete ESC, ukončíte režim vkládání a vrátíte se zpět do menu − při potvrzení poslední položky je čtenář uložen a zobrazen v horní tabulce − prohlížení zapsaných čtenářů lze pomocí klávesy TAB, kdy se přepnete do režimu pohybu v tabulce, dalším stisknutím klávesy TAB se vrátíte zpět do režimu vkládání D.4
Zrušení / upravení knihy
− v hlavním menu vybereme položku: „Správa knihovny - Seznam knih – Zrušit / Upravit knihu“ − pohybem v tabulce vyberte záznam k upravení a stiskněte ENTER − zobrazí se vám informace o knize − položky upravujete podobně jako při vkládání knih − pokud chcete záznam odstranit, vyberte ho v tabulce a stiskněte klávesu DELETE − systém se vás zeptá, zda chcete opravdu záznam odstranit − šipkami vpravo / vlevo vyberete možnost ANO / NE a stiskněte ENTER − poté bude záznam odstraněn − pro hledání záznamu můžete použít funkci filtrace − klávesou ESC se vrátíte zpět do menu
44
D.5
Zrušení / upravení čtenáře
− v hlavním menu vybereme položku: „Správa knihovny - Seznam čtenářů – Zrušit / Upravit čtenáře“ − pohybem v tabulce vyberte záznam k upravení a stiskněte ENTER − zobrazí se vám informace o čtenáři − položky upravujete podobně jako při registraci čtenáře − pokud chcete záznam odstranit, vyberte ho v tabulce a stiskněte klávesu DELETE − systém se vás zeptá, zda chcete opravdu záznam odstranit − šipkami vpravo a vlevo vyberete možnost ANO / NE a stiskněte ENTER − poté bude záznam odstraněn − pro hledání záznamu můžete použít funkci filtrace − klávesou ESC se vrátíte zpět do menu D.6
Vypůjčení knih
− v hlavním menu vybereme položku: „Správa knihovny – Správa výpůjček – Vypůjčit knihy“ − šipkami vyberte čtenáře a stiskněte ENTER − můžete použít funkci filtrace − zadejte číslo knihy k vypůjčení a stiskněte ENTER − systém zobrazí spisovatele a název knihy (pro kontrolu) − pro stornování knihy stiskněte ESC − dále potvrďte nebo upravte předvyplněný datum − při potvrzení je výpůjčka zobrazena v horní tabulce − prohlížení aktuálně vypůjčených knih lze pomocí klávesy TAB, kdy se přepnete do režimu pohybu v tabulce, dalším stisknutím klávesy TAB se vrátíte zpět do režimu vkládání − klávesou ESC se vrátíte zpět do menu D.7
Vrácení knihy
− v hlavním menu vybereme položku: „Správa knihovny - Správa výpůjček - Vrátit knihy“ − šipkami vyberte čtenáře a stiskněte ENTER − můžete použít funkci filtrace − v seznamu vypůjčených knih vyberte knihu k vrácení a potvrďte ji klávesou ENTER − potvrďte datum vrácení knihy − můžete vložit poznámku o stavu a poznámku potvrďte klávesou ENTER − klávesou ESC se vrátíte zpět do menu D.8
Seznam všech vypůjčených knih
− v hlavním menu vybereme položku: „Správa knihovny - Správa výpůjček – Seznam výpůjček“ − zobrazí se seznam všech aktivních výpůjček − můžete použít funkci filtrace − klávesou ESC se vrátíte zpět do menu
45
D.9
Vypůjčené knihy čtenáře
− v hlavním menu vybereme položku: „Správa knihovny - Správa výpůjček – Výpůjčky čtenáře“ − šipkami vyberte čtenáře a stiskněte ENTER − můžete použít funkci filtrace − klávesou ESC se vrátíte zpět do menu D.10
Historie výpůjček
− dle knihy − v hlavním menu vybereme položku: „Správa knihovny - Historie výpůjček – dle knihy“ − šipkami vyberte knihu a stiskněte ENTER − můžete použít funkci filtrace − zobrazí se seznam všech čtenářů, kteří měli knihu půjčenu − klávesou ESC se vrátíte zpět na výběr knihy a dalším stiskem ESC zpět do menu − dle čtenáře − v hlavním menu vybereme položku: „Správa knihovny - Historie výpůjček – dle čtenáře“ − šipkami vyberte čtenáře a stiskněte ENTER − můžete použít funkci filtrace − zobrazí se seznam všech knih půjčené čtenářem − dle datumu − v hlavním menu vybereme položku: „Správa knihovny - Historie výpůjček – dle datumu“ − můžete − zadat dva datumy, které budou určovat rozsah vyhledávání (vyhledávání dle datumu půjčení) − zadat jedno datum a druhé nechat nevyplněné, potom se budou zobrazovat záznamy od zadaného datumu a výše D.11
Změna hesla
− v hlavním menu vybereme položku: „Změna hesla“ − zadejte původní heslo a stiskněte klávesu ENTER − zadejte nové heslo a stiskněte klávesu ENTER − potvrďte znovu nové heslo a stiskněte klávesu ENTER − pokud jste heslo zapomněli, kontaktujte podporu D.12
Nastavení informací o knihovně
− v hlavním menu vybereme položku: „Nastavení“ − zadejte heslo a stiskněte klávesu ENTER − vyplňte údaje o knihovně − přechod mezi položkami je umožněn klávesami ENTER směrem dopředu a ESC směrem dozadu − pokud jsme na poslední položce a stisknete ENTER, informace o knihovně se uloží − pokud jsme na první položce a stisknete ESC, vrátíte se zpět do Hlavního menu
46
Příloha E :
Ukázka kódu
Ukázka části třídy, která vykresluje data na obrazovku pomocí ASCII artu. #include "struct_table.h" class TableView { private: STRUCT_TABLE *stTABLE; ocl::OraQuery *query; UINT8 uWidth; UINT8 uWinPosition; LONG lRecordCount; UINT8 uCountColumn; UINT8 uScrollPosition; void void void void void void void void void void void
DrawTitle(); DrawWindow(); DrawItem(const char *_Format, UINT8 uColumn); DrawLine(UINT8 uY, BOOL bIntenziv); SetPrefixFormat(const char _prefix, char *_Format); DrawScroll(); SetRecordCount(); DrawReScroll(); DrawTable(); DrawSkeletTable(); CleanTable();
public: void SetWidth(); void moveUP(); void moveDOWN(); void movePGUP(); void movePGDOWN(); void moveHOME(); void moveEND(); void Update(); void UpdateLine(); void UpdateAfterDelete(); void setViewRecord(UINT8 uCountView); UINT8 getWindowPosition(); long getRecordCount(); TableView(ocl::OraQuery *_query, STRUCT_TABLE *_stTable); TableView(ocl::OraQuery *_query, STRUCT_TABLE *_stTable, long lRecordNo, UINT8 uWinPos); ~TableView(void); };
void TableView::DrawLine(UINT8 uY, BOOL bIntenziv) { UINT8 *_uWidthColumn = stTABLE->uWidthColumn; UINT8 uX = stTABLE->uX+1; uY += stTABLE->uY-1; if (bIntenziv) cSetColor(CTB_INVERT_LIGHT_TEXT); else cSetColor(CTB_LIGHT_TEXT); cGotoXY(uX,uY+3); cClrArea(uWidth-2); for (UINT8 i = 0; i< query->fieldCount(); i++) { cGotoXY(uX,uY+3); DrawItem(NULL, i); uX += *_uWidthColumn + 1; _uWidthColumn++; } }
47
Příloha F Ukázka aplikace :
48
Příloha G :
Úkoly pro test použitelnosti 1. Přihlášení ○ přihlaste se do systému uživatelským jménem „user“ a heslem „user“
1. Práce se seznamem knih ◦ zobrazte seznam všech knih ◦ vyhledejte všechny knihy spisovatelky „Brůhové“
2. Registrace nového čtenáře ◦ zaregistrujte se jako nový čtenář
3. Vypůjčení knih ◦ vypůjčete si knihy číslo 50 a 300
4. Vrácení knihy ◦ vraťte všechny vaše vypůjčené knihy
5. Historie výpůjček ◦ zobrazte čtenáře, kteří měli vypůjčenu knihu číslo 52 ◦ zobrazte všechny výpůjčky, které vámi byly vypůjčené
49
Usability test
Test použitelnosti aplikace AKIS
1. Jsem ○ muž ○ žena 2. Pracuji ◦ nepracuji ◦ manuální práce ◦ podnikatel ◦ důchodce ◦ student ◦ technické zaměření ◦ jiné, prosím uveďte _____________________ 3. Počítač používám ◦ co to je? ◦ nevyužívám vůbec ◦ občas ◦ běžně ◦ živím se tím 4. Považuji se za počítačového ◦ analfabeta ◦ nenáročný uživatel ◦ uživatele ◦ pokročilého uživatele ◦ experta 5. Jak hodnotíte grafický návrh aplikace ◦ 1 - výborná ◦ 2 ◦ 3 ◦ 4 ◦ 5 - nejhorší co jsme kdy viděl/a 6. Jak hodnotíte ovládání aplikace ◦ zbytečně komplikované ◦ nechá se s tím pracovat ◦ příjemné ◦ zbytečně jednoduché
50
7. Jak hodnotíte přehlednost dat v tabulkách ◦ příliš nepřehledné ◦ nechá se z toho i něco vyčíst ◦ přehledné 8. Používali byste raději myš? ◦ jaká myš? ◦ ano, bylo by to lepší ◦ není třeba ◦ je mi to jedno ◦ rozhodně ne 9. Nějaký návrh jak zlepšit aplikaci (ovládání, vzhled, …) ◦ ne ◦ ano, upřesněte ______________________________________________ ______________________________________________ ______________________________________________
51