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.