W A R S Z A W S K A W Y Ż S Z A S Z K O Ł A I N F O R M A T Y K I P R A C A D Y P L O M O W A W Y Ż S Z E S T U D I A Z A W O D O W E Dawid Wasilewski Numer albumu 4000 Projekt i implementacja systemu informatycznego komputerowego asystenta systemowego Promotor: mgr inż. Zbigniew Rosiek Oświadczenie promotora pracy Oświadczam, że niniejsza praca, została przygotowana pod moim kierunkiem i stwierdzam że spełnia ona warunki do przedstawienia jej w postępowaniu o nadanie tytułu zawodowego. Data Podpis promotora W A R S Z A W A 2009
SPIS TREŚCI 1. Wstęp... 3 1.1. Wprowadzenie do problematyki projektu... 4 1.2. Cel i zakres realizacji projektu... 5 1.3. Uzasadnienie podjęcia tematu... 6 2. ANALIZA PROBLEMU... 7 2.1. System i jego otoczenie... 7 2.2. Cel projektu... 8 2.3. porównanie i opis podobnych aplikacji... 8 2.4. Funkcjonalność systemu... 11 2.5. wymagania wobec systemu... 11 2.5.1. wymagania funkcjonalne... 11 2.5.2. wymagania pozafunkcjonalne... 11 2.6. Diagram przypadków użycia... 11 3. PROJEKT SYSTEMU... 11 3.1. Wybór narzędzi i technologii... 11 3.1.1. Wybór środowiska programistycznego... 11 3.1.2. opis środowiska flash... 11 3.1.2.1. Charakterystyka... 11 3.1.2.2. Historia... 11 3.1.2.3. Opis języka Action Script... 11 3.1.2.4. Instrukcje warunkowe i pętle... 11 3.1.2.5. Operatory... 11 3.1.2.6. Typy danych... 11 3.1.2.7. Tablice... 11 3.1.2.8. Programowanie obiektowe... 11 3.1.2.9. Adresowanie zmiennych... 11 3.1.2.10. Komunikacja z zewnęcznym środowiskiem... 11 3.1.2.11. Ograniczenia środowiskowe... 11 3.1.3. Analiza znanych języków programowania... 11 3.1.4. Uzasadnienie wyboru... 12 3.1.5. Wybór dodatkowych narzędzi... 12 3.1.6. przegląd dostepnych narzedzi typu "swf2exe"... 12 3.1.7. Uzasadnienie wyboru... 12 3.2. Ogólna architektura systemu... 12 3.2.1. System pluginów... 12 3.2.2. System autoaktualizacji... 12 3.2.3. System skórek... 12 3.3. Projekt interfejsu... 12 3.3.1. Koncepcja interfejsu... 12 3.3.2. Uzasadnienie... 12 3.4. Projekt bazy danych... 12 3.4.1. Schemat bazy danych... 12 3.4.2. oskryptowanie bazy... 12 3.5. strona domowa projektu... 12 3.5.1. Ogólny opis strony... 12 3.5.2. szata graficzna... 12 1
4. IMPLEMENTACJA... 12 4.1. Implementacja Aplikacji... 12 4.2. Implementacja bazy danych... 13 4.3. Implementacja elementów funkcjonalności systemu... 13 4.4. Implementacja przykładowych pluginów... 13 4.5. Implementacja strony www... 13 5. TESTOWANIE APLIKACJI... 13 5.1. Wykrywanie i usuwanie błędów... 13 5.2. Testy autoaktualizacji... 13 5.3. Określanie optymalnych warunków pracy... 13 5.4. Określanie wymagań środowiskowych... 13 5.5. Opis wybranych problemów... 13 6. ZAKOŃCZENIE... 13 6.1. PODSUMOWANIE realizacji projektu... 13 6.2. Analiza możliwości rozwoju i zastosowania projektu... 13 6.3. wnioski Końcowe... 13 7. WYKAZ LITERATURY... 13 2
1. Wstęp W obecnych czasach komputer jest coraz bardziej nieodłączną częścią naszego życia zawodowego, korzystamy z niego także coraz częściej w życiu prywatnym. Większość współczesnych komputerów podłączona jest do globalnej sieci zwanej Internetem, dzięki temu umożliwiają nam dostęp do ogromnej ilości informacji i usług w różnych formach. Dzisiejsze komputery pozwalają nam na przeglądanie prezentacji audio-wizualnych, oglądanie filmów, słuchanie muzyki, czytanie wiadomości, płacenie rachunków za pośrednictwem serwisów bankowych a także na wymianę swoich poglądów z innymi użytkownikami sieci. Dzięki temu nasza cywilizacja bardzo szybko się rozwija. Wszechstronne zastosowanie komputerów sprawia, że spędzamy przy nich coraz więcej czasu, dlatego też warto było by zadbać o wygodę pracy przy komputerze. Nie tylko o wygodę, rozumianej jako ergonomia stanowiska pracy, czyli prawidłowej postawie ciała względem monitora, ale także o ergonomii aplikacji zwanej też użytecznością. Użyteczność (ang. usability, web-usability) to nauka zajmująca się ergonomią interaktywnych urządzeń oraz aplikacji. Norma ISO 9241 definiuje użyteczność jako miarę wydajności, efektywności i satysfakcji użytkownika z jaką dany produkt może być używany dla osiągnięcia określonych celów przez określonych użytkowników. Norma ta na ogół odnosi się do serwisów portali internetowych oraz aplikacji użytkowych, oceniając ich intuicyjność w nawigacji czy zrozumiałej komunikacji z użytkownikiem. Użyteczne programy to takie, które niewątpliwie pozwalają zaoszczędzić czas, spędzony na próbach rozwiązania jakiegoś problemu. Tematem tej pracy jest grupa takich aplikacji zwana potocznie gadżety bądź też widżety. 3
1.1. Wprowadzenie do problematyki projektu Gadżety, Widżety, Sidebary lub Pluginy - to małe programy o jednym konkretnym zastosowaniu zazwyczaj umieszone na pulpicie użytkownika lub stronie internetowej. Aplikacje tego rodzaju służą na ogół polepszeniu warunków pracy przy komputerze, poprzez odciążenie użytkownika od zbędnych powtarzających się czynności. Przykładem klasycznego gadżetu jest program kalkulator w systemach Windows. Dzisiejsze zastosowanie tego typu programów jest dość obszerne, od prostych zegarów, kalendarzy, czytników wiadomości kanałów RSS, aż po całkowitą zmianę wyglądu wszystkich elementów systemu. Charakterystyczną cechą tych dodatków jest fakt, że zazwyczaj w chwili ich tworzenia, nie jest wiadome czy dany produkt jest dobry i faktycznie komukolwiek potrzebny. W tym przypadku użyteczność liczona jest w ilości użytkowników którzy na co dzień używają danego narzędzia. Przykładem może być początkowo nie zauważalny plugin do przeglądarek Opera, rozszerzający możliwości programu pozwalając na przeglądanie wielu stron internetowych w jednym oknie przeglądarki. Dziś zakładki są standardem każdej nowej przeglądarki internetowej, a spór o to kto pierwszy wpadł na taki pomysł trwa nadal. W Internecie można znaleźć wiele tego typu programów, przegląd kilku z nich przedstawię w dalszych częściach pracy. Ich sukces nie zawsze zależał tylko od funkcjonalności, ale czasem po prostu od mody. Wielu użytkowników instaluje wszelkiego rodzaju aplikacje modyfikujące wygład systemu tylko i wyłącznie dla przysłowiowego bajeru. Niektóre personalizacje doprowadzane są do granic absurdu pod względem użyteczności, za to bezwątpienia pozostawiają układ i wygląd domyślnych ustawień systemu w tyle. Innym użytkownikom zależy tylko i wyłącznie na funkcjonalności i aplikacjach, które pomogą zmniejszyć ilość kliknięć by dotrzeć do potrzebnej opcji. Dlatego projektując własnego asystenta komputerowego postaram się sprostać oczekiwaną obu grup użytkowników. 4
1.2. Cel i zakres realizacji projektu Celem mojej pracy, jest projekt i implementacja programu asystenta komputerowego, wspomagający codzienne użytkowanie z komputera, oraz prostej strony internetowej projektu zwanej stroną domową, z której każdy mógłby pobrać program. System ten zwany w dalszych częściach pracy klientem, miał by być środowiskiem dla uruchamianych w nim pluginów (wtyczek) rozszerzających możliwości programu, które także zamieszczane były by na stornie domowej projektu. Zadaniem aplikacji klienta jest wspomaganie i dostarczanie różnych informacji użytkownikowi systemu poprzez zaprojektowany do tego system wtyczek. Założeniem projektu jest stworzenie innowacyjnej aplikacji, skierowanej do różnych grup użytkowników w których mogła by się spopularyzować. Istotną cechą projektu jest system samo aktualizacji i powiadomień o nowych wtyczkach na stronie, dzięki któremu użytkownik zawsze będzie na bieżąco z najnowsza wersją. Dodatkową zaletą jest system wizualizacji programu, wyposażony w mechanizm popularnych skórek obsługujący dowolne obrazy rastrowe bądź wektorowe. Ogólna korzyścią projektowanego systemu było by wspólne środowisko dla implementowanych w nich wtyczek, które użytkownik może swobodnie dodawać lub wymieniać. Projekt ma charakter eksperymentalny, oznacza to że jest on próbą sprawdzenia czy powyższe cele oraz założenia funkcjonalności mogą odnieść sukces. Zakres pracy obejmuje: Omówienie języka skryptowego action scripts 2.0 w którym zostanie napisana aplikacja. Przegląd i opis już istniejących podobnych aplikacji. Omówienie narzędzi i standardów tego typu projektów. Opis wybranego narzędzia do wykonania aplikacji. Implementacja zaprojektowanego projektu. Testowanie aplikacji. 5
1.3. Uzasadnienie podjęcia tematu Na decyzję o wyborze powyższego tematu złożyło się kilka czynników, głownie fakt, że sam należę do grupy użytkowników, która korzysta z podobnych programów na co dzień. Spędzając większość czasu przy komputerze lubię, kiedy moje wirtualne stanowisko pracy utrzymane jest nowoczesnym porządku. Umożliwia to łatwiejsze skupienie się na istocie badanego problemu, zachowaniu kreatywności oraz polepszeniu efektywności pracy. Istotnym czynnikiem w wyborze danego tematu jest również chęć stworzenia projektu, którego cykl życia miałby szansę nie zakończyć się wraz z ukończeniem tej pracy. Ponadto jest to dobra okazja do sprawdzenia umiejętności projektowania nabytych podczas edukacji. Także sama ciekawość, która wynika z naturalnej potrzeby szukania innowacji zaowocowała koncepcją stworzenia aplikacji która nie koniecznie posłuży wyższym celom aniżeli zabawie. Aplikacji ułatwiających warunki życia w systemie jest wiele, jedne bardziej użyteczne inne mniej, powstaje więc pytanie czy potrzeba nam kolejnego gadżetu? Odpowiedz na to pytanie będę mógł sformułować dopiero we wnioskach końcowych pracy. 6
2. ANALIZA PROBLEMU W poniższej analizie postaram się przybliżyć główne problemy projektowanego systemu, przypomnieć zamierzone cele, wskazać grupę dla której adresowany jest system oraz zaprezentować przykładowy opis funkcjonowania i wymagań systemu. 2.1. System i jego otoczenie Zadaniem projektowanej aplikacji jest funkcjonowanie w środowisku systemu Windows jako program desktopowy. Oznacza to ze użytkownik pozostający przy swoim pulpicie będzie miał w każdej chwili do niej dostęp. Aplikacje tego rodzaju na ogół pozostają uruchamiane w trybie system tray skąd można nimi zarządzać. System tray to miejsce na pasku zadań systemu które zawiera miniaturowe ikonki uruchomionych programów w celu szybkiego dostępu do ich funkcji. Programy pracujące w tym trybie zazwyczaj uruchamiają się podczas startu systemu i pozostają aktywne, aż do jego zamknięcia, są to np. programy antywirusowe, firewall-e, ustawienia drukarek, a także część programów systemowych, jak głośność systemu czy miernik poziomu baterii w komputerach przenośnych. Przykładem takiej aplikacji jest, także Windows sidebar zaimplementowany w systemach Vista. Koncepcją projektowanego klienta jest właśnie pozostawanie w trybie tray z możliwością rozwijania i zwijania interfejsu programu. Wadą takiego rozwiązania może być przesadna ilość wykorzystywanych zasobów pamięci systemu dlatego jest to jeden z krytycznych punktów wymagań wobec projektu. Program, który ma wątpliwe zastosowanie praktyczne i dodatkowo za bardzo obciąża komputer jest z pewnością skazany na niepowodzenie. System przeznaczony jest dla każdego użytkownika posiadającego komputer PC z zainstalowanym systemem Windows, w razie powodzenia na jednej platformie, możliwe będą kompilacje programu także dla systemów Linux, bądź komputerów Apple z oprogramowaniem Mac O.S. 7
2.2. Cel projektu Podstawowym celem projektowanego systemu jest zaistnienie w świadomości użytkowników dzięki, którym program mógłby się spopularyzować, by tego dokonać produkt musi być nie tylko przyjazny w użytkowaniu oraz funkcjonalny, ale też musi spełniać dzisiejsze standardy dotyczące wyglądu, zgodności kolorystyki z Web 2.0 być najlepiej darmowy oraz oczywiście niezawodny. Przez niezawodność rozumiemy niskie zużycie zasobów systemu oraz jak najmniejszą awaryjność. Końcowym czynnikiem wyróżniającym popularną aplikacje z pośród innych jest innowacyjność rozwiązań znanych już problemów. Ciężko zatem napisać popularną aplikację, spełniająca wszystkie powyższe wymagania, warto zatem przyjrzeć się kilku wybranym przeze mnie programom którym udało się osiągnąć zamierzony cel. 2.3. porównanie i opis podobnych aplikacji Interesujących programów desktopowych jest wiele, większość z nich występuje w wersjach darmowych typu shareware lub freeware. Ciężko jest powiedzieć, które są najlepsze z powodu różnych opinii użytkowników, dlatego niżej przedstawione programy to tylko te które są istotne z punktu widzenia mojego projektu. ObjectBar jest to program wzbogacający system o możliwość rozszerzania funkcjonalności systemowych pasków zadań (np. paska startu) lub też dodawania całkowicie nowych pasków narzędziowych. Główną zaleta programu jest jego wysoce konfigurowalny interfejs, użytkownik może zmienić wygląd i zachowanie każdego obiektu programu. Nic nie stoi na przeszkodzie by stworzyć własny pasek Rys. 2.1. Wygląd programu startu. System posiada bibliotekę własnych przedstawiony na stronie producenta pasków narzędzi oraz wtyczek zwanych docletami które można także umieszczać w dowolnym miejscu na pulpicie. Atrakcyjny wygład i bogata biblioteka docletów może zamienić standardowy pulpit w miejsce wygodnej pracy, wszystko zależy od inwencji i potrzeb użytkownika. Program występuję w wersji 8
darmowej jak i rozszerzonej płatnej, można go pobrać lub kupić na stronie producenta stardock.com. Podobnymi w działaniu programami są również Windows Sidebar będący częścią systemu Vista, Yahoo Widgets oraz Google Desktop. Jako pionierzy tej części rynku IT dają potwierdzenie tezy, że użytkownik sam nie wie, że czegoś potrzebuje dopóki tego niedostanie. Istotnym elementem tych programów dla mojego projektu jest osiągniecie podobnej lub nieco uproszczonej funkcjonalności gdzie jeden proces zarządza wszystkimi uruchomionymi rozszerzeniami. Druga pozycją. Którą zdecydowałem się opisać jest program ObjectDock także producenta Stardock. Podobnie jak swój poprzednik również pozwala na tworzenie dodatkowych pasków i występuje w wersji darmowej oraz płatnej. Różnica pomiędzy poprzednim programem jest taka, że ObjectDock to aplikacja która świetnie zarządza skrótami do innych programów. Skróty można umieszczać na Rys. 2.2. Wygląd programu przedstawiony stworzonych przez program paskach narzędzi, na stronie producenta które z kolei możemy zadokować w dowolnej części pulpitu. Oprócz skrótów możemy także umieszczać specjalne wbudowane ikony, takie jak systemowy kosz, animowany zegar, kalendarz lub aktualna pogodę naszego rejonu. W wygładzie program przypomina pasek startu znany z systemów Apple MacOs, obsługa przeźroczystości oraz ikonek z formacie PNG daje miłe wrażenie z użytkowania. Następny program to projekt typu open-source o nazwie Winbar. W porównaniu do poprzednich dwóch jest to znacznie starsza aplikacja, prawdę mówiąc to być może jedna z pierwszych aplikacji pozwalająca rozszerzyć możliwości pulpitu. Jest także pierwsza jaką sam użyłem i do tej pory używam. Program tworzy mały pasek o wysokości zaledwie dwudziestu trzech pixeli wzdłuż całego ekranu pulpitu na którym znajdują się gotowe moduły programu. Moduły te w większości służą celom pomiarowym, pokazując stan zużytej pamięci, prędkość pobierania i wysyłania pakietów sieciowych czy aktualne zużycie procesora. Posiada również wyjątkowo wygodną kontrole popularnego odtwarzacza muzyki 9
Winamp oraz szybki dostęp do paska głośności systemu. Możliwości konfiguracyjne tej aplikacji są jednak znacznie mniejsze od poprzednich dwóch programów, sam pasek można umieścić jedynie na dole lub u góry pulpitu a wbudowane moduły można jedynie przestawiać w kolejności bądź całkowicie usuwać z paska. Występuje też brak obsługi skórek oraz animowanych ikon jednak mimo tego (albo dzięki temu) użyteczność i prostota obsługi programu pozostaje na wysokim poziomie. Rys. 2.3. Wygląd paska programu winbar Program można pobrać z strony domowej projektu - winbar.nl. Niestety autor porzucił projekt lub niema czasu go kontynuować dlatego też ostatnia wydana wersja nie jest kompatybilna z systemem Windows Vista. A szkoda, gdyż jest to dobry przykład, że napakowanie programu tuzinem opcji nie zawsze jest dobrym pomysłem. Dalej dalej Konkluzja, faststone capture, samurize, DesktopX, strony poświęcone tematyce, http://www.wincustomize.com/, WindowBlinds http://customize.org/ 10
2.4. Funkcjonalność systemu Stabilność systemu Przykładowo zaprojektowana wtyczka będzie tworzyła dodatkowy pasek zadań na pulpicie użytkownika, z informacjami o stanie systemu, np.: przypisanym adresie ip. Komputera ilością pamięci ram, czy ilości przestrzeni dyskowej. Sam klient wyposażony będzie w mechanizm auto-aktualizacji. 2.5. wymagania wobec systemu 2.5.1. wymagania funkcjonalne 2.5.2. wymagania poza funkcjonalne 2.6. Diagram przypadków użycia 3. PROJEKT SYSTEMU 3.1. Wybór narzędzi i technologii 3.1.1. Wybór środowiska programistycznego 3.1.2. opis środowiska flash 3.1.2.1. Charakterystyka 3.1.2.2. Historia 3.1.2.3. Opis języka Action Script 3.1.2.4. Instrukcje warunkowe i pętle 3.1.2.5. Operatory 3.1.2.6. Typy danych 3.1.2.7. Tablice 3.1.2.8. Programowanie obiektowe 3.1.2.9. Adresowanie zmiennych 3.1.2.10. Komunikacja z zewnętrznym środowiskiem 3.1.2.11. Ograniczenia środowiskowe 3.1.3. Analiza znanych języków programowania 11
3.1.4. Uzasadnienie wyboru 3.1.5. Wybór dodatkowych narzędzi 3.1.6. przegląd dostępnych narzędzi typu "swf2exe" 3.1.7. Uzasadnienie wyboru 3.2. Ogólna architektura systemu 3.2.1. System pluginów 3.2.2. System auto-aktualizacji 3.2.3. System skórek 3.3. Projekt interfejsu 3.3.1. Koncepcja interfejsu 3.3.2. Uzasadnienie 3.4. Projekt bazy danych 3.4.1. Schemat bazy danych 3.4.2. oskryptowanie bazy 3.5. strona domowa projektu 3.5.1. Ogólny opis strony 3.5.2. szata graficzna 4. IMPLEMENTACJA 4.1. Implementacja Aplikacji 12
4.2. Implementacja bazy danych 4.3. Implementacja elementów funkcjonalności systemu 4.4. Implementacja przykładowych pluginów 4.5. Implementacja strony www 5. TESTOWANIE APLIKACJI 5.1. Wykrywanie i usuwanie błędów 5.2. Testy auto-aktualizacji 5.3. Określanie optymalnych warunków pracy 5.4. Określanie wymagań środowiskowych 5.5. Opis wybranych problemów 6. ZAKOŃCZENIE 6.1. PODSUMOWANIE realizacji projektu 6.2. Analiza możliwości rozwoju i zastosowania projektu 6.3. wnioski Końcowe 7. WYKAZ LITERATURY 13