1. 1 Návrh a implementácia
1.1 Členenie aplikácie
Z dôvodu lepšej prehľadnosti a jednoduchšieho udržovania kódu je aplikácia rozdelená do
dvoch menných priestorov. Dáta a aplikačná logika, pomocou ktorej je možné dáta
spracovávať, sa nachádzajú v mennom priestore SkypeLogViewer.Model. Menný priestor
SkypeLogViewer obsahuje prvky grafického rozhrania a funkcionalitu, pomocou ktorej sa
dáta zobrazujú.
1.2 Aplikačná časť
1.2.1 Dátový model
Jednou z najdôležitejších častí návrhu aplikácie je vytvorenie dátového modelu. Ten určuje
aké dáta sa budú zo záznamov spracovávať a následne zobrazovať, a akým spôsobom budú
uložené.
Hovory
Telefónne hovory alebo hovory v rámci siete Skype reprezentujú triedy Call, AnsweredCall
a UnAnsweredCall. V prípade triedy Call ide o abstraktnú triedu poskytujúcu základ pre
triedy AnsweredCall a UnAnsweredCall. Trieda UnAnsweredCall predstavuje hovor, ktorý
jedna zo strán neprijala. Uchovávajú sa len informácie o čase udalosti a o účastníkovi, ktorý
sa na udalosti podieľal. Na druhú stranu, trieda AnsweredCall uchováva informácie o hovore,
ktorý skutočne prebehol. Narozdiel od neprijatého hovoru sa musia uchovávať informácie
o čase príchodu a dobe trvania u každého účastníka. Tieto informácie sú zabalené do triedy
Conference-Member. Trieda AnsweredCall teda obsahuje zoznam účastníkov
reprezentovaných triedou ConferenceMemeber.
Textová komunikácia
Textovú komunikáciu zastupuje trieda Chat. Obsahuje zoznam kontaktov, ktorí sa na
komunikácii podieľali a zoznam správ, ktoré boli v danej komunikácii zaslané. Každá správa
je reprezentovaná triedou Message, ktorá nesie informácie identifikujúce autora správy, čas
odoslania správy a samotné
telo správy. Trieda Chat obsahuje len správy typu 3. Informácie obsiahnuté v správach typu 7
sú totožné s informáciami, ktoré reprezentujú triedy SMS a Transfer a preto sa tieto správy
aplikáciou nespracovávajú. Z tela správ boli pri nahrávaní dát odstránené všetky XML prvky.
SMS správy a prenosy súborov
SMS správy sú v dátovom modeli reprezentované triedou SMS, informácie o prenosoch
súborov triedou Transfers. Obidve triedy uchovávajú prakticky všetky informácie, ktoré boli
v logových záznamoch rozpoznané.
Reprezentácia časových údajov
Na uchovanie času, v ktorom prebehla určitá udalosť, sme použili štruktúru DateTime, ktorá
je súčasťou .NET knižnice. V neskoršej fáze vývoja sme natrafili na problém, kde do
premennej typu DateTime nie je možné uložiť prázdnu (null) hodnotu a tak sme začali čas
reprezentovať štruktúrou DateTime zabalenou do generickej triedy Nullable. Na reprezentáciu
doby trvania určitej udalosti sa nám žiadnu podobnú už implementovanú triedu nájsť
nepodarilo a tak sme pre tento účel implementovali triedu Duration. Tá uchováva dobu
trvania v sekundách a obsahuje metódy, ktoré dokážu čas uložený v takomto formáte
transformovať na iné formáty reprezentácie času, ktoré sú užívateľsky prívetivejšie.
2. Rozhranie ISearchable
Rozhranie ISearchable v sebe implementujú triedy nesúce informáciu, ktorú je možné
prehľadávať na výskyt konkrétneho textového reťazca. Ide o triedy Message a SMS, kde sa
zadaný reťazec vyhľadáva v tele týchto správ. Výsledok takéhoto vyhľadávania je objekt
triedy SearchResult, v ktorom sa nachádza hľadaný reťazec a zoznam pozícií, na ktorých sa
v správe reťazec vyskytuje.
Rozhranie IRecord
Ide o rozhranie, ktoré je implementované všetkými triedami, ktoré reprezentujú ucelený
záznam. Sú to triedy Call, Chat, SMS a Transfer. Pomocou tohto rozhrania sa tieto triedy
zaväzujú k jednotnému prístupu k základným informáciám, ktoré sú všeobecné pre každý
záznam. Je možné získať informácie o začiatku a konci udalosti, zoznam všetkých účastníkov
a textový reťazec popisujúci typ záznamu. V prípade, že logová udalosť neprebiehala dlhšiu
časovú dobu, ale len nastala v konštantnom čase, dotaz na čas konca udalosti vráti prázdnu
hodnotu.
UML diagram vytvorený v programe Visual Paradigm
1.2.2 Načítanie záznamov
O otvorenie databázového súboru uchovávajúceho záznamy, spracovanie záznamov
a následne uloženie do príslušných tried sa stará trieda DBTools. Po vytvorení inštancie
objekt triedy DBTools drží otvorený záznamový súbor. Aby bolo možné tento súbor zavrieť
v deterministickom čase implementuje trieda DBTools rozhranie IDisposable. Takto
nemusíme čakať až sa spustia upratovacie funkcie prostredia .NET a vymažú objekt z pamäti.
3. Objekt triedy DBtools po pripojení k databázovému súboru okamžite načíta všetky kontakty
z tabuľky Contacts. Ak sa neskôr pri spracovávaní iných záznamov objaví v zázname kontakt,
ktorý doposiaľ nebol načítaný (majiteľ záznamov ho nemal uložený vo svojich kontaktoch),
pridá sa takýto kontakt do zoznamu načítaných kontaktov. Takto nájdený kontaktný záznam
ale nebude obsahovať žiadne dodatočné informácie (napr. telefónne číslo alebo mesto
bydliska). Pri spracovávaní textových správ sa odstraňujú všetky XML elementy. V prípade
emotikonov sa text predstavujúci emotikon zabalí do znakov ’[’a ’]’.
1.2.3 Export záznamov
O export záznamov do HTML súboru sa stará statická trieda ExportTools. HTML dokument
je vytváraný pomocou rozhrania DOM. Trieda poskytuje možnosť exportu kontaktných
informácii a logových udalostí, alebo len jedného z uvedených. Na zobrazenie záznamov
v HTML stránke sa používajú tabuľky, ktoré sú navrhnuté tak, aby sa dali jednoducho
strojovo spracovať.
Argumentácia:
Vybraný text je časť mojej bakalárskej práce s názvom Nástroj pre analýzu logov aplikácie Skype,
konkrétne približuje návrhovú a implementačnú časť aplikácie. Do kontextu môjho štúdia zapadá
prirodzene už len preto, že je to práca vypísaná Fakultou informatiky. Danú tému som si zvolil
z dôvodu, že je to moja jediná odborná práca. Názov práce odpovedá aj pôvodnému názvu
v bakalárskej práci, číslovanie odsekov je upravené.
Kľúčové slová:
Skype, Call, Message, Transfers, .NET, ISearchable, IRecord, DBTools
Anotácia:
Kapitola s názvom Návrh a implementácia je súčasťou bakalárskej práce Nástroj pre analýzu logov
aplikácie Skype, úspešne obhájenej Slavomírom Morozom v roku 2011 na Fakulte informatiky
Masarykovej univerzity. Pojednáva o funkčnej časti požadovanej aplikácie, približuje systém
implementácie – delenie do tried, rozhraní, vzťahy a prepojenia medzi nimi, priebeh jednotlivých
procesov a požiadaviek a samozrejme výsledný export požadovaných dát. Správnym výstupom by
mala byť história našej aktivity v programe Skype – záznam textových konverzácií, evidencia aktivity
a hovorov.
Literatúra:
Neuvádzam žiadne citácie relevantných zdrojov, nakoľko je to nereálne. Celý text je výsledkom
mojich vlastných myšlienok, nápadov a postrehov, od iných autorov som nepreberal nič.