bakalářská práce - Unicorn College

Transkript

bakalářská práce - Unicorn College
BAKALÁŘSKÁ PRÁCE
Příprava a anonymizace
datových souborů
určených pro vývoj a
testování
Preparation and
anonymization of data files
for development and
testing
Patrik Jankovský
Unicorn College © 2010
Unicorn College, V kapslovně 2767/2, Praha 3, 130 00
Název práce v ČJ:
Příprava a anonymizace datových
souborů určených pro vývoj a
testování
Název práce v AJ:
Preparation and anonymization of
data files for development and
testing
Autor:
Patrik Jankovský
Akademický rok:
2012
Kontakt:
[email protected]
(+420) 603 111 034
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
1.
ABSTRAKT
Práce se bude nejprve zabývat teorií datové anonymizace, kde se nejprve pokusím vysvětlit datovou
anonymizaci jako pojem a nastíním, kde se s ní můžeme setkat. Poté v celku detailně popíši a
vysvětlím zákon o ochraně osobních údajů, který je platný v České republice. Dále se zaměřím na
samotné techniky, které je možné zvolit při anonymizaci datových souborů. V závěru první části pak
zvolím techniky, které budou použity v samotné aplikaci. Tato část má především informativní
charakter, aby každý, kdo práci bude číst, věděl, proč je vůbec nutné anonymizovat datové soubory.
V další části práce jde o popis situace přímo na problémové doméně jedné společnosti. Z této situace
vyplývají určité možnosti, jak ji řešit a tak je potřeba definovat požadavky na aplikaci. Rozdělím
jednotlivé požadavky, které popíši a navrhnu podle nich všechny potřebné use-case. Několik málo
požadavků se týká i grafického rozhraní aplikace. V této části navrhnu velmi abstraktní podobu
architektury aplikace a začnu se zabývat zásuvnými moduly, které jsou pro aplikaci velmi důležité.
V implementační části práce se podíváme již na opravdovou architekturu aplikace a stručně popíši
všechny důležité třídy aplikace. Větší pozornost je věnována XML šabloně a zásuvným modulům.
Hned po implementační části následuje ukázka hotového řešení, kde ukážu, zda byly všechny
požadavky na aplikaci opravdu splněny.
Poslední částí je dokumentace, respektive návod k použití aplikace, kde popisuji jednotlivé funkčnosti
práce s XML šablonou a zásuvnými moduly. Krok po kroku předvedu, jak se má aplikace správně
používat a jak je nastavené její workflow. V závěru práce shrnuji všechny poznatky, které jsem získal
během psaní této práce, ale hlavně během implementace samotné aplikace. A také pouvažuji o
dalším možném rozvoji aplikace.
Klíčová slova: data, anonymizace, ochrana osobních údajů, testování, vývoj, XML, .NET Framework,
Windows Presentation Foundation, C#, zásuvný modul
-5-
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
2.
ABSTRACT
First thing in this bachelor thesis we take a look at is a data anonymization, where I first explain data
anonymization as a term and where one could meet it. After that I describe and explain a privacy
policy law in further details that is currently of validity in Czech Republic. Then I describe some of the
techniques one could use to anonymize data files. At the end of the first part of this bachelor thesis, I
choose the techniques which will be used in the application. This first chapter has mostly informative
character to give an explanation to everyone who reads this bachelor thesis of why is so important to
anonymize data files.
In the next chapter I start with an explanation of the problem related to one company business. This
problem situation leads us to explore all the options how to solve it and we need to specify all
requirements for the application. As soon as we have all requirements I can sort them and define all
use-cases accordingly. Few requirements are related to a graphic user interface. In this chapter I also
design a high level architecture of the application and I start to talk about plugins which are really
important for the application.
Within the implementation chapter we take a look at the real architecture of the application and I briefly
describe the most important classes. Main focus is dedicated to both XML template and plugins. Right
after this part I show you an example of final application to prove that I have implemented all
requirements.
Last chapter is basically user documentation, where I explain how to use all the features and work with
XML template and plugins. I show how to use the application step by step and how its workflow has
been set up. At the end of this bachelor thesis could be found all findings I have taken when writing
this bachelor thesis, but mostly when implementing the application. Last thing I do is to think about the
possible future development.
Keywords: data, anonymization, privacy policy, testing, development, XML, .NET Framework,
Windows Presentation Foundation, C#, plugin
-6-
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
3.
PROHLÁŠENÍ
Prohlašuji, že svou bakalářskou práci na téma Příprava a anonymizace datových souborů určených
pro vývoj a testování jsem vypracoval samostatně pod vedením vedoucího bakalářské práce a s
použitím odborné literatury a dalších informačních zdrojů, které jsou v práci citovány a jsou též
uvedeny v seznamu literatury a použitých zdrojů.
Jako autor uvedené bakalářské práce dále prohlašuji, že v souvislosti s vytvořením této bakalářské
práce jsem neporušil autorská práva třetích osob, zejména jsem nezasáhl nedovoleným způsobem do
cizích autorských práv osobnostních a jsem si plně vědom následků porušení ustanovení § 11 a
následujících autorského zákona č. 121/2000 Sb.
K této bakalářské práci je přiložena Příloha 2, která mi umožňuje využívat data společnosti SSE jako
příklad.
…….……………….
V Praze dne
Patrik Jankovský
-7-
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
4.
PODĚKOVÁNÍ
Děkuji vedoucímu bakalářské práce Ing. David Hartman Ph.D. za účinnou metodickou, pedagogickou
a odbornou pomoc a další cenné rady při zpracování mé bakalářské práce.
-8-
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
5.
OBSAH
1.
Abstrakt ....................................................................................................................................... - 4 -
2.
Abstract ....................................................................................................................................... - 6 -
3.
Prohlášení .................................................................................................................................... - 7 -
4.
Poděkování .................................................................................................................................. - 8 -
5.
Obsah........................................................................................................................................... - 9 -
6.
Úvod .......................................................................................................................................... - 13 -
7.
6.1
Popis jednotlivých kapitol práce........................................................................................ - 14 -
6.2
Konvence používané v této práci ...................................................................................... - 14 -
6.3
Konvence ........................................................................................................................... - 14 -
datová anonymizace.................................................................................................................. - 15 7.1
Teorie datové anonymizace .............................................................................................. - 15 -
7.1.1
Vysvětlení pojmu datová anonymizace ..................................................................... - 15 -
7.1.2
Proč a kde se datová anonymizace používá .............................................................. - 16 -
7.2
Právní pohled v České republice ....................................................................................... - 16 -
7.2.1
Osobní údaj................................................................................................................ - 17 -
7.2.2
Citlivý osobní údaj ..................................................................................................... - 17 -
7.2.3
Anonymní osobní údaj............................................................................................... - 17 -
7.2.4
Zveřejněný osobní údaj ............................................................................................. - 17 -
7.2.5
Subjekt údajů ............................................................................................................. - 17 -
7.2.6
Shromažďování osobních údajů ................................................................................ - 17 -
7.2.7
Zpracovávání osobních údajů .................................................................................... - 18 -
7.2.8
Uchovávání osobních údajů ...................................................................................... - 18 -
7.2.9
Správce osobních údajů ............................................................................................. - 18 -
7.2.10
Zpracovatel osobních údajů ...................................................................................... - 18 -
7.2.11
Souhlas se zpracováním osobních údajů ................................................................... - 18 -
7.2.12
Příjemce osobních údajů ........................................................................................... - 18 -
7.2.13
Likvidace osobních údajů........................................................................................... - 19 -
7.3
Další právní předpisy upravující ochranu osobních údajů................................................. - 19 -
7.3.1
7.4
Seznam dalších zákonů .............................................................................................. - 19 -
Principy datové anonymizace ............................................................................................ - 20 -
7.4.1
Přímé datové identifikátory....................................................................................... - 20 -9-
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
7.4.2
Nepřímé datové identifikátory .................................................................................. - 20 -
7.4.3
Faktory a hrozby narušení osobních údajů ............................................................... - 21 -
7.5
7.5.1
Technika redukce datových záznamů........................................................................ - 22 -
7.5.2
Technika pozměňování datových záznamů ............................................................... - 23 -
7.6
8.
Techniky datové anonymizace .......................................................................................... - 22 -
Vybrané principy a techniky .............................................................................................. - 24 -
Analýza a návrh řešení............................................................................................................... - 26 8.1
Problémová doména ......................................................................................................... - 26 -
8.1.1
Popis společnosti ....................................................................................................... - 27 -
8.1.2
Dokumentová kompozice .......................................................................................... - 27 -
8.1.3
Ukázka výstupu .......................................................................................................... - 29 -
8.1.4
Ukázka dat ................................................................................................................. - 30 -
8.2
Definice cílů práce ............................................................................................................. - 31 -
8.2.1
Rozsah práce.............................................................................................................. - 32 -
8.2.2
Výstupy práce ............................................................................................................ - 32 -
8.2.3
Mimo rozsah práce .................................................................................................... - 32 -
8.3
Správa požadavků .............................................................................................................. - 33 -
8.3.1
Identifikované požadavky .......................................................................................... - 33 -
8.3.2
Prioritizované požadavky .......................................................................................... - 34 -
8.4
Navrhované řešení ............................................................................................................ - 35 -
8.4.1
Popis navrhovaného řešení ....................................................................................... - 35 -
8.4.2
XML šablona .............................................................................................................. - 35 -
8.4.3
Zásuvný modul........................................................................................................... - 35 -
8.4.4
Architektura navrhovaného řešení............................................................................ - 36 -
8.4.5
Návrh GUI .................................................................................................................. - 37 -
8.5
Popis použitých technologií ............................................................................................... - 38 -
8.5.1
XML ............................................................................................................................ - 38 -
8.5.2
WPF............................................................................................................................ - 39 -
8.6
Use-case specifikace .......................................................................................................... - 40 -
8.6.1
Přehled aktérů ........................................................................................................... - 40 -
8.6.2
Přehled use-case........................................................................................................ - 40 -
8.6.3
Přehled mapování požadavků na use-case ............................................................... - 41 -
8.6.4
Use-case diagramy..................................................................................................... - 42 - 10 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
9.
Implementace aplikace ............................................................................................................. - 44 9.1
Architektura aplikace......................................................................................................... - 44 -
9.2
Vytváření XML šablony ...................................................................................................... - 45 -
9.2.1
Princip ........................................................................................................................ - 45 -
9.2.2
Objekt šablony XmlTemplateItem ............................................................................. - 45 -
9.2.3
Popis algoritmu.......................................................................................................... - 46 -
9.3
Zásuvné moduly................................................................................................................. - 47 -
9.3.1
Rozhraní IPluginable .................................................................................................. - 47 -
9.3.2
Implementace zásuvného modulu ............................................................................ - 48 -
9.4
Popis důležitých tříd .......................................................................................................... - 51 -
9.4.1
Plugin Manager.......................................................................................................... - 51 -
9.4.2
XML Manager ............................................................................................................ - 51 -
9.4.3
Data Manager ............................................................................................................ - 52 -
9.4.4
IO Manager ................................................................................................................ - 53 -
9.5
Serializace a Deserializace ................................................................................................. - 54 -
9.6
Aplikace XML šablony při anonymizaci ............................................................................. - 55 -
9.6.1
10.
Popis algoritmu.......................................................................................................... - 55 -
Hotové řešení ........................................................................................................................ - 57 -
10.1
Náhled hotové aplikace ..................................................................................................... - 57 -
10.2
Test anonymizace .............................................................................................................. - 58 -
10.2.1
Vstupní data .............................................................................................................. - 58 -
10.2.2
Nastavení XML šablony ............................................................................................. - 58 -
10.2.3
Výstupní data............................................................................................................. - 59 -
11.
Uživatelská dokumentace ..................................................................................................... - 60 -
11.1
XML Šablona ...................................................................................................................... - 60 -
11.1.1
Vytvoření XML šablony .............................................................................................. - 60 -
11.1.2
Funkčnosti nad XML šablonou................................................................................... - 60 -
11.1.3
Vlastnosti prvků XML šablony ................................................................................... - 60 -
11.2
Zásuvné moduly................................................................................................................. - 61 -
11.2.1
Birthnumber .............................................................................................................. - 62 -
11.2.2
Custom....................................................................................................................... - 62 -
11.2.3
Date ........................................................................................................................... - 62 -
11.2.4
Name ......................................................................................................................... - 62 - 11 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
11.2.5
Number...................................................................................................................... - 63 -
11.2.6
Text ............................................................................................................................ - 63 -
11.3
Správa instancí zásuvných modulů .................................................................................... - 63 -
11.3.1
Vytvoření konkrétní instance zásuvného modulu ..................................................... - 64 -
11.3.2
Přiřazování instancí k prvkům šablony ...................................................................... - 65 -
11.3.3
Zobrazení náhodných hodnot ................................................................................... - 65 -
11.3.4
Zobrazení všech referencí ......................................................................................... - 65 -
11.4
Anonymizace XML souboru ............................................................................................... - 66 -
11.5
Minimální systémové požadavky ...................................................................................... - 66 -
11.6
Workflow aplikace ............................................................................................................. - 67 -
12.
Závěr ...................................................................................................................................... - 68 -
13.
Conclusion ............................................................................................................................. - 70 -
14.
Seznam použité literatury ..................................................................................................... - 72 -
15.
Seznam použitých symbolů a zkratek.................................................................................... - 73 -
16.
Seznam obrázků .................................................................................................................... - 74 -
17.
Seznam tabulek ..................................................................................................................... - 75 -
18.
Seznam příloh ........................................................................................................................ - 76 -
18.1
Příloha 1 – Hodnocení od Titio s.r.o. ................................................................................. - 77 -
18.2
Příloha 2 – Povolení od SSE ............................................................................................... - 78 -
18.3
Příloha 3 – CD .................................................................................................................... - 79 -
- 12 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
6.
ÚVOD
Práce se bude zabývat problematikou ochrany osobních údajů a z ní vyplívající
anonymizace citlivých dat fyzických osob. Postupně bude rozebrán již právě zmíněný pojem
- datová anonymizace. Rozeberu její možné přístupy, subjekty, kterých se tato problematika
týká, jednotlivé zákony, respektive právní stránku věci a v neposlední řadě její samotnou
aplikaci, kterou se bude zabývat převážná většina této práce.
Samotným cílem je tedy navrhnout a implementovat desktopovou aplikaci, kde hlavní
funkčnost bude právě samotné aplikování datové anonymizace. Na větší úrovni abstrakce
lze aplikaci popsat vcelku jednoduše – na vstupu se očekává soubor obsahující citlivá data
určená k anonymizaci, kde na základě konfigurace aplikace a namapování vstupního
souboru dostaneme soubor výstupní, který po aplikaci anonymizačního algoritmu bude
obsahovat již výsledná data v požadované míře anonymity.
1
Celé řešení bude postaveno na .NET platformě s využitím programovacího jazyka C# , který
2
některými svými technologiemi, jako například LINQ , umožňuje velmi elegantní řešení
problému. Bude se jednat o desktopovou aplikaci, pro jejíž implementaci byla zvolena
technologie Windows Presentation Foundation.
3
Za vstupní a výstupní soubor se v první fázi aplikace předpokládá jen soubor typu XML, ale
aplikace by v budoucnu měla být rozšiřitelná o podporu souborů dalších typů, jako například
4
5
delimiter a columnar . Ale jako první je zvolen XML soubor pro svou největší rozšířenost.
Velmi důležitou rolí jsou generovaná data ve výstupním souboru. Data musí dávat smysl a
nesmí pozměnit vstupní soubor jen na hromadu náhodně generovaných znaků. Nesmí se
tak porušit význam hodnot v souboru – když se anonymizuje jméno, tak je potřeba aby tam
opět bylo jméno i po aplikaci anonymizačního algoritmu, ale nyní náhodně vygenerované.
Určité typy hodnot by tedy měly být založeny na reálných podkladech.
1
NASH, Trey. C# 2010 : Nejlepší průvodce novinkami a nejlepšími postupy. 1. vyd.
Brno : Computer Press, 2010. 624 s. ISBN 978-80-251-3034-6
2
PIALORSI, Paolo, RUSSO, Marco. Microsoft LINQ : Kompletní průvodce programátora. 1. vyd.
Brno : Computer Press, 2009. 615 s. ISBN 978-80-251-2735-3
3
PETZOLD, Charles. Mistrovství ve Windows Presentation Foundation. 1. vyd.
Brno : Computer Press, 2008. 928 s. ISBN 978-80-251-2141-2
4
Textový soubor, kde jsou jednotlivé záznamy odděleny určitým znakem. Příkladem může být CSV, kde jsou
záznamy odděleny čárkou.
5
Textový soubor, kde jsou jednotlivé záznamy rozloženy do sloupců o předem definované délce počtu znaků.
- 13 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
6.1 Popis jednotlivých kapitol práce

Kapitola 8: Datová anonymizace – V této kapitole se podíváme na teoretickou část
problému a vydefinujeme základní pojmy.

Kapitola 9: Analýza a návrh řešení – Zde se budeme věnovat návrhu samotné
aplikace v několika úrovních abstrakce a také se podíváme na technologie, které
budou použity pro implementaci řešení.

Kapitola 10: Implementace aplikace – Kapitola o implementaci aplikace, která
pojednává o hlavních částích a třídách aplikace a popíše práci se zásuvnými moduly
z pohledu implementace.

Kapitola 11: Hotové řešení – V této kapitole si již ukážeme hotové finální řešení a
popíšeme proces od vstupních dat po výstupní data.

Kapitola 12: Uživatelská dokumentace – Návod jak aplikaci nainstalovat a
efektivně používat. Také se zaměříme na workflow celé aplikace.
6.2 Konvence používané v této práci
Práce je psaná velmi srozumitelně a pro rychlejší pochopení její typografické struktury
doporučuji přečíst si následující typografické konvence, které se v práci vyskytují.
6.3 Konvence
Tučné písmo – slouží ke zvýraznění v samotném textu práce, kde dává důraz důležitým
pojmům, které jsou v práci použity.
Kurzíva – je v práci použita pro vyčlenění částí textu, které přímo souvisejí například
s aplikací, či jde o názvy různých objektů.
Neproporcionální písmo – používá se pro zobrazení zdrojového kódu, respektive pro
zobrazení jmenných prostorů, tříd, atributů, proměnných, metod, objektů, událostí, vlastností
atd.
- 14 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
7.
DATOVÁ ANONYMIZACE
Tato kapitola má za cíl vysvětlit potřebnou teorii již nastíněného problému ochrany osobních
údajů. Zaměřím se na teorii jen nezbytně nutnou k pochopení této problematiky – vysvětlím
důležité pojmy, vydefinuji a popíši zainteresované subjekty a lehce rozeberu právní stránku
věci. Dále bude popsáno několik příkladů z praxe, aby v závěru této kapitoly již bylo jasné,
proč jsem se rozhodl právě pro toto téma a implementaci samotné aplikace pro jeho řešení.
7.1 Teorie datové anonymizace
7.1.1 Vysvětlení pojmu datová anonymizace 6
Hlavním cílem datové anonymizace je skrytí citlivých údajů a znemožnit tak třetí straně
jakékoliv propojení s osobou, ke které se daná data vztahují. Citlivým údajem může být
například rodné číslo – na kompletní výčet citlivých údajů se podíváme později, až budu
popisovat anonymizaci dat ve vztahu k zákonům ČR.
Obrázek 1 - Úvod do datové anonymizace
Zdroj: Vlastní tvorba
Nahradit rodné číslo jiným však není dostatečná anonymizace, protože třetí straně by se
mohlo podařit identifikovat danou osobu díky kombinaci ostatních údajů. Dobrým příkladem
může být jméno a příjmení, spolu s trvalým bydlištěm. Díky těmto informacím je velmi
jednoduché si danou osobu dohledat.
K takovéto situaci však nesmí v žádném případě dojít a třetí strana, které byly data
poskytnuty, by nikdy neměla být schopna identifikovat a přiřadit jednotlivé datové záznamy
ke konkrétním osobám a to za použití libovolné kombinace údajů z dat.
6
INFA Partner s.r.o [online]. c2010 [cit. 2012-04-08]. Dostupný z WWW: http://www.infapartner.cz/datamasking/
- 15 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
7.1.2 Proč a kde se datová anonymizace používá
Tento problém musí řešit každý subjekt, který shromažďuje osobní údaje, ke kterým se
může dostat i nějaká další třetí strana, která však nemá souhlas o poskytnutí osobních údajů
od jejich majitelů.
Příkladem může být mobilní operátor, který by si rád nechal vyvinout informační systém pro
svou společnost. Informační systém bude obsahovat i různé funkce jako je například správa
zákazníků. Mobilní operátor však nemá dostatečné vnitřní zdroje a tak si informační systém
musí nechat vyvinout jinou společností.
Společnost implementující daný informační systém je z pohledu zákaznických dat již třetí
strana a tak by k nim neměla mít přístup. Problém však může nastat v okamžiku, kdy je
potřeba provést analýzu, design a implementaci konkrétního modulu, který se zabývá právě
zákazníky dané společnosti. Ten samý problém nastane při testování naimplementovaného
modulu. Společnost potřebuje pro vývoj přesná data, která odpovídají reálným datům.
V tomto okamžiku přichází na řadu již zmiňovaná datová anonymizace, která umožňuje
poskytnutí upravených dat i třetím stranám bez souhlasu jejich majitelů. Společnosti
implementující takovýto informační systém je jedno, zda se jedná o ostré či anonymizované
data. Hlavním a nejdůležitějším požadavkem na tyto data je jejich struktura, která musí
odpovídat ostrým datům.
Mobilní operátor je jen jeden z mnoha případů. Z těch větších odvětví můžeme jmenovat
například banky, pojišťovny, zdravotní zařízení, státní instituce atd.
7.2 Právní pohled v České republice 7
V České republice se ochranou osobních údajů zabývá Úřad pro ochranu osobních údajů,
který vznikl na základě zákona č. 101/2000 Sb., o ochraně osobních údajů. Tento zákon se
vztahuje na veškeré zpracování osobních údajů, které provádějí státní instituce, fyzické i
právnické osoby, s výjimkou fyzických osob, které provádějí zpracování osobních údajů pro
vlastní potřebu (v tomto případě dochází ke zpracování osobních údajů pro nekomerční
užití).
Zákon upravuje zpracování osobních údajů automatizovaně či jinými prostředky a jeho
primárním cílem je ochrana osobních údajů, způsob zpracování údajů v České republice, ale
také předávání osobních údajů do zahraničí.
V několika následujících podkapitolách bych rád vymezil důležité pojmy, které se k této
problematice vážou a je potřeba je znát.
7
Úřad pro ochranu osobních údajů [online], c2012 [cit. 2012-04-08]. Dostupný z WWW:
http://www.uoou.cz/uoou.aspx?menu=4&submenu=5&loc=20>
- 16 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
7.2.1 Osobní údaj
Je to jakákoliv informace, podle které lze subjekt identifikovat a to na základě jednoho prvku,
nebo i na základě jejich kombinace. Jedná se především o čísla a kódy vypovídající o
fyzické, fyziologické, psychické, ekonomické, kulturní nebo sociální identitě. Díky tomu se
subjekt údajů považuje za určený nebo určitelný, pokud ho lze přímo či nepřímo
identifikovat.
7.2.2 Citlivý osobní údaj
Mezi citlivé údaje patří například informace o národnostním, rasovém nebo etnickém
původu. Dále se za citlivé údaje považují informace o politickém postoji, zdravotním stavu,
náboženství, trestné činnosti, sexuálním životě, genetických, ale také biometrických údajích
subjektu, podle kterých lze subjekt identifikovat nebo autentizovat.
7.2.3 Anonymní osobní údaj
Anonymní údaj je jednoduše takový kus informace, podle kterého není možné zpětně určit
subjekt údajů. Jedná se tedy především o pozměněné údaje (informace na kterou byl
například použit nějaký anonymizační algoritmus), ale také o údaje v nezměněné podobě,
které nevypovídají o identitě subjektu údajů.
7.2.4 Zveřejněný osobní údaj
Zveřejněným údajem se rozumí takový údaj, který je zpřístupněný hromadným sdělovacím
prostředkem dalším subjektům, než je jejich správce či zpracovatel. K veřejnému
zpřístupnění může dojít například na poradě, umístěním na webové stránky, ale také může
jít o údaje na úředním seznamu.
7.2.5 Subjekt údajů
Každá fyzická osoba, ke které se vztahují osobní údaje, je subjektem údajů.
7.2.6 Shromažďování osobních údajů
Jedná se o proces, během kterého dochází ke sběru osobních údajů a jejich zaznamenání
na nosič informací. Tento proces je vykonáván za účelem okamžitého nebo dalšího použití
nasbíraných osobních údajů.
- 17 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
7.2.7 Zpracovávání osobních údajů
Zpracováním osobních údajů se rozumí operace nebo soustava operací, které se vztahují
k práci s osobními údaji. Může se jednat o jejich shromažďování, ukládání na nosiče
informací, zpřístupňování, úprava, vyhledávání, používání, šíření, zveřejňování, uchovávání,
výměna, kombinování či jejich likvidace. Tyto operace s osobními údaji provádí jejich
správce či zpracovatel. Může jít o manuální provádění těchto operací, ale také o jejich plně
automatizované provádění.
7.2.8 Uchovávání osobních údajů
Uchovávání osobních údajů je jejich udržování v podobě, ve které je možné jejich
zpracovávání, které je popsané v předešlé kapitole.
7.2.9 Správce osobních údajů
Jedná se o subjekt, který je kompetentní za zpracování osobních údajů. Může zpracování
osobních údajů sám vykonávat, nebo tím může pověřit zpracovatele, pokud však zvláštní
zákon nestanoví jinak. Správce také rozhoduje o účelu zpracování osobních údajů a o
prostředcích, které ke zpracování budou použity.
7.2.10
Zpracovatel osobních údajů
Zpracovatel je subjekt zpracovávající osobní údaje. Zpracováním může být pověřen na
základě zvláštního zákonu nebo může být pověřen správcem osobních údajů.
7.2.11
Souhlas se zpracováním osobních údajů
Správce může osobní údaje zpracovávat až v okamžiku, kdy má souhlas od subjektu údajů.
Souhlasem se rozumí svobodné a vědomé projevení vůle subjektu údajů, ve kterém dá
subjekt údajů souhlas ke zpracování osobních údajů.
7.2.12
Příjemce osobních údajů
Příjemcem osobních údajů je každý subjekt, kterému jsou osobní údaje poskytnuty a to
nezávisle na formě zpřístupnění. Příjemcem se podle zákona č. 101/2000 Sb., o ochraně
osobních údajů, § 3 odst. 6 písm. g) nerozumí subjekt, který je pověřen zpracováním
osobních údajů.
- 18 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
7.2.13
Likvidace osobních údajů
Likvidací se rozumí úplné fyzické odstranění z nosičů informací, nebo přímo fyzické zničení
nosičů informací, které obsahují osobní údaje. Dále se likvidací může rozumět i jejich trvalé
vyloučení z dalšího zpracování osobních údajů.
7.3 Další právní předpisy upravující ochranu
osobních údajů 8
V České republice je mnoho dalších zákonu, které nějakým způsobem pracují s osobními
údaji. Následující seznam je jen příklad těch několika největších zákonů.
7.3.1 Seznam dalších zákonů

Občanský zákoník – upravuje ochranu osobnosti.

Obchodní zákoník – zde je upravena ochrana osobních údajů ve vztahu
k právnickým osobám, kde jde zejména o ochranu obchodního tajemství a právo
podnikatele na ochranu obchodního tajemství před porušením či ohrožením.

Zákon č. 89/1995 Sb. o státní statistické službě – upravuje ochranu osobních
údajů, které od subjektu údajů shromažďuje Český statistický úřad či jiné státní
instituce, které vykonávají státní statistickou službu.

Zákon o péči o zdraví lidu – stanovuje povinnost zdravotnickým pracovníkům
zachovat mlčenlivost o skutečnostech, které souvisí s výkonem jejich povolání.
Výjimkou je případ, kdy mají od ošetřované osoby vědomý souhlas, nebo pokud jsou
zproštěni této povinnosti nadřízeným orgánem v důležitém státním zájmu.

Zákon o bankách – upravuje ochranu bankovního tajemství, které se vztahuje na
veškeré bankovní obchody, peněžní služby bank, včetně stavů na účtech a depozit.

Zákon o advokacii – se vztahuje na advokáta, na jeho právní koncipienty, ale i na
jeho samotný personál, kterým ukládá povinnost mlčenlivosti.

Trestní zákoník a zákon o přestupcích – upravuje například neoprávněný přístup
do počítačového systému či k nosiči informací. Dále pak definuje trestný čin při
neoprávněném nakládání s osobními údaji.
8
BusinessInfo.cz [online], c2011 [cit. 2012-04-08]. Dostupný z WWW:
http://www.businessinfo.cz/cz/clanek/orientace-v-pravnich-ukonech/ochrana-osobnich-udajuopu/1000818/51144/>
- 19 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
7.4 Principy datové anonymizace 9
Pokud mají být zveřejněna data, která obsahují osobní či citlivé údaje, je potřeba tyto data
nejprve anonymizovat. Anonymizační proces musí odstranit, respektive znemožnit zpětnou
identifikaci subjektu údajů ze zveřejněných dat.
Tyto identifikátory se dělí na dvě skupiny.
Přímé
Datové
identifikátory
Nepřímé
Obrázek 2 - Rozdělení datových identifikátorů
Zdroj: Vlastní tvorba
7.4.1 Přímé datové identifikátory
V případě přímých datových identifikátorů se jedná o proměnné typu jméno a příjmení,
adresa, rodné číslo, číslo pasu, číslo občanského průkazu, identifikační číslo atd. V mnoha
případech nám stačí pouze jeden takový údaj, abychom mohli identifikovat subjekt údajů.
Příkladem může být rodné číslo či identifikační číslo.
Pokud máme k dispozici jen jméno a příjmení, tak s největší pravděpodobností nejsme
stoprocentně schopni subjekt údajů identifikovat – za předpokladu, že dané jméno a příjmení
naleží alespoň dvěma subjektům údajů. V kombinaci s kompletní adresou už ale identifikaci
můžeme provést velmi snadno.
Pro data, která budou sloužit jen pro statistické účely, tyto identifikátory nemají žádný
význam a je nutné je anonymizovat. Pokud budou ale data použita pro testovací účely, tak je
nutné zachovat validní formát všech daných identifikátorů
7.4.2 Nepřímé datové identifikátory
Jedná se o kombinaci identifikátorů, které může vzájemně sdílet hned několik subjektů
údajů. Díky tomu není většinou možné provést zpětně jednoznačnou identifikaci.
Příkladem nepřímých datových identifikátorů je například věk, pohlaví, profese a místo
výkonu profese. Pro lepší představu si můžeme popsat menší příklad na již uvedených
příkladech nepřímých datových identifikátorů.
9
International Household Survey Network [online], c2009 [cit. 2012-04-08]. Dostupný z WWW:
http://www.ihsn.org/HOME/index.php?q=tools/anonymization/principles
- 20 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
Datový soubor obsahuje data o účastnících ve výzkumu, který se zabývá výší měsíčního
příjmu. Nyní doplníme proměnné za hodnoty z výzkumu, které mezi sebou sdílí více
subjektů údajů.
Obrázek 3 - Anonymizace nepřímých datových identifikátorů
Zdroj: Vlastní tvorba
Obrázek 3 nám zobrazuje výše popsané nepřímé identifikátory. V jeho levé části vidíme, že
na základě těchto údajů jsme schopni identifikovat subjekt údajů, protože víme, že v obci
Kounov je jen jeden účetní, který je muž. Naším úkolem je anonymizace co nejmenšího
počtu identifikátorů tak, aby žádná z kombinací identifikátorů zachovalých neumožňovala
identifikovat pouze jeden subjekt údajů.
Protože v obci Kounov jsou celkem tří účetní, Jan Novák a další dvě ženy, které jsou
stejného věku, tak se nám přímo nabízí odstranění, respektive anonymizování identifikátoru
odkazující na místo výkonu profese. Po odstranění se kombinace údajů již vztahuje na
skupinu o počtu tří subjektů údajů.
Data tak zůstávají v konzistentní podobě, ale zároveň není možné zpětně identifikovat
jednotlivé subjekty údajů, kteří se zúčastnili daného výzkumu. Zároveň se nám podařilo
zachovat ty nejrelevantnější údaje pro výzkum. Nutno podotknout, že ne vždy je to tak
jednoduché, jak nám demonstruje tento příklad. Ve většině případů jde o obrovské množství
informací a subjektů a je opravdu velmi obtížné zajistit, aby žádný ze subjektů nemohl být
zpětně identifikován a zároveň byly zachovány všechny relevantní identifikátory pro daný
účel.
7.4.3 Faktory a hrozby narušení osobních údajů
Pří anonymizaci přímých i nepřímých identifikátorů se také bere v úvahu, co by dotyčná
osoba (dále jen „Narušitel“), které se povede provést zpětnou identifikaci subjektu údajů,
získala a jaká je jejich motivace. V případě, že půjde o firemní data, tak je tu velké riziko, že
se data dají zneužít ve prospěch narušitele a motivace může být veliká. Motivačním
faktorem v tomto případě bude například zničení či poškození konkurenční společnosti.
- 21 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
V případě dat z výzkumu o výši měsíčního příjmu, který byl demonstrován v předchozí
kapitole, nebude motivace taková, protože zpětná identifikace subjektu údajů ve své
podstatě Narušiteli nic nepřináší. Dalším faktorem je cena a čas, které by Narušitel musel
vynaložit na zpětnou identifikaci.
Při zveřejňování již anonymizovaných dat musíme mít na paměti, že Narušitel může ke
zpětné identifikaci použít i další volně dostupné zdroje, než jsou daná data. Příkladem může
být veřejně dostupný registr, kde se nachází i přímé identifikátory. Zde je pak riziko vytvoření
vazby mezi daty a registrem, která by mohla jasně identifikovat subjekt údajů. Narušitel tak
může zkoušet přiřazování záznamů ze dvou či více zdrojů a nalézt mezi nimi vazbu, která
mu umožní zpětně identifikovat subjekt údajů.
7.5 Techniky datové anonymizace 10
Datová anonymizace má dvě hlavní techniky, kterými je prováděna. Jedna z nich je
založena na redukci datových záznamů a druhá spočívá v jejich pozměňování. Cílem této
kapitoly je si obě techniky představit, rozebrat jejich jednotlivé metody a ukázat si je na
příkladech.
7.5.1 Technika redukce datových záznamů
Cílem této techniky je odstraňování přímých datových identifikátorů (rodné číslo, číslo
občanského průkazu, identifikační číslo atd.). Výsledkem je neustále rostoucí množina
subjektů údajů, na kterou se daná data mohou vztahovat. Jednoduše řečeno snahou této
techniky je odstranění přítomnosti všech vzácných a unikátních informací, které mohou
subjekt údajů odhalit. To může být zajištěno několika způsoby.

Odstraňování proměnných – Metoda, která jak již je výše zmíněno, odstraňuje
přímé identifikátory z datových záznamů. Používá se především tehdy, když je
jednoznačně identifikující či není možné použít jiné bezpečnostní opatření. Dalším
důvodem může být fakt, že daná proměnná je citlivý údaj, který by neměl být
zveřejněn, nebo se jedná o proměnnou, která nemá pro daný účel žádný význam.
Příkladem je například informace o náboženství, které nemusí být přístupné ve
zveřejněném datovém souboru, ale naopak se může nacházet v licencovaném
datovém souboru.

Odstraňování záznamů – Tato metoda je považována za extrémní případ redukce
dat, které bychom se měli co nejvíce vyhýbat. Pokud je určitá množina záznamů
z datového souboru identifikovatelná díky jednomu identifikátoru, ale zbytku
10
International Household Survey Network [online], c2009 [cit. 2012-04-08]. Dostupný z WWW:
http://www.ihsn.org/home/?q=tools/anonymization/techniques
- 22 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
záznamů se to netýká, tak raději odstraníme kompletní množinou postižených
datových záznamů, než abychom odstraňovali daný identifikátor ze všech záznamů
v datovém souboru. Pro statistické účely však tato metoda může způsobit
nekonzistentnost či přímo nepoužitelnost dat.

Globální záznamy – Metoda spočívající v agregaci hodnot napříč datovým
souborem u jednotlivých záznamů a jejich identifikátorů. Je aplikovatelná na
všechny numerické záznamy, ale i některé další, například na výčtové typy. Tuto
metodu lze velmi snadno představit na příkladě, kde si zvolíme identifikátor
vyjadřující počet zaměstnanců společnosti. Ten se většinou zadává jako celočíselná
hodnota. Co se ale stane, když jej budeme vyjadřovat pomocí tří kategorií – málo,
středně, hodně? Okamžitě se nám jednotlivé záznamy začnou vztahovat k více
subjektům. Podobné je to v případě výčtových typů, kde můžeme velmi jednoduše
sloučit dvě kategorie do jedné a dosáhneme podobného výsledku. Tato metoda
musí být vždy provedena nad celým datovým souborem, aby měla požadovaný efekt
a byl uchován její význam.

Horní a spodní mez – Velmi se podobá předchozí metodě. Rozdíl spočívá v tom,
že nahrazujeme pouze horní a spodní extrémy, které si určíme. Příkladem může být
měsíční hrubý příjem zaměstnanců společnosti. Hodnoty mezi 20 až 30 tisíci
ponecháme beze změny, oproti tomu všechny hodnoty pod 20 tisíc změníme
například na ‘méně než 20 tisíc’ a naopak všechny hodnoty nad 30 tisíc změníme na
‘více než 30 tisíc’.

Lokální omezení – Jako jediná z výše popsaných metod se aplikuje na jednotlivé
záznamy napříč datovým souborem dle potřeby. Jejím cílem je odstranit vzácné
kombinace identifikátorů tím, že nějaký z nich nahradí prázdnou hodnotou. Měla by
být aplikována pouze na záznamy, které mají vybranou kombinaci identifikátorů
jedinečnou a bylo by je možné zpětně identifikovat.
7.5.2 Technika pozměňování datových záznamů
Technika je založená na pozměňování dat. Důležité je si uvědomit, že pokud Narušitel přijde
na algoritmus, který byl použit pro pozměnění dané proměnné, tak si nikdy nemůže být jist,
zda nějaký další údaj nebyl pozměněný taktéž. V tomto případě by sice mohl identifikovat
subjekt údajů, ale velmi pravděpodobně by mohl mít nekorektní zbylé data. K pozměňování
může docházet několika různými metodami, které si popíšeme v následujících řádcích.

Mikro-agregace – Tato technika je použitelná na číselné záznamy. Příkladem může
být příjem subjektů. Nejprve je potřeba subjekty dle příjmu seřadit a poté rozdělit na
k skupin, kde k je nejméně 3. Seřazením získáme co možná nejpodobnější hodnoty
v jednotlivých skupinách. Podle počtu záznamů je potřeba upravit velikost skupiny
- 23 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
pro první či poslední skupinu. V jednotlivých skupinách pak provedeme klasický
aritmetický průměr.
Obrázek 4 - Ukázka mikro-agregace
Zdroj: Převzato z http://www.ihsn.org/home/?q=tools/anonymization/techniques

Prohazování hodnot – Spočívá v záměně hodnot v páru s jiným záznamem
v datovém souboru. Jedná se zejména o záměnu hodnot, které dělají záznam
vzácný či unikátní a tak snižují riziko zpětné re-identifikace. Na druhou stranu je tato
metoda nevhodná pro statistické účely, protože může velmi pozměnit význam dat
v případě, že dané hodnoty jsou nutné pro danou statistiku.

Náhodné prohazování hodnot – Jedná se o obdobu předchozí metody, kdy k
prohazování hodnot dochází čistě náhodně a v případě zpětné identifikace si
Narušitel nemůže být jistý, zda je ta či ona hodnota v datech správná.

Přidávání šumu – Není nejbezpečnější metodou, pokud jde o ochranu dat. Ve své
podstatě jde například jen o přidávání nul do všech vybraných záznamů či přidávání
jiného náhodně generovaného řetězce.

Pře-vzorkování – Jde o náhradu t záznamů a s hodnot z originálních dat, jejich
seřazení a zprůměrování. Rozhodnu-li se upravit 10 záznamů a u každého z nich 2
hodnoty, tak si všech 20 hodnot seřadím, každé dvě hodnoty zprůměruji a nahradím
jimi původní dvojice hodnot pro každý záznam.
7.6 Vybrané principy a techniky
Nyní je čas si říci, které z výše popsaných principů a technik budou použity při implementaci
aplikace a zároveň si odůvodnit proč tomu tak je.
- 24 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
V případě principů je to velmi jednoduché, protože aplikace bude umožňovat se zaměřovat
jak na přímé, tak na nepřímé identifikátory. Díky tomu má uživatel aplikace maximální
svobodu při rozhodování, co by mělo být anonymizováno, respektive chráněno před
zneužitím Narušitelem. Důraz je kladen na přímé identifikátory, které by měly jít nahradit
jinými náhodnými hodnotami, na základě kterých nebude možné provést zpětnou identifikaci
subjektu údajů.
U technik se nedá přesně říci, která z výše popsaných je vlastně v aplikaci použita, protože
se nejedná o aplikaci k anonymizování datových souborů pro statistické účely. Díky tomu
bylo možné si vzít z každé z nich něco, upravit to pro vlastní potřebu a spojit to do jednoho
celku. Aplikace umožňuje jak odstraňování hodnot (jejich vymazání, respektive jejich
nahrazení prázdnou či jinou hodnotou), tak prohazování hodnot. Nikoliv však mezi
jednotlivými záznamy v datovém souboru, ale s listem nadefinovaných objektů v aplikaci.
- 25 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
8.
ANALÝZA A NÁVRH ŘEŠENÍ
Cílem této kapitoly je seznámení s analýzou problému, vysvětlení problémové domény a
následným návrhem řešení daného problému. Tato kapitola se již tedy aplikací jako takovou
zabývá, avšak na vyšší úrovni abstrakce. Následující kapitola se pak bude věnovat samotné
implementační části.
8.1 Problémová doména
Finální aplikace by měla řešit potřeby reálných uživatelů a je přímo implementována pro
společnost Titio s.r.o., ve které jsem byl zaměstnán a nyní tam působím už jen jako externí
konzultant.
Zdrojem dat však není tato společnost, ale její zákazníci, kterými jsou především bankovní a
finanční instituce, telefonní operátoři a energetické společnosti. Firma má v mnoha
případech problém dostat od zákazníka včas data, která by mohla použít pro vývoj a
testování aplikací.
Obrázek 5 - Abstraktní schéma problémové domény mezi Titio s.r.o. a zákazníkem
Zdroj: Vlastní tvorba
Obrázek 5 demonstruje na vyšší úrovni abstrakce činnost divize print. Ta na prostřednictvím
konzultačních služeb spravuje a implementuje aplikace přímo u zákazníka. V tomto případě
se jedná o britskou společnost Scottish and Southern Energy (zkráceně jen „SSE“).
- 26 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
Na obrázku 5 je vidět kompetentnost dílčích subjektů. Titio s.r.o. vyvíjí v testovacím,
respektive pre-produkčním prostředí a pro svou potřebu používá anonymizovaná data, ze
kterých dostane testovací výstupní soubory.
SSE však používá produkční aplikaci, do které vstupují originální data a výstupní soubory
jsou určeny k dalšímu zpracování – doručení zákazníkovi či archivaci.
Úzkým hrdlem je právě dodání testovacích dat, které je většinou velmi zdlouhavé a
produkční data není možné z bezpečnostních důvodů použít. Na druhou stranu i dodaná
anonymizovaná data jsou v několika případech nedostačující, z důvodu aplikace nevhodné
anonymizace, která většině údajů v datovém souboru úplně sebere jejich význam a s daty,
respektive s výstupy z nich vyprodukovaných, se pak hůře pracuje. V oblasti dokumentové
kompozice je velmi důležité, aby data dávala smysl a neztratila význam jako celek. Doposud
jsem se bohužel setkal jen s řešeními, která například nahrazují vybraná pole v datech za
spleť znaků, což rozhodně není vhodná metoda pro tyto účely. Všechna řešení byla navíc
vždy určena jen pro jednu strukturu dat a nedala se aplikovat na jiná data, než pro které bylo
řešení implementováno.
8.1.1 Popis společnosti 11
Společnost Titio s.r.o. se skládá ze tří divizí.

Titio group – Jde o hlavní řídící orgán společnosti, který je nadřazený následujícím
dvoum divizím.

Titio print – V tomto případě jde o divizi poskytující tisková řešení a konzultace
12 13
svým zákazníkům, převážně postavených na HP Exstream .

Titio digital – Tato divize poskytuje vývoj aplikací a informačních systému na
zakázku, postavených na Microsoft technologiích. Zároveň poskytuje konzultace pro
Microsoft SharePoint a další.
8.1.2 Dokumentová kompozice
Dokumentová kompozice je obor, ve kterém dochází k transformaci vstupních dat na
výstupní soubory určené k doručení zákazníkovi či k archivaci. Zajišťuje kompletní
komunikaci mezi společností a jejími partnery či zákazníky. Ve většině případů jde tedy o
B2B a B2C komunikaci. Řešení dokumentové kompozice se implementuje převážně přímo
11
Titio s.r.o. [online], c2011 [cit. 2012-04-10]. Dostupný z WWW: http://www.titio.cz/
12
Jedná se o softwarové řešení společnosti Hewlett-Packard, které implementuje veškeré potřebné procesy
dokumentové kompozice
13
Hewlett-Packard. [online], c2009 [cit. 2012-04-10]. Dostupný z WWW:
http://welcome.hp.com/country/us/en/prodserv/software/eda/products/hpexstream.html
- 27 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
v prostředí zákazníka, který si zajistí vlastní zdroje pro jeho chod, nebo i po realizace dále
setrvává v rukou konzultantů dodavatele řešení, ovšem spravovaného v prostředí zákazníka.
Obrázek 6 - Transformační proces dokumentové kompozice
Zdroj: Vlastní tvorba
Výstupním souborem je sdělení informace druhé straně, nejčastěji nabývá podob klasických
dopisů, obchodních sdělení, faktur, výpisů z účtů či formulářů. Ve své podstatě jde o
jakoukoliv informaci od společnosti směrem k zákazníkovi.
Tiskové soubory
Elektronické soubory
• AFP
• PostScript
• PCL
• IJPDS
• ...
• PDF
• HTML
• TIFF
• Formulářový
soubor
• ...
Obrázek 7 - Rozdělení výstupních souborů pro dokumentovou kompozici
Zdroj: Vlastní tvorba
Standardně se produkují dva druhy výstupních souborů a to soubor určený k tisku a
elektronický soubor, například HTML soubor, který může být doručen elektronicky. Tím se
dostáváme k rozdělení výstupních souborů.
Výše uvedený seznam zmiňuje jen ty nejčastěji používané typy výstupních souborů, které se
mohou produkovat. HP Exstream například umožňuje produkci až 22 typů výstupních
souborů. Každá společnost si vybírá tiskový formát podle svých možností – závisí například
na typu tiskárny a typech souborů, které daná tiskárna podporuje. Společnost si tisk může
řešit vlastními zdroji, ale ve většině případů tuto část svěřuje třetí straně, která se rovnou
stará o následnou distribuci výstupů.
U elektronických typů souborů se obvykle jedná o PDF, které slouží k archivaci, ale i
k elektronické komunikaci se zákazníkem. Další možností je PDF uchovávat čistě k archivaci
a generovat HTML výstup pro elektronickou komunikaci se zákazníkem prostřednictvím
emailu. PDF je také nejpoužívanějším výstupem pro testovací účely, protože se s ním
pracuje daleko rychleji a jednodušeji, než se soubory, které jsou určeny přímo k tisku.
- 28 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
8.1.3 Ukázka výstupu
Následující obrázek je ukázkou tiskového výstupu společnosti SSE, který byl manuálně
anonymizovaný. Jedná se o první stranu přehledu o spotřebě elektřiny. Výstup byl
vyprodukován aplikací HP Exstream.
Obrázek 8 - Zdroj tiskového výstupu společnosti SSE
Zdroj: SSE
- 29 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
8.1.4 Ukázka dat
Následující obrázek demonstruje strukturu datového souboru ve formátu XML, který
uchovává všechny potřebné informace o zákaznících společnosti a je vždy generován
z databáze společnosti a to jen za cílem, aby byl použit jako vstupní datový soubor
v procesu
dokumentové
kompozice.
Níže
uvedený
datový
soubor
byl
manuálně
anonymizován a byl použit pro vyprodukování výstupu, který je na obrázku č. 8. Tag
<Document> je vždy právě jeden zákazník a <Page> obsahuje informace pro jednotlivé
stránky výstupu.
Obrázek 9 - Ukázka datové struktury společnosti SSE
Zdroj: SSE
- 30 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
8.2 Definice cílů práce
Samotným cílem práce je navrhnout a implementovat aplikaci, která zajistí snadné
anonymizování vstupních souborů, určených primárně pro vývoj a testování dalších aplikací
v oblasti dokumentové kompozice. Na větší úrovni abstrakce lze aplikaci popsat vcelku
jednoduše – na vstupu se očekává soubor obsahující citlivá data určená k anonymizaci, kde
na základě konfigurace aplikace a šabloně vstupního souboru, dostaneme soubor výstupní,
který po aplikaci anonymizačního algoritmu bude obsahovat již požadované fiktivní údaje.
Obrázek 10 - Procesní schéma aplikace
Zdroj: Vlastní tvorba
Celé řešení bude postaveno na .NET platformě s využitím programovacího jazyka C#.
Z důvodu možných velikostí vstupních, respektive výstupních souborů, není možné, aby bylo
řešení implementováno jako webová aplikace. Bude se tedy jednat o klasickou desktopovou
aplikaci, pro jejíž vývoj byl zvolen Windows Presentation Foundation (zkráceně „WPF“)
Aplikace by měla být především velmi jednoduchá na ovládání a velmi snadno rozšiřitelná o
další typy hodnot, které je možné generovat. Další velmi důležitou rolí je nepozměněný
význam dat ve výstupním souboru. Data by měla dávat smysl a nepozměnit vstupní soubor
jen na hromadu náhodně generovaných znaků.
- 31 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
8.2.1 Rozsah práce
Rozsah projektu je omezen na implementaci funkční aplikace, která ovšem nemůže fungovat
zcela samostatně, protože její nedílnou součástí jsou zásuvné moduly, které se starají o
generování hodnot, dle jejich nastavení.
Samotné zásuvné moduly však do rozsahu projektu spadají taktéž. V této fázi se počítá
s několika základními, které jsou vypsány níže.

Vlastní

Číslo

Datum

Jméno

Rodné číslo

Text
Zásuvné moduly musí být kompletní, to znamená včetně vlastních validací vstupních dat,
které proběhnou při vytváření instance konkrétního zásuvného modulu.
8.2.2 Výstupy práce
Název
Popis
Aplikace
Samotná aplikace, která svou funkčnost bude poskytovat d íky vloženým
zásuvným modulům.
DLL zásuvných
modulů
Jednotlivé DLL soubory, které představují vždy právě jeden konkrétní typ
objektu, který je možné anonymizovat.
Uživatelská
dokumentace
Stručný popis, jak aplikaci používat z uživatelského pohledu.
Dokumentace
Díky použití XML komentářů přímo ve zdrojovém kódu aplikace, bude
dokumentace automaticky vygenerována v MS Visual Studio.
Tabulka 1 - Výstupy práce
8.2.3 Mimo rozsah práce
Práce v první fázi neřeší přímé vytváření souborů, do kterých by bylo možné data generovat.
Je tedy vždy nutné mít vstupní soubor, který bude pro aplikaci sloužit jako šablona pro
výstupní anonymizovaný soubor.
Aplikace v první fázi také nebude podporovat další typy souborů, které se v dokumentové
kompozici také velmi často používají – columnar a delimited. V této fázi bude primárně
pracovat jen s XML soubory a implementace těchto typů souborů proběhne až v budoucích
rozšířeních aplikace, kde se zároveň počítá s implementací dalších zásuvných modulů.
- 32 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
8.3 Správa požadavků
8.3.1 Identifikované požadavky
ID
Název
Popis
REQ01
Desktopová aplikace
Aplikace bude implementována formou desktopové
aplikace, protože není třeba sdílet data napříč jejími
uživateli.
+
REQ02
Požadované
technologie
Aplikace musí být postavena na .NET platformě.
+
Podpora dat
V první fázi se počítá pouze s podporou souboru XML.
Tento typ souboru bude jako vstupní soubor do aplikace
a po následném procesu anonymizace bude výstupním
souborem opět vstupní XML soubor.
S
Variabilní architektura
Aplikace bude snadno rozšiřitelná o další podporované
typy objektů. Je tedy nutná podpora nových zásuvných
modulů, které se budou pro aplikaci jednoduše
implementovat. Přidání funkčního zásuvného modulu
nabízející standardní funkcionalitu je možné bez zásahu
do aplikace samotné.
S
REQ05
Vytváření šablon
Aplikace po načtení XML souboru projede načtené XML
a vytvoří k němu odpovídající šablonu, která je
zobrazena v hierarchické podobě jako XML soubor.
Šablona představuje obdobu schématu XML souboru.
F
REQ06
Podporované typy
objektů (zásuvné
moduly)
Aplikace musí podporovat několik typů objektů, které je
možné anonymizovat - číslo, text, jméno, datum, vlastní,
rodné číslo.
S
GUI
Aplikace bude rozložena do dvou vertikálních sloupců pravý bude pevný a bude v něm umístěn panel vlastností
instancí zásuvných modulů, list instancí a další
doplňkové panely. Levý panel bude vždy roztažen dle
velikosti okna a bude se v něm nacházet strom se
strukturou šablony daného XML souboru. Samozřejmostí
je menu v horní části okna a stavový řádek v dolní části
okna.
U
REQ08
Drag and Drop
Aplikace je určena pro business uživatele a je tedy
potřeba, aby byla co nejvíce uživatelsky přívětivá a práce
s ní byla jednoduchá, rychlá a efektivní. Pro dosažení
tohoto stavu je potřeba implementovat drag and drop
funkcionalitu při přiřazování nastavených instancí k
objektům zobrazených ve stromu, tedy do šablony.
U
REQ09
Správa objektů
Aplikace musí umožňovat CRUD jednotlivých typů
zásuvných modulů. Tedy vytvoření instance, její ukládání
do seznamu instancí, mazání a editaci.
F
REQ10
Dokumentace
Aplikace bude plně komentovaná, aby bylo možné
nechat vygenerovat dokumentaci přímo ve Visual Studiu.
U
Rychlost
Odezva aplikace bude v řádech sekund na dnešním
průměrném HW. Výjimku tvoří pouze algoritmus, který
prochází vstupní XML soubor a vytváří z něho šablonu a
samozřejmě samotný anonymizační algoritmus. Oba tyto
algoritmy by však měly být optimalizovány, aby jejich
P
REQ03
REQ04
REQ07
REQ11
Kategorie
- 33 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
provedení netrvalo v řádech desítek minut.
Ukládání
Aplikace musí umožňovat ukládání již nakonfigurovaných
instancí v listu - jde tedy o import a export těchto listů.
Důvodem je jejich možná znovu použitelnost pro více
XML souborů.
F
REQ13
Anonymizace
Aplikace musí disponovat algoritmem pro anonymizování
vstupního XML souboru na základě nadefinovaných
instancí, které budou přiřazené k elementům šablony,
která je vytvořena ze vstupního XML souboru.
F
REQ14
Unikátnost
Aplikace musí podporovat generování unikátních hodnot
pro všechny podporované typy objektů (zásuvné
moduly). Defaultním nastavením však bude možnost
opakování již vygenerovaných hodnot.
F
REQ15
Nad jednotlivými nadefinovanými instancemi v listu
Náhled generovaných
instancí bude možné volat funkci, která dle nastavení této
hodnot
instance vygeneruje náhodnou hodnotu.
F
REQ16
Jazykové mutace
Aplikace bude lokalizována v anglickém jazyce. S
žádným dalším jazykem se nepočítá.
+
REQ17
Náhlé ukončení
Aplikace se nesmí ukončit po nesprávně vyplněném
formuláři.
R
REQ18
Neporušení souboru
Při náhlém ukončení aplikace nesmí dojít k aplikaci
jakýchkoliv změn do vstupního XML souboru, aby
nedošlo k porušení integrity dat.
R
Práce s XML
Aplikace musí umožňovat otevírání souborů XML pomocí
open dialogu, kde bude filtr omezen jen na XML soubory.
Aplikace také musí podporovat ukládání XML souborů,
které bude potřebné po provedení anonymizace.
F
REQ12
REQ19
Tabulka 2 - Přehled jednotlivých požadavků
8.3.2 Prioritizované požadavky
Aplikace je funkční jen jako celek a musí být tedy dodána jen jako kompletní řešení. Při
vypuštění jakéhokoliv požadavku již aplikace nebude poskytovat takovou přidanou hodnotu,
která se od ní očekává.
ID
Priorita
Dodávka
REQ06
1
A
REQ11
1
A
REQ14
1
A
REQ18
1
A
REQ19
1
A
REQ20
2
A
REQ25
1
A
Tabulka 3 - Přehled prioritizace požadavků
- 34 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
8.4 Navrhované řešení
8.4.1 Popis navrhovaného řešení
Na základě problému a jeho analýzy je řešením implementace desktopové aplikace. Z
důvodu velikosti vstupních a výstupních dat, která se může pohybovat až ve stovkách MB,
nelze aplikaci implementovat formou webové aplikace, kde by samotná aplikace běžela na
serveru či v cloudu. U cloudu by nastal další problém kvůli přítomnosti citlivých informací.
Hlavní výhodou aplikace je její architektura podporující dohrávání nových zásuvných modulů
bez zásahu do aplikace samotné a jednoduché uživatelské rozhraní, které umožní pracovat
s aplikací jednoduše a efektivně i business uživatelům.
Hlavní přidanou hodnotou je především její vysoká efektivita při anonymizování XML
souborů, která několikanásobně zkrátí proces získání dat od zákazníka, které jsou potřebné
pro vývoj či testování.
8.4.2 XML šablona
Pod tímto pojmem se bude skrývat objekt s vlastní strukturou, která bude závislá na
vstupním XML souboru. Implementovaný algoritmus by měl být schopný z každého
vstupního XML souboru vytvořit hierarchickou strukturu objektů, v které obsáhne všechny
potřebné kombinace elementů a atributů. Poté bude sloužit pro přiřazování instancí
zásuvných modulů.
Ve finále bude především použita pro anonymizační algoritmus, kde bude tato vytvořena a
uživatelem nastavená šablona aplikována na zvolený vstupní XML soubor. Provede tak
vygenerování dle nastavení jednotlivých instancí zásuvných modulů a těmito hodnotami
přepíše hodnoty, které se nachází ve vstupním XML souboru. Podle požadavků na aplikaci
však neporuší vstupní soubor a vše uloží jako nový výstupní XML soubor.
Šablona by měla jít uložit jako rozdělaný projekt, aby bylo možné ji jednou vytvořit, nastavit
dle přání uživatele a poté ji vždy jen otevřít a aplikovat na požadovaný vstupní XML soubor.
8.4.3 Zásuvný modul
Zásuvným modulem se rozumí DLL
14
knihovna, kterou lze vyvíjet nezávisle na aplikaci.
Touto formou budou řešeny všechny typy objektů, které lze anonymizovat, respektive
generovat. Tyto zásuvné moduly pak mohou být k aplikaci kdykoliv připojeny, aby s nimi
uživatel mohl pracovat. Cílem je, aby uživatel aplikace mohl vytvářet jednotlivé instance
těchto zásuvných modulů, které si nastaví dle své potřeby. Poté by tyto instance mohl
přiřazovat elementům či atributům v XML souboru, kde by chtěl daný typ hodnot generovat.
14
Jedná se o knihovnou, která není samostatně spustitelná.
- 35 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
Obrázek 11 - Uživatel vytváří instanci zásuvného modulu
Zdroj: Vlastní tvorba
8.4.4 Architektura navrhovaného řešení
Architektura aplikace by měla být velmi jednoduchá. Datová vrstva v pravém slova smyslu
není potřeba, místo ní bude v aplikaci datová třída, která bude uchovávat objekty za běhu
apliakce. Business vrstva bude obstarávat všechny nezbytné operace a IO vrstva bude mít
na starost načítání zásuvných modulů, serializaci a deserializaci objektů atd.
Všechny ucelené části aplikace by měly být rozděleny do separátních projektů v rámci
jednoho řešení ve Visual Studiu. Každý zásuvný modul musí být také separátní projekt a
požadavkem je, aby byl naprosto nezávislý na samotné aplikaci. Jediné co musí zásuvný
modul splňovat, je implementace rozhraní – detailní popis implementace zásuvného modulu
bude ale popsána.
Obrázek 12 - Abstraktní schéma architektury aplikace
Zdroj: Vlastní tvorba
- 36 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
Uživatel tedy bude komunikovat pouze s prezenční vrstvou aplikace, které bude předkládat
XML soubor, který potřebuje anonymizovat. Prezenční vrstva bude komunikovat s vrstvou
obchodní logiky, které bude vše řídit. Nejprve bude vytvořena XML šablona ze vstupního
XML souboru vloženého uživatelem. Následně bude mít uživatel prostor pro vytvoření
vlastních instancí zásuvných modulů, které si nadefinuje dle své potřeby a poté je přiřadí
jednotlivým elementům v XML šabloně. V tuto chvíli bude aplikace již připravena
anonymizovat data a bude nutné zadat vstupní a výstupní XML soubor.
8.4.5 Návrh GUI
Grafické rozhraní by mělo být především jednoduché, intuitivní a použitelné. Žádné
specifičtější požadavky nebyly v rámci analýzy zjištěny, takže se návrh GUI snaží vycházet
z klasických aplikací, aby si uživatelé nemuseli zvykat na zcela nový přístup ovládání
aplikace.
Obrázek 13 - Návrh grafického rozhraní aplikace
Zdroj: Vlastní tvorba
Na obrázku výše je vidět, že rozpoložení panelů opravdu odpovídá jiným aplikacím a
nejedná se tak o nic unikátního. Nahoře jde o klasickou hlavní nabídku, odkud by měly být
přístupné všechny funkčnosti aplikace. Ve spodní části se nachází stavový řádek, který by
měl zobrazovat informace směrem k uživateli aplikace a zajistit tak jakousi komunikaci mezi
uživatelem a aplikací.
Dále je aplikace rozdělena vertikálně na dvě části. Levá část bude sloužit k zobrazení
hierarchické struktury vstupního XML souboru, respektive šablony, která z něj bude
vytvořena. Pravá část potom slouží k práci se zásuvnými moduly. Ve spodní části bude
možné jednotlivé instance všech zásuvných modulů vytvářet a editovat. V horní části pak
- 37 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
bude zobrazen seznam všech vytvořených instancí zásuvných modulů a bude zde možné
volat různé funkčnosti nad těmito objekty.
Mezi oknem pro zobrazení šablony XML souboru a oknem pro zobrazení listu již
vytvořených instancí zásuvných modulů by měla být implementována Drag&Drop
funkcionalita pro přiřazování jednotlivých instancí k uzlům XML šablony.
8.5 Popis použitých technologií
8.5.1 XML 15
XML je zkratka pro eXtensible Markup Language. Jedná se o značkovací jazyk, který se
velmi podobá jazyku HTML. Je tvořen hierarchickou strukturou tzv. elementů. Není však
určen k tomu, aby data zobrazoval, ale aby je udržoval v podobě, která je snadno čitelná jak
strojově, tak lidským okem. V dnešní době se jedná o nejvíce používaný způsob výměny dat
mezi různými aplikacemi a to především na internetu. Díky předem definované struktuře
elementů a jejich názvů je tak pro druhou stranu velmi jednoduché s takovýmto souborem
pracovat.
Obrázek 14 - Ukázka struktury XML souboru
Zdroj: Vlastní tvorba
Pro potřebu této práce není třeba zacházet do větších detailů, protože aplikace bude
pracovat pouze s jednotlivými elementy a atributy souborů. Nebude se zabývat dalšími
vlastnostmi, jako jsou komentáře, schémata, jmenné prostory a podobně.
Spíše je vhodné si říci, jak se bude s XML souborem pracovat. K práci s XML souborem byl
vybrán přístup DOM. Tento přístup nám poskytuje objektově orientované rozhraní a celá
hierarchická struktura dokumentu je tak načtena v paměti – to může mít negativní dopad při
dostupném menším množství paměti a při práci s objemnějšími soubory. Výhodou však je
samotná práce s XML souborem, protože nám to umožňuje dynamický a rychlý průchod
souborem či jeho úpravu.
15
POKORNÝ, Jaroslav. XML technologie – principy a aplikace v praxi. 1. vyd.
Praha : Grada, 2008. 272 s. ISBN 978-80-247-2725-7
- 38 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
K procházení hierarchickou strukturou dokumentu nám poslouží jazyk XPath. Jedná se o
prostředek, který umožňuje vybírat jednotlivé části XML dokumentu. My ho budeme využívat
k získávání kolekce elementů ze vstupního souboru, které mají být dle nadefinované šablony
anonymizovány. Vystačíme si tak s dvěma typy XPath výrazů, které budou použity jako
vstup pro DOM metody nad vstupním XML souborem.
Element - /zakaznici/zakaznik/jmeno
Tento XPath výraz nám vrátí kolekci všech elementu s názvem zakaznik z obrázku č. 13.
Lomítko na začátku výrazu symbolizuje absolutní cestu, bez něho by se jednalo o cestu
relativní a nezáleželo by tak na umístění elementu zakaznici v dokumentu.
Atribut - /zakaznici/zakaznik[@id]
Zde jde o výraz, který nám vrátí kolekci všech elementů s názvem zakaznik, které obsahují
atribut s názvem id. Opět se díky počátečnímu lomítku jedná o absolutní cestu.
8.5.2 WPF
WPF je zkratka pro Windows Presentation Foundation. Microsoft tuto technologii představil
v roce 2007 jako součást .NET Frameworku 3.0. Díky WPF je možné vytvářet aplikace
s bohatým grafickým rozhraním a vývojář tak není omezen vzhledem standardních prvků,
jako je tomu v případě Windows Forms. Pro vykreslování používá DirectX a nemá tak
problém pracovat s 2D či 3D grafikou, nebo dokonce s vektory, audiem a videem.
Podstatnou změnou je však zcela nový způsob tvorby grafického rozhraní, které je ve WPF
zcela oddělené od samotného kódu. Spolu s WPF je tak představen značkovací jazyk
XAML, který vychází z jazyka XML. V určitých případech je možné tvořit aplikaci pouze
pomocí XAML, protože disponuje velkou podporou tzv. bindingu. Ve většině případů ale
XML obstarává pouze tu zobrazovací část a v kódu se implementují potřebné handlery a
samotná logika dané aplikace.
Obrázek 15 - Ukázka grafického rozhraní WPF aplikace
Zdroj: Převzato z http://blogs.jp.infragistics.com/blogs/andrew_flick/archive/2008/01/29/netadvantagefor-wpf-rtm.aspx
- 39 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
8.6 Use-case specifikace
8.6.1 Přehled aktérů
Název
Popis
Cíle
Uživatel
Uživatelem aplikace může být
téměř kdokoliv, ale nejčastěji
se bude jednat o software
konzultanta či analytika,
pracujících v oblasti
dokumentové kompozice.
Na základě obdrženého XML
souboru, který načte do
aplikace, musí uživatel vytvořit
požadované objekty, přiřadit je
k šabloně a nechat proběhnout
anonymizační algoritmus, který
mu vrátí požadovaný finální
XML soubor.
Tabulka 4 - Přehled aktérů aplikace
8.6.2 Přehled use-case
Název
Popis
UC01
Anonymizuj
Aplikuje anonymizační algoritmus na XML
soubor, který je kompatibilní s vytvořenou
šablonou. Dle nastavení jednotlivých objektů
vygeneruje požadované hodnoty.
UC02
Otevři XML
Otevře open dialog a umožní tak uživateli
vybrat libovolný XML soubor, který chce v
aplikaci otevřít.
UC03
Ulož XML
Ukládá již anonymizovaný XML soubor.
Uživateli umožní zvolit cestu, kam se má
výstupní XML soubor uložit.
UC04
Vytvoř XML šablonu
Projede otevřený XML soubor a na základě
jeho vnitřní struktury vytvoří šablonu, která
bude sloužit pro mapování souboru v aplikaci,
kde se na ni budou přiřazovat jednotlivé
objekty.
UC05
Vytvoř objekt
Vytvoří požadovanou instanci zásuvného
modulu (objekt), kde uživatel vyplní potřebné
vstupní parametry a objekt uloží do listu všech
objektů.
Uprav objekt
Z listu objektů načte požadovaný objekt zpět do
panelu vlastností, kde má uživatel možnost
upravit jednotlivé vstupní parametry a následné
jen uloží provedené změny objektu.
Smaž objekt
Smaže požadovaný objekt z listu objektů a v
případě, že je daný objekt již přiřazen, tak se
uživatele dotáže, zda se má daný objekt
zachovat, nebo zda se má opravdu smazat
včetně všech jeho přiřazení.
Ukaž příklad
Částečně spustí UC01 nad požadovaným
objektem v listu objektů a zobrazí uživateli
náhled možné hodnoty objektu, dle jeho
nastavených parametrů.
Zajisti unikátnost
V případě, že instance přiřazení objektu
k šabloně má nastavenou vlastnost unikátnost
na ano, tak se při anonymizaci kontroluje, aby
ve výsledném souboru byla každá hodnota
tohoto objektu opravdu unikátní – za
ID
UC06
UC07
UC08
UC09
- 40 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
předpokladu, že množina možných hodnot je
stejná nebo větší, než počet výskytů v XML
souboru.
UC10
Referencuj objekt
Uskutečněno drag and drop funkcionalitou. Z
listu objektů uloží referenci na daný objekt do
vybraného nodu nebo atributu v šabloně.
UC11
Odreferencuj objekt
Smaže přiřazení na objekt pro daný node nebo
atribut v šabloně.
UC12
Ulož list
Uloží danou instanci všech objektů v listu
objektů.
Nahraj list
Nahraje požadovaný uložený list zpět do listu
objektů v aktuálně otevřeném projektu –
přepíše stávající objekty, nebo je do listu přidá
k těm stávajícím.
UC13
Tabulka 5 - Přehled jednotlivých use-case
8.6.3 Přehled mapování požadavků na use-case
REQ05
REQ09
REQ12
UC01
REQ13
REQ14
REQ15
REQ19
X
UC02
X
UC03
X
UC04 X
UC05
X
UC06
X
UC07
X
UC08
X
UC09
X
UC10
X
UC11
X
UC12
X
UC13
X
Tabulka 6 - Mapování požadavků na jednotlivé use-case
- 41 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
8.6.4 Use-case diagramy
První use-case diagram zachycuje část aplikace, kde uživatel spouští funkčnosti nad XML
soubory. Druhý use-case diagram pak demonstruje případy užití, které se vztahují
k zásuvným modulům a poslední se ukazuje IO funkčnosti a přiřazování instancí zásuvných
modulů.
Obrázek 16 - Use case diagram XML části aplikace
Zdroj: Vlastní tvorba
Obrázek 17 - Use case diagram pro instance zásuvných modulů
Zdroj: Vlastní tvorba
- 42 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
Obrázek 18 - Use case diagram pro IO případy užití a přiřazování instancí zásuvných modulů
Zdroj: Vlastní tvorba
- 43 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
9.
IMPLEMENTACE APLIKACE
Tato kapitola se věnuje implementaci samotné aplikace. Podíváme se nejprve na finální
architekturu aplikace a poté si podrobněji popíšeme dva hlavní a důležité celky – XML
šablona a zásuvné moduly. Následovat bude stručný popis důležitých tříd aplikace.
9.1 Architektura aplikace
Architektura aplikace vychází z předchozího návrhu, ale na následujícím obrázku je možné
již vidět 5 tříd, reprezentující jednotlivá okna aplikace, které bylo potřeba implementovat pro
splnění všech požadavků na aplikaci. Jedná se o hlavní okno aplikace, skrze které uživatel
s aplikací pracuje a v průběhu práce s aplikací se setká i dalšími 4 podokny.
Obrázek 19 - Architektura aplikace
Zdroj: Vlastní tvorba
- 44 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
Na obrázku je rozdělena aplikační logika a datová vrstva na dvě separátní části. V aplikaci
se ovšem jedná o jeden projekt s názvem DataAnonymizer.BLL. IPluginable je součástí
projektu
DataAnonymizer.Interfaces
a
XmlTemplateItem
je
součástí
projektu
DataAnonymizer.Entities.
Dále je součástí řešení ještě jeden projekt s názvem DataAnonymizer.Constants, který však
není z architektonického pohledu nikterak důležitý a tak je jak z obrázku, tak z dalších kapitol
vynechán. Jedná se jen o třídu obsahující konstanty, které se poté používají v aplikaci.
9.2 Vytváření XML šablony
9.2.1 Princip
Principem vytváření XML šablony je vytvoření hierarchické struktury objektů, která bude
kopírovat strukturu samotného vstupního XML souboru a vytvoří všechny možné kombinace
elementů a atributů, které se v něm nachází.
9.2.2 Objekt šablony XmlTemplateItem
Pro sestavení a uchování šablony v aplikaci je použit vlastní objekt XmlTemplateItem, který
obsahuje všechny potřebné vlastnosti.
Ve fázi sestavování nás především zajímají vlastnosti Name, Type, IsRoot, XPath a
ParentXPath. Tyto vlastnosti dokážou zajistit fungující hierarchickou strukturu, která
odpovídá požadavkům a potřebám aplikace. Ukládáme tedy jen unikátní elementy a zajímá
nás, zda jde o kořen XML souboru, samotný název elementu a jeho typ – node nebo atribut.
Důležitá vlastnost je pak XPath, podle které poznáme, které elementy již v šabloně máme.
Při anonymizaci je neméně důležitá, protože se díky ní vybírají elementy ze vstupního XML
souboru. ParentXPath pak slouží pro schopnost aplikace vykreslit tuto hierarchii objektů jako
strom elementů.
Obrázek 20 - Třída XmlTemplateItem reprezentuje XML šablonu
Zdroj: Vlastní tvorba
- 45 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
IsAnonymizable se nastavuje automaticky při sestavování XML šablony, protože algoritmus
pozná, které části souboru lze anonymizovat a které naopak nelze. IsUnique je již plně
v režii uživatele a určuje, zda přiřazená instance zásuvného modulu má být při anonymizaci
unikátní hodnota. Tyto instance se nastavují do vlastnosti PluginInstace.
9.2.3 Popis algoritmu
Sestavování XML šablony probíhá díky rekurzivní metodě, která má vždy jen jeden vstupní
parametr a to je element v rámci vstupního XML souboru. Sama sebe pak zavolá postupně
pro všechny předky daného elementu. Tím je ošetřen průchod celou strukturou souboru.
private static void ProcessNode(XmlNode node)
{
// Zajímáme se pouze elementy typu Element
if (node.NodeType == XmlNodeType.Element)
{
// Získání XPath pro daný element
string nodePath = GetNodePath(node, "");
// Pokud již tento element není uložen, tak pokračujeme dále
if (!DataManager.Instance.XmlTemplateItemList.Any(x => x.XPath ==
nodePath && x.Type == XmlTemplateItemType.Node))
{
// Získání XPath předka daného elementu
string parentNodePath = GetNodePath(node.ParentNode, "");
// Zjištění, zda element může být anonymizován -> zajímají
nás pouze elementy typu Text
bool isAnonymizable = false;
if (node.HasChildNodes)
{
foreach (XmlNode n in node.ChildNodes)
if (n.NodeType == XmlNodeType.Text)
isAnonymizable = true;
}
else
isAnonymizable = true;
// Vytvoření nového objektu XmlTemplateItem
DataManager.Instance.XmlTemplateItemList.Add(new
XmlTemplateItem()
{
// Nastavování jednotlivých vlastností pro typ Node
});
}
// Procházení všech atributů pro daný element
foreach (XmlAttribute attr in node.Attributes)
{
// Pokud tento atribut pro daný element ještě nemáme,
pokračujeme dále
if (!DataManager.Instance.XmlTemplateItemList.Any(x =>
x.ParentXPath == nodePath && x.Name == attr.Name &&
x.Type == XmlTemplateItemType.Attribute))
{
// Vytvoření nového objektu XmlTemplateItem
- 46 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
DataManager.Instance.XmlTemplateItemList.Add(new
XmlTemplateItem()
{
// Nastavování jednotlivých vlastností pro
typ Attribute
});
}
}
}
// Rekurzivní volání metody ProcessNode pro každého předka daného
elementu
foreach (XmlNode childNode in node.ChildNodes)
ProcessNode(childNode);
}
9.3 Zásuvné moduly
9.3.1 Rozhraní IPluginable
Jde o jediné, ale zároveň velmi důležité rozhraní, které musí implementovat každý zásuvný
modul, aby s ním bylo možné v aplikaci dále pracovat.
Obrázek 21 - IPluginable rozhraní
Zdroj: Vlastní tvorba
ImagePath - Každý zásuvný modul může mít svou vlastní ikonku, kterou se pak budou
všechny jeho instance odlišovat od ostatních. Tato vlastnost musí vrátit cestu k této ikonce.
InstanceName - Vlastnost, do které se za běhu aplikace ukládá název vytvořené instance.
IsValid – Tato vlastnost vrací true, pokud se jí podaří vygenerovat náhodnou hodnotu
z jejího aktuálního nastavení, jinak vrací false.
PluginAuthor – Jednoduše vrací řetězec obsahující jméno autora zásuvného modulu.
PluginDescription – Vrací řetězec obsahující popis daného zásuvného modulu.
- 47 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
PluginName – Vrací název daného zásuvného modulu.
PluginVersion – Vrací řetězec obsahující verzi daného zásuvného modulu.
Properties – Jedná se o slovník, který bude obsahovat jednotlivé vlastnosti zásuvného
modulu. Tyto vlastnosti se ve slovníku vytvoří v konstruktoru daného zásuvného modulu.
ValidityImagePath – Vrací cestu k zelené či červené ikonce. Záleží, zda je daná instance
korektně nastavena.
Anonymize() – Metoda, která provádí hlavní logiku zásuvného modulu. Z daného nastavení
instance musí vygenerovat náhodnou hodnotu konkrétního typu a poté ji vrátit jako řetězec.
BuildPropertiesPanel() – Tato metoda musí programově vytvořit potřebné ovládací prvky,
které povedou ke správnému nastavení zásuvného modulu.
9.3.2 Implementace zásuvného modulu
Vývoj nového zásuvného modulu je velmi jednoduchý. Ve své podstatě je potřeba dodržet
jen dvě věci a to korektně implementovat rozhraní IPluginable.
Prvním krokem je vytvoření nového projektu typu Class Library, v našem případě si
ukážeme tvorbu nového zásuvného modulu na jednoduchém modulu Custom, který
uživatele nechá zadat libovolný řetězec a v něm pak předdefinované značky zamění za
odpovídající hodnotu. Do projektu přidáme referenci na DataAnonymizer.Interfaces,
abychom mohli použít rozhraní IPluginable. Dále vytvoříme následující třídu, která musí být
serializovatelná, aby ji bylo možné serializovat při ukládání vytvořené instance zásuvného
modulu.
[Serializable]
public class Custom : IPluginable
{
}
Nyní je třeba začít postupně implementovat vlastnosti a metody z rozhraní. Začneme s těmi
nejjednoduššími, kde je nutné nastavit popisné vlastnosti zásuvného modulu, tedy jeho
název, popis, verzi, autora a cestu k ikonce. Pro korektní zobrazování názvu zásuvného
modulu v GUI aplikace, je nutné přetížit metodu ToString().
public string PluginName { get { return "Custom"; } }
public string PluginDescription
{
get
{
return "Creates combinations of random digits and characters,
Could be used to generate ID etc.";
}
}
public string PluginVersion { get { return "1.0"; } }
public string PluginAuthor { get { return "Patrik Jankovský"; } }
- 48 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
public string ImagePath { get { return "../Resources/Image/plugin.png"; } }
public override string ToString()
{
return PluginName;
}
Aby PluginManager mohl dynamicky číst a ukládat vlastnosti z vygenerovaných ovládacích
prvků, tak je velmi důležité, aby měl každý ovládací prvek totožný název jako má vlastnost,
kterou nastavuje. Dobrým zvykem je vytvoření konstant řetězců a ty pak používat dále
v rámci celého zásuvného modulu, aby se názvy nikde nelišily.
private const string C_INPUTSTRING = "INPUTSTRING";
V našem případě máme tedy jen jednu vlastnost, kterou budeme zásuvnému modulu
nastavovat. Dále je potřeba implementovat vlastnost pro názvy jednotlivých instancí a
vytvoření slovníku vlastností, který se bude inicializovat v konstruktoru třídy.
public string InstanceName { get; set; }
public Dictionary<string, object> Properties { get; set; }
public Custom()
{
Properties = new Dictionary<string, object>();
Properties.Add(C_INPUTSTRING, null);
}
Nyní můžeme implementovat metodu pro sestavení ovládacích prvků, které slouží pro
uživatelské nastavení instance zásuvného modulu. Pro náš příklad potřebujeme nastavovat
jen jednu vlastnost a to je řetězec, který uživatele necháme zadat do TextBoxu.
public StackPanel BuildPropertiesPanel()
{
StackPanel sp = new StackPanel()
{ Orientation = Orientation.Horizontal };
StackPanel spPanelLeft = new StackPanel();
StackPanel spPanelRight = new StackPanel() { Name = "propertyPanel" };
Label lblInString = new Label() { Content = "Input string:" };
spPanelLeft.Children.Add(lblInString);
TextBox txtInString = new TextBox() { Name = C_INPUTSTRING };
spPanelRight.Children.Add(txtInString);
sp.Children.Add(spPanelLeft);
sp.Children.Add(spPanelRight);
return sp;
}
Metoda pro sestavení ovládacích prvků musí vždy vracet objekt StackPanel, který musí
obsahovat další dva objekty totožného typu, které jsou pozicovány horizontálně vedle sebe.
Levý slouží pro název požadované vlastnosti a pravý slouží pro samotný ovládací prvek.
- 49 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
Pokud už je možné nastavit potřebné vlastnosti instance zásuvného modulu, tak se můžeme
pustit do implementace metody pro generování anonymizovaných hodnot.
public string Anonymize()
{
try
{
if (!Properties.Any(x => x.Value == null))
{
string result = Properties[C_INPUTSTRING].ToString();
// Zde je nutné provést vlastní logiku pro generování
// hodnot dle nastavení dané instance
return result;
}
else
{
throw new ArgumentException();
}
}
catch (Exception)
{
return "%ERROR%";
}
}
Hned první podmínkou se v metodě Anonymize() kontroluje, zda byly všechny vlastnosti
korektně nastaveny. Pokud ano, tak je možné si ze slovníku vlastností vytáhnout
požadované hodnoty, které uživatel instanci nastavil a vygenerovat podle nich odpovídající
náhodnou hodnotu, kterou vrátí jako řetězec. Pokud všechny vlastnosti nebyly korektně
nastaveny či v průběhu metody došlo k nějaké chybě, tak je potřeba odchytnout výjimku a
vrátit následující řetězec "%ERROR%", který zaručí správnou interpretaci dále v aplikaci.
V tuto chvíli již máme všechny důležité části rozhraní implementované a zbývají nám
poslední dvě vlastnosti, které signalizují, zda je instance korektně nastavena, či nikoliv. Na
základě této signalizace se tato skutečnost může i vizualizovat ikonkou.
public bool IsValid
{
get
{
return this.Anonymize() == "%ERROR%" ? false : true;
}
}
public string ValidityImagePath
{
get
{
if (IsValid)
return string.Format("../Resources/Image/valid.png");
return string.Format("../Resources/Image/not_valid.png");
}
}
- 50 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
Po dokončení implementace všech částí rozhraní IPluginable je nutné celý projekt se
zásuvným modulem nechat zkompilovat a výstupní DLL soubor umístit do složky Plugins
v aplikaci.
9.4 Popis důležitých tříd
9.4.1 Plugin Manager
Jedná se o statickou třídu, která se stará o dvě velmi důležité věci a tím je ukládání a
nahrávání hodnot nastavení jednotlivých instancí zásuvných modulů. Momentálně podporuje
4 ovládací prvky a to TextBox, ComboBox, CheckBox, DatePicker.
Obě metody SaveProperties() i LoadProperties() dokážou dynamicky uložit respektive načíst
všechny potřebné hodnoty z nastavení instance. Pokud zásuvný modul implementuje i jiný
ovládací prvek, než ty které jsou podporovány, tak toto nastavení bude jednoduše
ignorováno.
Obrázek 22 - Třída PluginManager
Zdroj: Vlastní tvorba
9.4.2 XML Manager
XmlManager je další statická třída, která se stará o práci s XML soubory a z nich vytvořenou
XML šablonou. V první řadě se tedy postará o samotné vytvoření XML šablony ze vstupního
XML souboru, to bude však popsáno až později. Tato třída je velmi bohatá na rekurzi,
protože většina metod se volá právě rekurzivně.
Obrázek 23 - Třída XmlManager
Zdroj: Vlastní tvorba
- 51 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
Vedle metody pro sestavení XML šablony je také velmi důležitá metoda pro sestavení
hierarchie stromu, která bude uživateli vizuálně zobrazena. Jedná se o metodu
BuildXmlTemplateHierarchy().
Tato
metoda
vytvoří
strom
z uložených
objektů
XmlTemplateItem a to díky jejich vlastnosti ParentXPath.
Metoda GetNodePath() slouží pro získání XPath výrazu pro konkrétní element v XML
souboru. Jde o rekurzivní metodu, která postupuje od daného elementu směrem nahoru ke
kořenovému elementu souboru a díky tomu dokáže poskládat řetězec obsahující právě
XPath výraz.
Dalšími dvěma metodami jsou CollapseItems() a ExpandItems(), které jsou také rekurzivní a
zajišťují rozevírání či zavírání všech předků pro konkrétní prvek v hierarchii stromu objektů.
9.4.3 Data Manager
Obrázek 24 - Třída DataManager
Zdroj: Vlastní tvorba
Třída DataManager není statická jako ty předchozí, ale jde o implementaci návrhového
vzoru Singleton. To znamená, že poprvé, co se s třídou začne pracovat, se vytvoří její první
a jediná instance v rámci aplikace. Při každém dalším volání metody v této třídě se bude
vždy jednat o instanci, která byla vytvořena při prvním volání. Důvodem je její použití, které
- 52 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
spočívá v uchovávání objektů za běhu aplikace. Není tedy žádoucí, aby v aplikaci bylo více
než jedna instance této třídy.
Nejdůležitější části této třídy jsou dvě vlastnosti XmlTemplateItemList a PluginInstanceList,
které uchovávají dané objekty vytvořené uživatelem za běhu aplikace. Všechny metody
dané třídy pak provádějí operace pouze nad těmito dvěma vlastnostmi. V obou případech
jde o list objektů konkrétního typu.
Metody se starají o vytváření a přiřazování nových objektů, o mazání objektů a jejich úpravu.
Dále také například o získávání všech referencí konkrétní instance zásuvného modulu
v XML šabloně.
9.4.4 IO Manager
Obrázek 25 - Třída IOManager
Zdroj: Vlastní tvorba
V tomto případě jde opět o statickou třídu, která v aplikaci obstarává vstupně-výstupní
operace. Metoda LoadPlugins() je volána vždy při startu aplikace a načte všechny dostupně
zásuvné moduly, které se v tu chvíli nacházejí ve složce Plugins.
public static List<IPluginable> LoadPlugins()
{
List<IPluginable> plugins = new List<IPluginable>();
foreach (string Filename in
Directory.GetFiles(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseD
irectory, Constants.PLUGIN_FOLDER), Constants.PLUGIN_FILE))
{
try
{
Assembly ass = Assembly.LoadFile(Filename);
foreach (Type asmType in ass.GetTypes())
{
if (typeof(IPluginable).IsAssignableFrom(asmType))
{
IPluginable plugin =
(IPluginable)Activator.CreateInstance(asmType);
- 53 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
plugins.Add(plugin);
}
}
}
catch (Exception)
{
// Jeden zásuvný modul nebyl načten
throw;
}
}
return plugins;
}
Kromě načítání zásuvných modulů, se třída IOManager stará ještě o serializaci a
deserializaci objektů v aplikaci, za účelem uložení XML šablony či listu instancí zásuvných
modulů uživatelem. V obou případech je serializace i deserializace řešena stejným
způsobem a tak si vystačíme s ukázkou zdrojového kódu pro serializaci XML šablony.
public static bool SaveProject(string path, List<XmlTemplateItem>
xmlTemplateItemsToSave)
{
try
{
MemoryStream stream = new MemoryStream();
BinaryFormatter formatter = new BinaryFormatter();
formatter.AssemblyFormat =
System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Si
mple;
formatter.Serialize(stream, xmlTemplateItemsToSave);
File.WriteAllBytes(path, stream.ToArray());
return true;
}
catch (Exception)
{
return false;
}
}
Jediným rozdílem v obou případech je list objektů, který je serializován. Je tedy nutné, aby
objekt XmlTemplateItem a všechny zásuvné moduly byly serializovatelné. V případě
ukládání XML šablony však automaticky dochází i k ukládání instancí zásuvných modulů,
které jsou přiřazeny k daným objektům.
9.5 Serializace a Deserializace
Jak již bylo popsáno v IOManager třídě, tak načítání a ukládání se v rámci aplikace řeší
serializací a deserializací objektů. Nyní už je jen nutné dodat názvy typů souborů.
- 54 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
*.das
*.dap
• Data Anonymizer Solution
• Obsahuje XML šablonu a všechny
instance zásuvných modulů, které
jsou k ni přiřazeni
• Data Anonymizer Plugins
• Obsahuje pouze list vytvořených
instancí zásuvných modulů
Obrázek 26 - Typy souborů pro serializaci a deserializaci
Zdroj: Vlastní tvorba
V rámci aplikace je možné se setkat se dvěma typy souborů. Důvodem je možnost uložení
celého projektu, to znamená uložení XML šablony a všech přiřazených instancí zásuvných
modulů, ale také uložení pouze samostatných zásuvných modulů, které chce uživatel
například použít i pro jiný projekt.
9.6 Aplikace XML šablony při anonymizaci
Vytvořená a nastavená XML šablona může být aplikována na jakékoliv vstupní XML
soubory. Principem je získávání elementů ze vstupního souboru na základě XPath výrazů
v šabloně. Aplikace vždy načte kolekci elementů, které se mají anonymizovat dle šablony a
vygeneruje pro ně nové hodnoty, které splňují nastavení přiřazené instance zásuvného
modulu. Obdobně aplikace zpracuje i všechny potřebné atributy. Vybírání elementů pomocí
XPath je bezpečný způsob, protože pokud je struktura vstupního XML souboru naprosto
odlišná od struktury souboru ze kterého byla vytvořena šablona, tak nedojde k žádné změně
a na výstupu dostaneme nezměněný vstupní soubor.
Získávání nových hodnot je provedeno rekurzivně, abychom mohli zabezpečit unikátní,
pokud mají být použity. Po dokončení anonymizace se nově vytvořený výstupní XML soubor
uloží do uživatelem definované složky.
9.6.1 Popis algoritmu
// Vytvoření listu pro ukládání použitých hodnot a získání listu s objekty XML
šablony
List<string> usedValues = new List<string>();
List<XmlTemplateItem> allXmlTemplateItems =
dataManager.XmlTemplateItemList.FindAll(x => x.PluginInstance != null);
// Kód odstraněn pro větší přehlednost
//Procházení listu XML šablony
foreach (XmlTemplateItem xmlItem in allXmlTemplateItems)
{
// Kód odstraněn pro větší přehlednost
// Pokud je objekt šablony typu Node
- 55 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
if (xmlItem.Type == XmlTemplateItemType.Node)
{
// Získání všech elementů ze vstupního XML souboru na základě
XPath výrazu
XmlNodeList nodeList = xmlDoc.SelectNodes(xmlItem.XPath);
// Kód odstraněn pro větší přehlednost
// Procházení listu získaných elementů
foreach (XmlNode node in nodeList)
{
// Pro každý element je potřeba získat novou
hodnotu
node.InnerText = GetNewValue(xmlItem, usedValues);
// Kód odstraněn pro větší přehlednost
}
}
// Pokud jde o atribut
else
{
// Získání všech elementů, které mají daný atribut
XmlNodeList nodeList =
xmlDoc.SelectNodes(xmlItem.ParentXPath);
// Kód odstraněn pro větší přehlednost
// Procházení všech získaných elementů
foreach (XmlNode node in nodeList)
// Procházení všech atributů daného elementu
foreach (XmlAttribute attr in node.Attributes)
{
// Pokud se jedná o námi hledaný atribut
if (attr.Name == xmlItem.Name)
{
// Pro atribut je potřeba získat novou
hodnotu
attr.Value = GetNewValue(xmlItem,
usedValues);
// Kód odstraněn pro větší přehlednost
}
}
}
// Kód odstraněn pro větší přehlednost
}
- 56 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
10. HOTOVÉ ŘEŠENÍ
Tato kapitola má za úkol představit již hotovou aplikaci a na ukázkovém datovém souboru
demonstrovat její funkčnost. Zabývat se tedy budu jen hlavním oknem aplikace, abychom
mohli porovnat požadovaný návrh GUI a finální podobu GUI aplikace. Poté bude následovat
ukázka samotné funkčnosti, kdy nejprve představím mnou vytvořený testovací XML soubor,
který jsem pro tuto ukázku použil. Dalším krokem bude popis nastavení XML šablony
v aplikaci, respektive všech instancí zásuvných modulů, které jsou v šabloně přiřazeny. A
jako poslední krok je ukázka výstupního XML souboru, který již bude obsahovat údaje
generované samotnou aplikací.
10.1
Náhled hotové aplikace
Na následujícím obrázku lze vidět finální podobu GUI aplikace. Již na první pohled je patrné,
že prvotní požadavek na vzhled, respektive rozmístění prvků aplikace, byl dodržen. V horní
části se nachází hlavní nabídka, ve spodní se naopak nachází stavový řádek. Levé části
dominuje hierarchická struktura XML šablony a na pravé straně se nachází seznam všech
vytvořených instancí zásuvných modulů, spolu s panelem pro jejich vytváření a úpravu.
Jediným rozdílem je přítomnost panelu úplně vlevo, který zobrazuje nastavení vybraného
elementu v šabloně.
Obrázek 27 - Náhled GUI hotové aplikace
Zdroj: Vlastní tvorba
- 57 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
10.2
Test anonymizace
10.2.1
Vstupní data
Obrázek níže slouží jako ukázkový XML soubor pro demonstraci funkčnosti aplikace. Soubor
byl ručně vytvořen jen pro tento účel. Lze si všimnout, že ne každý zákazník má stejnou
vnitřní strukturu – jejich elementy nejsou shodné. Tato skutečnost nám umožňuje
vyzkoušení algoritmu pro vytváření XML šablony, zda opravdu dokáže sestavit šablonu tak,
aby obsahovala všechny elementy, které se v daném souboru nachází.
Obrázek 28 - Vstupní XML soubor
Zdroj: Vlastní tvorba
10.2.2
Nastavení XML šablony
Pro danou šablonu bylo nutné vytvořit 7 instancí zásuvných modulů a jejich nastavení bylo
následující.
Identifikační číslo (Custom) – použito pro generování ID zákazníka. Instance nastavena
maskou „{L}{L}-{D}{D}{D}“. Tento zásuvný modul ponechává vlastní zadaný řetězec a pouze
nahrazuje {L} za libovolné písmeno v rozsahu A až B a {D} za libovolnou číslici v rozmezí 0
až 9.
Jméno (Name) – nastaveno pro generování pouze křestních jmen.
- 58 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
Příjmení (Name) – nastaveno pro generování pouze příjmení.
Datum narození (Date) – dle nastavení bude generovat datum v rozmezí od 16.3.1979 až
25.3.1994. Jako formát byla zvolena maska „ddmmyyyy“ a tečka jako oddělovač jednotlivých
částí data.
Hotovost (Number) – nastaveno pro generování celých čísel v intervalu od 100000 do
1000000. Zároveň se za číslo bude vždy přidávat řetězec „ CZK“.
Poznámka (Text) – dle nastavení bude generovat text založený na Lorem ipsum a jeho
délka bude v rozmezí od 10 do 50 znaků.
Rodné číslo (BirthNumber) – nastaveno pro generování rodných čísel v rozmezí od
8.2.1989 do 14.6.1990. Může se jedna o ženské i mužské a na výstupu bude přítomné
oddělovací lomítko.
10.2.3
Výstupní data
Následující obrázek je již výstupní soubor, na který byla aplikována anonymizační šablona.
Můžeme se všimnout, že struktura dat zůstala nepozměněna a rozdílné jsou akorát hodnoty.
Dle zpětné kontroly jsou všechny vygenerované hodnoty korektní a v rámci svého nastavení.
Zároveň je vidět, že si aplikace poradila i se sestavením šablony pro strukturu, která je
různorodá a elementy nejsou vždy shodné.
Obrázek 29 - Výstupní XML soubor
Zdroj: Vlastní tvorba
- 59 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
11. UŽIVATELSKÁ DOKUMENTACE
Závěrečná kapitola je věnována uživatelské dokumentaci. Nejprve vysvětlím, jak vytvořit a
pracovat s XML šablonou a poté se podívám na jednotlivé zásuvné moduly, respektive jejich
vytváření a práce s nimi. Na závěr ukážu workflow diagram aplikace.
XML Šablona
11.1
Slouží po boku zásuvných modulů jako hlavní prvek celé aplikace, který je potřeba vytvořit,
nastavit a poté je možné podle něj nechat požadovaný XML soubor anonymizovat.
Vytvoření XML šablony
11.1.1
Vytvoření XML šablony je stejně jako všechny další funkčnosti aplikace velmi jednoduché.
Stačí z hlavní nabídky vybrat New Project a zvolit XML, dle kterého by měla být šablona
vygenerována.
Až skončí algoritmus pro vytvoření šablony, tak se šablona automaticky zobrazí v hlavní
části pracovní plochy aplikace a to ve stromové hierarchii.
11.1.2
Funkčnosti nad XML šablonou
Nad samotnou šablonou se dá spouštět jen pár funkčností a to:

Expand All items – Rozevře kompletní hierarchickou strukturu šablony.

Collapse All items – Zavře kompletní hierarchickou strukturu šablony.

Expand Child items – Rozevře kompletní hierarchickou strukturu pro vybraný prvek
šablony.

Collapse Child items – Zavře kompletní hierarchickou strukturu pro vybraný prvek
šablony.
Dále je možné šablonu uzavřít, uložit či otevřít již uloženou. Vše je dostupné v hlavní
nabídce aplikace v místě, kde se nachází i vytvoření zcela nové šablony.
11.1.3
Vlastnosti prvků XML šablony
Následující obrázek demonstruje část již vytvořené a nastavené šablony, která byla použita
pro testovací příklad v předešlé kapitole. Je třeba rozlišit, které prvky mohou mít hodnoty a
které je mít nemohou. Aplikace to vizuálně rozlišuje za uživatele, a pokud je možné daný
prvek šablony anonymizovat, tak je vedle jeho názvu zelená ikonka, v opačném případě se
tam nachází červená ikonka.
- 60 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
Aplikace také vizuálně rozlišuje, který prvek je elementem a který atributem. Jako poslední
zobrazená informace je XPath prvku v XML souboru.
Obrázek 30 - Ukázka XML šablony a panelu s vlastnostmi aktivního prvku
Zdroj: Vlastní tvorba
V levé části obrázku se nachází panel s vlastnostmi konkrétního prvku šablony. Zobrazuje
název, typ prvku a možnost zvolit generování pouze unikátních hodnot. Dále zobrazuje
případnou referenci na instanci zásuvného modulu, kterou je možné odstranit přímo z tohoto
panelu.
11.2
Zásuvné moduly
K tomu, aby bylo možné nastavit šablonu a při anonymizaci generovat nějaká data, tak je
potřeba mít alespoň jeden zásuvný modul. V této verzi, je k aplikaci dodáno 6 základních a
já nyní projdu všechny z nich, abych uvedl jejich význam a možnosti.
Pro dostupné zásuvné moduly je možné v hlavní nabídce spustit Plugin Manager, který
zobrazí všechny aktivní zásuvné moduly s jejich popisem, autorem a verzí.
Obrázek 31 - Plugin Manager okno v aplikaci
Zdroj: Vlastní tvorba
- 61 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
11.2.1
Birthnumber
Slouží pro generování rodných čísel v českém formátu. Jeho možnosti nastavení jsou
následující:

Minimal value – Datum od kterého je potřeba rodná čísla generovat.

Maximal value – Datum do kterého je potřeba rodná čísla generovat.

Sex – Typ rodného čísla vzhledem k pohlaví.

Show slash – Určí, zda bude rodné číslo zobrazeno s lomítkem, či nikoliv.
11.2.2
Custom
V současné verzi se jedná o opravdu velmi jednoduchý zásuvný modul, který dovoluje
uživateli zadat libovolný řetězec a do něho zakomponovat určité značky, které budou
v průběhu generování hodnot nahrazeny. Cílem je například možnost generovat různá ID,
která mají mít specifický tvar. Nyní jsou podporovány tyto značky:

{D} – Bude nahrazeno za náhodné číslo v intervalu 0 až 9.

{L} – Bude nahrazeno za náhodné písmeno v rozmezí A až Z.

{l} – Bude nahrazeno za náhodné písmeno v rozmezí a až z.
11.2.3
Date
Slouží pro generování náhodného data v určitém intervalu a formátu.

Minimal value – Datum od kterého je potřeba generovat.

Maximal value – Datum do kterého je potřeba generovat.

Format – Výstupní formát vygenerovaného data, který určuje kombinace dnů,
měsíců a roků.

Delimiter – Doplňuje výstupní formát a určuje, zda má být použit nějaký oddělovač
mezi dny, měsíci a roky.
11.2.4
Name
Tento zásuvný modul generuje náhodná jména – dochází ke kombinaci dvou souborů, kde
první z nich obsahuje sadu českých křestních jmen a ten druhý sadu anglických příjmeních.
Nastavení zásuvného modulu je jednoduché.

Format – Určuje, zda se bude generovat pouze křestní jméno, pouze příjmení, nebo
jejich kombinace.
- 62 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
11.2.5
Number
Slouží pro generování náhodných čísel v určitém zvoleném rozsahu, typu a případně i
v kombinaci s libovolným řetězcem.

Minimal value – Hodnota od kterého je potřeba čísla generovat.

Maximal value – Hodnota do kterého je potřeba čísla generovat.

Value type – Volí mezi celým číslem a číslem s plovoucí desetinou čárkou.

Symbol to include – Umožňuje zadat libovolný řetězec, který lze přidat
k vygenerovanému číslu.

11.2.6
Symbol position – Určuje pozici zadaného řetězce.
Text
Generuje náhodný textový řetězec v určité délce, založený na sadě Lorem ipsum slovech.

Minimal value – Minimální požadovaná délka textového řetězce.

Maximal value – Maximální požadovaná délka textového řetězce.
11.3
Správa instancí zásuvných modulů
Všechny vytvořené instance zásuvných modulů se automaticky ukládají do listu, který je
zobrazen na následujícím obrázku. Zde je možné volat všechny potřebné funkčnosti a to
z hlavní nabídky, panelu nad listem či kontextové nabídky přímo nad konkrétní instancí.
Aplikace vizuálně rozlišuje typy jednotlivých instancí a úplně vpravo se zobrazuje zelená
ikonka v případě, že instance je již korektně nastavena, jinak se zobrazuje červená ikonka a
nastavení je nutné doplnit, aby bylo možné danou instanci použít při anonymizaci, protože
bez něho není instance schopna generovat hodnoty.
Obrázek 32 - Ukázka panelu s již vytvořenými instancemi zásuvných modulů
Zdroj: Vlastní tvorba
- 63 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing

Open object list – Otevře již uložený list instancí.

Save object list – Uloží aktuální list instancí.

Add new object – Zobrazí panel pro vytvoření nové instance.

Delete All objects – Odstraní všechny instance, které nemají žádnou referenci.

Show example – Otevře okno s nastavením instance a možností generovat
náhodné hodnoty dle daného nastavení.

Edit object – Zobrazí panel pro úpravu nastavení instance.

Reference object – Přiřadí instanci vybranému prvku v XML šabloně. (Slouží jako
alternativní způsob k Drag&Drop funkcionalitě)

Open object list – Otevře již uložený list instancí.

Where referenced – Otevře okno s listem všech referencí instance.

Open object list – Otevře již uložený list instancí.

Unreference object – Odstraní všechny reference instance.

Delete object – Odstraní instanci.
11.3.1
Vytvoření konkrétní instance zásuvného modulu
Vytvoření nové instance je velmi jednoduché. Stačí zvolit Add new object a zobrazí se panel,
kde je potřeba vybrat typ, respektive zásuvný modul, který chceme pro novou instanci
použít. Poté je potřeba dát instanci jméno, které musí být v rámci aktuálního listu unikátní.
Jednotlivé nastavení instance není potřeba vyplňovat hned a je tedy možné si nejprve
předpřipravit všechny instance a až poté se věnovat jejich nastavení.
Obrázek 33 - Panel pro vytvoření nové instance vybraného zásuvného modulu
Zdroj: Vlastní tvorba
- 64 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
11.3.2
Přiřazování instancí k prvkům šablony
Tato funkcionalita má dva způsoby, jak ji uskutečnit. Prvním z nich je velmi jednoduchý
způsob Drag&Drop, kdy stačí přetáhnout požadovanou instanci zásuvného modulu v listu a
přetáhnout ji na konkrétní prvek v XML šabloně.
Druhým způsobem je označení požadovaného prvku v XML šabloně a poté spustit funkčnost
Reference object nad konkrétní instancí zásuvného modulu.
11.3.3
Zobrazení náhodných hodnot
Funkčnost slouží pro generování náhodných hodnot instance dle aktuálního nastavení. Je
možné ji pro konkrétní instanci spustit díky Show example.
Obrázek 34 - Okno pro generování náhodných hodnot instance
Zdroj: Vlastní tvorba
11.3.4
Zobrazení všech referencí
Pokud je potřeba zjistit, kde všude je instance v XML šabloně přiřazena, tak není potřeba
procházet jednotlivé prvky XML šablony a kontrolovat, zda daná instance je či není
přiřazena. Je totiž možné spustit funkčnost Where referenced, která to udělá za uživatele a
zobrazí okno se seznamem všech prvků šablony, kde se daná instance nachází. Zároveň je
možné jednotlivé přiřazení odstranit přímo z tohoto okna.
Obrázek 35 - Okno pro zobrazení všech referencí instance
Zdroj: Vlastní tvorba
- 65 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
11.4
Anonymizace XML souboru
Za předpokladu, že má uživatel vytvořenou XML šablonu a vytvořený minimálně jednu
instanci zásuvného modulu, která je v šabloně přiřazená, tak může dle této šablony nechat
anonymizovat vybraný XML soubor. Stačí spustit funkčnost Anonymize a objeví se okno,
které je vidět na následujícím obrázku.
Obrázek 36 - Anonymizační okno
Zdroj: Vlastní tvorba
Před samotnou anonymizací je nejprve nutné vybrat XML soubor, který se má anonymizovat
a poté soubor, do kterého bude uloženo výsledné XML po anonymizaci. Během
anonymizačního algoritmu aplikace uživatele informuje o aktuálním dění a například
vypisuje, který prvek zrovna zpracovává a jaké hodnoty pro něj generuje.
11.5
Minimální systémové požadavky 16
Systémové požadavky se v podstatě shodují s minimálními systémovými požadavky pro
.NET Framework 4.
16

Procesor: 1 GHz a více

Operační paměť: 512 MB a více

Volné místo na disku: 850 MB pro 32-bit OS, 2 GB pro 64-bit OS

Operační systém: Microsoft Windows XP (po aplikaci Service Pack 2) a vyšší
.NET Framework System Requirments [online], c2012 [cit. 2012-05-11]. Dostupný z WWW:
http://msdn.microsoft.com/en-us/library/8z6watww.aspx
- 66 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
11.6
Workflow aplikace
Na obrázku 37 je vidět jednoduché workflow aplikace. Nejprve je nutné zvolit vstupní XML
soubor, dle kterého chceme vytvořit XML šablonu, a aplikace ji sama pro tento soubor
vytvoří. Poté si uživatel vydefinuje všechny potřebné instance zásuvných modulů, které chce
v rámci vytvořené šablony aplikovat a může je přiřadit k daným elementům či atributům
v šabloně. Posledním krokem je spuštění samotné anonymizace, kde uživatel zadá vstupní
a výstupní XML.
Nastavení
instancí
Vytvoření
XML
šablony
Přiřazení
instancí
prvkům
šablony
Výběr XML k
anonymizaci
a určení
výstupního
XML
Vytvoření
instancí
zásuvných
modulů
Obrázek 37 - Workflow aplikace
Zdroj: Vlastní tvorba
Workflow aplikace se může lišit v případě, kdy uživatel již má nějakou XML šablonu
uloženou jako rozpracovaný projekt. V tomto případě ji stačí jen nahrát do aplikace a ihned
se může přistoupit k poslednímu kroku. Stejně tak může být přeskočen pouze krok
s vytvářením jednotlivých instancí zásuvných modulů, pokud již má uživatel například
předpřipravenou a uloženou paletu zásuvných modulů, které chce používat, tak je může
opět lehce nahrát do aplikace.
- 67 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
12. ZÁVĚR
V průběhu této bakalářské práce vznikl prototyp aplikace, sloužící k anonymizování XML
souborů. Aplikace byla implementována nad .NET Frameworkem, přesněji pak na
technologii WPF a pro psaní samotného zdrojového kódu posloužil objektově orientovaný
jazyk C#. Využití .NET Frameworku byl přímo jeden z požadavků na aplikaci, ale WPF a C#
jsem si zvolil sám. WPF jsem dal přednost před Windows Forms a to z důvodu větší
flexibility při návrhu uživatelského rozhraní díky jazyku XAML, ale především se jedná o
novější a modernější technologii.
Cílem aplikace je anonymizování XML souborů dle požadavků uživatele. Tento cíl jsem
splnil a navíc se mi podařilo dodržet přívětivé uživatelské rozhraní, takže s aplikací může
pracovat i kterýkoliv administrativní pracovník. Aplikace na vstupu načte uživatelem vybraný
XML soubor a vytvoří z něho XML šablonu, která obsahuje hierarchickou strukturu
unikátních elementů a atributů daného XML souboru. Poté je uživateli umožněno vytváření
vlastních instancí zásuvných modulů, které v aplikaci přiřadí do patřičných elementů či
atributů. Aplikace v této verzi uživateli nabídne 6 základních zásuvných modulů, kde každý
z nich představuje jeden konkrétní typ hodnot (číslo, text, jméno, datum, …), které lze
generovat. Důvodem zvolení tak zvané plugin-ready architektury byl požadavek na snadnou
rozšiřitelnost aplikace. Díky tomu je možné vytvořit nový zásuvný modul, který je na samotné
aplikaci zcela nezávislý. Aplikace umožňuje XML šablonu či vytvořené instance zásuvných
modulů uložit, aby je bylo možné používat opakovaně. Z toho vyplývá výhoda znovupoužití
již nastavené XML šablony na více vstupních XML souborů v libovolném časovém
rozestupu.
Po nastavení XML šablony může uživatel anonymizovat libovolné množství vstupních XML
souborů. Aplikace vždy načte vstupní soubor, na který aplikuje nadefinovanou XML šablonu
a výsledek uloží do uživatelem zvoleného nového XML souboru. Aplikace šablony znamená
získání všech elementů a atributů, které jsou obsaženy ve vstupním XML souboru a
vygenerovat pro ně novou náhodnou hodnotu, o kterou se postará instance zásuvného
modulu, která je k danému elementu či atributu přiřazena. Pro komunikaci mezi vstupním
XML souborem a XML šablonou je využit jazyk XPath.
Jelikož se zatím jedná pouze o prototyp aplikace, tak je do budoucna potřeba provést ještě
spoustu dalších rozšíření. Prvním z nich bude rozšíření palety podporovaných zásuvných
modulů, kde je potřeba implementovat mnoho nových. Příkladem může být možnost
generování adres, takový zásuvný modul by měl dovolovat generovat adresy založené na
reálných podkladech a formátovat je dle uživatelovy potřeby. Navíc by měl umožňovat pro
jednotlivé instance vytvořené z tohoto zásuvného modulu generovat jen konkrétní část
adresy. Dalším příkladem může být generování různých identifikátorů, například True a
False a jim obdobné. Implementace by mohla být provedena tak, že nastavení instance
- 68 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
zásuvného modulu uživateli dovolí nadefinovat list konkrétních řetězců a zásuvný modul pak
bude vybírat náhodný z nich.
Dalším vylepšením na straně zásuvných modulů může být napojení slovníkových typů, jako
jsou například jména a adresy, na veřejně dostupné databáze, místo čerpání z vlastních
lokálních zdrojů aplikace.
Důležité rozšíření však čeká i XML šablonu. Jedním z nich je možnost přiřazování více
instancí zásuvných modulů do jednoho elementu či atributu a zvolit metodu, která bude
zvolena pro jejich střídání při anonymizaci – náhodně, postupně. To hlavní ale bude možnost
aritmetických operací nad číselnými hodnotami. Příkladem může být tabulka s výčtem
bankovních transakcí za jeden měsíc, kde chceme, aby na konci byl součet hodnot všech
transakcí. Uživatel tedy bude schopný na daném elementu či atributu nastavit seznam
požadovaných elementů a atributů, které ponesou instanci zásuvného modulu číselného
typu a určit, jaká aritmetická operace se má provést.
Tohle je výčet těch nejdůležitějších rozšíření, která se musí implementovat, aby se
z prototypu aplikace stala opravdu plnohodnotná aplikace, která pomůže firmám
k rychlejšímu dodání svých XML datových souborů třetím stranám a splnila tak svůj
počáteční záměr.
- 69 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
13. CONCLUSION
During this bachelor thesis has been created a prototype of an application for XML data files
anonymization. This application has been implemented in .NET Framework with WPF
technology and object oriented language called C# has been used for writing all source
codes. Usage of .NET Framework was one of the requirements, but both WPF and C# have
been chosen by me. I have chosen WPF instead of Windows Forms, because it is more
flexible when designing the user interface thanks to XAML, but the main reason was it is
much more later and modern technology.
Aim of this application is anonymization of XML data files according to user’s needs. This
goal has been accomplished and on top of that I have still managed to preserve the affability
and simplicity of the application, therefore even business users could easily work with the
application. Application loads an input XML data file which is being selected by user and
then creates an XML template for it, which contains hierarchical structure of unique elements
and attributes from the input XML data file. As soon as this is done user is able to create his
own plugin instances, which could be referenced into requested elements and attributes.
This version of the application offers 6 basic plugins and each of these plugins represents
particular value type (number, text, name, date, …), that will be generated. Reason for this
so called plugin-ready architecture was a requirement for easy expandability of the
application. Thanks to that a new plugin could be implemented without any dependencies on
the application itself. Application allows to save both the XML template and plugin instances,
so they could be reused in future. This means XML template has an advantage of reusability
so user could use it for many different XML data files and whenever he needs.
After the XML template has been set up the user is able to anonymize any input XML data
file he wants. Application loads the input XML data file every time and applies the XML
template on it. Result is being saved into new XML data file, which is selected by user. XML
template application means to select all elements and attributes which are present within the
input XML data file and generate for them new random value according to the plugin
instance that is referenced in the element or attribute. For communication between the XML
template and the input XML data file is used XPath.
Because this is just a prototype of the application, I already know a lot of other features need
to be implemented. First of them would be to extend the range of supported plugins with
some new ones. As an example could be used plugin which would generate addresses. This
plugin would need to generate addresses based on real data and display them as user
needs them to be displayed. In addition to that it should allow to select a particular part of the
address for individual plugin instances. Another example could be generating of random
identifiers – True, False and so on. Implementation of this plugin could be done in way that
- 70 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
allows user to add random strings into one list and the plugin instance would be generating a
random string from the defined list.
Next improvement for plugins would be for dictionary type plugins, for example name and
address, so they could be linked to some public database source and take data from there
instead of using the local data.
Important extension is needed for the XML template as well. One of them is referencing
more than just one plugin instance into one element or attribute with method that could be
selected by user to set how the instances should be taken – randomly, in order. The main
extension would be a feature that would allow to apply arithmetical operations on numerical
value types. For example imagine some table with few rows and each of those rows contains
bank transaction information and amount. At the end of the table should be a summary row
and total amount. Therefore the application should allow user to select some elements and
attributes which have referenced a plugin instance of some numerical type and say what
kind of numerical operation should be used.
This is a list of the most important features which need to be implemented so the prototype
could be transformed into full-value application that helps companies to improve the process
when delivering their XML data files to third parties and also all these features would
accomplish the original purpose.
- 71 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
14. SEZNAM POUŽITÉ LITERATURY
1. NASH, Trey. C# 2010 : Nejlepší průvodce novinkami a nejlepšími postupy. 1. vyd.
Brno : Computer Press, 2010. 624 s. ISBN 978-80-251-3034-6
2. PETZOLD, Charles. Mistrovství ve Windows Presentation Foundation. 1. vyd.
Brno : Computer Press, 2008. 928 s. ISBN 978-80-251-2141-2
3. PIALORSI, Paolo, RUSSO, Marco. Microsoft LINQ : Kompletní průvodce
programátora. 1. vyd. Brno : Computer Press, 2009. 615 s. ISBN 978-80-251-2735-3
4. POKORNÝ, Jaroslav. XML technologie – principy a aplikace v praxi. 1. vyd.
Praha : Grada, 2008. 272 s. ISBN 978-80-247-2725-7
5. Úřad pro ochranu osobních údajů [online], http://www.uoou.cz/
6. BusinessInfo.cz [online], http://www.businessinfo.cz
7. International Household Survey Network [online], http://www.ihsn.org/
8. INFA Partner s.r.o [online]. http://www.infapartner.cz/
9. Titio s.r.o. [online], http://www.titio.cz/
10. Hewlett-Packard [online], http://www.hp.com
11. Microsoft Developer Network [online], http://msdn.microsoft.com/
- 72 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
15. SEZNAM POUŽITÝCH SYMBOLŮ A ZKRATEK
Zkratka
Popisek
B2B
Business to Business
B2C
Business to Customer
BLL
Business Logic Layer
CRUD
Create Read Update Delete
CSV
Comma Separated Values
DLL
Dynamic Link Library
DOM
Document Object Model
GHz
Gigahertz
GUI
Graphic User Interface
HP
Hewlett-Packard
HTML
Hyper Text Markup Language
IO
Input and Output
LINQ
Language Integrated Query
MB
Megabyte
MS
Microsoft
OS
Operation System
PDF
Portable Document Format
REQ
Requirment
SSE
Scottish and Southern Energy
UC
Use case
WPF
Windows Presentation Foundation
XAML
eXtensible Application Markup Language
XML
eXtensible Markup Language
- 73 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
16. SEZNAM OBRÁZKŮ
Obrázek 1 - Úvod do datové anonymizace ........................................................................ - 15 Obrázek 2 - Rozdělení datových identifikátorů.................................................................. - 20 Obrázek 3 - Anonymizace nepřímých datových identifikátorů.......................................... - 21 Obrázek 4 - Ukázka mikro-agregace .................................................................................. - 24 Obrázek 5 - Abstraktní schéma problémové domény mezi Titio s.r.o. a zákazníkem ....... - 26 Obrázek 6 - Transformační proces dokumentové kompozice ........................................... - 28 Obrázek 7 - Rozdělení výstupních souborů pro dokumentovou kompozici ...................... - 28 Obrázek 8 - Zdroj tiskového výstupu společnosti SSE........................................................ - 29 Obrázek 9 - Ukázka datové struktury společnosti SSE ....................................................... - 30 Obrázek 10 - Procesní schéma aplikace ............................................................................. - 31 Obrázek 11 - Uživatel vytváří instanci zásuvného modulu ................................................ - 36 Obrázek 12 - Abstraktní schéma architektury aplikace ..................................................... - 36 Obrázek 13 - Návrh grafického rozhraní aplikace .............................................................. - 37 Obrázek 14 - Ukázka struktury XML souboru .................................................................... - 38 Obrázek 15 - Ukázka grafického rozhraní WPF aplikace .................................................... - 39 Obrázek 16 - Use case diagram XML části aplikace ........................................................... - 42 Obrázek 17 - Use case diagram pro instance zásuvných modulů ...................................... - 42 Obrázek 18 - Use case diagram pro IO případy užití a přiřazování instancí zásuvných modulů
........................................................................................................................................... - 43 Obrázek 19 - Architektura aplikace .................................................................................... - 44 Obrázek 20 - Třída XmlTemplateItem reprezentuje XML šablonu .................................... - 45 Obrázek 21 - IPluginable rozhraní ...................................................................................... - 47 Obrázek 22 - Třída PluginManager .................................................................................... - 51 Obrázek 23 - Třída XmlManager ........................................................................................ - 51 Obrázek 24 - Třída DataManager ....................................................................................... - 52 Obrázek 25 - Třída IOManager ........................................................................................... - 53 Obrázek 26 - Typy souborů pro serializaci a deserializaci.................................................. - 55 Obrázek 27 - Náhled GUI hotové aplikace ......................................................................... - 57 Obrázek 28 - Vstupní XML soubor ..................................................................................... - 58 Obrázek 29 - Výstupní XML soubor.................................................................................... - 59 Obrázek 30 - Ukázka XML šablony a panelu s vlastnostmi aktivního prvku ...................... - 61 Obrázek 31 - Plugin Manager okno v aplikaci .................................................................... - 61 Obrázek 32 - Ukázka panelu s již vytvořenými instancemi zásuvných modulů ................. - 63 Obrázek 33 - Panel pro vytvoření nové instance vybraného zásuvného modulu ............. - 64 Obrázek 34 - Okno pro generování náhodných hodnot instance ...................................... - 65 Obrázek 35 - Okno pro zobrazení všech referencí instance .............................................. - 65 Obrázek 36 - Anonymizační okno ...................................................................................... - 66 Obrázek 37 - Workflow aplikace ........................................................................................ - 67 -
- 74 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
17. SEZNAM TABULEK
Tabulka 1 - Výstupy práce .................................................................................................. - 32 Tabulka 2 - Přehled jednotlivých požadavků ..................................................................... - 34 Tabulka 3 - Přehled prioritizace požadavků ....................................................................... - 34 Tabulka 4 - Přehled aktérů aplikace ................................................................................... - 40 Tabulka 5 - Přehled jednotlivých use-case ......................................................................... - 41 Tabulka 6 - Mapování požadavků na jednotlivé use-case ................................................. - 41 -
- 75 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
18. SEZNAM PŘÍLOH

Příloha 1 – Hodnocení od Titio s.r.o.

Příloha 2 – Povolení od SSE

Příloha 3 – CD
- 76 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
18.1
Příloha 1 – Hodnocení od Titio s.r.o.
- 77 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
18.2
Příloha 2 – Povolení od SSE
- 78 -
Bakalářská práce
Příprava a anonymizace datových souborů určených pro vývoj a testování
Preparation and anonymization of data files for development and testing
Příloha 3 – CD
18.3
CD je přiloženo u tištěné verze bakalářské práce.
Obsah CD:

Aplikace
o

Bakalářská práce
o

Obsahuje finální prototyp aplikace Data Anonymizer.
Obsahuje digitální verzi bakalářské práce v PDF.
Přílohy
o
Obsahuje hodnocení od Titio s.r.o. a povolení od SSE v digitální podobě
v PDF.

Data
o
Obsahuje testovací vstupní XML soubor a uloženou XML šablonu
z aplikace.

Zdrojové kódy
o
Obsahuje kompletní zdrojové kódy aplikace, respektive projekt, který je
možné spustit v Microsoft Visual Studio 2010 a vyšším.
- 79 -

Podobné dokumenty

Bakalářka ver01 - České vysoké učení technické v Praze

Bakalářka ver01 - České vysoké učení technické v Praze atributy jako poloha uživatele, teplota, úroveň osvětlení, stav dveří, oken, televize, rádia a podobně. Záhy jsem však zjistil, že záznam jednoho dne nedostačuje a že by bylo potřeba mnohem delší l...

Více

Převod Windows Forms do Windows Presentation

Převod Windows Forms do Windows Presentation technologie společnosti Microsoft, které jsou součástí .NET Frameworku a jedná se o technologie Windows Forms a Windows Presentation Foundation (WPF). Technologie Windows Forms může být také využit...

Více

Analýza a návrh systému pro SelfTesty

Analýza a návrh systému pro SelfTesty také implementace prototypové mobilní SelfTest aplikace, která bude se systémem komunikovat. Cílem je vhodně analyzovat požadavky, které jsou na SelfTest systém kladeny, navrhnout způsob, jakým lze...

Více

Já vám nevím, co je to dneska za módu vybírat si pro

Já vám nevím, co je to dneska za módu vybírat si pro a menu pro volbu předvolby. Najdete je na spodní části uživatelského rozhraní s popisky REVERB MODE a PRESET. Valhalla Room používá ne jeden, ne dva, ale hned devět různých dozvukových algoritmů. K...

Více

Přednáška 13

Přednáška 13  XmlElement – serializuje složku třídy jako prvek XML. Jedna z verzí tohoto atributu obsahuje název, pod kterým se má prvek serializovat.  XmlAttribute – serializuje složku třídy jako atribut XML...

Více