Web frameworks do budowy aplikacji zgodnych z J2EE
Transkrypt
Web frameworks do budowy aplikacji zgodnych z J2EE
Web frameworks do budowy aplikacji zgodnych z J2EE Jacek Panachida promotor: dr Dariusz Król Przypomnienie ● ● ● Celem pracy jest porównanie wybranych szkieletów programistycznych o otwartym kodzie źródłowym Do analizy zostały wybrane Spring MVC oraz JavaServer Faces Analiza obejmuje teoretyczne aspekty ich funkcjonowania oraz badania empiryczne przeprowadzone w formie eksperymentów Stan zaawansowania – rozdziały (1) 1.Wprowadzenie 2.Wstęp 1. Ewolucja szkieletów programistycznych 1. Historia i rozwój 2. Wzorce projektowe 3. Rozwiązania alternatywne 2. Architektura 1. Model 1 – strona JSP 2. Model 2 – centralny kontroler 3. Model komponentowy 3. Zadania szkieletów programistycznych Stan zaawansowania – rozdziały (2) 2. Nowoczesne środowisko pracy programisty 1. Tworzenie aplikacji 1. Subversion 2. Maven 3. Eclipse 4. Hibernate 5. Spring Framework 2. Przeprowadzanie testów 1. Spring Mock 2. EasyMock 3. JUnit 4 4. Selenium Stan zaawansowania – rozdziały (3) 3. Przegląd internetowych szkieletów programistycznych 1. Struts 2 1. Architektura 2. Znaczniki 3. Interceptory 4. Implementacja wzorca MVC 2. Spring MVC 1. Obiekt nadzorujący 2. Znaczniki 3. Zasada konwencji Stan zaawansowania – rozdziały (4) 3. Tapestry 5 1. Zasady 2. Moduły 4. JavaServer Faces 1. Specyfikacja 2. Architektura 3. Części składowe 4. Implementacja wzorca MVC 4. Porównanie Spring MVC z JavaServer Faces Stan zaawansowania – rozdziały (5) 1. Architektura 1. Spring MVC 2. JavaServer Faces 3. Podsumowanie 2. Model programistyczny 1. Spring MVC 2. JavaServer Faces 3. Podsumowanie 3. Cykl życia żądania 1. Spring MVC 2. JavaServer Faces 3. Podsumowanie Stan zaawansowania – rozdziały (6) 4. Walidacja i konwersja typów 1. Spring MVC 2. JavaServer Faces 3. Podsumowanie 2. Internacjonalizacja 1. Spring MVC 2. JavaServer Faces 3. Podsumowanie 5. Aplikacja Petclinic 1. Opis aplikacji 1. Wykorzystane technologie 2. Encje bazy danych Stan zaawansowania – rozdziały (7) 2. Moduły aplikacji 1. Petclinic-data 2. Petclinic-core 3. Petclinic-web 3. Zaimplementowana funkcjonalność 6. Eksperymenty z wykorzystaniem aplikacji Petclinic 1. Przebieg badania 1. Fazy implementacji aplikacji 2. Petclinic Badanie wydajności 3. Pomiar metryk kodu 4. Badanie łatwości wprowadzania zmian Stan zaawansowania – rozdziały (8) 5. Badanie dostępności komponentów Triniad 2. Analiza wyników 1. Wydajność 2. Metryki kodu 3. Dostępność komponentów Trinidad 4. Łatwość wprowadzania zmian 7. Podsumowanie Bibliografia 100% Eksperymenty ● ● Eksperymenty zostały przeprowadzone na dwóch zaimplementowanych aplikacjach – opartej o Spring MVC – opartej o JavaServer Faces Pomiary metryk kodu dotyczyły trzech faz implementacji aplikacji – aplikacji umożliwiającej przeglądanie danych – aplikacji umożliwiającej zarządzanie danymi – aplikacji po lokalizacji Przeprowadzane eksperymenty ● Badania wydajności ● Pomiar metryk kodu ● ● Pomiar łatwości wprowadzania zmian (ang. changeability) Badanie dostępności (ang. accessibility) komponentów Trinidad Badania wydajnościowe (1) ● ● Do badania wydajności posłużyło narzędzie JMeter Eksperymenty badające wydajność aplikacji symulowały pracę trzech grup osób: – przeglądających dane – modyfikujących stan aplikacji – grupy mieszanej w proporcjach 4/1 przeglądających i modyfikujących dane Badania wydajnościowe (2) ● Dla każdych z badanych grup zostały zmierzone następujące wartości: – maksymalna liczba użytkowników mogących korzystać z systemu, przy zapewnieniu jego stabilnej pracy – maksymalna liczba użytkowników mogących naraz korzystać z aplikacji przy zapewnieniu stabilnej pracy systemu (próg czasu reakcji – 3 sekundy) Metryki kodu (1) ● Metryki proste – liczba dzieci (całkowita liczba bezpośrednich podklas interfejsów danej klasy) – głębokość drzewa dziedziczenia – liczba pól, metod, przeciążonych metod – liczba klas i interfejsów – liczba linii kodu Metryki kodu (2) ● Metryki złożone – indeks specjalizacji – skojarzenia dośrodkowe – skojarzenia odśrodkowe – abstrakcyjność – niestabilność – znormalizowana odległość kategorii od ideału Łatwość wprowadzania zmian ● ● ● Metryka zdefiniowana w normie ISO 9126 Pomiaru dokonano na każdym z trzech etapów budowy aplikacji W pomiarze uwzględniono: – liczba nowo dodanych plików – uzupełnienia (liczba plików zmodyfikowanych bez zmiany dotychczasowej zawartości) – modyfikacje (liczba plików zmodyfikowanych których zmiana miała wpływ na dotychczasową treść) Łatwość wprowadzania zmian (2) ● Pomiaru dokonano podczas czynności związanych z: – dodawaniem listy stronicowanej – dodawaniem formularza – lokalizacją aplikacji Dostępność (1) ● Dostępność komponentów Trinidad zmierzono poprzez: – sprawdzenie poprawności składniowej kodu HTML komponentów – weryfikacji poprawności pracy w popularnych przeglądarkach internetowych Wyniki badania wydajności Liczba żądań w zależności od badanej grupy użytkowników Średni czas odpowiedzi aplikacji w zależności od badanej grupy użytkowników Wyniki pomiaru metryk kodu Metryki kodu modułów aplikacji Metryki kodu pakietów według pełnionych funkcji Metryki złożone aplikacji opartej o Spring MVC oraz JavaServer Faces Zmiana wartości metryk podczas kolejnych etapów implementacji aplikacji Wyniki pomiaru metryk kodu szablonów Liczba znaczników wg rodzaju widoków Wielkość wygenerowanej strony HTML Wyniki badań dostępności komponentów Trinidad Poprawność działania komponentów Triniadad Poprawność działania komponentów wg przeglądarek Udział błędów określonego typu w komponentach Trinidad Wyniki łatwości wprowadzania zmian Łatwość wprowadzania zmian a liczba zmienionych plików Wyniki analizy teoretycznej (1) ● ● Model aplikacji. JSF jest szkieletem zorientowanym na strony (ang. page-oriented), Spring MVC na obsługę żądań przez kontrolery. Model programistyczny. Spring MVC zaczyna od mapowania żądań użytkownika a JavaServer Faces od definicji używanych w aplikacji komponentów z uwzględnieniem ich integracji z użytkownikiem. Wyniki analizy teoretycznej (2) ● ● Cykl życia żądania. W Spring MVC stosowane jest pojęcie żądania, Aplikacje oparte o JavaServer Faces używają pojęcia zdarzenia odbieranego przez komponenty umieszczone na stronie internetowej Walidacja. Obie biblioteki są podobne pod tym względem. JavaServer Faces poprzez bibliotekę Trinidad posiada dodatkowo znaczniki walidacyjne umieszczane bezpośrednio na stronie JSP Wyniki analizy teoretycznej (3) ● Lokalizacja. Spring MVC posiada lepsze wsparcie w tym zakresie. Oferuje wbudowane przełączanie się między wersjami językowymi. JavaServer Faces poprzez bibliotekę Trinidad posiada gotowe komunikaty o błędach walidacyjnych w języku polskim. Wnioski z eksperymentów (1) ● ● ● Oba szkielety programistyczne spełniły swoją rolę w stopniu umożliwiającym w pełni poprawną implementację wcześniejszych założeń. Spring MVC – tradycyjne podejście. JSF – tworzenie aplikacji podobne do aplikacji tworzonych w technologii ASP.NET Aplikacje Spring MVC domyślnie są bezstanowe. Aplikacje JSF zarządzają wewnętrznym stanem aplikacji poprzez ciasteczka. Wnioski z eksperymentów (2) ● ● Projekt oparty o Spring MVC posiada większą liczbę linii kodu oraz artefaktów programistycznych. Klasy projektu opartego o JavaServer Faces posiadały większą liczbę pól i metod. Pomiar metryk złożonych wykazał większą zgodność z zasadami dotyczącymi obiektywności projektu wykorzystującego Spring MVC Wnioski z eksperymentów (3) ● ● ● Strony generowane przez szkielet JavaServer Faces są średnio nawet czterokrotnie większe niż analogiczne strony aplikacji Spring MVC. Badanie łatwości wprowadzania zmian wykazało, iż JavaServer Faces lepiej sprawuje się w przypadku tworzenia formularzy a gorzej w aspekcie kompleksowej lokalizacji aplikacji. Badanie dostępności komponentów Trinidad pozwoliło stwierdzić wysoką kompatybilność elementów interfejsu użytkownika. Dalszy kierunek prac ● ● Proponowany jest dalszy rozwój aplikacji w celu zwiększenia jej złożoności dążąc do implementacji rzeczywistych wymogów biznesowych stawianych przed tego typu systemami. Raportowanie, uwierzytelnienie W porównaniu możliwe jest uwzględnienie aspektów związanych z samymi szkieletami. Badanie popularności, jakości dokumentacji, liczby dostępnych narzędzi. Dziękuję za uwagę