====== Zadanie 6 Zastosowanie w projektowaniu ====== Celem zajęć jest sporządzenie częściowego projektu serwisu internetowego. Modelując, należy przyjąć założenie, że projektujecie Państwo serwis wzorowany na istniejącym serwisie, ale korzystając ze znanej z innych zajęć technologii (np.: PHP + MySQL). O ile analiza wymagań specyfikuje, co system ma robić, jakie dane i jakie obiekty przetwarzać, projekt wskazuje jak to ma być zrealizowane, z jakiej technologii i z jakich bibliotek należy skorzystać. Architekturę aplikacji internetowych opisuje się często, jako trójwarstwową: *Model (warstwa składowania danych) obejmuje bazie danych (lub inną formę zarządzania danymi) *Widok (warstwa prezentacji) obejmuje obiekty realizujące interfejs graficzny (okna dialogowe, strony HTML, itd.) *Kontroler (warstwa przetwarzania) reaguje na polecenia płynące z obiektów warstwy widoku, przetwarza je i wysyła zlecenia do warstwy modelu. {{ :amo:architektura.png?700 |Diagram architektury}} Sporządzając projekt będziemy więc definiować obiekty typowe dla każdej warstwy: ===== Składowe projektu ===== ==== Model ==== Baza danych może być potraktowana jako klasa , której atrybutami są tabele, natomiast metodami zapytania (kwerendy). Zazwyczaj dostęp do bazy danych lub jej tabeli jest "opakowany" przez komponent oprogramowania zapewniający typow funkcje: dodawanie, usuwanie, modyfikację i wyszukiwanie elementów. ==== Widok ==== Elementami widoku klasy stron HTML. *Atrybutami stron są wyświetlane na nich dane (obiekty) oraz pola edycyjne, listy, pola ukryte. *Użytkownik dokonując interakcji za pośrednictwem przeglądarki woła metody obiektu. W większości przypadków metody te przekazują sterowanie do skryptów, ale też mogą być metody implementowane wewnętrznie, np.: przez JavaScript. *Kreacja obiektu następuje najczęściej w wyniku wywołania skryptu, ale mogą też istnieć strony statyczne (np.: strona logowania serwisu) odpowiadające obiektom globalnym *Destrukcja obiektu jest dokonywana niejawnie przez przeglądarkę Definicja klasy, czyli przepis jak utworzyć konkretną stronę zapisana jest w odpowiednim skrypcie odpowiedzialnym za jej generację. Aplikacje internetowe często mają złożone widoki, np.: zawierają ramki złożone ze stron podrzędnych (kompozycja). ==== Kontroler ==== Elementami tej warstwy są skrypty. *Mogą mieć jedną domyślną metodę wywoływaną przez zlecenie get lub post. Rozróżnienie metod może nastąpić na podstawie parametru typu action. Wówczas nazwy metod powinny odpowiadać wartościom tego parametru. *Metody skryptu mogą mieć parametry. Powinny odpowiadać polom stron, z których są wołane. *Skrypty mogą korzystać z funkcji innych modułów *Skrypty mogą być traktowane jako obiekty globalne, o czasie życia równym czasowi istnienia systemu ===== Do wykonania ===== Należy wybrać istniejący serwis internetowy i zamodelować jego fragment: -Analiza dziedziny: zidentyfikować klasy przetwarzanych obiektów i relacje pomiędzy nimi (w ograniczonym zakresie, niezbędnym do zrozumienia następnych diagramów) -Projekt: zidentyfikować klasy wchodzące w skład warstw aplikacji (strony HTML, skrypty, baza danych) w zakresie niezbędnym do realizacji punktu 3 -Projekt: sporządzić jeden diagram sekwencji przedstawiający wybraną funkcje serwisu (ale nie logowania). -W sprawozdaniu proszę dodać zrzuty ekranu dla stron HTML (wraz z identyfikatorem obiektu). Należy to potraktować jako projekt interfejsu. W miarę możliwości proszę starać się wygenerować alternatywne scenariusze pojawiające się w przypadku błędnych danych wprowadzonych przez użytkownika. Wybierając funkcję serwisu do zamodelowania należy w miarę możliwości wybrać taką, która jest wykonywana w kilku etapach. ===== Przykładowe zadania ===== -Licytacja towaru na Allegro -Wystawianie komentarza na Allegro -Zakup w sklepie internetowym (dodanie do koszyka) -Zakup w sklepie internetowym (złożenie zamówienia) -Wystawienie komentarza do artykułu w serwisie typu onet.pl -Publikacja materiałów na forum internetowym -Wyszukiwanie ogłoszeń w serwisie typu gratka.pl -Wysyłanie SMS za pośrednictwem bramki ===== Przykład 1 Logowanie ===== ==== Klasy biorące udział w realizacji przypadku użycia ==== {{ :amo:proj-klasy-1.png?700 |}} ==== Diagram sekwencji ==== {{ :amo:proj-sekw-1.png?700 |}} ===== Przykład 2 Wyszukiwanie osób ===== ==== Klasy biorące udział w realizacji przypadku użycia ==== {{ :amo:proj-klasy-2.png?700 |}} ==== Diagram sekwencji ==== {{ :amo:proj-sekw-2.png?700 |}} ==== Interfejs użytkownika (projekt) ==== == Strona wyszukiwania == {{ :amo:proj-2-strona-wyszukowania.gif?500 |Strona wyszukiwania}} == Wyniki wyszukiwania == {{ :amo:proj-2-wyniki-wyszukiwania.gif?500 |Wyniki wyszukiwania}} == Szczegóły == {{ :amo:proj-2-szczegoly.gif?500 |Szczegóły}}