BAKALÁŘSKÁ PRÁCE. Příprava a anonymizace datových souborů určených pro vývoj a testování

Rozměr: px
Začít zobrazení ze stránky:

Download "BAKALÁŘSKÁ PRÁCE. Příprava a anonymizace datových souborů určených pro vývoj a testování"

Transkript

1 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ý

2 Unicorn College 2010 Unicorn College, V kapslovně 2767/2, Praha 3, Název práce v ČJ: Název práce v AJ: Autor: 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ý Akademický rok: 2012 Kontakt: (+420)

3

4

5 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 -

6 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 -

7 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 -

8 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

9 5. OBSAH 1. Abstrakt Abstract Prohlášení Poděkování Obsah Úvod Popis jednotlivých kapitol práce Konvence používané v této práci Konvence datová anonymizace Teorie datové anonymizace Vysvětlení pojmu datová anonymizace Proč a kde se datová anonymizace používá Právní pohled v České republice Osobní údaj Citlivý osobní údaj Anonymní osobní údaj Zveřejněný osobní údaj Subjekt údajů Shromažďování osobních údajů Zpracovávání osobních údajů Uchovávání osobních údajů Správce osobních údajů Zpracovatel osobních údajů Souhlas se zpracováním osobních údajů Příjemce osobních údajů Likvidace osobních údajů Další právní předpisy upravující ochranu osobních údajů Seznam dalších zákonů Principy datové anonymizace Přímé datové identifikátory

10 7.4.2 Nepřímé datové identifikátory Faktory a hrozby narušení osobních údajů Techniky datové anonymizace Technika redukce datových záznamů Technika pozměňování datových záznamů Vybrané principy a techniky Analýza a návrh řešení Problémová doména Popis společnosti Dokumentová kompozice Ukázka výstupu Ukázka dat Definice cílů práce Rozsah práce Výstupy práce Mimo rozsah práce Správa požadavků Identifikované požadavky Prioritizované požadavky Navrhované řešení Popis navrhovaného řešení XML šablona Zásuvný modul Architektura navrhovaného řešení Návrh GUI Popis použitých technologií XML WPF Use-case specifikace Přehled aktérů Přehled use-case Přehled mapování požadavků na use-case Use-case diagramy

11 9. Implementace aplikace Architektura aplikace Vytváření XML šablony Princip Objekt šablony XmlTemplateItem Popis algoritmu Zásuvné moduly Rozhraní IPluginable Implementace zásuvného modulu Popis důležitých tříd Plugin Manager XML Manager Data Manager IO Manager Serializace a Deserializace Aplikace XML šablony při anonymizaci Popis algoritmu Hotové řešení Náhled hotové aplikace Test anonymizace Vstupní data Nastavení XML šablony Výstupní data Uživatelská dokumentace XML Šablona Vytvoření XML šablony Funkčnosti nad XML šablonou Vlastnosti prvků XML šablony Zásuvné moduly Birthnumber Custom Date Name

12 Number Text Správa instancí zásuvných modulů Vytvoření konkrétní instance zásuvného modulu Přiřazování instancí k prvkům šablony Zobrazení náhodných hodnot Zobrazení všech referencí Anonymizace XML souboru Minimální systémové požadavky Workflow aplikace Závěr Conclusion Seznam použité literatury Seznam použitých symbolů a zkratek Seznam obrázků Seznam tabulek Seznam příloh Příloha 1 Hodnocení od Titio s.r.o Příloha 2 Povolení od SSE Příloha 3 CD

13 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. Celé řešení bude postaveno na.net platformě s využitím programovacího jazyka C# 1, který některými svými technologiemi, jako například LINQ 2, 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 delimiter 4 a columnar 5. 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, s. ISBN PIALORSI, Paolo, RUSSO, Marco. Microsoft LINQ : Kompletní průvodce programátora. 1. vyd. Brno : Computer Press, s. ISBN PETZOLD, Charles. Mistrovství ve Windows Presentation Foundation. 1. vyd. Brno : Computer Press, s. ISBN 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ů

14 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

15 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 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 ]. Dostupný z WWW:

16 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 ]. Dostupný z WWW:

17 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 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 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ů 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 Subjekt údajů Každá fyzická osoba, ke které se vztahují osobní údaje, je subjektem údajů 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ů

18 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í 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 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 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ů 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ů 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ů

19 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ů 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 ]. Dostupný z WWW:

20 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. Datové identifikátory Přímé Nepřímé Obrázek 2 - Rozdělení datových identifikátorů Zdroj: Vlastní tvorba 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ů 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 ]. Dostupný z WWW:

21 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 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

22 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 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 ]. Dostupný z WWW:

23 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 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

24 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 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

25 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

26 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 )

27 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 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 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ší 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 ]. Dostupný z WWW: 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 ]. Dostupný z WWW:

28 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 AFP PostScript PCL IJPDS... Elektronické soubory 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 u. 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

29 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

30 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

31 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ů

32 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 Výstupy práce Název Aplikace DLL zásuvných modulů Uživatelská dokumentace Dokumentace Popis Samotná aplikace, která svou funkčnost bude poskytovat díky vloženým zásuvným modulům. Jednotlivé DLL soubory, které představují vždy právě jeden konkrétní typ objektu, který je možné anonymizovat. Stručný popis, jak aplikaci používat z uživatelského pohledu. 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 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ů

33 8.3 Správa požadavků Identifikované požadavky ID Název Popis Kategorie 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ě. + REQ03 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 REQ04 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 REQ07 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 REQ11 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

34 provedení netrvalo v řádech desítek minut. REQ12 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 Náhled generovaných hodnot Nad jednotlivými nadefinovanými instancemi v listu instancí bude možné volat funkci, která dle nastavení této 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 REQ19 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 Tabulka 2 - Přehled jednotlivých požadavků 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ů

35 8.4 Navrhované řešení 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í 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 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á

36 Obrázek 11 - Uživatel vytváří instanci zásuvného modulu Zdroj: Vlastní tvorba 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

37 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 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

38 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í 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, s. ISBN

39 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 - 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 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

40 8.6 Use-case specifikace 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. Tabulka 4 - Přehled aktérů aplikace 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 Přehled use-case ID Název Popis UC01 UC02 UC03 UC04 UC05 UC06 UC07 UC08 UC09 Anonymizuj Otevři XML Ulož XML Vytvoř XML šablonu Vytvoř objekt Uprav objekt Smaž objekt Ukaž příklad Zajisti unikátnost Aplikuje anonymizační algoritmus na XML soubor, který je kompatibilní s vytvořenou šablonou. Dle nastavení jednotlivých objektů vygeneruje požadované hodnoty. Otevře open dialog a umožní tak uživateli vybrat libovolný XML soubor, který chce v aplikaci otevřít. Ukládá již anonymizovaný XML soubor. Uživateli umožní zvolit cestu, kam se má výstupní XML soubor uložit. 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. 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ů. 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ž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í. Čá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ů. 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

41 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 UC12 UC13 Odreferencuj objekt Ulož list Nahraj list Tabulka 5 - Přehled jednotlivých use-case Smaže přiřazení na objekt pro daný node nebo atribut v šabloně. Uloží danou instanci všech objektů v listu objektů. 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 Přehled mapování požadavků na use-case REQ05 REQ09 REQ12 REQ13 REQ14 REQ15 REQ19 UC01 X UC02 UC03 X X UC04 X UC05 UC06 UC07 X X X UC08 X UC09 X UC10 UC11 X X UC12 UC13 X X Tabulka 6 - Mapování požadavků na jednotlivé use-case

42 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

43 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

44 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

45 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 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í 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

46 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 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

47 } } } 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 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

48 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 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ý"; } }

49 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

50 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"); } }

51 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 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 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

52 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ů 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é

53 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ě 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);

54 } 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ů

55 *.das Data Anonymizer Solution Obsahuje XML šablonu a všechny instance zásuvných modulů, které jsou k ni přiřazeni *.dap 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 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

56 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

57 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í 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

58 10.2 Test anonymizace 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 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

59 Příjmení (Name) nastaveno pro generování pouze příjmení. Datum narození (Date) dle nastavení bude generovat datum v rozmezí od až 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 do 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 do Může se jedna o ženské i mužské a na výstupu bude přítomné oddělovací lomítko 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

60 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 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 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 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 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

61 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 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

62 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 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 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 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

63 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. 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 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

64 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 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

65 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 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 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

66 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 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. 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šší 16.NET Framework System Requirments [online], c2012 [cit ]. Dostupný z WWW:

Ochrana osobních údajů

Ochrana osobních údajů Ochrana osobních údajů zákon č. 101/2000 Sb. Působnost zákona Zákon se vztahuje na osobní údaje, které zpracovávají státní orgány, orgány územní samosprávy, jiné orgány veřejné moci, jakož i fyzické a

Více

Ochrana osobních údajů

Ochrana osobních údajů Ochrana osobních údajů a právo na informace Úřad pro ochranu osobních údajů JUDr. Alena Kučerová Březen 2011 Ústavní zakotvení ochrany osobních údajů, právo na ochranu soukromí Listina základních práv

Více

Právní ohledy využití dat o návštěvnících a zákaznících. JUDr. Pavel Pešek Legal Department Director

Právní ohledy využití dat o návštěvnících a zákaznících. JUDr. Pavel Pešek Legal Department Director Právní ohledy využití dat o návštěvnících a zákaznících JUDr. Pavel Pešek Legal Department Director 11/06/2010 Obsah Základní pojmy zákon na ochranu osobních údajů Základní pojmy zákon o některých službách

Více

Ochrana osobních údajů

Ochrana osobních údajů 1 Ochrana osobních údajů vnitřní předpis závazný pro zaměstnance, vázané zástupce a ostatní spolupracující osoby společnosti 2 Úvodní ustanovení 1. Tento vnitřní předpis je vydán v souladu se zákonem č.

Více

PŘÍLOHA C Požadavky na Dokumentaci

PŘÍLOHA C Požadavky na Dokumentaci PŘÍLOHA C Požadavky na Dokumentaci Příloha C Požadavky na Dokumentaci Stránka 1 z 5 1. Obecné požadavky Dodavatel dokumentaci zpracuje a bude dokumentaci v celém rozsahu průběžně aktualizovat při každé

Více

PRÁVNÍ ASPEKTY OUTSOURCINGU

PRÁVNÍ ASPEKTY OUTSOURCINGU PRÁVNÍ ASPEKTY OUTSOURCINGU JUDr. Martin Maisner, PhD., ROWAN LEGAL POJEM OUTSOURCINGU Sémantický výklad Funkční výklad Právní výklad ÚČEL OUTSOURCINGU Ekonomické důvody Odborné důvody Výhody Rizika FÁZE

Více

MBI - technologická realizace modelu

MBI - technologická realizace modelu MBI - technologická realizace modelu 22.1.2015 MBI, Management byznys informatiky Snímek 1 Agenda Technická realizace portálu MBI. Cíle a principy technického řešení. 1.Obsah portálu - objekty v hierarchiích,

Více

GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER. váš partner na cestě od dat k informacím

GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER. váš partner na cestě od dat k informacím GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER váš partner na cestě od dat k informacím globtech spol. s r.o. karlovo náměstí 17 c, praha 2 tel.: +420 221 986 390 info@globtech.cz

Více

Animace ve WPF. Filip Gažák. Ing. Václav Novák, CSc. Školní rok: 2008-09

Animace ve WPF. Filip Gažák. Ing. Václav Novák, CSc. Školní rok: 2008-09 Animace ve WPF Filip Gažák Ing. Václav Novák, CSc. Školní rok: 2008-09 Abstrakt Hlavním tématem práce bude nový prvek pro tvorbu uživatelského prostředí ve WPF animace. V teoretické části se nejprve seznámíme

Více

Směrnice pro nakládání s osobními údaji. Městský úřad Vamberk

Směrnice pro nakládání s osobními údaji. Městský úřad Vamberk Směrnice pro nakládání s osobními údaji Městský úřad Vamberk Copyright Pro IT, a. s., 2010 Obsah 1. Úvodní ustanovení... 3 2. Citlivé údaje... 4 3. Pověřené osoby... 5 4. Bezpečnost informací... 6 4.1.

Více

2 PŘÍKLAD IMPORTU ZATÍŽENÍ Z XML

2 PŘÍKLAD IMPORTU ZATÍŽENÍ Z XML ROZHRANÍ ESA XML Ing. Richard Vondráček SCIA CZ, s. r. o., Thákurova 3, 160 00 Praha 6 www.scia.cz 1 OTEVŘENÝ FORMÁT Jednou z mnoha užitečných vlastností programu ESA PT je podpora otevřeného rozhraní

Více

Office 2007 Styles Autor: Jakub Oppelt Vedoucí práce: Ing. Václav Novák, CSc. Školní rok: 2009 10

Office 2007 Styles Autor: Jakub Oppelt Vedoucí práce: Ing. Václav Novák, CSc. Školní rok: 2009 10 Office 2007 Styles Autor: Jakub Oppelt Vedoucí práce: Ing. Václav Novák, CSc. Školní rok: 2009 10 Abstrakt Tato práce se zabývá novým grafickým uživatelským rozhraním, který se objevil s nástupem Microsoft

Více

43 HTML šablony. Záložka Šablony v systému

43 HTML šablony. Záložka Šablony v systému 43 HTML šablony Modul HTML šablony slouží ke správě šablon pro výstupy z informačního systému modularis ve formátu HTML. Modul umožňuje k šablonám doplňovat patičku, dokumentaci a vázat šablony na konkrétní

Více

Nový způsob práce s průběžnou klasifikací lze nastavit pouze tehdy, je-li průběžná klasifikace v evidenčním pololetí a školním roce prázdná.

Nový způsob práce s průběžnou klasifikací lze nastavit pouze tehdy, je-li průběžná klasifikace v evidenčním pololetí a školním roce prázdná. Průběžná klasifikace Nová verze modulu Klasifikace žáků přináší novinky především v práci s průběžnou klasifikací. Pro zadání průběžné klasifikace ve třídě doposud existovaly 3 funkce Průběžná klasifikace,

Více

CUZAK. Uživatelská příručka. Verze 2.0 2014

CUZAK. Uživatelská příručka. Verze 2.0 2014 CUZAK Uživatelská příručka Verze 2.0 2014 Copyright 2014 Altair Software s.r.o. Všechna práva vyhrazena. Všechna práva vyhrazena. Všechna informace, jež jsou publikována na v tomto dokumentu, jsou chráněna

Více

Aplikace pro srovna ní cen povinne ho ruc ení

Aplikace pro srovna ní cen povinne ho ruc ení Aplikace pro srovna ní cen povinne ho ruc ení Ukázkový přiklad mikroaplikace systému Formcrates 2010 Naucrates s.r.o. Veškerá práva vyhrazena. Vyskočilova 741/3, 140 00 Praha 4 Czech Republic tel.: +420

Více

Typy souborů ve STATISTICA. Tento článek poslouží jako přehled hlavních typů souborů v programu

Typy souborů ve STATISTICA. Tento článek poslouží jako přehled hlavních typů souborů v programu StatSoft Typy souborů ve STATISTICA Tento článek poslouží jako přehled hlavních typů souborů v programu STATISTICA, ukáže Vám jejich možnosti a tím Vám dovolí využívat program efektivněji. Jistě jste již

Více

Postupy práce se šablonami IS MPP

Postupy práce se šablonami IS MPP Postupy práce se šablonami IS MPP Modul plánování a přezkoumávání, verze 1.20 vypracovala společnost ASD Software, s.r.o. dokument ze dne 27. 3. 2013, verze 1.01 Postupy práce se šablonami IS MPP Modul

Více

VYSOKÁ ŠKOLA BÁŇSKÁ TECHNICKÁ UNIVERZITA OSTRAVA

VYSOKÁ ŠKOLA BÁŇSKÁ TECHNICKÁ UNIVERZITA OSTRAVA VYSOKÁ ŠKOLA BÁŇSKÁ TECHNICKÁ UNIVERZITA OSTRAVA INFORMAČNÍ SYSTÉMY A DATOVÉ SKLADY Autosalón (semestrální projekt) ZS 2011-2012 Analýza Implementace Číslo skupiny: 2 Členové skupiny: Jmeno,příjmení,login

Více

Bakalářské práce realizované v.net/c# Bachelor thesis implemented in.net/c#

Bakalářské práce realizované v.net/c# Bachelor thesis implemented in.net/c# Bakalářské práce realizované v.net/c# Bachelor thesis implemented in.net/c# Ing. Marek Musil 1 Abstrakt Platforma.NET je používána k vytváření velmi efektivních a uživatelsky přívětivých aplikací. Nabízí

Více

UŽIVATELSKÝ MANUÁL PERSONALIZACE MOJE SODEXO V.3 2009-11-08

UŽIVATELSKÝ MANUÁL PERSONALIZACE MOJE SODEXO V.3 2009-11-08 UŽIVATELSKÝ MANUÁL PERSONALIZACE MOJE SODEXO V.3 2009-11-08 1 Obsah dokumentu 1 Obsah dokumentu... 2 2 Personalizovaná objednávka... 3 3 Jednoduchá... 3 4 Standardní... 4 5 Komplexní... 5 5.1 Párování

Více

Manuál pro mobilní aplikaci Patron-Pro. verze pro operační systém Symbian

Manuál pro mobilní aplikaci Patron-Pro. verze pro operační systém Symbian Manuál pro mobilní aplikaci Patron-Pro verze pro operační systém Symbian 1 1. Popis Aplikace je určena pro mobilní telefony NOKIA s operačním Symbian a vybavené technologií NFC. Slouží pro správu identifikačních

Více

Příprava dat v softwaru Statistica

Příprava dat v softwaru Statistica Příprava dat v softwaru Statistica Software Statistica obsahuje pokročilé nástroje pro přípravu dat a tvorbu nových proměnných. Tyto funkcionality přinášejí značnou úsporu času při přípravě datového souboru,

Více

APS mini.ed programová nadstavba pro základní vyhodnocení docházky. Příručka uživatele verze 2.2.0.6

APS mini.ed programová nadstavba pro základní vyhodnocení docházky. Příručka uživatele verze 2.2.0.6 APS mini.ed programová nadstavba pro základní vyhodnocení docházky Příručka uživatele verze 2.2.0.6 APS mini.ed Příručka uživatele Obsah Obsah... 2 Instalace a konfigurace programu... 3 Popis programu...

Více

Mapa Česka: www.mapa-ceska.cz

Mapa Česka: www.mapa-ceska.cz Mapa Česka: www.mapa-ceska.cz Mapový portál Mapa Česka, který je dostupný na internetové adrese www.mapa-ceska.cz, byl vytvořen v roce 2014 v rámci bakalářské práce na Přírodovědecké fakultě Univerzity

Více

Projektová dokumentace pro tvorbu internetových aplikací

Projektová dokumentace pro tvorbu internetových aplikací Projektová dokumentace pro tvorbu internetových aplikací Tomáš Kuthan PhDr. Milan Novák, Ph.D. Školní rok: 2008-09 Abstrakt Bakalářská práce stanovuje vzor pro vytváření projektové dokumentace internetových

Více

P@wouk nástroj pro jednoduchou správu a vedení agendy studentských počítačových sítí na kolejích SU OPF Karviná Ing.

P@wouk nástroj pro jednoduchou správu a vedení agendy studentských počítačových sítí na kolejích SU OPF Karviná Ing. P@wouk nástroj pro jednoduchou správu a vedení agendy studentských počítačových sítí na kolejích SU OPF Karviná Ing. Tomáš Petránek tomas@petranek.eu Karviná, 21. 10. 2011 Obsah prezentace 1. Okolnosti

Více

Uživatelský manuál: Modul Nové kontakty

Uživatelský manuál: Modul Nové kontakty Uživatelský manuál: Modul Nové kontakty Se zapnutím nových kontaktů souvisí nasazení nové aplikace Těžká podatelna a nový formulář pro evidenci externí písemnosti (dokumentu). Zapnutí nových kontaktů lze

Více

Tvorba kurzu v LMS Moodle

Tvorba kurzu v LMS Moodle Tvorba kurzu v LMS Moodle Před počátkem práce na tvorbě základního kurzu znovu připomínám, že pro vytvoření kurzu musí být profil uživatele nastaven administrátorem systému minimálně na hodnotu tvůrce

Více

Systém elektronického rádce v životních situacích portálu www.senorady.cz

Systém elektronického rádce v životních situacích portálu www.senorady.cz Systém elektronického rádce v životních situacích portálu www.senorady.cz Obec Senorady Miroslav Patočka 2006 Obsah: 1. Úvodní informace 1.1 Informace pro uživatele 1.1.1 Přístupnost HTML, PDA, WAP, XML

Více

Soukromí a bezpečnost v IT, ochrana dat na internetu

Soukromí a bezpečnost v IT, ochrana dat na internetu Soukromí a bezpečnost v IT, ochrana dat na internetu Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Alžběta Krausová, 2011 Právo a Informatika, BI-PAI, 09/2011, Přednáška 9 https://edux.fit.cvut.cz/courses/bi-pai

Více

Jádrem systému je modul GSFrameWork, který je poskytovatelem zejména těchto služeb:

Jádrem systému je modul GSFrameWork, který je poskytovatelem zejména těchto služeb: Technologie Marushka Základním konceptem technologie Marushka je použití jádra, které poskytuje přístup a jednotnou grafickou prezentaci geografických dat. Jádro je vyvíjeno na komponentním objektovém

Více

Dobrý SHOP Popis produktu a jeho rozšíření

Dobrý SHOP Popis produktu a jeho rozšíření Dobrý SHOP Popis produktu a jeho rozšíření 501M012.N01 11/11/2011 www.dlaex.cz info@dlaex.cz OBSAH 1 Úvod...3 2 Účel produktu...3 3 Vlastnosti produktu...3 3.1 Koncepce...3 3.2 Základní y...3 3.3 Doplňkové

Více

Uživatelská příručka

Uživatelská příručka Tel.: 558 646 913 Fax: 558 6626 500 Webové stránky města Kolín Uživatelská příručka Vypracovala Kateřina Klichová 28. 4. 2011 Obsah 1 Přílohy... 1 1.1 Vložení přílohy... 1 1.2 Smazání přílohy... 2 1.3

Více

3. Je defenzivní programování technikou skrývání implementace? Vyberte jednu z nabízených možností: Pravda Nepravda

3. Je defenzivní programování technikou skrývání implementace? Vyberte jednu z nabízených možností: Pravda Nepravda 1. Lze vždy z tzv. instanční třídy vytvořit objekt? 2. Co je nejčastější příčinou vzniku chyb? A. Specifikace B. Testování C. Návrh D. Analýza E. Kódování 3. Je defenzivní programování technikou skrývání

Více

Knihovna Eduarda Petišky I. Olbrachta 36, 251 01 Brandýs n.l. - Stará Boleslav

Knihovna Eduarda Petišky I. Olbrachta 36, 251 01 Brandýs n.l. - Stará Boleslav Knihovna Eduarda Petišky I. Olbrachta 36, 251 01 Brandýs n.l. - Stará Boleslav S M Ě R N I C E č. 21 SMĚRNICE O OCHRANĚ OSOBNÍCH ÚDAJŮ UŽIVATELŮ KNIHOVNY Čl. 1 Účel směrnice Promítnutí zákona č. 101/2000

Více

Administrace webu Postup při práci

Administrace webu Postup při práci Administrace webu Postup při práci Obsah Úvod... 2 Hlavní menu... 3 a. Newslettery... 3 b. Administrátoři... 3 c. Editor stránek... 4 d. Kategorie... 4 e. Novinky... 5 f. Produkty... 5 g. Odhlásit se...

Více

OBSAH. 48 Příručka ON-LINE KUPEG úvěrová pojišťovna, a.s. www.kupeg.cz

OBSAH. 48 Příručka ON-LINE KUPEG úvěrová pojišťovna, a.s. www.kupeg.cz DODATEK č. 1 20.1.2012 OBSAH OBSAH... 48 C. PRÁCE SE SYSTÉMEM... 49 C.1 ÚVODNÍ OBRAZOVKA PO PŘIHLÁŠENÍ... 49 C.2 NASTAVENÍ VLASTNÍCH ÚDAJŮ... 50 a. Nastavení Uživatele... 50 b. Nastavení Systému... 51

Více

CineStar Černý Most Praha 31. 10. 2012

CineStar Černý Most Praha 31. 10. 2012 CineStar Černý Most Praha 31. 10. 2012 Stejná aplikace na více zařízeních Michael Juřek Microsoft s.r.o. Potřebné ingredience 1. Portable libraries 2. Návrhový vzor MVVM 3. XAML 4. Abstrakce platformy

Více

DATABÁZE MS ACCESS 2010

DATABÁZE MS ACCESS 2010 DATABÁZE MS ACCESS 2010 KAPITOLA 5 PRAKTICKÁ ČÁST TABULKY POPIS PROSTŘEDÍ Spuštění MS Access nadefinovat název databáze a cestu k uložení databáze POPIS PROSTŘEDÍ Nahoře záložky: Soubor (k uložení souboru,

Více

SMĚRNICE KE KAMEROVÉMU SYSTÉMU ŠKOLY

SMĚRNICE KE KAMEROVÉMU SYSTÉMU ŠKOLY Střední škola MESIT, o.p.s. Družstevní 818 686 01 Uherské Hradiště Č.j.: SŠMESIT 1520/2013 SMĚRNICE KE KAMEROVÉMU SYSTÉMU ŠKOLY Střední škola MESIT, o.p.s. Uherské Hradiště Účinnost od 1. 12. 2013 I. Účel

Více

PRŮZKUMNÍK ISDP NÁVOD K OBSLUZE INFORMAČNÍHO SYSTÉMU O DATOVÝCH PRVCÍCH (ISDP)

PRŮZKUMNÍK ISDP NÁVOD K OBSLUZE INFORMAČNÍHO SYSTÉMU O DATOVÝCH PRVCÍCH (ISDP) PRŮZKUMNÍK ISDP NÁVOD K OBSLUZE INFORMAČNÍHO SYSTÉMU O DATOVÝCH PRVCÍCH (ISDP) Obsah Úvod...2 Co je ISDP...2 Jaké jsou funkce ISDP...2 Slovník pojmů...2 Dílčí DP...2 DS...2 ISDP...2 JeDP...2 OS...2 SlDP...2

Více

Semestrální práce 2 znakový strom

Semestrální práce 2 znakový strom Semestrální práce 2 znakový strom Ondřej Petržilka Datový model BlockFileRecord Bázová abstraktní třída pro záznam ukládaný do blokového souboru RhymeRecord Konkrétní třída záznamu ukládaného do blokového

Více

UŽIVATELSKÝ MANUÁL PERSONALIZACE MOJE SODEXO V1.2.1 2010-08-25

UŽIVATELSKÝ MANUÁL PERSONALIZACE MOJE SODEXO V1.2.1 2010-08-25 UŽIVATELSKÝ MANUÁL PERSONALIZACE MOJE SODEXO V1.2.1 2010-08-25 1 Obsah dokumentu 1 Obsah dokumentu... 2 2 Personalizovaná objednávka... 3 3 Jednoduchá... 3 4 Standardní... 4 5 Komplexní... 5 5.1 Párování

Více

S databázemi se v běžném životě setkáváme velmi často. Uvádíme běžné použití databází velkého rozsahu:

S databázemi se v běžném životě setkáváme velmi často. Uvádíme běžné použití databází velkého rozsahu: Úvod do databází Základní pojmy Databáze je množina záznamů, kterou shromažďujeme za nějakým konkrétním účelem. Databáze používáme zejména pro ukládání obsáhlých informací. Databázové systémy jsou k dispozici

Více

Technologické postupy práce s aktovkou IS MPP

Technologické postupy práce s aktovkou IS MPP Technologické postupy práce s aktovkou IS MPP Modul plánování a přezkoumávání, verze 1.20 vypracovala společnost ASD Software, s.r.o. dokument ze dne 27. 3. 2013, verze 1.01 Technologické postupy práce

Více

PRODUKTY. Tovek Tools

PRODUKTY. Tovek Tools jsou desktopovou aplikací určenou k vyhledávání informací, tvorbě různých typů analýz a vytváření přehledů a rešerší. Jsou vhodné pro práci i s velkým objemem textových dat z různorodých informačních zdrojů.

Více

CYCLOPE PRINT MANAGEMENT SOFTWARE- UŽIVATELSKÁ PŘÍRUČKA

CYCLOPE PRINT MANAGEMENT SOFTWARE- UŽIVATELSKÁ PŘÍRUČKA CYCLOPE PRINT MANAGEMENT SOFTWARE- UŽIVATELSKÁ PŘÍRUČKA Obsah Cyclope Print Management Software- uživatelská příručka... 1 1. Přehled produktu... 2 2. Stručný popis produtku CPMS... 2 2.1. Stažení CPMS...

Více

13 Barvy a úpravy rastrového

13 Barvy a úpravy rastrového 13 Barvy a úpravy rastrového Studijní cíl Tento blok je věnován základním metodám pro úpravu rastrového obrazu, jako je např. otočení, horizontální a vertikální překlopení. Dále budo vysvětleny různé metody

Více

Popis ovládání. Po přihlášení do aplikace se objeví navigátor. Navigátor je stromově seřazen a slouží pro přístup ke všem oknům celé aplikace.

Popis ovládání. Po přihlášení do aplikace se objeví navigátor. Navigátor je stromově seřazen a slouží pro přístup ke všem oknům celé aplikace. Popis ovládání 1. Úvod Tento popis má za úkol seznámit uživatele se základními principy ovládání aplikace. Ovládání je možné pomocí myši, ale všechny činnosti jsou dosažitelné také pomocí klávesnice. 2.

Více

Poznámky k verzi Remote support platform 3.1

Poznámky k verzi Remote support platform 3.1 What's New Verze dokumentu: 1.0 2014-05-09 Verze dokumentu Následující tabulka poskytuje přehled nejdůležitějších změn dokumentu. Verze Datum Popis 1.0 2014-05-09 První verze 2 All rights reserved. Verze

Více

Profilová část maturitní zkoušky 2013/2014

Profilová část maturitní zkoušky 2013/2014 Střední průmyslová škola, Přerov, Havlíčkova 2 751 52 Přerov Profilová část maturitní zkoušky 2013/2014 TEMATICKÉ OKRUHY A HODNOTÍCÍ KRITÉRIA Studijní obor: 78-42-M/01 Technické lyceum Předmět: TECHNIKA

Více

Úvod...1 Instalace...1 Popis funkcí...2 Hlavní obrazovka...2 Menu...3 Práce s aplikací - příklad...5

Úvod...1 Instalace...1 Popis funkcí...2 Hlavní obrazovka...2 Menu...3 Práce s aplikací - příklad...5 Rejstřík Úvod...1 Instalace...1 Popis funkcí...2 Hlavní obrazovka...2 Menu...3 Práce s aplikací - příklad...5 Úvod Správcovská aplikace slouží k vytvoření vstupního a zašifrovaného souboru pro odečtovou

Více

2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena.

2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena. 2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena. GEOVAP, spol. s r. o. Čechovo nábřeží 1790 530 03 Pardubice Česká republika +420 466 024 618 http://www.geovap.cz V dokumentu použité názvy programových

Více

Co nového ve spisové službě? Národní standard pro elektronické systémy spisové služby a jeho optimalizace

Co nového ve spisové službě? Národní standard pro elektronické systémy spisové služby a jeho optimalizace Co nového ve spisové službě? Národní standard pro elektronické systémy spisové služby a jeho optimalizace Tomáš Dvořák, Archiv hl. města Prahy Radek Pokorný, Státní okresní archiv Hradec Králové DRMS Forum

Více

přes webový prohlížeč pomocí P@wouka Ing. Tomáš Petránek tomas@petranek.eu

přes webový prohlížeč pomocí P@wouka Ing. Tomáš Petránek tomas@petranek.eu Open Sourceřešení správy studentských počítačových sítí na kolejích SU OPF Karviná aneb cesta, jak efektivně administrovat síť a její uživatele přes webový prohlížeč pomocí P@wouka Ing. Tomáš Petránek

Více

Aplikace BSMS. Uživatelská příručka - 1 -

Aplikace BSMS. Uživatelská příručka - 1 - Aplikace BSMS Uživatelská příručka - 1 - Obsah 1. O aplikaci BSMS... 3 2. Základní předpoklady pro používání BSMS... 3 3. Instalace aplikace... 3 3.1. Samotná instalace... 3 3.2. Možné problémy při instalaci...

Více

Business Intelligence

Business Intelligence Business Intelligence Josef Mlnařík ISSS Hradec Králové 7.4.2008 Obsah Co je Oracle Business Intelligence? Definice, Od dat k informacím, Nástroj pro operativní řízení, Integrace informací, Jednotná platforma

Více

RD.CZ : EVIDENCE DIGITALIZOVANÝCH DOKUMENTŮ A SLEDOVÁNÍ PROCESU ZPRACOVÁNÍ

RD.CZ : EVIDENCE DIGITALIZOVANÝCH DOKUMENTŮ A SLEDOVÁNÍ PROCESU ZPRACOVÁNÍ RD.CZ : EVIDENCE DIGITALIZOVANÝCH DOKUMENTŮ A SLEDOVÁNÍ PROCESU ZPRACOVÁNÍ Pavel Kocourek, Incad Praha Přestože mnohé knihovny v České republice digitalizují své dokumenty a další se na to chystají, neprobíhá

Více

Uživatelský manuál. Aplikace GraphViewer. Vytvořil: Viktor Dlouhý

Uživatelský manuál. Aplikace GraphViewer. Vytvořil: Viktor Dlouhý Uživatelský manuál Aplikace GraphViewer Vytvořil: Viktor Dlouhý Obsah 1. Obecně... 3 2. Co aplikace umí... 3 3. Struktura aplikace... 4 4. Mobilní verze aplikace... 5 5. Vytvoření projektu... 6 6. Části

Více

Manuál pro mobilní aplikaci. Patron-Pro

Manuál pro mobilní aplikaci. Patron-Pro Manuál pro mobilní aplikaci Patron-Pro 1 Obsah 1. 2. 3. 4. 5. 6. 7. 8. 9. Popis...3 Slovník pojmů...3 Ovládání aplikace...3 Volby v aplikaci...3 4.1. Menu...3 4.2. Zpět na seznam karet...4 Úvodní obrazovka...4

Více

JUDr. Ivana Bukovská, vedoucí odboru obč.-spr.agend RMK dne 12.7.2012, usnesení č.1123-01. 15.července 2012. Neomezena

JUDr. Ivana Bukovská, vedoucí odboru obč.-spr.agend RMK dne 12.7.2012, usnesení č.1123-01. 15.července 2012. Neomezena MĚSTO KROMĚŘÍŽ SMĚRNICE Č. 4/2012 O OCHRANĚ OSOBNÍCH ÚDAJU Zpracovatel: Schváleno: Účinnost od: Účinnost do: Přílohy: JUDr. Ivana Bukovská, vedoucí odboru obč.-spr.agend RMK dne 12.7.2012, usnesení č.1123-01

Více

FORTANNS. havlicekv@fzp.czu.cz 22. února 2010

FORTANNS. havlicekv@fzp.czu.cz 22. února 2010 FORTANNS manuál Vojtěch Havlíček havlicekv@fzp.czu.cz 22. února 2010 1 Úvod Program FORTANNS je software určený k modelování časových řad. Kód programu má 1800 řádek a je napsán v programovacím jazyku

Více

MONITORING OBCHODNÍCH PARTNERŮ

MONITORING OBCHODNÍCH PARTNERŮ MONITORING OBCHODNÍCH PARTNERŮ NÁVOD PRO APLIKACI 1 Obsah: 1. Prvotní spuštění aplikace Část monitoring insolvenčního rejstříku 2. Hlavní okno 3. Monitorované subjekty 3.1 Skupiny monitorovaných subjektů

Více

Příloha 6. Palety nástrojů

Příloha 6. Palety nástrojů Příloha 6. Palety nástrojů Palety nástrojů v IDE poskytují zkrácení pro příkazy nabídky. Příkazy jsou rozděleny do několika palet nástrojů, které mohou být nezávisle přeskupeny nebo vloženy do plovoucích

Více

12. Virtuální sítě (VLAN) VLAN. Počítačové sítě I. 1 (7) KST/IPS1. Studijní cíl. Základní seznámení se sítěmi VLAN. Doba nutná k nastudování

12. Virtuální sítě (VLAN) VLAN. Počítačové sítě I. 1 (7) KST/IPS1. Studijní cíl. Základní seznámení se sítěmi VLAN. Doba nutná k nastudování 12. Virtuální sítě (VLAN) Studijní cíl Základní seznámení se sítěmi VLAN. Doba nutná k nastudování 1 hodina VLAN Virtuální síť bývá definována jako logický segment LAN, který spojuje koncové uzly, které

Více

Soukromí nade vše. Čím víc toho o sobě prozradíme, tím jsme zranitelnější. Ing. Simona Martínková Masarykovo gymnázium, Plzeň

Soukromí nade vše. Čím víc toho o sobě prozradíme, tím jsme zranitelnější. Ing. Simona Martínková Masarykovo gymnázium, Plzeň Soukromí nade vše Čím víc toho o sobě prozradíme, tím jsme zranitelnější Ing. Simona Martínková Masarykovo gymnázium, Plzeň Obsah Ochrana osobních údajů Ochrana osobnosti Antispamový zákon Zákon o regulaci

Více

HLEDEJCENY.mobi. Obsah. Mobilní verze e-shopu. Důvody instalace

HLEDEJCENY.mobi. Obsah. Mobilní verze e-shopu. Důvody instalace Obsah HLEDEJCENY.mobi Mezi Vodami 1952/9 e-mail: info@hledejceny.cz HLEDEJCENY.mobi... 1 Mobilní verze e-shopu... 1 Důvody instalace... 1 Výhody... 2 Co je k mobilní verzi potřeba... 2 Objednávka služby...

Více

PHP framework Nette. Kapitola 1. 1.1 Úvod. 1.2 Architektura Nette

PHP framework Nette. Kapitola 1. 1.1 Úvod. 1.2 Architektura Nette Kapitola 1 PHP framework Nette 1.1 Úvod Zkratka PHP (z anglického PHP: Hypertext Preprocessor) označuje populární skriptovací jazyk primárně navržený pro vývoj webových aplikací. Jeho oblíbenost vyplývá

Více

PROFI TDi s.r.o. 696 37, Želetice 40 www.profi-tdi.cz info@profi-tdi.cz. Návod k používání systému OTDI.CZ

PROFI TDi s.r.o. 696 37, Želetice 40 www.profi-tdi.cz info@profi-tdi.cz. Návod k používání systému OTDI.CZ Návod k používání systému OTDI.CZ Vážený kliente. Děkujeme za projevený zájem o náš on-line systém evidence kontrol, určený speciálně pro účely dozorů staveb. Systém OTDI.CZ nabízí svým uživatelům zejména:

Více

Databázové aplikace pro internetové prostředí. 01 - PHP úvod, základní princip, vkládání skriptu, komentáře, výpis na obrazovku

Databázové aplikace pro internetové prostředí. 01 - PHP úvod, základní princip, vkládání skriptu, komentáře, výpis na obrazovku Databázové aplikace pro internetové prostředí 01 - PHP úvod, základní princip, vkládání skriptu, komentáře, výpis na obrazovku Projekt: Inovace výuky prostřednictvím ICT Registrační číslo: CZ.1.07/1.5.00/34.250

Více

Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání

Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání Čtvrtek 3. listopadu Makra v Excelu Obecná definice makra: Podle definice je makro strukturovanou definicí jedné nebo několika akcí, které chceme, aby MS Excel vykonal jako odezvu na nějakou námi definovanou

Více

M4 PDF rozšíření. Modul pro PrestaShop. http://www.presta-addons.com

M4 PDF rozšíření. Modul pro PrestaShop. http://www.presta-addons.com M4 PDF rozšíření Modul pro PrestaShop http://www.presta-addons.com Obsah Úvod... 2 Vlastnosti... 2 Jak modul funguje... 2 Zdroje dat... 3 Šablony... 4 A. Označení šablon... 4 B. Funkce Smarty... 5 C. Definice

Více

xrays optimalizační nástroj

xrays optimalizační nástroj xrays optimalizační nástroj Optimalizační nástroj xoptimizer je součástí webového spedičního systému a využívá mnoho z jeho stavebních bloků. xoptimizer lze nicméně provozovat i samostatně. Cílem tohoto

Více

Vývoj moderních technologií při vyhledávání. Patrik Plachý SEFIRA spol. s.r.o. plachy@sefira.cz

Vývoj moderních technologií při vyhledávání. Patrik Plachý SEFIRA spol. s.r.o. plachy@sefira.cz Vývoj moderních technologií při vyhledávání Patrik Plachý SEFIRA spol. s.r.o. plachy@sefira.cz INFORUM 2007: 13. konference o profesionálních informačních zdrojích Praha, 22. - 24.5. 2007 Abstrakt Vzhledem

Více

VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu

VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632

Více

Novinky verze 2.3.0 systému Spisové služby (SpS) e-spis LITE

Novinky verze 2.3.0 systému Spisové služby (SpS) e-spis LITE ICZ a.s. Správa a řízení dokumentů Na hřebenech II 1718/10 147 00 Praha 4 Tel.: +420-222 271 111 Fax: +420-222 271 112 Internet: www.i.cz Novinky verze 2.3.0 systému Spisové služby (SpS) e-spis LITE Vypracoval

Více

Reranking založený na metadatech

Reranking založený na metadatech České vysoké učení technické v Praze Fakulta informačních technologií Katedra softwarového inženýrství Reranking založený na metadatech MI-VMW Projekt IV - 1 Pavel Homolka Ladislav Kubeš 6. 12. 2011 1

Více

Analýza a Návrh. Analýza

Analýza a Návrh. Analýza Analysis & Design Návrh nebo Design? Design = návrh Není vytváření použitelného uživatelského prostředí (pouze malinká podmnožina celého návrhu) Často takto omezeně chápáno studenty nedokáží si představit,

Více

JRV.CZ s.r.o. Bulharská 4 612 00 Brno www.rosadata.cz. RosaData TM. Realitní kancelář

JRV.CZ s.r.o. Bulharská 4 612 00 Brno www.rosadata.cz. RosaData TM. Realitní kancelář RosaData TM Realitní kancelář OBSAH Úvod... 3 Realitní kancelář... 4 Seznam realit... 4 Detail reality... 5 Foto... 8 Exporty... 10 Stavy reality... 10 Obchodní případ... 12 Realitní poptávky... 13 Export

Více

PALSTAT s.r.o. systémy řízení jakosti PALSTAT CAQ verze. 3.00.01.09 Kontakty 08/2010. 1 Obsah

PALSTAT s.r.o. systémy řízení jakosti PALSTAT CAQ verze. 3.00.01.09 Kontakty 08/2010. 1 Obsah 1 Obsah 1 Obsah... 1 2 Úvod a spouštění SW Palstat CAQ... 2 2.1.1 Návaznost na další SW moduly Palstat CAQ... 2 2.2 Přihlášení do programu... 2 2.2.1 Stanovení přístupu a práv uživatele... 2 2.2.2 Spuštění

Více

Svolávací systém Uživatelský manuál

Svolávací systém Uživatelský manuál Uživatelský manuál TTC TELEKOMUNIKACE, s.r.o. Třebohostická 987/5 100 00 Praha 10 tel.: 234 052 111 fax.: 234 052 999 e-mail: ttc@ttc.cz http://www.ttc-telekomunikace.cz Datum vydání: 14. srpna 2013 Číslo

Více

WR Reality. Web Revolution. Uživatelský manuál administračního rozhraní

WR Reality. Web Revolution. Uživatelský manuál administračního rozhraní WR Reality Web Revolution Uživatelský manuál administračního rozhraní Web Revolution s. r. o. 2010 WR Reality Administrace uživatelský manuál Praktický průvodce administrací webové aplikace WR Reality

Více

MANUÁL K PROGRAMU JEDNODUCHÝ SKLAD (VER-1.2)

MANUÁL K PROGRAMU JEDNODUCHÝ SKLAD (VER-1.2) MANUÁL K PROGRAMU JEDNODUCHÝ SKLAD (VER-1.2) Program byl vytvořený za účelem uchovávání artiklů (položek) a jejich cen. Základním cílem bylo vytvořit uživatelsky příjemné prostředí s mnoha funkcemi ve

Více

Novinky ve Visual Studio 2010. Tomáš Kroupa Tomas.Kroupa@hotmail.com

Novinky ve Visual Studio 2010. Tomáš Kroupa Tomas.Kroupa@hotmail.com Novinky ve Visual Studio 2010 Tomáš Kroupa Tomas.Kroupa@hotmail.com O čem si dnes řekneme Visual studio 2010 (beta 2) Jazyk C# 4.0 ASP.NET 4.0.NET 4.0 Visual Studio 2010 Beta 2 Jak získat Testovací verze

Více

ProArc. open source řešení pro produkci a archivaci digitálních dokumentů. Martina NEZBEDOVÁ Knihovna AV ČR, v. v. i., Praha nezbedova@knav.

ProArc. open source řešení pro produkci a archivaci digitálních dokumentů. Martina NEZBEDOVÁ Knihovna AV ČR, v. v. i., Praha nezbedova@knav. ProArc open source řešení pro produkci a archivaci digitálních dokumentů Martina NEZBEDOVÁ Knihovna AV ČR, v. v. i., Praha nezbedova@knav.cz INFORUM 2015: 21. ročník konference o profesionálních informačních

Více

Lokality a uživatelé

Lokality a uživatelé Administrátorský manuál TTC TELEKOMUNIKACE, s.r.o. Třebohostická 987/5 100 00 Praha 10 tel.: 234 052 111 fax.: 234 052 999 e-mail: ttc@ttc.cz http://www.ttc-telekomunikace.cz Datum vydání: 15.října 2013

Více

EndNote Web. Stručné informace THOMSON SCIENTIFIC

EndNote Web. Stručné informace THOMSON SCIENTIFIC THOMSON SCIENTIFIC EndNote Web Stručné informace Web je webový nástroj navržený tak, aby poskytoval studentům a výzkumníkům pomoc při psaní výzkumných prací. Databáze ISI Web of Knowledge a nástroje EndNote

Více

DoplněkCite While You Write pro aplikaci Microsoft Word

DoplněkCite While You Write pro aplikaci Microsoft Word DoplněkCite While You Write pro aplikaci Microsoft Word Díky doplňku Cite While You Write pro nástroj EndNote Web máte možnost reference a formátované citace či bibliografie při psaní vaší práce v aplikaci

Více

Databáze prodejců. Tlačítka. Vytvoří kartu nového prodejce (Alt+N); Změní vybraného prodejce Uloží nového prodejce nebo změnu (Alt+U);

Databáze prodejců. Tlačítka. Vytvoří kartu nového prodejce (Alt+N); Změní vybraného prodejce Uloží nového prodejce nebo změnu (Alt+U); Databáze prodejců Tlačítka Vytvoří kartu nového prodejce (Alt+N); Změní vybraného prodejce (Alt+E); Uloží nového prodejce nebo změnu (Alt+U); Při zakládání nového prodejce zadejte jeho číslo (musí to být

Více

1 Strukturované programování

1 Strukturované programování Projekt OP VK Inovace studijních oborů zajišťovaných katedrami PřF UHK Registrační číslo: CZ.1.07/2.2.00/28.0118 1 Cíl Seznámení s principy strukturovaného programování, s blokovou strukturou programů,

Více

Prezentace CRMplus. Téma: CRMplus jako nástroj pro kontrolu a vyhodnocení rozpracovanosti dílů na zakázkách

Prezentace CRMplus. Téma: CRMplus jako nástroj pro kontrolu a vyhodnocení rozpracovanosti dílů na zakázkách Prezentace CRMplus Téma: CRMplus jako nástroj pro kontrolu a vyhodnocení rozpracovanosti dílů na zakázkách Obsah prezentace Představení společnosti Technodat Develop, s.r.o. CRMplus základní charakteristika

Více

12 Metody snižování barevného prostoru

12 Metody snižování barevného prostoru 12 Metody snižování barevného prostoru Studijní cíl Tento blok je věnován základním metodám pro snižování barevného rozsahu pro rastrové obrázky. Postupně zde jsou vysvětleny důvody k použití těchto algoritmů

Více

INFORMAČNÍ SYSTÉM VIDIUM A VYUŽITÍ MODERNÍCH TECHNOLOGIÍ

INFORMAČNÍ SYSTÉM VIDIUM A VYUŽITÍ MODERNÍCH TECHNOLOGIÍ INFORMAČNÍ SYSTÉM VIDIUM A VYUŽITÍ MODERNÍCH TECHNOLOGIÍ Michal Brožek, Dominik Svěch, Jaroslav Štefaník MEDIUM SOFT a.s., Cihelní 14, 702 00 Ostrava, ČR Abstrakt Neustále rostoucí význam sběru dat, možnost

Více

Internetový obchod ES Pohoda Web Revolution

Internetový obchod ES Pohoda Web Revolution Internetový obchod ES Pohoda Web Revolution Uživatelský manuál propojení na ES Pohoda Verze 1.0 Web Revolution s.r.o. 2010 Internetový obchod ES Pohoda Uživatelský manuál na propojení na ES Pohoda Přehled

Více

Směrnice o nakládání s osobními údaji uživatelů Odborné knihovny ONN a.s.

Směrnice o nakládání s osobními údaji uživatelů Odborné knihovny ONN a.s. Směrnice o nakládání s osobními údaji uživatelů Odborné knihovny ONN a.s. I. Pojmy zákona 101/2002 Sb. Zákon se vztahuje na veškeré zpracovávání osobních údajů, ať k němu dochází automatizovaně, či jinými

Více