Praca dyplomowa
SYSTEM DO ZARZĄDZANIA GAZETĄ WIRTUALNĄ (fragment pracy)
Wstęp
1. Przegląd programów umożliwiających zarządzanie treścią
1.1 Wymagane cechy systemu do zarządzania treścią w gazecie wirtualnej
1.2 Systemy typu Open Source – „Wolne oprogramowanie”
1.2.1 PHPNuke
1.2.2 Mambo
1.2.3 Joomla!
1.2.4 Porównanie PHPNuke, Mambo oraz Joomla!
1.3 Systemy komercyjne
1.3.1 SAXoTECH - The Publicus Online Publishing System
2. Technologia realizacji własnego systemu
2.1 System operacyjny
2.2 Serwer HTTP..
2.3 Baza danych.
2.4 Technologia interfejsu użytkownika
3. Struktura projektu
3.1 Wykonane oprogramowanie – wybrane moduły
3.1.1 Rdzeń
3.1.2 Autoryzacja
3.1.3 Oprogramowanie do zarządzania treścią.
3.1.4 Oprogramowanie integrujące moduły obce.
3.2 Zintegrowane obce oprogramowanie – wybrane moduły
3.2.1 Forum Dyskusyjne
3.2.2 Sonda
3.2.3 Czat
3.3 Techniki zwiększenia wydajności i niezawodności całego systemu.
3.3.1 Techniki Web Caching’u.
3.3.2 Technologie klastrowe.
3.4 Identyfikacja produktu
3.5 Opakowanie produktu
4. Realizacja systemu w aspekcie inżynierii oprogramowania..
4.1 Wymagania i specyfikacja
4.2 Projektowanie
4.3 Implementacja i testowanie
5. Podsumowanie..
BIBLIOGRAFIA
SPIS RYSUNKÓW
SPIS TABEL
Wstęp
Aktualnie można zaobserwować spadki w subskrypcjach gazet papierowych, w najbliższych latach prawdopodobnie niektóre drukowane wydania gazet znikną, stając się nieopłacalne i niekonkurencyjne[16]. Tak więc nadszedł już czas na przygotowywanie elektronicznych wydań gazet. Przyzwyczajenia ludzi potrafią się szybko zmieniać. Obecne dzieci, które w przyszłości będą praktycznie uzależnione od Internetu zostaną z pewnością czytelnikami elektronicznych gazet[17].
Celem pracy jest opracowanie systemu do zarządzania gazetą wirtualną. System ma umożliwić w łatwy i przyjemny sposób publikację i edycję tekstów, zdjęć, załączników, zarządzanie plikami i katalogami, a także tworzenie zróżnicowanych graficznie i funkcjonalnie stron. W celu minimalizacji kosztów systemu do jego stworzenia zostaną wykorzystane darmowe narzędzia oraz oprogramowanie z duchem Open Source. System przeznaczony jest przede wszystkim dla małych wydawnictw chcących udostępnić w Internecie własną gazetę.
3. Struktura projektu
System składa się z oprogramowania własnego oraz oprogramowania obcego na licencji GPL lub innych umożliwiających swobodne dysponowanie kodem. Oprogramowanie własne jest szkieletem całego systemu umożliwiając w prosty sposób rozszerzanie możliwości systemu poprzez dodawanie kolejnych modułów.
Pliki systemu zorganizowane są w drzewiastą strukturę katalogową z wyróżnionym korzeniem (core). Struktura katalogowa aplikacji ma znaczenie z dwóch powodów. Po pierwsze, wpływa na bezpieczeństwo całego serwisu poprzez uniemożliwienie użytkownikowi odwołania się do katalogów oraz plików, które są kluczowe dla działania aplikacji. Po drugie, dobrze przemyślana struktura serwisu jest niezwykle przydatna w procesie tworzenia aplikacji, szczególnie gdy aplikacja składa się z wielu skryptów.
Rysunek 4 - Struktura katalogowa
Pliki index.php oraz admin.php są jednakowe, włączają w swoją strukturę rdzeń aplikacji, który zajmuje się załadowaniem innych modułów. Wymagane są te dwa pliki, aby odróżnić dostęp zwykłego odbiorcy treści (index.php) od administratora systemu, czy redaktora (admin.php).
Katalog application zawiera pliki niezbędne do poprawnego działania aplikacji. Znaleźć tutaj można skrypty obsługujące kluczowe funkcje aplikacji wymagające komunikacji z bazą danych, klasy obiektów obsługujące dokumenty XML oraz kluczowe skrypty, takie jak m.in. rdzeń aplikacji.
Katalog config zawiera pliki konfiguracyjne zgodne z formatem XML, niezbędne do poprawnego działania aplikacji. Można tam znaleźć m.in. takie pliki, jak główny plik konfiguracyjny, plik konfiguracji modułów oraz pliki komunikatów.
Katalog log zawiera plik dziennika zdarzeń, informuje o wszystkich błędach, aktualizacjach i innych operacjach wykonywanych na i w aplikacji.
Katalog modules zawiera podkatalogi z plikami modułów rozszerzających możliwości systemu o nowe funkcjonalności, takie jak:
- autoryzacja użytkownika
- ekran logowania
- zarządzanie sesją użytkownika
- zarządzanie treścią
- wyświetlanie treści
- moduły specjalizowane w integracje danego oprogramowania obcego (typu czat, forum, sonda)
Natomiast w katalogu modulesinit zawarte są puste pliki o nazwie jak dany moduł (tworzone podczas pierwszego uruchomienia danego modułu), informują dany moduł w czasie inicjacji o tym, czy musi wywoływać funkcje instalacji tworząca np. wymagane przez moduł tabele czy informacje w tabelach czy może pominąć ten krok.
Katalog others zawiera obce oprogramowanie poukładane w katalogach:
Rysunek 5 - Struktura katalogu others
3.1.1 Rdzeń
Jest najważniejszą częścią systemu pozwalająca na bardzo prostą integrację i współpracę wszystkich modułów. Po wywołaniu rdzenia następuje zainicjowanie wartości globalnych, a także połączenia z bazą danych oraz wczytanie podstawowej konfiguracji jądra. Następnie rdzeń skanuje cały katalog modules w poszukiwaniu modułów rozszerzających, gdy napotka dany plik wywołuje inicjacje modułu poprzez wywołanie funkcji takiej samej jak nazwa modułu (np. moduł autoryzujący o nazwie plugin_auth.php ma funkcję inicjującą plugin_auth()). Funkcja inicjująca sprawdza czy uruchamia się po raz pierwszy i jeśli tak (brak pliku w modulesinit) wykonuje automatyczną instalacje (np. poprzez stworzenie wymaganych tabel w bazie). Po wykonaniu inicjacji zwraca prostą strukturę opisująca moduł:
Rysunek 6 - Struktura zwracana przez moduł
Pole action typu STRING opisuje jaką akcję moduł wywołuje, pole init typu STRING zawiera nazwę procedury jaką rdzeń ma wywołać, pole time typu INTEGER określa czy moduł ma być wykonany zawsze (wartość zero) czy tylko po zajściu jakiegokolwiek „zdarzenia” (wartość jeden), pole onaction typu STRING informuje rdzeń na jakie zdarzenia ma być wywołany moduł.
Po inicjacji wszystkich modułów rdzeń zaczyna procedurę rekurencyjnego wywoływania modułów, aż do czasu, gdy żaden moduł nie zwróci zdarzenia.
5. Podsumowanie
Zamierzeniem niniejszej pracy było opracowanie łatwego i przyjemnego w obsłudze oprogramowanie do zarządzania małą gazetą wirtualną z podstawową funkcjonalnością, a także z możliwością łatwej rozbudowy o nowe komponenty.
W pracy dokonano analizy dostępnych na rynku produktów, które mogą wspomóc proces zarządzania i wydawania elektronicznej wersji gazety, wykazano ich wady oraz zalety. Na podstawie tej analizy opracowano wymagania bardziej odpowiadającego bezpłatnego systemu do tego typu zadań, określono technologie projektu, stworzono najważniejsze części aplikacji takie jak rdzeń, a także podstawowe moduły niezbędne do uruchomienia gazety.
Pokazano jak pisać samemu własne moduły, jak integrować obce gotowe aplikację (forum, czat, etc.). Z części marketingowej ustalono wygląd produktu oraz jego logo, opisano jakie zastosować metody i rozwiązania, aby zwiększyć wydajność i niezawodność (techniki Web Caching’u oraz technologie klastrów),
Cel pracy został osiągnięty. Dodatkowo autor dokonał objaśnienia jakie metody inżynierii oprogramowania zostały wykorzystane w tworzeniu niniejszego oprogramowania.
BIBLIOGRAFIA
- Choi Wankyu, Kent Allan, Lea Chris, Gane, "PHP4 od podstaw", Helion, Warszawa 2001
- Dubois Paul, "MySQL Language Reference", Indianapolis, USA : New Riders Publishing, 2004.
- Hamlet Dick, Maybee Joe, "Inżynieria oprogramowania - podstawy techniczne inżynierii oprogramowania", WNT, 2003
- Lal Kazimierz, Rak Tomasz, "Linux a technologie klastrowe", Wydawnictwo MIKOM, Warszawa 2005
- Louis Weitzman,Sara Elo Dean,Dikran Meliksetian, Kapil Gupta,Nianjun Zhou, Jessica Wu, "Transforming the content management process at IBM.com. Conference on Human Factors in Computing Systems. Case studies of the CHI2002|AIGA Experience Design FORUM", Minneapolis, Minnesota, 2002, s. 1-15
- Pfaffenberger Bryan, Karow Bill, "HTML 4. Biblia", Helion, Warszawa 2001
- Ridruejo Daniel Lopez, Liska Allan, "Apache. Podręcznik administratora", RMIKOM, Warszawa 2002
- Simpson Doug L., "Content for one: developing a personal content management system". Proceedings of the 33rd annual ACM SIGUCCS conference on User services, Monterey, CA, USA, 2005, s. 338-342
- Smogur Zigniew, "MAMBO - Tworzenie wydajnych serwisów internetowych", Helion, Gliwice 2006
- Szeliga Marcin, Świątelski Marcin, ABC systemu WINDOWS XP PL, Warszawa : Helion, 2002. ISBN 83-7197-839-1
- Ullman Jeffrey D. , Widom Jennifer, "Podstawowy wykład z systemów baz danych", Warszawa : Wydawnictwa Naukowo-Techniczne, 2000, ISBN 83-204-2621-9
- Wessels Duane, "Web caching - optymalizacja dostępu", Wydawnictwo RM, Warszawa 2002
- Convissor Daniel, Jansen Martin, Merz Alexander, "Pear Manual", 2007 [dostęp: 1 marca 2007]. Dostępny w Internecie: http://pear.php.net/manual/en/
- Lerner Reuven, "Content Management. Linux Journal [online]." September 2000, Vol. 2000, nr 14 [ dostęp: 1 grudnia 2006]. Dostępny w Internecie: http://www.linuxjournal.com/article/4168.
- Ohrt Monte, Zmievski Andrei, "Smarty - the compiling PHP template engine", 2007 [dostęp: 1 marca 2007]. Dostępny w Internecie: http://smarty.php.net/manual/en/
- Urbanowicz Krzysztof, "Prasa musi szybko inwestować w Internet, który stanie się wkrótce głównym źródłem jej dochodów", 2006 [dostęp: 18 marca 2007]. Dostępny w Internecie: http://mediacafepl.blogspot.com/2006/06/prasa-musi-szybko-inwestowa-w-internet.html
- Zieliński Jarosław, " Łódzcy uczniowie uzależnieni od Internetu", Onet.pl, 26 marca 2002 [dostęp: 18 marca 2007]. Dostępny w Internecie: http://www.winter.pl/internet/w0769.html
- CMS Wiki : History of CMS [online]. July, 2005 [dostęp: 1 grudnia 2006]. Dostępny w Internecie: http://www.cmswiki.com/tiki-index.php?page=HistoryOfCMS
Źródła internetowe:
SPIS RYSUNKÓW
Rysunek 1- Panel administracyjny systemu PHP-NUKE
Rysunek 2 - Panel administracyjny systemu Mambo
Rysunek 3 - Panel administracyjny systemu Joomla!
Rysunek 4 - Struktura katalogowa
Rysunek 5 - Struktura katalogu others
Rysunek 6 - Struktura zwracana przez moduł
Rysunek 7 - Domyślna struktura strony z poglądu czytelnika
Rysunek 8 - Fragment struktury tabel modułu zarz. treścią
Rysunek 9 - Strona startowa systemu
Rysunek 10 - Struktura drzewiasta architektury systemu
Rysunek 11 - Struktura modułów i podmodułów
Rysunek 12 - Integracja phpBB - widok czytelnika
Rysunek 13 - Integracja phpBB - widok administratora
Rysunek 14 - Sonda
Rysunek 15 - Sonda - wyniki
Rysunek 16 - Wygląd klienta IRC (applet)
Rysunek 17 - Logo
Rysunek 18 - Opakowanie
Rysunek 19 - Diagram kaskadowy tworzenia oprogramowania (źródło: Dick Hamlet "Inżynieria oprogramowania - podstawy techniczne inżynierii oprogramowania")
SPIS TABEL
Tabela 1 - porównanie wybranych systemów CMS na podstawie cmsmatrix.org
Tabela 2 - popularność serwerów WWW na podstawie http://www.serverwatch.com