Przykładowa praca inżynierska.doc

(2280 KB) Pobierz
Praca inżynierska

Uczelnia Warszawska im. Marii Skłodowskiej-Curie

Kierunek: Informatyka i ekonometria

 

 



 

 

 

 

 

 

 

 

Adam Kowalski

Nr albumu  16755

 

 

Projekt witryny internetowej dla przykładowej firmy

 

 

 

                                               Praca inżynierska

napisana pod kierunkiem naukowym

                                                                                    dr hab. inż. Kazimierza Worwy

 

 

 

 

 

 

Warszawa 2008


SPIS TREŚCI

 

Wstęp              3

Cel pracy              3

Charakterystyka zawartości rozdziałów              4

1.              Wybrane rozwiązania              5

1.1. Apache              6

1.2. PHP              7

Sposób działania PHP              8

1.3. MySQL              11

2.              Bezpieczeństwo              13

2.1 Bezpieczeństwo serwera Apache.              13

2.2. Bezpieczeństwo danych magazynowanych.              14

2.3. Bezpieczeństwo transmisji.              16

3.1. Opis systemu              21

3.2. Specyfikacja wymagań              21

3.3. Analiza przypadków użycia              22

Scenariusze realizacji funkcji przypadków użycia.              22

3.4. Diagram aktywności systemu              24

3.5. Diagram sekwencji logowanie              25

3.6. Przypadki użycia dla klienta              27

4.              Realizacja projektu              28

4.1. Implementacja bazy danych              28

4.2 Działanie programu z punktu widzenia użytkownika.              32

Podsumowanie              41

Bibliografia              42

Spis rysunków              43

Załączniki              44

Kod źródłowy aplikacji              44


Wstęp

Cel pracy

Celem niniejszej pracy jest przedstawienie rozwiązań umożliwiających zaprezentowanie produktów firmy wytwarzającej oprogramowanie do obsługi przedsiębiorstwa. W obecnych czasach naturalnym rozwiązaniem użytym do prezentacji produktów jest stworzenie witryny internetowej.

Argumenty przemawiające za wykorzystaniem Internetu*, jako medium dla systemu informacyjnego

·         Ciągły dostęp do informacji;

·         Nieograniczony zasięg terytorialny;

·         Możliwość szybkiego zamieszczania nowych informacji;

·         Minimalne koszty utrzymania i aktualizowania zawartości;

·         Brak ograniczeń ilości zamieszczanych informacji;

·         Możliwość szybkiego i sprawnego wyszukiwania informacji;

Projekt zostanie opracowany w oparciu o architekturę trójwarstwową (ang. three-layer architecture), czyli architekturę typu klient-serwer, w której interfejs użytkownika, przetwarzanie danych i składowanie danych są rozwijane w postaci osobnych modułów. Architektura tego typu pozwala aktualizować lub zastępować poszczególne moduły niezależnie od siebie, w miarę jak zmieniają się warunki techniczne – na przykład zmiana systemu operacyjnego na komputerze użytkownika, wpływa jedynie na warstwę interfejsu użytkownika, ale nie wpływa na składowanie i przetwarzanie i danych.

W ciągu okresu istnienia Internetu powstało wiele technologii umożliwiających tworzenie i prezentowanie treści na stronach WWW. Istnieje wiele rozwiązań komercyjnych (płatnych) jak również sporo rozwiązań bezpłatnych, tworzonych przez zapaleńców z całego świata. Istnieją również rozwiązania umożliwiające bezpłatne korzystanie z oprogramowania, jeśli jest wykorzystywanie w celach niekomercyjnych, a płatne (najczęściej cena jest, w porównaniu do programów sensu stricte komercyjnych, bardzo atrakcyjna dla użytkowników), jeśli istnieje chęć komercyjnego wykorzystania rozwiązań.

Ważną rzeczą jest możliwość wglądu w pełny kod oprogramowania (open source). Co prawda naraża to na potencjalne wykorzystanie zdobytej o nim wiedzy w niecnych celach, ale także umożliwia szukanie rozwiązań zwiększających bezpieczeństwo programów przez entuzjastów z całego świata.

Komercyjne rozwiązania najczęściej mają kod zamknięty i niepubliczny. Najczęściej skutkuje to sytuacją, że hakerzy i tak włamią się do programu i poznają jego słabe punkty pozwalające wykorzystać program w celach przestępczych, niezgodnie z intencjami jego twórców. Prace nad poprawianiem programu może prowadzić tylko ten, kto go stworzył i posiada jego kod źródłowy, czyli producent. W sposób oczywisty brak tutaj wsparcia szerszej grupy ludzi.

Per saldo wybór oprogramowania open source jest rozwiązaniem bardziej perspektywicznym.

Charakterystyka zawartości rozdziałów

W kolejnych rozdziałach zostały opisane następujące zagadnienia:

W rozdziale pierwszym zaprezentowano wybrane rozwiązania programowe oraz przedstawiono ich krótkie charakterystyki. W drugim rozdziale omówiono zagadnienia bezpieczeństwa: wybranego serwera (Apache) i przechowywanych oraz przesyłanych Internetem danych. W rozdziale trzecim przedstawiono opis projektu oraz wyspecyfikowano i przeanalizowano wymagania odnośnie systemu. Rozdział czwarty prezentuje sposób realizacji projektu. Ukazano sposób projektowania i implementacji bazy zawierającej dane prezentowane później w witrynie WWW, W piątym rozdziale podsumowano pracę.

 

1.  
Wybrane rozwiązania

 

Wybrane przeze mnie rozwiązania bazują na otwartym kodzie źródłowym (open source) oraz mogą działać na wielu platformach systemowych.

Są to:

·         Apache – serwer stron WWW

·         PHP – język programowania używany do projektowania witryn internetowych

·         MySQL – relacyjna baza danych

Za wykorzystaniem oprogramowania typu open source przemawiają następujące jego cechy:

·         Jest darmowe. Istotą oprogramowania ze swobodnym dostępem do kodu źródłowego jest jego bezpłatność i ogólna dostępność. Projektanci i programiści na zasadzie wolontariatu poświęcają swój czas, by poprawiać istniejące programy i tworzyć nowe;

·         Z definicji twórcy oprogramowania tego typu nie mogą wymagać opłat za licencję lub sprzedaż;

·         Są niezależne od platformy i „neutralne technologicznie". Dzięki temu wymogowi społeczność wolnego oprogramowania ma pewność, iż programy mogą być stosowane przez każdego, kto chce z nich korzystać;

·         Zgodnie z definicją oprogramowania open source dostępną na witrynie[1] organizacji programy tego typu nie mogą zależeć od żadnej „indywidualnej technologii lub stylu interfejsu" i muszą być „neutralne technologicznie". Oprogramowanie spełnia wyż wym. kryterium, jeśli może działać na więcej niż jednym systemie operacyjnym;

·         Nie mogą ograniczać innego oprogramowania. Oznacza to, że jeśli program typu open source jest rozpowszechniany z innymi programami to te inne programy mogą być produktami komercyjnymi lub typu open source. Zapewnia to twórcom oprogramowania maksymalną kontrolę i elastyczność;

·         Stymulują różnorodność rozwiązań co daje lepsze wyniki dla ogółu społeczności internetowej, ponieważ zmusza firmy-giganty typu Microsoft czy Sun Microsystems do rozwijania i ulepszania własnych komercyjnych rozwiązań;

·         Programy open source - zgodnie z założeniami tego ruchu - nie mogą dyskryminować dowolnej osoby lub grupy osób, ani nie mogą zakazywać innych „dziedzin eksploatacji". Przykładowo program zaprojektowany do użytku w jednej dziedzinie nie może zostać ograniczony tylko do tego pola zastosowań, jeśli ktoś z innej dziedziny stwierdzi, że po pewnych modyfikacjach będzie on spełniał jego oczekiwania.

Pełna lista kryteriów, które muszą zostać spełnione, aby program został potraktowany, jako open source jak również dodatkowe informacje na temat społeczności związanej z programami tego typu znajduje się w witrynie OSI[2].

1.1. Apache             

Apache jest otwartym serwerem HTTP* dostępnym dla wielu systemów operacyjnych (m.in. UNIX*, GNU/Linux*, BSD*, Microsoft Windows).  Pochodzi on od serwera NCSA - National Center for Supercomputing Applications, opracowanego w 1995 roku na zlecenie rządu Stanów Zjednoczonych.

Serwer Apache cechuje się następującymi właściwościami:

·         kontrolę dostępu i możliwość uwierzytelniania użytkowników;

·         możliwość stosowania stron chronionych hasłem dla wielu użytkowników;

·         możliwość dostosowania do potrzeb stron błędów;możliwość zastosowania proxy* typu HTTP, FTP;

·         dzienniki użycia i błędów w wielu dostosowywanych do własnych potrzeb formatach;

·         możliwość skonfigurowania hostingu wirtualnego dla wielu różnych adresów IP przypisanych do tego samego serwera;

·         dyrektywy Directory Index dla wielu plików;

·         możność zastosowania skryptów CGI*; możliwość osadzania interpreterów języków skryptowych, (np. PHP, PERL*, PYTON*);

·         możliwość zaimplementowania protokołu SSL*.

Firma Netcraft Web w czerwcu 2008 przeprowadziła badanie[3] Internetu. Otrzymano odpowiedź z 172 338 726 serwerów Apache pozostaje liderem z udziałem w rynku na poziomie 49.1% co daje liczbę serwerów zbliżającą się do 85 mln (na koniec 2005 roku były to 34 mln). Jego elastyczność, użyteczność i cena powodują, że jest wybierany niezwykle często. Może służyć zarówno, jako rozwiązanie dla dużego serwera WWW, intranetu firmy lub po prostu do testowania własnych stron przed ich umieszczeniem na właściwym serwerze.

1.2. PHP

PHP jest pełnowartościowym językiem programowania pozwalającym na tworzenie aplikacji WWW z wszystkimi potrzebnymi funkcjami. PHP współpracuje z wieloma systemami baz danych. Pozwala to na bardzo łatwe tworzenie aplikacji WWW korzystających z informacji zapisanych w bazie danych. Możliwy jest również dostęp do następujących usług sieciowych::

·         IMAP *- Internet Message Access Protocol,

·         POP3 * - Post Office Protocol version 3,

·         NNTP * - Network News Transfer Protocol,

·         TTP *- Time-Triggered Protocol.

Pozwala on również na otwieranie gniazd sieciowych i podłączanie się do innych protokołów TCP/IP.

PHP może być użyty w wielu konfiguracjach serwerów. PHP rozprowadzany jest głównie w postaci kodu źródłowego, może być skompilowany na wielu różnych platformach, na przykład w systemach Linux, FreeBSD, a także w systemie Windows. Dla systemów platformy Win32 są dostępne również dystrybucje binarne.

PHP może działać, jako program CGI lub może być zainstalowany, jako moduł Apache lub rozszerzenie ISAPI. Dzięki temu może on działać z praktycznie każdym serwerem WWW, od Apache posadowionego na systemie Linux do IIS (IIS- Internet Information Services) na systemie Windows. Jeśli chcemy utworzyć elastyczne środowisko pracy możemy samodzielnie skompilować i zainstalować PHP. Jeśli zależy nam na szybkim zaczęciu pracy, możemy użyć binarnej dystrybucji PHP.

Do głównych konkurentów PHP należą: Perl, Microsoft Active Server Pages (ASP), Java Server Pages (JSP).

W porównaniu z tymi produktami PHP posiada wiele zalet. Są to między innymi:

·         wysoka wydajność;

·         wygodna składnia oparta na języku C;

·         interfejsy do wielu różnych systemów baz danych;

·         wbudowane biblioteki służące do rozwiązywania różnych popularnych zadań WWW;

·         funkcje obsługi popularnych protokołów Internetu;

·         duży zasób funkcji i procedur z wielu niestandardowych zakresów zastosowań, rzadko dostępnych w językach  skryptowych, takich jak: kryptografia, kompresja plików (gzip), manipulowanie plikami graficznymi oraz plikami w formacie PDF,  obsługa połączeń TCP/IP;

·...

Zgłoś jeśli naruszono regulamin