Author: michalrej
Date: Wed Feb 14 00:58:04 2007
New Revision: 1362
Modified:
paperwork/praca/src/rozdzialy/chapter-02.tex
paperwork/praca/src/rozdzialy/chapter-03.tex
paperwork/praca/src/rozdzialy/chapter-04.tex
paperwork/praca/src/rozdzialy/chapter-05.tex
paperwork/praca/src/rozdzialy/chapter-06.tex
Log:
Modified: paperwork/praca/src/rozdzialy/chapter-02.tex
=========================================================================== ===
--- paperwork/praca/src/rozdzialy/chapter-02.tex (original)
+++ paperwork/praca/src/rozdzialy/chapter-02.tex Wed Feb 14 00:58:04 2007
@@ -48,7 +48,7 @@
Ostatnim sposrod wymagan funkcjonalnych bylo tworzenie raportow – wynikow dzialania algorytmu k-srednich i aglomeracyjnego. System textit{Clasterix} mial pozwolic na raportowanie wynikow w postaci pliku tekstowego lub w formacie XML + XSLT, a takze na robienie tzw. „zrzutow” z wykresow prezentowanych na ekranie.
-subsection{Wymagania niefunkcjonalne}
+subsection{Wymagania niefunkcjonalne}label{podrozdzial:WymaganiaNiefunkcjonalne}
Aplikacja textit{Clasterix} miala spelnic szereg wymagan niefunkcjonalnych. Pierwszym jest zgodnosc z regulami programowania obiektowego. System powinien byc zaprojektowany poprawnie z punktu widzenia projektowania obiektowego – algorytmy powinny byc zaimplementowane w taki sposob aby zapewnialy latwa i efektywna rozbudowe aplikacji. Czesc prezentacyjna, GUI, powinna byc oddzielona od algorytmow i operacji na plikach. Drugim wymaganiem jest implementacja w jezyku Java, ktora pozwoli na uruchomienie aplikacji na dowolnej maszynie, na ktorej jest zainstalowana wirtualna maszyna Javy. Trzecim wymaganiem jest latwosc obslugi, a przede wszystkim zaprojektowanie przejrzystego i intuicyjnego interfejsu, dzieki ktoremu osoby niezaznajomione z aplikacja szybko naucza sie nia poslugiwac. Kolejnym wymaganiem jest to, aby wymagania co do maszyny i srodowiska nie byly zbyt duze, wystarczyc powinien Windows XP / Unix ze srodowiskiem graficznym na
Celeronie o mocy 1GHz i 256MB RAM z zainstalowanym JRE 1.5. Poniewaz odbiorca programu nie beda tylko studenci Politechniki Poznanskiej, lecz rowniez inne zainteresowane osoby, niekoniecznie poslugujace sie jezykiem polskim, postanowiono, ze interfejs uzytkownika bedzie elastyczny pod wzgledem wyboru jezyka. Postanowiono takze, ze aplikacja bedzie oparta o idee open source. Dlatego tez kod jak i dokumentacja techniczna bedzie w jezyku angielskim, zeby programisci z calego swiata zainteresowani rozwijaniem textit{Clasterixa} lub wykorzystaniem jakiejs klasy mogli bez wiekszych przeszkod do tego przystapic.
Modified: paperwork/praca/src/rozdzialy/chapter-03.tex
=========================================================================== ===
--- paperwork/praca/src/rozdzialy/chapter-03.tex (original)
+++ paperwork/praca/src/rozdzialy/chapter-03.tex Wed Feb 14 00:58:04 2007
@@ -126,13 +126,13 @@
label{hierarchia}
end{figure}
-subsubsection{K-srednich}
+subsubsection{K-srednich}index{k-srednich}
Metoda k-srednich nalezy do algorytmow grupowania opartych na podziale na skupienia, w ktorych znajda sie obiekty jak najbardziej jednorodne. „Jednorodnosc jest identyfikowana przez stosowna funkcje oceny, taka jak minimalizowanie odleglosci miedzy kazdym punktem a srodkiem ciezkosci skupienia, do ktorego zostal on przypisany.”cite{HAND}. Srodek ciezkosci jest wypadkowa wartosci atrybutow wszystkich obiektow znajdujacym sie w danym skupieniu. Stanowi on pewnego rodzaju „srodek” skupienia, punkt, ktory jest najbardziej reprezentatywny dla danego skupienia. Inne punkty nalezace do tego samego skupienia dzieli krotsza odleglosc do tego centroidu niz do pozostalych centroidow. Granice miedzy skupieniami nie sa zawsze jednoznacznie wyznaczane jednaka w przypadku wyboru metryki euklidesowej granice te stanowia linie proste ref{clusters} cite{MOOR}.
begin{figure}[htbp]
centering
includegraphics[width=1.00textwidth]{obrazki/clusters.png}
- caption{Skupienia i granice miedzy nimi}
+ caption{Skupienia i granice miedzy nimi}
label{clusters}
end{figure}
@@ -146,7 +146,7 @@
item heurystycznie, dokonujac wyboru srodkow ciezkosci za pomoca innego algorytmu tak by byly one rozmieszczone w sposob mozliwie rozproszony. Jedna z takich metod polega na maksymalizacji odleglosci od pozostalych centroidow cite{WEIS}. W pierwszym kroku tej metody losowany jest jeden obiekt i on staje sie pierwszym centroidem. W kolejnym kroku szukany jest obiekt najdalej polozony od wczesniej ustalonego srodka ciezkosci. Kolejne kroki polegaja na znalezieniu takiego obiektu, ktorego odleglosc od wybranych centroidow jest maksymalna. Odleglosci sa wyrazone za pomoca wczesniej okreslonej metryki.
end{itemize}
item Dla kazdego obiektu zostaje wyliczona odleglosc do wszystkich centroidow. Odleglosc ta moze byc wyrazona w dowolnej z metryk (np. euklidesowej) i jej wartosc stanowi podstawe do przydzielenia punktu do odpowiedniego skupienia. W algorytmie k-srednich punkt trafia do tej grupy, ktorej centroid znajduje sie najblizej danego punktu. Krok ten konczy sie, gdy kazdy punkt zostanie przydzielony do 1 ze skupien.
-item Zostaja obliczone nowe wspolrzedne centroidow, gdyz w kazdej iteracji jest mozliwe przeniesienie wielu punktow miedzy skupieniami i jest konieczne wyznaczenie nowych srodkow ciezkosci. Nastepnie powtarzamy kroki 2 i 3 az do ustabilizowania sie algorytmu, czyli do momentu, gdy w kolejnych iteracjach zaden z punktow nie bedzie wymagal przeniesienia do innego skupienia.
+item Zostaja obliczone nowe wspolrzedne centroidow, gdyz w kazdej iteracji jest mozliwe przeniesienie wielu punktow miedzy skupieniami i jest konieczne wyznaczenie nowych srodkow ciezkosci. Nastepnie powtarzamy kroki 2 i 3 az do ustabilizowania sie algorytmu, czyli do momentu, gdy w kolejnych iteracjach zaden z punktow nie bedzie wymagal przeniesienia do innego skupienia.
W specyficznych danych moze dojsc do sytuacji, gdy 1 punkt bedzie kolejnych iteracjach „wedrowal” miedzy dwoma skupieniami, gdyz bedzie on lezal na granicy skupien bedac podobny do obiektow w obu grupach. By zapobiec przy niekorzystnych danych zbednych kolejnych krokow algorytmu stosuje sie rozne metody zakonczenia algorytmu:
begin{itemize}
item ograniczenie liczby iteracji - podejscie to przed uruchomieniem algorytmu zaklada ilosc iteracji, w czasie dzialania, ktorych powinien zostac osiagniety zadowalajacy wynik. Przy danych mocno zroznicowanych, w ktorych mozna zaobserwowac tendencje danych do tworzenia grup metoda ta jest skuteczna i przy duzej ilosci danych jest jedna z lepszych metod
@@ -167,7 +167,7 @@
Na wykresie 2D ref{kmeansIteracje} cite{NET1} przedstawia sie obiekty jako punkty lub figury. Osie stanowia wartosc atrybutu w danym obiekcie. Czesto stosuje sie tez kolorowanie obiektow w taki sposob, ze obiekty nalezace do tego samego skupienia maja przypisany ten sam kolor. W kolejnych iteracjach mozna zaobserwowac „wedrowke” punktow miedzy grupami i kolejne fazy tworzenia sie skupien. Takze w odmienny sposob stara sie oznaczyc srodek ciezkosci skupienia, by zaobserwowac, jaka jest srednia wartosc atrybutow w grupie oraz jak bardzo obiekty znajdujace sie w tym samym skupieniu od tej sredniej swoja wartoscia atrybutow odbiegaja.
-subsubsection{AHC}
+subsubsection{AHC}index{AHC}
Algorytm AHC (textit{ang. Agglomerative Hierarchical Clustering}) nalezy do metod grupowania hierarchicznego. W odroznieniu od algorytmu k-srednich na starcie algorytmu nie podajemy liczby skupien. Wsrod metod hierarchicznych rozrozniamy algorytmy aglomeracyjne oraz algorytmy podzialu. Hierarchiczne metody podzialu polegaja na dzieleniu w kolejnych krokach jednej grupy na mniejsze. Algorytmy tego typu sa bardziej zlozone gdyz nie jest proste wyznaczenie, ktore obiekty powinny sie znalexc w jednej z dwoch podgrup. Algorytm AHC nalezy do metod aglomeracyjnych i jest odwrotnoscia algorytmow podzialu. W pierwszym kroku wszystkie obiekty stanowia oddzielne skupienia. „W nastepnym kroku w jedno skupienie polaczona zostaje para najmniej od siebie odmiennych obserwacji. Procedura laczenia par najmniej od siebie odmiennych skupien trwa nadal, co sprawia, ze w kolejnych krokach dzialania metody aglomeracyjnej mniejsze skupienia z kroku wczesniejs
zego sa wlaczone w skupienia wieksze w nastepnym kroku” cite{HAND}. W kolejnych krokach algorytmu liczba skupien sie zmniejsza, a w kazdym ze skupien obiektow jest coraz wiecej. W ostatnim kroku mamy jedno duze skupienie, w ktorym znajduja sie wszystkie obiekty.
@@ -251,6 +251,6 @@
end{figure}
-Kazdy wezel reprezentuje skupienie, a jego galezie, ktore czesto tez sa odrebnymi dendrogramami odpowiadaja dwom mniejszym skupieniom, ktore sie polaczyly. Podobnie jak w przypadku algorytmu k-srednich obiekty bedace w tym samym skupieniu sa podobne, na wykresie wielkosc podobienstwa odzwierciedla nam wysokosc galezi. Im galax jest nizsza tym podobienstwo obiektow laczacych sie jest wieksze. Czesto stosowana praktyka jest stosowanie odciecia drzewa na pewnym poziomie. Na rys.ref{dendogramC}cite{NET2} zaprezentowane jest odciecie na pewnym poziomie reprezentowane przez pozioma linie. Odciecie takie stosowane jest wtedy, gdy zostaja zaobserwowane grupy, ktorych liczba jest dla przeprowadzanego badania jest odpowiednia i widoczna jest roznorodnosc miedzy utworzonymi grupami. Na przedstawionym dendrogramie opisujacym spozywanie danych produktow u osob chorych na bulimie widac, ze osoba przeprowadzajaca analize otrzym
anych danych zastosowala odciecie na poziomie ponizej 0,8 otrzymujac w ten sposob 5 grup oznaczonych przez C1-C5. Algorytmy AHC i k-srednich znajduja zastosowanie w badaniu danych z wielu dziedzin nauki takich jak medycyna, biologia, finanse. Zastosowanie tych algorytmow w przetwarzaniu danych obrazowych opisuje pozycja cite{STAP}, ,a szczegoly dotyczace wykorzystania ich w analizach ekonomicznych opisane sa w ksiazce cite{GRAB}
+Kazdy wezel reprezentuje skupienie, a jego galezie, ktore czesto tez sa odrebnymi dendrogramami odpowiadaja dwom mniejszym skupieniom, ktore sie polaczyly. Podobnie jak w przypadku algorytmu k-srednich obiekty bedace w tym samym skupieniu sa podobne, na wykresie wielkosc podobienstwa odzwierciedla nam wysokosc galezi. Im galax jest nizsza tym podobienstwo obiektow laczacych sie jest wieksze. Czesto stosowana praktyka jest stosowanie odciecia drzewa na pewnym poziomie. Na rys.ref{dendogramC}cite{NET2} zaprezentowane jest odciecie na pewnym poziomie reprezentowane przez pozioma linie. Odciecie takie stosowane jest wtedy, gdy zostaja zaobserwowane grupy, ktorych liczba jest dla przeprowadzanego badania jest odpowiednia i widoczna jest roznorodnosc miedzy utworzonymi grupami. Na przedstawionym dendrogramie opisujacym spozywanie danych produktow u osob chorych na bulimie widac, ze osoba przeprowadzajaca analize otrzy
manych danych zastosowala odciecie na poziomie ponizej 0,8 otrzymujac w ten sposob 5 grup oznaczonych przez C1-C5. Algorytmy AHC i k-srednich znajduja zastosowanie w badaniu danych z wielu dziedzin nauki takich jak medycyna, biologia, finanse. Zastosowanie tych algorytmow w przetwarzaniu danych obrazowych opisuje pozycja cite{STAP}, ,a szczegoly dotyczace wykorzystania ich w analizach ekonomicznych opisane sa w ksiazce cite{GRAB}
Modified: paperwork/praca/src/rozdzialy/chapter-04.tex
=========================================================================== ===
--- paperwork/praca/src/rozdzialy/chapter-04.tex (original)
+++ paperwork/praca/src/rozdzialy/chapter-04.tex Wed Feb 14 00:58:04 2007
@@ -7,29 +7,29 @@
textit{Specyfikacja wymagan} index{specyfikacja wymagan} powstala w marcu 2006 r. jako wynik rozmow textit{managerow} index{manager} przedsiewziecia z textit{klientami} index{klient}. Pelna jej tresc, ktora wowczas zostala uzgodniona, jest zawarta w dokumencie
dostepnym w zalaczniku. Nalezy dodac, ze w czasie realizacji projektu tresc dokumentu SRS zostala
nieznacznie modyfikowana, co bylo wynikiem pewnych ograniczen projektowo-implementacyjnych.
-W ponizszych podrozdzialach omowiono i skomentowano podstawowe wymagania funkcjonalne zawarte
+W ponizszych podrozdzialach omowiono i skomentowano podstawowe wymagania funkcjonalne zawarte
w cytowanym dokumencie.
-Wedlug klienta Clasterix mial byc aplikacja lokalna, index{aplikacja lokalna} czyli programem dzialajacym samodzielnie na pojedynczym
-komputerze klasy PC. Wszystkie operacje mialy byc wykonywane na danych wczytanych z pewnego pliku
-dostarczonego przez uzytkownika. Miala istniec mozliwosc zapisania do podanego pliku wszelkich wynikow
+Wedlug klienta Clasterix mial byc aplikacja lokalna, index{aplikacja lokalna} czyli programem dzialajacym samodzielnie na pojedynczym
+komputerze klasy PC. Wszystkie operacje mialy byc wykonywane na danych wczytanych z pewnego pliku
+dostarczonego przez uzytkownika. Miala istniec mozliwosc zapisania do podanego pliku wszelkich wynikow
obliczen i ich wizualizacji.
section{Wczytywanie danych}
label{podrozdzial:WczytywanieDanych}
-Zgodnie z wymaganiami klienta Clasterix, jako aplikacja lokalna, ma posiadac mozliwosc wczytywania
-danych wejsciowych jedynie z zewnetrznego pliku wejsciowego. W zwiazku z rozna specyfika
-algorytmow textit{plaskich} oraz textit{aglomeracyjnych} index{algorytmy plaskie} index{algorytmy aglomeracyjne} pliki wejsciowe maja miec dla kazdego z nich nieco rozna postac. Algorytm textit{k-srednich}, ktory generuje skupienia plaskie,
-bedzie poslugiwal sie plikiem wejsciowym w postaci textit{tablicy obiekty-atrybuty} i tylko taka
+Zgodnie z wymaganiami klienta Clasterix, jako aplikacja lokalna, ma posiadac mozliwosc wczytywania
+danych wejsciowych jedynie z zewnetrznego pliku wejsciowego. W zwiazku z rozna specyfika
+algorytmow textit{plaskich} oraz textit{aglomeracyjnych} index{algorytmy plaskie} index{algorytmy aglomeracyjne} pliki wejsciowe maja miec dla kazdego z nich nieco rozna postac. Algorytm textit{k-srednich}, ktory generuje skupienia plaskie,
+bedzie poslugiwal sie plikiem wejsciowym w postaci textit{tablicy obiekty-atrybuty} i tylko taka
postac danych jest dla tego algorytmu akceptowalna. Algorytm textit{AHC}, z rodziny algorytmow aglomeracyjnych,
bedzie dopuszczal wczytywanie danych w dwoch postaciach. Jedna z nich bedzie textit{macierz odleglosci} pomiedzy
wszystkimi obiektami, ktore beda podlegac procesowi grupowania za pomoca algorytmu AHC. Druga postac
pliku wejsciowego, ktora moze poslugiwac sie ten algorytm to, podobnie jak w k-srednich, textit{tablica
-obiekty-atrybuty}.
+obiekty-atrybuty}.
-Plik w postaci textit{tablicy obiekty-atrybuty} bedzie reprezentowac wszystkie wartosci atrybutow kazdego z obiektow
-w tablicy. Dopuszczalna jest dowolna liczba obiektow oraz dowolna liczba atrybutow opisujacych kazdy
+Plik w postaci textit{tablicy obiekty-atrybuty} bedzie reprezentowac wszystkie wartosci atrybutow kazdego z obiektow
+w tablicy. Dopuszczalna jest dowolna liczba obiektow oraz dowolna liczba atrybutow opisujacych kazdy
z tych obiektow. W pliku wejsciowym beda akceptowalne zarowno atrybuty textit{jakosciowe} jak i textit{numeryczne}. Po etapie
textit{selekcji atrybutow} beda musialy pozostac jednak tylko dane textit{numerycze}, poniewaz tylko na takich wartosciach
beda mogly zostac wykonane poprawne obliczenia algorytmow. Powyzej przedstawiona zostala przykladowa textit{tablica
@@ -52,8 +52,8 @@
end{table}
-textit{Macierz odleglosci}, natomiast bedzie miec postac tablicy reprezentujacej nazwy wszystkich obiektow
-(w wierszach i kolumnach) oraz odleglosci pomiedzy nimi. Na temat wczytywania danych z plikow wejsciowych
+textit{Macierz odleglosci}, natomiast bedzie miec postac tablicy reprezentujacej nazwy wszystkich obiektow
+(w wierszach i kolumnach) oraz odleglosci pomiedzy nimi. Na temat wczytywania danych z plikow wejsciowych
do wewnetrznych struktur programowych oraz ich wizualizacji czytelnik bedzie mogl przeczytac w nastepnym podrozdziale.
Ponizej przedstawiona zostala przykladowa textit{macierz odleglosci} pomiedzy obiektami.
@@ -74,28 +74,28 @@
end{table}
-Dane wejsciowe dla aplikacji Clasterix moga byc wczytywane w trzech roznych formatach: textit{CSV} index{CSV}, textit{XML} index{XML}, textit{ARFF} index{ARFF}. Wszystkie te formaty beda umozliwiac reprezentacje pliku wejciowego w postaci textit{tablicy obiekty-atrybuty}
+Dane wejsciowe dla aplikacji Clasterix moga byc wczytywane w trzech roznych formatach: textit{CSV} index{CSV}, textit{XML} index{XML}, textit{ARFF} index{ARFF}. Wszystkie te formaty beda umozliwiac reprezentacje pliku wejciowego w postaci textit{tablicy obiekty-atrybuty}
lub textit{macierzy odleglosci}. Gdy aplikacja zakonczy przetwarzanie, wyniki dzialania algorytmow moga zostac zapisane
do tych samych formatow plikow.
Podczas wczytywania system ma sprawdzac poprawnosc danych – zwlaszcza zgodnosc z zadanym formatem tekstowym oraz
-raportowac typ i miejsce wystapienia bledu, jesli wystapia niepoprawnosci podczas parsowania. Odpowiedzialnosc za
+raportowac typ i miejsce wystapienia bledu, jesli wystapia niepoprawnosci podczas parsowania. Odpowiedzialnosc za
poprawienie bledow lezy po stronie uzytkownika. Dostepnosc funkcji w dalszej czesci programu zalezy od rodzaju wczytanych danych.
section{Wizualizacja i opracowanie danych wejsciowych}
label{podrozdzial:WizualizacjaiOpracowanieDanychWejsciowych}
Po wczytaniu pliku wejsciowego, niezaleznie od jego formatu, dane trafia do wewnetrznych struktur programowych.
-Jesli plik bedzie mial postac textit{tablicy obiekty-atrybuty} to wowczas dane zostana wczytane do struktury o analogicznej nazwie, ktora
-w sensie implementacyjnym bedzie Mapa. Kluczami w tej strukturze beda nazwy wczytanych obiektow, dzieki ktorym mozliwe
-bedzie pobranie kolejnej struktury ze wszystkimi wartosciami atrybutow dotyczacymi obiektu o danej nazwie.
+Jesli plik bedzie mial postac textit{tablicy obiekty-atrybuty} to wowczas dane zostana wczytane do struktury o analogicznej nazwie, ktora
+w sensie implementacyjnym bedzie Mapa. Kluczami w tej strukturze beda nazwy wczytanych obiektow, dzieki ktorym mozliwe
+bedzie pobranie kolejnej struktury ze wszystkimi wartosciami atrybutow dotyczacymi obiektu o danej nazwie.
Jesli natomiast, plik bedzie mial postac macierzy odleglosci to zostanie wczytany do dwuwymiarowej tablicy w niezmienionej postaci.
Wczytane dane (znajdujace sie juz w strukturach aplikacji) moga byc wizualizowane w rozny sposob, zalezny od algorytmu.
textit{Tablica obiekty-atrybuty} bedzie wizualizowana w postaci tabeli, w ktorej pierwszy wiersz wypelnia nazwy atrybutow obiektow, natomiast
-w pierszej kolumnie beda widoczne nazwy wszystkich wczytanych obiektow. Wewnetrzna czesc tabeli wypelniaja odpowiednie wartosci
-atrybutow dla kazdego obiektu. Jak widac textit{tablica obiekty-atrybuty} po wizualizacji w aplikacji bedzi miec analogiczna postac
-do tablicy przed wczytaniem. Nalezy zaznaczyc, ze mimo zastosowania Map do przechowywania wartosci i nazw atrybutow oraz
+w pierszej kolumnie beda widoczne nazwy wszystkich wczytanych obiektow. Wewnetrzna czesc tabeli wypelniaja odpowiednie wartosci
+atrybutow dla kazdego obiektu. Jak widac textit{tablica obiekty-atrybuty} po wizualizacji w aplikacji bedzi miec analogiczna postac
+do tablicy przed wczytaniem. Nalezy zaznaczyc, ze mimo zastosowania Map do przechowywania wartosci i nazw atrybutow oraz
nazw obiektow ich kolejnosc w momencie wizualizacji bedzie zgodna z kolejnoscia w pliku wejsciowym.
Tabela reprezentujaca textit{tablice obiekty-atrybuty} bedzie umozliwiac sortowanie index{sortowanie} wszystkich obiektow wedlug wybranego atrybutu. Porzadkowanie kolejnosci bedzie odbywac sie po kliknieciu na nazwe atrybutu znajdujaca sie w naglowku tabeli (rosnaco lub malejaco). System ma umozliwiac takze textit{eksport tabeli obiekty-atrybuty do macierzy obleglosci}, wykorzystujac przy tym jedna trzech metryk odleglosci: textit{euklidesowa, miejska lub $L_p$}, index{metryka euklidesowa} index{metryka miejska} index{metryka $L_p$} do przeliczenia odleglosci pomiedzy obiektami.
@@ -105,7 +105,7 @@
section{Realizacja obliczen}
label{podrozdzial:RealizacjaObliczen}
-Zgodnie z ustaleniami pomiedzy klientem a managerami projektu po wczytaniu pliku wejsciowego obliczenia moga
+Zgodnie z ustaleniami pomiedzy klientem a managerami projektu po wczytaniu pliku wejsciowego obliczenia moga
zasadniczo przebiegac wedlug dwoch sciezek. Uzytkownik ma mozliwosc textit{analizy skupien} index{analiza skupien} z wykorzystaniem algorytmu AHC lub algorytmu k-srednich.
W przypadku wyboru obliczen za pomoca algorytmu k-srednich beda istniec szerokie mozliwosci jego parametryzacji
@@ -118,9 +118,9 @@
wyboru trzy rodzaje metryk pomiaru odleglosci: textit{euklidesowa, miejska oraz $L_p$}. Definicje wymienionych miar znajduja sie w podrozdziale ~ref{podrozdzial:PodstawyMiarOdleglosci}.
Ostatni parametr jaki uzytkownik powinien podac przed uruchomieniem algorytmu to textit{warunek stopu}.index{warunek stopu} Algorytm k-srednich ma zatrzymac swoje dzialanie po wykonianiu okreslonej textit{liczby iteracji} index{liczba iteracji} badx tez po zadanym przez uzytkownika textit{czasie} index{zadany czas}(podanym w sekundach).
-Bedzie rowniez istniec mozliwosc generacji skupien za pomoca algorytmu AHC, ktory wymaga mniejszej liczby parametrow niz k-srednich.
-Jesli dane zostana wczytane z pliku zawierajacego tablice obiekty-atrybuty to wowczas rowniez trzeba bedzie wybrac metryke przeliczania
-odleglosci pomiedzy wszystkimi obiektami. Dostepne beda te same rodzaje metryk pomiaru odleglosci pomiedzy obiektami co w algorytmie
+Bedzie rowniez istniec mozliwosc generacji skupien za pomoca algorytmu AHC, ktory wymaga mniejszej liczby parametrow niz k-srednich.
+Jesli dane zostana wczytane z pliku zawierajacego tablice obiekty-atrybuty to wowczas rowniez trzeba bedzie wybrac metryke przeliczania
+odleglosci pomiedzy wszystkimi obiektami. Dostepne beda te same rodzaje metryk pomiaru odleglosci pomiedzy obiektami co w algorytmie
k-srednich. W nastepnym kroku nalezy takze podac sposob laczenia skupien, ktorym posluzy sie algorytm AHC podczas generacji rozwiazania.
System udostepniac bedzie piec takich metod: textit{najblizszego sasiada}, textit{najdalszego sasiada}, textit{srodka ciezkosci}, textit{sredniej grupowej} i textit{Warda}. Kazda z tych
metod charakteryzuje sie inna specyfika, ale ich definicje nie beda tutaj przytaczane. Jesli czytelnik jest zainteresowany to pelne ich
@@ -130,19 +130,19 @@
label{WizualizacjaDrzewaAglomeracyjengo}
Graficzna reprezentacja zakonczenia dzialania algorytmu AHC jest textit{drzewo aglomeracyjne} (tzw. textit{dendrogram}). Obrazuje ono
-kolejne etapy tworzenia textit{skupien} przez ten algorytm, nazywane jest rowniez textit{wykresem kolankowym}.index{wykres kolankowy}
+kolejne etapy tworzenia textit{skupien} przez ten algorytm, nazywane jest rowniez textit{wykresem kolankowym}.index{wykres kolankowy}
Wykres posiada szereg dodatkowych funkcji, ktore umozliwiaja interakcje z uzytkownikiem.
-Uzytkownik ma mozliwosc wielokrotnej generacji wizualizacji dendroramu zmieniajac przy tym jej parametry. Drzewo przedstawia obiekty
+Uzytkownik ma mozliwosc wielokrotnej generacji wizualizacji dendroramu zmieniajac przy tym jej parametry. Drzewo przedstawia obiekty
za pomoca lisci oraz textit{wezlow sztucznych} index{wezly sztuczne} (obrazuja grupy obiektow po zwinieciu nizszych poziomow drzewa). Jest ono szczegolowo opisane poprzez skale na osi (widoczna z boku drzewa linijka ze skala odleglosci). Wezly i liscie sa ze soba polaczone dzieki czemu uzytkownik moze wnioskowac na temat istnienia okreslonych textit{skupisk obiektow}.
-Kazdy obiekt-lisc na textit{denrogramie} posiada swoja etykiete, ktora jednoznacznie okresla jego nazwe, a wezly wewnetrzne wyswietlaja
-listy etykiet obiektow wchodzacych w sklad texti{grup}, ktore tworza. W kazdym wexle dostepna jest dla uzytkownika opcja zwijania i rozwijania
+Kazdy obiekt-lisc na textit{denrogramie} posiada swoja etykiete, ktora jednoznacznie okresla jego nazwe, a wezly wewnetrzne wyswietlaja
+listy etykiet obiektow wchodzacych w sklad texti{grup}, ktore tworza. W kazdym wexle dostepna jest dla uzytkownika opcja zwijania i rozwijania
textit{poddrzewa},index{poddrzewo} ktorego jest textit{korzeniem}.index{korzen} Po zwinieciu poddrzewa nastepuje wyswietlenie sztucznego liscia zawierajacego grupe obiektow, a zwiniete textit{poddrzewo} moze zawsze powrocic do stanu pierwotnego po kliknieciu na sztuczny lisc.
Z kazdym obiektem (lisciem) zwiazany jest zbior wartosci atrybutow. textit{Drzewo aglomaracyjne} oferuje uzytkownikowi opcje prezentacji
-okna z nazwami i wartosciami wszystkich atrybutow danego obiektu. Wyswietlenie takiego okna mozliwe jest po kliknieciu na etykiete
-obiektu-liscia. Dendrogram udostepnia uzytkownikowi rowniez opcje textit{sortowania lisci} wg atrybutow, ale tylko w przypadku gdy dane
+okna z nazwami i wartosciami wszystkich atrybutow danego obiektu. Wyswietlenie takiego okna mozliwe jest po kliknieciu na etykiete
+obiektu-liscia. Dendrogram udostepnia uzytkownikowi rowniez opcje textit{sortowania lisci} wg atrybutow, ale tylko w przypadku gdy dane
zostaly wczytane z pliku w postaci textit{tablicy obiekty-atrybuty} a nie textit{macierzy odleglosci}. Wybor atrybutu, wzgledem ktorego zostanie wykonane sortowanie nalezy do uzytkownika. Aplikacja sortuje dane textit{leksykograficznie} w przypadku literalow lub textit{numerycznie} w przypadku atrybutow liczbowych. \
Ponizsza ilustracja w przyblizeniu przedstawia drzewo aglomeracyjne.
@@ -154,7 +154,7 @@
label{rys:DrzewoAglomeracyjne}
end{figure}
-Uzytkownik ma rowiez mozliwosc wykonywania pewnych zadan na bezposrednio wybranych przez siebie obiektach-lisciach. Do takich zadan
+Uzytkownik ma rowiez mozliwosc wykonywania pewnych zadan na bezposrednio wybranych przez siebie obiektach-lisciach. Do takich zadan
nalezy m. in. textit{porownywanie obiektow}.index{porownywanie obiektow} Po zaznaczeniu dwoch wybranych obiektow podswietlania jest droga do najblizszego dla obu lisci wezla na wyzszym poziomie (droga do spotkania). Kolejna uzyteczna funkcjonalnosc wykresu do proste wyszukiwanie obiektu polegajace na jego podswietleniu na wykresie. Uzytkownik wprowadza nazwe (etykiete) wyszukiwanego obiektu badx tez wybiera ja z listy wybieranej po czym lisc zostaje wyszukany.
textit{Drzewo aglomeracyjne} moze byc powiekszane lub pomniejszane wzgledem rozmiaru okna, w ktorym jest wizualizowane bez koniecznosci generowania nowego wykresu. Po zmianie wielkosci textit{dendrogramu} moze on zostac na powrot dopasowany do wielkosci okna. Uzytkownik moze zazadac ogladania textit{poddrzewa}, czyli wybrac wezel i stworzyc nowe okno z drzewem, ktorego textit{korzeniem} bedzie wybrany wezel. Nowo utworzone okno ma wszystkie mozliwosci zapewnione w oryginalnym oknie.
@@ -166,21 +166,21 @@
zapewniaja interakcje z uzytkownikiem. Na obu osiach wykresu widoczne beda wartosci (i nazwy) wybranych przez uzytkownika atrybutow, co
ma umozliwiac okreslenie polozenia obiektu na wykresie. textit{Skupienia} na wykresie beda od siebie wyraxnie odroznione (zaznaczone roznymi kolorami).
-Kazdy z obiektow bedzie opisany za pomoca pewnej liczby atrybutow. Na kazdej z osi ma byc mozliwa zmiana wybranego atrybutu, wzgledem ktorego
+Kazdy z obiektow bedzie opisany za pomoca pewnej liczby atrybutow. Na kazdej z osi ma byc mozliwa zmiana wybranego atrybutu, wzgledem ktorego
obiekty na wykresie beda prezentowane. Po dokonaniu zmiany atrybutu na wybranej osi wykresu obiekty beda odrysowywane na biezaco.
-Po jednokrotnym kliknieciu na wybrany obiekt na wykresie oraz wybraniu odpowiedniej opcji z menu uzytkownik ma miec mozliwosc uzyskania
+Po jednokrotnym kliknieciu na wybrany obiekt na wykresie oraz wybraniu odpowiedniej opcji z menu uzytkownik ma miec mozliwosc uzyskania
informacji na temat tego obiektu. Wykonanie takiej akcji bedzie powodowac wyswietlenie okna zawierajacego nazwy wszystkich atrybutow oraz ich wartosci charakterystycznych dla danego obiektu.
textit{Dwuwymiarowy wykres} dla algorytmu k-srednich, podobnie jak textit{dendrogram} dla AHC, ma posiadac funkcje wyszukiwania wybranego przez uzytkowanika obiektu. Po wprowadzeniu nazwy (etykiety) lub wybraniu jej z listy poszukiwany punkt ma zostac zaznaczony (podswietlony) na wykresie. Dzieki temu uzytkownik ma miec mozliwosc szybkiego odnalezienia textit{skupienia}, w ktorym znajduje sie wyszukany obiekt. Poza tym bedzie zdobyc informacje na temat innych obiektow nalezacych do tej textit{grupy}.
Rowniez analogiczna funkcjonalnoscia do textit{drzewa aglomeracyjnego} bedzie porownywanie dwoch wybranych przez uzytkownika obiektow. Po ich zaznaczniu na wykresie i wybraniu odpowiedniej opcji wyswietlone zostana dwie tabele zawierajace nazwy(w naglowkach) i wartosci wszystkich atrybutow obu obiektow. Tabele wyswietlane beda horyzontalnie, dokladnie jedna pod druga, tak aby uzytkownik mogl swobodnie dokonac porownania wybranych obiektow. Mozliwa bedzie takze dynamiczna zmiana porownywanych obiektow poprzez wybor innych nazw obiektow z komponentow znajdujacych sie bezposrednio pod tabelami. Wowczas wartosci w tabelach zostana na biezaco odswiezone, a uzytkownik bedzie mogl porownac wybrane obiekty.
-textit{Wykres dwuwymiarowy} moze byc powiekszany lub pomniejszany wzgledem rozmiaru panelu, w ktorym bedzie wizualizowany bez koniecznosci generowania nowego wykresu. Wszystkie opisane funkcje sa przy tym zachowane. Wynik dzialania algorytmu k-srednich moze zostac zapisany do kliku typow plikow graficznych. Aplikacja umozliwia zrzut wykresu do nastepujacych formatow plikow grafiki rastrowej: textit{PNG},index{PNG} textit{GIF},index{GIF} textit{JPG}index{JPG}.
+textit{Wykres dwuwymiarowy} moze byc powiekszany lub pomniejszany wzgledem rozmiaru panelu, w ktorym bedzie wizualizowany bez koniecznosci generowania nowego wykresu. Wszystkie opisane funkcje sa przy tym zachowane. Wynik dzialania algorytmu k-srednich moze zostac zapisany do kliku typow plikow graficznych. Aplikacja umozliwia zrzut wykresu do nastepujacych formatow plikow grafiki rastrowej: textit{PNG},index{PNG} textit{GIF},index{GIF} textit{JPG}index{JPG}.
-section{Raportowanie - wynik dzialania algorytmu k-means}
+section{Raportowanie - wynik dzialania algorytmu k-srednich}
label{podrozdzial:RaportowanieWynikDzialaniaAlgorytmuKmeans}
-Aplikacja ma oferowac uzytkownikowi prezentacje wynikow dzialania algorytmu k-srednich w postaci kilku raportow koncowych. Najwazniejszym
+Aplikacja ma oferowac uzytkownikowi prezentacje wynikow dzialania algorytmu k-srednich w postaci kilku raportow koncowych. Najwazniejszym
z nich bedzie textit{tabelaryczna reprezentacja skupien}, a inne to: raport textit{odleglosci pomiedzy centroidami}, textit{statystyki opisowe dla wybranych grup obiektow} oraz dla textit{tablicy obiekty-atrybuty}. Mozliwe bedzie rowniez wyswietlenie tabeli zawierajacej textit{oryginalne wartosci atrybutow obiektow}. Wszystkie dostepne w aplikacji raporty tabelaryczne beda nieedytowalne i maja sluzyc jedynie do wyswietlania pewnych informacji.
textit{Tabelaryczna reprezentacja skupien} bedzie glownym raportem wynikowym algorytmu k-srednich. Ma on miec postac tabeli, w ktorej dla kazdej z grup przeznaczona bedzie osobna zakladka tak, aby skupienia byly od siebie precyzyjnie oddzielone. Pierwszy wiersz kazdej grupy obiektow ma stanowic centroid (posiada sztuczna etykiete) oraz jego wartosci atrybutow w kolejnych kolumnach tabeli. Kolejne wiersze zakladki (skupiska) maja skladac sie z nazw obiektow oraz ich wynikowych wartosci atrybutow.
@@ -191,8 +191,8 @@
Po wykonaniu algorytmu k-srednich mozliwy bedzie podglad pod textit{dane oryginalne}. Podobnie jak poprzednie raporty, ten rowniez ma miec postac tabelaryczna, a dane maja takie wartosci jak zaraz po wczytaniu z pliku wejsciowego. Okno z danymi oryginalnymi moze byc uzytkownikowi przydatne do porownania wartosci atrybutow obiektow przed i po procesie grupowania. Mozliwe jest takze wyswietlenie okna z tabela zawierajaca aktualne wartosci znajdujace sie w tabeli obiekty-atrybuty. Beda to wartosci po ewentualnych przeksztalceniach na etapie selekcji (textit{standaryzacja}, textit{normalizacja}, textit{pozostawienie}, textit{pominiecie} atrybutu) oraz po wykonaniu na nich algorytmu.
-Raporty wynikowe z dzialania algorytmu k-srednich moga zostac wyeksportowane do wielu, zewnetrznych formatow plikow. Mozliwe bedzie zapisanie
-powyzszych tabel do takich formatow jak: textit{PDF},index{PDF} textit{XML}, textit{DOC},index{DOC} textit{RTF},index{RTF} textit{XLS}, index{XLS}.
+Raporty wynikowe z dzialania algorytmu k-srednich moga zostac wyeksportowane do wielu, zewnetrznych formatow plikow. Mozliwe bedzie zapisanie
+powyzszych tabel do takich formatow jak: textit{PDF},index{PDF} textit{XML}, textit{DOC},index{DOC} textit{RTF},index{RTF} textit{XLS}, index{XLS}.
section{Raportowanie - wynik dzialania algorytmu AHC}
label{podrozdzial:RaportowanieWynikDzialaniaAlgorytmuAHC}
@@ -205,5 +205,5 @@
textit{Tabela historii aglomeracji} ma umozliwiac obserwacje przebiegu powstawania textit{skupisk obiektow} podczas dzialania algorytmu.
Bedzie sie ona skladac z pieciu kolumn oznaczajacych kolejno: numer iteracji algorytmu, pierwsza grupe obiektow, druga grupe, wysokosc ich laczenia oraz obiekty wchodzace w sklad skupiska po polaczeniu grup. W tym raporcie ma byc mozliwe jest wyswietlanie zarowno identyfikatorow obiektow badx tez ich pelnych nazw.
-Raporty wynikowe z dzialania algorytmu AHC moga zostac wyeksportowane do wielu, zewnetrznych formatow plikow. Mozliwe bedzie zapisanie
-tabeli historii aglomeracji do takich formatow jak: textit{PDF},index{PDF} textit{XML}, textit{DOC},index{DOC} textit{RTF},index{RTF} textit{XLS}, index{XLS}.
+Raporty wynikowe z dzialania algorytmu AHC moga zostac wyeksportowane do wielu, zewnetrznych formatow plikow. Mozliwe bedzie zapisanie
+tabeli historii aglomeracji do takich formatow jak: textit{PDF},index{PDF} textit{XML}, textit{DOC},index{DOC} textit{RTF},index{RTF} textit{XLS}, index{XLS}.
Modified: paperwork/praca/src/rozdzialy/chapter-05.tex
=========================================================================== ===
--- paperwork/praca/src/rozdzialy/chapter-05.tex (original)
+++ paperwork/praca/src/rozdzialy/chapter-05.tex Wed Feb 14 00:58:04 2007
@@ -6,21 +6,28 @@
Zdecydowalo to miedzy innymi o zastosowaniu przyjaznego interfejsu uzytkownika,
latwo odczytywalnej nawigacji przez kolejne kroki obliczen algorytmow oraz czytelnych i
interakcyjnych form wizualizacji wynikow ich dzialania.
-Jako jezyk programowania wybrano Jave w wydaniu J2SE 5.0 (1.5.0).
+Jako jezyk programowania wybrano Jave w wydaniu J2SE~5.0~(1.5.0).
Jest to obiektowy jezyk programowania stworzony przez firme Sun Microsystems.
Zaleta programow w Javie jest to, ze kompilowane sa do postaci wykonywanej przez maszyne wirtualna,
co pozwala uruchamiac programy napisane dla roznych systemow operacyjnych bez zadnych zmian lub
-tylko z niewielkimi modyfikacjami. Zastosowanie Javy mialo decydujacy wplyw na sposob realizacji projektu.
+tylko z niewielkimi modyfikacjami.
+
+Zastosowanie Javy mialo decydujacy wplyw na sposob realizacji projektu.
Z projektowaniem oprogramowania obiektowego wiazala sie miedzy innymi mozliwosc zastosowania takich usprawnien,
-jak wzorce projektowe (ang. design patterns) czy jezyk modelowania (UMLindex{UML}).
+jak wzorce projektowe (textit{ang. design patterns}), testy jednostkowe czy jezyk
+modelowania (UMLindex{UML}).
Java to obecnie bardzo popularny jezyk, wiele bibliotek i narzedzi
udostepnianych jest na zasadach wolnego oprogramowania, bogactwo materialow czy przykladowych
fragmentow kodu mozna odnalexc w Internecie. Oprocz powyzszych wlasciwosci jezyka, o wyborze
-zadecydowalo rowniez doswiadczenie akademickie odnosnie programowania w Javie zarowno menedzerow jak i programistow.
+zadecydowalo rowniez doswiadczenie akademickie odnosnie programowania w Javie
+zarowno menedzerow jak i programistow.
+
Do stworzenia interfejsu graficznego programu posluzono sie biblioteka graficzna Swingindex{Swing}.
Jest to podstawowy interfejs Javy charakteryzujacy sie duzym wyborem komponentow graficznych,
przejrzysta implementacja oraz elastycznoscia. „Lekkosc” komponentow Swinga oznacza, ze interfejs
-powstaly przy uzyciu Swinga nie uzywa elementow GUIindex{GUI} systemu operacyjnego a aplikacja wyglada i
+powstaly przy uzyciu Swinga nie uzywa elementow GUIindex{GUI} (graficznego
+interfejsu uzytkownika textit{ang. graphical user interface}) systemu operacyjnego a aplikacja
+wyglada i
zachowuje sie tak samo na roznych platformach. Inne biblioteki i klasy wykorzystane w aplikacji
zostaly omowione w podrozdziale~ref{podrozdzial:TechnologieProgramistyczne}.
section{Glowne moduly programu}
@@ -57,13 +64,14 @@
jednej z nich. W trakcie obliczen przeksztalcane odleglosci miedzy grupami oraz
inne dane z nimi zwiazane przechowywane sa w strukturach klasy textit{DistMatrix}.
Tam rowniez nastepuje przeksztalcanie macierzy w kolejnych iteracjach.
+
Zapisywaniem wynikow dzialania algorytmu zajmuje sie klasa textit{Tree}, zarzadzajaca tworzeniem
-wynikowego drzewa. Drzewo budowane jest z lisci oraz wezlow. Liscie (klasa textit{TreeLeaf})
+wynikowego drzewa. Drzewo budowane jest z lisciindex{lisc} oraz wezlowindex{wezel}. Liscie (klasa textit{TreeLeaf})
stanowia obiekty wejsciowe algorytmu, jeszcze nie zagregowane. Wezly (klasa textit{TreeNode})
opisuja laczenie potomnych obiektow drzewa w nowa grupe, ich podstawowym atrybutem
jest wysokosc dla ktorej nastapilo to polaczenie. Wezel opisywac moze laczenie par lisci,
par wezlow badx lisci z wezlami. W celu efektywniejszej implementacji zastosowano wiec
-klase abstrakcyjna AbstractTreeObject po ktorej dziedzicza klasy textit{TreeLeaf} i textit{TreeNode}.
+klase abstrakcyjna textit{AbstractTreeObject}, po ktorej dziedzicza klasy textit{TreeLeaf} i textit{TreeNode}.
Dodatkowa klasa textit{ClusterPair} zajmuje sie porzadkowaniem par wezlow podlegajacych
grupowaniu i zastepuje pojedyncze wystepowanie wezlow jako argumentow roznych
metod.
@@ -77,8 +85,8 @@
subsubsection{Modul obliczen algorytmu K-srednich}label{podrozdzial:KM}index{Modul obliczen
algorytmu K-srednich}
Modul obliczen algorytmu k-srednich (pakiet textit{pl.go.clasterix.algorithms.kmeans})
-Wykonuje obliczenia algorytmu k-srednich.
-Podstawowe obliczenia algorytmu wykonywane sa w klasie textit{DistanceAnalysys}.
+realizuje obliczenia algorytmu k-srednich.
+Glowna petla obliczen wykonywana jest w klasie textit{DistanceAnalysys}.
Obliczanie na potrzeby algorytmu odleglosci w jednej z trzech przyjetych metryk
%(patrz rozdzial 4)
realizuja klasy implementujace interfejs textit{Distances}.
@@ -93,7 +101,7 @@
begin{figure}[h]
centering
includegraphics[width=13 cm]{obrazki/km.png}
- caption{Uproszczony diagram klas modulu obliczen algorytmu K-srednich}
+ caption{Uproszczony diagram klas modulu obliczen algorytmu k-srednich}
label{km_uml}
end{figure}
subsection{Modul graficznego interfejsu uzytkownika (pakiet
@@ -107,7 +115,7 @@
subsubsection{Modul kreatora (pakiet
pl.go.clasterix.gui.wizard)}label{podrozdzial:kreator}index{kreator}
Klasy tego modulu sa odpowiedzialne za wyglad i organizacje ramki
-kreatora oraz jego paneli skladowych ,
+kreatora oraz jego paneli skladowych,
ktore odpowiadaja kolejnym krokom realizacji algorytmow.
section{Technologie programistyczne}label{podrozdzial:TechnologieProgramistyczne}index{Techno logie programistyczne}
Wymagania funkcjonalne, niefunkcjonalne oraz wybor jezyka Java
@@ -129,7 +137,7 @@
W bibliotece sa zdefiniowane takie urzadzenia jak konsola, plik, zdalny serwer i inne.
Pakiet textit{log4j.org} dystrybuowany jest na licencji IBM Public License i
dostepny
-w ramach inicjatywy Open Source. Biblioteka nalezy do projektu Apache Logging Services,
+w ramach inicjatywy Open Source. Biblioteka nalezy do projektu Apache Logging Servicesindex{Apache Logging Services},
ktorego zalozeniem jest udostepniane darmowego, uniwersalnego serwisu do wyszukiwania i
naprawiania bledow aplikacji i jest dostepna pod adresem url{http://logging.apache.org/index.html}.
subsection{JAXB}label{podrozdzial:JAXB}index{JAXB}
@@ -137,8 +145,11 @@
Biblioteka posiada kompilator schematow (lub dtd),
ktory z tych schematow generuje klasy - dla kazdego elementu XML powstaje jedna klasa.
Podstawowe operacje jakie udostepnia JAXB to: zamiana pliku XML-owego na obiekty Javy,
-modyfikacja dokumentu XML-owego (na kopii z pamieci), zamiana obiektow Javy na dokument XML-owy oraz walidacja -
-sprawdzenie poprawnosci z DTDindex{DTD} (takze dokonywane na dokumencie w pamieci).
+modyfikacja dokumentu XML (na kopii z pamieci), zamiana obiektow Javy na
+dokument XML oraz walidacja -
+sprawdzenie poprawnosci z DTDindex{DTD} (definicja typu dokumentu,
+textit{ang. Document Type Definition}) - takze
+dokonywane na dokumencie w pamieci.
Biblioteka zostala wykorzystana do zapisu i odczytu danych zapisanych w formacie XML.
Biblioteka JAXB dostepna jest w ramach inicjatywy Open Source na stronie projektu: url{https://jaxb.dev.java.net/}.
subsection{JFreeReport}label{podrozdzial:JFreeReport}index{JFreeReport}
@@ -146,7 +157,7 @@
dzialania algorytmow w uniwersalnych i czytelnych formatach, mozliwosci takie udostepnia biblioteka JFreeReport.
Biblioteka ta jest udostepniana na licencji Open Source przez konsorcjum
Pentaho na stronie url{http://reporting.pentaho.org/}.
-Dane do raportu pobiera ona z obiektow implementujacych interfejs TableModel.
+Dane do raportu pobiera ona z obiektow implementujacych interfejs textit{TableModel}.
Ten wchodzacy w sklad bibliotek Swinga interfejs sluzy do przedstawiania danych w postaci dwuwymiarowej
tabeli i zostal przyjety jako podstawowa forma prezentacji wynikow kolejnych etapow dzialania aplikacji.
Dodatkowo wymagane jest stworzenie pliku w formacie XML, definiujacego wyglad i zawartosc takiego raportu.
@@ -156,13 +167,15 @@
ResourceBundle)}label{podrozdzial:TMX}index{TMXResourceBundle (Translation
Memory eXchange ResourceBundle)}
TMXResourceBundle (Translation Memory eXchange ResourceBundle)
-Dziedziczy po klasie jezyka Javy – ResourceBundle.
+Dziedziczy po klasie jezyka Javy – textit{ResourceBundle}, ktora sluzy
+oddzieleniu kodu aplikacji od informacji sluzacych jej lokalizacji.
Wspomaga przystosowanie interfejsu aplikacji w zakresie jezyka jakim posluguje sie uzytkownik.
Stosowany jest tu otwarty standard pliku TMX w formacie XMLindex{XML}.
Stosowanie tego rozwiazania daje mozliwosc lokalizacji tekstow etykiet GUIindex{GUI} zgodnie z
ustawieniami srodowiska i bez ingerencji w kod aplikacji. Jedynym warunkiem jest zdefiniowanie
-jezykowych odpowiednikow w pliku. Zastosowanie tej klasy bylo nastepstwem zawartej w specyfikacji
-wymagan decyzji o stosowaniu jezykow: polskiego i angielskiego.
+jezykowych odpowiednikow w pliku. Zastosowanie tej klasy bylo nastepstwem
+pozafunkcjonalnego wymagania o stosowaniu jezykow: polskiego i angielskiego (patrz
+punkt~ref{podrozdzial:WymaganiaNiefunkcjonalne}).
Klasa udostepniona jest na licencji Open Source pod adresem: url{http://sourceforge.net/projects/tmxjavabridge/}.
subsection{SwingWorker}label{podrozdzial:SwingWorker}index{SwingWorker}
Klasa wspomaga odswiezanie panelu graficznego podczas gdy w tle aplikacja prowadzi skomplikowane obliczenia.
@@ -171,7 +184,7 @@
aplikacji zajmuje sie obliczeniami. Klasa ta, podobnie jak biblioteka JAXBindex{JAXB} jest udostepniana na
licencji wolnego oprogramowania przez serwis Java.net pod adresem url{https://swingworker.dev.java.net/}.
subsection{Klasy powiazane z wyswietlaniem pulpitu aplikacji}label{podrozdzial:Pulpit}index{Pulpit}
-Klasy udostepnione ramach licencji Wolnego Oprogramowania przez m. in. Santhosh’a Kumar’a,
+Klasy udostepnione ramach licencji Wolnego Oprogramowania przez m.~in. Santhosh’a Kumar’a,
Patrick’a Gotthardt’a Guy’a Davies’a, Gregory’ego Kotsaftis’a. Zarzadzaja oknami
wyswietlanymi jako wewnetrzne okna w ukladzie graficznym Swinga - textit{JDesktopPane} - ktory
nasladuje pulpit. Klasy pozwalaja na wygodne zarzadzanie elementami na pulpicie, np.
@@ -183,7 +196,7 @@
danej kolumny tabeli,
jej wiersze sa sortowane wedlug wartosci danej kolumny. Pierwsze przycisniecie sortuje wiersze
w kolejnosci rosnacych wartosci, drugie wedlug malejacych a trzecie przywraca poczatkowy uklad
-wierszy. Autorzy: Philip Milne, Brendon McLean, Dan van Enckevorti Parwinder Sekhon.
-Klasa odstepna jest bezposrednio pod adresem:
+wierszy. Autorzy: Philip Milne, Brendon McLean, Dan van Enckevorti i Parwinder
+Sekhon. Klasa odstepna jest bezposrednio pod adresem:
url{http://java.sun.com/docs/books/tutorial/uiswing/components/examples/T...}.
Modified: paperwork/praca/src/rozdzialy/chapter-06.tex
=========================================================================== ===
--- paperwork/praca/src/rozdzialy/chapter-06.tex (original)
+++ paperwork/praca/src/rozdzialy/chapter-06.tex Wed Feb 14 00:58:04 2007
@@ -30,15 +30,16 @@
Proces wersjonowania polega na tym, aby cyklicznie uaktualniac dane przechowywane w
repozytorium - dzieki temu bedzie powstawac w nim cala historia zmian dokonywanych
na plikach w folderze roboczym. Podobnym systemem jest CVSindex{CVS}textit{(ang. Concurrent Versions System)},
-menedzerowie zaproponowali jednak wybor SVN, poniewaz, w przeciwienstwie do CVS,
+menedzerowie zaproponowali jednak wybor SVN poniewaz, w przeciwienstwie do CVS,
pozwala on wersjonowac katalogi, tymczasem projekt i pakiety sa reprezentowane w Javieindex{Java}
za pomoca struktury katalogow.newline
System dostepny jest na zasadach licencji Open Source przez korporacje Apache
Software Foundationindex{Apache Software Foundation}.
Strona domowa projektu to: url{http://subversion.tigris.org/}.
Przy realizacji przedsiewziecia wykorzystywano dwa narzedzia bedace interfejsem dostepu do SVN.
-Jednym z nich byl Subclipseindex{Subclipse}, wtyczka integrujaca SVN z interfejsem Eclipse. Dostepna jest na
-licencji wolego oprogramowania konsorcjum Apache Software Foundationindex{Apache Software Foundation}
+Jednym z nich byl Subclipseindex{Subclipse}, wtyczka integrujaca SVN z
+interfejsem srodowiskiem Eclipse. Dostepna jest na
+licencji wolnego oprogramowania konsorcjum Apache Software Foundationindex{Apache Software Foundation}
na stronie url{http://subclipse.tigris.org/}. Dodatkowo korzystano z Turtoise SVN – interfejsu
bedacego nakladka na powloke systemu Windows, wydanego przez to samo konsorcjum i dostepnego
na stronie url{http://tortoisesvn.tigris.org/}.
@@ -56,11 +57,10 @@
budowania aplikacji. Jest to bardzo przydatne narzedzie przy tworzeniu aplikacji w Javie,
zwlaszcza gdy aplikacja sklada sie z wielu pakietow oraz powstaje w zespole z
uzyciem roznych zewnetrznych bibliotek.
-Maven to otwarte
oprogramowanie – projekt konsorcjum Apache Software foundation
-index{Apache Software foundation},
-dostepny pod adresem Internetowym: url{http://maven.apache.org/}.
+Maven to otwarte oprogramowanie – projekt konsorcjum Apache Software foundationindex{Apache Software foundation},
+dostepne pod adresem Internetowym: url{http://maven.apache.org/}.
W celu uzyskania dodatkowej funkcjonalnosci w procesie powstawania aplikacji,
-uzylismy rozszerzen (ang. textit{plugins}) do Maven'a. Najwazniejszym z nich jest
+uzylismy rozszerzen (textit{ang. plugins}) do Maven'a. Najwazniejszym z nich jest
texttt{maven-compiler-plugin}index{maven-compiler-plugin}index{maven-com piler-plugin} ktory pozwala na kompilacje oraz automatyczne wykonanie testow
jednostkowych kodu xrodlowego projektu. Do tworzenia wersji dystrybucyjnej w pliku texttt{.jar},
ktory byl generowany i umieszczany na stronie projektu automatycznie co godzine,
@@ -82,15 +82,14 @@
subsection{JUnit}label{podrozdzial:JUnit}index{JUnit}
JUnit to srodowisko przeznaczone do przeprowadzania testow jednostkowych dla aplikacji
powstajacych w jezyku Javaindex{Java}. Testowanie klas aplikacji zostalo omowione w
-rozdziale~ref{rozdzial:TestowanieAplikacji}.
+rozdziale~ref{podrozdzial:TestyJednostkowe}.
JUnit dostepne jest na licencji Open Source.Wszystkie elementy tego srodowiska mozna pozyskac
ze strony projektu: url{http://www.junit.org/index.htm}.
subsection{PMD}label{podrozdzial:PMD}index{PMD}
Jest to narzedzie sluzace do analizy kodu xrodlowego Javy.
Zajmuje sie ono wykrywaniem malo efektywnego kodu, ktory moze miec wplyw na
poxniejsza szybkosc dzialania aplikacji. PMD wykrywa kod nieuzywany, nieefektywny,
-zbyt skomplikowane wyrazenia lub zduplikowane fragmenty kodu. Ciekawa funkcjonalnoscia narzedzia jest to
-, ze oprocz zdefiniowanych regul odnajdywania niewlasciwego kodu istnieje mozliwosc
+zbyt skomplikowane wyrazenia lub zduplikowane fragmenty kodu. Ciekawa funkcjonalnoscia narzedzia jest to, ze oprocz zdefiniowanych regul odnajdywania niewlasciwego kodu istnieje mozliwosc
tworzenia wlasnych, dostosowanych do konkretnego oprogramowania, lub do praktyk
kodowania danego srodowiska. Pliki regul tworzone sa w formacie XMLindex{XML}.
Narzedzie to bylo uzywane w formie wtyczki dla srodowiska
@@ -110,8 +109,8 @@
formie tabelarycznej. Zawiera miedzy
innymi nazwy zadan do realizacji, daty ich rozpoczecia i zakonczenia, priorytety oraz
informacje o ich powiazaniu z inymi zadaniami.
- section{Testy jednostkowe}label{podrozdzial:TestyJednostkowe}index{Testy
-jednostkowe}
+ section{Testowanie aplikacji}label{podrozdzial:TestyJednostkowe}index{testy
+jednostkowe}index{Testowanie aplikacji}index{testy akceptacyjne}
Testowanie jest jednym z najwazniejszych etapow cyklu zycia oprogramowania.
Finalna jakosc aplikacji w bardzo duzym stopniu zalezy od sposobow oraz jakosci
wykonywanych testow. Proces testowania jest bardzo czasochlonny oraz monotonny,
@@ -129,10 +128,15 @@
W aplikacji postanowiono przeprowadzic testy jednostkowe dla klas nalezacych do modulow
obejmujacych obliczenia algorytmow, modulu wejscia wyjscia oraz klas odpowiedzialnych za
przechowywanie i udostepnianie danych do obliczen.
+Duze znaczenie dla powodzenia calego projektu maja rowniez testy akceptacyjne, odzwierciedlajace punkt widzenia klienta.
+Ich glownym celem jest uchwycenie i udokumentowanie wymagan klienta oraz
+wykazanie mu, ze nasz system spelnia te wymagania. Testy jednostkowe aplikacji
+oraz wybrane testy akceptacyjne omowione zostaly w rozdziale~ref{rozdzial:TestowanieAplikacji}.
section{Dokumentacja techniczna}label{podrozdzial:DokumentacjaTechniczna}index{Dokumentacja techniczna}
Narzedziem programistycznym wykorzystanym do tworzenia dokumentacji jest Javadoc.
-Wykorzystuje on specjalny jezyk w komentarzach jezyka Java (niewidoczny dla kompilatora),
-generujac na jego podstawie dokumentacje techniczna w formacie HTML.
+Wykorzystuje on specjalny jezyk w komentarzach jezyka Java (niewidoczny dla kompilatora)
+generujac na jego podstawie dokumentacje techniczna w formacie HTMLindex{HTML}
+(hipertekstowy jezyk znacznikow, textit{ang. Hyper Text Markup Language}).
W jezyku tym definiuje sie takie informacje jak autora, date utworzenia i opis klasy.
Opis, argumenty oraz zwracane wartosci sluza do opisania metod.
Pole klasy rowniez moze byc opatrzone opisem.
@@ -146,26 +150,30 @@
maven-javadoc-pluginindex{maven-javadoc-plugin} (patrz rozdz.~ref{podrozdzial:Maven}).
Javadoc wchodzi w sklad standardowego pakietu narzedziowego Javy dla programistow: Software Development Kit.
Dokumentacja w postaci Javadocow dolaczona jest na plycie CD w katalogu „Dokumentacja Techniczna”.
-Moze ona byc podstawa przyszlego rozwoju systemu i jego rozbudowy o kolejne funkcjonalnosci.
+Moze ona byc pomoca dla przyszlego rozwoju systemu i jego rozbudowy o kolejne
+funkcjonalnosci.
section{Podsumowanie realizacji przedsiewziecia}label{podrozdzial:PodsumowanieRealizacjiPrzedsiewziecia}i ndex{Podsumowanie realizacji przedsiewziecia}
subsection{Wspolpraca z menedzerami}label{podrozdzial:WspolpracaZMenedzerami}
Wspolpraca studentow specjalnosci TWO (Techniki Wytwarzania Oprogramowania)
-ze studentami realizujacymi prace inzynierska, odbywala sie w ramach zajec na 2
+ze studentami realizujacymi prace inzynierska odbywala sie w ramach zajec na 2
semestrach studiow. U studentow-menedzerow byly to zajecia o nazwie Pracownia Wytwarzania Oprogramowania
(1 i 2 semestrze specjalnosciowych studiow magisterskich), studenci-programisci realizowali projekt
-w ramach zajec z Projektu Zespolowego (6 i 7 semestr studiow inzynierskich).newline
+w ramach zajec z Projektu Zespolowego (6 i 7 semestr studiow inzynierskich).
+
Poczatkowym stadium wspolpracy programistow z menedzerami bylo opracowanie projektow modulow
algorytmow z uzyciem jezyka modelowania UMLindex{UML} i ustalenie pewnych rozwiazan technologicznych,
dostosowanych zarowno do wyspecyfikowanych wymagan jak rowniez umiejetnosci programistow oraz czasu,
-ktory sa oni w stanie poswiecic na realizacje przedsiewziecia.newline
+ktory sa oni w stanie poswiecic na realizacje przedsiewziecia.
+
Podczas realizacji przedsiewziecia bardzo istotnym czynnikiem bylo efektywne zarzadzanie czasem pracy
i przydzialem zadan. Bylo to podstawowe zadanie menedzerow podczas realizacji projektu.
-Pomagala im w tym wspomniana w narzedziach aplikacja: DotProject. Zarowno studenci specjalnosci TWO,
+Pomagala im w tym wspomniana w narzedziach aplikacja: DotProjectindex{DotProject}. Zarowno studenci specjalnosci TWO,
zarzadzajacy realizacja przedsiewziecia, jak i studenci – programisci posiadali zalozone konta w aplikacji.
Uzgodniony harmonogram kolejnych prac byl rejestrowany w systemie z uwzglednieniem menadzera nadzorujacego
zadanie oraz programisty odpowiedzialnego za jego wykonanie. Menedzer przydzielal zadanie oraz oszacowany
czas na jego wykonanie, nastepnie programisci rejestrowali w systemie zrealizowana prace wpisujac procent
-wykonania zadania, poswiecony czas oraz krotki opis tego co zrobili.newline
+wykonania zadania, poswiecony czas oraz krotki opis tego co zrobili.
+
Zrealizowany kod byl przez programistow wprowadzany do repozytorium z uzyciem aplikacji Subversion i jej
dodatkowych narzedzi (podrozdzial~ref{podrozdzial:Subversion}), przyjeto przy
tym zasade, aby klasa podlegajaca wersjonowaniu mogla
@@ -173,7 +181,8 @@
Do kolejnych zadan menedzerow nalezaly inspekcje kodu, podczas ktorych zwracali oni uwage programistom
na fragmenty kodu poprzez wstawianie komentarzy. Pietnowane byly zarowno bledy wplywajace bezposrednio
na dzialanie aplikacji jak i jakosc powstajacego kodu, proponowane byly rowniez lepsze odpowiedniki
-niektorych stosowanych rozwiazan.newline
+niektorych stosowanych rozwiazan.
+
Poniewaz realizacja pracy dyplomowej ma charakter edukacyjny, waznym elementem byly przeprowadzone
na poczatku realizacji przedsiewziecia szkolenia, m.in. z technologii
programistycznych
@@ -189,7 +198,8 @@
subsection{Aktywnosc programistow}label{podrozdzial:AktywnoscProgramistow}
Przedstawione ponizej statystyki powstaly przy uzyciu narzedzia SVNStat
opisanego w podrozdziale~ref{SVNStat} i przedstawiaja udzial programistow w tworzeniu nowych oraz modyfikacji istniejacych klas
-programu w repozytoriumindex{repozytorium} SVNindex{SVN}.newline
+programu w repozytoriumindex{repozytorium} SVNindex{SVN}.
+
Statystyki odnosza sie do calego okresu prac nad projektem, ktorym jest w
przyblizeniu kalendarzowy rok. Nalezy przy tym wspomniec, ze prezentowane
wartosci nie odzwierciedlaja wkladu pracy poszczegolnych osob w cale przedsiewziecie.