6. Implementacja rozwiązania
6.3. Dodanie nowych funkcji
Ostatnim etapem pracy było dodanie brakujących funkcji programu. Ta część nie sprawiła większych problemów. W tym stadium rozwoju autor biegle poruszał się po kodzie źródłowym aplikacji. Kolejne funkcje były dodawane cyklicznie do momentu spełnienia założonych wymagań funkcjonalnych.
W bieżącym rozdziale znajduje się opis najważniejszych narzędzi użytych podczas implementacji nowych funkcjonalności systemu.
Podczas wyboru technologii głównymi kryteriami były: wygoda użytkowania, uniwersalność oraz dostępność na rynku wolnego oprogramowania. Wszystkie technologie i narzędzia zostały opisane w kontekście ich pochodzenia, popularności oraz warunków licencyjnych.
7.1. Code::Blocks
W każdym większym projekcie informatycznym, nieodzownym staje się skorzystanie z zintegrowanego środowiska programistycznego (ang. integrated development environment, IDE). Code::Blocks jest darmowym, wieloplatformowym środowiskiem wspierającym m.in. język C++, który został wykorzystany do budowy systemu oraz do napisania samego środowiska. Tym, co zaważyło na wyborze omawianego środowiska był fakt, że do jego implementacji wykorzystano wieloplatformową bibliotekę wxWidgets, która jest szeroko stosowana w implementacji systemu KTDA. Środowisko Code::Blocks udostępnia najlepsze wsparcie do projektowania aplikacji wykorzystujących tę bibliotekę.
Podczas pracy nad rozszerzeniem programu użyto wersji Code::Blocks 13.12.
Program Code::Blocks jest dystrybuowany na licencji GNU GPL v3.0.
Rysunek 7.1. Ekran powitalny środowiska Code::Blocks w wersji 13.12.
7.2. Git
Tematem niniejszej pracy jest rozbudowa istniejącego systemu.
Podczas realizacji tego zadania pożądanym było dysponowanie działającą wersją oprogramowania, na każdym etapie rozwoju projektu.
W spełnieniu tego wymagania pomocne okazało się skorzystanie z systemu kontroli wersji (ang. version control system, VCS) Git.
Narzędzia użyto w celu rejestracji oraz śledzenia zmian w kodzie źródłowym. Dzięki temu zabiegowi możliwe stało się cofnięcie do dowolnego miejsca w historii rozbudowy aplikacji w przypadku wystąpienia regresji. Log wprowadzanych poprawek był przechowywany w prywatnym repozytorium przez cały czas trwania prac nad projektem.
System Git jest dystrybuowany na licencji GNU GPL v2.0.
Rysunek 7.2. Logo projektu Git.
7.3. Biblioteka wxWidgets
W pierwotnej wersji programu autor zdecydował się na wykorzystanie biblioteki wxWidgets. wxWidgets jest biblioteką klas języka C++ przeznaczoną do tworzenia graficznego interfejsu użytkownika aplikacji. Biblioteka udostępnia jednolity, łatwy w użyciu interfejs do budowy oprogramowania przeznaczonego do uruchamiania na różnych platformach, co stanowi jej główną zaletę.
Biblioteka do dziś jest aktywnie rozwijana. Na przestrzeni lat przeszła szereg zmian i usprawnień. Podczas rozbudowy systemu KTDA postanowiono skorzystać z jej najnowszej wersji, tj. wxWidgets 3.0.
W konsekwencji należało przebudować kod źródłowy, pozbywając się z niego przestarzałych funkcji, klas czy zmienionych nazw zmiennych i zastąpić je aktualnymi odpowiednikami. W niektórych przypadkach konieczne były zmiany w architekturze programu. Stanowiło to zasadniczą część pracy.
Biblioteka wxWidgets jest dystrybuowana na licencji wxWindows, która w zasadniczej części została oparta na licencji LGPL.
Rysunek 7.3. Logo biblioteki wxWidgets.
7.4. Biblioteka Newmat
Newmat jest biblioteką języka C++ udostępniającą użytkownikom podstawowe operacje na macierzach. Biblioteka kładzie główny nacisk na operacje stosowane w obliczeniach statystycznych.
W pracy korzysta się z wersji biblioteki Newmat10.
W bieżącym rozdziale zaprezentowano przykłady użycia systemu.
Zademonstrowane funkcje wybrano pod kątem ukazania możliwości oprogramowania w jak najszerszym zakresie. Przede wszystkim skupiono się na nowo powstałych funkcjach.
Przykład 8.1. Obliczenie współczynników wiarygodności dla wygenerowanego zbioru danych „RP”.
Procedurę rozpoczynamy od uruchomienia programu, a następnie wygenerowaniu specjalnego zbioru danych „RP”. W tym celu z widocznego menu kontekstowego wybieramy kolejno opcje:
Plik Utwórz zbiór danych RP→
Po wybraniu tej opcji pojawia się okno dialogowe, w którym należy zadać parametry aktualnie generowanego zbioru:
Rysunek 8.1. Okno wyboru parametrów generowanego zbioru danych.
Zatwierdzając wybór w głównym oknie programu powinien pojawić się obiekt reprezentujący wygenerowany zbiór:
Rysunek 8.2. Utworzenie obiektu zbioru danych.
Wygenerowany zbiór możemy przejrzeć. W tym celu prawym przyciskiem myszy należy kliknąć interesujący nas zbiór danych, a następnie wybrać opcję Widok. Naszym oczom ukaże się nowe okno zawierające tabelę, w której każdy rekord odpowiada innemu obiektowi, a także komplet histogramów obrazujących rozkład wartości poszczególnych atrybutów.
Warto również zauważyć, że wraz z generacją zbioru danych automatycznie został utworzony system decyzyjny z domyślnym atrybutem decyzyjnym. Jeśli potrzebujemy utworzyć system decyzyjny bazujący na innym atrybucie, to w tym celu należy klikając prawym przyciskiem myszy na zbiorze danych wybrać opcję Utwórz system decyzyjny, a następnie w oknie dialogowym wybrać właściwy atrybut decyzyjny.
Rysunek 8.3. Okno przeglądu zbioru danych.
Kolejnym krokiem procedury jest odkrycie w systemie decyzyjnym wyłaniających wzorców. Dokonać tego możemy na trzy sposoby:
odkrywanie wyłaniających wzorców z użyciem drzewa decyzyjnego;
odkrywanie wyłaniających wzorców z użyciem maksymalnych częstych zbiorów;
załadowanie uprzednio odkrytych wyłaniających wzorców z pliku ARFF.
W przykładzie skorzystamy z pierwszej możliwości. Klikając prawym przyciskiem myszy na systemie decyzyjnym wybieramy:
Odkryj wyłaniające wzorce Algorytm drzewa decyzyjnego→
Po tej czynności system wyświetli okno dialogowe służące do nastawy parametrów algorytmu:
Rysunek 8.4. Okno wyboru parametrów algorytmu odkrywania wyłaniających wzorców.
Zatwierdzając wybór przyciskiem OK program wykona operację odkrywania wyłaniających wzorców. Po jej zakończeniu do głównego okna programu dodany zostaje obiekt reprezentujący odkryte wyłaniające wzorce:
Rysunek 8.5. Utworzenie obiektu wyłaniających wzorców.
W następnym kroku utworzymy klasyfikator CAEP.
Oprogramowanie umożliwia podjęcie decyzji, czy chcemy zbudować klasyfikator na podstawie wszystkich wyłonionych wzorców, czy tylko na kilku wybranych. Wykorzystamy drugą możliwość.
Klikając prawym przyciskiem myszy na obiekcie reprezentującym wyłaniające wzorce wybieramy opcję Utwórz klasyfikator CAEP bazując na wybranych wzorcach. System wyświetla okno dialogowe z możliwością wyboru wzorców użytych w dalszym procesie analizy:
Rysunek 8.6. Okno wyboru wyłaniających wzorców wykorzystanych w dalszym procesie analizy.
Po wyborze i jego zatwierdzeniu w głównym oknie programu pojawia się nowo utworzony obiekt wyrażający klasyfikator CAEP.
Mając do dyspozycji klasyfikator możemy przystąpić do finalnego etapu procedury, tj. obliczenia współczynników wiarygodności. W tym celu klikając prawym przyciskiem myszy na obiekcie klasyfikatora wybieramy opcję Użyj do obliczenia współczynników wiarygodności.
Wyświetlone zostaje kolejne okno dialogowe, w którym wybieramy system decyzyjny, który zostanie poddany przetwarzaniu:
Rysunek 8.7. Okno wyboru systemu decyzyjnego poddanego analizie.
Zatwierdzając decyzję współczynniki wiarygodności dla danego systemu decyzyjnego zostają wyznaczone, co w systemie objawia się ukazaniem kolejnego obiektu:
Rysunek 8.8. Utworzenie obiektu zbierającego wyznaczone współczynniki wiarygodności.
System umożliwia także przejrzenie wyników działania procedury w przejrzystej formie tabelarycznej. Aby skorzystać z tej możliwości należy, klikając prawym przyciskiem myszy na obiekcie reprezentującym współczynniki wiarygodności, wybrać opcję Widok.
Wyświetlone zostaje okno zawierające wszelkie dane o badanych obiektach:
Rysunek 8.9. Okno przeglądu wyników analizy.
W ramach niniejszej pracy dyplomowej z powodzeniem zrealizowano rozbudowę systemu KTDA. Spełnione zostały wszystkie wymogi zawarte w specyfikacji wymagań.
Modernizacja już istniejącego systemu wymaga przyjęcia odpowiedniego rygoru pracy. Ze względu na fakt, że system KTDA jest oprogramowaniem dedykowanym, przed przystąpieniem do właściwych działań autor zapoznał się z dziedziną problemu. W obrębie tych działań znalazło się przyswojenie podstawowych pojęć z zakresu eksploracji danych, procesu analizy wiarygodności danych, wyłaniających wzorców oraz współczynników wiarygodności. Zrozumienie przytoczonych zagadnień umożliwiło dokładną analizę wymagań stawianych rozbudowywanemu systemowi.
Po przyswojeniu wiedzy dziedzinowej nadszedł czas na wybór narzędzi i technologii stosowanych do rozwiązania zadania.
Zdecydowano się użyć większości bibliotek, którymi posłużono się w inicjalnej wersji projektu. Z racji tego, że były to propozycje nieznane autorowi, należało poświęcić czas na zapoznanie się z nimi.
Zdecydowanie najbardziej czasochłonnym etapem okazała się analiza architektury systemu. Ponadto autor musiał przyzwyczaić się do konwencji stosowanych przez swojego poprzednika, co również stanowiło pewne wyzwanie.
Po rzetelnym przygotowaniu teoretycznym przystąpiono do właściwej pracy nad kodem źródłowym aplikacji oraz wprowadzaniem nowych funkcjonalności systemu. Wraz z upływem czasu autor coraz lepiej orientował się w organizacji kodu źródłowego oraz bieglej posługiwał się wykorzystywanymi narzędziami. Poskutkowało to tym, że implementacje kolejnych funkcji pojawiały się w krótszych odstępach czasu.
Ostatecznie udało się zrealizować wszystkie założone cele pracy.
System KTDA został wyposażony w nowe, praktyczne funkcje, elastyczną architekturę, aktualne wersje bibliotek oraz nie sprawia żadnych trudności podczas uruchamiania na współczesnych maszynach.
1. Krzysztof Tomaszewski „Analiza wiarygodności danych z wykorzystaniem wyłaniających wzorców”, praca dyplomowa magisterska, Politechnika Warszawska, Wydział Elektroniki i Technik Informacyjnych, Instytut Informatyki, Warszawa, 2005 2. Andrzej Dominik „Analiza danych z zastosowaniem teorii zbiorów
przybliżonych”, praca dyplomowa magisterska, Politechnika Warszawska, Wydział Elektroniki i Technik Informacyjnych, Instytut Informatyki, Warszawa, 2004
3. Mariusz Walkiewicz „Ocena wiarygodności danych”, praca dyplomowa magisterska, Politechnika Warszawska, Wydział Elektroniki i Technik Informacyjnych, Instytut Informatyki, Warszawa, 2004
4. Zdzisław Pawlak „Rough sets – Basic notions”, ICS PAS Reports, Warszawa, 1981
5. Zdzisław Pawlak „Systemy informacyjne podstawy teoretyczne”, WNT, Warszawa, 1983
6. Guozhu Dong, Jinyan Li „Efficient Mining of Emerging Patterns:
Discovering Trends and Differences”, Proceedings of the SIGKDD (5th ACM International Conference on Knowledge Discovery and Data Mining), 1999
7. Mosche Lichman, UCI Machine Learning Repository, Irvine, CA:
University of California, School of Information and Computer Science, 2013, http://archive.ics.uci.edu/ml
11. Projekt Code::Blocks,
http://www.codeblocks.org/
12. Projekt Git,
https://gitscm.com/
13. Biblioteka wxWidgets,
https://www.wxwidgets.org/
14. Biblioteka Newmat,
http://www.robertnz.net/nm_intro.htm