interaktywnych map terenu

Transkrypt

interaktywnych map terenu
WYŻSZA SZKOŁA TURYSTYKI I EKOLOGII
z siedzibą w Suchej Beskidzkiej
WYDZIAŁ INFORMATYKI
KIERUNEK: INFORMATYKA
SPECJALNOŚĆ: INFORMATYKA STOSOWANA
Praca dyplomowa inżynierska
Aplikacja internetowa wspomagająca tworzenie
„interaktywnych map terenu” dla portali WWW
Jakub Turkiewicz, Nr albumu 3338
Mateusz Łysoń, Nr albumu 3280
My niżej podpisani oświadczamy, że składana przeze nas praca dyplomowa pt. „Aplikacja internetowa wspomagająca tworzenie „interaktywnych map terenu” dla portali
WWW” została przygotowana samodzielnie i nie narusza praw autorskich innych
osób. W pracy wykorzystaliśmy publikowane materiały i nie ujawniliśmy informacji
poufnych.
...........................................
data
czytelny podpis
...........................................
data
czytelny podpis
Promotor:
dr inż. Michał Turek
akceptuję pracę
...........................................
podpis promotora
Sucha Beskidzka 2011
Jakub Turkiewicz
Sucha Beskidzka, 28.02.2011
Nr albumu 3338
Kierunek: Informatyka
Specjalność: Informatyka stosowana
OŚWIADCZENIE
Ja niżej podpisany świadom odpowiedzialności prawnej oświadczam, że złożona przeze mnie praca dyplomowa – na stopień inżyniera pt. „Aplikacja internetowa
wspomagająca tworzenie „interaktywnych map terenu” dla portali WWW” została
przygotowana samodzielnie.
Równocześnie oświadczam, że praca ta nie narusza praw autorskich innych osób
w rozumieniu ustawy z dnia 4 lutego 1994 r. o prawie autorskim i prawach pokrewnych (Dz. U. 1994 r. nr 24, poz. 83) oraz dóbr osobistych chronionych prawem
cywilnym.
Ponadto niniejsza praca nie zawiera informacji i danych uzyskanych w sposób
nielegalny i nie była wcześniej przedmiotem innych procedur urzędowych związanych z uzyskaniem dyplomów lub tytułów zawodowych uczelni wyższej.
..............................................................
czytelny podpis autora pracy
2
Mateusz Łysoń
Sucha Beskidzka, 28.02.2011
Nr albumu 3280
Kierunek: Informatyka
Specjalność: Informatyka stosowana
OŚWIADCZENIE
Ja niżej podpisany świadom odpowiedzialności prawnej oświadczam, że złożona przeze mnie praca dyplomowa – na stopień inżyniera pt. „Aplikacja internetowa
wspomagająca tworzenie „interaktywnych map terenu” dla portali WWW” została
przygotowana samodzielnie.
Równocześnie oświadczam, że praca ta nie narusza praw autorskich innych osób
w rozumieniu ustawy z dnia 4 lutego 1994 r. o prawie autorskim i prawach pokrewnych (Dz. U. 1994 r. nr 24, poz. 83) oraz dóbr osobistych chronionych prawem
cywilnym.
Ponadto niniejsza praca nie zawiera informacji i danych uzyskanych w sposób
nielegalny i nie była wcześniej przedmiotem innych procedur urzędowych związanych z uzyskaniem dyplomów lub tytułów zawodowych uczelni wyższej.
..............................................................
czytelny podpis autora pracy
3
Wyższa Szkoła Turystyki i Ekologii z siedzibą w Suchej Beskidzkiej
Streszczenie pracy dyplomowej inżynierskiej:
Tytuł pracy: „Aplikacja internetowa wspomagająca tworzenie „interaktywnych map
terenu” dla portali WWW”.
Autorzy: Jakub Turkiewicz i Mateusz Łysoń
Promotor: dr inż. Michał Turek
Stron: 70, pozycji bibliograficznych: 30, tabel: 2, rysunków: 19, załączników: 1 CD
Słowa kluczowe: interaktywność, mapa, aplikacja, szablon, uniwersalność, funkcjonalność.
Cel pracy: Stworzenie uniwersalnej aplikacji internetowej dla każdego użytkownika,
dostosowanej pod każdą platformę systemową, jak i sprzętową. Głównym jej zadaniem jest stworzenie interaktywnej mapy terenu w bardzo wygodny i nietrudny
sposób.
Zastosowano następujące metody: Analiza dziedziny, rynku i narzędzi, które obrazują konkurencję i użyte przez nią technologie. Przedstawienie szczegółowo wyjaśnionego problemu oraz implementacja z użyciem odpowiednich narzędzi, bazując przede
wszystkim na wyciągniętych wnioskach z całej analizy teoretyczno-badawczej.
Efekt pracy: Uzyskano aplikację webową, działającą na serwerze wirtualnym i przedstawiającą edytor map. Różni się ona od konkurencyjnych aplikacji, znajdujących
się w sieci tym, że posiada niespotykane dotychczas rozwiązania edycyjne, łatwy w
obsłudze interfejs użytkownika i wydajny tryb pracy.
4
Wyższa Szkoła Turystyki i Ekologii z siedzibą w Suchej Beskidzkiej
Graduate work Summary:
Title of work: The web application supporting the creation of “interactive area maps”
for Web portals.
Authors: Jakub Turkiewicz i Mateusz Łysoń
Supervisor: Michał Turek
Pages: 70, references: 30, tables: 2, drawings: 19, appendix: 1 CD
Keywords: interactivity, map, application, template, versatility, functionality.
The Purpose of work: Create a universal web application for each user, adapted into
any platform and hardware system. Main task of it is making a interactive area map
in a very convenient and not difficult way.
The followed methods were used: Domain, market and tool analysis that reflect the
competition and all used technologies by them. Detailed presentation of the unexplained problem and implementation with usage of appropriate tools, based primarily
on conclusion from whole analysis of the theoretical research.
The effect of the work: Obtained the web application which is running on a virtual
server and presents a map editor. It differs from competing applications located in
network that it has a unique solution to map edition, easy to use user interface and
efficient mode of operation.
5
"Składamy serdeczne podziękowania Panu Michałowi Turkowi,
za cenne porady, cierpliwość, poświęcony nam czas oraz wsparcie."
6
SPIS TREŚCI
WSTĘP.................................................................................................................. 9
ROZDZIAŁ I
PODSTAWOWE ZAGADNIENIA....................................................................... 10
1.1 Interaktywna mapa Google Maps.............................................................. 11
1.2 Lokalizator internetowy Zumi.................................................................... 12
1.3 Serwis Wikimapia...................................................................................... 13
1.4 Podsumowanie podstawowych zagadnień................................................... 14
1.5 Cel projektu............................................................................................... 15
1.6 Założenia dotyczące projektu..................................................................... 15
ROZDZIAŁ II
KONCEPCJA ROZWIĄZANIA........................................................................... 17
2.1 Funkcjonalność tworzonego oprogramowania............................................. 17
2.2 Wymagana funkcjonalność narzędzi........................................................... 18
2.3 Wybór narzędzi do modelowania projektu................................................. 18
2.3.1 Unified Modeling Language................................................................ 19
2.4 Wybór narzędzi koniecznych do stworzenia implementacji......................... 19
2.4.1 Poszukiwanie narzędzi do budowy aplikacji internetowej................... 19
2.4.2 Środki wymagane do stworzenia aplikacji internetowej...................... 21
2.5 Możliwe platformy dla projektowanej aplikacji.......................................... 21
2.5.1 Platforma sprzętowa.......................................................................... 21
2.5.2 System operacyjny.............................................................................. 22
2.5.3 Platforma umożliwiająca składowanie danych................................... 23
2.6 Wybór edytorów do pisania dokumentacji................................................. 24
2.6.1 Microsoft Word.................................................................................. 25
2.6.2 LATEX................................................................................................. 25
2.7 Podsumowanie koncepcji........................................................................... 25
ROZDZIAŁ III
PROJEKT ROZWIĄZANIA................................................................................ 27
3.1 Modelowanie diagramu przypadków użycia............................................... 27
3.1.1 Charakterystyka przypadków użycia.................................................. 30
3.2 Schemat bazy danych................................................................................. 41
3.2.1 Relacje w tabelach............................................................................. 42
7
3.3 Podsumowanie projektu rozwiązania......................................................... 45
ROZDZIAŁ IV
IMPLEMENTACJA............................................................................................. 46
4.1 Podział pracy nad aplikacją....................................................................... 46
4.2 Rozmieszczenie aplikacji w plikach............................................................ 46
4.3 Spis modułów............................................................................................. 47
4.4 Opis poszczególnych modułów w aplikacji................................................. 48
4.4.1 Moduł logowania, rejestracji i odzyskiwania haseł............................. 49
4.4.2 Moduł głównego menu....................................................................... 50
4.4.3 Moduł tworzenia nowego projektu..................................................... 51
4.4.4 Moduł edycji projektu........................................................................ 51
4.5 Podsumowanie implementacji.................................................................... 55
ROZDZIAŁ V
BEZPIECZEŃSTWO I TESTY APLIKACJI....................................................... 57
5.1 Wymogi haseł użytkowników...................................................................... 57
5.2 Szyfrowanie haseł użytkowników................................................................ 57
5.3 Autoryzacja użytkowników........................................................................ 58
5.4 Zapobieganie SQL Injection....................................................................... 58
5.5 Podsumowanie bezpieczeństwa................................................................... 58
5.6 Testy aplikacji............................................................................................ 59
5.6.1 Test pierwszy...................................................................................... 59
5.6.2 Test drugi........................................................................................... 59
5.7 Podsumowanie testów i bezpieczeństwa..................................................... 60
ROZDZIAŁ VI
ZAKOŃCZENIE I PODSUMOWANIE PRACY.................................................. 61
DODATEK A: WYKAZ ILUSTRACJI................................................................ 63
DODATEK B: ZESTAWIENIE TABEL............................................................... 63
DODATEK C: INSTALACJA I INSTRUKCJA OBSŁUGI APLIKACJI............. 64
BIBLIOGRAFIA.................................................................................................. 69
8
WSTĘP
Prezentowany system ma wspomagać tworzenie interaktywnych map terenu na
potrzeby portali WWW, w prosty i wygodny sposób uwzględniając wymogi klienta,
takie jak własne grafiki, czy dowolne modyfikacje.
Praca podzielona została na 6 rozdziałów. Pierwszy rozdział dotyczyć będzie
analizy dziedziny problemu, w której uwzględniono zagadnienia związane z tematyką map oraz rozpoznawanie rynku, w kierunku już istniejących produktów. W
drugim rozdziale dokonano przeglądu metod modelowania, dziedziny problemu oraz
przedstawiono narzędzia, którymi można dany problem rozwiązać. Ustalono w nim
koncepcję rozwiązania. Trzeci rozdział, to z kolei projekty zakładanego systemu,
w skład którego wchodzi model diagramu przypadków użycia oraz schemat bazy
danych. W czwartym rozdziale opisano implementacje rozwijającego się systemu z
rozbiciem na strukturę plików oraz poszczególne moduły aplikacji. Podsumowaniem
implementacji jest działająca aplikacja, którą należy dalej rozwijać. Rozdział piąty,
to opis zastosowanych środków bezpieczeństwa oraz możliwe zagrożenia. W rozdziale
tym rozpisano również testy użytkowników końcowych aplikacji i wysnuto wnioski z
tych testów. Rozdział szósty to zakończenie i podsumowanie całej pracy.
Poszczególne fragmenty Pracy wykonali:
Jakub Turkiewicz:
• Rozdział 1, Rozdział 3
• Testy systemu i Zakończenie
• Dodatki A, B i C
• Praca napisana w LATEX
Mateusz Łysoń:
• Rozdział 2, Rozdział 4
• Testy systemu i Zakończenie
9
ROZDZIAŁ I
PODSTAWOWE ZAGADNIENIA
Mapa jest to pomniejszony i uogólniony model rzeczywistości. Od bardzo dawna
ludzie wykorzystują mapy do określania swojego położenia, ukształtowania terenu,
określania drogi, wyznaczania granic oraz przedstawiania różnorakich statystyk. Jest
wiele rodzajów map na których można przedstawić pewne dane. Przykładowymi
rodzajami map są:
• Mapa ogólnogeograficzna1 – „mapa, która zawiera wszystkie główne obiekty powierzchni Ziemi takie wody, zabudowa, roślinność), wraz z jej ukształtowaniem (rzeźba terenu), przedstawione z jednakowym względnym stopniem
szczegółowości (wszystkie elementy przestrzeni geograficznej są równoważne).”
• Mapa kropkowa2 – „mapa, na której wielkość i przestrzenne rozmieszczenie pewnego zjawiska przedstawiono za pomocą kropek. Najczęściej spotyka się
mapy kropkowe prezentujące rozmieszczenie ludności. Wagą kropki nazywa się
wielkość zjawiska odpowiadającą jednej kropce (np. 1000 mieszkańców).”
• Mapa hipsometryczna3 – „mapa ogólnogeograficzna, na której przy pomocy poziomic i barw między nimi zawartych jest odwzorowane ukształtowanie
powierzchni lądu. Mapa hipsometryczna przedstawia wybrane wysokości oraz
plastycznie obrazuje układ nizin, wyżyn i gór. Na szczegółowych mapach hipsometrycznych (małych terenów) można odczytać wypukłe formy terenu (pagórki,
wzgórza i góry), oraz formy wklęsłe (doliny i nawet małe kotliny).”
Zwiększające się nieustannie zapotrzebowanie na graficzne zilustrowanie danych
znajduje odzwierciedlenie w tworzeniu nowych map. W dobie komputeryzacji oczywistym jest przeniesienie map rysowanych na cyfrowe; umożliwia to przekazywanie
danych w nowej formie. Na potrzeby Internetu powstały interaktywne mapy.
Z istniejących w Internecie map interaktywnych na większą uwagę zasługują
m.in. Google Maps, Zumi, Wikimapia.
1
http://pl.wikipedia.org/wiki/Mapa_ogólnogeograficzna
http://pl.wikipedia.org/wiki/Mapa_kropkowa
3
http://pl.wikipedia.org/wiki/Mapa_hipsometryczna
2
10
1.1 Interaktywna mapa Google Maps
Serwis firmy Google, zakłada udostępnianie bazy map i zdjęć (robionych przez z
satelitę i z samolotu). W serwisie Google Maps zarówno zdjęcia jak i mapy można
oglądać w kilkunastu skalach. Jednakże zdjęcia nie są wszędzie skalowane w ten sam
sposób. Największą skalowalność zdjęć posiadają duże miasta, najmniejszą skalowalność – wsie i słabo zaludnione tereny.
W serwisie dostępne jest również szybkie wyszukiwanie szukanych pozycji poprzez bezpośrednie wpisanie lokalizacji (Geokoder), lub za pomocą współrzędnych
geograficznych. Ponadto istnieje możliwość ustalania tras między lokalizacjami. Trasy można dowolnie modyfikować poprzez przeciąganie myszą jej punktów. Na podstawie trasy jest obliczany przybliżony czas podróży.
Od maja 2007 roku Serwis Google Maps oferuje nową formę przedstawiania rzeczywistości którą nazwał Street View4 . Jest to model rzeczywistości przedstawiony
jako panorama zdjęć którą można oglądać z perspektywy „oczu”, dowolnie obracając
i „rozglądając się” po sfotografowanych miejscach. Model ten jest bardzo szczegółowy lecz ma tylko kilka skal. Dostępność tej formy interaktywnych map została jak
na razie ograniczona do największych miast świata, lecz jest wciąż rozszerzana.
By poszerzyć popularność serwisu firma Google stworzyła dla swoich użytkowników API (z ang. Application Programming Interface)5 dzięki któremu mogą oni
umieszczać na swoich witrynach interaktywne mapy Google Maps. Dostęp do API
R to dostęp
utworzono na dwa sposoby. Pierwszy tzw. Google Maps API for Flash
z poziomu języka JavaScript i ActionScript 3 (obiektowy język Adobe Flash). Drugi
to dostęp w postaci obrazu, tzw. Google Static Maps API.
API dla Google Maps począwszy od wersji 2.8 udostępnia szeroką funkcjonalność dla użytkowników. Gadgety takie jak mierzenie natężenia ruchu drogowego,
możliwość geokodowania adresów, wyznaczanie tras przejazdu wraz z listą kroków,
rysowanie polilinii, wsparcie dla języka KML6 /GeoRSS7 przyniają się do wzrostu
popularności.
Dzięki swojemu API firma Google wypromowała swój produkt do stopnia niemal najpopularniejszego przedstawiania modelu rzeczywistości. Z produktu Google
4
http://www.google.com/intl/en_us/help/maps/streetview/
http://code.google.com/intl/pl/apis/maps/index.html
6
http://code.google.com/intl/pl/apis/kml/documentation/kml_tut.html
7
http://www.georss.org/Main_Page
5
11
korzystają zarówno osoby prywatne jak i firmy. Do niewątpliwych atutów Google
Maps należy dodać fakt, iż jest to produkt bezpłatny dla wszystkich użytkowników.
Nie łatwo będzie komukolwiek przebić serwis Google Maps funkcjonalnością. Lecz
wciąż nie zapełnia rynku potrzeb użytkowników.
1.2 Lokalizator internetowy Zumi
Serwis Onet.pl we współpracy z kilkoma firmami stworzył lokalizator internetowy o nazwie „Zumi”. Lokalizator powstał w 2007 roku i był połączeniem koncepcji
interaktywnych map internetowych z koncepcją tzw. „żółtych stron” opierających się
na spisie oraz reklamowaniu abonentów, użytkowników, czy instytucji. Funkcjonalność serwis czerpie z innych produktów takich jak np. Google Maps, dodając swoje
własne pomysły.
Zumi oferuje swoim użytkownikom usługę podobną do Street View firmy Google
którą nazwano „Ulica 360o ”. Z tym że w przypadku Zumi oferta ta jest kierowana
jako nowy, mający przyciągnąć użytkowników i klientów, sposób reklamy czy to
małych firm czy instytucji. Usługa reklamowa polegać ma na tym iż użytkownik
serwisu Zumi czy to szukając czegoś konkretnego czy też z ciekawości mógłby z
poziomu prezentowanej panoramy „wejść” do zabytku, kościoła, sklepu, instytucji,
restauracji czy jakiejkolwiek firmy.
Wyszukiwarka Zumi działa na swojej bazie tzw. Point Of Interest (POI)8 ,
co potocznie nazwano punktem użyteczności publicznej, punktem zainteresowania
czy użytecznym miejscem. POI stosuje się głównie w nawigacjach GPS. Minimalną
informacją zawartą w POI jest położenie geograficzne. POI może również zawierać
informację o typie i nazwie, np. kino „X” czy teatr „Y”. Założeniem portalu Zumi jest
jednak przypisanie jak największej ilości danych do danego POI. Do dodatkowych
danych zbieranych przez serwis można zaliczyć: adres fizyczny, adres e-mail, adres
strony WWW, numer NIP, numer REGON, numer KRS, telefon, forma własności,
zatrudnienie w obiekcie, godziny otwarcia, możliwości płatności kartą, właścicielach
czy inne warte uwagi dane multimedialne jak np. filmy wideo, zdjęcia czy opisana wcześniej panorama „Ulica 360o ”. Wyszukiwać można m.in.: instytucje, zabytki,
bankomaty, punkty informacji turystycznej, inne atrakcje turystyczne, noclegi, in8
http://pl.wikipedia.org/wiki/Point_of_interest
12
formacje drogowe, restauracje, puby itp. Wyszukiwanie odbywa się po słowach kluczowych oraz lokalizacjach. Dodatkowo w wynikach wyszukiwania jest informacja o
odległości obiektu od wybranego przez użytkownika punktu.
Ciekawą funkcją Zumi jest funkcja ustalania trasy. Do wyboru są różne formy
podróży. Można stworzyć swoją własną trasę deklarując podróż samochodem lub
pieszo. Można również skorzystać z wyszukiwarki rozkładów i połączeń komunikacji
miejskiej. Niestety opcja ta dotyczy tylko ośmiu największych miast Polski. Przy
tworzeniu własnej trasy przejazdu serwis informuje użytkownika o utrudnieniach na
drodze, możliwości zobaczenia obrazu z kamery umieszczonej przy drodze połączonej w niektórych przypadkach ze stacją meteorologiczną, czarnych punktach czyli
strefach szczególnie zagrożonych czy statycznych fotoradarach.
Kolejną ciekawostką serwisu Zumi jest uruchomiona w czerwcu 2009 roku usługa
gromadzenia i wyświetlania na mapie ogłoszeń sprzedaży nieruchomości. Ustalając
lokalizację możemy otrzymać wykaz ogłoszeń sprzedaży nieruchomości z największych polskich serwisów ogłoszeniowych.
Dzięki współpracy serwisu Zumi z serwisem Allegro jaką nawiązano w 2010 roku
firmy znajdujące się w Zumi mogą oferować użytkownikom których interesują zakupy
na danym obszarze swoje produkty wystawione na portalu aukcyjnym Allegro.pl co
zwiększa zainteresowanie poprzez możliwość wstępnego zobaczenia produktu oraz
jego opisu.
Wpisanie do bazy Zumi jest bezpłatne. Serwis umożliwia wyróżnianie firm czy
wzbogaconą prezentację za o pobiera opłaty. Obecnie w bazie serwisu Zumi znajduje
się ponad milion punktów użyteczności publicznej zwanych POI.
1.3 Serwis Wikimapia
Wikimapia to wielojęzyczny międzynarodowy portal internetowy. Hasłem przewodnim portalu jest: „describing the whole planet Earth” co w wolnym tłumaczeniu
znaczy “opiszmy cały świat”. Hasło przewodnie ma swoje rozwinięcie w samej formie
portalu. Wikimapia jest połączeniem edytowalności wiki i map Google Maps. Dzięki
takiemu połączeniu możliwe jest nie tylko przeglądanie map lecz także samodzielne
zaznaczanie miejsc na całym świecie.
Portal udostępnia kilka warstw przeglądania. Zapożyczone od firmy Google war-
13
stwy map satelitarnych, warstwa topograficzna i tzw. warstwa hybrydowa czyli mapa
satelitarna z naniesionymi uproszczonymi warstwami dróg, rzek itp. Podstawowymi
warstwami są warstwy tworzone przez użytkowników które to nanosi się na wybraną
warstwę zapożyczoną od Google Maps. Warstwy użytkowników to warstwy obiektów
z dodanymi opisami w różnych językach.
Tworzenie warstw przez użytkowników odbywa się w trybie wiki przez co warstwy są edytowalne dla wszystkich użytkowników i każdy może nanosić poprawki.
Warstwy tworzy się rysując bezpośrednio na mapie wielokąty określające dany obszar. Pierwotnie warstwy miały tylko formę kwadratu ale ulepszono formę tworzenia warstw w 2007 roku co przyczyniło się do zwiększenia dokładności pokazywania
danego obszaru. Również w 2007 roku dodano możliwość rysowania na warstwach
łączonych linii prostych które przyjmują status drogi. Dzięki temu rozwiązaniu można np. dodać fragment drogi nie istniejący na mapie a będący drogą wiejską. Drogi
takie są widoczne na odrębnych warstwach lub w trybie wyświetlania nazwanym
„Wikimapia map” i przedstawiającym wszystkie warstwy stworzone przez użytkowników.
Do tworzonej czy też już istniejącej warstwy można dodać opis w kilku językach
lub przekierowanie do artykułu w Wikipedii. Można również przypisać kategorię do
warstwy co niesie za sobą dokładniejsze wyniki wyszukiwania, filtrację do wybranych warstw, ograniczanie widoczności wybranych obiektów. Niektóre z dostępnych
kategorii mają dodatkowo szczególne znaczenie w prezentacji na mapie w trybie „Wikimapii map”. I tak np. obszar oznaczony jako las będzie wyświetlany na mapie z
wyróżnieniem w kolorze zielonym; rzeki, zbiorniki wodne czy stawy będą wyświetlane
na niebiesko. Takie wyróżnienia kolorami ułatwiają orientację podczas przeglądania
mapy.
Wikimapia jest portalem bezpłatnym, a utrzymuje się z wyświetlania reklam
Google AdWords w miejscu opisu wybranych przez użytkownika lokalizacji.
1.4 Podsumowanie podstawowych zagadnień
Obecnie w sieci istnieje wiele portali które mają zapotrzebowanie na umieszczanie własnych danych w interaktywnych mapach. Portale te korzystają z niestandardowych, niekiedy bardzo prymitywnych rozwiązań. Istnieją rozwiązania bezpłatne
14
i komercyjne. Z wymienionych powyżej produktów można wybrać najbliższy oczekiwaniom, lecz oczekiwań jest tyle ile klientów i prędzej czy później ten brak standardów doprowadzi do zaistnienia nowych potrzeb i wymyślania nowych rozwiązań.
Dodatkowo część produktów nie jest aktualizowana na bieżąco co powoduje niejednokrotnie spore przekłamania w prezentowanych danych.
Większość z oferowanych na rynku produktów korzysta z technologii firmy Google, tworząc mniej lub bardziej udane nakładki na gotowy produkt. Inne koncepcje
zakładają użycie technologii Flash. Do najprostszych należą techniki polegające na
wykorzystaniu plików graficznych w dużej rozdzielczości jako podkładu i napisaniu
kilku funkcji umożliwiających przeglądanie naniesionej zawartości.
Widać że istniejące produkty są ograniczone pod względem treści i zasobów. Nie
istnieją produkty które oferowałyby rozbudowane możliwości przekazywania treści i
zasobów. Złożoność dostępnych produktów nie jest satysfakcjonująca.
1.5 Cel projektu
Celem projektu jest stworzenie uniwersalnego szablonu do tworzenia map interaktywnych, dedykowanych na portale WWW, który ułatwiłby tworzenie i wdrażanie
produktu. Szablon taki musi być jak najbardziej elastyczny. Musi uzupełniać lukę
na rynku aplikacji internetowych, udostępniając opcje dowolnej modyfikacji zarówno tworzonych map jak i aktualnie istniejących już w bazie, dodawania własnych
grafik w postaci zdjęcia, czy tapety, miniaturek o określonych wymiarach, ikon, dodawania opisów poszczególnych lokalizacji oraz opisów budowli, wyświetlających się
odpowiednio jako „chmurka” i legenda, dodawania plików dźwiękowych oraz audiowizualnych.
1.6 Założenia dotyczące projektu
Analizując cele dochodzimy do następujących założeń:
• aplikacja ma być uniwersalna, czyli działać na wszystkich platformach systemowych w możliwie jak największej liczbie konfiguracji,
• wymagana jest opcja tworzenia własnych, personalnych ustawień, czyli własnej
bazy danych z preferencjami tworzenia danej mapy,
15
• bazy danych powinny być luźno modyfikowalne, posiadać opcje dowolnego
dodawania i usuwania zamieszczonych ustawień,
• tworzona aplikacja powinna oferować nowe, niedostępne do tej pory opcje budowania map internetowych,
• powinno istnieć kilka szablonów przykładowych dla klientów.
16
ROZDZIAŁ II
KONCEPCJA ROZWIĄZANIA
Znając funkcjonalność kilku produktów dostępnych na rynku aplikacji internetowych przechodzimy do ustalania funkcjonalności własnej aplikacji. O ile przyglądając się dostępnym aplikacjom, możemy w pewnych przypadkach w przybliżeniu
stwierdzić w jakim języku programowania zostało wykonane oprogramowanie, o tyle
nie jesteśmy w stanie stwierdzić tego jednoznacznie. W czym i jak napisana została
aplikacja wie tylko programista ją piszący.
Wybierając narzędzia do stworzenia naszej aplikacji musimy uwzględnić funkcjonalność jaką chcemy uzyskać, zaawansowanie narzędzi, poziom trudności narzędzi i
możliwość implementacji narzędzi na wszystkich platformach.
2.1 Funkcjonalność tworzonego oprogramowania
Wzorując się na Wikimapii9 tworzony produkt powinien zawierać funkcję tworzenia własnych warstw, ich dowolnego wyświetlania, modyfikacji czy nakładania
ich na siebie.
Niezbędna jest funkcja zapisywania informacji tekstowych na danej pozycji mapy.
Stanowi to podstawową funkcjonalność wszystkich większości produktów na rynku.
Dodawanie własnych multimediów to kolejny krok do uniwersalnej aplikacji. Konkurencja podnosi zainteresowanie swoim produktem zwiększając funkcjonalność w
tym zakresie. W dobie dzisiejszych multimediów niezbędnym stało się ich udostępnianie by poprawić zainteresowanie jakimkolwiek produktem. Najlepszym rozwiązaniem byłoby udostępnienie możliwości dodawania każdego rodzaju multimediów,
począwszy od prostej grafiki, a na danych audio-wizualnych kończąc.
Każda mapa interaktywna powinna udostępniać możliwość wyznaczania własnych tras, ich rysowania na mapie, zapisywania do bazy, edycji czy usuwania.
Wyszukiwanie określonych lokalizacji to również niezbędna funkcjonalność by
można było mówić o w pełni interaktywnej mapie terenu.
Narzędzie które posiada Google Maps10 i które niejako kopiuje serwis Zumi.pl11
9
http://wikimapia.org/
http://maps.google.pl/
11
http://www.zumi.pl/
10
17
było by pomocne w podniesieniu atrakcyjności oprogramowania. Narzędziem tym
jest w przypadku firmy Google – StreetView, a w przypadku serwisu Zumi.pl – Ulica 360o .12
2.2 Wymagana funkcjonalność narzędzi
Aby zbudować aplikację spełniającą stawiane oczekiwania musimy wybrać narzędzia które dobrze się ze sobą komunikują. Mają wzajemne wspomaganie i przy
współpracy są w miarę niezawodne. Skoro jest to aplikacja internetowa to niezbędny
jest serwer na którym będzie przechowywana. Dane aplikacji powinny być przechowywane w jakiejś bazie danych. Po napisaniu aplikacji należy ją skompilować więc
będzie nam potrzebny kompilator wybranego języka programowania.
Przed samą budową aplikacji powinniśmy ją zamodelować aby późniejsza praca szła według założeń z modelu. Funkcjonalność jaką wymagamy od sposobów
modelowania to możliwość opisu procesów jakie mają zachodzić w aplikacji, opisu
terminatorów i ich komunikacji z aplikacją, opisy magazynów danych.
2.3 Wybór narzędzi do modelowania projektu
Tworzona aplikacja i jej założenia wymagają zaprojektowania złożonego systemu. Dla ułatwienia samego procesu projektowania wskazane jest użycie jednej z
metodyk, służących do modelowania dziedziny problemu. Dużą popularność zyskują metodyki umożliwiające modelowanie w trybie zorientowanym obiektowo. Wiążą
się one z wykorzystaniem specjalnych języków modelowania - także graficznych.
Wśród nich niezwykle dużą popularność zyskał język UML (z ang. Unified Modeling
Language)13 .
Z uwagi na szerokie możliwości graficznego pokazania różnych aspektów projektowania taka właśnie metodyka wydaje się najbardziej odpowiednia do przedstawienia
dziedziny problemu projektowanej aplikacji.
12
13
http://www.zumi.pl/onas/1,1575392,artykul.html
http://www.uml.org/
18
2.3.1
Unified Modeling Language
Występująca na rynku przewaga narzędzia do modelowania pod nazwą UML nad
innymi sposobami modelowania dziedziny problemu wskazuje na konieczność użycia
części oferowanych przez UML metod do zobrazowania problemu. Cała funkcjonalność metody UML nie jest nam potrzebna by prawidłowo zamodelować tworzony
system. Diagramy które będziemy wykorzystywać to diagram przypadków użycia,
klas oraz encji.
2.4 Wybór narzędzi koniecznych do stworzenia
implementacji
Do opracowania założonego rozwiązania wymagane jest zaprojektowanie i wykonanie działającej implementacji aplikacji internetowej na podstawie założonego
projektu. Zarówno zaprojektowanie jak i wykonanie aplikacji internetowej będą wymagały zaangażowania dodatkowych środków, głównie w postaci starannie dobranych narzędzi i technologii.
2.4.1
Poszukiwanie narzędzi do budowy aplikacji internetowej
Osiągnięcie w budowanej aplikacji określonej w rozdziale 2.1 funkcjonalności będzie prawdopodobnie wymagało użycia kliku narzędzi umożliwiających budowanie
aplikacji internetowych, budowania interfejsu dla użytkownika oraz silnika aplikacji
który sprosta późniejszemu zadaniu przetwarzania dużej ilości danych.
PHP Hypertext Preprocesor
PHP14 to obiektowy i skryptowy język programowania dla stron internetowych.
Jest bardzo popularny ze względu na swoją bardzo dobrą współpracę z serwerem
WWW Apache oraz serwerem baz danych MySQL. Jego szerokie możliwości oraz
szereg dodatków czynią go językiem programowania bardzo przydatnym w budowie
14
http://www.php.net
19
aplikacji internetowych. Z mnogości funkcji jakie oferuje PHP możemy wyszczególnić te najbardziej przydatne w budowaniu naszej aplikacji.
Funkcje łączenia z bazą danych
Ponieważ zdecydowaliśmy się przetrzymywać dane w bazie danych, powinniśmy
mieć do tych danych łatwy dostęp. PHP umożliwia nam szereg funkcji operujących
na bazach danych wielu producentów. Począwszy od łączenia się z wybraną bazą
danych, aż do zamknięcia połączenia, mamy możliwość dość swobodnego manipulowania danymi zawartymi w bazie.
Funkcje przetwarzania tekstu
Dzięki rozbudowanym funkcjom do przetwarzania tekstu jakie posiada PHP, możemy dobrze analizować wpisywaną przez użytkownika zawartość, aby zwiększyć
bezpieczeństwo aplikacji.
Język programowania – JavaScript
JavaScript jest obiektowym i skryptowym językiem programowania wykorzystywanym głównie na stronach WWW. Często jest używany do zapewnienia interaktywności.
jQuery Framework
Biblioteka programistyczna, która jest dedykowana dla języka JavaScript. Umożliwia pozyskanie bardzo efektywnych animacji na stronach internetowych, co sprawia, że stają się one dynamiczne i bardziej profesjonalne. Kod napisany w jQuery
jest o wiele mniejszy pod względem objętości, czytelniejszy i co najważniejsze, dużo
mniej skomplikowany w porównaniu do czystego JavaScript’u. Wielką zaletą omawianego framework’u jest to, że cieszy się ona pełną funkcjonalnością na wszystkich,
dostępnych przeglądarkach, jakie są aktualnie na rynku internetowym.
20
CSS – Kaskadowe arkusze stylów
Język, który został stworzony dzięki organizacji W3C (World Wide Web Consortium)15 . Jest to standard mający na celu kreowanie formy w jakiej dana strona WWW zostanie wyświetlona. Całość bazuje na listach reguł, wewnątrz których
można w łatwy sposób wypozycjonować poszczególne elementy na stronie, nadać
czcionkom konkretną rodzinę, kolor, czy wielkość oraz manipulować szerokościami
marginesów i odstępami międzywierszowymi.
2.4.2
Środki wymagane do stworzenia aplikacji internetowej
Do wymodelowania projektu systemu konieczne będzie użycie niektórych opisanych narzędzi. Najlepszym rozwiązaniem będzie wykorzystanie tylko systemu do
modelowania UML ze względu na wyczerpującą funkcjonalność tegoż systemu.
Do zaprojektowania systemu z modelu najlepszymi narzędziami będą: podstawowy język tworzenia stron internetowych HTML i xHTML, obiektowo zorientowany
język PHP oraz język programowania JavaScript.
Do graficznego wykończenia aplikacji najlepszym rozwiązaniem będzie kaskadowy arkusz stylów i biblioteka jQuery.
2.5 Możliwe platformy dla projektowanej aplikacji
Jako że jednym z założeń jest uniwersalność aplikacji, należy zastanowić się nad
możliwymi platformami i systemami na których będzie bezproblemowo działać nasza aplikacja. Ze względu na bardzo dużą liczbę dostępnych na rynku możliwości
zachodzi potrzeba wymienienia kliku najpopularniejszych.
2.5.1
Platforma sprzętowa
Charakterystyka aplikacji zakłada że będzie ona wykorzystywana raczej stacjonarnie w firmach aniżeli na urządzeniach przenośnych. Dodatkowo aplikacja nie będzie wymagać dostępu do Internetu jako że będzie posiadać opcje zapisu projektu
15
http://www.w3.org/
21
do pliku. Dostęp do Internetu jest konieczny do umieszczenia projektu, stworzonego
w aplikacji, w sieci. Podążając w tym kierunku możemy wybrać platformę sprzętową
jaką jest PC – Personal Computer16 . Jest to platforma najbardziej rozpowszechniona i najłatwiej dostępna oraz ma pełną możliwą funkcjonalność.
2.5.2
System operacyjny
Przy wyborze systemu operacyjnego kierować będziemy się przede wszystkim
łatwością implementacji narzędzi, jego dostępnością i popularnością na rynku oraz
osobistymi doświadczeniami.
System operacyjny rodziny Windows
Najbardziej rozpowszechniony system operacyjny wykorzystywany w rozwiązaniach domowych i komercyjnych. Przeznaczony na komputery stacjonarne i przenośne. Jego niewątpliwą zaletą jest liczba użytkowników. Co zwiększa liczbę użytkowników, do których ma dotrzeć tworzona aplikacja.
Rodzinę systemów MS Windows najlepiej zawęzić do trzech ostatnich i najpopularniejszych systemów operacyjnych tj. MS Windows XP, MS Windows Vista oraz
MS Windows 7.
Na systemach z rodziny Windows nie będzie żadnego problemu z doborem narzędzi do budowy aplikacji.
System operacyjny rodziny Linux
Do rodziny systemów operacyjnych Linux można zaliczyć bardzo dużo zróżnicowanych dystrybucji, które można podzielić na funkcjonalność jaką mają spełniać.
Systemy operacyjne Linux przeznaczone są przede wszystkim na wszelkiego rodzaje
serwery czy urządzenia sieciowe. Popularnością dorównują systemom operacyjnym
rodziny MS Windows.
Jednakże zaawansowanie tych systemów ogranicza liczbę użytkowników do tych
bardziej zaawansowanych.
16
http://pl.wikipedia.org/wiki/Komputer_osobisty
22
Narzędzia do budowy naszej aplikacji dobrze współpracują z tymi systemami.
Jest on więc również odpowiedni.
System operacyjny rodziny Mac OS X
Ostatnim z porównywanych przez nas systemów jest Mac OS X, który jest dedykowany tylko i wyłącznie dla komputerów stacjonarnych, jak i przenośnych, kalifornijskiej korporacji, jaką jest Apple Inc.17
System ten jest bardzo prosty w użyciu, a przede wszystkim jest szybki i stabilny.
Czasami można mieć wrażenie, że jest połączeniem dwóch omawianych wcześniej
systemów. Łatwość w obsłudze, którą mamy w systemach MS Windows oraz szeroki
wachlarz narzędzi występujący w systemach Linux, daje rewelacyjną kompilację,
jaką jest Mac OS X.
Co raz to większa popularność i narastające zainteresowanie omawianym systemem, doprowadziła do tego, że również to oprogramowanie znajduje się na naszej
liście rozwiązań o wykorzystanych i możliwych platformach.
Jeśli zaś poruszymy kwestię narzędzi, które będą potrzebne do powstania rozwiązania, to nie musimy się martwić, ponieważ i na ten system operacyjny jest bardzo
duża dostępność narzędzi, programów i aplikacji wspomagających budowę naszego
szablonu.
2.5.3
Platforma umożliwiająca składowanie danych
Projekt systemu zakłada szeroką gamę usług, z których będą mogli korzystać
przyszli użytkownicy. Zapewne przez działający system przewinie się spora ilość
danych, które trzeba będzie gdzieś gromadzić. Sugeruje to zastosowanie dobrej,
ale przede wszystkim wydajnej platformy do gromadzenia i składowania danych.
Najlepszym rozwiązaniem wydaje się wykorzystanie gotowego Systemu Zarządzania Bazą Danych (SZBD)18 , umożliwiającego dostęp interakcyjny z wykorzystaniem
specjalnego dialektu języka SQL. Istnieje sporo takich systemów, z których można
skorzystać w różnych przypadkach. Żeby znaleźć najbardziej optymalny system dla
17
18
http://www.apple.com/
http://pl.wikipedia.org/wiki/System_zarządzania_bazą_danych
23
projektowanej aplikacji, należy w takiej sytuacji dokładnie przeanalizować najpopularniejsze przypadki dostępne na rynku. Spośród wszystkich możliwości zostały
wybrane dwa systemy, a są nimi MySQL i PostgreSQL.
SZBD – MySQL
Chyba najpopularniejszym obecnie stosowanym rozwiązaniem jest wolno dostępny system zarządzania relacyjną bazą daynch pod nazwą MySQL. System ten jest
pisany z myślą o szybkości. MySQL jest w większej części zgodny z obowiązującym
standardem SQL:2003. System ten wprowadza swoje własne rozszerzenia i elementy
języka SQL.
Dużą zaletą MySQL jest dostępność tego systemu pod większość popularnych
platform systemowych i różnych architektur procesorów. Czyni go to systemem uniwersalnym.
MySQL jest wykorzystywany z serwerem WWW Apache oraz implementacją
języka PHP jako platforma AMP. Jest to najpopularniejsza platforma do budowy
stron i aplikacji internetowych.
SZBD – PostgreSQL
Jeden z trzech najczęściej wykorzystywanych systemów zarządzania bazami danych. Obsługuje procedury pisane w wielu popularnych językach min. Python, Ruby,
PHP, C, C++ czy Java. Posiada rozbudowany system indeksowania.
W PostgreSQL dostępny jest mechanizm wyzwalaczy, który pozwala na automatyczne uruchamianie procedur po pewnych operacjach.
2.6 Wybór edytorów do pisania dokumentacji
Ten podrozdział, dotyczyć będzie analizy wszystkich narzędzi, które posłużą do
powstawania tej dokumentacji. Dostępnych programów i edytorów tekstu w sieci jest
ogromna ilość, ale w tej pracy cała liczba możliwych technologii została ograniczona
do dwóch najbardziej użytecznych i popularnych technik. Mowa tutaj o procesorze
24
tekstu, jakim jest Microsoft Word19 , dostępnym w pakietach biurowych MS Office20
oraz o oprogramowaniu LATEX21 .
2.6.1
Microsoft Word
Jak już wcześniej wspomniano, jest to najpowszechniejszy z wszystkich dostępnych programów, do edycji tekstu. Działa on na komercyjnej licencji, która jest
osiągalna tylko na systemy Windows i Mac OS X. Wykorzystywany będzie bardziej
jako notatnik, a zapisana w nim treść, zostanie zmodyfikowana, łączona z testami
systemu, czy modelowaniem projektu.
2.6.2
LATEX
Zostanie użyty w całym procesie powstającego projektu, jako finalne oprogramowanie, którego zadaniem będzie odpowiednie sformatowanie całości dokumentu
tekstowo-graficznego, patrząc pod kątem technicznym na jego zawartość, m.in. ustalenie szerokości marginesów, akapitów, interlinii, kroju czcionek, wygenerowanie spisu treści oraz bibliografii, odpowiednie ułożenie tabel i rysynków, czy wytworzenie
przypisów. Dzięki zebraniu wszystkich materiałów, powstanie finalna wersja udokumentowanej pracy inżynierskiej.
2.7 Podsumowanie koncepcji
Podsumowując rozważania na temat platform na które przeznaczony zostanie
nasz system dochodzimy do wniosku, że najlepszym rozwiązaniem będzie skupienie
się nad działaniem aplikacji na sprzęcie typu PC z zainstalowanymi systemami z
rodziny MS Windows. Dodatkowo platformą przeznaczoną na składowanie danych
powinien być system zarządzania bazami danych pod nazwą MySQL. Całość naszym
zdaniem zapewni odpowiedni poziom zainteresowania tworzoną aplikacją.
Uzasadniając stwierdzamy, że wybrane przez nas funkcjonalność, narzędzia i platformy są odpowiednie do napisania przez nas założonej aplikacji i wykonania. Wybrane szczegóły są ogólno dostępne i cały czas przez nas wykorzystywane. Ograniczamy
19
http://office.microsoft.com/pl-pl/word/
http://office.microsoft.com/pl-pl/
21
http://www.latex-project.org/
20
25
tym samym czas potrzebny na przyswojenie nowych, trudnych języków programowania i narzędzi.
26
ROZDZIAŁ III
PROJEKT ROZWIĄZANIA
Jak już zostało ustalone w ogólnej koncepcji rozwiązania, cały szablon musi być
uniwersalnie dopasowany do każdej platformy systemowej. Jest to jedna z najważniejszych cech naszej aplikacji, ponieważ bez względu na posiadany system operacyjny, każdy będzie mógł korzystać z tego projektowanego oprogramowania, bez
jakichkolwiek problemów. Dodatkowo będzie on współpracować w oparciu o najbardziej znany, łatwy w obsłudze i powszechnie używany system zarządzania bazami
danych, czyli MySQL, co też uważamy za kolejną, pozytywną właściwość. Do wykreowania struktury strony WWW oraz jej wyglądu zostaną użyte następujące języki,
takie jak: HTML, znany jako język znaczników hipertekstu i CSS, czyli kaskadowe
arkusze stylów. Wszystkie funkcje, moduły i cała mechanika aplikacji będzie bazowała na wieloplatformowym, obiektowym języku, jakim jest PHP, który strony
internetowe generuje dynamicznie. Za całą interakcję z użytkownikiem, jak również
za efekty wizualne są odpowiedzialne: JavaScript i biblioteka pisana pod ten język jQuery. Zarys całego systemu i logiki w nim panującej przedstawimy w poniższym
podrozdziale na konkretnych diagramach języka UML.
3.1 Modelowanie diagramu przypadków użycia
Jedną z najistotniejszych rzeczy występujących w diagramach przypadków użycia, są Aktorzy. Aktor jest obiektem, który jest odpowiedzialny za interakcję z działającym systemem i wypełniający swoje obowiązki, które mu przydzielono w projektowanym modelu systemu. Mimo, że z nim współpracuje, to tak na prawdę nie
wchodzi w jego skład tylko znajduje się poza głównymi granicami całej architektury. Sposobem przedstawienia obiektów w postaci Aktora jest ludzik. Domyślnie
wyglądem przypomina człowieka, tyle że jest skonstruowany za pomocą odcinków
połączonych razem ze sobą, dających szkielet oraz posiada dużą głowę.
Konsumenci, którzy będą mogli korzystać z funkcjonalności dostarczonej za pośrednictwem projektowanego rozwiązania, to:
27
• ADMINISTRATOR – jest odpowiedzialny za przede wszystkim sprawne
działanie systemu, kontroluję pracę SERWERA, dodaje, bądź edytuje istniejące już dane, czy opcje aplikacji. Dba o bezpieczeństwo panuące w systemie,
nadzoruje kontami UŻYTKOWNIKÓW, eliminuje napotykane wady w funkcjonalności aplikacji. Ma pełne uprawnienia i możliwości, co do edycji oraz
nieograniczony dostęp do całego systemu. Ten aktor został wprowadzony jako
pierwszy do modelowanego systemu, ponieważ miał największy priorytet.
• UŻYTKOWNIK – jego głównym celem jest tworzenie wyglądu powstającego segmentu mapy, gdzie w skład tego wchodzi między innymi: każda nowopowstała warstwa, dzięki której jesteśmy w stanie rozróżnić dla przykładu
kolejne piętra w domach, budynkach. Do kolejnych czynności zalicza się możliwość usuwania, modyfikacji już istniejących danych, czy ich zapis na przenośne nośniki danych, czy po prostu na dyski twarde. Ponadto ma przydzielone
uprawnienia do dodawania multimediów do ulubionych, czy odwiedzonych już
wcześniej lokacji w postaci plików audio-wizualnych oraz plików graficznych.
Szablon udostępnia także omawianemu aktorowi, opcje wyszukiwania pożądanej lokalizacji oraz wyznaczania trasy. Z kolei ten aktor przyczynił się do
testowania końcowego tego szablonu aplikacji, co zostanie omówione w rozdziale 5.
• SERWER – jest to główny silnik uruchomionej aplikacji, który jest w stanie
wyświetlić całą zawartość w przeglądarce internetowej, podstawa, bez której,
w gruncie rzeczy, nie jesteśmy w stanie nic dalej zrobić, testować, nanosić
zmiany itp. Za wprawienie w ruch SERWERA odpowiada ADMINISTRATOR
i jest to kluczowa czynność, która musi się odbyć zaraz na początku, przed
samym uruchomieniem aplikacji, w przeciwnym wypadku dalsza praca, czy
ewolucja aplikacji jest niemożliwa. I jest to ostatni już z omawianych aktorów,
znajdujących się po zewnętrznej stronie modelowanego systemu.
28
Wszystkie zależności między użytkownikami, administratorem, serwerem, a projektowanym systemem w obszarze rozstrzyganego problemu, jest możliwe wyrażenie
tego, dzięki diagramowi Przypadków Użycia (Rys.1).
Rys. 1. Diagram przypadków użycia
Źródło: Opracowanie własne
Jak widać na powyższym rysunku, można w nie trudny sposób wywnioskować,
iż zarówno UŻYTKOWNIK, jak i ADMINISTRATOR, wykonują bardzo podobne
czynności. Ich drogi spotykają się głównie w trakcie tworzenia danych i dodawania
nowych funkcjonalności. W obydwu przypadkach korzystają z opcji zapisu, modyfikacji, czy usuwania danych. UŻYTKOWNIK ma dodatkową możliwość dodawania
plików multimedialnych w trakcie powstawania rysowanej mapy, wyszukiwania na
niej lokacji i wyznaczania drogi.
Natomiast wracając do ADMINISTRATORA, jest on w dużej mierze powiązany
z SERWEREM. To właśnie dzięki niemu ADMINISTRATOR jest w stanie kontrolować pracę systemu, monitorować zachowania UŻYTKOWNIKÓW w stosunku do
uruchomionej na SERWERZE aplikacji internetowej. Całość pracy ADMINISTRATORA zaczyna się od momentu uruchomienia serwera WWW.
29
3.1.1
Charakterystyka przypadków użycia
W tym podrozdziale zostanie szczegółowo omówiony każdy z przypadków użycia, zarówno w postaci merytorycznej, jak i przedstawiony graficznie w formie grafu. Charakterystyka ta, ma za zadanie rozbić każdy, kolejny przypadek użycia z
głównego diagramu, do takiej postaci, aby czytelnik wiedział, co i kto wchodzi w
skład pojedynczego przypadku, jakie czynności oraz funkcje są w nim wykonywane. Dodatkowo zostaną uwzględnione warunki, czy ewentualne alternatywne akcje
w poszczególnych przypadkach.
Oto lista wszystkich przypadków użycia:
Tworzenie danych
Przypadek ten rozpoczyna UŻYTKOWNIK po uruchomieniu szablonu aplikacji. Po wykonaniu tej czynności ma do wyboru dwie opcje: wygenerowanie nowego
okna do rysowania mapy lub wybranie istniejącej już mapy. Jest to również możliwe
po wybraniu pustego szablonu mapy. Ten krok jest dość istotny, ponieważ w tym
miejscu UŻYTKOWNIK określa warstwy powstającej mapy. Po spełnieniu wszystkich warunków ma on dostęp do narzędzi, umożliwiających projektowanie końcowej
mapy, która z kolei jest poszerzona o dodatkowe opcje: zapis, modyfikację i usuwanie.
Rys. 2. Szczegółowy diagram tworzenia danych
Źródło: Opracowanie własne
30
Jak widać na powyższym diagramie, jest on najistotniejszy i kluczowy dla UŻYTKOWNIKA oraz dla powstającej, nowej mapy. Cały proces łączy się z późniejszym
powstaniem nowej warstwy danej mapy i pełnym zarządzaniem danymi na nich.
Kreowanie warstw wyświetlanej mapy
Przypadek ten jest rozszerzeniem dla tworzonej mapy. UŻYTKOWNIK w nim
wybiera konkretną mapę i ładuje ją, przy czym pojawia się opcja przypisania liczbowej wartości, która będzie oznaczać warstwę danej mapy. Określany jest w tej
chwili priorytet warstwy, czyli mapa z wyższą liczbą, będzie ustawiona wyżej od tej
z niższym priorytetem (liczbą). Całość jest zatwierdzana, po czym następuje alternatywny powrót do wyboru kolejnej mapy.
Rys. 3. Szczegółowy diagram kreowania warstw
Źródło: Opracowanie własne
Z powyższego diagramu wynika, że każdy UŻYTKOWNIK, w bardzo łatwy sposób może nadawać konkretnym mapom priorytety. Co to oznacza? Wyjaśnienie jest
proste, mianowicie UŻYTKOWNIK może posadzić drzewo na ziemi, ale nie może
już zrobić tego samego w odwrotną stronę.
Usuwanie danych
Na diagramie widnieje cały proces usuwania danych, dostępny zarówno dla UŻYTKOWNIKA, jak i dla ADMINISTRATORA systemu. Obydwie ze stron wykonują
kopię roboczą na wypadek późniejszych awarii oraz błędów występujących w trakcie modelowania mapy, czy modułów. Całość ogranicza się tylko do zaznaczenia
31
niechcianego materiału i dokonania wyczyszczenia danych. Czynność ta jest zakomunikowana wcześniejszą informacją, w której potwierdzamy albo anulujemy proces
usunięcia danych.
Rys. 4. Szczegółowy diagram usuwania danych
Źródło: Opracowanie własne
Komentując ten rysunek, zwrócono szczególną uwagę na utrzymywanie porządku
panującego w kodzie źródłowym oraz inteligentne segregowanie i kompletowanie tego
kodu przez ADMINISTRATORA w odpowiednio wcześnie zdefiniowanej strukturze
katalogów. Natomiast, poruszając kwestię UŻYTKOWNIKA, usuwane przez niego
dane dotyczą się głównie niepotrzebnych elementów, obszarów na mapie, ale również
warst danej mapy.
Modyfikacja danych
Przypadek ten zaczyna się od chwili wyboru modelowanej mapy przez UŻYTKOWNIKA, który to ją zamierza edytować oraz od ADMINISTRATORA, który z
kolei wczytuje nieskończony, bądź niepoprawny moduł. Następnie są modyfikowane
według uznania obydwu ze stron, po czym każdy z nich przystępuje do procesu zapisywania. Podobnie jak to ma miejsce w przypadku użycia Zapis danych, wszystkie
zmodyfikowane dane zostaną zachowane po zatwierdzeniu informacji o zachodzących
zmianach.
32
Rys. 5. Szczegółowy diagram modyfikacji danych
Źródło: Opracowanie własne
Osoba często modyfikująca swój wyrób, będzie w stanie zauważyć duży związek
z poniższym przypadkiem użycia, czyli z zapisywaniem danych. Bieżący przypadek
różni się tylko tym, że cały proces zapisujących się projektów jest poprzedzony
edycją, wybranych przez UŻYTKOWNIKÓW I ADMINISTRATORA elementów.
Zapis danych
Szczegółowy diagram poniżej obejmuje okoliczności w jakich się znajdują UŻYTKOWNIK i ADMINISTRATOR, jeśli chcą dokonać zapisu danych. Przebieg zapisu
rozpoczyna się w momencie, gdy zostaną wybrane odpowiednio elementy, które posłuża do zachowania. Kolejno zatwierdzenie opcji zapisu spowoduje pojawienie się
komunikatu o pomyślnym toku zapsiwania.
Rys. 6. Szczegółowy diagram zapisu danych
Źródło: Opracowanie własne
33
Zarówno UŻYTKOWNIK modelujący mapę oraz jej warstwy, jak i programista,
który głowi się nad nową funkcjonalnością modułów i próbuje je wdrożyć - w tym
przypadku ADMINISTRATOR - potrzebują mieć możliwość zapisywania swojego
stanu pracy. Bez tej opcji, cała ich praca nie miałaby sensu, a tworzenie nowej rzeczy
bez przerwy, na dłuższą metę jest awykonalne, np. projekt ogromnego, kilkupiętrowego pawilonu, czy bardzo zaawansowanego modułu.
Dodawanie multimediów
Przypadek ten ilustruje, jakie kroki powinien przejść UŻYTKOWNIK, aby ten
mógł spokojnie dodać materiały multimedialne na swojej, nowej mapie. Zaczyna
się od zaznaczenia jakiegoś punktu na mapie o określonych współrzędnych. Następnie UŻYTKOWNIK jest poproszony o zlokalizowanie pożądanego pliku audiowizualnego na swoim sprzęcie, po czym zatwierdza i integruje znaleziony plik z
miejscem na mapie.
Rys. 7. Szczegółowy diagram dodawania multimediów
Źródło: Opracowanie własne
Jeśli chodzi tutaj o przedstawiony powyżej przypadek użycia, to jest on żywym
dowodem na to, że ten interaktywny szablon posiada coś nowoczesnego i innowacyjnego, jak na współczesną technologię internetową. W porównaniu do innych, interaktywnych map terenu, które zostały dokładnie omówione we wcześniejszych rozdziałach, ewidentnie widać, po zebraniu wszystkich argumentów przemawiających
za tym, iż ta aplikacja staje się wyjątkowym narzędziem dla każdej osoby.
34
Wyszukiwanie lokalizacji
W tym przypadku UŻYTKOWNIK ma prawo także do wyszukania lokalizacji,
która go interesuje. Na samym początku wybiera moduł za to odpowiedzialny, czyli
typową wyszukiwarkę, w której wprowadza parametry szukania, mowa tutaj o np.
danym obszarze zieleni, odcinku torów kolejowych, czy starej kamienicy. Dzięki tej
opcji UŻYTKOWNIK ma dodatkową możliwość wyznaczenia własnej drogi z jednego miejsca, do drugiego układu współrzędnych. Następnie zwracana zostaje lista
wynikowa wraz z współrzędnymi lokacji, po czym osoba obsługująca mapę, wybiera
odpowiednie miejsce z listy, zaznaczając ją.
Rys. 8. Szczegółowy diagram wyszukiwania lokalizacji
Źródło: Opracowanie własne
Podsumowując ilustrację wyżej, UŻYTKOWNIK dzięki wyszukiwarce punktów,
miejsc oraz obszarów na mapie, może w szybki sposób namierzyć pożądaną lokalizację. Jest to dosyć wygodna funkcjonalność, chociażby z tego względu, że posiadając
bardzo dużą ilość koordynatów na mapie, z łatwością je można namierzać.
Wyznaczanie trasy
Przypadek ten zostaje użyty opcjonalnie przez UŻYTKOWNIKA, w momencie
wprowadzenia parametrów wyszukiwania. Pokazanie się dodatkowego pola tekstowego, umożliwia wprowadzenie dodatkowego miejsca (współrzędnej) na mapie, określającego początek lub koniec trasy. Ponadto, korzystająca z aplikacji osoba, określa
35
punkty kontrolne danej drogi, przez które trasa może, lecz nie musi przebiegać. Po
zatwierdzeniu pożądanych ustawień, generowana jest ścieżka w postaci nowej trasy, wyglądem przypominająca odcinek lub zbiór odcinków, jeżeli zostały określone
punkty kontrolne.
Rys. 9. Szczegółowy diagram wyznaczania trasy
Źródło: Opracowanie własne
Rozważając szczegółowy diagram dotyczący wyznaczenia drogi, ułatwia on zobrazowanie UŻYTKOWNIKOM stworzonego rozwiązania, jakie proponuje aplikacja. Można to rozwiązanie zmodyfikować o podanie alternatywnych punktów kontrolnych, jeśli to UŻYTKOWNIK zna jakieś skróty w trasie, albo wie o istniejących
robotach na drodze.
Dodanie nowej funkcjonalności
Przypadek ten zaczyna się po uruchomieniu szablonu aplikacji przez ADMINISTRATORA w trybie edycyjnym. Po spełnieniu tego zadania, ma on do wybrania
dwie drogi. Pierwszą z nich jest wygenerowanie nowego modułu mapy, bądź załadowanie istniejącego już modułu. Opcja ta jest również możliwa po stworzeniu pustego
modułu mapy, w celu ułatwienia pracy ADMINISTRATOROWI, który może skopiować i operować na istniejącym już kodzie. Gdy zostaną zakończone wszystkie
poprzednie etapy tworzenia nowego modułu, ADMINISTRATOR przystępuje do
implementowania modułu. Edycja budowania modułów została rozszerzona o kolej36
ne funkcjonalnoci, czyli zapisywanie danych, modyfikowanie i usuwanie ich.
Rys. 10. Szczegółowy diagram dodawania nowych funkcjonalności
Źródło: Opracowanie własne
Ten diagram z kolei jest bardzo istotny i z najwyższą wagą dla ADMINISTRATORA, a także dla nowo powstającego modułu. Pełne zarządzanie danymi odbywa
się na niemal identycznych warunkach, jakie można dostrzec w przypadku UŻYTKOWNIKA i projektowanej przez niego mapy wraz z wszystkimi zależnościami,
występującymi pomiędzy każdą warstwą. Różnica w omawianych dziedzinach tkwi
tylko w uprawnieniach i dostępie danej osoby do trybu edycyjnego z pełnym wachlarzem możliwości.
Kontrola pracy systemu
Decydującą rolę sprawuje tutaj ADMINISTRATOR. Po wcześniejszym zalogowaniu się do panelu administracyjnego, ma on do wyboru dwie opcje. Pierwszą z
tych opcji jest wykonanie szczegółowego testu wydajnościowego, którego cechą główną jest wychwycenie napotkanych błędów, wylistowanie komunikatów ostrzeżeń i
wygenerowanie na jego podstawie raportu, zapisywanego do pliku tekstowego. Ko37
lejnym, a zarazem ostatnim zadaniem ADMINISTRATORA jest sprawdzenie logów
systemowych, czyli czy nie było jakichś niepożądanych zmian w plikach, ustawieniach.
Rys. 11. Szczegółowy diagram kontroli pracy systemu
Źródło: Opracowanie własne
Podsumowując, ten diagram przedstawia jedną z najważniejszych zadań, które
wykonuje ADMINISTRATOR. Kontrolując pracę systemu jest on w stanie na bieżąco monitorować zachowania zachodzące w systemie. Łączy się to z poniższymi
przypadkami użyć, czyli z pilnowaniem bezpieczeństwa oraz eliminowaniem błędów.
Pilnowanie bezpieczeństwa
Poniższy diagram przestawia rozwiązanie, które rozszerza możliwości kontroli
systemu. ADMINISTRATOR, po wcześniejszym przeglądnięciu danych i ustawień,
weryfikuje je pod kątem zawartości. W tej sytuacji powinien ograniczyć dostęp do informacji i automatycznie zwiększyć odporność systemu, tam gdzie zaistniały szkody.
Dla pewności ADMINISTRATOR przegląda wpisy w rejestrze raz jeszcze. Niezbędną czynnością jest tutaj wykonanie kopii zapasowej, która umożliwi ewentualne,
późniejsze przywrócenie ostatnio działających ustawień oraz danych.
38
Rys. 12. Szczegółowy diagram dot. bezpieczeństwa
Źródło: Opracowanie własne
Teraz kilka rozważań na temat bezpieczeństwa panującego w systemie. Zaraz
obok powstających nowych funkcjonalności, dokonywanych przez ADMINISTRATORA, jest to drugi z najważniejszych procesów. Dzięki tym wszystkim krokom
zawartym w diagramie powyżej ADMINISTRATOR systemu może uniknąć wiele
nieprzyjemnych zjawisk, takich jak: straty danych, doszukiwanie się różnic w ustawieniach systemu.
Eliminowanie błędów
Diagram ten pokazuje wszystkie stany ADMINISTRATORA, który ma za zadanie naprawić błędy zaistaniałe w budującej się aplikacji. Na samym początku
potrzebne jest zlokalizowanie wady, po czym należy natychmiast przywrócić dane z
wykonanej wcześniej kopii zapasowej. Gdy ADMINISTRATOR już to wykona, zaczyna informować UŻYTKOWNIKÓW o trwających pracach naprawczych i w trybie
natychmiastowym poprawia zaistniałe niedogodności lub pisze łatki naprawcze. Na
zakończenie, optymalizuje swój kod źródłowy żeby był jak najbardziej wydajny i
wdraża go. Robi to do tego stopnia, aż nie uzyska zadowalających efektów.
39
Rys. 13. Szczegółowy diagram eliminowania błędów
Źródło: Opracowanie własne
Reasumując rozważania dotyczące naprawy aplikacji, należy poruszyć kwestię
doszukiwania się błędów i szybkiej reakcji, jeśli chodzi o ich reperację. Mianowicie,
ADMINISTRATOR piszący kod musi szybko znaleźć problem i rozwiązać go, lecz
także musi pamiętać o załadowaniu kopii zapasowej systemu, aby UŻYTKOWNIK
mógł dalej korzystać z aplikacji.
Uruchomienie serwera WWW
Ostatni z omawianych przypadków użycia mówi włączeniu serwera WWW. Głównymi warunkami, które należy spełnić podczas tego procesu to: włączenie sprzętu,
gdzie ADMINISTRATOR przechowuje dane dotyczące szablonu oraz uruchomienie
środowiska AMP, w którym wykonuje swoje prace związane z całkowitym powstawaniem aplikacji. Ten krok jest ściśle związany z SERWEREM, bo właśnie w tym
momencie ADMINISTRATOR systemu nawiązuje z nim połączenie. Gdy wszystko
przebiegnie zgodnie z planem, pozostaje już tylko przygotować wirtualne katalogi z
zawartością szablonu aplikacji i sprawdzić, czy zainstalowane środowisko AMP jest
poprawnie skonfigurowane.
40
Rys. 14. Szczegółowy diagram uruchomienia serwera WWW
Źródło: Opracowanie własne
Patrząc na ostatni graf z przypadkami wykonywanych czynności, trzeba stwierdzić stanowczo, że bez udziału SERWERA, z którym komunikuje się ADMINISTRATOR i bez jakiejkolwiek platformy sprzętowej, dalszy postęp w realizowaniu aplikacji
byłby po prostu niemożliwy. Jeśli zaś chodzi o środowisko AMP, przygotowanie wirtualnych katalogów pod pisany szablon, czy sprawdzenie konfiguracji, to jedynym,
ale bardzo negatywnym czynnikiem w tejże sytuacji jest opóźnienie rozwoju aplikacji.
3.2 Schemat bazy danych
Jak wiadomo, każdy system informatyczny pracuje w oparciu o jakiś skład danych, w którym przechowuje się informacje. Mowa tu oczywiście o bazie danych,
która jest priorytetowym elementem, a zaprojektowanie jej jest również bardzo ważne. Celem było stworzenie czytelnej, logicznie połączonej i znormalizowanej bazy.
W przypadku mniejszych projektów, dla przykładu może tu posłużyć uniwersalny szablon, któremu poświęcona jest ta praca, wykonanie takiej bazy jest trywialne, w porównaniu do ciężkich i bardzo złożonych systemów. Dlatego postanowiono
rozplanować cały system na jak największą liczbę tabel z sensownie dobranymi relacjami.
Największym problemem stanowiło inteligentne połączenie wszystkich tabel w
logiczną całość. Ostateczne rozwiązanie schematu bazy danych zostało rozdzielone
41
na 8 tabel, gdzie 2 pełnią rolę głównych koncentratorów, a pozostałe 6 są podpięte
do nich za pomocą kluczy obcych. Tabele kompletnej bazy danych przedstawiono w
Tabeli 1.
Tabela 1
Baza danych – wykaz tabel
NAZWA
PRZESŁANIE
TABELA: „Wspolrzedna”
W tej tabeli gromadzone są współrzędne osi X i Y
TABELA: „Trasa”
Ta tabela przechowuje wyniki wygenerowanych tras
TABELA: „Prawa”
Tutaj są zapisane ograniczenia dostępu użytkowników
TABELA: „Multimedia”
W tej tabeli są gromadzone nazwy i typy plików multimedialnych
TABELA: „Warstwa”
W skład tabeli wchodzi nazwa danej warstwy, jej kolor i widoczność
TABELA: „Obiekt”
Wewnątrz tej tabeli gromadzone są dane dotyczące
wytworzonych elementów
TABELA: „Projekt”
W tej tabeli zapisywany jest stan oraz granice projektu
TABELA: „Uzytkownik”
Składowane są do niej dane loginu, haseł i adresów
e-mail
Źródło: opracowanie własne
Jak widać na powyższej tabeli, zaprojektowana baza danych przez projektantów
jest schludna i niewielkich rozmiarów. Wszystkie skompletowane dane, które się w
niej znajdują, są odpowiednio posegregowane, żeby każdy użytkownik w nietrudny
sposób mógł się do tych danych dostać.
3.2.1
Relacje w tabelach
Relacyjna baza danych, jak sama nazwa wskazuje, składa się z kolekcji danych,
czyli tabel oraz z relacji, w tym przypadku są to zależności pomiędzy tabelami. Na
poniższej liście przedstawiona została zawartość tabel, wraz ze szczegółami:
42
• TABELA „Wspolrzedna”
– idWspolrzedna, INT, określa klucz główny danej współrzędnej. Jest unikatowy, ponieważ oznacza konkretny punkt na mapie,
– osX, INT, ma za zadanie zapisać wartość z osi współrzednych X,
– osY, INT, ma za zadanie zapisać wartość z osi współrzednych Y.
• TABELA „Trasa”
– idTrasa, INT, klucz główny, przypisany do unikatowej trasy, którą można
później ponownie wywołać,
– wynik, VARCHAR(45), służy do zapisywania listy współrzędnych, początku i końca drogi.
• TABELA „Prawa”
– idPrawa, INT, określa dostęp i możliwości danego użytkownika szablonu,
jest unikatowy,
– opis, VARCHAR(25), komentuje zakres praw, przykładowo "administrator" lub "uzytkownik".
• TABELA „Multimedia”
– idMultimedia, INT, przypisuje konkretny identyfikator do danego rodzaju
multimediów,
– opis, TEXT, ma za zadanie zachować komentarz dotyczący danego pliku,
– typ, VARCHAR(20), definiuje pliki ze względu na kategorie, czyli dźwięk,
wideo, grafika.
• TABELA „Warstwa”
– idWarstwa, INT, bardzo ważny identyfikator, który przechowuje informacje, czy dany obszar ma być wyświetlany, czy nie,
– nazwa, VARCHAR(45), przechowuje nazwę danego obszaru,
– kolor, VARCHAR(20), określa kolor zaznaczonej przestrzeni,
– aktywna, BOOL, wartość logiczna, ustawiająca widoczność danego terytorium,
43
– Multimedia_idMultimedia, INT, klucz obcy, łączący się z tabelą multimedialną.
• TABELA „Obiekt”
– idObiekt, INT, atrybut ten przechowuje unikalny identyfikator danego
obiektu na mapie,
– nazwa, VARCHAR(60), zapisuje nazwę danego przedmiotu,
– Warstwa_idWarstwa, INT, klucz obcy, pobierający dane o warstwach, na
którym się znajduje obiekt.
• TABELA „Projekt”
– idProjekt, INT, klucz główny zapisujący kolejne liczby stworzonych projektów,
– stan, VARCHAR(20), służy do określenia etapu w jakim jest projekt,
przykładowo "nowy", "zapisany",
– granica, VARCHAR(20), definiuje brzegi mapy, poza którymi nie można
rysować,
– Obiekt_idObiekt, INT, klucz obcy, pobierający dane dotyczące obiektów
stworzonych w danym projekcie,
– Wspolrzedna_idWspolrzedna, INT, klucz obcy, przechowujący współrzędne granic mapy, miejsc obiektów,
– Trasa_idTrasa, INT, klucz obcy, zwracający informacje na temat wytworzonych tras.
• TABELA „Uzytkownik”
– idUzytkownik, INT, unikatowy, a zarazem niezbędny klucz główny, przypisany do odpowiedniej osoby w systemie,
– login, VARCHAR(20), przechowuje ciąg znaków, niezbędnych do logowania, rejestracji, czy przypominania hasła,
– haslo, VARCHAR(20), spełnia taką samą rolę co atrybut "login",
– email, VARCHAR(45), magazynuje listę adresów poczty elektronicznej,
potrzebnej do przypomnienia haseł,
44
– Projekt_idProjekt, INT, klucz obcy, dzięki któremu można połączyć daną osobę z konkretnym projektem,
– Prawa_idPrawa, INT, stanowi sprawdzenie, czy dana osoba ma przywileje administratora, czy też nie.
Powyższa lista tabel omawianej bazy danych jest zrozumiała dla czytelnika, ponieważ zastosowano podczas jej tworzenia technikę normalizacji baz danych. Tabele
zostały rozłożone do jak najprostszej postaci, dlatego późniejsze dodanie relacji między tabelami nie stanowiło już problemu.
3.3 Podsumowanie projektu rozwiązania
Podsumowując. Pierwszorzędną sprawą było zamodelowanie diagramu przypadków użycia, po którym można wywnioskować, ile osób będzie brało udział w powstawaniu aplikacji, ile ludzi będzie potrzebnych do testowania szablonu, jakie możliwości zostaną przydzielone użytkownikom końcowym, podczas tworzonych przez nich
map oraz jakie są relacje pomiędzy aktorami, wchodzącymi w skład projektowanego
systemu.
Kolejną rzeczą wartą przypomnienia jest schemat relacyjnej bazy danych, wewnątrz której zostały logicznie połączone tabele z danymi, poprzez wykorzystane
pary klucz główny = klucz obcy. Dzięki temu, komunikacja i pobieranie danych z
tabel jest dużo prostsza.
Reasumując wszystkie rozważania na temat rozwiązania, które dotyczy modelowanego projektu, w jasny sposób określa kolejne kroki do przejścia oraz wyznacza
nowe zadania, które trzeba spełnić. Mając już model głównego systemu, wraz z
dołączoną strukturą bazy danych, programista może bez problemu przejść do implementacji.
45
ROZDZIAŁ IV
IMPLEMENTACJA
Po przeanalizowaniu dostępnych na rynku produktów, wybraniu odpowiedniej
funkcjonalności, rozeznaniu się po narzędziach i możliwościach implementacji przychodzi pora na rozpoczęcie pracy nad samą aplikacją. Mamy już wszystko co jest
nam potrzebne do napisania, przynajmniej w założeniu, kompletnej aplikacji. Pozostaje więc ją napisać.
4.1 Podział pracy nad aplikacją
Praca nad aplikacją będzie dzielić się na dwie części. Pierwsza to zbudowanie
odpowiedniego „silnika” aplikacji w którym zawierać się będą programowe funkcje i
metody. Druga część to napisanie interfejsu graficznego umożliwiającego interakcje
z użytkownikiem.
Obie części aplikacji będą tworzone w miarę równocześnie ze względu na równoczesne testowanie poprawności, zarówno wyglądu jak i wykorzystania funkcjonalności. Pisana przez nas funkcja będzie znajdować się od razu w interfejsie użytkownika
i wstępnie testowana.
4.2 Rozmieszczenie aplikacji w plikach
Ze względu na jakość i łatwość pracy pliki w których będzie aplikacja będą podzielone na trzy grupy.
Pierwszą grupą będą pliki do interakcji z użytkownikiem. Ze względu na specyfikę
aplikacji będą się one znajdować w katalogu głównym aplikacji. Głównym plikiem
wykonywalnym będzie plik index.php ze względu na automatyczne ładowanie go
przez przeglądarki przy starcie.
Druga grupa to pliki odpowiedzialne za wygląd aplikacji. Wszystkie pliki będą mieć rozszerzenie *.css ponieważ wygląd aplikacji będzie ustalany za pomocą
kaskadowych arkuszy stylów. Znajdować będą się w podfolderze głównej aplikacji
noszącym nazwę „css”.
46
Trzecią i ostatnią grupą są pliki „silnika” aplikacji. Pliki będą mieć rozszerzenia
*.php i *.js. Zawierać będą kolejno funkcje języka PHP oraz skrypty języka JavaScript.
Rys. 15. Struktura katalogów i plików aplikacji
Źródło: Opracowanie własne
Po uzgodnieniu struktury plików tworzymy zadeklarowane pliki i rozpoczynamy
pisanie kodu źródłowego.
4.3 Spis modułów
System został podzielony na kilka modułów by ułatwić pracę nad aplikacją i
późniejsze wprowadzanie poprawek. Część modułów działa osobno ale większość jest
łączona ze sobą w większe moduły. Spis modułów z krótkim opisem ich działania
czy zawartości przedstawia Tabela 2.
47
Tabela 2
Lista modułów aplikacji
MODUŁ
OPIS
Moduł weryfikujący użytkowników przed przystąpieniem
Logowania
do pracy z aplikacją
Rejestracji
Odzyskiwania
Moduł dodawania nowych użytkowników do bazy danych
do-
stępu do aplikacji
Moduł pozwalający odzyskać hasło do konta użytkownika
w razie problemów
Moduł rozgraniczający inne moduły na zdefiniowane pod-
Głównego menu
grupy
Tworzenia nowego
Moduł otwierający okno edycyjne do tworzenia projektów
projektu
Moduł łączący w całość poszczególne moduły tworzenia
Edycji
map
Granic
Moduł rysujący granice terenu
Warstw
Moduł rysujący granice wybranej warstwy
Obiektów
Moduł wyznaczający obiekt na mapie
Multimediów
Moduł do wstawiania plików na obszary mapy
Tras
Moduł rysowania tras na mapie
Źródło: opracowanie własne
Jak widać na załączonej tabeli część modułów integruje w grupy mniejsze moduły i wyświetla ja jako całość. Lista modułów będzie ulegała zmianie w zależności
od zaawansowania aplikacji.
4.4 Opis poszczególnych modułów w aplikacji
Mając ustalone moduły aplikacji przystępujemy do pisania każdego z osobna i ich
integracji z całością kodu aplikacji. Większość modułów będzie występowała razem
ze względu na charakter aplikacji, ale nie powinno to zbytnio spowolnić aplikacji, a
ma na celu jedynie ułatwienie pracy użytkownikom.
48
4.4.1
Moduł logowania, rejestracji i odzyskiwania haseł
Trzy moduły występujące niejako razem. Jeden rejestruje nowych użytkowników
aplikacji, drugi zezwala już istniejącym na pracę w aplikacji, a trzeci nadaje nowe
hasło do aplikacji w razie zguby poprzedniego dla zarejestrowanych użytkowników.
Rejestracja będzie się odbywać przez prosty formularz. Dane wprowadzone do
formularza będą po zatwierdzeniu wprowadzania danych przesyłane metodą POST
do funkcji rejestracja(), która sprawdzi czy są wprowadzone wymagane dane i czy
dane te nie zawierają szkodliwego kodu. Do sprawdzenia czy wymagane dane zostały
wprowadzone, użyta została funkcja warunkowa if() z atrybutem:
!empty($_POST[’zmienna’])
Sprawdza to, czy przesłana z formularza wartość nie jest pusta. W razie błędu funkcja wraca do strony logowania z parametrem błędu i parametrem nie uzupełnionego pola. Strona rejestracyjna podświetli za pomocą innego formatowania pole do
uzupełnienia. W przypadku poprawnego przejścia wszystkich funkcji warunkowych,
czyli gdy wszystkie wymagane pola są uzupełnione, funkcja wykonuje zapytanie do
tabeli użytkowników, w którym szuka wszystkich rekordów gdzie nazwa użytkownika lub adres e-mail są zgodne z wprowadzonymi w rejestracji. Jeśli zapytanie zwróci
jakieś wyniki, funkcja rejestracja() wraca do formularza rejestracji z parametrem,
który informuje użytkownika, że dane które wprowadził istnieją już w bazie danych.
Jeżeli zapytanie do bazy danych zwróci pusty wynik następuje proces dodawania do
bazy danych poszczególnych wartości. Dodawaniem do bazy zajmuje się zapytanie
INSERT INTO Uzytkownik VALUES ()
Logowanie będzie czytać dane wprowadzone do formularza i wysyłać wartości
metodą POST do funkcji logowanie($login, $haslo), która po pierwsze sprawdzi czy wartości nie są puste a następnie wykona zapytanie do bazy danych czy w
tabeli użytkowników znajduje się rekord z nazwą użytkownika podaną w logowaniu
oraz czy hasło podane podczas logowania zgadza się z tym zapisanym w tabeli. Hasło by mogło być porównane musi być w zapytaniu zaszyfrowane funkcją md5() by
sprawdzić czy wartości po szyfrowaniu są jednakowe. Od odpowiedzi z bazy danych
będzie zależało czy zostanie uruchomiona sesja aplikacji czy też aplikacja zaproponuje rejestrację. Jeśli odpowiedź na zapytanie SQL będzie zwracała pełną odpowiedź
z danymi użytkownika nastąpi przekierowanie na kolejne moduły aplikacji.
Odzyskiwanie hasła to również prosty formularz w którym użytkownik gdyby nie
49
pamiętał swojego hasła może podać login i adres e-mail podany przy rejestracji i tym
sposobem wygenerować nowe hasło przesyłane mu na podany adres e-mail. Wartości
wprowadzone w formularzy będą wysyłane do funkcji odzyskaj() która najpierw
sprawdzi czy wartości nie są puste, po czym wykona generowanie nowego hasła i
wyśle nowe hasło pod podany adres e-mail. Wygenerowane hasło zostaje następnie
zaszyfrowane i wprowadzone do bazy danych zamiast poprzedniego w rekordzie gdzie
adres e-mail i login zgadzają się z wprowadzonymi przez użytkownika.
Funkcja logowania:
public function logowanie($login,$haslo) {
{if (!empty($login) && !empty($haslo)) {
$konto = $this->sql->mysql_query("SELECT * FROM Uzytkownik
WHERE login = ".$login." AND haslo = MD5(’".$haslo."’)");
Wszystkie moduły korzystają z funkcji zawartych w klasie Uzytkownik. Moduły
te są wyświetlane jako pierwsze i umieszczone w pliku index.php ponieważ bez poprawnego logowania nie jest możliwa dalsza praca z aplikacją.
4.4.2
Moduł głównego menu
Po poprawnym logowaniu użytkownikowi ukaże się menu z którego może wybrać opcje takie jak: tworzenie nowego projektu, lista projektów do załadowania,
eksport/import projektów, zarządzanie swoim profilem czy zakończenie pracy i wylogowanie się z aplikacji.
Ten moduł to statyczna strona html gdzie przyciski to odnośniki do innych stron
ze specyficzną dla danej opcji strukturą. I tak odnośnik nowego projektu będzie
przekierowywał na plik nowy.php gdzie będzie formularz do wpisania nazwy projektu
i przycisk zatwierdzający opcje.
Otwieranie projektu będzie prowadziło do formularza istniejące.php z listą już
istniejących projektów. Wybranie istniejącego projektu i zatwierdzenie go uruchomi
funkcję wczytajProjekt($id), gdzie nastąpi seria zapytań do różnych tabel w bazie
danych celem wczytania zawartości projektu.
Eksport projektów będzie otwierał plik eksport.php w którym będzie formularz
z listą projektów do wyboru oraz przyciskiem do eksportu. Eksportowanie projektów do zamieszczenia na serwerach jest jak na razie tylko koncepcją i nie zostało
50
rozwinięte w aplikacji.
Dane konta będą otwierały plik user.php gdzie będzie formularz z polami wypełnianymi danymi z zapytania SQL odnośnie zalogowanego użytkownika. Zmiana
danych i zatwierdzenie ich spowoduje uruchomienie funkcji updateUser() gdzie dane
z formularza przesłane metodą POST zostaną umieszczone w zapytaniu UPDATE
do bazy danych.
Moduł głównego menu jest niezbędny jeżeli w aplikacji ma panować porządek i
rozgraniczenie funkcjonalności. Poza tym z wymienionych wyżej funkcji użytkownik
nie będzie używał tylko jednej na raz i nie będzie tego robił tak często jak funkcji
przeznaczonych do edycji.
4.4.3
Moduł tworzenia nowego projektu
Moduł ten będzie dostępny z poziomu pliku nowy.php który można wywołać z
głównego menu. Tworzenie nowego projektu nie musi być dostępne cały czas. Raz
utworzony projekt zawsze będzie można zapisać i zamknąć by znów móc tworzyć
inne nowe projekty.
Zatwierdzenie nazwy projektu będzie otwierało plik projekt.php gdzie jest okno
edycyjne. Zostanie również uruchomiona funkcja tworzProjekt($nazwa), gdzie nastąpi dodanie do tabeli projektów w bazie danych nowego rekordu o wartościach
kolejnego numeru id, nazwie projektu oraz id użytkownika który projekt utworzył.
Zostanie również utworzony tymczasowy plik edycji projektu w którym będą na
bieżąco zapisywane wykonywane operacje.
4.4.4
Moduł edycji projektu
Moduł edycyjny aplikacji to połączone ze sobą moduły tworzenia poszczególnych
funkcji mapy. Na moduł edycyjny będą się więc składać moduły granic, warstw,
obiektów, multimediów oraz tras. Moduł edycyjny wyglądem przypomina program
graficzny. Użytkownik posiada panel z poszczególnymi funkcjami oraz obszar roboczy na którym rysuje poszczególne składowe mapy.
Rysowanie odbywa się za pomocą skryptów JavaScript które rysują linie po określonych punktach współrzędnych. Dodatkowo każda z wybranych funkcji ma swój
identyfikator w bazie danych. Po identyfikatorze program wie więc czy rysowane
obiekty to granice mapy czy jakiejś warstwy.
51
Funkcje rysujące linie zostały zebrane w jednej bibliotece pod nazwą rysowanie.js.
Do funkcji znajdujących się w bibliotece zaliczyć można:
rysujPiksel(), rysujLinie(), naniesLinie(), naniesObiekt().
Funkcja rysujPiksel() tworzy element DIV o szerokości 1 x 1 piksel z atrybutami
tła i pozycji absolutnej na czterech współrzędnych przekazywanych przez pozostałe
funkcje. Dostaje również identyfikator warstwy, po którym jest ustalany kolor tła.
Funkcja rysujLinie() to implementacja algorytmu Bresenhama22 . Za pomocą
funkcji rysujPiksel(), algorytm ten po obliczeniach zobrazuje na siatce pikseli jak
najlepszą linię.
Aby linie mogły być widoczne, istnieje funkcja naniesLinie(), która odczytuje
współrzędne z pozycji wskaźnika myszy po kliknięciu. Po wczytaniu drugiej pary
współrzędnych uruchamia funkcję rysujLinie() przekazując do niej współrzędne początku i końca.
W module edycyjnym będą również dostępne opcje zapisu projektu i jego zakończenia. Zapis projektu będzie się odbywał poprzez czytanie pliku tymczasowego
projekt, jego rozbicie na linie poprzez funkcję explode() i rozbicie tą samą funkcją z
innym atrybutem dzielącym na poszczególne dane. Następnie funkcja rozpoznając
rekord zerowy będzie sprawdzała jaka operacja została wykonana. Jako że każda
operacja czy to rysowanie granic czy warstw posiada swoje id będzie to właśnie ta
wartość w pliku tymczasowym. Po rozpoznaniu id operacji funkcja doda wartości
kolejne z danej tabeli powstałej z drugiego dzielenia funkcją explode() do odpowiedniej tabeli w bazie danych do każdej z tabel na tym etapie dopisując id projektu
tak by odciążyć inne funkcje z zapisywania dodatkowego atrybutu. Po zapisie plik
tymczasowy będzie czyszczony. Cały ten proces został zapisany jako funkcja zapiszProjekt().
Zakończenie pracy z projektem będzie zamykało i kasowało plik tymczasowy
projektu wcześniej uruchamiając funkcję zapiszProjekt(). Po wykonaniu funkcji zostanie wywołany plik głównego menu.
Moduł granic mapy
Do modułu granic mapy będzie należało zapisanie w pliku tymczasowym projektu identyfikatora granicy i punktów współrzędnych od – do wyznaczających linię
22
http://pl.wikipedia.org/wiki/Algorytm_Bresenhama
52
graniczną danej strefy, obiektu czy miejsca. Będzie to zapisywane w pliku tymczasowym w postaci: identyfikator ; pierwsza współrzędna linii – druga współrzędna linii
– itd. aż do zakończenia rysowania granic.
Granice nie będą musiały być zamykane, w takim przypadku ostatnia współrzędna będzie inna od pierwszej. Użytkownik może zamknąć granicę rysując ją do
jej początku.
Moduł granic nie musi być deklarowany na początku projektu. Granice mogą
zostać nałożone w każdej chwili edycji aplikacji. Użytkownik będzie miał możliwość
określenia, czy zawartość poza granicami ma zostać rysowana, czy obcinana. Jest to
jednak nadal założenie nie zaimplementowane.
Moduł warstw mapy
Na tym module będą tworzone poszczególne warstwy mapy. Pełna aplikacja zakłada tworzenie własnych warstw przez użytkowników wedle woli jednak nie zostało
to jeszcze zaimplementowane. Przy pisaniu aplikacji deklarujemy tylko kilka standardowych warstw takich jak: łąki, lasy, rzeki, jeziora, morza, drogi. Moduł warstw
będzie zapisywał do odpowiednich tabel granice, identyfikator i nazwę warstwy.
Podstawowe warstwy będą dostępne w postaci listy na panelu użytkownika. Po
wybraniu odpowiedniej warstwy jej identyfikator zostanie zapisany do tymczasowego
pliku projektu a po nim będą zapisywane współrzędne granic warstwy.
Warstwy tworzone przez użytkowników będą za pomocą mini formularza w którym użytkownik będzie musiał podać nazwę nowej warstwy i może podać kolor
wypełnienia warstwy. Z puli dostępnych kolorów będą wyłączane już używane przez
inne warstwy.
Widoczność warstw można włączać lub wyłączać w zależności o preferencji. Wiąże się to jednak z przeładowaniem strony. Wynika to z tego że przy wyłączaniu bądź
włączaniu warstwy wysyłany jest metodą POST atrybut który następnie funkcja
warunkowa analizuje i całkowicie blokuje wyświetlanie warstwy o danym id. Pomaga to budować mapy poziomami, zaczynając od najniższych i stopniowo nakładając
na siebie kolejne. Po zakończeniu projektu końcowy użytkownik również będzie mógł
wybrać sobie widoczność już gotowej warstwy.
53
Moduł obiektów mapy
Obiekty takie jak budynki, pomniki, ławki, latarnie, fontanny będą umieszczanie
w tym module a ich położenie będzie zapisywane w przeznaczonej do tego tabeli.
Aplikacja będzie udostępniała podstawowe obiekty, tworzenie obiektów przez użytkownika końcowego będzie możliwe z poziomu tego modułu.
Aby dany obiekt mógł być wyświetlany na projekcie musi posiadać własny identyfikator nadawany automatycznie, nazwę po której będzie można go odszukać oraz
współrzędne na których się znajduje. Może również posiadać z góry przypisany opis.
Z podstawowych obiektów projektu użytkownik może tworzyć miasta, parki, czy
plany budynków. Ma również możliwość dodawania własnych obiektów, na przykład
odpowiednio przygotowanych ikon przedstawiających dany obiekt w rzeczywistości.
Dodawanie obiektów odbywa się poprzez wybranie odpowiedniego obiektu z listy
rozwijanej i umieszczeniu go na projekcie. Obiekt będzie umieszczany na jednych
współrzędnych ale objętościowo będzie zajmował powierzchnię przypisaną danemu
obiektowi.
Do dodawania obiektów do projektu służy funkcja dodajObiekt() która otrzymując współrzędne środka obiektu i identyfikator typu obiektu oblicza szerokość i
wysokość elementu DIV i rysuje go na mapie. Wyrysowany element będzie miał swoje id oraz poprzez kaskadowe arkusze styli swoją grafikę.
Moduł multimediów mapy
Założona funkcjonalność udostępnia użytkownikowi dodawanie dowolnych multimediów na mapie. W tym module będzie wykonywana ta funkcjonalność. Pliki będą
pobierane na serwer za pomocą zmiennej $_FILES, a następnie kopiowane z lokalizacji tymczasowej za pomocą funkcji php move_uploaded_file() przenoszone do
właściwej lokalizacji. Ich lokalizacja na mapie oraz ścieżka dostępu będą zapisane do
tabeli w bazie danych. Do bazy będą również zapisywane uprawnienia multimediów
do warstw. Polegać to będzie na tym że użytkownik będzie mógł ustalić na jakiej
widoczności warstwy ma być widoczny zasób. Domyślnie będzie to wyświetlanie na
wszystkich warstwach.
W celu oddzielenia od siebie typów multimediów konieczne jest stworzenie tablicy
z typami możliwych multimediów by dodawać do każdego multimedium identyfikator
54
typu. Można będzie dzięki temu na przykład wyświetlać multimedia jednego typu
zamiast wszystkich.
Dodatkowo w informacji o zamieszczonym zasobie dodamy informację czy jest
on widoczny na wszystkich warstwach czy tylko na wybranych. Taki dodatek pozwoli na przykład wyłączać zasoby dostępne na widoku miast razem z warstwą miast.
Moduł tras na mapie
Moduł ten pozostaje w fazie koncepcji ze względu na napotkane trudności z
przerysowywaniem już istniejących elementów DIV bez nanoszenia nowych między
dwoma współrzędnymi. Koncepcja zakłada że wyznaczanie tras będzie się odbywało
w tym module na zasadzie analizy warstwy dróg z tabeli warstw i nanoszeniu granic
trasy na współrzędne z tabeli warstwy dróg. Do ustalenia trasy będzie konieczna
wartość początkowa trasy jak i jej koniec. Zarówno jednym jak i drugim może być
albo współrzędna z warstwy dróg albo współrzędne obiektów.
Użytkownik wyznaczając miejsce startu i miejsce docelowe uruchomi funkcję
sledzTrase() która wczyta zawartość tabeli dróg a następnie śledząc wierzchołki drogi będzie rysować warstwę trasy tak by współrzędne trasy były jak najbliżej punktu
docelowego.
4.5 Podsumowanie implementacji
Podsumowując proces implementacji otrzymujemy podstawowy kod aplikacji.
Aplikacja na tym etapie musi przejść jeszcze szereg testów poprawnościowych. Niezbędna będzie zapewne optymalizacja kodu w celu przyśpieszenia aplikacji. Część z
opisanych modułów nie działa prawidłowo.
Aplikacja działa na tabelach bazy danych. Aby nie wykonywać nieustannie zapytań do bazy danych w czasie tworzenia projektu wszystkie informacje zostają
zapisane w tymczasowym pliku projektu. Przy zapisie projektu dane z tymczasowego pliku projektu są za pomocą funkcji php rozdzielane i odpowiednio umieszczane w
zapytaniach SQL-owych. Po wczytaniu wszystkich danych plik tymczasowy projektu
jest czyszczony by dane nie duplikowały się. W razie wystąpienia błędu w aktualizacji bazy aplikacja w tymczasowym pliku zapisze informację w miejscu w którym
55
ostatnio wykonała zapytanie SQL i przerwie działanie. Użycie pliku tymczasowego aplikacji pomaga min. W sytuacjach gdzie nie można było z różnych względów
zapisać projektu. Użytkownik po takiej awarii otworzy projekt bez żadnych strat
ponieważ funkcja otwierająca projekt będzie zawsze sprawdzać czy pik tymczasowy
projektu jest pusty czy jest w nim zawartość nie przeniesiona do bazy danych.
56
ROZDZIAŁ V
BEZPIECZEŃSTWO I TESTY APLIKACJI
Żeby aplikacja nie była narażona na ataki osób postronnych i aby dane użytkowników nie zostały skradzione, niezbędne było zastosowanie odpowiednich zabezpieczeń. Szyfrowanie haseł oraz zarządzanie kontami użytkowników wymagają
odpowiednich środków. W związku z tym, że aplikacja pracuje na bazach danych
MySQL, podstawowym elementem było zapobiegnięcie atakom typu SQL Injection.
5.1 Wymogi haseł użytkowników
Każdy użytkownik, który zakłada konto musi podać dwukrotnie hasło dostępu
do aplikacji, które z kolei ma spełniać trzy założenia bezpiecznego hasła ustalone
w aplikacji. Hasło musi posiadać przynajmniej 6 znaków, 2 znaki mają być dużymi
literami oraz hasło musi posiadać przynajmniej jedną cyfrę lub znak specjalny. Bez
spełnienia tych wymagań użytkownik nie przejdzie procesu rejestracji. Mechanizm
sprawdzający wpisane hasło, rozbija wpisany ciąg znaków na pojedyncze elementy,
a następnie analizuje wystąpienie trzech wymagań. Jeśli cały proces funkcji zwróci
wartość „1” hasło jest uznane za bezpieczne, następuje jego szyfrowanie i zapisywanie do tabeli w bazie danych.
5.2 Szyfrowanie haseł użytkowników
Po procesie weryfikacji bezpieczeństwa hasła aplikacja musi zaszyfrować hasło
przed odczytaniem go bezpośrednio z bazy danych. W tym celu aplikacja szyfruje zweryfikowane hasło za pomocą algorytmu MD523 , sprowadzając je do postaci
128-bitowego skrótu. Hasło jest szyfrowane poprzez funkcję języka PHP o nazwie
md5() gdzie jedynym podawanym argumentem jest ciąg znaków do szyfrowania.
Funkcję md5() aplikacja wykorzystuje bezpośrednio w zapytaniu do bazy danych.
Szyfrowanie algorytmem MD5 jest wystarczające do zabezpieczenia aplikacji przed
nieautoryzowanym dostępem do bazy.
23
http://www.php.net/manual/en/function.md5-file.php
57
W przypadku, gdy hasło zostaje przez użytkownika generowane z modułu „Odzyskiwania dostępu do aplikacji”, jest ono tworzone losowo i również szyfrowane funkcją
md5(). Losowe hasło jest w takim przypadku wysyłane użytkownikowi na adres email podany przy rejestracji i zgodny z wprowadzonym w module odzyskiwania.
5.3 Autoryzacja użytkowników
Aby zapobiec przypadkom zduplikowania się użytkowników i przypadkowemu
nadpisaniu hasła przy rejestracji użytkownika na login już istniejący w bazie, aplikacja weryfikuje w procesie rejestracji, czy wprowadzona wartość login i hasło nie
istnieją już w bazie danych. Jeśli choć jedna z podanych wartości znajduje się już
w tabeli, użytkownik jest proszony o poprawę wprowadzanych danych do formularza.
5.4 Zapobieganie SQL Injection
Atak typu SQL Injection24 polega na takim zapisaniu wartości wysyłanych do
bazy danych by uzyskać interesujące informacje. Można przez to uzyskać dostęp np.
do kont użytkowników wpisując odpowiednie wartości w polu logowania.
Jednym z najbardziej skutecznych metod zapobiegania SQL injection jest dokładne przefiltrowanie i sprawdzenie wprowadzanych danych które mają być wykorzystywane w zapytaniach SQL oraz ścisłe określenie wszystkich możliwych wprowadzanych znaków które nie mogą być wprowadzane do zapytań.
W celu ochrony przed SQL Injection aplikacja została zaopatrzona w funkcję
filtrującą wprowadzaną zawartość. Każda wartość wprowadzana przez użytkownika
jest filtrowana na nieodpowiednie znaki i w przypadku zwracania wartości „FALSE”
wyrzucana użytkownikowi jako błędna.
5.5 Podsumowanie bezpieczeństwa
Podsumowując wywód na temat bezpieczeństwa należy również zaznaczyć że
wszystkie funkcje mające na celu bezpieczeństwo aplikacji są wykonywane na serwe24
http://msdn.microsoft.com/en-us/library/ms161953.aspx
58
rze. Gdyby były one wykonywane na platformie użytkownika mogły by być łatwo
wyłączone.
Bezpieczeństwo aplikacji w obecnym stanie jest zadowalające i przyjmując że
aplikacja będzie udoskonalana o inne metody szyfrowania można pozostawić ją w
obecnym stanie bez obaw o bezpieczeństwo zawartych danych.
5.6 Testy aplikacji
Aby mieć pewność co do działania aplikacji należy przekazać ją do testów osobom
trzecim które nie brały udziału w jej tworzeniu. Daje to nowe światło na problemy
występujące podczas jej użytkowania. W końcu tylko ktoś kto nie zna aplikacji będzie
wstanie powiedzieć czego ona nie może a co dzieje się „przypadkiem”. Aby stwierdzić
poprawność działania aplikacji została ona przekazana dwóm osobom do przetestowania. Pierwsza to osoba znająca się w pewnym stopniu na programowaniu. Druga
to statystyczny użytkownik posiadający wiedzę potrzebną do użytkowania platformy.
5.6.1
Test pierwszy
Aby mieć pewność co do działania aplikacji należy przekazać ją do testów osobom
trzecim które nie brały udziału w jej tworzeniu. Daje to nowe światło na problemy
występujące podczas jej użytkowania. W końcu tylko ktoś, kto nie zna aplikacji,
będzie w stanie powiedzieć czego ona nie może, a co dzieje się „przypadkiem”. Aby
stwierdzić poprawność działania aplikacji, została ona przekazana dwóm osobom do
przetestowania. Pierwsza to osoba znająca się w pewnym stopniu na programowaniu. Natomiast druga, to statystyczny użytkownik posiadający wiedzę potrzebną do
użytkowania platformy.
5.6.2
Test drugi
Test drugi przeprowadzony przez osobę znającą jedynie podstawową obsługę
platform sprzętowych i systemów operacyjnych wykazał dobre przystosowanie aplikacji do pracy z użytkownikami.
59
Tester bez problemu założył swoje konto w aplikacji. Nie uzupełniał dodatkowych danych. Utworzenie hasła odpowiadającego wymogom nie przyniosło większych trudności. Po procesie rejestracji tester bez problemów zalogował się do aplikacji.
Praca z samą aplikacją przebiegała pomału, sprawdzając działanie poszczególnych funkcji by przekonać się co tak naprawdę robią. Niewielkim problemem było
wyjaśnienie testerowi koncepcji warstw w aplikacji i przykładowe przedstawienie mu
zasady działania warstw. Używając narzędzi aplikacji tester wyszczególnił poprawki
które były by wskazane do zapewnienia lepszej wygody korzystania z aplikacji. Były
to min. sugestie o zapewnienie większej automatyki w aplikacje chociażby dokładając mechanizm domykania granic warstwy przy dwukrotnym kliknięciu na tą samą
współrzędną.
Opinia po testach była przychylna ale sugeruje że trzeba poświęcić jeszcze dużo
czasu na dopracowanie aplikacji dla standardowych użytkowników. Aplikacja przy
testach otrzymała miano intuicyjnej więc należy nadal iść w kierunku rozdzielania
poszczególnych modółów edycyjnych.
5.7 Podsumowanie testów i bezpieczeństwa
Po przeprowadzonych testach i zastosowanych procesach bezpieczeństwa, jedynym słusznym wnioskiem jest stwierdzenie, że aplikacja mimo wielu niedociągnięć,
jest rozwijana w dobrym kierunku i po dalszych pracach powinna osiągnąć zadowalający efekt.
60
ROZDZIAŁ VI
ZAKOŃCZENIE I PODSUMOWANIE PRACY
Przy pisaniu niniejszej pracy powstała aplikacja za pomocą której można stworzyć rozbudowany projekt topografii terenu lub innej powierzchni opisywanej mapą
graficzną. W aplikacji nacisk położono na interakcje z użytkownikiem i zachowanie
bezpieczeństwa przechowywanych danych. Działanie aplikacji przetestowano poprzez
osoby trzecie i określono dalszą ścieżkę rozwoju. Wnioski i sugestie od testerów będą
bardzo pomocne przy kontynuacji pracy nad aplikacją.
Do rozwiązania przedstawionego problemu konieczna była szczegółowa analiza
zagadnień związanych z tematyką tworzenia map oraz analizą produktów będących
już na rynku. Przeanalizowane produkty pomogły określić funkcjonalność jaką aplikacja powinna zawierać oraz elementy których brak w dostępnych produktach. Dla
urzeczywistnienia postawionej w pracy funkcjonalności aplikacji wspomagającej tworzenie map interaktywnych stworzono system, który posiada podstawową zakładaną
funkcjonalność i zadatki na rozbudowę o nowe ciekawe funkcje.
Podsumowując cały proces tworzenia oprogramowania można stwierdzić że powstała
aplikacja, mimo że nie osiągnęła formy finalnej, zawiera większość zakładanej przez
nas funkcjonalności i po dalszych pracach powinna być przystosowana dla użytkowników końcowych.
Praca napisana została w następującym kształcie:
W rozdziale pierwszym opisano zagadnienia związane z tematyką map, przytaczając
kilka definicji map przedstawiono jak duża jest różnorodność sposobów przedstawiania danych na terenie. Następnie dokonano analizy najpopularniejszych produktów
występujących na rynku czerpiąc z tego podstawy dla własnej aplikacji. Analiza
przyszłej konkurencji pozwoliła na końcu rozdziału wysnuć założenia i cele dotyczące projektu.
W rozdziale drugim skupiono się nad możliwymi narzędziami potrzebnymi do rozwiązania zakładanego problemu. Dużą uwagę skupiono tutaj na językach w jakich
ma być pisana aplikacja oraz na sposobach zaplanowania aplikacji jeszcze przed pisaniem. Ustalono funkcjonalność jaką powinna posiadać tworzona aplikacja i na jakich
platformach sprzętowych oraz systemach operacyjnych powinna działać by osiągnąć
najlepsze rezultaty. Rozdział zakończono podsumowaniem całej koncepcji aplikacji.
61
W trzecim rozdziale skupiono się nad wstępnym zaprojektowaniem działań aplikacji.
Określono projekt rozwiązania stawianego problemu i zbudowano wstępne struktury
przepływu i magazynowania danych.
W rozdziale czwartym opisano przebieg implementacji aplikacji. Przedstawiono podział plików w aplikacji oraz podział pracy nad aplikacją. Opisano poszczególne
moduły aplikacji oraz ich działanie. Stwierdzono gdzie mogą wystąpić problemy i co
wymaga dalszego rozwoju. Rozdział zakończono podsumowaniem z przeprowadzonych działań.
W piątym rozdziale poruszono kwestie bezpieczeństwa i jego zagwarantowania. Opisano możliwe sytuacje i sposoby ich zapobiegania. Następnie przedstawiono przeprowadzone na aplikacji testy i wnioski z nich płynące.
Podsumowując rozważania nad postawionym problemem można dojść do stwierdzenia, że stworzona tutaj praca pozwoliła rozwiązać stawiane cele i zaprezentować
rozwiązanie postawionego problemu.
Rozwijając w przyszłości przedstawioną tutaj aplikację można rozważyć wprowadzenie większej interaktywności poprzez zastosowanie bardziej zaawansowanych narzędzi.
62
DODATEK A: WYKAZ ILUSTRACJI
Rys. 1. Diagram przypadków użycia, s. 29.
Rys. 2. Szczegółowy diagram tworzenia danych, s. 30.
Rys. 3. Szczegółowy diagram kreowania warstw, s. 31.
Rys. 4. Szczegółowy diagram usuwania danych, s. 32.
Rys. 5. Szczegółowy diagram modyfikacji danych, s. 33.
Rys. 6. Szczegółowy diagram zapisu danych, s. 33.
Rys. 7. Szczegółowy diagram dodawania multimediów, s. 34.
Rys. 8. Szczegółowy diagram wyszukiwania lokalizacji, s. 35.
Rys. 9. Szczegółowy diagram wyznaczania trasy, s. 36.
Rys. 10. Szczegółowy diagram dodawania nowych funkcjonalności, s. 37.
Rys. 11. Szczegółowy diagram kontroli pracy systemu, s. 38.
Rys. 12. Szczegółowy diagram dot. bezpieczeństwa, s. 39.
Rys. 13. Szczegółowy diagram eliminowania błędów, s. 40.
Rys. 14. Szczegółowy diagram uruchomienia serwera WWW, s. 41.
Rys. 15. Struktura katalogów i plików aplikacji, s. 47.
Rys. 16. Pasek URL z adresem pliku index.php, s. 67.
Rys. 17. Panel logowania, rejestracji i przypominania hasła, s. 67.
Rys. 18. Menu główne, panel administracyjny, s. 68.
Rys. 19. Panel edycyjny z funkcjami budowania mapy, s. 68.
DODATEK B: ZESTAWIENIE TABEL
Tabela 1. Baza danych – wykaz tabel, s. 42.
Tabela 2. Lista modułów aplikacji, s. 48.
63
DODATEK C: INSTALACJA I INSTRUKCJA
OBSŁUGI APLIKACJI
Aplikacja do należytego uruchomienia się, wymaga przede wszystkim jednego
spośród trzech głównych systemów operacyjnych, które zostały dokładnie omówione w rozdziale 2.5.2. Są nimi: Microsoft Windows XP, Vista oraz 7; współczesne
dystrybucje Linux; Mac OS X firmy Apple.
Gdy przystępujemy do procesów instalacyjnych należy w tej sytuacji wykonać
następujące czynności:
1. W zależności od posiadanego systemu operacyjnego, pobieramy i instalujemy
pakiety emulujące lokalny, wirtualny serwer WWW. Dla systemów z rodziny
Windows będą to: WAMP25 i XAMPP26 , zaś użytkownicy systemu Mac OS X
wchodzą na stronę główną projektu MAMP27 i z tamtąd ściągają instalator.
Natomiast dla systemów Linux jest to pakiet LAMP28 dostępny w repozytorium linuksa. Można to zrobić za pomocą kilku komend w powłoce (z ang.
shell ) systemowej:
• wprowadzamy polecenie sudo apt-get install lamp-server∧ i zatwierdzamy klawiszem <Enter>,
• po chwili instalator poprosi o wpisanie hasła dla użytkownika root do
bazy danych MySQL. Można ten krok zignorować i pozostawić konto
użytkownika root bez hasła przechodząc dalej,
• instalacja pakietu LAMP dobiegła końca.
2. Kolejne instrukcje dla użytkowników systemu z rodziny Windows:
• Zarówno WAMP, jak i XAMPP, działają bardzo podobnie. Aby uruchomić. któregoś z nich, wystarczy dwukrotnie kliknąc ikonę danego projektu
na pulpicie. Za moment powinien pojawić się znaczek w pasku systemowym (z ang. tray). W wersji WAMP włączenie wszystkich serwisów
odbywa się po wyborze opcji Start All Services, natomiast w przypad25
http://www.wampserver.com/en/
http://www.apachefriends.org/en/xampp.html
27
http://www.mamp.info/en/index.html
28
http://pl.wikipedia.org/wiki/LAMP
26
64
ku XAMPP, każdy proces uruchamiany jest po kolei, wciskając przycisk
Start przy odpowiednim serwisie.
• Gdzie należy wgrać nasz szablon aplikacji? Wszyscy posiadacze programu
WAMP wklejają wszystkie foldery z plikami, do domyślnie stworzonego katalogu wirtualnego, który znajduje się tutaj: C:\wamp\www. Tymczasem użytkownicy XAMPP przenoszą cały materiał do tego miejsca:
C:\xampp\htdocs.
3. Kolejne instrukcje dla użytkowników systemu z rodziny Mac OS X:
• Do poprawnego działania pakietu MAMP, trzeba spełnić jeden, podstawowy warunek. Mianowicie posiadany komputer musi mieć zainstalowany
system Apple Mac OS X, w wersji 10.4.0 i późniejsze edycje. Po ściągnięciu najnowszego obrazu instalatora MAMP_MAMP_PRO_1.9.4.dmg,
klikamy na niego dwukrotnie, po czym ukaże się naszym oczom nowe
okno, w którym wystarczy przeciągnąc ikonę programu do katalogu Programy/Applications.
• Wewnątrz tego katalogu, znajdujemy ikonę MAMP i wybieramy ją pojedynczym kliknięciem. Otworzy się główne okno emulatora. W ramce
Status można zauważyć, w jakim stanie znajdują się serwery Apache i
MySQL. Czerwone kropki oznaczają, że usługa jest wyłączona, natomiast
zielone w drugą stronę.
• Do włączenia/wyłączenia pakietu, służy włącznik Start/Stop Servers.
Aby sprawdzić, czy dany program zainstalował się poprawnie oraz bezproblemowo skonfigurował, wystarczy kliknąć w Open start page, a po
chwili zostanie otworzona strona startowa projektu MAMP w domyśnie
ustawionej przeglądarce internetowej.
• Domyślnie ustawionymi portami serwera Apache i bazy MySQL, są kolejno: 8888 i 8889. W tej wersji MAMP, są także do wyboru dwie wersje
PHP: 5.3.2 i 5.2.13. Standardowo jest do 5.3.2.
• Aby sprawdzić, czy wirtualny katalog, do którego musimy wkleić całą zawartość naszej aplikacji, działa należycie, uruchamiamy dowolną
przeglądarkę WWW i wpisujemy adres: http://localhost:8888/ lub
http://127.0.0.1:8888/ i zatwierdzamy klawiszem <Enter>. Jeśli uj65
rzymy wielki komunikat It Works!, oznacza to, że możemy już przystąpić do kopiowania szablonu. Należy całą zawartość katalogów ze wszystkimi plikami przenieść do domyślnie utworzonego, wirtualnego katalogu
WWW, który się znajduje pod tą ścieżką: /Applications/MAMP/htdocs.
4. Kolejne instrukcje dla użytkowników systemu z rodziny Linux:
• Po zainstalowaniu wszystkich paczek z Apache, PHP i MySQL, przechodzimy do sprawdzenia ich funkcjonalności. Na samym początku zobaczymy na stan Apache’a. Należy teraz uruchomić dowolną przeglądarkę i
wpisać w adresie: http://localhost/ lub http://127.0.0.1/, zatwierdzając klawiszem <Enter>. Napis It Works! powiadomi o tym, że
wirtualny serwer funkcjonuje tak jak powinien.
• Kolejnym krokiem będzie sprawdzenie poprawności instalacji interpretera
PHP. Tworzymy plik z rozszerzeniem *.php, na przykład test.php, otwieramy go i wpisujemy tą linijkę kodu: <?php phpinfo(); ?>, po czym
zamykamy plik i zapisujemy zmiany. Zanim jednak zobaczymy jakiekolwiek zmiany, należy ten plik przenieść do podanej lokalizacji: /var/www,
ponieważ tam Apache domyślnie tworzy wirtualny katalog, który jest
później wyświetlany na stronach w przeglądarce. Dlatego właśnie w tym
miejscu należy także skopiować całą zawartość aplikacji. Po każdej tego
typu modyfikacji trzeba zrestartować serwer WWW. Do tego posłuży nam
okno powłoki systemu i ta oto komenda: sudo /etc/init.d/apache2 restart. Powracamy teraz do przeglądarki internetowej i w pasku adresowym wpisujemy: http://localhost/test.php. Naszym oczom powinna
pojawić się strona, zawierająca informacje dotyczące wersji i konfiguracji
PHP.
• Sprawa związana z MySQL jest o wiele prostsza, ponieważ od momentu
końca instalacji działa on poprawnie. A dostęp do zarządzania bazami danych jest możliwy również spod powłoki systemowej. Wystarczy wywołać
program mysql na prawach administratora (sudo) z dwoma parametrami
-u, określający użytkownika oraz -p, jako parametr wprowadzanego hasła. Domyślnie użytkownik i hasło to root. Całe polecenie wygląda zatem
następująco: sudo mysql -u root -p root. Od tej chwili mamy dostęp
do wszystkich baz danych znajdujących się na lokalnym komputerze.
66
Po zrealizowaniu wszystkich poprzednich kroków, czyli instalacji odpowiedniego
oprogramowania AMP na daną platformę systemową, sprawdzeniu konfiguracji Apache’a, MySQL’a i modułów PHP, uruchomieniu tych usług oraz przeniesieniu całej
zawartości aplikacji do wirtualnego katalogu, można przystąpić do jej załadowania
na przeglądarce. Cały proces zaczyna się od wprowadzenia w pasku adresowym,
ścieżki dostępu do pliku index.php, który uruchamia szablon:
Rys. 16. Pasek URL z adresem pliku index.php
Źródło: Opracowanie własne
Gdy zostanie wprowadzony już adres dostępowy do tego pliku, po chwili pojawić się
powinien panel logowania, rejestracji i przypominania hasła, który jest widoczny na
poniższym rysunku:
Rys. 17. Panel logowania, rejestracji i przypominania hasła
Źródło: Opracowanie własne
Jeżeli rejestracja przebiegnie pomyślnie, a istniejący już użytkownik wprowadzi swój
login i hasło do formularza, to zostanie on automatycznie przekierowany do menu
głównego aplikacji, w którym może wybrać kolejno jedną z czterech opcji: Nowy
Projekt, Załaduj Projekt, Eksportuj Projekt i Dane Konta. Poniższy zrzut ekranu
jest na to dowodem:
67
Rys. 18. Menu główne, panel administracyjny
Źródło: Opracowanie własne
Zacznijmy omawianie każdej opcji od końca. Dane Konta dają możliwość zmiany
swoich danych osobowych, są to przykładowo hasło, adres e-mail itp. Eksportuj Projekt pozwala użytkownikowi zapisać stan pracy na dysk twardy. Kolejną opcją jest
Załaduj Projekt, dzięki której można odtworzyć eksportowany projekt. Natomiast
Nowy Projekt przenosi zalogowaną osobę do obszaru rysowania mapy oraz panelu
edycyjnego, który jest poniżej:
Rys. 19. Panel edycyjny z funkcjami budowania mapy
Źródło: Opracowanie własne
68
BIBLIOGRAFIA
1. „Algorytm Bresenhama”, Wikipedia –
http://pl.wikipedia.org/wiki/Algorytm_Bresenhama
2. „Apple”, Apple Inc. – http://www.apple.com/
3. Crowder D. A., Crowder P. – „Tworzenie stron WWW. Biblia. Wydanie III”,
wyd. Helion, Gliwice 2009
4. Gajda W. – „jQuery. Poradnik programisty”, wyd. Helion, Gliwice 2010
5. Gennick J. – „SQL. Leksykon kieszonkowy”, wyd. Helion, Gliwice 2004
6. „GeoRSS” – http://www.georss.org/Main_Page
7. „Google Maps API Family”, Google Inc. –
http://code.google.com/intl/pl/apis/maps/index.html
8. „Google Maps with Street View”, Google Inc. –
http://www.google.com/intl/en_us/help/maps/streetview/
9. „KML Tutorial”, Google Inc. –
http://code.google.com/intl/pl/apis/kml/documentation/kml_tut.html
10. „Komputer osobisty”, Wikipedia –
http://pl.wikipedia.org/wiki/Komputer_osobisty
11. „Kurs HTML – strona WWW za darmo” - http://www.kurshtml.boo.pl/
12. „Kurs języka HTML i CSS”, Helion – http://webmaster.helion.pl/
13. „LATEX– A document preparation system”, LATEX Project Public License –
http://www.latex-project.org/
14. Lerdorf R., Tatroe K., MacIntyre P. – „PHP5. Programowanie”, wyd. Helion,
Gliwice 2007
15. „Let’s describe the whole world!”, Wikimapia – http://wikimapia.org/
16. „Lokalizator internetowy, baza firm, mapa Polski”, Zumi.pl –
http://www.zumi.pl/
69
17. „Mapa hipsometryczna”, Wikipedia –
http://pl.wikipedia.org/wiki/Mapa_hipsometryczna
18. „Mapa kropkowa”, Wikipedia –
http://pl.wikipedia.org/wiki/Mapa_kropkowa
19. „Mapa ogólnogeograficzna”, Wikipedia –
http://pl.wikipedia.org/wiki/Mapa_ogólnogeograficzna
20. „Mapy Google”, Google Inc. – http://maps.google.pl/
21. „Microsoft Office”, Microsoft Corporation – http://office.microsoft.com/pl-pl/
22. „Object Management Group - UML”, OMG – http://www.uml.org/
23. „PHP: Documentation”, The PHP Group – http://www.php.net/docs.php
24. „PHP: md5_file - Manual”, The PHP Group –
http://www.php.net/manual/en/function.md5-file.php
25. „Point of interest”, Wikipedia –
http://pl.wikipedia.org/wiki/Point_of_interest
26. Shiflett C. – „PHP. Bezpieczne programowanie”, wyd. Helion, Gliwice 2006
27. „SQL Injection”, Microsoft –
http://msdn.microsoft.com/en-us/library/ms161953.aspx
28. „System zarządzania bazą danych”, Wikipedia –
http://pl.wikipedia.org/wiki/System_zarządzania_bazą_danych
29. „Ulica 360o ”, Zumi.pl – http://www.zumi.pl/onas/1,1575392,artykul.html
30. „World Wide Web Consortium (W3C)”, W3C – http://www.w3.org/
70

Podobne dokumenty