Specyfikacja systemu

Przegląd celów systemu


System ma na celu umożliwienie użytkownikowi Internetu, który posiada minimalną wiedzę na temat technologii tworzenia stron WWW stworzenia swojego własnego serwisu internetowego w oparciu o interfejs graficzny będący jak najprostszy i intuicyjny. Do zainstalowania i rozpoczęcia użytkowania systemu będzie potrzebna wiedza na temat środowiska pracy skryptu, która zostanie opisana w dokumentacji.

Inną ważną możliwością systemu są jego duże możliwość co do konfiguracji i "podkręcanie" systemu przez użytkowników znających PHP w stopniu podstawowym zgodnie ze wskazówkami opisanymi w dokumentacji oraz większe modyfikacje i dostosowanie systemu w 100% do własnych potrzeb dla użytkowników znających się na dobrze na programowaniu w PHP.

Program przeznaczony do tworzenia interaktywny serwisów z podziałem na role administracji w nim i różne poziomy uprzywilejowania użytkowników.

Środowisko operacyjne oraz środowisko tworzenia systemu


Środowiskiem docelowym jest serwer WWW udostępniony w sieci Internet pracujący pod kontrolą systemu z rodziny Linux lub Unix i serwerem Apache. Wymagania te jednak nie mają dużego znaczenia ponieważ skrypt nie stosuje funkcji specyficznych dla tej kombinacji i może pracować na każdym serwerze na który można zainstalować interpreter języka PHP.

System dane przechowuje w bazie danych przez co jego wymagania co do standardu SQL nie mogą być wygórowane. Aby aplikacja działała potrzebna jest baza danych która ma zbliżone standardy obsługi zapytać do SQL-92. System wykonuje tylko podstawowe zapytania wraz ze złączeniami i nie może wymagać obsługi podzapytań.

Środowiskiem tworzenia skryptu powinien być system z rodziny Linux. Wybranie systemu Linux jest spowodowane tym iż jest on coraz częściej spotykany na serwetach WWW obok systemu Unix do którego jest podobny i aplikację można testować w wiarygodnych warunkach. Drugim powodem wybrania systemu Linux są jego ogromne możliwości oferowane programiście.

Interfejs oraz przepływ danych


Głównym źródłem danych jest baza danych. PHP komunikuje się z bazą za pomocą wbudowanych funkcji dla wybranej bazy. System będzie miał możliwość współpracy z różnymi bazami danych dzięki zastosowaniu warstwy abstrakcji SQL-layer która pośredniczy między bazą a PHP co da możliwość jej zmiany na inną w ciągu kilkudziesięciu minut. Napisanie sterowników do obsługi innej bazy danych sprowadza się do kilku zmian w pliku ze sterownikiem, a większość czasu zajmie przeniesienie tabel z jednej bazy do drugiej.

Dodatkowo system posiada logi w których zapisuje się informacje o akcjach wykonanych przez użytkownika, co wymaga dostępu do systemu plików dysku serwera. Jeżeli zapisanie logów nie będzie możliwe to można je wyłączyć, a funkcje przejmie system kontroli adresów IP który będzie włączony cały czas.

System zbudowany będzie na bazie modułów które pozwolą na jego bezproblemową rozbudowę i łatwe modyfikacje. Każdy moduł będzie zawierał własne opcje konfiguracyjne i tabele w bazie danych w razie potrzeby oraz współdzielone opcje konfiguracyjne z resztą systemu.

Głównym trzonem będzie 'silnik' który utworzy całą stronę włączając do jej podstawowego szkieletu moduły zawierające odpowiednie działy. Będzie on zawierał funkcje które posłużą modułom. Ograniczy to nieco możliwości ich konfiguracji, ale też zredukuje ilość miejsc w których później będzie trzeba wprowadzać poprawki.

System będzie potrzebował metody śledzenia użytkowników na swoich stronach. Zostanie to rozwiązane własnym skryptem sesji ponieważ mechanizm sesji z PHP nie będzie potrzebny. Użytkownik powinien przyjąć plik Cookie z jego identyfikatorem, który odpowiada rekordowi w bazie danych systemu.

Wymagana funkcjonalne


Wymagany jest interpreter PHP w wersji 4.0.6 lub nowszy. Jest możliwe i całkiem prawdopodobne że system będzie mógł działać nawet na PHP w wersji 3, jednak nigdy nie będzie testowany na tej wersji. PHP nie musi mieć opcji 'register_globals' włączonej ponieważ skrypt będzie przetwarzał tablice $HTTP_GET_VARS i $HTTP_POST_VARS w celu uzyskania danych z zewnątrz.

Od strony klienta wymagana jest przeglądarka internetowa zgodna ze standardem HTML 4.01 i obsługująca arkusze stylów CSS w wersji 1. Administrator systemu powinien zaopatrzyć się w przeglądarkę obsługującą dodatkowo język JavaScript w wersji 1.2 chociaż nie jest to konieczne.

Interfejs graficzny powinien być tak skonstruowany aby można było wyświetlać stronę na starszych wersjach popularnych przeglądarek i przeglądarkach tekstowych. Wszelkie wstawki typu DHTML są dozwolone pod warunkiem że istnieje dla nich alternatywa w postaci zwykłych statycznych stron.

Wymagania dotyczące efektywności działania


System będzie na tyle efektywny na ile szybki jest serwer na którym go zainstalowano. Drugą sprawą jest konfiguracja systemu przez administratora i jego przeładowanie załączeniem wszystkich opcji.

Od strony klienta szybkość zależy od jego łącza i przeglądarki jakiej używa. Ilość grafiki zaleca stosowanie przeglądarki z poprawną obsługą protokołu HTTP 1.1.

Obsługa wyjątków


Dane z formularzy i przekazywane w ciągu adresu URL są zabezpieczone przed wprowadzeniem do bazy danych powojujących błędy w składni za pomocą odpowiednich funkcji.

Priorytety implementacyjne


Do priorytetów należy rozwinięcie systemu w kierunku stworzenia sterowników do innych popularnych baz danych i interfejsu OBDC.

Modyfikacje


W przyszłości nastąpi wzbogacenie istniejących modułów i dodawanie nowych rozszerzeń do systemu.

System powinien być łatwy w modyfikacji dzięki zastosowaniu spójnych reguł nazewnictwa dotyczących zmiennych, funkcji i nazw plików.

Wewnętrzne zmienne oraz funkcje powinny być formatowane stylem "wielbłądzim" czyli z użyciem dużych i małych liter. Zmienne zewnętrzne czyli takie przekazywane za pomocą metod POST i GET powinny być pisane wyłącznie małymi literami z poszczególnymi członami rozdzielonymi za pomocą znaku "_".

Pliki i katalogi będą miały nazwy pisane tylko i wyłącznie małymi literami, a poszczególne człony będą rozdzielone znakiem myślnika "-". Reguła ta może nie dotyczyć plików wygenerowanych przez sam system takich jak logi.

Sugestie dotyczące projektu


Zachowanie spójności kodu źródłowego, jego poprawne formatowanie w celu braku problemów z odczytaniem i komentowanie poczynionych zmian.