České vysoké učení technické v Praze Fakulta elektrotechnická
BAKALÁŘSKÁ PRÁCE
Robot a server sms pro mobilního operátora Michal Šnajdar
Vedoucí práce: Ing. Josef Semrád
Studijní program: Elektrotechnika a informatika strukturovaný bakalářský Obor: Informatika a výpočetní technika červen 2009
Poděkování Na tomto místě bych chtěl poděkovat své rodině a přítelkyni, kteří mi při realizaci této práce poskytovali velkou podporu a motivaci. Dále bych chtěl poděkovat Ing. Josefu Semrádovi za vedení mé bakalářské práce, vstřícné jednání a profesionální rady, které vedly k úspěšnému dokončení mého úsilí.
Prohlášení Prohlašuji, že jsem svou bakalářskou práci vypracoval samostatně a použil jsem pouze podklady uvedené v přiloženém seznamu. Nemám závažný důvod proti užití tohoto školního díla ve smyslu §60 Zákona č. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o změně některých zákonů (autorský zákon).
V Praze dne 1.6. 2009
…............................................
Abstrakt Tato bakalářská práce popisuje analýzu, návrh a implementaci softwarového produktu a rozhraní pro hromadné zpracování sms zpráv tuzemských GSM sítí. Práce si klade za cíl navrhnout rozhraní umožňující propojit systém s dalšími službami snadným a platformě nezávislým způsobem.
Abstract This bachelor thesis describes the analysis, design and implementation of software product and interface for mass process of sms messages internal GSM networks. The intention of this study is design interface make possible interconnect this system with any other services by easy and multiplatform way.
5
Obsah 1 Úvod...............................................................................................................................7 2 Popis problému, vymezení cílů a požadavků.................................................................8 2.1 Popis řešeného problému..................................................................................................8 2.2 Cíl a požadavky bakalářské práce.....................................................................................8
3 Popis možností bakalářské práce ve vztahu k vytyčeným cílům.................................10
3.1 SMS brána pomocí GSM zařízení[1]..............................................................................10 3.2 SMS brána pomocí TCP/IP spojení do SMS centra[2]....................................................11
3.2.1 Vodafone sms připojení[2]............................................................................11 3.2.2 Tmobile SMSc Direct[3].............................................................................12 3.2.3 O2 SMS connector[5]...................................................................................12 4 Rešeršní zpracování existujících implementací...........................................................13 4.1 SMS server tools[6]........................................................................................................13 4.2 Tmobile message analyzer[7]........................................................................................14 4.3 O2 sms manager[8].........................................................................................................14 4.4 O2 SMS Mobil Change[9]..............................................................................................15
5 Zvolená metoda zpracování..........................................................................................16 6 Analýza a návrh implementace....................................................................................17 6.1 Volba implementačního prostředí....................................................................................17 6.2 Volba rozhraní.................................................................................................................17 6.3 Katalog požadavků.........................................................................................................18
6.3.1 Katalog funkčních požadavků......................................................................18 6.3.2 Katalog nefunkčních požadavků..................................................................18
6.4 Diagram případů užití.....................................................................................................19 6.5 Diagram tříd....................................................................................................................21 6.6 Databázový model..........................................................................................................22 6.7 Stavový diagram sms zprávy..........................................................................................23 6.8 Sekvenční diagramy........................................................................................................25
6.8.1 Sekvenční diagramy sms serveru..................................................................25 6.8.2 Sekvenční diagram sms robota.....................................................................27
6.9 Diagram nasazení...........................................................................................................28 6.10 Vyhodnocování pravidel................................................................................................28 6.11 Optimalizace navrženého systému.................................................................................29
7 Popis implementace nestandardních částí....................................................................31 7.1 Implementace asynchronních signálů..............................................................................31 7.2 Implementace O2 sms connector[12]..............................................................................32
8 Testování......................................................................................................................33 8.1 Test chybných dat............................................................................................................33 8.2 Test kompatibility...........................................................................................................33 8.3 Test zátěže......................................................................................................................33
9 Srovnání s existujícími řešeními..................................................................................34 10 Závěr..........................................................................................................................35 11 Seznam zkratek a slovník pojmů................................................................................36 12 Použité zdroje.............................................................................................................37 13 Seznam obrázků.........................................................................................................38 14 Seznam tabulek..........................................................................................................39 15 Přílohy........................................................................................................................40
6
1 Úvod Moderní technologie zasahují do našich životů dnes a denně, proto je více než nutné věnovat pozornost nejenom dopadu na lidský faktor, ale také hledat nové možnosti, jak současné technologie využít v jiných souvislostech než pro jaké byly určeny. Každoročně vzrůstající počet prodaných mobilních telefonů a obrovské množství zákazníků, které vykazují mobilní operátoři naznačuje, že z mobilní komunikace se stal fenomén, jehož součástí se stal téměř každý z nás. Mobilní komunikace dnes již není jen výsadou určité skupiny lidí, ale právě naopak, stala se součástí životů všech uživatelů napříč společenského postavení, věku, zálib, geografického působení atd. A právě zde se nachází prostor pro nasazení automatického zpracování sms zpráv. Automatické zpracování sms zpráv nám umožňuje vytvořit jistý nový druh masového media, s efektivní a rychlou zpětnou vazbou. Díky obrovské oblibě sms služeb, dostupnosti těchto služeb téměř celoplošně se sms zprávy stávají strategicky výhodné pro různá nasazení. V dnešní komerční sféře můžeme najít instituce, které sms technologii využívají jako doplněk svých služeb, či dokonce jako bezpečností prvek. Vhodným příkladem můžou být například peněžní instituce, které pomocí sms zpráv provádějí validaci bankovních transakcí. Nebo vodohospodářské organizace, které pomocí měřících zařízení s podporou připojeni do GSM sítí centrálně vyhodnocují stav hladiny vod. Nelze opomenout ani instituce, které svůj podnikatelský záměr založili výhradně na poskytování služeb prostřednictvím mobilních technologii. Takovým příkladem mohou být různé reklamní agentury či pořadatelé sms soutěží a průzkumů veřejného mínění.
7
2 Popis problému, vymezení cílů a požadavků 2.1 Popis řešeného problému Různých způsobů nasazení sms technologie je nespočet. Bohužel softwarových prostředků, kterými lze automatické zpracování provádět je velmi málo. Většinou se jedná o prostředky, které jsou funkčně, platformě, licenčně nebo finančně omezené. Velkou nevýhodou většiny dostupných produktů je jejich obtížnost napojení na jiné systémy a služby. Tento nedostatek většina komerčních institucí řeší investicí do vývoje vlastních systémů, které se stávají knowhow firmy a tudíž jsou dalším potencionálním uživatelům nedostupné.
2.2 Cíl a požadavky bakalářské práce Bakalářská práce si dává za cíl navrhnout softwarový produkt určený pro automatické zpracování sms zpráv. V systému bude robot, který automaticky vyhodnocuje příchozí sms zprávy podle předem definovaných pravidel. Robot musí umět podle klíčových slov odpovídat nejen statickou předem definovanou odpovědí, ale také generovat dynamickou odpověď. Další funkcí robota musí být možnost zaznamenat informace získané od uživatele pro další sekundární zpracování. Nedílnou součástí tohoto softwaru musí být vhodně navržené rozhraní s jehož pomocí bude možno připojit další služby. Rozhraní musí být navrženo způsobem, aby následný potencionální uživatel mohl snadno využívat sms zprávy bez nutnosti dalších znalostí sms technologií, komunikačních protokolů nebo GSM sítí. Jeden z dalších požadavků na toto rozhraní je umožnit propojitelnost bez ohledu na programovací jazyk nebo operační systém, který připojená služba používá. Je zřejmé, že tento požadavek je obtížné striktně dodržet, nicméně bakalářská práce si dává za cíl vhodnou volbou a návrhem tento cíl co nejvíce naplnit.
8
Poslední požadavek, který je kladen na tuto práci je finanční nenáročnost. Výsledný software musí mít co nejmenší pořizovací a provozní náklady. Musí být navržen ve většinové míře pomocí volně dostupných technologii a prostředků a měl by být závislý na co nejmenším množství licencí.
9
3 Popis možností bakalářské práce ve vztahu k vytyčeným cílům Sms brána je klíčová záležitost nutná k úspěšnému řešení této práce. Jedná se o prostředníka mezi našim systémem a mobilními zařízeními našich uživatelů. Tento prostředník nám umožňuje spojení do GSM sítě a využití sms služby prostřednictvím mobilních operátorů. V současné době existují dva různé způsoby jak sms bránu vytvořit. Popis těchto způsobu včetně jejich výhod a nevýhod je zaznamenán v následujících kapitolách.
3.1 SMS brána pomocí GSM zařízení[1] Toto řešení vyžaduje mít GSM zařízení podporující technologii sms zpráv, připojitelnost a podporu pro komunikaci s počítačem, na kterém poběží software pro automatické zpracování sms zpráv. Takovým zařízením může být i obyčejný mobilní telefon, který vyhovuje výše popsaným požadavkům (v dnešní době téměř každý) nebo některé ze specializovaných GSM zařízení, které je přímo hardwarově určeno pro sms bránu. Specializované GSM zařízení mají větší podporu ovladačů a knihoven pro další vývoj softwaru. Nevýhodou těchto zařízení je, že se nevyrábějí jako samostatná sms brána, ale jako sofistikovaný GSM modul s podporou hlasových služeb a dalších technologii (EDGE/GPRS, UMTS, aj.) což je zobrazeno v jeho ceně. Propustnost sms zpráv se u tohoto typu sms brány pohybuje v jednotkách sms za sekundu, v závislosti na použitém hardwaru. ●
●
výhody: ○
malé náklady na provoz
○
možnost hardwarového rozšíření na specifické účely
nevýhody ○
malá propustnost sms/sekundu
○
nutné GSM zařízení
○
nutno řešit komunikaci mezi počítačem a GSM zařízením
10
3.2 SMS brána pomocí TCP/IP spojení do SMS centra[2] V případě použití této varianty nemusíte řešit jakékoliv problémy s výběrem GSM zařízení. Jediný výrazný požadavek k zajištění chodu této brány je internetové připojení nebo vyhrazená linka. Celá sms brána je pouze softwarového charakteru, založena na přímém spojení do centrály mobilního operátora pomocí TCP/IP protokolu a definovaných protokolů vyšších vrstev. Propustnost této varianty je výrazně větší oproti GSM zařízení. Pohybuje se v desítkách sms za sekundu.
●
●
výhody ○
až desítky sms za sekundu
○
není nutný žádný přídavný hardware
nevýhody ○
nutné připojení k internetu
V současné době všichni majoritní mobilní operátoři v České republice tento druh služby nabízejí. Stručný, nicméně věcný výčet vlastností se nachází v následujících kapitolách.
3.2.1 Vodafone sms připojení[2] ●
odesílání zpráv do sítí operátorů na území ČR i zahraničí
●
příjem zpráv omezen pouze na zákazníky Vodafone
●
komunikační protokol HTTP/XML
●
telefonní číslo ve tvaru 6XXX nebo 9XXX
11
3.2.2 Tmobile SMSc Direct[3] ●
odesílání zpráv do všech tuzemských i zahraničních sítí
●
příjem zpráv ze sítě Tmobile
●
komunikační protokol EMI [4]
●
čtyřmístné telefonní číslo
●
možnost službu rozšířit o plnohodnotný příjem zpráv ze všech sítí s využitím TMobile aplikace pro pořádání a organizováni sms soutěží. Toto rozšíření má název Tmobile SMS connect
3.2.3 O2 SMS connector[5] ●
odesílání zpráv do všech sítí na území České republiky
●
příjem zpráv ze všech sítí na území České republiky
●
komunikační protokol HTTP nebo XML
●
telefonní číslo ve tvaru 1991xxx a současně číslo ve formátu +420720001xxx
●
možnost rozšíření služby o posílání sms zpráv s binárním obsahem
12
4 Rešeršní zpracování existujících implementací Téměř každý mobilní telefon zakoupený v dnešní době je jednoduše připojitelný k počítači a obsahuje ve svém příslušenství také softwarovou aplikaci pro práci s přístrojem. Většinou se jedná o jednoduchou klientskou aplikaci, která umožňuje zálohovat obsah mobilního telefonu (kontakty, zprávy, schůzky, poznámky). Některé z nich umožňují jednoduché zasílání zpráv z počítače přes daný přístroj či dokonce i nastavení automatické odpovědi na příchozí zprávu. Vzhledem k tomu, že tyto aplikace jsou určeny výhradně pro daný konkrétní typ mobilního přístroje. A současně nespadají do funkční kategorie, kterou se zabývá tato práce, nebudeme se jim nadále věnovat. Jejich existence je uváděna pouze pro úplnost. V této kapitole bude věnována pozornost převážně softwarovým řešením, které dodávají tuzemští mobilní operátoři k jejich sms centrům uvedených v kapitole 3.2 SMS brána pomocí TCP/IP spojení do SMS centra, ale také některým významným produktům pracujících s GSM externím zařízením. Celá rešerše si klade za cíl zmapovat hlavně kategorii produktů umožnující automatizované zpracování sms zpráv popřípadě možnost připojit částečné nebo úplné spektrum dalších služeb.
4.1 SMS server tools[6] SMS server tools je aplikace, která velmi jednoduchou a účinnou metodou zajišťuje sms bránu a připojení na další služby. Připojení těchto služeb je dáno pouhým zápisem a čtením souborů umístěných v definovaných adresářích. Soubory mají specifický formát a jejich obsah je automaticky zpracován. Aplikace pracuje se značným množstvím GSM modulů a je dostupná ve verzi pro Windows i Unix systémy. Značným omezujícím prvkem tohoto způsobu propojení je nutnost provozovat sekundární služby na téže stanici.
13
4.2 Tmobile message analyzer[7] Tmobile message analyzer je software doporučovaný k sms internetovému rozhraní od společnosti Tmobile. Umožňuje zpracování sms a mms zpráv podle kritérií, pořádání hlasovacích soutěží a hromadné rozesílání zpráv. Sytém je vhodně rozdělen na část výkonnou(backend) a část grafickou(frontend). Výkonná část je dostupná ve verzi pro operační systémy Windows i Linux. Tato část tvoří serverovou funkci, která vykonává definovaná pravidla. Grafická je bohužel pouze pro Windows a umožňuje snadné a intuitivní nastavení výkonné části. Jedna z výhod tohoto produktu je existence modulu pro připojení některých podporovaných mobilních telefonů. Modul podporuje propojení přes COM port, bluetooth nebo USB a plně nahrazuje použití internetového sms centra. Bohužel značnou nevýhodou je striktní omezení modulu na sim karty Tmobile. Propojení tohoto systému s dalšími službami není intuitivně podporováno, ale lze jej docílit přes emailovou schránku. Software podporuje protokol SMTP a POP3 s jehož pomocí lze v definovaných časových intervalech synchronizovat sms bránu s emailovou schránkou. Toto řešení ovšem přináší spoustu nevýhod. Nutnost provozovat emailový server, problematické nastavování přístupových práv schránky a také synchronizační interval, který může u některých způsobů nasazení mít omezující charakter.
4.3 O2 sms manager[8] O2 sms manager je aplikace distribuovaná společností O2, která pracuje výhradně s jejich sms centrem přístupným skrz internet popsaným v kapitole 3.2.3 O2 SMS connector. Aplikace je určena spíše jako klientský sms manager, pomocí jíž lze přehledně přijímat, odesílat, a archivovat sms zprávy. Funkci filtrů a vyhodnocování pravidel lze taktéž využívat. Nicméně kritéria pro vyhodnocování sms zpráv jsou zadávána pomocí regulárních výrazů, což pro některé uživatele může být značná komplikace. Automatické odpovědi jsou pouze statického charakteru a připojitelnost sekundárních služeb není podporována. Lze řešit pouze filtrem umožňujícím přeposlat 14
sms zprávu do definované emailové schránky. Aplikace je však vynikající volbou pro osobní nenáročné užití, nicméně je bohužel dostupná pouze pro operační systém Windows.
4.4 O2 SMS Mobil Change[9] O2 SMS Mobil Change je serverový síťový systém distribuovaný opět společností O2 a využívající sms centrum dostupné přes internet. Aplikace rozšiřuje možnosti firemních informačních systémů o komunikaci prostřednictvím sms zpráv. Její primární cíl je napojení na elektronickou poštu a možnost využívat sms komunikaci prostřednictvím běžných emailových klientů. Velká výhoda tohoto řešení je možnost zpřístupnit sms komunikaci velkému počtu uživatelů běžným způsobem, na který jsou zvyklí při používání emailové korespondence. Systém disponuje podporou pro připojení k serverům Microsoft Exchange a Lotus Notes a umožňuje pomocí sms dotazů vracet automaticky generované informace získané z daného serveru (kontakty, poznámky, úkoly, schůzky, upozornění). Napojení systému na další služby je možno řešit taktéž emailovou korespondencí. Produkt je určen pro operační systém Windows a značnou nevýhodou může být závislost na dalších licenčně vázaných systémech.
15
5 Zvolená metoda zpracování Po prozkoumání všech dostupných prostředků a možností vedoucích k zdárnému řešení této práce je upřednostňováno řešení pomocí TCP/IP spojení do sms centra mobilního operátora před variantou s GSM zařízením. Hlavními důvody jsou nezávislost na konkretních typech hardwaru a také kapacita přenesených sms zpráv jíž dané technologie disponují. Při volbě vhodného poskytovatele této služby (mobilního operátora) je zvolena varianta od společnosti O2. Důvodem je převážně možnost příjmu zpráv i z konkurenčních mobilních sítí, kvalitní a volně dostupná dokumentace a nejvhodnější finanční dostupnost.
16
6 Analýza a návrh implementace Analýza a návrh, kterým se zabývá tato kapitola je prováděna v korespondenci s knihou UML a unifikovaný proces vývoje aplikací[10]. Při tvorbě diagramů byl použit CASE nástroj Enterprise Architect[11] verze 7.1
6.1 Volba implementačního prostředí Jeden z požadavků a cílů této práce je navrhnout software pomocí volně dostupných prostředků a s co nejmenším počtem závislostí na licenčních produktech. Z tohoto důvodu je jako implementační prostředí zvolena linuxová distribuce. Programovací jazyk je zvolen C++, kvůli silné podpoře linuxových distribucí a objektově orientovanému způsobu programování.
6.2 Volba rozhraní Jako nejvhodnější rozhraní pro daný systém je zvolena relační databáze. Toto řešení nejlépe vyhovuje cílům této práce. Umožňuje připojení služeb nejenom na téže stanici, ale i vzdáleně a to bez ohledu na prostředí, které připojená služba používá. Neopomenutelným důvodem této volby je také silné řízení přístupových práv, kterými současné databázové systémy disponují. Konkrétní databázový systém je zvolen MySQL verze 5, který je dostupný pod bezplatnou licencí. Jeden z důvodů volby MySQL je kvůli dostupnosti API rozhraní pro široké množství programovacích jazyků a také díky jednoduchosti a rychlosti celého systému. Připojitelnost sekundárních služeb k navrhovanému sms systému je tedy řešena zápisem a čtením databázových tabulek.
17
6.3 Katalog požadavků
6.3.1 Katalog funkčních požadavků ●
sytém bude odesílat sms zprávy
●
systém bude přijímat sms zprávy
●
systém bude vyhodnocovat klíčové slovo a posílat statickou odpověď
●
systém bude vyhodnocovat klíčové slovo a posílat dynamickou odpověď
●
systém bude vyhodnocovat klíčové slovo, zaznamenávat získané údaje a posílat statickou odpověď
●
systém bude mít rozhraní pro připojení dalších služeb a vyvíjených systémů
●
systém bude umožňovat zasílat sms zprávy pouze na displej
●
systém bude archivovat všechny příchozí i odchozí sms zprávy
●
systém bude rozdělen na samostatné části
6.3.2 Katalog nefunkčních požadavků ●
systém bude provozován na linuxové distribuci
●
systém bude implementován v jazyce C++
●
rozhraní bude tvořeno MySQL databází
●
rozhraní a sms systém bude provozován na též stanici
●
systém bude odesílat a přijímat zprávy pouze na území ČR
●
sms zprávy budou pouze textového charakteru
●
znaky sms zpráv budou definovány znakovou sadou GSM 03.38
●
sms zprávy budou mít maximálně 160 znaků
●
jednotlivé části systému budou konzolové aplikace
●
konfigurace systému bude pomocí XML souborů
18
6.4 Diagram případů užití
Obr. 6.1: Diagram případů užití
Na obr. 6.1 je zobrazen komplexní pohled na celý navrhovaný systém. Názvy případů užití jsou intuitivní svému obsahu. Popis jednotlivých účastníků je následující. ●
Administrátor Osoba zodpovědná za provoz, správu a konfiguraci celého systému. Administrátor jako jediný účastník má právo nastavovat pravidla a kritéria, podle kterých probíhá automatické zpracování sms zpráv.
19
●
Server První ze dvou samostatných částí systému, která má za úkol přijmout sms zprávy a uložit do databáze. A také odeslat sms zprávy, které jsou připraveny v databázi.
●
Robot Druhá samostatná část systému jejíž úkolem je vyhodnocovat příchozí zprávy podle definovaných pravidel. Součástí vyhodnocení je i vytvoření statické nebo dynamické odpovědi.
●
Uživatel Osoba využívající celý systém prostřednictvím svého mobilního telefonu.
●
Služba Externí služba, aplikace, vyvíjený systém, který pouhým zápisem/čtením databázových tabulek může velmi snadno využívat navrhovaný systém sms zpráv.
20
6.5 Diagram tříd Na obr. 6.2 je vyobrazen komplexní pohled na celý systém pomocí diagramu tříd. Diagram obsahuje všechny navrhované třídy včetně atributů a operací, komunikaci mezi nimi a případnou multiplicitu.
Obr. 6.2: Diagram tříd sms server a robot
21
6.6 Databázový model
Obr. 6.3: Databázový model
Z důvodu, že databáze byla zvolena jako rozhraní daného systému, je velmi důležité přesně definovat databázový model. Na obr. 6.3 je znázorněna definice databázových tabulek, atributů, datových typů, primárních klíčů a vztahů. Popis významu je uveden níže. Model je určen přímo pro MySQL databázi a script pro vytvoření je uveden v kapitole 15 Přílohy. ●
inbox Databázová tabulka obsahuje příchozí sms zprávy. Význam jednotlivých atributů
zobrazuje tabulka 6.1. atribut
význam Identifikační číslo záznamu. Datum a čas vložení záznamu.1 Telefonní číslo odesílatele. Text sms zprávy. Stav sms zprávy. Více v kapitole 6.7 Stavový diagram sms zprávy
id dateTime from message state
Tabulka 6.1: Význam atributů databázové tabulky inbox
●
outbox Databázová tabulka obsahuje odchozí sms zprávy. Význam jednotlivých atributů
zobrazuje tabulka 6.2.
1 tuto informaci lze považovat za časové razítko příchodu sms zprávy do systému
22
atribut
význam Identifikační číslo záznamu. Datum a čas vložení záznamu.2 Telefonní číslo příjemce. Text sms zprávy. Stav sms zprávy. Více v kapitole 6.7 Stavový diagram sms zprávy
id dateTime to message state
Tabulka 6.2: Význam atributů databázové tabulky outbox
●
reactions Databázová tabulka obsahuje reakce mezi příchozí a odchozí zprávou. Význam
jednotlivých atributů zobrazuje tabulka 6.3 atribut id phoneNumb id_inbox id_outbox
význam Identifikační číslo záznamu. Telefonní číslo příjemce(odesilatele) Identifikační číslo záznamu z tabulky inbox. Identifikační číslo záznamu z tabulky outbox.
Tabulka 6.3: Význam atributů databázové tabulky reactions
6.7 Stavový diagram sms zprávy Sms zpráva v rámci celého systému se může nacházet pouze v jednom ze tří definovaných stavů. Stav každé sms zprávy je zaznamenán v databázové tabulce atributem state. Tento atribut může nabývat celočíselné hodnoty 0, 1 nebo 2, které odpovídají stavům znázorněným na obr. 6.4
2 tuto informaci lze považovat za časové razítko zpracování sms zprávy nebo odeslání připojenou službou
23
Obr. 6.4: Stavový diagram sms zprávy
Každá sms zpráva, která vstupuje do systému je inicializována stavem 0 (stav nezpracována). Vstupem do systému se rozumí činnost, kdy je zpráva vložena do databáze, bez ohledu na to, která část systému záznam vložila. Pokud zpráva je příchozí (umístěna v tabulce inbox) tak její zpracování zajistí robot. Dokud nedokončí definované pravidlo, je ve stavu 2 (stav zpracování). Po úspěšném vyhodnocení a zpracování je označena stavem 3 (stav zpracována). Pokud zpráva je odchozí (umístěna v tabulce outbox), tak její zpracování zajistí server. Dokud server úspěšně nedokončí odeslání, je zprávě přiřazen stav 2 (stav zpracování). Po úspěšném odeslání je změněn stav na 3 (stav zpracována). Administrátor je jediný účastník systému, který má možnost zprávy mazat. Tímto opatřením je zajištěna archivace všech zpráv, což byl jeden z požadavků.
24
V případě, že dojde k výpadku serveru, a některé zprávy zůstanou ve stavu 2 (stav zpracování). Jsou nadále tyto zprávy ignorovány, dokud administrátor nezmění jejich stav na 0 (stav nezpracovaná), nebo je nesmaže. Tohle omezení je zavedeno kvůli optimalizaci systému, které se věnuje kapitola 6.11 .
6.8 Sekvenční diagramy 6.8.1 Sekvenční diagramy sms serveru V sms serveru se nacházejí dva typy vláken. První typ vlákna zajišťuje příjem zpráv z sms centra a následné uložení do databáze. Sekvenční spolupráci jednotlivých objektů při příjmu znázorňuje obr. 6.5. Na obr. 6.6 je znázorněna sekvenční spolupráce objektů při odesílání připravených zpráv z databáze. Tuto činnost zajišťuje druhý typ vlákna. Vícevláknovému zpracování se věnuje kapitola 6.11 Optimalizace navrženého systému.
25
Obr. 6.5: Sekvenční diagram sms serveru zobrazující příjem zprávy do systému
Obr. 6.6: Sekvenční diagram sms serveru zobrazující odeslání zprávy ze systému
26
6.8.2 Sekvenční diagram sms robota Na obr. 6.7 je sekvenční postup, který provádí sms robot při zpracování jedné dávky zpráv. Více informací o dávkovém zpracování je uvedeno v kapitole 6.11 Optimalizace navrženého systému.
Obr. 6.7: Sekvenční diagram sms robota zobrazující vyhodnocení zpráv
27
6.9 Diagram nasazení Ucelenou představu o tom, jak budou jednotlivé části systému propojeny, dává obr.6.8. Tento diagram nasazení nezahrnuje další připojené služby.
Obr. 6.8: Diagram nasazení sms serveru a robota
6.10 Vyhodnocování pravidel Sms robot bude vyhodnocovat pravidla podle klíčových slov. Každé pravidlo musí mít definováno klíčové slovo i odpověď. Při vyhodnocování některých pravidel je opět použita databáze jako zdroj nebo uložiště dat. Robot bude pracovat se třemi typy pravidel. ●
pravidlo auto Tento typ pravidla pouze odešle odesilateli definovanou statickou odpověď.
●
pravidlo read Tento typ pravidla načte z databáze požadované hodnoty, doplní je do odpovědi a odešle odesílateli. Klíčové slovo musí být stejné jako název databázové tabulky, ze které čerpá. Slovo uvedené za klíčovým slovem je vyhledávací klíč v databázové tabulce.
28
●
pravidlo write Tento typ pravidla uloží veškerý obsah za klíčovým slovem do databáze a odešle zadanou statickou odpověď. Klíčové slovo musí být stejné jako název databázové tabulky do které se ukládá. Nastavení pravidel i celého systému je prováděno pomocí konfiguračních
souborů. Použití konfiguračních souborů je uvedeno v kapitole 15 Přílohy.
6.11 Optimalizace navrženého systému ●
Asynchronní signály Do systému jsou zapojeny asynchronní signály, které odesílá databáze sms serveru
i robotu, ve chvíli, kdy nastane nějaká definovaná událost v databázových tabulkách. Tímto způsobem vhodně eliminujeme nutnost zavést časový interval a po vypršení kontrolovat obsah databázových tabulek. Časový interval je používán v některých testovaných aplikacích a je považován za nevýhodu. Použitím tohoto řešení omezíme množství zbytečných přístupů do databáze a zrychlíme reakci celého systému.
●
Dávkové zpracování Zpracování sms zpráv bude probíhat v dávkách nikoliv jednotlivě. Systém načte
větší množství zpráv a až dokončí jejich zpracování teprve zapíše změny do databáze. Dávkový způsob snižuje počet přístupů do databáze a urychluje tím zpracování.
●
Vícevláknový provoz Sms robot bude využívat vícevláknové zpracování definovaných pravidel. Aby
nedocházelo k zbytečným časovým ztrátám při zpracování některých pravidel, jejichž vyhodnocení trvá déle, je vícevláknový paralelní provoz vhodnou volbou. Každé vlákno vyhodnocuje jednu dávku. Sms server taktéž bude využívat vícevláknový provoz. Z důvodu, že O2 sms centrum značně omezuje množství současných připojení, je i množství vláken omezeno. Sms server má dva typy vláken. První typ zajišťuje příjem zpráv z sms centra a uložení 29
do databáze. Druhý typ zajišťuje odesílání připravených zpráv z databáze. Odesílání zpráv je rovněž prováděno v dávkách. Veškerá vlákna jsou předpřipravena a udržována v systému po celou dobu běhu. Tímto způsobem užití vláken je značně snížena doba, která by byla potřeba při opakovaném vytváření a rušení vláken.
30
7 Popis implementace nestandardních částí
7.1 Implementace asynchronních signálů Z důvodu, že MySQL databáze nemá žádnou implicitní podporu asynchronních signálů, je třeba tento nedostatek vhodně vyřešit. Řešením je implementace vlastní funkce, registrace této funkce do MySQL a vytvoření triggeru, který zavolá danou funkci po vložení nového záznamu. Posílání signálů probíhá pomocí POSIX fronty. V navrhovaném systému jsou tyto fronty dvě. Jedna pro server a druhá pro robota. V MySQL jsou zaregistrované funkce taktéž dvě. Jedna posílá signál pro robota, druhá pro server. Tělo funkce, která pošle námi definovaný signál NEW pro sms robota je následující.
mqd_t fronta; struct mq_attr mqAtr;
mqAtr.mq_maxmsg = 2; mqAtr.mq_msgsize = 10; fronta = mq_open(FRONTAROBOT, O_WRONLY, &mqAtr); if (fronta == -1) { mq_close(fronta); return 1; }
mq_send(fronta, "NEW", 4, 0); mq_close(fronta); return 0;
Funkce, která posílá signál pro server je obdobná. Kompletní zdrojové kódy a postup jak zkompilovat, zaregistrovat a nastavit trigger je uveden v kapitole 15 Přílohy.
31
7.2 Implementace O2 sms connector[12] Internetové sms centrum od společnosti O2 používá ke komunikaci protokol HTTP verze 1.1 definovaném v RFC2616. Sms centrum používá k předávání hodnot metodu GET i POST. Z důvodu, že metoda GET je limitována svou délkou bude implementovaný systém využívat metodu POST. Při použití metody POST musí být
content-type nastaven na hodnotu
„application/x-www-form-urlencoded“ a definované hodnoty musí být zakódované dle specifikace RFC1738 URLencoding. Zabezpečení celé komunikace je prováděno pomocí SSL, za použití klientských certifikátů nebo certifikátu veřejných certifikačních autorit. Tento způsob zabezpečení chrání přenos proti odposlechu nebo pozměnění a standardně prochází firewallem. Při implementaci bude použita open source knihovna libcurl, která vyniká kvalitní podporou pro práci s HTTP protokolem včetně SSL zabezpečení. Veškerá dokumentace, nutná pro implementaci služby SMS connector je dostupná v dokumentu O2 SMS connector Technical description of HTTP GET/POST[12]. Zde je uveden příklad HTTP požadavku, který odešle text „Ahoj svete“ na telefonní číslo 777123456.
POST /smsconnector/getpost/GP HTTP/1.1 Content-Type: application/x-www-form-urlencoded Content-Length: 64 Expect: 100-continue Connection: Keep-Alive Host: 127.0.0.1
action=send&baID=1991001&toNumber=%2b420777123456&text=Ahoj+svete
32
8 Testování
8.1 Test chybných dat Tento test měl ověřit zadávání chybných dat a zkontrolovat správnou odezvu. Při nastavení systému a zadávání pravidel byla záměrně vkládána chybná data a kontrolována reakce. Tento test objevil několik nedostatků, které byly následně vyhodnoceny a opraveny. Tudíž tento test můžeme prohlásit za úspěšný.
8.2 Test kompatibility Sms server a robot byl nainstalován a otestován na dvou linuxových systémech a v průběhu testování nebyly zaznamenány žádné komplikace. Vybrané systémy byly Ubuntu 9.04 a Debian 4.0. Záměrně byla vybrána nejnovější verze Ubuntu a starší verze Debianu.
8.3 Test zátěže Tento test měl ověřit stabilitu systému při zátěži dodávané po delší časovou dobu provozu. Z důvodu finanční náročnosti většího množství sms zpráv byly při tomto testu zprávy dodávány uměle pomocí testovacích scriptů. Systému byly po dobu 24 hodin simulovaně dodávány sms zprávy a probíhalo monitorování chybového výstupu a správnost vyhodnocování pravidel. Sms zprávy pokryly veškerá nadefinovaná pravidla. Simulace probíhala ve dvou fázích. V první fázi testovací script každých pět minut dodal do systému 100 sms zpráv pro odeslání a 100 sms zpráv pro přijmutí. V druhé fázi testovací script každou hodinu simuloval příchod celkem 60 zpráv vkládaných po jedné ve dvousekundových intervalech. Po skončení testu nebyly zaznamenány žádné chyby a náhodně vybrané zprávy byly taktéž adekvátně zpracovány, tudíž i tento test byl úspěšný.
33
9 Srovnání s existujícími řešeními Dostupný komerční software popisovaný v kapitole 4 je až na výjimky určen převážně pro osobní použití a správu zpráv. Zatímco námi navrhovaný systém je serverového charakteru se zaměřením na snadnou propojitelnost s druhotnými službami nebo vyvíjenými systémy. Tato odlišnost se projevuje i v uživatelské náročnosti. Srovnávaný software má uživatelské grafické rozhraní, intuitivně přístupné pro běžného uživatele. Na serverových strojích bývá grafické rozhraní většinou zbytečné nebo dokonce nežádoucí a proto konfigurace navrhovaného systému je určena spíše administrátorům. Při vyhodnocování pravidel zavádějí některé systémy navíc možnost filtrace podle příjemce. Tohle kritérium je umožněno díky evidenci osobního seznam kontaktů. Z důvodu, že navrhovaný systém spadá do jiné kategorie, není osobní seznam kontaktů a vyhodnocování podle příjemce považováno za podstatné. Při porovnávání kritéria připojitelnosti dalších služeb, má navrhovaný systém oproti dostupným implementacím výhodu hlavně ve volbě rozhraní a rychlosti reakce na zprávu. Navrhovaný systém reaguje díky asynchronním signálům okamžitě, zatímco většina ostatních systémů reaguje až po uplynutí časového intervalu.
34
10 Závěr Navržený systém dokázal naplnit všechny požadavky a cíle, které byly stanoveny na počátku této bakalářské práce. Kromě knihovny Markup, která je zdarma pouze pro nekomerční účely a byla vybrána díky vynikající práci s DOM jsou všechny zbylé části systému řešeny pomocí open source technologie, tudíž celý sytém naplnil i požadavek finanční minimalizace. Práce byla pro autora přínosem nových zkušeností z oblasti softwarového inženýrství. Možností pracovat na projektu od analýzy až po implementaci a nabýt nových znalostí či prohloubit ty stávající. Vhodným doporučením autora při pokračování na projektu je otestování systému v reálných podmínkách s dostatečným množstvím reálných uživatelů. Jedním z dalších vylepšení systému by mohlo být grafické rozhraní pro přiblížení konfigurace běžným uživatelům. Nebo vylepšení asynchronních signálu a provoz databáze na vzdálené stanici.
35
11 Seznam zkratek a slovník pojmů API
Application Programming Interface
CASE
Computer Aided Software Engineering
DOM
Document Object Model
EDGE Electronic Data Gathering Equipment EMI
External Machine Interface
GRPS
General Packet Radio System
GSM
Global System for Mobile communications
HTTP
HyperText Transfer Protocol
POSIX Portable Open Systems Interface based on UniX RFC
Request For Comment
SIM
Subscriber Information Module
SMS
Short Message Systems
SSL
Secure Sockets Layer
TCP/IP Transmission Control Protocol / Internet Protocol UMTS Universal Mobile Telephone Standard URL
Uniform Resource Locators
USB
Universal Serial Bus
XML
eXtensible Markup Language
Bluetooth
Bezdrátová komunikační technologie
COM port
Sériový port používaný jako komunikační rozhraní
Open source
Počítačový program s otevřeným zdrojovým kódem
Http Get
Metoda k přenosu dat na server pomocí HTTP protokolu, kdy data jsou přenášeny v rámci URL
Http Post
Metoda k přenosu dat na server pomocí HTTP protokolu, kdy data jsou přenášeny v těle dotazu
Trigger
Spouštěč úkonu při definované události nad databázovou tabulkou
Script
Posloupnost příkazů interpretovaného jazyka zajišťující definovanou funkci
Sms centrum
Služba umožnující pomocí definovaného protokolu využívat sms technologii
36
12 Použité zdroje [1] RŮŽIČKA, Pavel. Jak na vlastní SMS gateway [online]. 2002 [cit.20090527]. Dostupné z: [2] Vodafone SMS připojení [online]. 2008 [cit.20090527]. Dostupné z: [3] SMSC Direct [online]. [cit.20090527]. Dostupné z: [4] EMI (protocol) [online]. 2009 [cit.20090527]. Dostupné z: [5] O2 SMS Connector [online]. [cit.20090527]. Dostupné z: [6] FRINGS, Stefan. SMS Server Tools [online]. [cit.20090527]. Dostupné z: [7] TMobile Message Analyser [online]. [cit.20090527]. Dostupné z: [8] O2 SMS Manažer [online]. [cit.20090527]. Dostupné z: [9] O2 SMS MobilChange [online]. [cit.20090527]. Dostupné z: [10] ARLOW Jim, NEUSTADT Ila. UML a unifikovaný proce vývoje aplikací. 2.vydání, 2005. Computer press. ISBN 807226947X. [11] Enterprise architect [online]. [cit.20090527]. Dostupné z: [12] ALEŠOVÁ Zuzana. O2 SMS connector Technical description of HTTP GET/POST [online]. 2006 [cit.20090527]. Dostupné z:
37
13 Seznam obrázků Obr. 6.1: Diagram případů užití.......................................................................................19 Obr. 6.2: Diagram tříd sms server a robot........................................................................21 Obr. 6.3: Databázový model............................................................................................22 Obr. 6.4: Stavový diagram sms zprávy............................................................................24 Obr. 6.5: Sekvenční diagram sms serveru zobrazující příjem zprávy do systému..........26 Obr. 6.6: Sekvenční diagram sms serveru zobrazující odeslání zprávy ze systému........26 Obr. 6.7: Sekvenční diagram sms robota zobrazující vyhodnocení zpráv.......................27 Obr. 6.8: Diagram nasazení sms serveru a robota...........................................................28
38
14 Seznam tabulek Tabulka 6.1: Význam atributů databázové tabulky inbox................................................22 Tabulka 6.2: Význam atributů databázové tabulky outbox.............................................23 Tabulka 6.3: Význam atributů databázové tabulky reactions..........................................23
39
15 Přílohy Datové médium přiložené k tomuto dokumentu obsahuje: ●
tento dokument ve formátu odt a pdf
●
zdrojové kódy
●
popis instalace a konfigurace
●
databázové scripty
40