ˇ e vysok´e uˇcen´ı technick´e v Praze Cesk´ Fakulta elektrotechnick´a
Bakal´aˇrsk´a pr´ace
Informaˇ cn´ı syst´ em pro poskytovatele internetu a IP telefonie Marek Suˇsick´y
Vedouc´ı pr´ace: Valenta Michal Ing., Ph.D.
Studijn´ı program: Elektrotechnika a informatika strukturovan´ y bakal´aˇrsk´ y Obor: Informatika a v´ ypoˇcetn´ı technika srpen 2007
ii
Podˇ ekov´ an´ı Chtˇel bych podˇekovat sv´e rodinˇe za trpˇelivost, kterou se mnou mˇela. D´ale pak vedouc´ımu pr´ace Ing. Michalu Valentovi za podnˇetn´e pˇripom´ınky a zamˇestnanc˚ um firmy CERBEROS s.r.o. za otestov´an´ı aplikace a dod´av´an´ı nov´ ych n´apad˚ u. iii
iv
Prohl´ aˇ sen´ı Prohlaˇsuji, ˇze jsem svou bakal´aˇrskou pr´aci vypracoval samostatnˇe a pouˇzil jsem pouze podklady uveden´e v pˇriloˇzen´em seznamu. Nem´am z´avaˇzn´ y d˚ uvod proti uˇzit´ı tohoto ˇskoln´ıho d´ıla ve smyslu §60 Z´akona ˇc. 121/2000 Sb., o pr´avu autorsk´em, o pr´avech souvisej´ıc´ıch s pr´avem autorsk´ ym a o zmˇenˇe nˇekter´ ych z´akon˚ u (autorsk´ y z´akon).
V Mlad´e Boleslavi dne 14.8. 2007
.............................................................
v
vi
Abstract In my thesis I was concerned about creating information system for the internet service and telephone network providers. Following the analysis of the current scheme I designed a new one, which provides the evidence of customers, the evidence of their accounts, all possible defects and also the evidence of the actual internet users. It automatically charges all phonecalls and creates summary statistics. It’s more efficient and furthermore much easier to apply.
Abstrakt Tato pr´ace se zab´ yv´a vytvoˇren´ım informaˇcn´ıho syst´emu pro poskytovatele internetu a telefonn´ıch sluˇzeb. Na z´akladˇe anal´ yzy st´avaj´ıc´ıho syst´emu je navrˇzen nov´ y syst´em. Poskytuje podporu pro evidenci z´akazn´ık˚ u, evidenci jejich faktur, z´avad a pˇripojen´ ych zaˇr´ızen´ı. Um´ı automaticky u ´ˇctovat probˇehl´e hovory a generovat souhrn´e statistiky. Je v´ ykonnˇejˇs´ı a l´epe rozˇsiˇriteln´ y.
vii
viii
Obsah Seznam obr´ azk˚ u
xi
Seznam tabulek
xiii
´ 1 Uvod 1.1 C´ıl pr´ace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Skuteˇcnosti ovlivˇ nuj´ıc´ı tvorbu syst´emu . . . . . . . . . . . . . . . . . . . . . . .
1 1 1
2 Popis probl´ emu, specifikace c´ıle 2.1 Reˇserˇsn´ı zpracov´an´ı existuj´ıc´ıch implementac´ı . . . . . . . . . . . . . . . . . . .
2 2
3 Anal´ yza a n´ avrh ˇ reˇ sen´ı 3.1 Anal´ yza st´avaj´ıc´ıho ˇreˇsen´ı . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.1 Dokumentace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.2 Kritika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.2.1 Program . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.2.2 DB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.3 N´avrhy u ´prav . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Anal´ yza nov´e datab´aze . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.1 V´ ybˇer DB stroje . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.2 Dokumentace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.3 PostgreSQL - historie [12] . . . . . . . . . . . . . . . . . . . . . . 3.2.4 Kritika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.5 Migrace do PostgreSQL . . . . . . . . . . . . . . . . . . . . . . . 3.3 Anal´ yza ˇreˇsen´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.1 V´ ybˇer jazyka - porovn´ an´ı JAVA x .NET . . . . . . . . . . . . . . 3.3.1.1 JAVA . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.1.2 .NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4 Anal´ yza programu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.1 Sc´en´aˇre pouˇzit´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.1.1 Nov´ y z´akazn´ık - internet . . . . . . . . . . . . . . . . . 3.4.1.2 Nov´ y z´akazn´ık - IP telefonie . . . . . . . . . . . . . . . 3.4.1.3 Z´avada na stranˇe z´akazn´ıka . . . . . . . . . . . . . . . . 3.4.1.4 Z´avada na stranˇe poskytovatele . . . . . . . . . . . . . 3.4.1.5 VoIP hovor . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.1.6 Z´akazn´ık se chce pod´ıvat na u ´daje na webov´em port´alu 3.4.2 Anal´ yza rizik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Realizace 4.1 Pouˇzit´ı transakc´ı . . . . . . . . . . . . 4.2 VoIP billing . . . . . . . . . . . . . . . 4.3 ClickOnce + updaty . . . . . . . . . . 4.4 Tisk do PDF . . . . . . . . . . . . . . 4.5 Sestavy xls . . . . . . . . . . . . . . . 4.6 ODBC . . . . . . . . . . . . . . . . . . 4.7 Nastavov´an´ı rychlosti . . . . . . . . . . 4.8 Probl´em s vracen´ım hodnot false/true 4.9 Hled´an´ı bez diakritiky . . . . . . . . . ix
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
3 3 3 3 3 3 3 4 4 4 4 5 5 6 6 6 6 8 8 8 9 9 9 10 11 12
. . . . . . . . .
13 13 13 14 14 14 14 14 15 15
4.10 4.11 4.12 4.13 4.14 4.15 4.16 4.17 4.18
Funkce ukaˇz . . . . . . . . . . . . Funkce ping . . . . . . . . . . . . Funkce SSH . . . . . . . . . . . . Pˇr´ıstupov´a pr´ava . . . . . . . . . Poboˇcky . . . . . . . . . . . . . . Logov´ an´ı . . . . . . . . . . . . . . Z´alohov´an´ı a restaurov´an´ı u ´daj˚ u Uˇzivatelsk´a pˇr´ıruˇcka . . . . . . . Bezpeˇcnost . . . . . . . . . . . . 4.18.1 SQL Injection . . . . . . . 4.18.2 S´ıt’ov´ y sniffing . . . . . . ´ 4.18.3 Utok na konta . . . . . . 4.18.4 Uˇzivatelsk´e role . . . . . . 4.18.5 Bezpeˇcnost updat˚ u . . . . 4.18.6 Buffer overflow chyby . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
15 16 16 16 16 17 17 17 17 17 18 18 18 18 18
5 Testov´ an´ı - zp˚ usob, pr˚ ubˇ eh a v´ ysledky 5.1 Zp˚ usob testov´an´ı . . . . . . . . . . . . 5.2 Postup pˇri generov´an´ı testovac´ıch dat 5.3 Zaveden´ı bugtracker aplikace . . . . . 5.4 V´ ysledky . . . . . . . . . . . . . . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
19 19 19 19 19
6 Z´ avˇ er
20
7 Literatura
21
A Seznam pouˇ zit´ ych zkratek
23
B Diagramy B.1 Schemata DB . . . . . . B.1.1 Star´a DB . . . . B.1.2 Nov´a DB . . . . B.2 Dynamick´ y model . . . B.2.1 USE Case model B.2.2 Activity diagram
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
25 25 25 25 25 25 25
C Uˇ zivatelsk´ a pˇ r´ıruˇ cka C.1 Logovac´ı obrazovka . . . . . C.2 Obrazovka Z´akazn´ıci . . . . C.3 Obrazovka detail z´akazn´ıka C.4 Obrazovka PC . . . . . . . C.5 Obrazovka faktury . . . . . C.6 Okno platby . . . . . . . . . C.7 Obrazovka kalend´aˇr . . . . C.8 Obrazovka sklad . . . . . . C.9 Traffic kontrol . . . . . . . . C.10 Obrazovka zaˇr´ızen´ı . . . . . C.11 Obrazovka z´avady . . . . . C.12 Sestavy . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
35 35 36 37 38 39 40 41 42 43 44 45 45
. . . . . .
D Obsah pˇ riloˇ zen´ eho CD
47
x
Seznam obr´ azk˚ u 3.1 3.2 3.3 3.4 3.5
Nov´ y z´akazn´ık . . . . . . . . . . . . . Nov´ y z´akazn´ık - Kreditov´a IP telefonie Sequence diagram ˇreˇsen´ı z´avad . . . . Sequence diagram VoIP hovoru . . . . Zapojen´ı poˇc´ıtaˇc˚ u. . . . . . . . . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
8 9 10 10 11
B.1 B.2 B.3 B.4 B.5 B.6 B.7 B.8
Schema DB - Star´a DB Nov´e schema DB 1/5 . . Nov´e schema DB 2/5 . . Nov´e schema DB 3/5 . . Nov´e schema DB 4/5 . . Nov´e schema DB 5/5 . . USE CASE diagram . . Activity diagram . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
26 27 28 29 30 31 32 33
C.1 Login screen . . . . . . . . C.2 Z´akazn´ıci . . . . . . . . . C.3 Z´akazn´ıci detail . . . . . . C.4 Pˇridat zaˇr´ızen´ı - Z´akazn´ıci C.5 Faktury . . . . . . . . . . C.6 Platby . . . . . . . . . . . C.7 Platby Detail . . . . . . . C.8 Kalend´aˇr . . . . . . . . . C.9 Sklad . . . . . . . . . . . . C.10 Traffic Control . . . . . . C.11 Zaˇr´ızen´ı . . . . . . . . . . C.12 Z´avady . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
35 36 37 38 39 40 40 41 42 43 44 45
xi
xii
Seznam tabulek 3.1
Porovn´an´ı MySQL a PostgreSQL . . . . . . . . . . . . . . . . . . . . . . . . . .
xiii
5
xiv
´ KAPITOLA 1. UVOD
1
´ 1 Uvod V roce 2003 prob´ıhal boom mal´ ych internetov´ ych poskytovatel˚ u. V Mlad´e Boleslavi do t´e doby existoval v podstatˇe pouze jeden poskytovatel internetov´ ych sluˇzeb, najednou vznikli tˇri dalˇs´ı. Nab´ızeli internet za mnohem niˇzˇs´ı ceny, neˇz byly dosud bˇeˇzn´e, pˇresto zpoˇc´ atku mˇeli jen mal´e mnoˇzstv´ı z´akazn´ık˚ u - ˇr´adovˇe stovky. Rok 2006 byl ve znamen´ı internetu a poˇcty z´akazn´ık˚ u rostly a st´avaj´ıc´ı informaˇcn´ı syst´em jedn´e z tˇechto firem pˇrestal zvl´adat tento n´apor. Byl jsem proto osloven, jestli bych s t´ımto stavem nebyl schopen nˇeco udˇelat. Zaˇcal jsem zkoumat st´avaj´ıc´ı syst´em a pˇrem´ yˇslet, jak ho co nejl´epe vylepˇsit. Jako nejlepˇs´ı ˇreˇsen´ı se nakonec uk´azalo kompletn´ı pˇreps´ an´ı do jin´eho syst´emu. Mnou vytvoˇren´ y informaˇcn´ı syst´em by mˇel zajiˇst’ovat veˇskerou spr´avu uˇzivatel˚ u, spr´avu sluˇzeb jimi objednan´ ych, pˇrehledy jejich plateb, vystavov´ an´ı faktur, evidenci z´avad a administraci uˇzivatel˚ u syst´emu. Mˇel by b´ yt spolehliv´ y a m´ıt prostor pro vylepˇsen´ı.
1.1
C´ıl pr´ ace
C´ılem pr´ace je vytvoˇrit nov´ y syst´em, kter´ y nebude trpˇet nemocemi pˇredch˚ udce. Mezi nˇe patˇrilo mj. pomal´e naˇc´ıt´an´ı vˇetˇs´ıho poˇctu z´akazn´ık˚ u, obˇcasn´ y p´ad web serveru a n´asledn´ a nedostupnost syst´emu a problematick´e tisky vˇetˇs´ıch sestav (byly generov´ any v pdf form´atu a web server to velice zatˇeˇzovalo).
1.2
Skuteˇ cnosti ovlivˇ nuj´ıc´ı tvorbu syst´ emu
Tento syst´em byl vyvinut a testov´ an pro firmu CERBEROS s.r.o., takˇze mnoh´e vlastnosti vych´azej´ı z jej´ıch potˇreb. • 1. Datab´aze je vyuˇz´ıv´ana externˇe, napˇr. DNS serverem ˇci serverem staraj´ıc´ım se o rozdˇelov´an´ı p´asma, proto nelze dˇelat radik´alnˇejˇs´ı zmˇeny v syst´emu. Ty by pˇrich´azely vu ´vahu, pokud by PostgreSQL podporoval editovateln´e pohledy a dynamick´e pˇrid´av´ an´ı sloupc˚ u do pohledu, pak by se dala vlastn´ı struktura datab´aze skr´ yt pomoc´ı pohled˚ u. Toto ˇreˇsen´ı by ale nebylo pˇr´ıliˇs efektivn´ı. • 2. Firma nebyla schopn´a na zaˇc´ atku jasnˇe vymezit p˚ usobnost aplikace. Nikdo nezm´ınil napˇr. potˇrebu kalend´aˇre, skladu ani tisku smluv. Tyto funkce musely b´ yt naps´any doˇ asteˇcnˇe tuto chybu pˇripisuji i sobˇe, protoˇze jsem nebyl pˇri anal´ dateˇcnˇe. C´ yze dostateˇcnˇe pˇredv´ıdav´ y. • 3. Program jsem zaˇcal ps´at ve Visual Studiu 2003. Kdyˇz se objevila verze 2005, kter´a mˇela nˇekter´e uˇziteˇcn´e vlastnosti, pˇreˇsel jsem na n´ı. Pˇrevod do nov´e verze ale neprobˇehl u ´plnˇe ˇcistˇe, pˇrevodn´ık neum´ı oddˇelit design´erskou ˇc´ ast od vlastn´ıho k´odu, takˇze soubor dohled.cs obsahuje vˇse. Nov´a verze 2005 uˇz automaticky pˇri zaloˇzen´ı nov´eho projektu oddˇeluje k´od od design´ersk´e ˇc´asti a t´ım v´ yraznˇe zvyˇsuje ˇcitelnost k´odu. Verze 2003 podporovala .NET Framework 1.1, verze 2005 uˇz 2.0, aplikace je tedy takov´ y hybrid. • 4. Firma mˇela poˇzadavek, aby cel´a aplikace bˇeˇzela v jednom oknˇe. Proto jsem hlavn´ı ˇc´ast programu psal jako skupinu ovl´ adac´ıch prvk˚ u groupBox, kter´e se objevuj´ı a skr´ yvaj´ı. S pˇrid´av´an´ım dalˇs´ıch a dalˇs´ıch funkc´ı a oken se tento syst´em uk´azal jako nevyhovuj´ıc´ı. Proto jsem nov´a okna zaˇcal ps´at jako samostatn´a.
´ KAPITOLA 2. POPIS PROBLEMU, SPECIFIKACE C´ILE
2
2 Popis probl´ emu, specifikace c´ıle Firma poskytuj´ıc´ı internetov´e sluˇzby potˇrebuje nˇejak´ y syst´em, ve kter´em by si vedla sv´e z´akazn´ıky, jejich platby, sluˇzby atd. Pokud je mal´a a m´a mal´ y poˇcet z´akazn´ık˚ u, m˚ uˇze tuto funkci zastat i klasick´ y pap´ırov´ y blok. Se vzr˚ ustaj´ıc´ım poˇctem pˇripojen´ ych poˇc´ıtaˇc˚ u nast´avaj´ı probl´emy a mus´ı se pˇrej´ıt automatizovan´ y syst´em. Vˇetˇsinou firma nehled´ı moc do budoucnosti a tak si nech´a vytvoˇrit syst´em, kter´ y splˇ nuje jej´ı okamˇzit´e poˇzadavky. Za p´ar mˇes´ıc˚ u se ale uk´aˇze, ˇ ˇze nejsou implementov´any pˇrehledy pro CTU, u ´ˇcetn´ı atd. Jenˇze ne vˇzdy je syst´em navrˇzen tak, aby se dal dobˇre rozˇs´ıˇrit a proto se zmˇeny dˇelaj´ı v co nejmenˇs´ım rozsahu. Nastane ale okamˇzik, kdy uˇz nelze snadno dodat dalˇs´ı funkce, a je nutn´e napsat cel´ y syst´em znovu. Syst´em, kter´ ym se zde d´ale budeme zab´ yvat, m´a splˇ novat tyto poˇzadavky: • v´est evidenci z´akazn´ık˚ u, • v´est evidenci plateb, • v´est evidenci zaˇr´ızen´ı pˇripojen´ ych k s´ıti, • v´est evidenci z´avad, • fakturovat sluˇzby, • pos´ılat hromadn´e maily z´akazn´ık˚ um, • u ´ˇctovat hovory, • stanovovat rychlosti pro zaˇr´ızen´ı, • nastavovat pr´ava uˇzivatel˚ u, • v´est kalend´aˇr s u ´koly.
2.1
Reˇ serˇ sn´ı zpracov´ an´ı existuj´ıc´ıch implementac´ı
Kaˇzd´ y vˇetˇs´ı poskytovatel m´a nˇejak´ y sv˚ uj syst´em, ale ten je souˇc´ ast´ı jeho know-how. Proto se mi nepodaˇrilo z´ıskat t´emˇeˇr ˇz´adn´e informace. Naˇsel jsem jen p´ar projekt˚ u, kter´e ˇreˇs´ı jen ˇc´ ast zad´an´ı t´eto pr´ace. Nˇekter´e jsou opensource, nˇekter´e nikoliv. • Prometheus QoS • http://www.sugarforge.org/ • http://www.czela.net/netadmin/login.php • Sun Java Identity Manager
´ ´ ˇ SEN ˇ ´I KAPITOLA 3. ANALYZA A NAVRH RE
3
3 Anal´ yza a n´ avrh ˇ reˇ sen´ı 3.1
Anal´ yza st´ avaj´ıc´ıho ˇ reˇ sen´ı
3.1.1
Dokumentace
St´avaj´ıc´ı datab´aze bˇeˇz´ı na platformˇe MySQL 3.23.58-r1, Apache 2.0, PHP 4.1, operaˇcn´ım syst´emem je Gentoo Linux, CPU AMD Opteron, 2GB RAM, diskov´e pole v modu RAID 5. Sch´ema DB viz pˇr´ıloha B.2.1. 3.1.2 3.1.2.1
Kritika Program
Mezi nesporn´e klady dosavadn´ıho ˇreˇsen´ı patˇr´ı interoperabilita. WWW prohl´ıˇzeˇc m´a dnes uˇz kaˇzd´ y chytˇrejˇs´ı mobiln´ı telefon a tak m˚ uˇzeme k syst´emu pˇristupovat odkudkoliv. To vˇsak s sebou nese bezpeˇcnostn´ı rizika (napaden´ı webov´eho serveru, popˇr. odhalen´ı hesla a adresy). Dalˇs´ımi v´ yhodami jsou nen´aroˇcnost na koncov´e zaˇr´ızen´ı a rychl´ a, resp. ˇz´ adn´ a instalace. Staˇc´ı pˇredat jen jm´eno, heslo a adresu k syst´emu. Nev´ yhodou ˇreˇsen´ı je pˇrenesen´ı veˇsker´ ych v´ ypoˇct˚ u a operac´ı na serverovou stranu. Je nutn´e m´ıt dostateˇcnˇe v´ ykonn´ y hardware. Nedostateˇcn´ y v´ ykon se projevoval hlavnˇe pˇri generov´ an´ı sestav faktur v pdf form´atu, kdy se syst´em na nˇekolik des´ıtek vteˇrin odmlˇcel, a v´ ysledkem byly i nedokonˇcen´e soubory. 3.1.2.2
DB
Datab´aze v t´eto verzi nezvl´ad´a nˇekter´e uˇziteˇcn´e aˇz nutn´e funkce. Ve st´avaj´ıc´ı verzi chyb´ı podpora pohled˚ u, ta funguje aˇz od verze 5.0.1. D´ale nefunguje podpora UTF-8, ta funguje od verze 4.1. Nen´ı moˇzno vytvoˇrit uloˇzen´e procedury ani triggery. Proto bude nutn´e bud’ aktualizovat verzi datab´aze, anebo ji u ´plnˇe zmˇenit. Schema datab´aze bylo navrhov´ ano neˇsikovnˇe, protoˇze nˇekter´e sloupce mˇely zav´ adˇej´ıc´ı pojmenov´ an´ı. Pojmenov´ an´ı hodnoty cusuzn´ ymi jm´eny je pˇrinejmenˇs´ım neˇst’astn´e. D´ale v mnoha tabulk´ach nebyly tomer id nˇekolika r˚ definov´any prim´arn´ı kl´ıˇce a chyb´ı nˇekter´e d˚ uleˇzit´e sloupeˇcky, jejichˇz potˇreba se uk´azala pˇri pouˇz´ıv´an´ı. Naopak nˇekter´e se uk´azaly jako pˇrebyteˇcn´e. 3.1.3
N´ avrhy u ´ prav
• Ujednotil jsem n´azev pro ˇc´ıslo z´akazn´ıka na customer id - to ulehˇc´ı ˇcitelnost struktury datab´aze a tak´e pˇr´ıpadn´e JOIN dotazy. • Ujednotil jsem n´azev pro ˇc´ıslo dokumentu na doc id - opˇet pro lepˇs´ı ˇcitelnost. • V kaˇzd´e tabulce jsem vytvoˇril prim´arn´ı kl´ıˇce a indexy - aby se zv´ yˇsil v´ ykon datab´aze a zajistila integrita dat. • U nˇekter´ ych tabulek jsem zavedl ciz´ı kl´ıˇce a nastavil vlastnosti ON DELETE, ON UPDATE tak, aby se napˇr. pˇri smaz´an´ı faktury automaticky smazaly vˇsechny poloˇzky na n´ı (ON DELETE CASCADE), aby neˇslo smazat uˇzivatele, pokud u sebe m´a pˇriˇrazen´e nˇejak´e faktury (ON DELETE RESTRICT), aby se se smazan´ ym uˇzivatelem smazaly rovnou i vˇsechny sluˇzby a poˇc´ıtaˇce, co m´a k sobˇe pˇriˇrazeny (ON DELETE CASCADE).
´ ´ ˇ SEN ˇ ´I KAPITOLA 3. ANALYZA A NAVRH RE
4
3.2 3.2.1
Anal´ yza nov´ e datab´ aze V´ ybˇ er DB stroje
Je dobr´e si ˇr´ıci, jak´e si vlastnˇe klademe na datab´azi poˇzadavky: • bˇeh pod operaˇcn´ım syst´emem Linux, • aby byla ’zdarma’, • podpora trigger˚ u, • podpora pohled˚ u, • podpora funkc´ı. Tato krit´eria splˇ nuj´ı tyto datab´aze: • Oracle -Omezen´ı velikosti datab´aze do 5GB, dosti sloˇzit´ a instalace, vysok´ y v´ ykon. • MySQL 5.0 - Verze podporuje UTF-8, pohledy, kurzory - lze je pouˇz´ıvat uvnitˇr uloˇzen´ ych procedur a funkc´ı, ale jsou zat´ım pouze ke ˇcten´ı. V triggeru nelze vyvolat v´ yjimku. Podporuje uloˇzen´e procedury dle syntaxe SQL:2003. MySQL je rychl´e pro mal´e tabulky, s rostouc´ım mnoˇzstv´ım dat rychlost kles´a. • PostgreSQL - Vych´az´ı z datab´aze Postgres vyvinut´e na univerzitˇe Berkeley. Podporuje vnoˇren´e dotazy, triggery, pohledy. Chyb´ı bitmapov´e indexy, editovateln´e pohledy, rekurzivn´ı a analytick´e dotazy, SQL pˇr´ıkaz MERGE, podpora collations, podpora SQL/XML, ale ˇz´adn´a z tˇechto funkc´ı nen´ı v naˇsem syst´emu nezbytnˇe nutn´ a. Zd´a se jako ide´aln´ı volba, ale je nutn´a konverze tabulek. • FireBird - Vyvinuta z datab´aze firmy Borland, m´a podobn´e schopnosti jako PostgreSQL. 3.2.2
Dokumentace
Schema nov´e DB je souˇc´ast´ı pˇr´ılohy B.2.2. 3.2.3
PostgreSQL - historie [12]
V roce 1972 vznikl projekt Ingres na University of California at Berkeley (UC-Berkeley) s podporou arm´ady a National Science Foundation (NSF). Byla veden dvojic´ı Michael Stonebraker a Eugene Wong. Motivac´ı bylo vytvoˇrit syst´em pro geografick´ a data Berkeleysk´e ekonomick´e skupiny. Ingres znamen´a Interactive Graphics and Retrieval System. Pracovalo se zde na poˇc´ıtaˇc´ıch PDP-11/45. Ingres nepouˇz´ıval SQL, ale vlastn´ı velmi podobn´ y jazyk QUEL. Postupnˇe byl Ingres uvolnˇen asi v tis´ıcovce kopi´ı a Michael Stonebraker zaloˇzil Ingres Corporation pro komercializaci k´odu Ingresu. Dalˇs´ı ze ˇclen˚ u Berkeley t´ ymu Robert Epstein odeˇsel a stal se spoluzakladatelem Sybase. Komerˇcn´ı verze Ingresu byla dostupn´a v roce 1980. Dalˇs´ı ze ˇclen˚ u Ingres t´ ymu Paula Hawthorn odeˇsel a pod´ılel se na zaloˇzen´ı Illustra Information Technologies Incorporated, v souˇcasn´e dobˇe zn´am´e jako Informix. P˚ uvodn´ı projekt Ingres byl v roce 1982 ukonˇcen a v roce 1985 transformov´ an do projektu Postgres, jehoˇz snahou bylo vytvoˇrit relaˇcnˇe-objektovou DB. Objektovˇe orientovan´ a DB umoˇzn ˇuje uˇzivatel˚ um definici vlastn´ıch metod, pomoc´ı kter´ ych se pˇristupuje k dat˚ um a manipuluje s nimi. Projekt Postgres trval aˇz do roku 1994 a vedl ho opˇet ,,otec” Berkeley datab´az´ı Michael Stonebraker. Po ukonˇcen´ı projektu v letech 1994-1995 se dva studenti zm´ınˇen´e univerzity Jolly Chen a Andrew Yu rozhodli d´ale pracovat na akademick´em k´odu Postgresu a pˇrejmenovali p˚ uvodn´ı Postgres na Postgres95. V l´etˇe roku 1996 pˇrech´ az´ı Postgres95 do opensource podoby a je pˇrejmenov´an na PostgreSQL.
´ ´ ˇ SEN ˇ ´I KAPITOLA 3. ANALYZA A NAVRH RE Vlastnost Automatick´e ˇc´ıslov´an´ı id Case sensitive
Jedno pˇripojen´ı
MySQL auto increment N´ avratov´ e hodnoty vrac´ ı n´ azvy sloupc˚ u ve stejn´ em tvaru v jak´ em byly zaloˇ zeny
jedno vl´ akno
5 PostgreSQL sequence Vrac´ ı vˇ se s mal´ ymi p´ ısmeny, pokud pouˇ zijeme pˇ ri vytvoˇ ren´ ı mal´ a a velk´ a p´ ısmena, mus´ ıme pouˇ z´ ıt uvozovky a pak je mus´ ıme pouˇ z´ ıvat vˇ sude jeden proces
Tabulka 3.1: Porovn´ an´ı MySQL a PostgreSQL 3.2.4
Kritika
Nov´a datab´aze musela logicky vych´azet ze st´avaj´ıc´ı a proto se nemohly dˇelat radik´alnˇejˇs´ı u ´pravy. Pokud by datab´aze podporovala editovateln´e pohledy, dala by se zmˇenit a vytvoˇrit v n´ı pohledy, kter´e by mˇely stejnou strukturu jako star´a DB. Dalˇs´ım probl´emem je neust´al´e pˇrid´ av´ an´ı nov´ ych funkc´ı, kter´e si ˇz´adaj´ı pˇrid´av´an´ı sloupeˇck˚ u do DB. Datab´aze nesplˇ nuje 3NF, protoˇze napˇr´ıklad tabulka cust pays, kter´a uchov´av´a platby, je navrˇzena tak, aby ˇsetˇrila pr´aci datab´azov´emu stroji. Rok je uchov´an v cel´em ˇr´adku, t´ım se uˇsetˇr´ı 11 SQL dotaz˚ u pˇri dotazu na z´akazn´ıka a jeho platby. 3.2.5
Migrace do PostgreSQL
Pro migraci do PostgreSQL jsem vyrobil nˇekolik select skript˚ u, pomoc´ı nichˇz mi MySQL vygenerovalo data z datab´aze, kter´e jsem mohl ihned vloˇzit do PostgreSQL datab´aze. Tyto skripty se nach´azej´ı na CD - soubor prevod.txt. Z´asadn´ı rozd´ıly mezi PostgreSQL a MySQL nalezneme v tabulce 3.1.
´ ´ ˇ SEN ˇ ´I KAPITOLA 3. ANALYZA A NAVRH RE
6
3.3
Anal´ yza ˇ reˇ sen´ı
3.3.1
V´ ybˇ er jazyka - porovn´ an´ı JAVA x .NET
Aplikace by mˇela b´ yt multiplatformov´a, proto se pro realizaci nab´ız´ı jazyky JAVA a .NET. 3.3.1.1
JAVA
JAVA [5] je objektovˇe orientovan´ y programovac´ı jazyk, kter´ y byl vyvinut firmou Sun Microsystems. Byl pˇredstaven 23. kvˇetna 1995 a stal se jedn´ım z nejpouˇz´ıvanˇejˇs´ıch programovac´ıch jazyk˚ u na svˇetˇe. Existuje nˇekolik odnoˇz´ı JAVAy : platforma JavaCard pro ˇcipov´e karty, platforma Java ME pro mobiln´ı telefony a zabudovan´ a zaˇr´ızen´ı, platforma Java SE pro desktopov´e poˇc´ıtaˇce a platforma Java EE pro rozs´ahl´e distribuovan´e syst´emy pracuj´ıc´ı na ˇradˇe spolupracuj´ıc´ıch poˇc´ıtaˇc˚ u rozprostˇren´e po cel´em svˇetˇe. Dne 8. kvˇetna 2007 Sun uvolnil zdrojov´e k´ody Javy (cca 2,5 mili´on˚ u ˇr´adk˚ u k´odu) a Java je d´ale vyv´ıjena jako opensource. Hlavn´ı rysy jazyku JAVA: • Jednoduch´ y - syntaxe vych´az´ı z C/C++. • Objektovˇe orientovan´ y - mimo z´akladn´ı datov´e typy jsou vˇsechny objektov´e. • Distribuovan´ y - dobr´a podpora pro pr´aci v s´ıti. • Interpretovan´ y - pˇri kompilaci se nevytv´aˇr´ı strojov´ y k´od, ale byte-code. Ten je nez´avisl´ y na architektuˇre a program proto m˚ uˇze pracovat na libovoln´em zaˇr´ızen´ı, kter´e m´a k dispozici interpret JAVAy - JVM - Java Virtual Machine. Toto v´ yraznˇe ovlivˇ novalo rychlost, proto se dnes pouˇz´ıv´a technika HotSpot compiler, kter´ y mezik´od nejprve interpretuje a n´aslednˇe na z´akladˇe statistik pˇreloˇz´ı nejpouˇz´ıvanˇejˇs´ı ˇc´ asti k´odu do strojov´eho jazyka. • Robustn´ı - JAVA je urˇcena pro psan´ı bezpeˇcn´ ych aplikac´ı. Neexistuj´ı zde ukazatele, spr´ava pamˇeti ani pˇr´ıkaz goto. Spr´avu pamˇeti obstar´av´ a garbage collector, kter´ y hled´a nepouˇz´ıvan´e kusy pamˇeti a ty automaticky maˇze. • Pˇrenositeln´ y - kv˚ uli existenci byte-codu nen´ı probl´em pˇren´est aplikaci na jinou architekturu. • V´ıce´ ulohov´ y - popora v´ıcevl´aknov´ ych aplikac´ı. • Dynamick´ y - knihovna m˚ uˇze b´ yt dynamicky za chodu rozˇsiˇrov´ ana o nov´e tˇr´ıdy a funkce, a to jak z extern´ıch. zdroj˚ u, tak vlastn´ım programem. • Elegantn´ı - lehce ˇciteln´ y, pˇr´ımo vyˇzaduje oˇsetˇren´ı v´ yjimek a typovou kontrolu. Mezi hlavn´ı nev´ yhody patˇr´ı rychlost a pamˇet’ov´ a n´aroˇcnost aplikac´ı. Je to zp˚ usobeno dynamickou kompilac´ı a nutnost´ı m´ıt v pamˇeti cel´e bˇehov´e prostˇred´ı. 3.3.1.2
.NET
C# [4] [9] [11] je vysoko´ urovˇ nov´ y objektovˇe orientovan´ y programovac´ı jazyk vyvinut´ y firmou Microsoft z´aroveˇ n s platformou .NET, pozdˇeji schv´ alen standardizaˇcn´ımi komisemi ECMA a ISO. Microsoft zaloˇzil C# na jazyc´ıch C++ a Java (a je tedy nepˇr´ım´ ym potomkem jazyka C, ze kter´eho ˇcerp´a syntaxi). C# se vyuˇz´ıv´a hlavnˇe k tvorbˇe datab´azov´ ych program˚ u, webov´ ych aplikac´ı, webov´ ych sluˇzeb, formul´aˇrov´ ych aplikac´ı ve Windows apod. C# je jednoduch´ y, modern´ı, obecnˇe u ´ˇcelov´ y a objektovˇe orientovan´ y programovac´ı jazyk. Jazyk a jeho implementace poskytuje podporu pro principy softwarov´eho inˇzen´ yrstv´ı jako jsou: hl´ıd´ an´ı
´ ´ ˇ SEN ˇ ´I KAPITOLA 3. ANALYZA A NAVRH RE
7
hranic pol´ı, detekce pouˇzit´ı neinicializovan´ ych promˇenn´ ych a automatick´ y garbage collector. D˚ uleˇzit´e jsou tak´e jeho vlastnosti jako: robustnost, trvanlivost a program´atorsk´ a produktivita. Jedn´ım z hlavn´ıch znak˚ u je, ˇze kompil´ ator, podobnˇe jako JAVAovsk´ y, vytvoˇr´ı jak´ ysi bytecode, kter´ y je platformovˇe nez´avisl´ y. Jazyk je vhodn´ y pro v´ yvoj softwarov´ ych komponent distribuovan´ ych v r˚ uzn´ ych prostˇred´ıch. Pˇrenositelnost zdrojov´eho k´odu je velmi d˚ uleˇzit´ a, obzvl´aˇstˇe pro ty program´atory kteˇr´ı jsou obezn´ameni s C a C++. Pod operaˇcn´ım syst´emem linux vznikl opensource projekt Mono, kter´ y se snaˇz´ı vytvoˇrit sadu n´astroj˚ u kompatibiln´ıch s protˇred´ım .NET. Mezi tyto n´astroje patˇr´ı pˇrekladaˇc jazyka C# a Common Language Runtime. Tento projekt podporuje spoleˇcnost Novell. Na z´akladˇe v´ yˇse uveden´eho porovn´ an´ı jsem se rozhodl pro platformu .NET, jazyk C#, tak´e proto, ˇze bych se r´ad pokusil rozbˇehnout tento program pod Gentoo Linux.
´ ´ ˇ SEN ˇ ´I KAPITOLA 3. ANALYZA A NAVRH RE
8
3.4
Anal´ yza programu
3.4.1 3.4.1.1
Sc´ en´ aˇ re pouˇ zit´ı Nov´ y z´ akazn´ık - internet
Z´akazn´ık zavol´a, ˇze by chtˇel internet. Sekret´aˇrka si ho objedn´a do kancel´ aˇre, popˇr. domluv´ı n´avˇstˇevu obchodn´ıka. Zap´ıˇse do kalend´aˇre, na kdy jsou domluveni. Bˇehem sch˚ uzky se klientovi pˇredloˇz´ı k podpisu smlouva, kter´a se vytiskne ze syst´emu. Klient ji podep´ıˇse a u jeho detailu se dopln´ı, do kdy m´a b´ yt nainstalov´an, popˇr. do kalend´ aˇre se vloˇz´ı pˇresn´e datum instalace. Den pˇred instalac´ı si technik vyzvedne ze skladu nutn´e zaˇr´ızen´ı k instalaci - to mu vyd´a skladn´ık, kter´ y vydan´e zboˇz´ı zanese do syst´emu. Technik pˇridˇel´ı z´akazn´ıkovi poˇzadovan´ y poˇcet IP adres a vytiskne si pˇred´avac´ı protokoly. Pˇri instalaci vyfot´ı d˚ uleˇzit´e u ´seky instalace a nech´ a si podepsat pˇred´avac´ı protokol. Po instalaci se vytvoˇr´ı faktura za instalaci, v okamˇziku zaplacen´ı pˇrech´ az´ı z´akazn´ık do stavu Aktivn´ı - vytvoˇr´ı se mu uˇzivatelsk´ yu ´ˇcet do webov´eho port´alu.
Obr´azek 3.1: Nov´ y z´akazn´ık
´ ´ ˇ SEN ˇ ´I KAPITOLA 3. ANALYZA A NAVRH RE 3.4.1.2
9
Nov´ y z´ akazn´ık - IP telefonie
Jsou dvˇe varianty IP telefonie, kreditov´ a a na smlouvu. U nich se postupy liˇs´ı. 1. Kreditov´a VoIP: Z´akazn´ık se registruje na webov´ ych str´ank´ ach. Na uveden´ y mail mu pˇrijdou pokyny - v´ yzva k zaplacen´ı aktivaˇcn´ıho poplatku a ˇc´ısla u ´ˇct˚ u. Pot´e co platba pˇrijde, sekret´aˇrka aktivuje ˇc´ıslo a dobije ho pˇr´ıpadn´ ym pˇreplatkem, vystav´ı se faktura. Z´akazn´ıkovi pˇrijde avizo o pˇrijet´ı platby, vystaven´e faktuˇre a zˇr´ızen´em u ´ˇctu do webov´eho port´alu, na kter´em si m˚ uˇze sluˇzbu pˇrenastavit.
Obr´azek 3.2: Nov´ y z´akazn´ık - Kreditov´ a IP telefonie
2. VoIP na smlouvu: Z´akazn´ık zavol´ a, ˇze by chtˇel internet. Sekret´aˇrka si ho objedn´a do kancel´aˇre, popˇr. domluv´ı n´avˇstˇevu obchodn´ıka. Zap´ıˇse do kalend´ aˇre, na kdy jsou domluveni. Bˇehem sch˚ uzky se klientovi pˇredloˇz´ı k podpisu smlouva, kter´a se vytiskne ze syst´emu. Klient ji podep´ıˇse, vytvoˇr´ı se mu faktura za aktivaci tel. ˇc´ısel a po zaplacen´ı jsou mu pˇridˇelena. 3.4.1.3
Z´ avada na stranˇ e z´ akazn´ıka
Z´akazn´ık zavol´a na servis, ˇze mu nejde internet/VoIP telefon. Technik rychle zkontroluje stav s´ıtˇe a urˇc´ı, je-li z´avada na stranˇe poskytovatele, popˇr. podaˇr´ı-li se z´avadu odstranit po telefonu. Zap´ıˇse incident do syst´emu a navrhne z´akazn´ıkovi ˇreˇsen´ı, kter´e nap´ıˇse do syst´emu. V kalend´ aˇri napl´anuje potˇrebn´ y ˇcasov´ y u ´sek a pˇridˇel´ı poˇcet zamˇestnanc˚ u. Ve stanoven´ y den a hodinu se provede servis a do syst´emu se zap´ıˇse, jak se probl´em podaˇrilo vyˇreˇsit. 3.4.1.4
Z´ avada na stranˇ e poskytovatele
V´ı-li se o z´avadˇe pˇredem - napˇr. pl´anovan´ y upgrade zaˇr´ızen´ı - obeˇslou se z´akazn´ıci pˇripojen´ı na dan´ y bod. Do kalend´aˇre se zanese term´ın a zodpovˇedn´ y pracovn´ık. Po u ´spˇeˇsn´em vyˇreˇsen´ı se v kalend´aˇri probl´em uzavˇre. Pokud se probl´em vyskytne n´ahle a neoˇcek´ avanˇe, pod´ıv´ a se dispeˇcer do kalend´aˇre na vyt´ıˇzenost pracovn´ık˚ u. Urˇc´ı, kdo z nevyt´ıˇzen´ ych pracovn´ık˚ u se o vyˇreˇsen´ı probl´emu postar´a.
´ ´ ˇ SEN ˇ ´I KAPITOLA 3. ANALYZA A NAVRH RE
10
Obr´azek 3.3: Sequence diagram ˇreˇsen´ı z´avad
3.4.1.5
VoIP hovor
Z´akazn´ık zvedne sluch´atko a vytoˇc´ı ˇc´ıslo. SIP server ovˇeˇr´ı, zda m´a pr´avo volat na toto ˇc´ıslo, pokud ano, pokus´ı se nav´azat spojen´ı. Po zvednut´ı sluch´ atka druh´ ym u ´ˇcastn´ıkem se do tabulky acc zap´ıˇse datum a ˇcas zaˇc´atku hovoru. V okamˇziku ukonˇcen´ı hovoru se do tabulky zap´ıˇse ˇcas ukonˇcen´ı hovoru. Tento z´aznam spust´ı trigger, kter´ y spoˇc´ıt´ a d´elku a cenu hovoru a tyto skuteˇcnosti zap´ıˇse do tabulky hovory.
Obr´azek 3.4: Sequence diagram VoIP hovoru
´ ´ ˇ SEN ˇ ´I KAPITOLA 3. ANALYZA A NAVRH RE 3.4.1.6
11
Z´ akazn´ık se chce pod´ıvat na u ´ daje na webov´ em port´ alu
Z´akazn´ık se pˇrihl´as´ı na str´ank´ach sv´ ym jm´enem a heslem. Pokud ho nezn´a, zad´a ˇc´ıslo smlouvy a na mail, nahl´aˇsen´ y pˇri registraci, se mu odeˇslou pˇrihlaˇsovac´ı u ´daje. Na port´ale nalezne veˇsker´e informace - statistiku sv´eho internetov´eho pˇripojen´ı, stav plateb, sv´e faktury, mailov´e schr´ anky atd. Struktura pˇripojen´ı:
Obr´azek 3.5: Zapojen´ı poˇc´ıtaˇc˚ u
´ ´ ˇ SEN ˇ ´I KAPITOLA 3. ANALYZA A NAVRH RE
12 3.4.2
Anal´ yza rizik
Pro anal´ yzu rizik jsem zvolil metodu SWOT. 1. Siln´e str´anky - Strengths • Aplikace bude rychlejˇs´ı neˇz st´avaj´ıc´ı. • L´epe se budou ladit chyby. • Lepˇs´ı rozˇsiˇritelnost. 2. Slab´e str´anky - Weeknesses • Nechut’ uˇzivatel˚ u k nov´ ym vˇecem. • Existuj´ıc´ı datab´aze a na n´ı nav´ azan´e dalˇs´ı aplikace - nemoˇznost vˇetˇs´ıch zmˇen. • Nutnost zaˇskolen´ı pr´ace v nov´em programu. 3. Pˇr´ıleˇzitosti - Opportunities • V´ yrazn´e usnadnˇen´ı a automatizace nˇekter´ ych u ´kon˚ u. • Zjednoduˇsit st´avaj´ıc´ı postupy. • Zakomponovat dosud pouˇz´ıvan´e prostˇredky do jednoho syst´emu. 4. Hrozby - Threats • Nepodaˇr´ı se dokonˇcit vˇcas. • Nebude splˇ novat poˇzadavky. • Poˇzadavky budou ˇspatnˇe pochopeny / formulov´ any.
KAPITOLA 4. REALIZACE
13
4 Realizace 4.1
Pouˇ zit´ı transakc´ı
Pot´e, co syst´em chv´ıli bˇeˇzel, se objevily z´ahadn´e ztr´aty dat. Jiˇz odsouhlasen´e platby nˇekter´ ych z´akazn´ık˚ u mizely. Bylo to zp˚ usobeno nepouˇzit´ım transakc´ı, kter´e se v tomto pˇr´ıpadˇe uk´azalo jako hrub´ y omyl. Po rozvaze, jak je nejl´epe implementovat, jsem doˇsel k n´asleduj´ıc´ımu: 1 Je tˇreba m´ıt z´aznamy pˇr´ıstupn´e pro ˇcten´ı po celou dobu bˇehu programu. 2 Nen´ı moˇzn´e, aby transakce bˇeˇzely v blokovac´ım reˇzimu - tj. jeden uˇzivatel otevˇre okno s platbou z´akazn´ıka, druh´ y klikne na tu samou platbu a program ˇcek´ a, dokud prvn´ı uˇzivatel transakci neukonˇc´ı. ˇ sen´ı: SELECT FROM cust pays WHERE cust pays id = 2 FOR UPDATE; Reˇ ODBC ovladaˇc pˇri pokusu o zamˇcen´ı zahl´as´ı chybu, kterou obslouˇz´ım a uˇzivatel dostane zpr´avu, ˇze nem˚ uˇze dan´ y ˇr´adek upravovat.
4.2
VoIP billing
VoIP ˇreˇsen´ı je postaveno na opensource syst´emu openser (www.openser.org) Vytv´aˇr´ı z´aznamy do tabulky acc. Chceme online vy´ uˇctov´ an´ı hovor˚ u na webu, proto je vhodn´e pouˇz´ıt trigger. Naprogramoval jsem ho v jazyce plpgSQL, kter´ y se podob´a oraclovsk´emu plSQL. Skl´ad´ a se ze dvou funkc´ı, add hovor a urcicenu. Funkce urcicenu na z´akladˇe d´elky, ˇspiˇcky a pˇredvolby urˇc´ı cenu hovoru, funkce add hovor se postar´a o zbytek. Funkce add hovor je velice dlouh´a, proto ji zde nebudu uv´adˇet. Zdrojov´ y k´od funkce urcicenu: DECLARE cenamin numeric(6,2); cenacelk numeric(8,2); begin IF spicka THEN SELECT INTO cenamin cena FROM spicka_predv WHERE predvolba=predv; IF NOT FOUND THEN RAISE EXCEPTION ’Nenalezena predvolba ve spicce’; END IF; ELSE SELECT INTO cenamin cena FROM nespicka_predv WHERE predvolba=predv; IF NOT FOUND THEN RAISE EXCEPTION ’Nenalezena predvolba mimo spicku’; END IF; END IF; --mam cenu za minutu, ted spocitam cenu IF (delka-60<0) THEN cenacelk=cenamin; ELSE cenacelk=round(cenamin*(delka-60)/60,2)+cenamin; END IF; return cenacelk; end;
14
4.3
KAPITOLA 4. REALIZACE
ClickOnce + updaty
Microsoft Visual Studio 2005 pouˇz´ıv´a pro snadnou distribuci updat˚ u k uˇzivatel˚ um technologii ClickOnce [3]. Jej´ım c´ılem je odstranit ˇcast´e probl´emy pˇri instalaci a pouˇz´ıv´ an´ı program˚ u - konflikty DLL knihoven, update na novou verzi, atd. Po spuˇstˇen´ı instalaˇcn´ıho programu, vytvoˇren´em touto technologi´ı, se zkontroluj´ı veˇsker´e nutn´e z´avislosti. Chybˇej´ıc´ı programy se st´ahnou z webu. Technologie umoˇzn ˇuje nastavit, kde m´a program hledat updaty, jak ˇcasto je m´a hledat, jestli lze program spouˇstˇet jen v reˇzimu online - tj. pouze po pˇripojen´ı k centr´ aln´ımu serveru s updaty. Aplikace hled´a updaty pˇred kaˇzd´ ym sv´ ym spuˇstˇen´ım. Kv˚ uli bezpeˇcnosti jsem updaty nahr´aval ˇ na zaheslovan´ y samba server, kter´ y si aplikace pˇri startu pˇripojovala. Castokr´ at se ale st´avalo, ˇze uˇzivatel jiˇz byl pˇrihl´aˇsen na disk pod jin´ ym jm´enem, tento proces selhal a aplikace se neaktualizovala. Proto jsem formu updat˚ u zmˇenil na http protokol a od t´e doby je vˇse bez probl´em˚ u. Nastal zde ale bezpeˇcnostn´ı probl´em, protoˇze toto ˇreˇsen´ı umoˇzn ˇuje kaˇzd´emu, kdo zn´a cestu k updat˚ um, st´ahnout instalaˇcn´ı soubory aplikace.
4.4
Tisk do PDF
PDF je ide´aln´ım form´atem pro v´ ystupy ze syst´emu. Soubory PDF jsou platformovˇe nez´avisl´e a vypadaj´ı v kaˇzd´e verzi prohl´ıˇzeˇce stejnˇe. Hledal jsem opensource ˇreˇsen´ı a naˇsel iTextSharp (http://itextsharp.sourceforge.net/), coˇz je odvozenina od iText (http://www.lowagie.com/iText/). V´ yhodou je, ˇze se projekt neust´ale vyv´ıj´ı a jsou k dispozici st´ale nov´e verze, kter´e rozˇsiˇruj´ı st´avaj´ıc´ı vlastnosti. (http://sourceforge.net/projects/itextsharp/)
4.5
Sestavy xls
Protoˇze soubory PDF lze jen tˇeˇzko editovat, musel jsem do syst´emu doplnit i nˇejak´e v´ ystupy v xls form´atu. Protoˇze dll knihovny excelu jsou chr´ anˇeny autorsk´ ym z´akonem a nen´ı moˇzn´e je distribuovat uˇzivatel˚ um, musel jsem hledat nˇejak´ y opensource NET XLS writer. Protoˇze bohuˇzel ˇz´adn´ y neexistuje, uch´ ylil jsem se k poloviˇcat´emu ˇreˇsen´ı, kdy generuji xls soubor, ve kter´em jsou hodnoty oddˇeleny tabul´atory. V´ ystup postr´ad´ a grafickou u ´pravu, protoˇze nejsem schopen nastavit ˇs´ıˇrku sloupc˚ u, ani zmˇenit barvy. Toto vˇse ˇreˇs´ı export do form´atu XML, kter´ y C# podporuje. Nemˇel jsem ale dostatek ˇcasu, abych zjistil, jak se s funkcemi na export do XML form´atu pracuje. Aˇz Microsoft zavede sv˚ uj form´at MS OpenXML, bude vytv´aˇren´ı pˇrehled˚ u snad jeˇstˇe jednoduˇsˇs´ı.
4.6
ODBC
Pro pˇripojen´ı programu k PostgreSQL datab´azi pouˇz´ıv´ am pgODBC driver, kter´ y je volnˇe ke staˇzen´ı na www.postgresql.org. Nab´ızel se jeˇstˇe .NET postgresql driver, kter´ y jsem chv´ıli zkouˇsel, ale byl nestabiln´ı.
4.7
Nastavov´ an´ı rychlosti
V s´ıti firmy se pouˇz´ıv´a QoS pro ˇr´ızen´ı toku dat, konkr´etnˇe metoda HTB[10]. V tabulce tc jsou vˇsechny nutn´e u ´daje potˇrebn´e pro spr´avn´e fungov´ an´ı tohoto syst´emu. Pˇres syst´em je moˇzn´e je editovat a vytv´aˇret nov´a pravidla. Datab´aze pomoc´ı trigger˚ u kontroluje vˇsechny nutn´e podm´ınky, kter´e mus´ı b´ yt splnˇeny, aby syst´em korektnˇe fungoval - napˇr. souˇcet rychlost´ı potomk˚ u nesm´ı b´ yt vˇetˇs´ı neˇz souˇcet rychlost´ı rodiˇce atd.
KAPITOLA 4. REALIZACE
4.8
15
Probl´ em s vracen´ım hodnot false/true
Mnou pouˇzit´ y ODBC ovladaˇc je pro pouˇzit´ı v C# problematick´ y, protoˇze jako true hodnotu vrac´ı t a jako hodnotu false vrac´ı hodnotu f. To neumoˇzn ˇuje pˇr´ım´e napojen´ı napˇr. do ovl´ adac´ıch prvk˚ u dataGridView, protoˇze ty neznaj´ı t jako true, mus´ı se jim d´at pouze ˇc´ıseln´e hodnoty. Abych toto obeˇsel, vytvoˇril jsem si jednoduchou funkci reknibool, kter´a vr´at´ı 0 pokud je vstup f a vr´at´ı 1 pokud je vstup t. Vˇsechny dotazy, kde chci z´ıskat booleovsk´e hodnoty, tedy obsahuj´ı tuto funkci.
4.9
Hled´ an´ı bez diakritiky
Protoˇze z´akazn´ık˚ um nen´ı v telefonu ˇcasto rozumˇet, popˇr. pozn´amky jsou ˇcasto ˇspatnˇe ˇciteln´e, ˇ seno je to tak, ˇze jsem vytvoˇril funkci implementoval jsem do programu hled´an´ı bez diakritiky. Reˇ bezdiakritiky, kter´a nahrad´ı kaˇzd´e p´ısmeno s diakritikou jeho ekvivalentem bez diakritiky. Staˇc´ı pak udˇelat dotaz typu SELECT surname FROM customers WHERE bezdiakritiky(surname) = bezdiakritiky(textBoxSurname); Funkce m´a za vstup typ varchar a jako v´ ystup vrac´ı varchar a vypad´a takto: declare pomocna varchar(200); begin pomocna:=retezec; pomocna:=replace(pomocna,’ˇ e’,’e’); pomocna:=replace(pomocna,’´ e’,’e’); pomocna:=replace(pomocna,’ˇ s’,’s’); pomocna:=replace(pomocna,’ˇ c’,’c’); pomocna:=replace(pomocna,’ˇ r’,’r’); pomocna:=replace(pomocna,’ˇ z’,’z’); pomocna:=replace(pomocna,’´ y’,’y’); pomocna:=replace(pomocna,’´ a’,’a’); . . . pomocna:=lower(pomocna); return pomocna; end;
4.10
Funkce ukaˇ z
V oknˇe zaˇr´ızen´ı a u kaˇzd´eho z´akazn´ıka je modr´ y odkaz s n´apisem ukaˇz. Po kliknut´ı se otevˇre okno webov´eho prohl´ıˇzeˇce, kter´ y je nastaven jako implicitn´ı, s mapou na serveru seznam.cz a m´ıstem, kde se dan´e zaˇr´ızen´ı nach´az´ı. Tato funkce logicky funguje jen v pˇr´ıpadech, ˇze je spr´avnˇe vyplnˇena adresa a mˇesto. Server seznam m´a dobˇre ˇciteln´ y adresn´ı ˇr´ adek, proto bylo jednoduch´e z nˇej identifikovat pole, kter´e obsahuje vyhled´avanou adresu: http://mapy.seznam.cz/?query=vaclavske%20namesti&portWidth=682&portHeight=453& mapType=base¢erX=135549861¢erY=134989697 Jedin´ y probl´em byl v nutnosti pˇrek´odovat adresu z UTF8 do cp1250. To obstarala php funkce convert. Proto adresa po kliknut´ı ukaˇz nen´ı pˇr´ımo na seznam, ale na mnou vytvoˇren´ y php
16
KAPITOLA 4. REALIZACE
skript, kter´ y provede pˇrek´odov´an´ı a dalˇs´ı nutn´e u ´pravy. Zdrojov´ y k´od:
4.11
Funkce ping
Protoˇze je obˇcas nutn´e rychle zjistit, jak odpov´ıd´ a zaˇr´ızen´ı na ping, implementoval jsem do programu tlaˇc´ıtko, po jehoˇz stisku se spust´ı ping na urˇcit´e zaˇr´ızen´ı. Uˇzivateli tato jednoduch´ a funkce uˇsetˇr´ı spoustu psan´ı a hled´an´ı.
4.12
Funkce SSH
Pro spr´avnou funkˇcnost je nutn´e si st´ahnout program Putty, pˇrejmenovat ho na ssh.exe a um´ıstit do adres´aˇre Windows. Klikneme-li na tlaˇc´ıtko SSH, kter´e se nach´ az´ı u zaˇr´ızen´ı, spust´ı se program Putty a pokus´ı se spojit s t´ımto strojem na portu 22.
4.13
Pˇ r´ıstupov´ a pr´ ava
Kv˚ uli pˇrehlednosti a tak´e bezpeˇcnosti maj´ı uˇzivatel´e pˇridˇelena urˇcit´ a pˇr´ıstupov´ a pr´ava. Napˇr. technik nepotˇrebuje m´ıt pˇr´ıstup do faktur z´akazn´ık˚ u a nepotˇrebuje vidˇet, kolik z´akazn´ık za sluˇzby plat´ı. Sekret´aˇrka nepotˇrebuje m´ıt pˇr´ıstup k modulu obstar´avaj´ıc´ım nastavov´ an´ı rychlosti ani k nastavov´an´ı DNS serveru. Nikdo z nich nemus´ı vidˇet pˇrehledy ani administraci uˇzivatel˚ u a jejich skupin. Program umoˇzn ˇuje nastavit uˇzivatelsk´e skupiny, kter´e pak vid´ı jen z´akazn´ıky pˇriˇrazen´e k sobˇe a kter´e si m˚ uˇzou pˇrid´ avat dalˇs´ı uˇzivatele. Tˇemto skupin´am lze definovat maxim´aln´ı pˇr´ıstupov´a pr´ava, kter´ ych kaˇzd´ y z ˇclen˚ u t´eto skupiny m˚ uˇze dos´ahnout. Lze napˇr. nastavit, ˇze skupina Extern´ı firma A nem´a pˇr´ıstup k faktur´am. Tabulka dohled users obsahuje seznam uˇzivatel˚ u a je souˇcasnˇe vyuˇz´ıv´ ana i k zachycen´ı pˇr´ıstupov´ ych pr´av jednotliv´ ych uˇzivatel˚ u. 0 znamen´a ˇz´adn´ y pˇr´ıstup, 1 pˇr´ıstup jen pro ˇcten´ı, 2 pˇr´ıstup pro z´apis a 3 nˇejak´e vylepˇsen´ı nav´ıc. U pr´av k sestav´am urˇcuji pr´ava pomoc´ı bitov´eho maskov´ an´ı t´ım, ˇze vyp´ın´ am ˇci zap´ın´am poloˇzku v menu sestav. Lze tak napˇr. nastavit, ˇze technik m´a pˇr´ıstup k sestavˇe novˇe pˇripojen´ ych klient˚ u a k sestavˇe vyhodnocuj´ıc´ı zpracov´ an´ı z´avad, ale ostatn´ı sestavy nevid´ı.
4.14
Poboˇ cky
V pr˚ ubˇehu tvorby syst´emu jsem obdrˇzel poˇzadavek na nutnost soubˇehu dvou syst´em˚ u pro dvˇe poboˇcky souˇcasnˇe. Poboˇcky budou m´ıt oddˇelen´e hospodaˇren´ı, ale napˇr. uˇzivatelsk´e u ´ˇcty, mailov´e schr´anky, DNS servery budou spoleˇcn´e. Po zv´aˇzen´ı vˇsech pro a proti jsem se rozhodl probl´em ˇreˇsit postfixov´ ym oznaˇcen´ım tabulek pomoc´ı podtrˇz´ıtka a dvoup´ısmenn´eho identifik´atoru poboˇcky. K tabulce customers tedy pˇribyla tabulka customers lb atp. Aby bylo moˇzno pˇridat dalˇs´ı poboˇcku co nejrychleji a nejjednoduˇseji, vytvoˇril jsem tabulku pobocky, ve kter´e uchov´av´am vˇsechny d˚ uleˇzit´e u ´daje o poboˇcce - adresu, tel. ˇc´ısla, jednatele ...
KAPITOLA 4. REALIZACE
4.15
17
Logov´ an´ı
Loguji zmˇeny v u ´daj´ıch v datab´azi do speci´aln´ı tabulky. Tak snadno zjist´ım kdo, kdy a jak´ y ˇr´adek upravil. K tomu lze dohledat patˇriˇcn´ y INSERT nebo UPDATE SQL pˇr´ıkaz a urˇcit, co ˇ sil jsem, jestli m´am logovat do extra tabulek pomoc´ı trigger˚ se stalo. Reˇ u veˇsker´e zmˇeny - tj. ukl´adat star´a i nov´a data, aby bylo moˇzno jednoduˇse vyhled´avat i restaurovat zmˇeny, ale tato ˇcinnost by znaˇcnˇe zatˇeˇzovala datab´azi a nen´ı tak ˇcasto nutn´e dohled´avat tyto u ´daje. Zde se projevila nev´ yhoda ˇreˇsen´ı pˇr´ıstupu do DB pˇres jednoho spoleˇcn´eho uˇzivatele, protoˇze datab´aze nev´ı, kdo zmˇenu provedl. Proto mus´ıme u ´daje o aktu´alnˇe pˇrihl´ aˇsen´em uˇzivateli pˇred´ avat v INSERT pˇr´ıkazu.
4.16
Z´ alohov´ an´ı a restaurov´ an´ı u ´ daj˚ u
Je vhodn´e si napsat jednoduch´ y skript, kter´ y jednou dennˇe pomoc´ı programu pg dump provede kompletn´ı z´alohu datab´aze. Dalˇs´ı probl´emy s obnoven´ım m˚ uˇzeme nechat na datab´azi, jelikoˇz PostgreSQL 8 nab´ız´ı pokroˇcil´e techniky, jako jsou napˇr´ıklad Save Points nebo Point In Time Recovery (PITR). PITR vyuˇz´ıv´a toho, ˇze kaˇzd´ a akce kterou provedeme, se ukl´ad´ a do writeahead logu (WAL). Za pomoci tohoto souboru pak nen´ı probl´em z´ıskat data zp´atky.
4.17
Uˇ zivatelsk´ a pˇ r´ıruˇ cka
Je pˇr´ılohou t´eto pr´ace. Naps´ana je v programu kile a pouˇzit je syst´em LaTeX. Pˇri jej´ı tvorbˇe, stejnˇe jako pˇri tvorbˇe tohoto dokumentu, jsem pouˇzil n´asleduj´ıc´ı zdroje. [1], [7], [2], [6], [8]
4.18 4.18.1
Bezpeˇ cnost SQL Injection
Pˇri testov´an´ı na ˇspatn´e vstupy jsem zjistil, ˇze program “podporuje” SQL Injection, pˇri zad´an´ı ˇspatn´eho vstupu program nespadne, ale ohl´as´ı chybu. Rozhodl jsem se probl´em ˇreˇsit podle n´azoru doc. Merunky, kter´ y na pˇredn´ aˇsce z pˇredmˇetu RSF dne 11.4.2007 obhajoval moˇznost ponech´an´ı ˇspatn´ ych vstup˚ u v informaˇcn´ım syst´emu. Obhajoval to ˇcasovou a finanˇcn´ı n´aroˇcnost´ı oˇsetˇren´ı vˇsech vstup˚ u, nemoˇznost´ı stoprocentn´ıho oˇsetˇren´ı u velk´ ych projekt˚ u a tak´e t´ım, ˇze uˇzivatel´e chtˇej´ı se syst´emem pracovat, protoˇze jim ulehˇcuje pr´aci a nemaj´ı z´ajem ho shazovat. Z´akladn´ı probl´em je v pˇr´ıstupu k vytv´aˇren´ı SQL dotaz˚ u. string sql = "SELECT name, surname FROM customers \\ WHERE name = ’"+name.Text+"’ and password=’"+heslo.Text+"’"; SqlDataAdapter da = new SqlDataAdapter(sql, DbCommand); da.Fill(productDataSet); Co se stane, kdyˇz uˇzivatel do prvku search zad´a m´ısto hesla napˇr. ’ or 1=1; – V´ ysledn´ y dotaz bude vypadat takto: SELECT name, surname FROM customers \\ WHERE name = ’karel’ and password=’’ or 1=1; --’ ˇ sit to lze nˇekolika zp˚ At’ bude heslo jak´ekoliv, uˇzivatel bude vpuˇstˇen do aplikace. Reˇ usoby. Prvn´ım z nich jsou uloˇzen´e procedury. Vytvoˇrili bychom proceduru loginUser, kter´e bychom pˇredali jm´eno a heslo uˇzivatele a ona by vr´atila true v pˇr´ıpadˇe, ˇze by bylo pˇrihl´ aˇsen´ı u ´spˇeˇsn´e, v opaˇcn´em false. Toto ˇreˇsen´ı povaˇzuji za nejlepˇs´ı, protoˇze pˇri zmˇenˇe DB nebo vˇetˇs´ım z´asahu staˇc´ı pozmˇenit jen pˇr´ısluˇsn´e procedury a nemus´ıme opravovat aplikaci. Tak´e se prov´ adˇen´ı pˇr´ıkaz˚ u
18
KAPITOLA 4. REALIZACE
urychl´ı pokud m´ame dobˇre nastaven pl´anovaˇc prov´ adˇen´ı pˇr´ıkaz˚ u. Dalˇs´ı moˇznost´ı je pouˇzit´ı parametrizovan´eho vstupu. K´od pak vypad´a napˇr.: string commandText = "SELECT * FROM customers WHERE name=@name"; SqlCommand cmd = new SqlCommand(commandText, conn); cmd.Parameters.Add("@name",name); Tento k´od je tak´e odoln´ y v˚ uˇci SQL injection. Proti SQL Injection jsem oˇsetˇril vstupn´ı logovac´ı obrazovku, ostatn´ı obrazovky jsou SQL Injection Vulnerable. D˚ ukladn´ a obrana proti SQL injection v cel´e aplikaci by zabrala minim´alnˇe 14 dn´ı pr´ace. 4.18.2
S´ıt’ov´ y sniffing
Aplikace pro pˇripojen´ı k DB vyuˇz´ıv´a ODBC ovladaˇc. Nastavena je tak, aby preferovala SSL spojen´ı, pokud je dostupn´e. Pokud nen´ı, sestav´ı spojen´ı nezabezpeˇcenˇe. To znamen´a, ˇze pˇr´ıpadn´ y u ´toˇcn´ık uvid´ı, jak´a data si vymˇen ˇuje datab´aze s aplikac´ı. Nelze proto neˇz doporuˇcit pouˇz´ıv´ an´ı postgreSQL serveru se zapnutou podporou SSL protokolu. Nastaven´ı postgreSQL serveru na SSL potrv´a 1 den pr´ace (pˇri komplikac´ıch aˇz t´ yden). 4.18.3
´ Utok na konta
Vzhledem k zapomnˇetlivosti uˇzivatel˚ u jsem se rozhodl neimplementovat ochranu proti automatick´ ym u ´tok˚ um na konta uˇzivatel˚ u. Veˇsker´e pˇrihlaˇsovac´ı pokusy jsou zaznamen´av´ any v logu a v pˇr´ıpadˇe nutnosti by nebyl probl´em zav´est nˇejakou ochranu, napˇr. 10x za posledn´ıch 5 minut. V logu nezaznamen´av´am IP adresy, protoˇze ty jsou dohledateln´e v datab´azov´em logu. Tento u ´tok jsem nepˇredpokl´adal, protoˇze aplikace je neveˇrejn´ a, nen´ı moˇzn´e se k n´ı volnˇe dostat. Implementace t´eto ochrany zabere cca 1 den pr´ace. 4.18.4
Uˇ zivatelsk´ e role
Na zaˇc´atku jsem odhadoval, kolik uˇzivatel˚ u bude tento syst´em pouˇz´ıvat. Maxim´aln´ı odhad byl kolem 20 lid´ı, vyn´asobil jsem ho pro jistotu 2 a vyˇslo ˇc´ıslo 40. Uvaˇzoval jsem o pouˇzit´ı uˇzivatelsk´ ych rol´ı, ve kter´ ych bych nadefinoval skupiny technik, obchodnik, vedeni a administrator. Pouˇzit´ı tˇechto rol´ı by mi zajistilo dvojitou ochranu datab´aze. Zv´aˇzil jsem ˇcasovou n´aroˇcnost a praktick´ y pˇr´ınos tohoto opatˇren´ı a usoudil jsem, ˇze uˇzivatelsk´e role nepouˇziji. Na aplikaˇcn´ı u ´rovni jsou uˇzivatelsk´a pr´ava hl´ıd´ ana, uˇzivatel˚ u nebude mnoho, a je mal´a ˇsance zneuˇzit´ı. Nasazen´ı rol´ı je moˇzn´e, ˇcasovou n´aroˇcnost odhaduji na 14 dn˚ u. 4.18.5
Bezpeˇ cnost updat˚ u
´ cn´ık by se mohl pokusit podvrhnout uˇzivatel˚ Utoˇ um ,,sv˚ uj” update aplikace, kter´ y by mohl umˇet napˇr. keylogging, d´alkov´e ovl´ad´an´ı PC atd... Pouˇzit´ım technologie ClickOnce jsem toto nebezpeˇc´ı eliminoval. 4.18.6
Buffer overflow chyby
C# v sobˇe mimo garbage collectoru obsahuje tak´e ochranu proti buffer overflow. Ten lze zp˚ usobit pouze pouˇzit´ım tzv. unsafe k´odu, kter´ y jsem v aplikaci nikde nepouˇzil. Tento probl´em n´as proto nemus´ı tr´apit.
´ ´I - ZPUSOB, ˚ ˚ EH ˇ A VYSLEDKY ´ KAPITOLA 5. TESTOVAN PRUB
19
5 Testov´ an´ı - zp˚ usob, pr˚ ubˇ eh a v´ ysledky 5.1
Zp˚ usob testov´ an´ı
Protoˇze je tento projekt pomˇernˇe mal´ y a byl kladen d˚ uraz na rychlost v´ yvoje, rozhodl jsem se v prvn´ıch f´az´ıch spol´ehat ˇcistˇe na manu´ aln´ı testov´ an´ı. Po naps´an´ı kaˇzd´eho okna jsem ho otestoval na z´akladn´ı funkˇcnost - zad´aval jsem oˇcek´ avan´e hodnoty a sledoval, jak se program bude chovat. Pokud vracel poˇzadovan´e v´ ystupy, pokraˇcoval jsem v pr´aci d´ale, pokud nikoliv, opravoval jsem chyby. N´aslednˇe jsem zkusil vygenerovat mal´ y soubor testovac´ıch dat, abych zjistil, jestli dobˇre funguje ˇrazen´ı, ˇcesk´ a diakritika a podobn´e. Pot´e, co byla kostra hotova a program mˇel zvl´adnout z´akladn´ı funkce, jsem ho pˇredal k testov´an´ı uˇzivatel˚ um s testovac´ımi daty. Abych mˇel zaruˇcenu zpˇetnou vazbu, pos´ıl´ a program program´atorovi mail pokaˇzd´e, kdyˇz dojde k nˇejak´e chybˇe. Oˇcek´ aval jsem totiˇz neochotu uˇzivatel˚ u hl´asit chyby. Uˇzivatel´e zpoˇc´atku skuteˇcnˇe nejevili z´ajem o nov´ y produkt, takˇze zachycen´ ych chyb bylo pomˇernˇe m´alo. Pot´e, co se pˇreˇslo na ostr´ y provoz a program zaˇcal b´ yt skuteˇcnˇe pouˇz´ıv´an, se proto zaˇcalo objevovat znaˇcn´e mnoˇzstv´ı chyb, kter´e jsem se snaˇzil co nejrychleji opravovat, takˇze nˇekter´e dny byly i ˇctyˇri nov´e verze. Naˇstˇest´ı se objevily jen drobn´e chyby, kter´e nevyˇzadovaly velk´e z´asahy do syst´emu. Po delˇs´ım ˇcase se vˇsak zaˇcaly objevovat chyby, kter´e nebylo snadn´e naj´ıt. Nˇekter´e jsou v syst´emu dosud, protoˇze nen´ı moˇzn´e je nasimulovat.
5.2
Postup pˇ ri generov´ an´ı testovac´ıch dat
Pro generov´an´ı testovac´ıch dat jsem pouˇzil program EMS Data Generator for PostgreSQL. V´ yrobce nab´ız´ı 15 denn´ı testovac´ı verzi, kter´a staˇcila k vygenerov´ an´ı potˇrebn´ ych dat. V prvn´ım kroku nastav´ıme pˇripojen´ı k datab´azi. V druh´em kroku zvol´ıme datab´azi a tabulky, do kter´ ych budeme cht´ıt testovac´ı data uloˇzit. V kroku 3 nastavujeme samotn´ y generovac´ı proces. Je moˇzn´e nastavit urˇcit´e procento pol´ı jako NULL, umoˇzn ˇuje r˚ uzn´ ym typ˚ um pol´ı nastavit r˚ uzn´e postupy - napˇr. pol´ım typu string lze nastavit masku, int pol´ım pˇr´ır˚ ustek atd. M˚ uˇzeme nechat generovat ˇcistˇe n´ahodn´a data, nebo pˇr´ır˚ ustkov´ a data, nebo data ze seznamu. Pot´e uˇz zb´ yv´ a jen spustit generovac´ı proces. Jm´ena jsem z´ıskal ze str´anek ministerstva vnitra, kter´e m´a na sv´em webu seznam jmen a jejich ˇcetnost. (http://www.mvcr.cz/sprava/informat/cetnost/index.html) Adresy jsem vytvoˇril s´am. Rodn´a ˇc´ısla jsem generoval zcela n´ahodnˇe a nerozliˇsoval muˇzsk´ aa ˇzensk´a. Nˇekdo tedy m˚ uˇze m´ıt ˇzensk´e a naopak.
5.3
Zaveden´ı bugtracker aplikace
Po 3 mˇes´ıc´ıch provozu se uk´azalo, ˇze je dobr´e pouˇz´ıt nˇejak´ y syst´em pro zpracov´ an´ı chyb a poˇzadavk˚ u uˇzivatel˚ u. Zvolil jsem opensource bugtracking syst´em Mantis. Kaˇzd´ y uˇzivatel m´a sv˚ uj u ´ˇcet a hl´as´ı chyby, kter´e nalezne, jejich z´avaˇznost, popˇr. m˚ uˇze pˇridat i nˇejak´ y soubor napˇr. screenshot aktu´aln´ı obrazovky. Tak vznikne seznam probl´em˚ u, kter´e je tˇreba ˇreˇsit. Syst´em umoˇzn ˇuje tˇr´ıdˇen´ı probl´em˚ u dle d˚ uleˇzitosti, d´elky zpracov´ an´ı, stavu, ve kter´em se nach´ az´ı atd.
5.4
V´ ysledky
Od ostr´eho zaveden´ı do provozu na podzim 2006 se do souˇcasnosti v syst´emu neobjevily ˇz´ adn´e kritick´e chyby, kter´e by si vynutily v´ yrazn´e zmˇeny v k´odu.
20
´ ER ˇ KAPITOLA 6. ZAV
6 Z´ avˇ er Aplikace obsahuje vˇsechny poˇzadovan´e funkce. Jej´ı nedostatky jsou zp˚ usobeny omezen´ ym ˇcasem k realizaci a ˇcast´ ymi ˇz´adostmi o pˇrid´av´an´ı nov´ ych funkc´ı. Pˇrestoˇze je ps´ana univerz´alnˇe, aplikace nem´a zˇrejmˇe v´ yznam pro nikoho jin´eho neˇz pro objednatele. Kaˇzd´a firma m´a sv´e poˇzadavky a pro ty by si musela produkt upravit. V tomto projektu budu pokraˇcovat, protoˇze se re´alnˇe pouˇz´ıv´ a. Jsou v nˇem data v´ıce neˇz 2000 z´akazn´ık˚ u a v´ıce neˇz 3000 zaˇr´ızen´ı. V budoucnu tedy poˇc´ıt´ am s dalˇs´ımi u ´pravami - v souˇcasn´e dobˇe pracuji na automatick´em pˇr´ıjmu plateb od z´akazn´ık˚ u pˇres syst´em eBanky, ale do odevzd´an´ı t´eto pr´ace ho nestihnu dokonˇcit. Do dalˇs´ıch verz´ı pl´anuji implementovat funkci zpˇet, kter´a by se vr´atila do pˇredchoz´ıho okna a pak kompletn´ı pˇredˇel´ an´ı do v´ıceokenn´e aplikace. Tak´e uvaˇzuji o vyuˇzit´ı uloˇzen´ ych procedur, kter´ ymi bych odstranil SQL injection a tak´e urychlil prov´adˇen´ı sloˇzitˇejˇs´ıch pˇr´ıkaz˚ u. O reorganizaci datab´aze ˇci pˇreps´an´ı cel´e aplikace v souˇcasnosti neuvaˇzuji, pˇrestoˇze by byl v´ ysledkem pˇekn´ y a dobˇre ˇciteln´ y k´od, nebot’ pˇr´ınos pro uˇzivatele by nebyl velk´ y. Budoucnost je v d´ılˇc´ıch oprav´ach chyb a pˇrid´av´an´ı nov´ ych modul˚ u. Nov´ y modul se nap´ıˇse jako nov´e okno, aby se dal pouˇz´ıt v pˇr´ıpadn´e dalˇs´ı aplikaci.
KAPITOLA 7. LITERATURA
21
7 Literatura [1] Cstug - cs tex users group - hlavn´ı str´anka. http://www.cstug.cz/. [2] Grafick´a skupina k336 - pokyny pro psan´ı diplomek . http://www.cgg.cvut.cz/publications/diplom/Pokyny/. [3] Informace o clickonce technologii . http://msdn2.microsoft.com/en-us/netframework/aa497348.aspx. [4] Informace o programovac´ım jazyku c# . http://cs.wikipedia.org/wiki/Csharp. [5] Informace o programovac´ım jazyku java . http://cs.wikipedia.org/wiki/Java. [6] Jak na bibtex - n´avody grafick´e skupiny . http://sgi.felk.cvut.cz/~felkel/Bibtex/jak_bib.html. [7] Latex - online manu´al. http://www.cstug.cz/latex/lm/frames.html. [8] Pokyny pro psan´ı bakal´aˇrsk´ ych a magistersk´ ych z´avˇereˇcn´ ych prac´ı na katedˇre poˇc´ıtaˇc˚ u . https://info336.felk.cvut.cz. [9] C. Nagel. C# 2005 - Programujeme profesion´ alnˇe. Computer Press a.s., volume = 1, address = n´am. 28. dubna 48, 635 00 Brno, CZ, edition = 1th, year = 2006, note = in Czech,. ˇ anek o moˇznostech rozdˇelov´ [10] R. Podgorn´ y. Cl´ an´ı p´asma pomoc´ı htb , 2003. http://www.root.cz/clanky/htb-jemny-uvod/. [11] J. Price. C# programov´ an´ı datab´ az´ı. Grada Publishing a.s., volume = 1, address = U Pr˚ uhonu 22, Praha 7, CZ, edition = 1th, year = 2005, note = in Czech,. ˇ ak. Cl´ ˇ anek o histori vzniku db [12] K. Z´ , 2001. http://www.root.cz/clanky/historie-relacnich-databazi/.
22
KAPITOLA 7. LITERATURA
ˇ YCH ´ DODATEK A. SEZNAM POUZIT ZKRATEK
23
A Seznam pouˇ zit´ ych zkratek HTB Hierachical token bucket (Metoda rozdˇelov´ an´ı p´asma zaˇr´ızen´ım) ISP Internet Service Provider (Poskytovatel internetov´ ych sluˇzeb) VoIP Voice over IP (Pˇrenos hovor˚ u pomoc´ı IP protokolu) IP Internet Protocol (Protokol, pomoc´ı kter´eho spolu komunikuj´ı vˇsechna zaˇr´ızen´ı v Internetu) ODBC Open Database Connectivity (Standardizovan´e softwarov´e API pro pˇr´ıstup k datab´azov´ ym syst´em˚ um) API Application Programming Interface (Rozhran´ı pro programov´ an´ı aplikac´ı) UML Unified Modeling Language (Grafick´ y jazyk pro vizualizaci, specifikaci, navrhov´ an´ı a dokumentaci programov´ ych syst´em˚ u) ˇ ızen´ı datov´ QoS Quality of Service (R´ ych tok˚ u v s´ıti) ´ redn´ı v´ CPU Central processing unit (Ustˇ ykonn´ a jednotka poˇc´ıtaˇce, kter´a ˇcte z pamˇeti instrukce a na jejich z´akladˇe vykon´ av´ a program) RAM Random Access Memory (Pamˇet’ s libovoln´ ym (n´ahodn´ ym) pˇr´ıstupem) DB Database (Datab´aze) RAID Redundant Array of Independent Disks (V´ıcen´ asobn´e diskov´e pole nez´avisl´ ych disk˚ u) GB Gigabyte (Mnoˇzstv´ı dat - 1GB= mathrm10exp9 nebo mathrm2exp30 byt˚ u) SQL Structured Query Language (Strukturovan´ y dotazovac´ı jazyk) SIP Session Initiation Protocol (Protokol pro inicializaci relac´ı) PDF Portable Document Format (Form´ at pro pˇrenositeln´e dokumenty) DB Database (Datab´aze) PITR Point In Time Recovery WAL Write Ahead Log .. .
24
ˇ YCH ´ DODATEK A. SEZNAM POUZIT ZKRATEK
DODATEK B. DIAGRAMY
B Diagramy B.1
Schemata DB
B.1.1
Star´ a DB
B.1.2
Nov´ a DB
B.2
Dynamick´ y model
B.2.1
USE Case model
B.2.2
Activity diagram
25
26
DODATEK B. DIAGRAMY
Obr´azek B.1: Schema DB - Star´a DB
DODATEK B. DIAGRAMY
Obr´azek B.2: Nov´e schema DB 1/5
27
28
DODATEK B. DIAGRAMY
Obr´azek B.3: Nov´e schema DB 2/5
DODATEK B. DIAGRAMY
Obr´azek B.4: Nov´e schema DB 3/5
29
30
DODATEK B. DIAGRAMY
Obr´azek B.5: Nov´e schema DB 4/5
DODATEK B. DIAGRAMY
Obr´azek B.6: Nov´e schema DB 5/5
31
32
DODATEK B. DIAGRAMY
Obr´azek B.7: USE CASE diagram
DODATEK B. DIAGRAMY
33
Obr´azek B.8: Activity diagram
34
DODATEK B. DIAGRAMY
ˇ ´ PR ˇ ´IRUCKA ˇ DODATEK C. UZIVATELSK A
35
C Uˇ zivatelsk´ a pˇ r´ıruˇ cka C.1
Logovac´ı obrazovka
Obr´azek C.1: Login screen
Volba poboˇcka vol´ı, jakou poboˇcku chceme spravovat - je moˇzn´e m´ıt v´ıce partnersk´ ych firem, kter´e sd´ılej´ı informace o u ´ˇctech uˇzivatel˚ u a nastaven´ı dns, ale agendu faktur, omezen´ı rychlost´ı a evidenci plateb vedou oddˇelenˇe. Volba tunel otv´ır´ a spojen´ı na lok´aln´ım poˇc´ıtaˇci, na portu 5433. Je tedy moˇzn´e pouˇz´ıt ssh tunel vytvoˇren´ y napˇr. pomoc´ı putty, a pˇripojit se k datab´azi zvenku, odkud by se jinak pˇripojen´ı z d˚ uvodu firewallu nepodaˇrilo vytvoˇrit. Volba testovac´ı dohled nen´ı vˇzdy funkˇcn´ı, slouˇz´ı pˇredevˇs´ım pro potˇreby program´atora a betatestingu nov´ ych modul˚ u a funkc´ı.
ˇ ´ PR ˇ ´IRUCKA ˇ DODATEK C. UZIVATELSK A
36
C.2
Obrazovka Z´ akazn´ıci
Obr´azek C.2: Z´akazn´ıci
Umoˇzn ˇuje pˇridat nov´e z´akazn´ıky, vyhled´avat podle mnoha parametr˚ u a vytisknout jejich sestavu. Poklep´an´ım na ˇr´adek se z´akazn´ıkem se objev´ı obrazovka detail z´akazn´ıka.
ˇ ´ PR ˇ ´IRUCKA ˇ DODATEK C. UZIVATELSK A
C.3
37
Obrazovka detail z´ akazn´ıka
Obr´ azek C.3: Z´akazn´ıci detail
Zde jsou na jednom m´ıstˇe pˇrehlednˇe zobrazeny veˇsker´e informace o z´akazn´ıkovi s moˇznost´ı jejich editace. V prvn´ı tˇretinˇe jsou informace o z´akazn´ıkovi a pak tlaˇc´ıtkov´ y ovl´ adac´ı panel. Pod touto ˇc´ast´ı je pˇrehled sluˇzeb, kter´e m´a z´akazn´ık objedn´any, n´asledov´ an pˇrehledem pˇripojen´ ych zaˇr´ızen´ı a uˇzivatelsk´ ymi u ´ˇcty. Pokud z´akazn´ık˚ uv stav pˇrejde do stavu aktivn´ı, je uˇzivateli zˇr´ızen u ´ˇcet a je mu posl´an email s pˇrihlaˇsovac´ımi u ´daji. Kliknut´ım na tlaˇc´ıtka pˇr´ıdat/editovat sluˇzbu, pc, u ´ˇcet se otevˇrou obrazovky sluˇzba, PC, uˇzivatelsk´e u ´ˇcty.
ˇ ´ PR ˇ ´IRUCKA ˇ DODATEK C. UZIVATELSK A
38
C.4
Obrazovka PC
Obr´azek C.4: Pˇridat zaˇr´ızen´ı - Z´akazn´ıci
Umoˇzn ˇuje pˇridat/editovat zaˇr´ızen´ı z´akazn´ıka. Pˇri zad´av´ an´ı nov´eho zaˇr´ızen´ı je nutn´e nejprve vyplnit pole pˇripojeno k, kter´e po zvolen´ı vygeneruje v poli IP voln´e IP adresy ze zvolen´eho rozsahu a t´ım se zabr´an´ı zbyteˇcn´ ym chyb´ am. Zaˇskrt´ av´ atko inet account ud´av´ a, m´a-li dan´e zaˇr´ızen´ı pˇr´ıstup do internetu, MAC znaˇc´ı, ˇze MAC adresa tohoto zaˇr´ızen´ı mus´ı b´ yt povolena na AP, ke kter´emu je pˇripojen a DNSREV znaˇc´ı povolen´ı reverzn´ıho DNS z´aznamu. Monitor ud´av´a, v jak´e skupinˇe pro dohled nad s´ıt´ı je zaˇr´ızen´ı.
ˇ ´ PR ˇ ´IRUCKA ˇ DODATEK C. UZIVATELSK A
C.5
39
Obrazovka faktury
Obr´ azek C.5: Faktury
V t´eto obrazovce je zobrazen pˇrehled faktur a souˇcet fakturovan´ ych ˇc´ astek bez DPH. V horn´ı ˇ ˇc´ıslu ˇc´asti okna je moˇznost hled´an´ı. Hledat lze podle mnoha krit´eri´ı - ˇc´ asti jm´ena, ˇc´ısla nebo ICO faktury. Hled´an´ı lze omezit na faktury, kter´e jsou v urˇcit´em stavu - Otevˇren´e, Vyfakturovan´e, Zaplacen´e atd. a tak´e podle toho, zda je na faktuˇre vy´ uˇctov´ ana sluˇzba VoIP. Toto cel´e lze pak omezit na rok, ve kter´em doˇslo k fakturaci. V doln´ı ˇc´ asti okna jsou volby vytvoˇrit novou fakturu, hromadn´a fakturace, detail vybran´e faktury, v´ ytisk vˇsech vyfakturovan´ ych faktur a smaz´an´ı faktur. Upozornˇen´ı: Volba vytiskni vˇsechny vyfakturovan´e m˚ uˇze zp˚ usobit doˇcasn´e zpomalen´ı poˇc´ıtaˇce, v z´avislosti na mnoˇzstv´ı faktur splˇ nuj´ıc´ı krit´eria. Hromadn´a fakturace otevˇre nov´e okno - hromadn´a fakturace. Smazat lze jen faktury, kter´e jsou otevˇren´e, tj. nemaj´ı jeˇstˇe pˇridˇelen´e ˇc´ıslo faktury. Moˇznosti tisku v tomto oknˇe: Je umoˇznˇen tisk vybran´ ych faktur. Oznaˇc´ıme-li si ˇr´adky s fakturami a pot´e klikneme na tlaˇc´ıtko tisk faktur, vygenerujeme pdf sestavu vybran´ ych faktur, zcela analogicky pokud klikneme na tisk pokladn´ıch doklad˚ u, z´ısk´ ame sestavu vybran´ ych pokladn´ıch doklad˚ u. POZOR! Pokud vybereme i faktury, kter´e nemaj´ı ˇc´ıslo faktury (event. pokladn´ı doklad), nebudou br´any v potaz, tj. syst´em negeneruje faktury pˇres tuto volbu. Posledn´ı moˇznost´ı v tomto oknˇe je tisk pˇrehledu faktur, v´ ysledkem je pdf sestava s ˇc´ısly faktur, ˇc´ astkou a u ´daji o z´akazn´ıkovi.
ˇ ´ PR ˇ ´IRUCKA ˇ DODATEK C. UZIVATELSK A
40
C.6
Okno platby
Obr´azek C.6: Platby
Obr´azek C.7: Platby Detail
V tomto oknˇe jsou evidov´any platby z´akazn´ık˚ u. Lze si filtrovat mˇes´ıˇcn´ı, ˇctvrtletn´ı, roˇcn´ı platby, platby v urˇcit´em roce a platby urˇcit´ ych z´akazn´ık˚ u, popˇr. uk´azat dluˇzn´ıky. Nalezen´e poloˇzky je moˇzn´e vytisknout do pdf souboru. Pokud poklepeme na ˇr´ adek s platbou, otevˇre se okno s detailem plateb a moˇznost´ı editace, nebo program zahl´as´ı chybu, ˇze ˇr´ adek je moment´ alnˇe pouˇz´ıv´ an jin´ ym uˇzivatelem. Program monitoruje pˇr´ıstup uˇzivatel˚ u k platb´am a zamezuje souˇcasn´e editaci - aby nedoch´azelo k pˇrepisov´an´ı.
ˇ ´ PR ˇ ´IRUCKA ˇ DODATEK C. UZIVATELSK A
C.7
41
Obrazovka kalend´ aˇ r
Obr´ azek C.8: Kalend´aˇr
Kalend´aˇr je urˇcen k pl´anov´an´ı u ´kol˚ u. Uˇzivatel si m˚ uˇze vytvoˇrit sv˚ uj u ´kol a m˚ uˇze si k sobˇe pˇriˇradit libovoln´ y poˇcet zamˇestnanc˚ u, kteˇr´ı mu s u ´kolem pomohou. T´ım se jim objev´ı tento u ´kol jako aktivn´ı. Urˇc´ı, kdy u ´kol zaˇc´ın´ a a kdy konˇc´ı a po ukonˇcen´ı ho oznaˇc´ı jako hotov´ y. Kalend´aˇr umoˇzn ˇuje hled´an´ı podle datumu - dnes, tento t´ yden, hled´an´ı u ´kol˚ u, kter´e vedu a tisk vybran´ ych u ´kol˚ u.
ˇ ´ PR ˇ ´IRUCKA ˇ DODATEK C. UZIVATELSK A
42
C.8
Obrazovka sklad
Obr´ azek C.9: Sklad
Zde se monitoruj´ı veˇsker´e pohyby ve skladu, lze vyhled´avat, pˇrid´ avat nov´e poloˇzky a tisknout pˇr´ıjemky a v´ ydejky. Pˇri tisku pˇr´ıjemek/v´ ydejek lze vybrat ˇr´ adky, z kter´ ych chceme vytvoˇrit dokument. V poli na co jsou uvedeni z´akazn´ıci a lokality - m´ısta, na kter´ ych je nˇejak´e zaˇr´ızen´ı. Pokud chceme pˇridat novou poloˇzku, mus´ıme tak uˇcitit pˇres obrazovky zaˇr´ızen´ı, popˇr. z´akazn´ıci. Poloˇzky kategorie a typ se odv´ıjej´ı z pouˇz´ıvan´ ych zaˇr´ızen´ı. Nejprve vybereme kategorii a n´aslednˇe se zmˇen´ı v´ ybˇer v poli typ. Chceme-li pˇridat novou kategorii, popˇr. nov´ y typ zaˇr´ızen´ı, jednoduˇse ho nap´ıˇseme do pol´ıˇcka a zm´aˇckneme tabul´ator. T´ım se u ´daj zanese do datab´aze.
ˇ ´ PR ˇ ´IRUCKA ˇ DODATEK C. UZIVATELSK A
C.9
43
Traffic kontrol
Obr´azek C.10: Traffic Control
Tato obrazovka slouˇz´ı k ovl´ad´an´ı HTB (Hierarchical Token Bucket). Tato metoda dovoluje stromov´e ˇrazen´ı front - p˚ ujˇcov´an´ı voln´e konektivity z nadˇrazen´ ych tˇr´ıd a nastavov´ an´ı priorit. Je nutn´e dodrˇzovat urˇcit´a pravidla: - potomci nemohou b´ yt na r˚ uznem routeru - up a down nem˚ uˇze b´ yt 0 - potomek uz nem˚ uˇze m´ıt potomka - jm´ena skupin nemohou b´ yt duplicitn´ı parent mus´ı m´ıt v parent vˇzdy 0 - pokud je potomek povolen, nem˚ uˇze b´ yt parent zak´az´ an - up a down je rychlost v kbps pˇriˇcemˇz souˇcet tˇechto rychlost´ı u potomk˚ u nesm´ı pˇres´ ahnout rychlost parenta
ˇ ´ PR ˇ ´IRUCKA ˇ DODATEK C. UZIVATELSK A
44
C.10
Obrazovka zaˇ r´ızen´ı
Obr´azek C.11: Zaˇr´ızen´ı
Umoˇzn ˇuje kompletn´ı spr´avu pˇripojen´ ych zaˇr´ızen´ı. Vyhled´av´ a podle vˇsech d˚ uleˇzit´ ych krit´eri´ı, a umoˇzn ˇuje tisk nalezen´ ych v´ ysledk˚ u. Kliknut´ım na ukaˇz z´akazn´ıka se pˇrepne pohled do okna detail z´akazn´ıka, kter´emu aktu´aln´ı zaˇr´ızen´ı patˇr´ı. Pˇri zad´av´ an´ı nov´eho zaˇr´ızen´ı je dobr´e zadat poloˇzku connect to, na jej´ımˇz z´akladˇe se n´aslednˇe tvoˇr´ı hierarchick´ y strom zapojen´ı. Pole lokalita obsahuje vˇsechny jiˇz pouˇzit´e lokality v datab´azi, ale lze i dopsat novou.
ˇ ´ PR ˇ ´IRUCKA ˇ DODATEK C. UZIVATELSK A
C.11
45
Obrazovka z´ avady
Obr´ azek C.12: Z´avady Potˇrebn´a pro pracovn´ıky hotline a servisu. Veˇsker´e z´avady nahl´aˇsen´e z´akazn´ıky jsou zde evidov´any, vˇcetnˇe ˇreˇsen´ı a uzavˇren´ı. Lze pˇresouvat svoje z´avady na jin´e pracovn´ıky.
C.12
Sestavy
Syst´em umoˇzn ˇuje r˚ uzn´e tisky sestav: Pˇr´ıchoz´ı platby Nov´ı z´akazn´ıci IP telefonie Z´avady Vystaven´e faktury Z´akazn´ıci se smlouvou na dobu urˇcitou XLS - z´akazn´ıci XLS - vydan´e faktury
46
ˇ ´ PR ˇ ´IRUCKA ˇ DODATEK C. UZIVATELSK A
ˇ ˇ EHO ´ DODATEK D. OBSAH PRILO ZEN CD
D Obsah pˇ riloˇ zen´ eho CD Na CD jsou tyto adres´aˇre a soubory: • install - adres´aˇr s instalaˇcn´ım programem • src - adres´aˇr se zdrojov´ ymi k´ody aplikace – install.sql - sql skript pro nainstalov´ an´ı datab´aze • text - adres´aˇr obsahuj´ıc´ı vlastn´ı text BP – bak.zip - zabalen´ y zdrojov´ y k´od dokumentu v syst´emu LaTeX – bak.pdf - text BP v pdf form´atu – bak.dvi - text BP v dvi form´atu • readme.txt - popis adres´aˇr˚ u, soubor˚ u a popis jejich u ´ˇcelu • install.txt - instalaˇcn´ı pokyny • index.html - str´anka, kter´a odkazuje na vˇsechny ˇc´ asti projektu
47