Uwaga! Ten przedmiot zawsze był realizowany na 7 semestrze studiów dziennych i wieczorowych. Ze względu na mój urlop doktorancki dokonano czasowego przesunięcia tego przedmiotu na 8 semestr (letni). Proszę o sprawdzenie i poprawienie kodu przedmiotu, bo nie jestem pewny, czy jest prawidłowy. Przemysław Sołtan e-mail:[email protected] Systemy Rozproszone Distributed Systems ??? ECTS dzienne inżynierskie, wieczorowe inżynierskie Kod przedmiotu Imię i Nazwisko organizującego BI2NI7000PSOSyRo mgr inż. Przemysław Sołtan CI2NI7000PSOSyRo LICZBA GODZIN Kursy poprzedzające Słowa kluczowe w c Kurs egzaminacyjny nie egzaminacyjny – wykład i ćwiczenia Zaliczenie 1 1 15 tygodni zajęć bez odrębnej sesji egzaminacyjnej, na podstawie ocen bieżących bazy danych, systemy zarządzania bazami danych, programowanie obiektowe, programowanie JAVA, metajęzyki, witryny i portale internetowe, JAVA, J2EE, EJB, JMS, JNDI, LDAP, Web Services PROGRAM SZCZEGÓŁOWY CELE KURSU. Opis kursu – cele i procedury ich osiągania: Na bazie wiedzy i umiejętności z kursu Witryn i Portali Internetowych uzyskanie pogłębionej sprawności projektowej w zakresie umiejętności tworzenia aplikacji biznesowych bazujących na platformie Java EE. Cel poznawczy: Ugruntowanie wiedzy o budowie komponentów biznesowych EJB, komunikacji rozproszonej JMS oraz usługach sieciowych Web Services bazujących na języku XML. Poznanie różnorodnych technik projektowania i realizacji mechanizmów obsługi rozproszonych usług nazewniczych JNDI i serwerów katalogowych LDAP. Cel kształcący: Kształtowanie sprawności w wymienionych umiejętnościach w stopniu pozwalającym domniemać zrozumienie i potencjalną możliwość świadomego i skutecznego posługiwania się serwerami aplikacyjnymi jako elementów systemów rozproszonych. Cel praktyczny: Kształtowanie przekonania o zawodowej przydatności kształconych umiejętności Umiejętności wynikowe kursu i ich ewaluacja: Instalacja serwera biznesowego Java EE (Sun Microsystems). Instalacja i dystrybucja rozproszonych komponentów EJB typu sesyjnego. Utrwalanie danych przy użyciu komponentów jednostkowych Entity Bean. Umiejętność deklaratywnego określania poziomu transakcyjności komponentów EJB. Realizacja wzorców projektowych: fasady, delegata biznesowego oraz lokalizatora usług. Tworzenie aplikacji EAR oraz zdalnego kodu klienta w języku JAVA. Projektowanie kodu wykorzystującego mechanizmy asynchronicznej komunikacji kolejek JMS oraz protokołu SOAP zorientowanego na usługi Web Services. Komunikacja z systemami katalogowymi LDAP przy użyciu biblioteki JNDI i serwera OpenLDAP. Wymagania podstawowe (stopnie dostateczne) Wymagania rozszerzone (stopnie dobre) Zaprojektuje poprawnie komponenty EJB typu sesyjnego oraz jednostkowego (entity) Potrafi skomunikować komponenty sesyjne i entity z wykorzystaniem wzorca fasady. Potrafi archiwizować i instalować własną aplikację. Potrafi przygotować dokumentację do zaprojektowanego kodu oraz omówić stosowane przez siebie mechanizmy programistyczne. Potrafi ocenić zaawansowanie własnego projektu i wskazać kierunki jego ewentualnego rozwoju. Zastosuje dodatkowe komponenty rozszerzające funkcjonalność aplikacji (np. LDAP, Web Services, JMS) Potrafi przygotować dokumentację do zaprojektowanego kodu w rozszerzone wersji z uwzględnieniem diagramów (UML) oraz omówić stosowane przez siebie mechanizmy programistyczne. Potrafi ocenić zaawansowanie własnego projektu i wskazać kierunki jego ewentualnego rozwoju w zakresie tematyki wzorców projektowych oraz transakcji Wykład 1. 2 godz. ARCHITEKTURA WIELOWARSTWOWA Zagadnienia: Architektura monolityczna, klient-serwer oraz wielowarstwowa. Podział na warstwy widoku i danych. Architektura systemów opartych o technologię rozproszonych komponentów EJB. Serwery aplikacyjne jako kontenery do rozproszonej komunikacji obiektów. Wykład 2. 2 godz. KOMPONENTY ROZPROSZONE – SESSION BEAN Zagadnienia: Komponenty sesyjne Stateful i Stateless. Interfejs zdalny i lokalny. Komunikacja klienta z komponentem rozproszonym. Budowa infrastruktury komunikacyjnej RMI-IIOP. Wykład 3. 2 godz. UTRWALANIE DANYCH – ENTITY BEAN Zagadnienia: Komponety jednostkowe Entity Bean. Interfejs lokalny. Automatyczna generacja kodu SQL. Metody wyszukiwania oraz język zapytań EJB-QL. Wykład 4. 2 godz. WZORZEC FASADY ORAZ BUDOWA APLIKACJI EAR Zagadnienia: Sterownik Wady rozproszonego dostępu do komponentów jednostkowych. Zalety stosowania wzorca fasady. Budowa i tworzenie archiwów EAR. Wykład 5. 2 godz. ROZPROSZONA KOMUNIKACJA ASYNCHRONICZNA JMS Zagadnienia: Komunikacja asynchroniczna JMS. Kolejki komunikatów Queie i Topic. Wysyłanie i odbieranie komunikatów. Komponenty MessageDrivenBean - MDB. Wykład 6. 2 godz. SYSTEMY NAZEWNICZE I KATALOGOWE - JNDI, LDAP Zagadnienia: Wyszukiwanie i edycja systemami katalogowymi i nazewniczymi za pośrednictwem specyfikacji JNDI. Struktury drzewiaste i ich utrwalanie w serwerach katalogowych LDAP. Współpraca programów pocztowych i aplikacji webowych z serwerem OpenLDAP. Wykład 7. 2 godz. ARCHITEKTURA KOMPOZYTOWA – SOA (WEB SERVICES) Zagadnienia: Porównanie systemów zorientowanych na obiekty z systemami zorientowanymi na usługi. XML jako nośnik danych w komunikacji z systemami tworzonymi w odmiennych technologiach (J2EE, .NET). Specyfikacje SOAP, WSDL, UDDI. Wykład 8. 1 godz. CZYNNOŚCI KONTROLNE I ORGANIZACYJNE ZWIĄZANE Z ZALICZENIEM KURSU NIEEGZAMINACYJNEGO PLANY WYNIKOWE PROJEKTÓW Projekt 1. 2godz. SERWER J2EE RI Opis ćwiczenia – cele i procedury ich osiągania: Serwer J2EE RI. Narzędzie do rozmieszczania aplikacji EAR – DeployTool. Architektura wzorcowego projektu aplikacji. Umiejętności wynikowe i ich ewaluacja Instalacja wzorcowej aplikacji na serwerze J2EE RI. Wymagania podstawowe (stopnie dostateczne) Wymagania rozszerzone (stopnie dobre) Wykonywanie uruchomienia i konfiguracji Konfiguracja kodu klienta testującego serwera aplikacyjnego oraz baz danych. instalowaną aplikację EAR. Wskazanie plików składowych komponentu EJB oraz sposobu ich łączenia za pośrednictwem programu DeployTool Projekt 2. 2godz. REFAKTORYZACJA KODU JĘZYKA JAVA Opis ćwiczenia – cele i procedury ich osiągania: Na bazie środowiska ECLIPSE zademonstrować i przećwiczyć tworzenie klas i interfejsów komponentu JAVA BEAN oraz jego transformację na komponent Enterprise JAVA BEAN - EJB. Umiejętności wynikowe i ich ewaluacja: Umiejętność obsługi środowiska ECLIPSE – tworzenie projektów, klas, interfejsów oraz refaktoryzacji kodu. Wymagania podstawowe (stopnie dostateczne) Zaprojektowanie Wymagania rozszerzone (stopnie dobre) klasy JAVA zawierającej pola prywatne oraz Instalacja zaprojektowanego kodu na serwerze J2EE RI metody akcesji set i get Ekstrakcja kodu klasy do interfejsów. Modyfikacja kodu do zgodnego z EJB Projekt 3. 2godz. WZORZEC FASADY I LOKALIZATORA USŁUG Opis ćwiczenia – cele i procedury ich osiągania: Tworzenie komponentu sesyjnego Session EJB będącego zewnętrzną fasadą dla komponentów jednostkowych EJB. Hermetyzacja obsługi JNDI za pomocą wzorca Lokalizatora Usług. Umiejętności wynikowe i ich ewaluacja: Umiejętność skomunikowania dwóch komponentów instalowanych na serwerze aplikacji. Rozszerzenie Wymagania rozszerzone (stopnie dobre) Narysowanie komponentu FacadeBean o własne metody diagramu UML wzorcowego projektu z testowe. uwzględnieniem własnych modyfikacji. Rozszerzenie kodu klienta o testowanie nowych metod fasady. Wymagania podstawowe (stopnie dostateczne) Projekt 4. 2godz. WZORZEC DELEGATA BIZNESOWEGO Opis ćwiczenia – cele i procedury ich osiągania: Tworzenie delegata biznesowego – wzorca kodu klienta niezależnego od mechanizmów RMI, JNDI oraz EJB. Umiejętność hermetyzacji kodu i podziału na moduły ułatwiające jego projektowanie i zarządzanie. Wymagania podstawowe (stopnie dostateczne) Rozszerzenie Wymagania rozszerzone (stopnie dobre) Narysowanie klasy DelegateBean o własne metody diagramu UML wzorcowego projektu z testowe. uwzględnieniem własnych modyfikacji. Rozszerzenie kodu klienta o testowanie nowych metod delegata. Umiejętności wynikowe i ich ewaluacja: Projekt 5. 2godz. Opis ćwiczenia – cele i procedury ich osiągania: PROJEKT – FAZA 1 Rozszerzenie projektu o komponent MDB oraz kolejki komunikatów JMS Umiejętność projektowania kodu klienta wysyłającego asynchroniczne komunikaty JMS oraz kodu odbiorczego komponentów MDB Wymagania podstawowe (stopnie dostateczne) Rozszerzenie Wymagania rozszerzone (stopnie dobre) Przetestować projekt o klasy komponentów MDB. rozproszoną dystrybucję komunikatów na Opracować kod klienta o testowego wzorcowy serwer JMS (np. jednego ze wysyłania komunikatów. studentów). Umiejętności wynikowe i ich ewaluacja:. Projekt 6. 2godz. PROJEKT – FAZA 2 Opis ćwiczenia – cele i procedury ich osiągania: Rozszerzenie projektu o obsługę usługi sieciowej Web Services Umiejętność integracji dwóch systemów rozproszonych (klienta i serwera aplikacyjnego) przy pomocy Web Services (XML, SOAP, WSDL) Wymagania podstawowe (stopnie dostateczne) Zaprojektować Wymagania rozszerzone (stopnie dobre) aplikację klienta (przy użyciu pakietu AXIS i Rozszerzenie projektu o przekazywanie list WSDL) umożliwiającą zdalne wywoływanie za pośrednictwem protokołu SOAP procedur (RPC) delegata biznesowego protokół SOAP (Web Services) Projekt 7. 2godz. PROJEKT – FAZA 3 Opis ćwiczenia – cele i procedury ich osiągania:. Dokumentacja projektu, JAVA DOC, diagramy UML. Umiejętności wynikowe i ich ewaluacja: Umiejętności wynikowe i ich ewaluacja: Umiejętność stworzenia dokumentacji projektowej z zastosowaniem narzędzi UML i JavaDOC. podstawowe (stopnie dostateczne) Opracować Wymagania rozszerzone (stopnie dobre) Opracować diagramy klas wzorcowego projektu z dodatkowe typy diagramów UML uwzględnieniem własnych modyfikacji. wzorcowego projektu z uwzględnieniem Przygotowanie dokumentacji JavaDOC. własnych modyfikacji. Projekt 8. 1godz. CZYNNOŚCI KONTROLNE I ORGANIZACYJNE ZWIĄZANE Z ZALICZENIEM Wymagania KURSU NIEEGZAMINACYJNEGO OPIS RYGORÓW POŚREDNICH Kolokwium Opis kolokwium : Student otrzymuje 3 zagadnienia do opisania w czasie 30min. W zakres pytań nie wchodzą zagadnienia programistyczne, a wyłącznie mechanizmy omawiane na wykładzie. Jako bazę zaliczającą kolokwium przyjmuje się około 60% poprawnych odpowiedzi. Każde z pytań jest oceniane w skali 0-5 punktów i za całość można uzyskać maksymalnie 15 punktów. W przypadku braku zaliczenia student jest dodatkowo odpytywany ustnie podczas zaliczania części projektowej. Sposób oceniania Wymagania podstawowe (stopnie dostateczne) Wymagania rozszerzone (stopnie dobre) Podstawowa i prawidłowa orientacja w Szczegółowy opis mechanizmów poparty opisie mechanizmów danego zagadnienia dodatkowymi rysunkami i przykładami zastosowań Zaliczenie projektu Opis zaliczenia : W skład zaliczenia projektu wchodzi obecność oraz aktywność w czasie zajęć projektowych w realizacji zadań cząstkowych. Każda z grup (2-osoby) otrzymuje indywidualne zadanie rozwinięcia wzorcowego projektu z którego jest rozliczana na zasadzie sprawdzania przyrostu funkcjonalności poprzez cały etap zajęć projektowych. Proces zaliczenia realizowany jest na specjalnie przygotowanym komputerze. Każda grupa (2-osoby) prezentuje swoje rozwiązanie projektowe wraz z przygotowaną dokumentacją. W przypadku niespełnienia podstawowych wymagań studenci otrzymują dodatkowe zadania cząstkowe do realizacji oraz termin ponownego zaliczenia. Sposób oceniania Wymagania podstawowe (stopnie dostateczne) Wymagania rozszerzone (stopnie dobre) Prawidłowa instalacja oraz orientacja w budowie własnej aplikacji. Przygotowanie dokumentacji projektu wraz z opisem instalacji Zastosowanie wzorców projektowych do realizacji projektu. Brak typowych błędów programistycznych pogarszających bezpieczeństwo i funkcjonalność aplikacji. WYKAZ ŹRÓDEŁ (PODRĘCZNIKÓW I SKRYPTÓW) 1. strona domowa przedmiotu: http://kik.ie.tu.koszalin.pl/systemy 2. wykład: http://kik.ie.tu.koszalin.pl/systemy/wyklad/systemy_rozproszone.pdf 3. dodatkowymi materiałami związanymi z technologią J2EE: http://j2ee.ie.tu.koszalin.pl 4. serwer aplikacyjny J2EE : http://www.java.sun.com/j2ee 5. Ed Roman, Scott W. Ambler, Tyler Jewell - "Enterprise Java Bean" http://helion.pl/ksiazki/enjab2.htm 6. Deepak Alur, John Crupi, Dan Malks - "J2EE. Wzorce projektowe. Wydanie 2"http://helion.pl/ksiazki/j2eew2.htm 7. Steve Graham, Simeon Simeonov, Toufic Boubez, Doug Davis, Glen Daniels, et al. "Java. Usługi WWW. Vademecum profesjonalisty" - http://helion.pl/ksiazki/jtswww.htm 8. William Crawford, Jonathan Kaplan - "J2EE. Stosowanie wzorców projektowych" http://helion.pl/ksiazki/j2eswp.htm 9. Bruce Eckel - "Thinking in Java. Wydanie 3. Edycja polska" http://helion.pl/ksiazki/thija3.htm 10. J2EE Programming (with Passion!) Online Course - http://www.javapassion.com/j2ee