diploman-1 – internetowy system zarządzania pracami dyplomowymi
Transkrypt
diploman-1 – internetowy system zarządzania pracami dyplomowymi
Politechnika Poznańska Wydział Informatyki i Zarządzania Instytut Informatyki Praca dyplomowa inżynierska DIPLOMAN-1 – INTERNETOWY SYSTEM ZARZĄDZANIA PRACAMI DYPLOMOWYMI Krzysztof Kaszkowiak, 71310 Robert Przybylski, 71356 Paweł Walczuk, 71381 Promotor dr hab. inż. Jerzy Nawrocki, prof. PP Poznań, 2008 r. Tutaj przychodzi karta pracy dyplomowej; oryginał wstawiamy do wersji dla archiwum PP, w pozostałych kopiach wstawiamy ksero. ’ Podziękowania Autorzy pragnęliby serdecznie podziękować Panu dr. hab. inż. Jerzemu Nawrockiemu oraz Panu mgr inż. Bartoszowi Michalikowi za zaangażowanie i pomoc udzieloną w trakcie realizacji niniejszej pracy. Autorzy kierują podziękowania również do firmy Talex S.A. za udostępnione pomieszczenia i sprzęt. I Spis treści 1 Wprowadzenie 1 1.1 Opis problemu i koncepcja jego rozwiązania . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Omówienie pracy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 Opis procesów biznesowych 3 2.1 Aktorzy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.2 Obiekty biznesowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.3 Scenariusze operacyjne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.3.1 Wprowadzenia niezbędnych danych do systemu . . . . . . . . . . . . . . . . 7 2.3.2 Wyznaczenie promotorów i przygotowanie propozycji tematów . . . . . . . 7 2.3.3 Zatwierdzenie propozycji tematów . . . . . . . . . . . . . . . . . . . . . . . 7 2.3.4 Prodziekan akceptuje listę tematów . . . . . . . . . . . . . . . . . . . . . . . 8 2.3.5 Tworzenie zespołów i zgłaszanie ich do tematów . . . . . . . . . . . . . . . 8 2.3.6 Wybranie zespołu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3 Wymagania funkcjonalne 9 3.1 Administrator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.2 Kierownik zakładu / katedry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.3 Promotor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.4 Prodziekan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.5 Student . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 4 Wymagania pozafunkcjonalne 15 4.1 Modyfikowalność . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 4.2 Użyteczność . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 4.3 Bezpieczeństwo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 4.4 Wydajność . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 5 Architektura systemu 17 5.1 Fizyczne rozmieszczenie modułów . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 5.2 Wzorzec projektowy MVC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 5.3 Opis wykorzystanych techonologii . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 5.3.1 Apache Tomcat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 5.3.2 Apache Struts 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 5.3.3 Apache Velocity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 5.3.4 Java Servlets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 5.3.5 Hibernate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 5.3.6 System składu tekstu LAT EX . . . . . . . . . . . . . . . . . . . . . . . . . . . III 20 IV Spis treści 6 Opis implementacji 6.1 6.2 6.3 21 Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 6.1.1 Schemat bazy danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 6.1.2 Klasy wykorzystywane do modyfikacji danych . . . . . . . . . . . . . . . . . 21 6.1.3 Klasy wyjątków . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 6.1.4 Klasy pomocnicze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Kontroler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 6.2.1 6.2.2 Interceptory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Filtry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 26 6.2.3 Akcje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Widok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 26 7 Zapewnianie jakości 29 7.1 Przeglądy kodu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 7.2 7.3 Testy jednostkowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Testy systemowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 29 7.4 Testy akceptacyjne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 8 Zarządzanie wersjami 31 9 Weryfikacja osiągnięcia celów biznesowych 33 10 Zebrane doświadczenia 35 A Wkład poszczególnych osób do przedsięwzięcia 37 B Opinia klienta 39 C Słownik pojęć i skrótów 41 D Kod źródłowy systemu (CD) 43 Literatura 45 Rozdział 1 Wprowadzenie 1.1 Opis problemu i koncepcja jego rozwiązania Na Wydziale Informatyki i Zarządzania Politechniki Poznańskiej studia są prowadzone w ramach makrokierunku „Automatyka i zarządzanie” (w skrócie AiZ) oraz dwóch kierunków: „Informatyka” (INF) i „Zarządzanie”. Studia na AiZ i INF są realizowane jako 2-stopniowe. Pierwszy stopień trwa 7 semestrów i kończy się pracą dyplomową inżynierską. Studia II stopnia trwają 3 semestry i kończą się pracą dyplomową magisterską. Wydawanie i przydzielanie tematów prac dyplomowych rodzi pewne trudności. Co roku pracownicy zaangażowani w proces spotykają się z następującymi problemami: • wybór promotorów, którzy w danym roku będą prowadzili prace oraz rozdzielenie liczby tematów • modyfikacje i propagacja zmian w dokumentach kart prac dyplomowych • sprawdzanie terminowości wydawania kart prac dyplomowych • nadzorowanie postępu procesu wydawania tematów prac (łącznie z oceną merytoryczną ich zawartości) Również studenci, których głównym celem jest wybranie jak najciekawszego i rozwijającego tematu pracy, spotykają się z kilkoma problemami: • dostęp do listy tematów (brak centralnego repozytorium dostępnego elektronicznie, które mogłoby ułatwić wyszukiwanie interesujących tematów) • brak dostępu do informacji o zakresie prac (dane takie bardzo często można wydostać jedynie kontaktując się bezpośrednio z promotorem pracy) utrudniający proces wyboru tematu pracy • brak informacji o wolnych tematach (studenci często dowiadują się, że interesująca ich praca jest już zajęta, dopiero w momencie wizyty u promotora) Potrzebna jest więc kontrola procesu wydawania i przydzielania tematów prac inżynierskich, by ułatwić komunikacje między osobami zaangażowanymi w proces, a także skoordynować i wspomóc prace. Dotychczas ta kontrola była realizowana żęcznie”. Niestety, ze względu na dużą ilość danych (w roku 2006 na AiZ i na INF było łącznie ponad 70 prac inżynierskich, w których uczestniczyło ponad 200 studentów) kontrola ta nie była efektywna. Z jednej strony zabierała dużo czasu pracownikom dziekanatu i (w mniejszym stopniu) prodziekanowi, z drugiej strony zebrane dane były prezentowane z dość dużym opóźnieniem. Wskutek tego panował chaos informacyjny. Aby rozwiązać opisany problem należałoby zbudować internetowy system zarządzania pracami dyplomowymi, który umożliwiłby wybór promotorów, zbieranie propozycji tematów prac oraz ich wydawanie studentom. 1 2 Wprowadzenie 1.2 Omówienie pracy Niniejszy dokument zawiera opis systemu DiploMan-1, mającego służyć jako internetowy system zarządzania pracami dyplomowymi. Dokument ten jest adresowany przede wszystkim do osób, które będą miały zajmować się utrzymaniem sprawności opisywanego systemu. Jest to jednocześnie praca dyplomowa inżynierska i z tego względu adresatami są również członkowie komisji egzaminacyjnej. Poszerzony opis koncepcji rozwiązania problemu widzianej od strony operacyjnej przedstawiono w rozdziale 2. Przedstawiono tam opis najważniejszych ról, czyli głównych aktorów procesów biznesowych, obiekty biznesowe przekazywane między aktorami (są to odpowiedniki tradycyjnych dokumentów) oraz scenariusze operacyjne opisujące jak przepływa informacja między aktorami. Szczegółowa specyfikacja wymagań jest przedstawiona w rozdziałach 3. i 4. Pierwszy z nich opisuje wymagania funkcjonalne, które zostały uporządkowane według aktorów, a w drugim zawarto wymagania pozafunkcjonalne. W rozdziale 5. czytelnik znajdzie opis architektury systemu, który na wysokim poziomie abstrakcji opisuje przyjęte rozwiązanie. Bardziej szczegółowy opis implementacji jest przedstawiony w rozdziale 6, w którym opisano charakterystykę poszczególnych części systemu i relacji zachodzącymi między nimi. Proces zapewniania jakości produktu przedstawiono w rozdziale 7. Opisano w nim metody testowania oprogramowania oraz uzyskane wyniki na poszczególnych etapach pracy. Sposób zarządzania kolejnymi wersjami systemu przedstawiono w rozdziale 8. Opisano w nim użyte oprogramowanie i serwery. W rozdziale 9. opisano przyjęte metody weryfikacji osiągnięcia celów biznesowych. W rozdziale 10. przedstawiono problemy na jakie napotkano w trakcie tworzenia systemu, sposoby ich rozwiązania oraz inne spostrzeżenia dotyczące rozwiązywanego problemu. Na końcu pracy załączono dodatki poindeksowane literami A-D. W dodatku A przedstawiono udział w pracy poszczególnych członków zespołu. Opinia klienta na temat stworzonego systemu znajduje się w dodatku B. W części C przedstawiono słownik pojęć i skrótów użytych w niniejszej pracy. Do pracy dołączono również opisaną płytę CD z kodem źródłowym systemu, która stanowi dodatek D pracy. Rozdział 2 Opis procesów biznesowych 2.1 Aktorzy Budowany system ma za zadanie w jak największym stopniu odwzorować procesy zachodzące w świecie rzeczywistym i przenieść je do świata wirtualnego. Użytkownicy korzystający z systemu (aktorzy) są to osoby, które podczas standardowej procedury uczestniczą w procesie zbierania propozycji tematów prac inżynierskich oraz wydawania ich studentom. Osobami tymi są kierownicy poszczególnych zakładów bądź katedr, prodziekan, promotorzy oraz studenci. Dodatkowo na potrzeby systemu stworzony został dodatkowy użytkownik – administrator, pełniący rolę nadzorczą nad systemem. Jako aktorów pełniących rolę pomocniczą w procesie, ale nie występujących w systemie jako jednostki funkcjonalne, należy wymienić pracowników dziekanatu, którzy określają ilu studentów jest na ostatnim semestrze studiów inżynierskich i od których administrator otrzymuje listę studentów danego roku w celu wprowadzenia ich do systemu. Podobnie administrator może zgłosić się z prośbą do dziekanatu w celu otrzymania listy pracowników wraz z ich danymi potrzebnymi w systemie. Schemat zależności pomiędzy aktorami przedstawia rysunek 2.1 Rysunek 2.1: Diagram zależności pomiędzy aktorami i systemem Kierownicy jednostek (zakładów/katedr) zarządzają listą promotorów w swoim zakładzie. Mogą wskazywać osoby ze swojego zakładu/katedry, które widzieliby w roli promotorów prac. Mają również możliwość dodawania do bazy danych nowych pracowników w swoim zakładzie, w przypadku jeśli administrator tego nie zrobił. Decydują również o losie zgłoszonych przez promotorów propozycji tematów prac – mogą je zaakceptować, odrzucić jak również komentować. 3 4 Opis procesów biznesowych System komentarzy pozwala w łatwy sposób przesyłać informacje między kierownikiem a promotorem dotyczące konkretnego tematu. Prodziekan jako osoba wyżej w hierarchii nadzoruje prace kierowników poszczególnych jednostek. Ma wgląd do wszystkich prac zaakceptowanych przez kierowników oraz prac oczekujących na akceptacje. Tematy odrzucone nie są wyświetlane prodziekanowi. Lista wszystkich zweryfikowanych i przyjętych przez kierowników tematów jest zatwierdzana przez prodziekana, aby mogła zostać przedstawiona studentom. Prodziekan ma do wglądu również listę studentów. Promotor to osoba, którą wskazuje kierownik zakładu bądź katedry. Do jego zadań należy przygotowanie propozycji tematów prac według obowiązującego szablonu oraz wskazanie informacji dodatkowych jakie chciałby uzyskać od studentów zgłaszających się do danej pracy. Po zgłoszeniu się studentów promotor wybiera odpowiadający mu zespół i generuje kartę pracy. Studenci to osoby, których obowiązkiem jest połączyć się w zespoły maksymalnie 4-osobowe. Każdy zespół posiada tymczasowego lidera – jest nim osoba, która założyła zespół w systemie. Lider zarządza składem zespołu, przyjmując i odrzucając zgłoszone kandydatury (każdy student ma możliwość zgłoszenia chęci zapisania się do istniejącej już grupy bądź stworzenia własnej). Kompletny zespół zgłasza swoje zainteresowanie konkretną pracą poprzez zgłoszenie się dno niej (informacja o zgłaszającej się grupie studentów jest od razu widoczna dla promotora). Administrator jak już wspomniano pełni w systemie funkcje nadzorczą. Do jego zadań należy wprowadzanie do systemu listy studentów danego kierunku (otrzymanej z dziekanatu) oraz dodawanie pracowników wraz z ich danymi osobowymi. Do obowiązków administratora należy również zarządzanie wydziałami, instytutami oraz zakładami (dodawanie, usuwanie i modyfikacja), a także wprowadzanie do systemu informacji o kierownikach na wydziale. Pełni on kluczową rolę w systemie, gdyż wprowadza dane niezbędne do pracy pozostałych użytkowników. 2.2 Obiekty biznesowe Obiektami biznesowymi w opisywanym systemie są zarówno obiekty mające bezpośrednie odpowiedniki w realnym świecie, jak również takie, które nie występują w odwzorowywanej rzeczywistości, ale pełnią rolę pomocniczą podczas procedury wydawania tematów prac, w tym pełniące funkcję informacyjną dla użytkowników. Obiektami tymi są propozycje tematów prac zgłaszane przez promotorów, lista prac zaakceptowanych przez kierowników widoczna dla prodziekana, lista prac dla studentów, zestawienie prac zaakceptowanych z listą zgłoszonych studentów, zestawienie pracowników zakładu, a także zestawienie promotorów danego zakładu. Bardzo ważnym obiektem biznesowym jest karta pracy generowana przez każdego z promotorów. Propozycje tematów prac jest to zbiór tematów jakie zgłosił promotor. Zostają one przedstawione kierownikowi zakładu, w którym pracuje dany promotor. Kierownik akceptuje, bądź odrzuca poszczególne propozycje, jak również może zgłosić komentarz do tematu, celem zasugerowania promotorowi zmian. Po zaakceptowaniu propozycji staje się ona obowiązującym tematem pracy dyplomowej i nie może być już modyfikowana przez promotora. Rysunek 2.2 przedstawia przykładową listę propozycji tematów prac. Lista prac zaakceptowanych przez kierowników zakładów jest zbiorem wszystkich prac, które przeszły weryfikacje i zostały zaaprobowane przez kierowników poszczególnych jednostek. Lista wszystkich takich prac na wydziale (z możliwością filtrowania względem instytutu, zakładu i kierunku) zostaje przedstawiona prodziekanowi. Po zaakceptowaniu całej listy przez prodziekana jest ona przedstawiana studentom, którzy mają do wglądu tylko prace przeznaczone dla ich kierunku. Rysunek 2.3 przedstawia taką przykładową listę. 5 2.2. Obiekty biznesowe Rysunek 2.2: Propozycje tematów prac Rysunek 2.3: Lista zaakceptowanych prac 6 Opis procesów biznesowych Do zaakceptowanych prac zgłaszają się studenci. Powstaje lista prac z wyszczególnionymi nazwiskami studentów, którzy zgłosili chęć pisania danej pracy. Zestawienie takie jest widoczne dla każdego promotora, który może następnie zarządzać zgłoszeniami do prac. Zestawienie pracowników zakładu jest listą do której dostęp ma kierownik danego zakładu. Oprócz przeglądania spisu pracowników, daje ona możliwość dodawania nowych osób, a także usuwania bądź modyfikowania danych już wprowadzonych. Rysunek 2.4 przedstawia takie przykładowe zestawienie. Rysunek 2.4: Zestawienie pracowników zakładu Zestawienie promotorów jest listą osób które dany kierownik wskazał jako promotorów w swoim zakładzie. Listę tą można modyfikować – dodawać, usuwać promotorów oraz zmieniać przypisaną im maksymalną liczbę proponowanych tematów i realizowanych prac. Rysunek 2.5 przedstawia takie przykładowe zestawienie. Rysunek 2.5: Zestawienie promotorów Karta tematu pracy dyplomowej opisuje dokładnie każdą pracę. Jest ona generowana przez każdego z promotorów po przypisaniu studentów do pracy. Karta jest jednym z dokumentów wymaganych przez dziekanat, decydującym o dopuszczeniu studentów do egzaminu dyplomowego. 2.3. Scenariusze operacyjne 2.3 7 Scenariusze operacyjne Scenariusz główny: 1. Administrator wprowadza do systemu dane niezbędne dla pozostałych użytkowników. 2. Kierownik wyznacza promotorów, którzy przygotowują propozycje tematów prac dyplomowych. 3. Kierownik akceptuje, odrzuca lub zleca modyfikacje tematu. 4. Prodziekan zatwierdza listę tematów zaakceptowanych prze kierowników. 5. Studenci łącza się w zespoły i zgłaszają się do tematów prac. 6. Promotor wybiera zespół i generuje kartę pracy. 2.3.1 Wprowadzenia niezbędnych danych do systemu 1. Administrator pobiera z dziekanatu listę studentów, którzy prawdopodobnie przystąpią do wyboru tematu pracy dyplomowej oraz listę pracowników i wprowadza ich do systemu. 2. System zapisuje wprowadzone dane w bazie danych. 3. Administrator wprowadza do systemu dokładną strukturę wydziału czyli instytuty i zakłady (ewentualnie wprowadza tylko zmiany). 4. System zapisuje wprowadzone dane w bazie danych. 5. Administrator przypisuje kierowników do zakładów (jeśli nie ma ich w systemie). 6. System zapisuje wprowadzone dane w bazie danych. 7. Administrator wprowadza do systemu kierunki studiów (jeśli nie ma ich w systemie). 8. System zapisuje wprowadzone dane w bazie danych. 9. Administrator modyfikuje (w razie potrzeby) szablon karty tematu pracy. 2.3.2 Wyznaczenie promotorów i przygotowanie propozycji tematów Warunek: Do systemu są wprowadzeni pracownicy (przynajmniej kierownicy zakładów/katedr). 1. Kierownik dodaje do systemu pracownika, którego chciałby wskazać jako promotora (w przypadku jego braku w systemie). 2. Kierownik wskazuje osoby ze swojego zakładu/katedry, które widziałby w roli promotorów prac (są to tzw. potencjalni promotorzy). 3. Kierownik dla każdej wskazanej osoby określa maksymalną liczbę propozycji tematów prac jaką może zgłosić. 4. Kierownik dla każdej wskazanej osoby określa maksymalną liczbę faktycznych prac, jakie może prowadzić. 5. System powiadamia potencjalnego promotora za pomocą poczty elektronicznej o propozycji kierownika. 6. Potencjalny promotor przygotowuje propozycje tematów prac według obowiązującego szablonu oraz wskazuje jakie informacje dodatkowe chciałby mieć o ewentualnych członkach zespołu (na przykład ich średnią ocen). 2.3.3 Zatwierdzenie propozycji tematów Warunek: Promotor przygotował propozycje tematu pracy dyplomowej. 1. Kierownik zatwierdza poszczególne propozycje, odrzuca je lub też zaleca modyfikacje. 2. Potencjalny promotor w modyfikuje w razie konieczności propozycje tematów prac. 8 Opis procesów biznesowych 3. System udostępnia zatwierdzone propozycje tematów, które zostały zgłoszone przez adiunktów, do wglądu prodziekanowi. 2.3.4 Prodziekan akceptuje listę tematów Warunek: Kierownicy dokonali akceptacji wybranych tematów prac. 1. Prodziekan akceptuje całą listę tematów prac. 2. System udostępnia studentom listę prac. 2.3.5 Tworzenie zespołów i zgłaszanie ich do tematów Warunek: Do systemu są wprowadzone dane studentów i mają oni założone konta. 1. Studenci łączą się w zespoły (tworzą własne zespoły lub zgłaszają się do już istniejących). Każdy zespół ma tymczasowego lidera (założyciel grupy). 2. Lider zarządza składem zespołu (przyjmuje do zespołu osoby, które zgłosiły chęć przystąpienia do grupy; ewentualnie usuwa osoby z zespołu). 3. Lider zaznacza te tematy, którymi zespół jest zainteresowany. Jest możliwość zmiany zainteresowań. 4. System informuje odpowiedniego promotora o zainteresowaniu jego tematem pracy. 5. Lider umawia zespół na spotkanie z promotorem. 2.3.6 Wybranie zespołu Warunek: Studenci zgłosili się do tematu. 1. Promotor biorąc pod uwagę terminy spotkań, które pasują zespołowi oraz inne informacje (na przykład średnią ocen) zaprasza zespoły na spotkanie. 2. Promotor wybiera zespół. 3. System blokuje możliwość zgłaszania się pozostałych zespołów do danego tematu. 4. Promotor generuje kompletną kartę tematu pracy dyplomowej. Rozdział 3 Wymagania funkcjonalne W tym rozdziale opisano wymagania jakie powinien spełniać zbudowany system. Wymagania dotyczą funkcjonowania systemu, możliwości jakie daje on użytkownikowi oraz sposobu interakcji systemu z użytkownikiem. Opis wymagań zostanie przedstawiony w formie przypadków użycia. 3.1 Administrator UC1: Wprowadzenie pracownika do systemu Główny scenariusz: 1. Administrator wprowadza do formularza dane pracownika (imię, nazwisko, email, adres). 2. Administrator wybiera z listy (kontrolka checkbox) tytuł naukowy oraz stanowisko pracownika. 3. Administrator wybiera z list (kontrolka checkbox) wydział, do którego zamierza dodać pracownika. 4. System generuje listę instytutów jakie istnieją na wybranym wydziale. 5. Administrator wybiera z listy (kontrolka checkbox) instytut, do którego zamierza dodać pracownika. 6. System generuje listę zakładów dostępnych w wybranym instytucie. 7. Administrator wybiera z listy (kontrolka checkbox) zakład, do którego zamierza dodać pracownika. 8. Administrator wysyła formularz z danymi naciskając przycisk Dodaj. 9. System sprawdza wprowadzone dane i zapisuje je w bazie danych. Rozszerzenia: 9a. Nie wprowadzono wszystkich wymaganych danych 9a1. System wyświetla w formularzu, które dane nie zostały wprowadzone i prosi administratora o ich podanie UC2: Wprowadzenie studentów do systemu Główny scenariusz: 1. Administrator wybiera z listy (kontrolka checkbox) wydział, do którego zamierza dodać studentów. 2. System generuje listę kierunków jakie istnieją na wybranym wydziale. 3. Administrator wybiera z listy (kontrolka checkbox) kierunek, do którego zamierza dodać studentów. 9 10 Wymagania funkcjonalne 4. Administrator podaje plik w formacie csv z listą studentów i wysyła wprowadzone dane. 5. System sprawdza format pliku i zapisuje studentów w bazie danych. Rozszerzenia: 5a. Podano plik w złym formacie. 5a1. System wyświetla komunikat o błędnym formacie i prosi po podanie pliku we właściwym formacie. UC3: Wprowadzenie instytutu do systemu Główny scenariusz: 1. Administrator wybiera z listy (kontrolka checkbox) wydział, do którego zamierza dodać instytut. 2. Administrator podaje nazwę wprowadzanego instytutu i wysyła wprowadzone dane. 3. System sprawdza wprowadzone dane i zapisuje je w bazie danych. Rozszerzenia: 3a. Nie wprowadzono wszystkich wymaganych danych 3a1. System wyświetla, które dane nie zostały wprowadzone i prosi administratora o ich podanie UC4: Wprowadzenie zakładu do systemu Główny scenariusz: 1. Administrator wybiera z listy (kontrolka checkbox) wydział, do którego zamierza dodać zakład. 2. System generuje listę instytutów, jakie istnieją na wybranym wydziale. 3. Administrator wybiera z listy (kontrolka checkbox) instytut, do którego zamierza dodać zakład. 4. Administrator podaje nazwę wprowadzanego zakładu i wysyła wprowadzone dane. 5. System sprawdza wprowadzone dane i zapisuje je w bazie danych. Rozszerzenia: 5a. Nie wprowadzono wszystkich wymaganych danych 5a1. System wyświetla, które dane nie zostały wprowadzone i prosi administratora o ich podanie UC5: Wprowadzenie wydziału do systemu Główny scenariusz: 1. Administrator podaje nazwę wprowadzanego wydziału. 2. System sprawdza czy wprowadzono nazwę i zapisuje wydział w bazie danych. Rozszerzenia: 2a. Nie wprowadzono nazwy wydziału 2a1. System prosi administratora o podanie nazwy wydziału. UC6: Wprowadzenie kierunku do systemu Główny scenariusz: 1. Administrator wybiera z listy (kontrolka checkbox) wydział, do którego zamierza dodać kierunek. 3.2. Kierownik zakładu / katedry 11 2. Administrator podaje nazwę wprowadzanego kierunku i wysyła wprowadzone dane. 3. System sprawdza wprowadzone dane i zapisuje je w bazie danych. Rozszerzenia: 3a. Nie wprowadzono wszystkich wymaganych danych 3a1. System wyświetla, które dane nie zostały wprowadzone i prosi administratora o ich podanie UC7: Przypisanie kierownika do zakładu Główny scenariusz: 1. Administrator wybiera zakład do którego chce przypisać kierownika. 2. System generuje listę pracowników w wybranym zakładzie. 3. Administrator wybiera z listy (kontrolka checkbox) pracownika, któremu chce przypisać role kierownika zakładu. 4. System zapisuje zmiany w bazie danych. UC8: Modyfikowanie szablonu karty tematu pracy Główny scenariusz: 1. Administrator pobiera z systemu szablon karty tematu pracy. 2. Administrator modyfikuje szablon lokalnie na swoim komputerze. 3. Administrator wprowadza zmodyfikowany szablon do systemu (pliki spakowane w formacie ZIP). 4. System sprawdza format wprowadzonych danych. Rozszerzenia: 4a. Wprowadzono błędny format pliku 4a1. System wyświetla komunikat o błędnym formacie pliku. 3.2 Kierownik zakładu / katedry UC1: Wprowadzenie pracownika do systemu Główny scenariusz: 1. Kierownik wprowadza do formularza dane pracownika (imię, nazwisko, email, adres). 2. Kierownik wybiera z listy (kontrolka checkbox) tytuł naukowy oraz stanowisko pracownika. 3. Kierownik wysyła formularz z danymi naciskając przycisk „Dodaj”. 4. System sprawdza wprowadzone dane i zapisuje pracownika w bazie danych (w zakładzie kierownika). Rozszerzenia: 4a. Nie wprowadzono wszystkich wymaganych danych 4a1. System wyświetla w formularzu, które dane nie zostały wprowadzone i prosi kierownika o ich podanie. UC2: Przypisanie pracownikowi roli promotora Główny scenariusz: 1. Kierownik wybiera pracownika z lisy pracowników swojego zakładu (kontrolka checkbox). 12 Wymagania funkcjonalne 2. Kierownik wprowadza maksymalną liczbę tematów, jakie promotor będzie mógł zaproponować oraz maksymalną liczbę prac, jakie promotor będzie mógł realizować. 3. Kierownik wysyła formularz z danymi naciskając przycisk „Dodaj”. 4. System sprawdza wprowadzone dane i zapisuje je w bazie danych. 5. System powiadamia promotora pocztą elektroniczną Rozszerzenia: 4a. Nie wprowadzono wszystkich wymaganych danych 4a1. System wyświetla w formularzu, które dane nie zostały wprowadzone i prosi kierownika o ich podanie. 4b. Maksymalna liczba proponowanych tematów jest mniejsza od maksymalnej liczby realizowanych prac. 4b1. System wyświetla w formularzu informacje o błędnych wartościach liczb. UC3: Dodanie komentarza do propozycji tematu Główny scenariusz: 1. Kierownik wybiera propozycje tematu pracy, do której chce dodać komentarz i naciska przycisk „Komentuj”. 2. System wyświetla formularz komentowania tematu. 3. Kierownik dodaje komentarze do wybranych cech tematu pracy. 4. System zapisuje w bazie komentarze i wyświetla je na liście tematów przy danej pracy. UC4: Zaakceptowanie lub odrzucenie propozycji tematu Główny scenariusz: 1. Kierownik wybiera propozycje tematu pracy którą chce zaakceptować bądź odrzucić i naciska przycisk odpowiednio „Akceptuj” lub „Odrzuć”. 2. System wprowadza do bazy danych informację o zaakceptowaniu lub odrzuceniu propozycji tematu. 3.3 Promotor UC1: Dodanie propozycji tematu pracy Główny scenariusz: 1. Promotor wypełnia formularz dodawania propozycji tematu pracy. 2. Promotor określa dla jakiego kierunku jest przeznaczony temat pracy. 3. System sprawdza czy promotor może dodać kolejny temat pracy (nie przekroczył maksymalnej liczby propozycji tematów). 4. System dodaje propozycje tematu pracy do bazy danych, która jest od razu widoczna na liście tematów promotora jak również kierownika. Rozszerzenia: 3a. Promotor wprowadził już dozwoloną maksymalną ilość propozycji tematów prac. 3a1. System wyświetla komunikat o przekroczeniu limitu propozycji tematów prac. Propozycja tematu nie zostaje dodana. 3.4. Prodziekan 13 UC2: Modyfikacja propozycji tematu pracy Główny scenariusz: 1. Promotor wprowadza zmiany do propozycji tematu pracy w formularzu modyfikacji. 2. System zapisuje zmiany, które są od razu widoczne przy danej pracy. UC3: Wybranie zespołu Główny scenariusz: 1. Promotor wybiera zespół z listy zgłaszających się do danego tematu. 2. System przypisuje wybrany zespół do danego tematu pracy. 3. Promotor blokuje możliwość zmian w składzie zespołu. 4. System uniemożliwia studentom zmiany w składzie zespołu. 5. Promotor generuje za pomocą systemu kompletną kartę tematu pracy dyplomowej Rozszerzenia: 1a. Promotor rezygnuje z wybranego już zespołu 1a1. System usuwa przypisanie zespołu do pracy i umożliwia promotorowi wybranie innego zespołu. 3a. Promotor odblokowuje możliwość zmian w składzie zespołu. 3a1. System umożliwia studentom zmiany w składzie zespołu. 3.4 Prodziekan UC1: Akceptacja listy tematów prac Główny scenariusz: 1. Prodziekan weryfikuje listę tematów prac i akceptuje całą listę. 2. System udostępnia zaakceptowaną listę tematów prac studentom. 3.5 Student UC1: Stworzenie i zarządzanie zespołem Główny scenariusz: 1. Student wybiera w menu opcję „Stwórz własny zespół”. 2. System tworzy nowy zespół, którego liderem staje się jego twórca. 3. System udostępnia innym studentom możliwość zgłoszenia się do stworzonego zespołu. 4. Lider zaprasza do zespołu interesującą go osobę wpisując jej numer indeksu. 5. System wysyła zaproszenie do wskazanej osoby. 6. Lider wybiera z listy osób zgłaszających się do zespołu te, które chce przyjąć do zespołu. 7. System wpisuje wybrane osoby na listę członków zespołu. Rozszerzenia: 1a. Lider zespołu usuwa założony przez siebie zespół. 1a1. System usuwa zespół z systemu. 6a. Lider zespołu usuwa osobę z zespołu. 6a1. System usuwa wybraną osobę z listy członków zespołu. 14 Wymagania funkcjonalne UC2: Zgłoszenie się do zespołu Główny scenariusz: 1. Student wybiera z listy istniejących już zespołów ten, do którego chciałby się zapisać. 2. Student zgłasza się do wybranego zespołu. 3. System wysyła zgłoszenie do lidera zespołu. UC3: Przyjęcie zaproszenia do zespołu Główny scenariusz: 1. Student wybiera z listy zaproszeń do zespołów jedno, które go interesuje. 2. System zapisuje studenta na listę członków wybranego zespołu. UC4: Zgłoszenie zespołu do tematu pracy Główny scenariusz: 1. Student (lider zespołu) wybiera z listy dostępnych tematów prac, te które interesują zespół. 2. Student (lider zespołu) zgłasza zespół do wybranych tematów. 3. System wysyła zgłoszenia do odpowiednich promotorów. Rozszerzenia: 2a. Zespół rezygnuje z tematu pracy. 2a1. System usuwa zespół z listy kandydujących do danego tematu. Rozdział 4 Wymagania pozafunkcjonalne 4.1 Modyfikowalność Ze względu na planowaną późniejszą rozbudowę systemu aplikacja powinna umożliwiać prostą modyfikację: • kodu źródłowego aplikacji • bazy danych Kod źródłowy aplikacji powinien zostać podzielony (jako struktura katalogów) na logiczne części. Implementacja musi być przejrzysta aby wprowadzenie nowej funkcjonalności nie pociągało za sobą refaktoryzacji całego kodu źródłowego. Przez modyfikowalność bazy danych autorzy rozumieją łatwość zmiany typu bazy danych oraz umożliwienie przyszłej modyfikacji schematu bazy danych. Administrator systemu powienien mieć również możliwość modyfikacji wzorca karty dyplomowej. Modyfikowalność systemu jest najważniejszym wymaganiem pozafunkcjonalnym. 4.2 Użyteczność Użyteczność systemu czyli łatwość jego obsługi znacząco wpływa na wrażenie, jakie system wywiera na użytkowniku. Prosty w obsłudze system jest rozumiany jako intuicyjny w obsłudze oraz szybki do przyswojenia. 4.3 Bezpieczeństwo Aplikacja powinna chronić dane użytkowników – szczególnie dane osobowe oraz hasła. Ważne jest aby użytkownik widział jedynie funkcje przeznaczone dla niego. System musi chronić dane przed nieautoryzowanym dostępem. 4.4 Wydajność Autorzy zakładają, że system będzie obsługiwał cały Wydział Informatyki i Zarządzania czyli około 600 osób. Jeżeli w okresie wzmożonej aktywności 2% użytkowników będzie jednocześnie żądało odpowiedzi aplikacji, oznacza to, że system będzie musiał w rozsądnym czasie (najwyżej kilku sekund) odpowiadać na żądania dwunastu osób. System nie może zawiesić się w przypadku większego obciążenia. Dane, które wymagają czasochłonnych obliczeń, powinny być przechowywane – o ile jest to możliwe – w wersji gotowej do pobrania. Należy mieć również na uwadze ilość informacji gromadzoną przez system. 15 Rozdział 5 Architektura systemu 5.1 Fizyczne rozmieszczenie modułów Rysunek 5.1 przedstawia fizyczne rozmieszczenie komponentów systemu. System DiploMan zostanie wdrożony na serwerze, który poprzez sieć lokalną łączy się z serwerem bazy danych. Użytkownicy – za pośrednictwem Internetu – posiadają dostęp do systemu poprzez przeglądarkę WWW. Rysunek 5.1: Fizyczne rozmieszczenie modułów 5.2 Wzorzec projektowy MVC Głównym założeniem systemu jest zapewnienie odpowiedniego stopnia modyfikowalności. Taką modyfikowalność, systematyzację i uporządkowanie kodu źródłowego wyznacza właśnie wzorzec projektowy MVC (ang. Model View Controller ). Wydziela on trzy komponenty (warstwy): modelu, widoku oraz kontrolera. Ten pierwszy odpowiedzialny jest za przechowywanie danych biznesowych aplikacji. W przypadku tworzonego systemu są to wszelkie informacje o pracach dyplomowych, pracownikach zakładów, studentach, itd. Model nie wie nic o istnieniu kontrolera czy widoku. Komponent widoku odpowiedzialny jest jedynie za prezentację przygotowanych danych. Również nie wie nic o kontrolerze, czasami (w rzadkich przypadkach) może odwoływać się bezpośrednio do modelu (w tworzonym systemie taka sytuacja nie występuje). Kontroler przyjmuje żądania od użytkownika, przetwarza dane i zwraca wyniki do warstwy widoku. 17 18 Architektura systemu Wzorzec pozwala na dość znaczne zrównoleglenie pracy. Do wad opisywanego zastosowania można zaliczyć dużą liczbę plików potrzebnych do realizacji zadania oraz większe trudności w samej implementacji. Rysunek 5.2: Schemat wzorca MVC 5.3 Opis wykorzystanych techonologii Ogólną architekturę całego systemu przedstawia rysunek 5.3. Dokładniejsze omówienie każdego komponentu znajduje się w dalszych podrozdziałach. Rysunek 5.3: Ogólny schemat architektury systemu 5.3.1 Apache Tomcat Apache Tomcat jest popularnym, darmowym kontenerem aplikacji webowych. Obsługuje serwlety Java (ang. Java Servlets) oraz strony JSP (ang. Java Server Pages). Aplikacja sprawdza się w wielu zastosowaniach, włączając bardzo duże projekty. Tworzony system jest oparty o wersję serwera 6.0. 5.3.2 Apache Struts 2 Struts 2 to framework przeznaczony do tworzenia rozbudowanych aplikacji internetowych Java. Środowisko jest efektem połączenia sił wieloletniego projektu WebWork oraz Apache Struts. Technologia obsługuje żądania przeglądarki wysyłane przez użytkownika, przekierowując go do konkretnych akcji. Mapowanie akcji w Struts 2 na konkretne działanie (wywołanie funkcji Java) to bardzo ważny etap. Framework pozwala przypisać do akcji – oprócz wymaganej nazwy – takie komponenty jak: zbiór interceptorów (patrz: rozdział poświęcony implementacji), zbiór typów wyniku 5.3. Opis wykorzystanych techonologii 19 działania akcji czy obsługę wyjątków. Same akcje mogą być grupowane w pakiety oraz przestrzenie nazw. Modularna budowa plików konfiguracyjnych umożliwia hierarchiczne tworzenie bardzo rozbudowanych mapowań. Zastosowanie technologii pozwala na: • automatyczną walidację danych wprowadzanych przez użytkownika i automatyczne wyświetlanie komunikatów o błędach • tworzenie formularzy WWW o rozszerzonych możliwościach, • automatyczną konwersję typów, która transparentnie mapuje zmienne HTTP na obiekty Java, • dostosowanie odpowiedzi aplikacji do każdej akcji, • zwiększenie poziomu bezpieczeństwa dzięki zastosowaniu własnych interceptorów Schemat przetwarzania akcji Struts 2 w tworzonym systemie wygląda następująco: 1. Użytkownik wysyła żądanie o zasób. 2. Aplikacja na podstawie wcześniej zdefiniowanego pliku konfiguracyjnego wybiera określoną akcję. 3. Następuje wywołanie akcji – wygenerowanie danych wyjściowych. 4. Wynik jest przekazywany do Velocity w postaci specjalnych obiektów (w ogólności użycie Velocity nie jest konieczne). 5. Velocity renderuje ostateczny wynik. Rysunek 5.4: Uproszczony schemat działania środowiska Struts 2 5.3.3 Apache Velocity Velocity jest prostym i jednocześnie bardzo efektywnym językiem znaczników. Umożliwia szybkie tworzenie dynamicznych stron dowolnego typu. Oprócz generowania wszystkich stron html, opisywana technologia jest wykorzystywana również przy tworzeniu plików PDF (generując dynamicznie pliki źródłowe systemu LATEX). Velocity odpowiada warstwie widoku w tworzonym projekcie. 5.3.4 Java Servlets Serwlety Java to aplikacje Java, które w ogólności pozwalają na rozszerzenie możliwości serwera WWW. Technologia pozwala programistom na dynamiczne tworzenie zawartości stron WWW używając platfomy Java. Serwlety mogą utrzymywać stan aplikacji przez korzystanie na przykład ze zmiennych sesyjnych czy ciasteczek (ang. cookies). Serwlety są obiektami, które otrzymują żądanie i na jego podstawie generują odpowiedź. Mogą korzystać z całego API Javy, o ile zostanie ono dostarczone. 20 Architektura systemu 5.3.5 Hibernate Hibernate jest potężnym i bardzo wydajnym narzędziem służącym do mapowania relacyjnej bazy danych na odpowiadający model obiektowy (i odwrotnie). Technologia umożliwia zarządzanie bazą w bardzo prosty sposób. Narzędzie pozwala odseperować konkretną implementację bazy danych od tworzonej aplikacji. Programista może posługiwać się językiem HQL (ang. Hibernate Query Language), wzorowanym na SQL. Język pozwala na proste i eleganckie wydawanie nawet skomplikowanych zapytań (składnią podobnych trochę do SQL). Jedną z zalet języka HQL jest jego mobilność – zapytanie HQL tłumaczone jest na natywny dialekt języka SQL (zależny od aktualnie używanej bazy danych). Dzięki zastosowaniu specjalnych annotacji w kodzie źródłowym (technologia Hibernate Annotations) baza danych została automatycznie wygenerowana. System DiploMan-1 – ze względu na wykorzystanie Hibernate Annotations – wymaga środowiska Java w wersji minimum 1.5. 5.3.6 System składu tekstu LATEX Aby system mógł genenerować pliki PDF, autorzy wykorzystali system składu tekstu LATEXw połączeniu z możliwościami Velocity. Administrator systemu dokonuje zmian w pliku .tex o ustalonej nazwie, po czym wysyła przygotowane archiwum do serwera. System w momencie generowania karty pracy zastępuje znaczniki Velocity z pliku .tex informacjami pobranymi z bazy danych. Po przygotowaniu pliku .tex aplikacja uruchamia system LATEX w celu wygenerowania pliku PDF. Stworzona karta pracy przechowywana jest na serwerze, aby przy kolejnym pobraniu pliku system nie musiał dokonywać czasochłonnej kompilacji. Autorzy zdecydowali się na zastosowanie systemu LATEX (a nie na przykład Jasper Reports) ze względu na łatwość modyfikacji opisywanych szablonów. Rozdział 6 Opis implementacji Implementacja systemu Diploman wynika bezpośrednio z jego architektury, a więc wyboru kolejno: • frameworku Struts 2 opierającego się o koncepcję MVC, • frameworku Hibernate realizującego warstwę dostępu do danych, • procesora szablonów Apache Velocity realizującego warstwę widoku Z tego też powodu opis implementacji można podzielić na podrozdziały odpowiadające poszczególnym warstwom aplikacji. 6.1 Model Jak już wcześniej wspomniano, do realizacji warstwy dostępu do danych użyto open source’owego projektu Hibernate. Jest to framework zapewniający mapowanie obiektów Java na tabele i krotki relacyjnej bazy danych (ang. O/R mapping). Jego konfigurację zawiera plik hibernate.cfg.xml. Wszystkie klasy odpowiedzialne za realizację warstwy modelu znajdują się w pakietach diploman.database.*. 6.1.1 Schemat bazy danych Odzwierciedleniu przedstawionego na rysunku 6.1 i 6.2 schematu relacyjnej bazy danych w świecie obiektowym służą klasy zawarte w pakiecie diploman.database.schema. Definiują one obiekty, które system wykorzystuje przy dostępie do bazy danych zamiast wykonywania klasycznych zapytań SQL. I tak na przykład tabeli pracownicy odpowiadają obiekty klasy Pracownik, tabeli prace obiekty klasy Praca, a tabeli wydzialy, obiekty klasy Wydzial. Ułatwia to znacząco dostęp do bazy danych i wykonywanie w niej wszelkich zmian. Nie zaimplementowano klas tabel połączeniowych, gdyż realizacją związków między encjami zajmuje się Hibernate. Dostęp do danych pozyskiwanych przez połączenie tabel realizuje się poprzez listy (zbiory) obiektów, na przykład obiekt klasy Wydzial posiada listę (zbiór) obiektów klasy Kierunek. Można dzięki temu odwoływać się do nich w bardzo prosty sposób, na przykład kierunki_na_wydziale = wydzial.getKierunki(); 6.1.2 Klasy wykorzystywane do dodawania, pozyskiwania, modyfikacji i usuwania danych z bazy Wszystkie klasy wykorzystywane przy dostępie do bazy danych do pozyskiwania, modyfikacji i usuwania danych znajdują się w pakiecie diploman.database. Grupują one metody według 21 22 Opis implementacji Rysunek 6.1: Schemat bazy danych – część 1 23 6.1. Model Rysunek 6.2: Schemat bazy danych – część 2 24 Opis implementacji obiektów, na których działają: • klasa Workers – metody służące dodawaniu, pobieraniu, modyfikacji i usuwaniu pracowników z bazy danych • klasa Students – dodawanie, pobieranie, modyfikacja i usuwanie studentów. Znajdują się tu metody pozyskujące wszelkie potrzebne informacje o studentach, na przykład interesujące ich zespoły, w ramach których chcieliby realizować pracę dyplomową. Klasa umożliwia również wyszukiwanie studentów według różnych kryteriów, na przykład wydziału, kierunku na jakim studiują oraz promotora, u którego realizują swoją pracę (metoda searchStudents()). • klasa Directors – metody służące pobieraniu oraz usuwaniu z bazy danych kierowników zakładów. Również tutaj możliwe jest wyszukiwanie kierowników według różnych kryteriów, na przykład metoda viewDirectors() – pobiera wszystkich kierowników, metoda viewDirectorsInInstitute() – pobiera kierowników z danego instytutu etc. • klasa Promoters – metody służące dodawaniu, pobieraniu, modyfikacji i usuwaniu promotorów z bazy danych • klasa Thesises – metody służące dodawaniu propozycji tematów prac dyplomowych, ich usuwaniu i modyfikacji, a także pobieraniu z bazy danych. Znajdują się tutaj wszelkie metody realizujące operacje wykonywane na pracy dyplomowej, takie jak dodawanie zespołów kandydujących do pisania danej pracy, akceptowanie zespołu, czy też jego odrzucanie, a także komentowanie propozycji pracy dyplomowej przez kierownika zakładu. • klasa Faculties – dodawanie, pobieranie, modyfikacja, usuwanie wydziałów • klasa Subjects – dodawanie, pobieranie, modyfikacja, usuwanie kierunków studiów • klasa Institutes – dodawanie, pobieranie, modyfikacja, usuwanie instytutów • klasa Laboratories – dodawanie, pobieranie, modyfikacja, usuwanie zakładów • klasa Groups – dodawanie, pobieranie, modyfikacja, usuwanie oraz wszelkie metody służące operacjom na zespołach realizujących prace dyplomowe. Znajdują się tu między innymi metody umożliwiające wysłanie przez zespół zaproszenia do innego studenta, przeglądanie wysłanych zaproszeń, przeglądanie kandydujących do zespołu studentów, ich akceptację, opuszczenie zespołu przez studenta etc. • klasa Passwords – wykorzystywana do logowania i zmiany hasła użytkownika Wszelkie operacje zmieniające obiekty bazy danych wykonywane są w tranzakcjach umożliwiających w razie niepowodzenia odtworzenie jej spójnego stanu. 6.1.3 Klasy wyjątków W przypadku niepowodzenia przy wprowadzaniu zmiany w bazie danych, bądś też pobieraniu z niej informacji zwracane są odpowiednie wyjątki. Głównym wyjątkiem jest DatabaseException – wszystkie inne użyte wyjątki dziedziczą po tej klasie: • NoSuchUserException – zwracany, gdy podany przy logowaniu użytkownik nie istnieje • InvalidPasswordException – zwracany, gdy podane przy logowaniu hasło jest błędne • PasswordException – zwracany, gdy nie uda się ustawić nowego hasła • NoSuchFacultyException – zwracany, gdy nie znaleziono danego wydziału • NoSuchSubjectException – zwracany, gdy nie znaleziono danego kierunku studiów • NoSuchInstituteException – zwracany, gdy nie znaleziono danego instytutu • NoSuchLaboratoryException – zwracany, gdy nie znaleziono danego zakładu • NoSuchWorkerException – zwracany, gdy nie znaleziono danego pracownika • NoSuchStudentException – zwracany, gdy nie znaleziono danego studenta 6.2. Kontroler 25 • NoSuchGroupException – zwracany, gdy nie znaleziono danego zespołu studentów • NoSuchThesisException – zwracany, gdy nie znaleziono danej pracy • StudentAlreadyHasGroupException – zwracany, gdy student próbuje przyłączyć się do zespołu, podczas gdy ma już przypisany inny • StudentAlreadyHasThesisException – zwracany, gdy zespołowi (studentowi) próbuje się przypisać pracę, podczas gdy ma on już przypisaną inną • ThesisIsLockedException – zwracany, gdy praca zespołu jest zablokowana, a ktoś próbuje wprowadzić do niego zmiany • ThesisLimitException – zwracany, gdy promotor próbuje zaproponować więcej tematów prac, niż mu przydzielono 6.1.4 Klasy pomocnicze Klasy używane jako pomocnicze dla innych, realizujących dostęp do bazy danych, umieszczono w pakiecie diploman.database.utils. Znajduje się tam klasa HibernateUtil, w której znajdują się metody odpowiedzialne za: • dostarczenie sesji Hibernate innym metodom, • dodawanie kont użytkowników, • generowanie przykładowych danych na użytek testów 6.2 Kontroler Rolę kontrolera pełni open source’owy framework Struts 2. Najważniejszym jego elementem jest plik struts.xml, w którym to przechowywana jest konfiguracja kontrolera, w ramach której opisane są możliwe do wykonania przez użytkownika akcje. Akcje pogrupowane są w pakiety (ang. package). Każdy pakiet odpowiada roli, jaką użytkownik może pełnić – podział taki ułatwia zabezpieczenie przed nieautoryzowanym dostępem do funkcji systemu. 6.2.1 Interceptory Zabezpieczenie przed niauprawnionym wykonaniem akcji wiąże się ze specjalnymi obiektami pośredniczącymi – interceptorami. Są to obiekty wywoływane jeden za drugim w ustalonej kolejności za każdym razem, gdy wykonywana jest dana akcja. Interceptory pozwalają na przykład sprawdzić, czy dane dostarczane do akcji są poprawne i w przypadku stwierdzenia błędów przerwać jej wykonywanie. Interceptory mogą być wywoływane zarówno przed, jak i po wykonaniu danej akcji. W systemie Diploman użyto tego mechanizmu w celu ochrony przed nieuprawnionym dostępem. Informacje o użytych interceptorach i ich konfiguracje przechowywane są w pliku struts.xml, natomiast odpowiednie klasy definiujące działanie samych interceptorów umieszczone są w pakiecie diploman.interceptors. Interceptor SecureInterceptor sprawdza, czy użytkownik wykonujący daną akcję jest zalogowany i czy ma on przypisaną rolę uprawniającą go do jej wykonania. I tak na przykład użytkownik niezalogowany (pakiet public) może jedynie zalogować się do systemu. W przypadku próby wykonania jakiejkolwiek innej akcji, zostanie on przekierowany do strony logowania. Role, jakie użytkownik może pełnić w systemie to: administrator, prodziekan, kierownik zakładu, promotor oraz student, przy czym użytkownik nie będący studentem lub administratorem może posiadać więcej niż jedną rolę (to znaczy prodziekan może być jednocześnie na przykład promotorem i kierownikiem zakładu). 26 Opis implementacji 6.2.2 Filtry Kwestią mniej ważną, ale również istotną jest zabezpieczenie systemu przed możliwością bezpośredniego podglądu zawartości plików *.vm poprzez wpisanie w przeglądarce odpowiednio spreparowanego URLa (ang. Uniform Resource Locator ). Nie stanowiłoby to bezpośredniego zagrożenia dla systemu, jednak umożliwiłoby zdobycie potencjalnie niebezpiecznej wiedzy o sposobie pobierania danych przez warstwę widoku. Zabezpieczeniem przed tym procederem może być odpowiednie użycie filtrów. Filtr to obiekt tworzony w odpowiedzi na żądanie zasobu w aplikacji webowej. Zasób może być dynamiczny, na przykład serwlet Java lub strony JSP (ang. JavaServer Pages), bądź też statyczny, jak na przykład strona HTML lub obrazek. Filtr przechwytuje żądanie, dzięki czemu może je sprawdzić i w razie potrzeby zmodyfikować odpowiedź serwera. Używane w systemie filtry zdefiniowane są w pliku web.xml. Klasy filtrów przechowywane są w pakiecie diploman.filters. Znajduje się tam klasa VelocityFilter odpowiedzialna za przekierowanie użytkownika do strony błędu w przypadku próby odczytania pliku *.vm. 6.2.3 Akcje Każdej akcji, jaką może wykonać użytkownik przypisana jest klasa ją obsługująca. Klasa taka dostarcza do widoku wszelkie dane pobrane z bazy przez warstwę modelu, a także, w przypadku gdy klasa ta obsługuje formularz, odpowiada za walidację wprowadzanych przez użytkownika danych oraz wywołanie odpowiednich metod modyfikujących bazę danych. Klasy obsługujące akcje pogrupowane są w analogiczny sposób, w jaki pogrupowane są akcje w pliku struts.xml. Umieszczone są one w pakiecie diploman.actions, a w poszczególnych pakietach: diploman.actions.administrator, diploman.actions.kierownik, diploman.actions.prodziekan, diploman.actions.promotor, diploman.actions.student przechowywane są klasy obsługujące akcje przypisane konkretnym rolom. Każda taka klasa dziedziczy po klasie ActionSupport, choć nie jest to obowiązkowe. Daje to jednak możliwość nie tylko dostarczenia warstwie widoku danych do wyświetlenia, ale również, poprzez przedefiniowywanie funkcji execute() oraz validate() wykonywanie dowolnych innych metod, na przykład modyfikujących bazę danych, oraz sprawdzanie poprawności wprowadzonych przez użytkownika danych. Klasy obsługujące akcje korzystają z kilku klas znajdujących się w pakiecie diploman.utils. Znajdują się tam klasy pomocnicze, grupujące metody służące na przykład do operacji na plikach, czy też wysyłające e-maile do użytkowników. W klasie DiplomanConstants zdefiniowane są stałe ILLEGAL INT oraz EMPTY STRING używane w całym projekcie do obsługi formularzy. 6.3 Widok Warstwa widoku realizowana jest przy pomocy open source’owego procesora szablonów Velocity rozwijanego pod patronatem fundacji Apache. Umożliwia on budowanie szablonów stron, które uzupełnia się treścią na podstawie danych dostarczanych przez inne warstwy. Pomocne okazały się również oferowane przez Struts 2 w ramach szablonów Velocity tagi upraszczające m.in. budowanie formularzy. Przykładem takiego szablonu jest plik login.vm zawierający formularz służący do logowania się do systemu: #parse("/diploman/common/headers/header.vm") 6.3. Widok 27 #sactionerror() #sform () #stextfield ("label=Login" "name=login" "maxlength=100") #spassword ("label=Hasło" "name=password" "maxlength=100") #ssubmit ("name=submit" "value=Zaloguj") #end #include("/diploman/common/footers/footer.vm") Znak specjalny „#” oznacza początek dyrektywy Velocity. Dyrektywy zaczynające się od „#s” oznaczają dyrektywy Struts 2. Po przetworzeniu takiego szablonu wygenerowany zostaje plik zawierający klasyczne tagi html, takie jak <form></form>, <input ...> </input> itd. Automatycznie zostaną także wyświetlone błędy walidacji przy odpowiednich polach formularza oraz błędy akcji, na przykład w przypadku niepowodzenia jej wykonania. Poszczególne pliki z szablonami znajdują się w katalogu WebContent/diploman pogrupowane według ról użytkowników, dla jakich są przygotowane, na przykład WebContent/diploman/administrator zawiera szablony używane do wyświetlania stron przeznaczonych dla administratora systemu. Rozdział 7 Zapewnianie jakości Jakość tworzonego systemu musi być stale pod kontrolą. Nie można zakładać, że tworzone oprogramowanie jest wolne od błędów. Autorzy przeprowadzali systematycznie przeglądy kodu źródłowego oraz wykonali szereg testów. Metody te pozwoliły skutecznie zmniejszyć liczbę błędów. 7.1 Przeglądy kodu Przegląd kodu jest metodą systematycznego analizowania kodu źródłowego (pojedynczych funkcji programu) w celu znalezienia błędów. Przegląd musi być dokonywany przez osobę trzecią, która nie implementowała danej części systemu. Zmiana osób jest istotna ponieważ często osoba implementująca jakąś funkcję sama nie widzi swoich błędów – jej myślenie jest już „ukierunkowane” na wybrany przez siebie sposób realizacji danej funkcjonalności. Autorzy wzajemnie sprawdzali i analizowali kod źródłowy. Najczęstszą praktyką było przejrzenie kodu źródłowego przez dwóch programistów na prośbę trzeciej osoby. Inspekcje kodu źródłowego były dokonywane również przez jedną osobę podczas zapoznawania się z zaimplementowaną funkcją przed jej pierwszym użyciem. Przy znalezieniu wątpliwego miejsca w kodzie źródłowym (czy też niezrozumiałej logiki działania programu) wszyscy programiści analizowali potencjalny błąd. Przeglądy kodu okazały się bardzo owocną metodą wyszkiwania usterek. 7.2 Testy jednostkowe Testy jednostkowe to walidacja poprawności działania pojedynczych funkcji. Testowanie musi odbywać się równolegle z implementacją systemu. Szybciej znaleziony błąd jest prostszy (mniej czasochłonny) do wyeliminowania. Autorzy dokonywali testów metodą „białej skrzynki“. Oznacza to, że testując daną funkcję mieli dostęp do jej implementacji. Podczas testowania przydatnym narzędziem okazał się framework JUnit, pozwalający na profesjonalne przygotowanie testów. 7.3 Testy systemowe Testy miały na celu porównanie rzeczywistej funkcjonalności systemu z zadanymi wymaganiami. Autorzy testowali całe moduły pod kątem funkcjonalności, odpowiedniego przechwytywania błędów przez aplikację. Jako przykład poniżej został pokazany przykładowy scenariusz testowania funkcji zmiany hasła. 1. Zaloguj się do systemu, na przykład na konto administratora. 2. Nie uzupełnij wszystkich pól (lub zostaw wszystkie pola puste) i naciśnij przycisk Zmień hasło. Czy aplikacja pokazała informację o wymaganych polach? 29 30 Zapewnianie jakości 3. Wpisz stare hasło i nowe hasło (w polach Nowe hasło oraz Powtórz nowe hasło wpisz różne hasła). Czy po zatwierdzeniu system wyświetlił komunikat o niezgodnych hasłach? 4. Podaj nieprawidłowe stare hasło oraz wpisz dwukrotnie nowe hasło. Kliknij przycisk Zmień hasło. Czy aplikacja pokazała informację o nieprawidłowym starym haśle? 5. Wpisz poprawnie nowe oraz stare hasło. Czy system wyświetlił komunikat o pomyślnej zmianie hasła? 6. Wyloguj się z systemu. 7. Spróbuj zalogować się używając starego hasła. Czy udało się zalogować? 8. Zaloguj się używając nowego hasła. Czy udało się zalogować? 7.4 Testy akceptacyjne Testy akceptacyjne zostały przeprowadzone w obecności promotora. Miały na celu ukazanie i zaakceptowanie danej funkcjonalności. Rozdział 8 Zarządzanie wersjami Podczas prac implementacyjnych do zarządzania kolejnymi wersjami systemu wykorzystano system kontroli wersji Subversion, znany również jako SVN. System kontroli wersji służy do śledzenia zmian w kodzie źródłowym i pomocy przy łączeniu oraz wprowadzaniu zmian, dokonywanych przez wiele osób w różnych momentach. Można wyróżnić systemy kontroli wersji scentralizowane, oparte o architekturę klient-serwer oraz rozproszone, oparte o architekturę P2P. Podczas implementacji wykorzystano pierwszy z wymienionych rodzajów systemu, w którym istnieje jedno centralne repozytorium, z którym użytkownicy synchronizują swoje zmiany. Z różnych narzędzi do zarządzania wersjami można wymienić RCS, CVS oraz SVN, który jest najbardziej rozbudowany ze wszystkich wymienionych. Subversion oferuje szereg udogodnień, takich jak atomowe transakcje, wersjonowanie zmian nazwy pliku, położenia w katalogach oraz jego kopii. Bardzo przydatną funkcją jest możliwość przesyłania różnic w plikach od klienta do serwera i odwrotnie. SVN rozprowadzany jest na zasadzie open source. Do łatwego korzystania z SVN wykorzystano okienkowego klienta TortoiseSVN w wersji 1.4.3, pobranego ze strony http://tortoisesvn.tigris.org/. Jest on rozprowadzany na licencji GNU i przeznaczony dla systemu operacyjnego Windows. Z jego zalet należy wymienić natychmiastowe informowanie użytkownika, które pliki lub foldery zostały zmienione i w związku z tym należy je wysłać do repozytorium w celu aktualizacji wersji. Ponadto TortoiseSVN wspiera znajdowanie różnic w plikach i ich łączenie. Projekt umieszczono w repozytorium na serwerze https://opensvn.csie.org/. Dla każdego programisty zostało stworzone osobne konto. Dostęp do projektu był chroniony hasłem. 31 Rozdział 9 Weryfikacja osiągnięcia celów biznesowych Przyczyną decyzji o budowie systemu były trudności, jakie towarzyszyły każdego roku podczas wydawania i przydzielania tematów prac dyplomowych. Za główny cel postawiono zbudowanie systemu, który ułatwiłby pracownikom wybór promotorów, zbieranie propozycji tematów prac i ich wydawanie studentom oraz komunikacje pomiędzy osobami uczestniczącymi w tym procesie. Studenci mieliby łatwiejszy dostęp do listy tematów, informacji o zakresie prac oraz aktualnych informacji o dostępności poszczególnych tematów. O sukcesie przedsięwzięcia zdecyduje fakt, czy zbudowany system rozwiąże problemy, które dotychczas napotykano. Głównym wyznacznikiem osiągnięcia wytyczonych celów będzie powszechne używanie systemu przez pracowników i studentów, o czym zadecyduje jego rzeczywista użyteczność, na którą składają się zarówno jego możliwości jak również przyjazny interfejs dla użytkownika. Weryfikacja osiągnięcia celów zostanie dokonana za pomocą anonimowych ankiet. Badanie to zostanie przeprowadzone zarówno wśród pracowników, jak również studentów studiów II stopnia, którzy korzystali z systemu podczas wyboru prac inżynierskich oraz magisterskich. Wszystkie osoby zostaną zapytane o wygodę korzystania z systemu – czy interfejs jest przejrzysty, czy łatwo można odnaleźć interesujące nas dane, czy są one czytelne i zrozumiałe, czy szybkość działania systemu jest wystarczająca oraz czy funkcje systemu spełniają swoją rolę (jeśli nie to które funkcje i dlaczego). Zostanie również zadane pytanie o ogólne wrażenie o systemie oraz czy spełnił on oczekiwania użytkowników. Odpowiedzi na postawione pytania będą miały formę zamkniętą (odpowiedzi będą typu „Tak, bardzo”, „Tak, wystarczająco”, „Nie, niewystarczająco”, „Nie, zupełnie nie spełnia swoich funkcji”). 33 Rozdział 10 Zebrane doświadczenia Realizacja projektu DiploMan-1 wymagała od ich twórców dobrego zaznajomienia się z procesami biznesowymi zachodzącymi w świecie rzeczywistym na uczelni. Wymagało to między innymi przeanalizowania regulaminu studiów pod kątem interesujących procedur i wyekstraktowania z niego najważniejszych dla systemu informacji. Po zapoznaniu się z naturą problemu bardzo ważną decyzją jaką należało podjąć był wybór architektury systemu. Zorganizowano w tym celu spotkanie z grupą ekspertów doświadczonych w projektowaniu, implementowaniu i wdrażaniu podobnych systemów, podczas którego podjęto decyzję co do architektury. Rozwiązania dobrane zostały tak, by spełnić wymagania funkcjonalne oraz pozafunkcjonalne. Należy tutaj zauważyć, iż autorzy pracy nie mieli wcześniej dużego doświadczenia w budowaniu aplikacji internetowych wykorzystujących koncepcję MVC. W związku z tym ważnym kryterium była szacowana pracochłonność poznania nowych technologii. Mimo uwzględnienia tego faktu czas poświęcony na nauczenie się wykorzystywanych narzędzi w stopniu pozwalającym na rozpoczęcie prac nad system przekroczył przewidywaną długość i wyniósł około 15% całego czasu poświęconego projektowi. Pokazało to, jak ważny i często niedoszacowany bywa początkowy wkład pracy. Szczegółowe dane na temat pracochłonności przedstawia tabela 10.1. programowanie warstwy modelu programowanie warstwy kontrolera programowanie warstwy widoku projektowanie systemu nauka technologii 30% 20% 18% 17% 15% Tablica 10.1: Pracochłonność poszczególnych etapów tworzenia systemu Jak widać najbardziej pracochłonne okazało się zaimplementowanie warstwy modelu i to pomimo ułatwienia jakim było użycie frameworku Hibernate. Napisano 12480 linii kodu zawartych w 160 plikach. Są to, jak na skalę projektu, liczby dość duże. Przyjęta organizacja plików źródłowych i konfiguracyjnych pozwoliła jednak na zachowanie porządku, umożliwiając łatwą orientację w kodzie i zapewniając lepszą modyfikowalność. Bardzo dobrym rozwiązaniem był wybór MVC jako wzorca projektowego. Umożliwiło to w miarę sprawną równoległą pracę trzem programistom, gdzie zmiany wprowadzane przez jedną osobę, pracującą nad konkretną warstwą aplikacji wpływały minimalnie na pracę pozostałych. Pomimo swoich zalet połączenie Struts 2 z Velocity nie okazało się szczególnie popularnym rozwiązaniem w Internecie, co wiązało się z pewnymi problemami ze znalezieniem odpowiednich 35 36 Zebrane doświadczenia tutoriali i przykładów. Na szczęście dokumentacja tych projektów jest na tyle dobra, że pozwala na rozwiązanie większości pojawiających się problemów bez dodatkowej pomocy. Choć poznanie nowych technologii zajęło stosunkowo dużo czasu, ich wybór okazał się bardzo trafiony. Hibernate, dzięki obiektowości jaką zapewnił w warstwie modelu, znacząco przyśpieszył i ułatwił prace nad projektem. Struts 2 ponad standardowe akcje zaoferował prosty, ale nader funkcjonalny mechanizm interceptorów. Natomiast procesor szablonów Velocity sprawia wrażenie o wiele bardziej przejrzystego i szybszego w użyciu niż konkurencyjne JSP. Praca w zespole wymagała przygotowania nie tylko z dziedziny zarządzania projektem informatycznym, ale także komunikacji interpersonalnej i zarządzania jako takiego. Projekt DiploMan-1 wzbogacił autorów w wiedzę i doświadczenie potrzebne przy projektowaniu, implementowaniu i wdrażaniu systemów informatycznych. Dodatek A Wkład poszczególnych osób do przedsięwzięcia Robert Przybylski zajmował się przede wszystkim projektowaniem warstwy widoku i implementowaniem metod pobierających potrzebne informacje z bazy danych, a także planowaniem akcji użytkownika, zabezpieczeniem systemu oraz przekrojową kontrolą spójności systemu. Paweł Walczuk w ramach prac zajmował się głównie warstwą modelu i kontrolera, a także w niektórych przypadkach warstwą widoku. Zajmował się funkcjami dla administratora systemu, prodziekana, jak również dla kierowników zakładów i promotorów. Krzysztof Kaszkowiak zajął się głównie implementacją dostępu do bazy danych i funkcjami operującymi na niej. Zrealizował również logowanie użytkowników oraz generowanie i przechowywanie plików PDF. Bardziej szczegółowe informacje na temat zakresu realizowanych prac zostały przedstawione w tabeli A.1. 37 38 Wkład poszczególnych osób do przedsięwzięcia Czynność K. Kaszkowiak R. Przybylski Analiza wymagań X X Stworzenie przypadków użycia X Projekt schematu bazy danych X X Stworzenie schematu strony Przeniesienie bazy danych X (Hibernate Annotations) Konfiguracja Hibernate X Skład pracy dyplomowej– LATEX X Zaplanowanie podziału akcji X na pakiety w pliku struts.xml X Użycie interceptorów Generowanie przykładowych X danych Użycie filtra dla zwiększenia X bezpieczeństwa aplikacji Implementacja poszczególnych funkcjonalności Logowanie się użytkowników MK WK do systemu Modyfikacja szablonu pracy MWK przez administratora Generowanie plików PDF MWK Wydziały i kierunki MWK Jednostki i kierownicy MWK Zestawienie pracowników MWK administratora Dodawanie studentów MWK z pliku .csv Zestawienie studentów MWK administratora Zestawienie pracowników M kierownika Dodawanie i usuwanie W promotorów przez kierownika Modyfikowanie danych promotora przez kierownika Zestawienie promotorów MWK kierownika Akceptowanie i odrzucanie propozycji tematów W przez kierownika Komentowanie propozycji W tematów przez kierownika Zestawienie propozycji MWK tematów prac kierownika Zestawienie prac prodziekana Zestawienie studentów MWK prodziekana Dodawanie propozycji MWK tematu pracy promotora Modyfikowanie propozycji tematu pracy promotora Zestawienie propozycji MWK tematów prac promotora Zestawienie prac promotora MWK Zmiana hasła MK WK P. Walczuk X X X X MWK MWK WK MK MWK MWK MK MK MK MWK MWK MWK MK Tablica A.1: Wkład poszczególnych osób do przedsięwzięcia. Legenda: M – model, W – widok, K – kontroler Dodatek B Opinia klienta dr hab. inż. Jerzy Nawrocki, prof. nadzw. Poznań, 2. lutego 2008 r. Prodziekan ds. kształcenia Wydział Informatyki i Zarządzania Politechnika Poznańska Opinia klienta o systemie DiploMan-1 System DiploMan-1 w obecnej wersji oferuje funkcjonalność wystarczającą do osiągnięcia podstawowego celu, jakim było uporządkowanie procesu zbierania ofert tematów prac dyplomowych od pracowników naukowo-dydaktycznych i wspomaganie „zapisywania” się studentów na poszczególne prace. System umożliwia autoryzowaną współpracę reprezentantów dziekanatu, kierowników katedr/zakładów, potencjalnych promotorów prac oraz studentów. W wyniku działania zaprezentowanej w pracy wersji systemu DiploMan powstaje strona internetowa zawierająca dla danego kierunku studiów wykaz wszystkich tematów prac dyplomowych na dany rok wraz z podpiętymi pod te tematy kartami prac. Jest to – z punktu widzenia dziekanatu – ogromne usprawnienie. Niestety, system DiploMan-1 nie został jeszcze wdrożony więc trudno jest go ostatecznie ocenić. Jego wdrożenie (czyli pierwsze praktyczne wykorzystanie) jest przewidziane na semestr letni 2007/08, kiedy to uruchomiony zostanie proces zbierania tematów prac inżynierskich na rok 2008/09. Autorzy systemu DiloMan zadeklarowali już swój udział we wdrożeniu. Zrealizowana funkcjonalność, którą miałem okazję obejrzeć w działaniu, oraz złożona deklaracja współpracy przy wdrożeniu stanowią dla mnie wystarczającą gwarancję osiągnięcia zamierzonego celu biznesowego, o którym wspomniałem na początku. Z dotychczasowej współpracy ze studentami jestem bardzo zadowolony. 39 Dodatek C Słownik pojęć i skrótów AiZ – makrokierunek „Automatyka i zarządzanie” na Politechnice Poznańskiej Aktor – użytkownik systemu, który odpowiada rzeczywistej osobie w realnym świecie Architektura Klient/serwer – asymetryczna architektura oprogramowania umożliwiająca rozdzielenie funkcjonalności pomiędzy stronę klienta i serwera CVS (ang. Concurrent Versions System) – popularny system kontroli wersji Framework – zbiór narzędzi, programów i bibliotek kodu źródłowego wspomagających tworzenie, rozwój i testowanie aplikacji GNU – licencja wolnego oprogramowania Implementacja – przekształcenie abstrakcyjnego opisu systemu informatycznego w konkretny, działający program komputerowy INF – kierunek „Informatyka” na Politechnice Poznańskiej Interfejs – oprogramowanie pozwalające na interakcję między aplikacją i użytkownikiem Obiekt biznesowy – odpowiednik tradycyjnego dokumentu Open Source – otwarte oprogramowanie Proces biznesowy – powiązane ze sobą czynności , które wykonywane są przez określone osoby Przypadek użycia – sposób funkcjonowania systemu; wydzielona spośród innych funkcja, dostępna dla użytkownika, pozwalająca osiągnąć jakiś ważny z jego punktu widzenia cel P2P (ang. peer-to-peer ) – model komunikacji w sieci komputerowej, który gwarantuje obydwu stronom równorzędne prawa (w przeciwieństwie do modelu klient-serwer) RCS (ang. Revision Control System) – system kontroli wersji plików tekstowych Repozytorium – miejsce uporządkowanego przechowywania dokumentów Scenariusz operacyjny – opis sposobu przepływu informacji pomiędzy aktorami SVN (Subversion) – popularny system kontroli wersji System kontroli wersji – system służący do śledzenia zmian głównie w kodzie źródłowym oraz pomocy programistom w łączeniu i modyfikacji zmian dokonanych przez wiele osób w różnych momentach Warstwa aplikacji – wydzielona część kodu programu odpowiedzialna za realizację zadań określonego typu Wymagania funkcjonalne – usługi jakie ma oferować system, jak ma reagować na określone dane wejściowe oraz jak ma się zachowywać w określonych sytuacjach Wymagania pozafunkcjonalne – kryteria jakości systemu 41 Dodatek D Kod źródłowy systemu (CD) Na dołączonej płycie CD znajduje się kompletny kod źródłowy systemu. 43 Literatura [1] Wikipedia. [on-line] http://en.wikipedia.org. [2] Apache Software Foundation. Apache Struts 2 Documentation. [on-line] http://struts.apache.org/2.x/docs/home.html. [3] Apache Software Foundation. Strona projektu Velocity. [on-line] http://velocity.apache.org/. [4] Apache Software Foundation. Struts 2 Core 2.0.11 API. [on-line] http://struts.apache.org/2.x/struts2-core/apidocs/index.html. [5] Apache Software Foundation. The Velocity User Guide. [on-line] http://velocity.apache.org/engine/releases/velocity-1.5/user-guide.html. [6] Apache Software Foundation. Introduction to Velocity. [on-line] http://portals.apache.org/jetspeed-1/tutorial/7/velocity.html, 2005. [7] JavaWorld.com Geir Magnusson Jr. Start up the Velocity Template Engine. [on-line] http://www.javaworld.com/javaworld/jw-12-2001/jw-1228-velocity.html, 2001. [8] Red Hat Middleware. Introduction to Hibernate. [on-line] http://www.hibernate.org/hib_docs/v3/reference/en/html/tutorial.html. [9] RoseIndia. Struts 2 Tutorial. [on-line] http://www.roseindia.net/struts/struts2/. [10] Marcin Staniszczak. Struts – aplikacje internetowe w Javie. [on-line] http://serwis. magazynyinternetowe.pl/artykul/679,1,580,struts_-_aplikacje_internetowe_w_javie.html, 2007. 45 c 2008 Krzysztof Kaszkowiak, Robert Przybylski, Paweł Walczuk Instytut Informatyki, Wydział Informatyki i Zarządzania Politechnika Poznańska Skład przy użyciu systemu LATEX. BibTEX: @mastersthesis{ key, author = "Krzysztof Kaszkowiak \and Robert Przybylski \and Paweł Walczuk ", title = "{DiploMan-1 -- Internetowy system zarządzania pracami dyplomowymi}", school = "Poznan University of Technology", address = "Pozna{\’n}, Poland", year = "2008", }