AskAnything - SAD by the Hackin9 crew

Podobne dokumenty
Opis Architektury Systemu Galileo

ZPKSoft WDoradca. 1. Wstęp 2. Architektura 3. Instalacja 4. Konfiguracja 5. Jak to działa 6. Licencja

World Wide Web? rkijanka

IO - SAD. M.Jałmużna T.Jurkiewicz P.Kasprzyk M.Robak. 5 czerwca 2006

Software Achitecture Document Pó l-internetowy System Obs lugi Turystyki Gminnej

Współpraca z platformą Emp@tia. dokumentacja techniczna

Dokumentacja programu Rejestr Informacji o Środowisku

Współpraca z platformą dokumentacja techniczna

Kadry Optivum, Płace Optivum. Jak przenieść dane na nowy komputer?

Języki programowania wysokiego poziomu. Ćwiczenia

Instrukcja wgrywania Certyfikatu Klienta do przeglądarki Mozilla Firefox. System Bankowości Internetowej KIRI BS 2012

Płace Optivum. 1. Zainstalować serwer SQL (Microsoft SQL Server 2008 R2) oraz program Płace Optivum.

Wykonać Ćwiczenie: Active Directory, konfiguracja Podstawowa

Software Architecture Document czyli jak i dlaczego w 14 minut ;-)

Dokument Detaliczny Projektu Temat: Księgarnia On-line Bukstor

INFO-R. Instalacja pakietu programów obsługujących platformę

Kadry Optivum, Płace Optivum. Jak przenieść dane na nowy komputer?

Kalipso wywiady środowiskowe

Wypożyczalnia by CTI. Instrukcja

Software Architecture Document

Budowa aplikacji ASP.NET współpracującej z bazą dany do przeprowadzania ankiet internetowych

Logowanie do aplikacji TETA Web. Instrukcja Użytkownika

Prezentacja programu. Parentis Sp. z o.o. Dział Informatyki. Kartoszyno, ul. Przemysłowa 5, Krokowa

wersja 1.0 ośrodek komputerowy uj cm ul. mikołaja kopernika 7e, Kraków tel

PHP: bazy danych, SQL, AJAX i JSON

Instrukcja obsługi aplikacji

WINDOWS Instalacja serwera WWW na systemie Windows XP, 7, 8.

IO - Plan testów. M.Jałmużna T.Jurkiewicz P.Kasprzyk M.Robak. 5 czerwca 2006

Usługi analityczne budowa kostki analitycznej Część pierwsza.

WYKONANIE MODELU GENERYCZNEGO W POSTACI APLIKACJI, SŁUŻĄCEJ DO PROGNOZOWANIA ZAPOTRZEBOWANIA NA USŁUGI EDUKACYJNE

Zdalne monitorowanie i zarządzanie urządzeniami sieciowymi

System magazynowy małego sklepu.

Języki programowania wysokiego poziomu. Blog

Praca w sieci z serwerem

Overlord - specyfikacja uzupełniająca. Jakub Gołębiowski Adam Kawa Piotr Krewski Tomasz Weksej

Budowa aplikacji ASP.NET współpracującej z bazą dany do przeprowadzania ankiet internetowych

Kancelaria Prawna.WEB - POMOC

GroupWise WebAccess Basic Interface

REFERAT PRACY DYPLOMOWEJ

Aplikacja (oprogramowanie) będzie umożliwiać przygotowanie, przeprowadzenie badania oraz analizę wyników według określonej metody.

Galileo - encyklopedia internetowa Plan testów

Program GroupWise WebAccess interfejs podstawowy

Połączenie VPN Host-LAN SSL z wykorzystaniem przeglądarki. 1. Konfiguracja serwera VPN 1.1. Ustawienia ogólne 1.2. Konto SSL 1.3. Grupa użytkowników

Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości

Języki programowania wysokiego poziomu. Forum

Opisane poniżej czynności może wykonać administrator komputera lub administrator serwera SQL (tj. użytkownik sa).

UNIWERSYTET RZESZOWSKI KATEDRA INFORMATYKI

Podręcznik Użytkownika LSI WRPO

E-commerce. Genialnie proste tworzenie serwisów w PHP i MySQL.

Tomasz Greszata - Koszalin

Aplikacje WWW - laboratorium

Część 3 - Konfiguracja

Opis programu EKSoft Rezerwacje

Zasady Wykorzystywania Plików Cookies

APLIKACJA SHAREPOINT

Projektowanie bazy danych przykład

REFERAT PRACY DYPLOMOWEJ Temat pracy: Projekt i realizacja serwisu ogłoszeń z inteligentną wyszukiwarką

Uruchamianie bazy PostgreSQL

Referat pracy dyplomowej

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Centrum Informacji Społeczno-Gospodarczej

Dokumentacja systemu NTP rekrut. Autor: Sławomir Miller

Bazy danych 2. Wykład 1

Plan. Wprowadzenie. Co to jest APEX? Wprowadzenie. Administracja obszarem roboczym

Portal wykładowco w. Jeżeli chcesz rozpocząć pracę z portalem, skontaktuj się ze swoim planistą. Planista utworzy konto logowania dla Ciebie.

Komputerowe Systemy Przemysłowe: Modelowanie - UML. Arkadiusz Banasik arkadiusz.banasik@polsl.pl

Tomasz Grześ. Systemy zarządzania treścią, cz. II

KRÓTKI PRZEWODNIK Z ZAKRESU OBSŁUGI APLIKACJI PB ONLINE

WPROWADZANIE ZLECEŃ POPRZEZ STRONĘ INSTRUKCJA UŻYTKOWNIKA

Instalacja SQL Server Express. Logowanie na stronie Microsoftu

Skrócona instrukcja korzystania z Platformy Zdalnej Edukacji w Gliwickiej Wyższej Szkole Przedsiębiorczości

Liczba godzin 1,2 Organizacja zajęć Omówienie programu nauczania 2. Tematyka zajęć

Przykłady i kursy Wersja 7 Wydanie 5. Przykładowy kurs rekrutacji dla produktu IBM Process Designer

ibcslabel v2 Instrukcja instalacji systemu

Diagram wdrożenia. Rys. 5.1 Diagram wdrożenia.

2014 Electronics For Imaging. Informacje zawarte w niniejszej publikacji podlegają postanowieniom opisanym w dokumencie Uwagi prawne dotyczącym tego

Instrukcja do panelu administracyjnego. do zarządzania kontem FTP WebAs.

Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości

Platforma e-learningowa

ESI [tronic] 2.0 instalacja programu

Pełna specyfikacja pakietów Mail Cloud

Instrukcja użytkownika

Tomasz Grześ. Systemy zarządzania treścią

Nr: 12. Tytuł: UDOSTĘPNIANIE DANYCH O SPRAWACH KLIENTOM KANCELARII NA ZEWNĘTRZNYCH SERWERACH WWW. Data modyfikacji:

Instrukcja zarządzania kontami i prawami. użytkowników w systemie express V. 5

URLOPY BY CTI. Instrukcja obsługi

Platforma e-learningowa

INFO-NET.wsparcie. pppoe.in.net.pl. Pamiętaj aby nie podawać nikomu swojego hasła! Instrukcja połączenia PPPoE w Windows 7 WAŻNA INFORMACJA

ViewIt 2.0. System Monitoringu i Zarządzania Sygnalizacjami Świetlnymi. Funkcje

Instrukcja użytkownika

Elektroniczny Urząd Podawczy

ArCADia-3D MAKER. Podręcznik użytkownika dla programu ArCADia- 3D MAKER

Dokumentacja projektu QUAIKE Architektura oprogramowania

Program Rejestr zużytych materiałów. Instrukcja obsługi

Pełna specyfikacja pakietów Mail Cloud

Sage Migrator 2019.e Migracja do Sage 50c wersja 2019.a i 2019.b

5. Wypełniony formularz należy zatwierdzić klikając na przycisk ZATWIERDŹ.

Instrukcja modułu BKD - Wykonawca

Transkrypt:

AskAnything - SAD by the Hackin9 crew Jan Urbański (ju219721) Jakub Rauch (jr219554) Sebastian Tomaszewski (st219712) Maciej Stefański (ms219668) 5 czerwca 2006 http://students.mimuw.edu.pl/~ju219721/askanything/ (strona projektu) 1

Spis treści 1 Wprowadzenie 2 1.1 Cel.......................................... 2 1.2 Zakres........................................ 2 1.3 Definicje....................................... 2 1.4 Omówienie reszty dokumentu........................... 3 2 Prezentacja architektury systemu 3 3 Załozenia i zależności 4 4 Przeglad przypadków użycia 4 4.1 Zdefiniowanie ankiety................................ 5 4.2 Korzystanie z konsultacji.............................. 5 4.3 Odebranie wyników................................. 5 4.4 Wypełnienie ankiety................................ 6 4.5 Sklepik....................................... 6 4.6 Realizacje przypadków użycia........................... 6 5 Dekompozycja logiczna systemu 6 5.1 Omówienie..................................... 6 5.2 Interfejs użytkownika................................ 8 5.3 Interfejs bazy danych................................ 9 5.4 Baza danych..................................... 10 6 Dekompozycja na procesy 11 7 Instalacja systemu 12 8 Implementacja systemu 13 8.1 Omówienie..................................... 13 8.2 Warstwy....................................... 14 8.2.1 Aplikacja.................................. 14 8.2.2 Interfejs bazy danych............................ 14 8.2.3 Baza danych................................ 15 9 Wydajność systemu 16 10 Jakość 16 10.1 Rozszerzalność................................... 16 10.2 Niezawodność.................................... 16 11 Historia zmian 17 2

1 Wprowadzenie 1.1 Cel Ten dokument ma na celu przedstawienie architektury systemu AskAnything. Jego charakterystyka została tu szczegółowo zaprezentowana, w oparciu o rozmaite techniki projektowe. Celem jest przedstawienie najistotniejszych rozwiązań strukturalnych, zgodnych z założeniami i wymaganiami, wykorzystanych do tworzenia systemu AskAnything. Przy tworzeniu oprogramowania wszystkie, zawarte w tym dokumencie wymagania, muszą być przestrzegane. 1.2 Zakres Software Architecture Document opisuje: 1. pakiety 2. strukturę systemu 3. interfejsy 4. klasy 1.3 Definicje ACID: Atomicity, Consistency, Isolation, Durability HTML: HyperText Markup Language HTTP: Hypertext Transfer Protocol HTTPS: HTTP z wykorzystaniem dodatkowego protokołu zabezpieczeń PG: PostgreSQL PHP: PHP: Hypertext Preprocessor SQL: Structured Query Language WWW: World Wide Web 1.4 Omówienie reszty dokumentu W kolejnych działach znajduje się omówienie następujących tematów: 2. Prezentacja architektury systemu 3. Założenia i zależności 3

4. Przegląd przypadków użycia 5. Dekompozycja logiczna systemu - pakiety 6. Dekompozycja na procesy - komunikacja procesów 7. Instalacja systemu 8. Implementacja systemu 9. Przechowywane dane 10. Wydajność systemu 11. Jakość 2 Prezentacja architektury systemu Architektura systemu bazuje na zależności klient-serwer. Ze strony użytkownika dostęp wymaga jednynie posiadania przeglądarki internetowej oraz dostępu do sieci WWW. Cała struktura systemu znajduje się na serwerze. Całość przedstawiona jest w następujących perspektywach: Przypadki użycia Dekompozycja logiczna sytemu Dekompozycja procesów Implementacja Instalacja 3 Załozenia i zależności Wymagania zostały zawarte w Dokumentacji Uzupełniającej - rozdziały 2.2, 2.3 Sprostanie tym wymaganiom wiąże się z koniecznością istnienia co najmniej dwóch równolegle działających serwerów zapewniających nieprzerwaną pracę systemu. Konieczne jest, aby serwery te były fizycznie od siebie oddalone. W razie awarii jednego z nich drugi musi zapewniać pełną sprawność systemu na czas przywrócenia pierwszego do prawidłowego funkcjonowania. Każdy z serwerów powinien mieć szerokopasmowe łącze - co najmniej 10Mb/s. Preferowana architektura to AMD Opteron, która znakomicie sprawdza się w roli serwera. Dla swobodnej pracy systemu wymagane jest 100GB pamięci dyskowej na bazę danych i aplikację AskAnything. W celu ochrony danych konieczne jest wykonanie co najmniej jednej dodatkowej kopii bazy danych aktualizowanej przynajmniej raz na trzy dni. Kopia danych musi znajdować się na komputerze fizycznie oddalonym od aktywnie działającego w ramach systemu. 4

Dodatkowe zabezpieczenie na poziomie software owym zakłada pracę na bazie danych opartej na konwencji ACID. Preferowana baza - ORACLE (w ostateczności PG). Nie mniej istotna jest stabilność, którą zapewni system UNIX i serwer Apache (wersja 2.2.0 lub nowsza). 4 Przeglad przypadków użycia 4.1 Zdefiniowanie ankiety Stale rosnące zapotrzebowanie na badanie rynku jest najważniejszym powodem istnienia AskAnything. Do badania niezbędne jest utworzenie szeregu pytań. Ten przypadek użycia pokazuje w jaki sposób powstaje ankieta w AskAnything. 5

4.2 Korzystanie z konsultacji Tworzenie ankiety nie jest łatwe, a jej prawidłowe skonstruowanie może znacznie poprawić skuteczność ankiety, a co za tym idzie, również jakość wyników. Skorzystanie z konsultacji pozwala na zoptymalizowanie ankiety tak, by dostarczała ona jak najwięcej cennych informacji. W konsultacjach uczestniczą zatrudnieni do tego celu specjaliści. 4.3 Odebranie wyników Po zakończeniu przeprowadania ankiety konieczne jest umożliwienie jej analizy. Oczywiście dostęp do takich danych musi być odpowiednio ograniczony i zabezpieczony. Ten przypadek prezentuje odbiór wyników ankiety przez zleceniodawcę (jedyny prawowity właściciel danych poza AskAnything). 4.4 Wypełnienie ankiety Konieczne jest zgromadzenie znacznej liczby osób, chętnych do uczestniczenia w badaniu. Ten przypadek użycia ukazuje, w jaki sposób zbierane są informacje od poszczególnych badanych. 4.5 Sklepik Aby zachęcić ludzi do uczestniczenia w ankiecie konieczne jest zorganizowanie nagród. Dostęp do sklepiku pozwala uczestnikom ankiety zrekompensować sobie czas poświęcony na wypełnianie ankiety. Tutaj widać, jak został zorganizowany system nagród w AskAnything. 4.6 Realizacje przypadków użycia 5 Dekompozycja logiczna systemu 5.1 Omówienie System dzieli się na trzy podstawowe warstwy: Interfejs użytkownika (ankietowany lub zleceniodawca) Interfejs bazy danych Baza danych 6

7

5.2 Interfejs użytkownika Użytkownik poprzez swoją przeglądarkę internetową, może za pomocą protokołu http (w przypadku logowania https) połączyć się z systemem i poruszać się w środowisku za pośrednictwem przygotowanego interfejsu użytkownika. Tak zinterpretowana strona WWW będąca wygenerowanym w PHP kodem HTML pozwoli użytkownikowi na interakcję z systemem. Sposób poruszania się użytkownika po sytemie zawarty jest w przypadkach użycia - Wypełnienie Ankiety (rozdział 2.), Sklepik (rozdział 2.). Jak widać na diagramie istnieją trzy podklasy Strony. Jako że wyniki ankiety, treść ankiety czy sklepik będzie oparty na schematycznej budowie, więc najłatwiej będzie skorzystać z klas, które na podstawie pobranych z bazy informacji wygenerują odpowiedni kod HTML. Pozostałe, mniej charakterystyczne strony będą korzystały ze zwykłej klasy Strona, która wyświetlać będzie informacje zawarte w treści. Strona, jako składnik okna, wyświetlana będzie razem z menu i nagłówkiem. Menu pozwoli poruszać się po systemie i różnorodnych jego podstronach. Nagłówek widoczny na każdej otwartej witrynie (podobnie jak menu) jest jedynie informacją na jakiej stronie internauta się znalazł. Jego kliknięcie spowoduje powrót do strony głównej. Menu 8

składa się z przycisków - te zaś posiadają swoją nazwę i odpowiednie odnośniki. Menu z przyciskami, podobnie jak wszystkie elementy strony, potrafi wygenerować swój kod (Menu jedynie wybiera gdzie kod przycisku ma zostać umieszczony). Każdemu Elementowi można nadać szerokość i wysokość. Ponadto istnieje możliwość zmiana image strony za pomocą popularnych obecnie stylów. 5.3 Interfejs bazy danych W pakiecie AskAnything znajduje się implementacja wielu pomocniczych funkcji do bazy danych. Głównymi tam dostępnymi są: dodajużytkownika(info: Uzytkownik) - dodaje do bazy użytkownika o charakterystyce zdefiniowanej w info (typ został uogólniony dla większej czytelności) skasujużytkownika(login: String) - usuwa użytkownika o podanym loginie (dostępne tylko dla administratora) dodajankietę(struktura: Ankieta) - dodaje do bazy Ankietę na podstawie podanego parametru Ankieta (typ został uogólniony dla większej czytelności), za pośrednictwem interfejsu opartego na InterfejsUżytkownika::Ankieta wynikiankiety(id: int) - zwraca wyniki ankiety o identyfikatorze id (dla zleceniodawców - używane w klasie InterfejsUżytkownika::Ankieta) podajankiete(id: int) - zwraca zestaw pytan ankiety (dla ankietowanych - używane w klasie InterfejsUżytkownika::Ankieta) zapiszankiete(struktura: Ankieta) - zapisuje wyniki ankiety (za pośrednictwem interfejsu opartego na InterfejsUżytkownika::Ankieta) zawartośćsklepiku() - zwraca zawartość sklepiku (wykorzystywane np: w klasie InterfejsUżytkownika::Sklep do generowania interfejsu) kup(id) - zwraca kupiony przedmiot jeśli możliwe (wystarczająca liczba zebranych punktów) Poza najważniejszymi istnieje jeszcze wiele innych ułatwiających pracę na bazie danych (tj. dodajpunkty(i: int), zabierzpunkty(i: int), itp). 9

5.4 Baza danych Na powyższym diagramie zawarte są encje dotyczące osób, ankiet, pytań i odpowiedzi. Pominięty został sklepik dla większej przejrzystości. Diagram charakteryzuje strukturę bazy danych, istniejące tabele i zależności oraz rodzaje zmiennych. Część dotycząca sklepiku to dodatkowe encje: Kategorie Artykuły Zamówienia Kategorie będą wyświetlane na stronie głównej sklepiku. Mają wprowadzać porządek wśród dostępnych artykułów. Atrybuty: # id: INTEGER - unikalny identyfikator kategori (klucz główny) * nazwa: VARCHAR(30) - nazwa kategorii o opis: VARCHAR(250) - krótki opis, czego dotyczy kategoria 10

o ikona: VARCHAR(100) - ikona wyświetlana na stronie, która ma charakteryzować daną kategorię Kategorie są połączone związkiem jeden do wielu z encją Artykuły. Każdy artykuł musi należeć do jakiejś kategorii, a każda kategoria może mieć wiele artykułów. Artykuły będą widoczne po otwarciu którejś z kategorii (oczywiście tylko te artykuły, które do owej kategorii należą). Atrybuty: # id: INTEGER - unikalny identyfikator artykułu (klucz główny) * kategoria: INTEGER - klucz zewnętrzny, na którym opiera się związek z Kategoriami * nazwa: VARCHAR(30) - nazwa artykułu * cena: INTEGER - cena artykułu w punktach o cenapln: FLOAT - cena artykułu w złotówkach o opis: VARCHAR(250) - opis artykułu o zdjęcie: VARCHAR(100) - zdjęcie artykułu (ewentualnie adres folderu ze zdjeciami) Artykuły są połączone związkiem z Kategoriami (wspomniane wyżej) oraz związkiem jeden do wielu z Zamówieniami. Każdy artykuł może być zamówiony wielokrotnie, ale każde osobne zamówienie może dotyczyć tylko jednego artykułu. Zamówienia jest encją powstałą w miejsce związku wiele do wielu pomiędzy Osobami, a Artykułami. # id: INTEGER - unikalny identyfikator zamówienia (klucz główny) * osoba: INTEGER - klucz zewnętrzny, na którym opiera się związek z Osobami * artykuł: INTEGER - klucz zewnętrzny, na którym opiera się związek z Artykułami Zamówienia są połączone związkiem z Artykułami (wspomniane wyżej) oraz związkiem wielu do jednego z Osobami. Jedna osoba może złożyć wiele zamówień, ale każde osobne zamówienie może być złożone tylko przez jedną osobę. 6 Dekompozycja na procesy Ponieważ baza danych Oracle pozwala na współbieżny dostęp do zawartych w niej danych, system pozwala więc na równoległą pracę wielu użytkowników jednocześnie, generując dla każdego z nich odpowiedni interfejs. Za jego pośrednictwem każdy z użytkowników będzie mógł, niezależnie od pozostałych, łączyć się z serwerem SQL. Jako, że połączenie będzie osobne dla każdego użytkownika, a serwer umożliwia znaczny przepływ danych w takich okolicznościach, więc każda instancja Okna z wygenerowanym kodem będzie działała równolegle do innych, wywołanych przez resztę aktywnych użytkowników. 11

7 Instalacja systemu Perspektywa instalacji pokazuje fizyczne połączenia między najistotniejszymi węzłami w systemie. System AskAnything wyznacza w tej dziedzinie konkretne cele, aby sprostać postawionym wymaganiom (przede wszystkim bezpieczeństwu i bezawaryjności). Poniższy diagram systemu pokazuje w jaki sposób następuje przekaz danych między użytkownikami z różnymi uprawnieniami, a systemem AskAnything. System może działać zarówno na jednym jak i wielu równolegle współpracujących serwerach. Podobnie jest w przypadku baz danych. Wymagania wydajnościowe i jakościowe powodują, że w przypadku AskAnything, ze względu na skalę na jaką ma on być rozpowszechniony, musi on pracować na co najmniej dwóch serwerach obsługujących użytkowników i dwóch serwerach baz danych. Szczegóły tego rozwiązania są zawarte w Założeniach i zależnościach tego dokumentu. Poniższy diagram stanowi graficzną interpretację planowanej struktury systemu. Oczywiście zakładamy, że zależności z diagramu powyżej zawarte są i w budowie systemu przedstawianego poniżej. 12

Widać wyraźnie, że system można łatwo rozbudowywać i dodawać kolejne serwery lub bazy danych. Dzięki takiemu uniwersalnemu rozwiązaniu możliwe jest uruchomienie systemu AskAnything przykładowo na zwiększonej liczbie serwerów, o mniejszej wydajności niż jest to założone. Istotne jest, aby obciążenie serwerów było możliwie wyrównane. W tym celu serwer DNS będzie przydzielał losowy numer komputera pod adres strony AskAnything. 8 Implementacja systemu 8.1 Omówienie Ze strony implementacyjnej system AskAnything dzieli się na następujące warstwy: aplikacja w PHP - interfejs użytkownika, struktura generowania stron 13

interfejs bazy danych baza danych 8.2 Warstwy 8.2.1 Aplikacja Aplikacja ma za zadanie stworzyć stronę WWW dla użytkownika, adekwatnie do jego uprawnień. W tym celu należy zaimplementować interfejsy z różnymi prawami dostępu. Interfejsy mają być oparte na strukturze klas przedstawionej w rozdziale 5.2 tego dokumentu. Naturalnie konieczna jest implementacja przedstawionych tam klas. 8.2.2 Interfejs bazy danych Interfejs bazy danych stanowi implementacja funkcji wymienionych w rozdziale 5.3. Istnieje podział na dwie główne grupy: funkcje administracyjne + funkcje użytkownika wspólne funkcje ankietowanego funkcje zleceniodawcy 14

Ma on na celu zwiększenie bezpieczeństwa systemu. Funkcje administracyjne udostępniane są jedynie administratorowi, który będzie się łączył z bazą korzystając z innego loginu i hasła niż użytkownicy. W takiej sytuacji nie zdarzy się, że osoba, która będzie chciała włamać się na stronę z poziomu zwykłego użytkownika, skorzysta z funkcji dostępnych administratorowi. Oczywiście administrator ma dostęp do funkcji użytkownika. W podobny sposób podzielony jest dostęp do funkcji u zleceniodawcy i ankietowanego. Ze względu na niewielkie możliwości wyrządzenia szkód w grupie użytkowników, podział ten nie został aż tak wyraźnie wyszczególniony. Jednak warto zauważyć, że ten krok również jest istotny. Zleceniodawca, który pod kątem możliwości jakie daje mu oprogramowanie, ma większe możliwości manewru w razie próby włamania na stronę. Jednak większe możliwości wiążą się z większym ryzykiem, ponieważ klient jest jest znacznie mniej anonimowy niż ankietowany. 8.2.3 Baza danych Struktura bazy danych została szczegółowo przedstawiona w rozdziale 5.4 tego dokumentu. 15

9 Wydajność systemu Największą trudnością jest sprostanie wymaganiom wydajnościowym pod względem obciążenia łącz (do bazy danych). Aby sprostać wymaganiom system musi sprawnie obsługiwać: zapytania wykonywane na bazie danych (wyniki do kilkudziesięciu kilobajtów, modyfikacja bazy) - najbardziej kosztowne operacje generowanie kodu strony (czas zależny od mocy obliczeniowej serwera) znaczny wzrost ruchu na stronie (zwłaszcza w godzinach popołudniowych - łączy dwa poprzednie punkty) Na powyższe sytuacje składają się przede wszystkim: przeglądanie sklepiku otwieranie ankiet wyświetlanie wyników ankiet wysyłanie rozwiązań ankiet Równoległa współpraca dwóch serwerów klasy AMD Opteron - każde z łączem 10Mb/s pozwala na jednoczesną obsługę do 600 użytkowników (zakładając, że są to użytkownicy wykonujący losowe operacje). 10 Jakość 10.1 Rozszerzalność Obecnie AskAnything przewidziane jest do funkcjonowania w obrębie całego kraju. Wraz ze wzrostem zainteresowania lub w razie wkroczenia na zagraniczne rynki, możliwe jest dostosowanie mocy obliczeniowej i przepływu informacji stosując dodatkowe serwery i bazy danych oraz zaopatrując system w bardziej przepustowe łącza. Charakterystyka budowy systemu (opis w rozdziale 7.) pozwala na swobodny rozwój systemu. 10.2 Niezawodność Jednocześnie współpracujące dwa serwery pozwalają zachować stabilność systemu. W razie awarii jednego serwera, drugi przejmie jego obowiązki. Ewentualne przeciążenie systemu i związane z tym opóźnienia będą trwały jedynie tyle ile wyniesie przywrócenie do pracy pierwszego serwera (do 30 minut). W razie poważnych uszkodzeń, które nie pozwolą na szybki powrót serwera do normalnego trybu pracy podjęte działania zaradcze (wynajęcie/kupno serwera) mogą ewentualnie przedłużyć przeciążenie do jednej doby. Stały nadzór administratora 16

nad systemem ma zminimalizować ryzyko zaistnienia takich sytuacji. W razie uszkodzenia bazy danych natychmiastowo zostaje uruchomiona kopia zapasowa (bezpowrotnie przełączona z trybu stand-by na ready), która przejmuje obowiązki dotychczas pracującej bazy danych. 11 Historia zmian Wersja 1.0 2006/05/27 11:04:07 Gotowa wersja dokumentu. Wersja 0.9 2006/05/25 01:47:40 Dodano diagramy. Brak spisu treści, sekcji "wydajność systemu"i sekcji "Jakość". Pozostałe sekcje gotowe. Wersja 0.8 2006/05/22 00:03:46 Sekcje 1-7 gotowe - brak diagramów. 17