Praca dyplomowa na studiach pierwszego stopnia promotor: mgr inż. J . Stankiewicz
description
Transcript of Praca dyplomowa na studiach pierwszego stopnia promotor: mgr inż. J . Stankiewicz
Analiza, projekt i implementacja wybranych aspektów systemu wsparcia obsługi świadczeń ubezpieczeniowych
Praca dyplomowa na studiach pierwszego stopnia promotor: mgr inż. J. Stankiewicz
Warszawa, 22 maja 2013 r.
Agenda•Cel i zakres pracy•Główne zadania realizowane przez system
•Użytkownicy systemu•Opis modelu systemu•Architektura systemu•Projekt systemu•Testowanie•Dalszy rozwój systemu•Wnioski
Cel i zakres pracy
•Wykonanie analizy i projektu, jak również napisanie kodu aplikacji realizującej:▫proces przyjęcia zgłoszenia
świadczenia ubezpieczeniowego, oraz ▫podprocesy związane z zarządzaniem
danymi słownikowymi oraz funkcjami raportowymi
Główne zadania realizowane przez system• Zadania realizowane przez Moduł Zgłoszenia:
▫ Wyszukanie zgłoszenia i jego podgląd▫ Zarejestrowanie zgłoszenia świadczenia:
Wstępne informacje o świadczeniu Informacje o zdarzeniu – miejsce i data wystąpienia zdarzenia Informacje o zgłaszającym Wyszukanie ubezpieczonego, polisy i ryzyka ubezpieczeniowego w systemie
produktowym Zarejestrowanie dyspozycji wypłaty Wskazanie jednostki likwidacji Wskazanie dokumentów wymaganych Zapewnienie podglądu szczegółów zgłoszenia Zapisanie zgłoszenia
▫ Wygenerowanie druku zgłoszenia świadczenia w formacie PDF▫ Wysłanie wiadomości SMS lub email z potwierdzeniem zgłoszenia świadczenia
• Zadania realizowane przez Moduł Administracyjny:▫ Zarządzanie słownikiem jednostek likwidacji▫ Zarządzanie słownikiem form zgłoszenia
• Zadania realizowane przez Moduł Raportowy:• Generowanie raportów operacyjnych
Użytkownicy systemu
• Rejestrator – użytkownik komunikujący się bezpośrednio z Klientem zgłaszającym świadczenie. Na podstawie przeprowadzonego wywiadu jest odpowiedzialny za wprowadzenie danych zgłoszenia ubezpieczeniowego
• Administrator – użytkownik odpowiedzialny za zarządzanie danymi słownikowymi
• Manager – użytkownik posiadający uprawnienie do generowania raportów operacyjnych na temat zgłoszeń świadczeń
Wymagania biznesowe – przykładowe wymaganie
Id WF-08Nazwa Wyszukanie ubezpieczonego, polisy i ryzykaRola RejestratorOpis Użytkownik powinien mieć możliwość podczas rejestracji
zgłoszenia wyszukania ubezpieczonego spełniającego wprowadzone kryteria wyszukiwania.
Po wskazaniu przez użytkownika ubezpieczonego, system powinien wyświetlić posiadane przez niego polisy.
Wskazanie polisy powinno spowodować wyszukanie i wyświetlenie ryzyk wykupionych przez ubezpieczonego na polisie.
Wskazanie przez użytkownika ryzyka powinno przypisać do zgłoszenia pokrycie ubezpieczeniowe i wyświetlenie szczegółowych informacji.
Model systemu – Przykładowy diagram przypadków użycia
uc Rejestrator
Rejestrator
(from Diagram Aktorów) Zarejestruj zgłoszenie
Wprowadź wstępne informacje o
zgłoszeniu
Wprowadź dane zdarzenia
Wprowadź dane zgłaszjącego
Określ pokrycie ubezpieczeniowe
Wprowadź dyspozycję wypłaty
Uzupełnij dane podsumowujące
Wyświetl wyszukiwarkę
zgłoszeń
Przeglądaj zgłoszenie
Wygeneruj druk zgłoszenia
(from Ogólny)
Zmień hasło
«extend»
«extend»
«extend»
«include»«include»
«include»
«include»
«include»
«include»
Model systemu – Przykładowy przypadek użycia
Nazwa Uzupełnij dane podsumowująceCel Wprowadzenie danych podsumowującychWarunek początkowy Rejestrator jest zalogowany do Systemu
Zdarzenie inicjujące Rejestrator na ekranie <ZGL_SCR_09> Dyspozycja wciska przycisk przejścia do kolejnej zakładki
Główny scenariusz powodzenia
1. System wyświetla ekran <ZGL_SCR_10> Zakończenie2. Rejestrator określa jednostkę likwidacji świadczenia3. Rejestrator określa sposób potwierdzenia zgłoszenia jako Email4. Rejestrator wciska przycisk zakończenia rejestracji zgłoszenia5. System wysyła wiadomość email zgodnie z wymaganiem FRQ_05 Wiadomość email6. System zapisuje dane wprowadzone na ekranie7. System nadaje zgłoszeniu stan „Zamknięte”8. System usuwa z sesji użytkownika numer zgłoszenia
i uruchamia przypadek użycia <ZGL_SUC_03> Wyświetl wyszukiwarkę zgłoszeńScenariusze alternatywne
3a. Rejestrator określa sposób potwierdzenia zgłoszenia jako SMS3a1. Rejestrator wciska przycisk zakończenia rejestracji zgłoszenia3a2. System wysyła email zgodnie z wymaganiem FRQ_06 Wiadomość SMS3a3. Powrót do kroku 6 głównego scenariusza powodzenia
Punkty rozszerzenia *a. Rejestrator wciska przycisk podglądu podsumowania zgłoszenia*a1. System wyświetla ekran <ZGL_SCR_11> Podsumowanie*b. Rejestrator wciska przycisk generowania druku zgłoszenia*b1. System uruchamia przypadek użycia <ZGL_SUC_14> Wygeneruj druk zgłoszenia
Model systemu – Przykładowy diagram sekwencji
sd Wstęp
Rejestrator
(from Diagram Aktorów)
Model logiczny::Zgloszenie
«Display»
Wstęp
(from GUI->SUC)
«dictionary»
Modellogiczny::FormaZgloszenia
«dictionary»
Modellogiczny::RodzajZdarzenia
«create»
getNotificationSourceList()
getClaimType()
processSubmit()
setNotificationForm()
setClaimType()
setDescription()
wygenerujNumerZgloszenia()
Model systemu – Diagram klas class Model logiczny
Uzytkownik
- login: String- haslo: String- imie: String- nazwisko: String
+ zmienHaslo() : void
Uprawnienie
- rola: String
Zgloszenie
- opis: String- dataZgloszenia: Date- numerZgloszenia: Long- jednostkaLikwidacji: JednostkaLikwidacji- formaZgloszenia: FormaZgloszenia- rodzajZdarzenia: RodzajZdarzenia- sposobPotwierdzenia: String- status: String
+ zarejestrujZgloszenie() : void+ przegladajZgloszenie() : void+ wyszukajZgloszenie() : void+ zmodyfikujZgloszenie() : void+ ustawStatusZgloszenia() : void+ wygenerujDrukZgloszenia() : void+ wyslijEmail() : void
Zglaszajacy
- imie: String- nazwisko: String- telefon: String- email: String
+ zapiszDaneZglaszajacego() : void+ zwalidujDaneZglaszajacego() : void
Zdarzenie
- dataZdarzenia: Date- krajZdarzenia: Kraj- miejscowoscZdarzenia: Miejscowosc- opisMiejscaZdarzenia: String
+ zapiszDaneZdarzenia() : void+ zwalidujDaneZdarzenia() : void
«dictionary»FormaZgloszenia
- nazwa: String- aktywnosc: boolean
+ dodajFormeZgloszenia() : void+ modyfikujFormeZgloszenia() : void
«dictionary»RodzajZdarzenia
- nazwa: String
«dictionary»Kraj
- nazwa: String
«dictionary»Miejscowosc
- nazwa: String
Ubezpieczony
- imie: String- nazwisko: String- plec: String- pesel: String
+ wyszukajUbezpieczonego() : void
Polisa
- numer: String- okresUbezpieczeniaOd: Date- okresUbezpieczeniaDo: Date- kodProduktu: String
+ wyszukajPolise() : void
Ryzyko
- nazwa: String- sumaUbezpieczenia: Float- procentSwiadczenia: Float
+ wyszukajRyzyko() : void
Dyspozycja
- sposobWyplaty: String- nrKontaAdres: String
+ zapiszDaneDyspozycji() : void+ zwalidujDaneDyzpozycji() : void
«dictionary»JednostkaLikwidacj i
- nazwa: String- aktywnosc: boolean
+ dodajJednostkeLikwidacji() : void+ modyfikujJednostkeLikwidacji() : void
Dokumenty
- nazwa: String0..* 0..*
1
0..*
1..* 1
1..*
1
0..*
1
1
0..*
1
1
1
0..*
1
0..*
0..* 1
1
1
1
1
0..*
1
1 1..*
Architektura systemu – założenia wstępne• Ogólna koncepcja: Aplikacja webowa• Język programowania: Java• Architektura 4-warstwowa:
▫Warstwa bazy danych: PostgreSQL 9.2▫Warstwa dostępu danych: Hibernate 4.1▫Warstwa logiki biznesowej: Spring 3.x▫Warstwa prezentacji: Java Server Pages
• Serwer aplikacji: JBoss 7.0• Bezpieczeństwo: Framework Spring Security 3.2.x• Raportowanie: JasperReports• Komunikacja z Klientem: Mail To SMS
Projekt systemu – Baza danych dm ERD
claimtype
«column»*PK id: integer name: varchar(50)
«PK»+ PK_claimtype(integer)
claim_unit
«column»*PK id: integer name: varchar(50) enabled: boolean
«PK»+ PK_claim_unit(integer)
claim
«column»*PK id: integer description: varchar(255) notificationdate: time with time zone accidentplacedescription: varchar(255) notificarfirstname: varchar(50) notificarlastname: varchar(100) notificartelephone: varchar(15)* claimnumber: varchar(255) FK idclaimtype: integer FK idnotificationsource: integer paymentmode: varchar(30) accountnumberaddress: varchar(30) FK idclaimunit: integer accidentdate: time with time zone FK idrisk: integer FK userlogin: varchar(20) systemdate: time with time zone FK idcountry: integer FK idcity: integer notificaremail: varchar(100) communication: varchar(20) status: varchar(1)
«PK»+ claim_pkey(integer)
«unique»+ claim_claimnumber_key(varchar)
«index»+ claim_claimnumber_key(varchar)
insured
«column»*PK id: integer firstname: varchar(50) lastname: varchar(100) sex: varchar(1) pesel: varchar(11)
«PK»+ insured_pkey(integer)
policy
«column»*PK id: integer number: varchar(10) durationfrom: time with time zone durationto: time with time zone productcode: varchar(5) FK idinsured: integer
«PK»+ policy_pkey(integer)
risk
«column»*PK id: integer name: varchar(255) insuranceamount: real compensationpercentage: real FK idpolicy: integer FK idslrisk: integer
«PK»+ risk_pkey(integer)
sldocuments
«column»*PK id: integer name: varchar(100)
«PK»+ sldocuments_pkey(integer)
slrisk
«column»*PK id: integer name: varchar(30)
«PK»+ slrisk_pkey(integer)
risk_documents
«column»*pfK risk_id: integer*pfK documents_id: integer
«PK»+ risk_documents_pkey(integer, integer)
users
«column»*PK username: varchar(50)* password: varchar(50)* enabled: boolean id: integer userFirstName: varchar(255) userLastName: varchar(255)
«PK»+ users_pkey(varchar)
notification_source
«column»*PK id: integer name: varchar(30) enabled: boolean
«PK»+ form_pkey(integer)
authorities
«column»*FK username: varchar(50)* authority: varchar(50)
«FK»+ authorities_username_fkey(varchar)
country
«column»*PK id: integer name: varchar(50)
«PK»+ country_pkey(integer)
city
«column»*PK id: integer name: varchar(50)
«PK»+ PK_city(integer)
(username = username)
Projekt systemu - GUI
Projekt systemu – GUI - opis pólNazwa Typ
Format/Mapowanie
Wartość domyślna
Aktywność/Widoczność
Opis
Ekran zawiera sekcję nagłówkową: <ZGL_SCR_00> Menu
Data zgłoszenia Pole tekstowe[Zgloszenie].[dataZgloszenia]
Brak
Aktywne/Widoczne
Nieaktywne jeśli status zgłoszenia = Zamknięte
Data zgłoszenia
Data zdarzenia Pole tekstowe[Zdarzenie].[dataZdarzenia]
Brak
Aktywne/Widoczne
Nieaktywne jeśli status zgłoszenia = Zamknięte
Data zdarzenia
Kraj zdarzenia Lista rozwijana[Zdarzenie].[krajZdarzenia].[nazwa]
Polska
Aktywne/Widoczne
Nieaktywne jeśli status zgłoszenia = Zamknięte
Kraj w którym zdarzenie miało miejsce
Miejscowość zdarzenia
Lista rozwijana[Zdarzenie].[miejscowoscZdarzenia].[nazwa]
--wybierz--
Aktywne/Widoczne
Nieaktywne jeśli status zgłoszenia = Zamknięte
Kraj w której zdarzenie miało miejsce
Opis miejsca zdarzenia
Pole tekstowe[Zdarzenie].[opisMiejscaZdarzenia]
--wybierz--
Aktywne/Widoczne
Nieaktywne jeśli status zgłoszenia = Zamknięte
Opis miejsca zdarzenia
Dalej Przycisk N/d N/d Aktywne/WidocznePrzycisk inicjujący przejście na kolejną zakładkę
Projekt systemu – GUI - walidacje
Nazwa Wywołanie Walidacja AkcjaBrak daty zgłoszenia Wciśnięcie przycisku
DalejBrak wypełnionej Daty zgłoszenia
Wyświetlenie komunikatu walidującego: „Wprowadź datę zgłoszenia”
Brak daty zdarzenia Wciśnięcie przycisku Dalej
Brak wypełnionej Daty zdarzenia
Wyświetlenie komunikatu walidującego: „Wprowadź datę zdarzenia”
Data zgłoszenia wcześniejsza niż data zdarzenia
Wciśnięcie przycisku Dalej
Data zgłoszenia wcześniejsza niż data zdarzenia
Wyświetlenie komunikatu walidującego: „Data zgłoszenia nie może być wcześniejsza niż data zdarzenia”
Kraj zdarzenia Wciśnięcie przycisku Dalej
Brak wskazanego kraju zdarzenia
Wyświetlenie komunikatu walidującego: „Wybierz kraj zdarzenia”
Miejscowość zdarzenia
Wciśnięcie przycisku Dalej
Brak wskazanej miejscowości zdarzenia
Wyświetlenie komunikatu walidującego: „Wybierz miejscowość zdarzenia”
Projekt systemu – GUI - Funkcjonalności wywołane
Nazwa Typ Wywołanie DziałanieData zgłoszenia - kalendarz
Pole tekstowe Ustawienie kursora w polu „Data zgłoszenia”
Wyświetlenie pola kalendarza z domyślnie ustawioną datą bieżącą
Data zdarzenia - kalendarz
Pole tekstowe Ustawienie kursora w polu „Data zdarzenia”
Wyświetlenie pola kalendarza z domyślnie ustawioną datą bieżącą
Dalej Przycisk Wciśnięcie Wywołanie przypadku użycia <ZGL_SUC_08> Wprowadź dane zgłaszającego
Ekrany – Strona tytułowa
Ekrany – Wyszukiwarka spraw
Ekrany – Wstęp
Ekrany – Zdarzenie
Ekrany – Zgłaszający
Ekrany – Ubezpieczony i polisa
Ekrany – Wyszukiwarka polis
Ekrany – Dyspozycja
Ekrany – Zakończenie
Adobe Acrobat Document
Ekrany – Podsumowanie zgłoszenia
Ekrany – Jednostki likwidacji
Ekrany – Raporty
Adobe Acrobat Document
Testowanie – Założenia wstępneWeryfikacja aplikacji została przeprowadzona przy wykorzystaniu:
•Testów systemowych - testy realizowane w oparciu o scenariusze testowe
•Testów automatycznych - po każdej istotnej modyfikacji aplikacji uruchamiany test automatyczny nagrany za pomocą Selenium IDE
Testowanie – przykładowy scenariusz testowy
Cel testu Przetestowanie możliwości wysyłki wiadomości emailWarunki wstępne Użytkownik jest zalogowany do Systemu w roli
Rejestrator.
Użytkownik znajduje się w kontekście zgłoszeniaRezultat oczekiwany System wysyła wiadomość email do wskazanego
odbiorcyCzynności użytkownika Oczekiwany rezultat1. Użytkownik na zakładce Zgłaszający określa Imię,
Nazwisko i adres email Zgłaszającego. Następnie wciska przycisk „Dalej”
2. Użytkownik przechodzi na zakładkę „Zakończenie”, wybiera Jednostkę likwidacji i jako sposób potwierdzenia wybiera wariant SMS. Następnie wciska przycisk „Zakończ”
3. Użytkownik wybiera jako sposób potwierdzenia wybiera wariant Email. Następnie wciska przycisk „Zakończ”
4. Użytkownik sprawdza skrzynkę pocztową adresu email wprowadzonego dla zgłaszającego
1. System wyświetla zakładkę Dyspozycja
2. System wyświetla komunikat walidujący: „Brak wprowadzonego numeru telefonu dla Zgłaszającego”
3. System wysyła wiadomość email na wskazany adres mailowy. System przechodzi na zakładkę „Wyszukiwarka spraw”
4. W skrzynce znajduje się wiadomość email o parametrach:
a. Adres nadawcy: [email protected]
b. Temat: Potwierdzenie przyjęcia zgłoszenia
c. Treść: Dziękujemy za zgłoszenie świadczenia. Zgłoszenie zarejestrowano pod numerem: <numer zgłoszenia>
Testowanie – przykładowy scenariusz automatyczny nagrany w Selenium IDE
Możliwości dalszego rozwoju systemu
• Architektura systemu jest otwarta i pozwala na jego rozbudowanie o Moduł Likwidacji. W nowym module użytkownik o roli Likwidator miałby możliwość, w kontekście wybranego zgłoszenia:▫zarejestrowania świadczenia – wartość świadczenia
wyliczana automatycznie na podstawie sumy ubezpieczenia i procentu świadczenia w zależności od ryzyka ubezpieczeniowego,
▫zarejestrowania kosztów likwidacji,▫zarejestrowania decyzji wypłaty lub odmowy wypłaty
świadczenia,▫wygenerowania wypłaty i przekazania jej do realizacji,▫zarządzania wartością rezerw ubezpieczeniowych na
świadczenie oraz koszty likwidacji.
Wnioski• W pracy zostały zrealizowane wszystkie elementy wymienione
w zadaniu dyplomowym, tym samym aplikacja posiada pełną funkcjonalność pozwalającą na rejestrację zgłoszenia świadczenia.
• Etapem mającym największy wpływ na powodzenie projektu jest faza analizy i modelowania. Dekompozycja funkcji i ich opis w formie przypadków użycia, jak również szczegółowy i przemyślany model logiczny w formie diagramu klas, pozwoliły sprawnie przeprowadzić proces projektowania i developmentu.
• Sprecyzowane wymagania dały możliwość skupienia się na pisania kodu i uniknięciu modyfikacji.
• Na uwagę zasługuje wykorzystanie nowoczesnych technologii i architektury, w praktyce stosowanej podczas realizacji dużych projektów informatycznych realizowanych w Javie –Spring MVC i Hibernate. Dodatkowo jakość aplikacji podnosi wykorzystanie nowoczesnych bibliotek jQuery, Spring Security i Jasper Reports.
Dziękuję za uwagę.Proszę o pytania.