Replies: 0 Views: 0
|
Author: michalrej
Date: Wed Feb 7 14:01:53 2007
New Revision: 1270
Modified:
paperwork/praca/src/rozdzialy/chapter-05.tex
Log:
rozdzial 5
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 7 14:01:53
2007
@@ -1,14 +1,176 @@
-% @version $Id:$
-chapter{Rozdzial testowy}
-Zobacz cite{bio-CASP-predictioncenter}, a w slowniku
gloss{atomowa-jednostka-masy}.
+% {$Id:$}
+chapter{Projekt}
+%Zobacz cite{bio-CASP-predictioncenter}, a w slowniku
gloss{atomowa-jednostka-masy}.
+subsection{Zalozenia projektowe}
+Przy projektowaniu aplikacji kierowano sie jej edukacyjnym przeznaczeniem.
+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).
+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.
+Z projektowaniem oprogramowania obiektowego wiazala sie miedzy innymi
+mozliwosc zastosowania takich usprawnien, jak wzorce projektowe (ang. design
patterns)
+czy jezyk modelowania (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.
+Do stworzenia interfejsu graficznego programu posluzono sie biblioteka
+graficzna 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 GUI systemu operacyjnego a aplikacja wyglada i
zachowuje
+sie tak samo na roznych platformach. Inne biblioteki i klasy wykorzystane w
aplikacji
+zostaly omowione w podrozdziale 5.3 [odnosnik].
+
+section{Glowne moduly programu}
+Podzial na podstawowe moduly odzwierciedla organizacja pakietow w projekcie.
+Uklad taki, oprocz unikalnosci nazw klas i ich skladowych, zapewnia latwosc
+nawigacji w kodzie, latwiejsze zarzadzanie praca nad aplikacja,
+latwa rozbudowe w zaleznosci od potrzeb. Przy projektowaniu modulow
+kierowano sie idea rozdzielenia klas dotyczacych danych, obliczen oraz
+interfejsu graficznego.
+Ponizej wymieniono i krotko opisano te podstawowe elementy skladowe programu.
+
+subsection{ Modul wejscia – wyjscia (pakiet pl.go.clasterix.io)}
+Modul ten obejmuje klasy, ktorych zadaniem jest wczytywanie oraz zapisywanie
+danych wymaganych przez oba implementowane algorytmy. Formaty zapisu i
odczytu
+danych zostaly wyszczegolnione w specyfikacji wymagan projektu. Wczytywane
dane
+analizowane sa pod katem przydatnosci do dalszego przetwarzania
+Zastosowanie odpowiednich interfejsow ma na celu mozliwosc rozszerzenia tego
+modulu o klasy umozliwiajace wczytywanie danych z kolejnych xrodel,
+w tym rowniez z zewnetrznych baz danych.
+
+
+subsection{Modul przechowywania i przetwarzania danych }
+Przechowuje wczytane dane i udostepnia je do obliczen.
+Wykonuje operacje przeksztalcajace dane do postaci wymaganych przez
algorytmy.
+subsection{Moduly obliczen}
+Zawieraja klasy wykonawcze z glownymi petlami algorytmow oraz klasy
+pomocnicze przechowujace
+posrednie oraz koncowe wyniki ich dzialania.
+subsubsection{Modul obliczen algorytmu AHC (pakiet
+pl.go.clasterix.algorithms.ahc)}
+Oprocz klas wykonujacych obliczenia algorytmu AHC, zajmuje sie budowa drzewa,
+ktore stanowi podstawowy wynik dzialania tego algorytmu. Klasy pakietu
przedstawione
+zostaly na ponizszym schemacie. Klasa glowna jest klasa AlgorithmAHC.
+To w niej wywolywana jest glowna petla algorytmu. Przeliczaniem odleglosci
pomiedzy
+agregowanymi grupami zajmuja sie klasy dziedziczace po abstrakcyjnej klasie
+AbstractDistMeasure. Stosownie do wybranej wersji algorytmu tworzona jest
instancja
+jednej z nich. W trakcie obliczen przeksztalcane odleglosci miedzy grupami
oraz
+inne dane z nimi zwiazane przechowywane sa w strukturach klasy DistMatrix.
+Tam rowniez nastepuje przeksztalcanie macierzy w kolejnych iteracjach.
+Zapisywaniem wynikow dzialania algorytmu zajmuje sie klasa Tree, zarzadzajaca
tworzeniem
+wynikowego drzewa. Drzewo budowane jest z lisci oraz wezlow. Liscie (klasa
TreeLeaf)
+stanowia obiekty wejsciowe algorytmu, jeszcze nie zagregowane. Wezly (klasa
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 TreeLeaf i
TreeNode.
+Dodatkowa klasa ClusterPair zajmuje sie porzadkowaniem par wezlow
podlegajacych
+grupowaniu i zastepuje pojedyncze wystepowanie wezlow jako argumentow roznych
metod.
+subsubsection{Modul obliczen algorytmu K-srednich(pakiet
pl.go.clasterix.algorithms.kmeans)}
+Modul obliczen algorytmu k-srednich (pakiet
pl.go.clasterix.algorithms.kmeans)
+Wykonuje obliczenia algorytmu k-srednich.
+Podstawowe obliczenia algorytmu wykonywane sa w klasie DistanceAnalysys.
+Obliczanie na potrzeby algorytmu odleglosci w jednej z trzech przyjetych
metryk
+(patrz rozdzial 4…) realizuja klasy implementujace interfejs Distances.
+Do zadan klasy HeuristicCentroids nalezy heurystyczne wyznaczenie polozenia
+inicjujacych centroidow, jesli wybrano taka opcje. Klasa
ClusterDescriptiveStatistics
+oblicza statystyki dla uzyskanych grup obiektow.
+Interfejs Point jest implementowany zarowno przez kazdy obiekt podlegajacy
+przeksztalceniom (klasa DataPoint), jak i abstrakcyjny obiekt reprezentujacy
centroid
+grupy punktow w pewnej iteracji algorytmu (klasa Cluster).
+Podstawowe dane algorytmu stanowia grupy punktow przechowywane w klasie
+Cluster wraz z obliczonym dla nich Centroidem.
+
+subsection{Modul graficznego interfejsu uzytkownika (pakiet
+pl.go.clasterix.gui))}
+Modul ten zawiera klasy odpowiedzialne za tworzenie i wyswietlanie elementow
+graficznego interfejsu uzytkownika. Modul posiada dodatkowo wyroznione dwa
+pakiety:
+subsubsection{Modul raportow (pakiet pl.go.clasterix.gui.reports)}
+Zawiera Klasy odpowiedzialne za budowanie i wyswietlanie raportow
+dla obu zaimplementowanych algorytmow.
+subsubsection{Modul kreatora (pakiet pl.go.clasterix.gui.wizard)}
+Klasy tego modulu sa odpowiedzialne za wyglad i organizacje ramki
+kreatora oraz jego paneli skladowych ,
+ktore odpowiadaja kolejnym krokom realizacji algorytmow.
+section{Technologie programistyczne}
+Wymagania funkcjonalne, niefunkcjonalne oraz wybor jezyka Java
+zadecydowaly o zastosowaniu wymienionych tutaj klas i bibliotek.
+Dodatkowymi kryteriami wyboru byla popularnosc tych rozwiazan,
+ich dostepnosc oraz dotychczasowe doswiadczenie menedzerow i
+programistow przy dotychczasowej pracy z niektorymi z nich.
+subsubsection{Log4j}
+Jest to biblioteka sluzaca do zapisywania zdarzen zachodzacych w programie
– tzw. logow.
+Przy pomocy zewnetrznego pliku konfiguracyjnego mozna zdefiniowac generowanie
okreslonych
+ grup komunikatow logu wedlug ustalonych kryteriow oraz przy uzyciu wybranych
urzadzen
+ w samodzielnie zdefiniowanym formacie wiadomosci. Umozliwia to wplywanie na
ilosc
+ pozyskiwanej informacji bez ingerencji w kod programu. Stosowanymi metodami
drukujacymi
+ sa: error, warn, info i debug. Nazwy mowia o priorytecie zdarzenia, ktore
jest logowane
+ za pomoca danej metody. Zdarzenie jest rejestrowane, jezeli jego priorytet
(okreslany
+ odpowiednia metoda) jest wyzszy lub rowny priorytetowi ustalonemu dla danej
kategorii.
+ W pliku konfiguracyjnym mozna rowniez konfigurowac logowanie zdarzen na
wielu
+ urzadzeniach. Urzadzenie, na ktorym biblioteka zapisuje zdarzenie to
appender.
+ W bibliotece sa zdefiniowane takie urzadzenia jak konsola, plik, zdalny
serwer i inne.
+ Pakiet log4j (log4j.org) dystrybuowany jest na licencji IBM Public License i
dostepny
+ w ramach inicjatywy Open Source.
+subsubsection{JAXB}
+Jest to standard definiujacy dostep do plikow XML-owych z poziomu jezyka
programowania.
+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 DTD
+(takze dokonywane na dokumencie w pamieci).
+Biblioteka zostala wykorzystana do zapisu i odczytu danych zapisanych w
formacie XML.
+subsubsection{JFreeReport}
+Waznym elementem tworzonej aplikacji jest mozliwosc przegladania
+a nastepnie zapisywania wynikow dzialania algorytmow w uniwersalnych
+i czytelnych formatach, mozliwosci takie udostepnia biblioteka JFreeReport.
+Dane do raportu pobiera ona z obiektow implementujacych interfejs 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.
+Po uruchomieniu otrzymujemy pelnoekranowy podglad raportu wygenerowanego
+na podstawie przyjetych parametrow. Mozemy go nastepnie zapisac do pliku
+w jednym z popularnych formatow, takich jak: PDF, HTML, CSV czy XLS.
+subsubsection{TMXResourceBundle (Translation Memory eXchange
ResourceBundle)}
+Dziedziczy po klasie jezyka Javy – ResourceBundle. Wspomaga
przystosowanie interfejsu aplikacji
+w zakresie jezyka jakim posluguje sie uzytkownik.
+Stosowany jest tu otwarty standard pliku TMX w formacie XML.
+Stosowanie tego rozwiazania daje mozliwosc lokalizacji tekstow etykiet
+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 (patrz rozdzial 4
…).
+subsubsection{SwingWorker}
+Klasa wspomaga odswiezanie panelu graficznego podczas gdy w tle aplikacja
+prowadzi skomplikowane obliczenia. W tym celu tworzony jest przez nia
+dedykowany watek w ktorym nalezy umieszczac kod odpowiedzialny za rysowanie
+interfejsu graficznego – okno aplikacji zachowuje swoj wyglad podczas
gdy
+glowny watek aplikacji zajmuje sie obliczeniami.
+Klasa nalezy do standardowych pakietow.
+subsubsection{Klasy powiazane z wyswietlaniem okna aplikacji.}
+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 -
+JDesktopPane - ktory nasladuje pulpit. Klasy pozwalaja na wygodne
zarzadzanie
+elementami na pulpicie, np. dowolny rozklad, minimalizacje i maksymalizacje
wszystkich
+okien z wykorzystaniem opcji menu.
+subsubsection{TableSorter}
+Dodaje funkcjonalnosc sortowania kolumn do klas implementujacych standardowy
model
+tablicy Swinga – TableModel. Po przycisnieciu naglowka danej kolumny
tabeli,
+jej wiersze sa sortowane wedlug 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.
-Nullam ante. Sed quam purus, eleifend sit amet, congue ultrices, vestibulum
ut, purus. Etiam porta rutrum massa. Donec sed pede. Nullam vitae sapien. Nam
sed turpis non massa vestibulum luctus. Nunc placerat eros nec nibh. Vivamus
blandit libero consequat orci. Quisque vestibulum auctor urna. Suspendisse in
augue. Maecenas magna. Suspendisse felis. Nulla non libero eget ligula convallis
iaculis.
-Donec vitae ipsum a arcu faucibus tristique. Aenean nonummy mi. Donec
pharetra, magna sit amet vestibulum malesuada, ante nibh vehicula libero, ac
mattis dui tortor ut ante. Class aptent taciti sociosqu ad litora torquent per
conubia nostra, per inceptos hymenaeos. Aliquam at nisi. Proin consequat. Donec
nec mauris. Pellentesque turpis est, luctus in, congue sit amet, mollis id,
augue. Suspendisse diam. Nam quis tellus. Sed at diam a nisi dignissim volutpat.
Cras vitae diam sed elit pellentesque dapibus. Proin nibh nisi, consectetuer ut,
iaculis et, mollis varius, velit.
-
-
-Aenean purus diam, volutpat in, ornare in, sollicitudin id, dui. Donec
ornare, lorem non accumsan dignissim, sapien nisi porta eros, sed placerat orci
justo vel mauris. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nam
nisl ipsum, nonummy vitae, varius eu, molestie vel, magna. In hac habitasse
platea dictumst. Aenean odio nisi, ultricies convallis, euismod nec, cursus
quis, risus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices
posuere cubilia Curae; Sed venenatis accumsan libero. Etiam posuere, sem sed
hendrerit vestibulum, massa erat hendrerit orci, at mollis eros odio vel purus.
Duis odio tortor, vehicula ut, euismod id, hendrerit a, quam. In at orci sed
nisi iaculis auctor. Nam sodales, lectus eu laoreet dignissim, sem diam semper
turpis, luctus auctor metus nunc ut nibh. Morbi vehicula sem in nunc. Curabitur
est turpis, viverra eu, convallis nec, laoreet elementum, neque. In hac
habitasse platea dictumst.
-
-Nulla at quam at ligula imperdiet elementum. Nam ac erat ut pede vulputate
molestie. Donec consequat tristique lorem. Suspendisse eget massa. Cum sociis
natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
Vivamus vehicula magna eu lorem. Etiam id arcu. Proin lobortis, urna et luctus
mollis, nulla lectus iaculis justo, ac mattis ipsum erat dapibus augue. Ut
dictum consequat urna. Pellentesque quis quam. Curabitur gravida luctus leo.
Pellentesque malesuada elit elementum mi laoreet placerat. Curabitur a quam et
ante posuere fermentum. Aenean nec magna ac neque accumsan tincidunt. Donec eu
nisi. Aenean scelerisque tincidunt sem. Nunc leo. In lorem.
-
-Mauris ac augue et mi aliquam dapibus. Cum sociis natoque penatibus et magnis
dis parturient montes, nascetur ridiculus mus. Phasellus tincidunt, massa a
commodo lobortis, sem magna consequat libero, vitae lobortis augue tortor sed
dui. Maecenas consequat, tellus vitae ornare semper, justo felis auctor est, in
accumsan orci tortor eget risus. Etiam augue dolor, tempus eget, ornare nec,
volutpat quis, augue. In diam est, pulvinar in, accumsan id, cursus sit amet,
velit. Nunc cursus, neque nec tristique ornare, mauris augue commodo sem, vel
sagittis arcu neque at nisl. Integer sit amet purus. Sed tristique. Vivamus vel
purus. Aliquam ornare fringilla mi. Cras adipiscing, enim bibendum scelerisque
ultricies, eros quam condimentum sem, in facilisis mauris metus sed pede. Cras
dolor.
No newline at end of file
|
|
Replies: 0 Views: 0
|
Author: michalrej
Date: Wed Feb 7 23:18:01 2007
New Revision: 1276
Modified:
paperwork/praca/src/rozdzialy/chapter-05.tex
Log:
kodowanie
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 7 23:18:01
2007
@@ -1,188 +1,188 @@
-% {$Id:$}
+% {$Id:$}
chapter{Projekt}
-%Zobacz cite{bio-CASP-predictioncenter}, a w s owniku
gloss{atomowa-jednostka-masy}.
-section{Za o enia projektowe}
-Przy projektowaniu aplikacji kierowano si jej edukacyjnym przeznaczeniem.
-Zdecydowa o to mi dzy innymi o zastosowaniu przyjaznego interfejsu u
ytkownika,
- atwo odczytywalnej nawigacji przez kolejne kroki oblicze algorytm w oraz
czytelnych
-i interakcyjnych form wizualizacji wynik w ich dzia ania.
-Jako j zyk programowania wybrano Jav w wydaniu J2SE 5.0 (1.5.0).
-Jest to obiektowy j zyk programowania stworzony przez firm Sun Microsystems.
-Zalet program w w Javie jest to, e kompilowane s do postaci wykonywanej
przez
-maszyn wirtualn , co pozwala uruchamia programy napisane dla r nych system
w
-operacyjnych bez adnych zmian lub tylko z niewielkimi modyfikacjami.
-Zastosowanie Javy mia o decyduj cy wp yw na spos b realizacji projektu.
-Z projektowaniem oprogramowania obiektowego wi za a si mi dzy innymi
-mo liwo zastosowania takich usprawnie , jak wzorce projektowe (ang. design
patterns)
-czy j zyk modelowania (UML).
-Java to obecnie bardzo popularny j zyk, wiele bibliotek i narz dzi
-udost pnianych jest na zasadach wolnego oprogramowania, bogactwo materia w
-czy przyk adowych fragment w kodu mo na odnale w Internecie.
-Opr cz powy szych w a ciwo ci j zyka, o wyborze zadecydowa o r wnie do
wiadczenie
-akademickie odno nie programowania w Javie zar wno mened er w jak i
programist w.
-Do stworzenia interfejsu graficznego programu pos u ono si bibliotek
-graficzn Swing. Jest to podstawowy interfejs Javy charakteryzuj cy si
-du ym wyborem komponent w graficznych, przejrzyst implementacj oraz
elastyczno ci .
- Lekko komponent w Swinga oznacza, e interfejs powsta y przy u yciu
-Swinga nie u ywa element w GUI systemu operacyjnego a aplikacja wygl da i
zachowuje
-si tak samo na r nych platformach. Inne biblioteki i klasy wykorzystane w
aplikacji
-zosta y om wione w podrozdziale ref{Technologie programistyczne} fdfd.
-
-section{G wne modu y programu}
-Podzia na podstawowe modu y odzwierciedla organizacja pakiet w w projekcie.
-Uk ad taki, opr cz unikalno ci nazw klas i ich sk adowych, zapewnia atwo
-nawigacji w kodzie, atwiejsze zarz dzanie prac nad aplikacj ,
- atw rozbudow w zale no ci od potrzeb. Przy projektowaniu modu w
-kierowano si ide rozdzielenia klas dotycz cych danych, oblicze oraz
+%Zobacz cite{bio-CASP-predictioncenter}, a w slowniku
gloss{atomowa-jednostka-masy}.
+section{Zalozenia projektowe}
+Przy projektowaniu aplikacji kierowano sie jej edukacyjnym przeznaczeniem.
+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).
+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.
+Z projektowaniem oprogramowania obiektowego wiazala sie miedzy innymi
+mozliwosc zastosowania takich usprawnien, jak wzorce projektowe (ang. design
patterns)
+czy jezyk modelowania (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.
+Do stworzenia interfejsu graficznego programu posluzono sie biblioteka
+graficzna 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 GUI 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{Technologie programistyczne} fdfd.
+
+section{Glowne moduly programu}
+Podzial na podstawowe moduly odzwierciedla organizacja pakietow w projekcie.
+Uklad taki, oprocz unikalnosci nazw klas i ich skladowych, zapewnia latwosc
+nawigacji w kodzie, latwiejsze zarzadzanie praca nad aplikacja,
+latwa rozbudowe w zaleznosci od potrzeb. Przy projektowaniu modulow
+kierowano sie idea rozdzielenia klas dotyczacych danych, obliczen oraz
interfejsu graficznego.
-Poni ej wymieniono i kr tko opisano te podstawowe elementy sk adowe programu.
+Ponizej wymieniono i krotko opisano te podstawowe elementy skladowe programu.
-subsection{ Modu wej cia wyj cia (pakiet pl.go.clasterix.io)}
-Modu ten obejmuje klasy, kt rych zadaniem jest wczytywanie oraz zapisywanie
+subsection{ Modul wejscia – wyjscia (pakiet pl.go.clasterix.io)}
+Modul ten obejmuje klasy, ktorych zadaniem jest wczytywanie oraz zapisywanie
danych wymaganych przez oba implementowane algorytmy. Formaty zapisu i
odczytu
-danych zosta y wyszczeg lnione w specyfikacji wymaga projektu. Wczytywane
dane
-analizowane s pod k tem przydatno ci do dalszego przetwarzania
-Zastosowanie odpowiednich interfejs w ma na celu mo liwo rozszerzenia tego
-modu u o klasy umo liwiaj ce wczytywanie danych z kolejnych r de ,
-w tym r wnie z zewn trznych baz danych.
+danych zostaly wyszczegolnione w specyfikacji wymagan projektu. Wczytywane
dane
+analizowane sa pod katem przydatnosci do dalszego przetwarzania
+Zastosowanie odpowiednich interfejsow ma na celu mozliwosc rozszerzenia tego
+modulu o klasy umozliwiajace wczytywanie danych z kolejnych xrodel,
+w tym rowniez z zewnetrznych baz danych.
-subsection{Modu przechowywania i przetwarzania danych }
-Przechowuje wczytane dane i udost pnia je do oblicze .
-Wykonuje operacje przekszta caj ce dane do postaci wymaganych przez
algorytmy.
-subsection{Modu y oblicze }
-Zawieraj klasy wykonawcze z g wnymi p tlami algorytm w oraz klasy
-pomocnicze przechowuj ce
-po rednie oraz ko cowe wyniki ich dzia ania.
-subsubsection{Modu oblicze algorytmu AHC (pakiet
+subsection{Modul przechowywania i przetwarzania danych }
+Przechowuje wczytane dane i udostepnia je do obliczen.
+Wykonuje operacje przeksztalcajace dane do postaci wymaganych przez
algorytmy.
+subsection{Moduly obliczen}
+Zawieraja klasy wykonawcze z glownymi petlami algorytmow oraz klasy
+pomocnicze przechowujace
+posrednie oraz koncowe wyniki ich dzialania.
+subsubsection{Modul obliczen algorytmu AHC (pakiet
pl.go.clasterix.algorithms.ahc)}
-Opr cz klas wykonuj cych obliczenia algorytmu AHC, zajmuje si budow drzewa,
-kt re stanowi podstawowy wynik dzia ania tego algorytmu. Klasy pakietu
przedstawione
-zosta y na poni szym schemacie. Klas g wn jest klasa AlgorithmAHC.
-To w niej wywo ywana jest g wna p tla algorytmu. Przeliczaniem odleg o ci
pomi dzy
-agregowanymi grupami zajmuj si klasy dziedzicz ce po abstrakcyjnej klasie
+Oprocz klas wykonujacych obliczenia algorytmu AHC, zajmuje sie budowa drzewa,
+ktore stanowi podstawowy wynik dzialania tego algorytmu. Klasy pakietu
przedstawione
+zostaly na ponizszym schemacie. Klasa glowna jest klasa AlgorithmAHC.
+To w niej wywolywana jest glowna petla algorytmu. Przeliczaniem odleglosci
pomiedzy
+agregowanymi grupami zajmuja sie klasy dziedziczace po abstrakcyjnej klasie
AbstractDistMeasure. Stosownie do wybranej wersji algorytmu tworzona jest
instancja
-jednej z nich. W trakcie oblicze przekszta cane odleg o ci mi dzy grupami
oraz
-inne dane z nimi zwi zane przechowywane s w strukturach klasy DistMatrix.
-Tam r wnie nast puje przekszta canie macierzy w kolejnych iteracjach.
-Zapisywaniem wynik w dzia ania algorytmu zajmuje si klasa Tree, zarz dzaj ca
tworzeniem
-wynikowego drzewa. Drzewo budowane jest z li ci oraz w z w. Li cie (klasa
TreeLeaf)
-stanowi obiekty wej ciowe algorytmu, jeszcze nie zagregowane. W z y (klasa
TreeNode)
-opisuj czenie potomnych obiekt w drzewa w now grup , ich podstawowym
atrybutem
-jest wysoko dla kt rej nast pi o to po czenie. W ze opisywa mo e
czenie par li ci,
-par w z w b d li ci z w z ami. W celu efektywniejszej implementacji
zastosowano wi c
-klas abstrakcyjn AbstractTreeObject po kt rej dziedzicz klasy TreeLeaf i
TreeNode.
-Dodatkowa klasa ClusterPair zajmuje si porz dkowaniem par w z w podlegaj
cych
-grupowaniu i zast puje pojedyncze wyst powanie w z w jako argument w r nych
+jednej z nich. W trakcie obliczen przeksztalcane odleglosci miedzy grupami
oraz
+inne dane z nimi zwiazane przechowywane sa w strukturach klasy DistMatrix.
+Tam rowniez nastepuje przeksztalcanie macierzy w kolejnych iteracjach.
+Zapisywaniem wynikow dzialania algorytmu zajmuje sie klasa Tree, zarzadzajaca
tworzeniem
+wynikowego drzewa. Drzewo budowane jest z lisci oraz wezlow. Liscie (klasa
TreeLeaf)
+stanowia obiekty wejsciowe algorytmu, jeszcze nie zagregowane. Wezly (klasa
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 TreeLeaf i
TreeNode.
+Dodatkowa klasa ClusterPair zajmuje sie porzadkowaniem par wezlow
podlegajacych
+grupowaniu i zastepuje pojedyncze wystepowanie wezlow jako argumentow roznych
metod.
begin{figure}[h]
centering
includegraphics[width=13 cm]{obrazki/ahc.png}
- caption{Uproszczony diagram klas modu u oblicze algorytmu AHC}
+ caption{Uproszczony diagram klas modulu obliczen algorytmu AHC}
label{ahc_uml}
end{figure}
-subsubsection{Modu oblicze algorytmu K- rednich(pakiet
pl.go.clasterix.algorithms.kmeans)}
-Modu oblicze algorytmu k- rednich (pakiet
pl.go.clasterix.algorithms.kmeans)
-Wykonuje obliczenia algorytmu k- rednich.
-Podstawowe obliczenia algorytmu wykonywane s w klasie DistanceAnalysys.
-Obliczanie na potrzeby algorytmu odleg o ci w jednej z trzech przyj tych
metryk
-(patrz rozdzia 4 ) realizuj klasy implementuj ce interfejs Distances.
-Do zada klasy HeuristicCentroids nale y heurystyczne wyznaczenie po o enia
-inicjuj cych centroid w, je li wybrano tak opcj . Klasa
ClusterDescriptiveStatistics
-oblicza statystyki dla uzyskanych grup obiekt w.
-Interfejs Point jest implementowany zar wno przez ka dy obiekt podlegaj cy
-przekszta ceniom (klasa DataPoint), jak i abstrakcyjny obiekt reprezentuj cy
centroid
-grupy punkt w w pewnej iteracji algorytmu (klasa Cluster).
-Podstawowe dane algorytmu stanowi grupy punkt w przechowywane w klasie
+subsubsection{Modul obliczen algorytmu K-srednich(pakiet
pl.go.clasterix.algorithms.kmeans)}
+Modul obliczen algorytmu k-srednich (pakiet
pl.go.clasterix.algorithms.kmeans)
+Wykonuje obliczenia algorytmu k-srednich.
+Podstawowe obliczenia algorytmu wykonywane sa w klasie DistanceAnalysys.
+Obliczanie na potrzeby algorytmu odleglosci w jednej z trzech przyjetych
metryk
+(patrz rozdzial 4…) realizuja klasy implementujace interfejs Distances.
+Do zadan klasy HeuristicCentroids nalezy heurystyczne wyznaczenie polozenia
+inicjujacych centroidow, jesli wybrano taka opcje. Klasa
ClusterDescriptiveStatistics
+oblicza statystyki dla uzyskanych grup obiektow.
+Interfejs Point jest implementowany zarowno przez kazdy obiekt podlegajacy
+przeksztalceniom (klasa DataPoint), jak i abstrakcyjny obiekt reprezentujacy
centroid
+grupy punktow w pewnej iteracji algorytmu (klasa Cluster).
+Podstawowe dane algorytmu stanowia grupy punktow przechowywane w klasie
Cluster wraz z obliczonym dla nich Centroidem.
begin{figure}[h]
centering
includegraphics[width=13 cm]{obrazki/km.png}
- caption{Uproszczony diagram klas modu u oblicze algorytmu K- rednich}
+ caption{Uproszczony diagram klas modulu obliczen algorytmu K-srednich}
label{km_uml}
end{figure}
-subsection{Modu graficznego interfejsu u ytkownika (pakiet
+subsection{Modul graficznego interfejsu uzytkownika (pakiet
pl.go.clasterix.gui))}
-Modu ten zawiera klasy odpowiedzialne za tworzenie i wy wietlanie element w
-graficznego interfejsu u ytkownika. Modu posiada dodatkowo wyr nione dwa
+Modul ten zawiera klasy odpowiedzialne za tworzenie i wyswietlanie elementow
+graficznego interfejsu uzytkownika. Modul posiada dodatkowo wyroznione dwa
pakiety:
-subsubsection{Modu raport w (pakiet pl.go.clasterix.gui.reports)}
-Zawiera Klasy odpowiedzialne za budowanie i wy wietlanie raport w
-dla obu zaimplementowanych algorytm w.
-subsubsection{Modu kreatora (pakiet pl.go.clasterix.gui.wizard)}
-Klasy tego modu u s odpowiedzialne za wygl d i organizacj ramki
-kreatora oraz jego paneli sk adowych ,
-kt re odpowiadaj kolejnym krokom realizacji algorytm w.
+subsubsection{Modul raportow (pakiet pl.go.clasterix.gui.reports)}
+Zawiera Klasy odpowiedzialne za budowanie i wyswietlanie raportow
+dla obu zaimplementowanych algorytmow.
+subsubsection{Modul kreatora (pakiet pl.go.clasterix.gui.wizard)}
+Klasy tego modulu sa odpowiedzialne za wyglad i organizacje ramki
+kreatora oraz jego paneli skladowych ,
+ktore odpowiadaja kolejnym krokom realizacji algorytmow.
section{Technologie programistyczne}
-Wymagania funkcjonalne, niefunkcjonalne oraz wyb r j zyka Java
-zadecydowa y o zastosowaniu wymienionych tutaj klas i bibliotek.
-Dodatkowymi kryteriami wyboru by a popularno tych rozwi za ,
-ich dost pno oraz dotychczasowe do wiadczenie mened er w i
-programist w przy dotychczasowej pracy z niekt rymi z nich.
+Wymagania funkcjonalne, niefunkcjonalne oraz wybor jezyka Java
+zadecydowaly o zastosowaniu wymienionych tutaj klas i bibliotek.
+Dodatkowymi kryteriami wyboru byla popularnosc tych rozwiazan,
+ich dostepnosc oraz dotychczasowe doswiadczenie menedzerow i
+programistow przy dotychczasowej pracy z niektorymi z nich.
subsubsection{Log4j}
-Jest to biblioteka s u ca do zapisywania zdarze zachodz cych w programie
tzw. log w.
-Przy pomocy zewn trznego pliku konfiguracyjnego mo na zdefiniowa generowanie
okre lonych
- grup komunikat w logu wed ug ustalonych kryteri w oraz przy u yciu wybranych
urz dze
- w samodzielnie zdefiniowanym formacie wiadomo ci. Umo liwia to wp ywanie na
ilo
- pozyskiwanej informacji bez ingerencji w kod programu. Stosowanymi metodami
drukuj cymi
- s : error, warn, info i debug. Nazwy m wi o priorytecie zdarzenia, kt re
jest logowane
- za pomoc danej metody. Zdarzenie jest rejestrowane, je eli jego priorytet
(okre lany
- odpowiedni metod ) jest wy szy lub r wny priorytetowi ustalonemu dla danej
kategorii.
- W pliku konfiguracyjnym mo na r wnie konfigurowa logowanie zdarze na
wielu
- urz dzeniach. Urz dzenie, na kt rym biblioteka zapisuje zdarzenie to
appender.
- W bibliotece s zdefiniowane takie urz dzenia jak konsola, plik, zdalny
serwer i inne.
- Pakiet log4j (log4j.org) dystrybuowany jest na licencji IBM Public License i
dost pny
+Jest to biblioteka sluzaca do zapisywania zdarzen zachodzacych w programie
– tzw. logow.
+Przy pomocy zewnetrznego pliku konfiguracyjnego mozna zdefiniowac generowanie
okreslonych
+ grup komunikatow logu wedlug ustalonych kryteriow oraz przy uzyciu wybranych
urzadzen
+ w samodzielnie zdefiniowanym formacie wiadomosci. Umozliwia to wplywanie na
ilosc
+ pozyskiwanej informacji bez ingerencji w kod programu. Stosowanymi metodami
drukujacymi
+ sa: error, warn, info i debug. Nazwy mowia o priorytecie zdarzenia, ktore
jest logowane
+ za pomoca danej metody. Zdarzenie jest rejestrowane, jezeli jego priorytet
(okreslany
+ odpowiednia metoda) jest wyzszy lub rowny priorytetowi ustalonemu dla danej
kategorii.
+ W pliku konfiguracyjnym mozna rowniez konfigurowac logowanie zdarzen na
wielu
+ urzadzeniach. Urzadzenie, na ktorym biblioteka zapisuje zdarzenie to
appender.
+ W bibliotece sa zdefiniowane takie urzadzenia jak konsola, plik, zdalny
serwer i inne.
+ Pakiet log4j (log4j.org) dystrybuowany jest na licencji IBM Public License i
dostepny
w ramach inicjatywy Open Source.
subsubsection{JAXB}
-Jest to standard definiuj cy dost p do plik w XML-owych z poziomu j zyka
programowania.
-Biblioteka posiada kompilator schemat w (lub dtd),
-kt ry z tych schemat w generuje klasy - dla ka dego elementu XML powstaje
jedna klasa.
-Podstawowe operacje jakie udost pnia JAXB to: zamiana pliku XML-owego na
obiekty Javy,
-modyfikacja dokumentu XML-owego (na kopii z pami ci), zamiana obiekt w
-Javy na dokument XML-owy oraz walidacja - sprawdzenie poprawno ci z DTD
-(tak e dokonywane na dokumencie w pami ci).
-Biblioteka zosta a wykorzystana do zapisu i odczytu danych zapisanych w
formacie XML.
+Jest to standard definiujacy dostep do plikow XML-owych z poziomu jezyka
programowania.
+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 DTD
+(takze dokonywane na dokumencie w pamieci).
+Biblioteka zostala wykorzystana do zapisu i odczytu danych zapisanych w
formacie XML.
subsubsection{JFreeReport}
-Wa nym elementem tworzonej aplikacji jest mo liwo przegl dania
-a nast pnie zapisywania wynik w dzia ania algorytm w w uniwersalnych
-i czytelnych formatach, mo liwo ci takie udost pnia biblioteka JFreeReport.
-Dane do raportu pobiera ona z obiekt w implementuj cych interfejs TableModel.
-Ten wchodz cy w sk ad bibliotek Swinga interfejs s u y do przedstawiania
danych
-w postaci dwuwymiarowej tabeli i zosta przyj ty jako podstawowa forma
prezentacji
-wynik w kolejnych etap w dzia ania aplikacji. Dodatkowo wymagane jest
stworzenie
-pliku w formacie XML, definiuj cego wygl d i zawarto takiego raportu.
-Po uruchomieniu otrzymujemy pe noekranowy podgl d raportu wygenerowanego
-na podstawie przyj tych parametr w. Mo emy go nast pnie zapisa do pliku
-w jednym z popularnych format w, takich jak: PDF, HTML, CSV czy XLS.
+Waznym elementem tworzonej aplikacji jest mozliwosc przegladania
+a nastepnie zapisywania wynikow dzialania algorytmow w uniwersalnych
+i czytelnych formatach, mozliwosci takie udostepnia biblioteka JFreeReport.
+Dane do raportu pobiera ona z obiektow implementujacych interfejs 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.
+Po uruchomieniu otrzymujemy pelnoekranowy podglad raportu wygenerowanego
+na podstawie przyjetych parametrow. Mozemy go nastepnie zapisac do pliku
+w jednym z popularnych formatow, takich jak: PDF, HTML, CSV czy XLS.
subsubsection{TMXResourceBundle (Translation Memory eXchange
ResourceBundle)}
-Dziedziczy po klasie j zyka Javy ResourceBundle. Wspomaga przystosowanie
interfejsu aplikacji
-w zakresie j zyka jakim pos uguje si u ytkownik.
+Dziedziczy po klasie jezyka Javy – ResourceBundle. Wspomaga
przystosowanie interfejsu aplikacji
+w zakresie jezyka jakim posluguje sie uzytkownik.
Stosowany jest tu otwarty standard pliku TMX w formacie XML.
-Stosowanie tego rozwi zania daje mo liwo lokalizacji tekst w etykiet
-GUI zgodnie z ustawieniami rodowiska i bez ingerencji w kod aplikacji.
-Jedynym warunkiem jest zdefiniowanie j zykowych odpowiednik w w pliku.
-Zastosowanie tej klasy by o nast pstwem zawartej w specyfikacji wymaga
-decyzji o stosowaniu j zyk w: polskiego i angielskiego (patrz rozdzia 4 ).
+Stosowanie tego rozwiazania daje mozliwosc lokalizacji tekstow etykiet
+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 (patrz rozdzial 4
…).
subsubsection{SwingWorker}
-Klasa wspomaga od wie anie panelu graficznego podczas gdy w tle aplikacja
-prowadzi skomplikowane obliczenia. W tym celu tworzony jest przez ni
-dedykowany w tek w kt rym nale y umieszcza kod odpowiedzialny za rysowanie
-interfejsu graficznego okno aplikacji zachowuje sw j wygl d podczas gdy
-g wny w tek aplikacji zajmuje si obliczeniami.
-Klasa nale y do standardowych pakiet w.
-subsubsection{Klasy powi zane z wy wietlaniem okna aplikacji.}
-Klasy udost pnione ramach licencji Wolnego Oprogramowania przez m. in.
Santhosh a
-Kumar a, Patrick a Gotthardt a Guy a Davies a, Gregory ego Kotsaftis a.
-Zarz dzaj oknami wy wietlanymi jako wewn trzne okna w uk adzie graficznym
Swinga -
-JDesktopPane - kt ry na laduje pulpit. Klasy pozwalaj na wygodne zarz
dzanie
-elementami na pulpicie, np. dowolny rozk ad, minimalizacj i maksymalizacj
wszystkich
+Klasa wspomaga odswiezanie panelu graficznego podczas gdy w tle aplikacja
+prowadzi skomplikowane obliczenia. W tym celu tworzony jest przez nia
+dedykowany watek w ktorym nalezy umieszczac kod odpowiedzialny za rysowanie
+interfejsu graficznego – okno aplikacji zachowuje swoj wyglad podczas
gdy
+glowny watek aplikacji zajmuje sie obliczeniami.
+Klasa nalezy do standardowych pakietow.
+subsubsection{Klasy powiazane z wyswietlaniem okna aplikacji.}
+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 -
+JDesktopPane - ktory nasladuje pulpit. Klasy pozwalaja na wygodne
zarzadzanie
+elementami na pulpicie, np. dowolny rozklad, minimalizacje i maksymalizacje
wszystkich
okien z wykorzystaniem opcji menu.
subsubsection{TableSorter}
-Dodaje funkcjonalno sortowania kolumn do klas implementuj cych standardowy
model
-tablicy Swinga TableModel. Po przyci ni ciu nag wka danej kolumny tabeli,
-jej wiersze s sortowane wed ug danej kolumny. Pierwsze przyci ni cie sortuje
-wiersze w kolejno ci rosn cych warto ci, drugie wed ug malej cych a trzecie
-przywraca pocz tkowy uk ad wierszy. Autorzy: Philip Milne, Brendon McLean,
+Dodaje funkcjonalnosc sortowania kolumn do klas implementujacych standardowy
model
+tablicy Swinga – TableModel. Po przycisnieciu naglowka danej kolumny
tabeli,
+jej wiersze sa sortowane wedlug 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.
|
|
Replies: 0 Views: 0
|
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.
|
|