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