Diagram wdrożenia

Transkrypt

Diagram wdrożenia
Diagram wdrożenia
Zaprojektowana przez nas aplikacja bazuje na architekturze client-server. W tej architekturze
w komunikacji aplikacji klienckiej z bazą danych pośredniczy serwer aplikacji, który udostępnia
metody biznesowe.
Użyty model pozwala na odizolowanie logiki aplikacji od aplikacji klienckiej. Logika aplikacji
może być umieszczona na serwerze aplikacji oraz w bazie danych. Dzięki temu aplikacja
stanie się bezpieczniejsza oraz wydajniejsza, podzielenie aplikacji na warstwy pozwala też na prostsze
utrzymanie kodu. W naszym przypadku serwer aplikacji został zaimplementowany w technologii
JavaEE z wykorzystaniem kontenera serwletów Tomcat.
W przypadku większego systemu po stronie bazy danych należałoby użyć również proceduralnego
SQL, takiego jak PL/SQL lub T-SQL, co pozwoli na większą kontrolę danych oraz znaczne
zwiększenie wydajności. Przy tworzeniu naszej aplikacji wystarczył jednak MySQL.
Rys. 5.1 Diagram wdrożenia.
Diagram przypadków użycia
W naszej aplikacji występują 3 typy aktorów, są to:
•
•
•
Lekarze
Recepcjonistki
Klienci
Każdy z aktorów ma dostępne inne przypadki użycia w systemie, przy czym dla lekarzy
oraz recepcjonistek dostępna jest szersza wersja aplikacji, zaś dla klientów dostępna jest jedynie
wersja mobilna (znacznie uproszczona).
Przypadki użycia systemu można podzielić na 3 duże grupy:
•
•
•
Magazyn leków
Wydawanie recept
Rejestracja wizyt
Magazyn leków to grupa przypadków użycia, która jest dostępna tylko dla pracowników przychodni,
dlatego też te funkcjonalności znajdują się tylko w wersji aplikacji dla pracowników.
Funkcjonalność tego działu sprowadza się do listy leków w magazynie oraz możliwości
zamawiania/wydania ich.
Rys. 5.2 Diagram przypadków użycia dla magazynu leków.
Przeglądanie recept jest grupą przypadków użycia dostępną również jedynie dla pracowników
przychodni, dlatego też te funkcjonalności znajdują się tylko w wersji aplikacji dla pracowników.
Grupa ta agreguje listę recept, wydanie recepty klientowi przez recepcjonistkę, oraz wypisanie recepty
użytkownikowi przez lekarza.
Rys. 5.3 Diagram przypadków użycia dla wydawania recept.
Najbardziej skomplikowaną częścią w naszym programie pod względem funkcjonalności jest system
rejestracji wizyt. Występuje on w obu wersjach aplikacji klienckiej. W wersji dostępnej dla lekarza
oraz recepcjonistki dostępna jest szersza funkcjonalność. Klient za zaś ograniczone możliwości.
Funkcjonalności w ramach tej grupy to:
- przeglądanie listy wizyt (dla konkretnego pacjenta, lekarza, lub wszystkich)
- zatwierdzenie lub odwołanie istniejącej wizyty
- rejestracja nowej wizyty
Najciekawszym z tych przypadków użycia jest rejestracja wizyty, ponieważ przed dodaniem wizyty
logika aplikacji musi sprawdzić wolne terminy, sale oraz lekarzy. Następnie użytkownikowi
proponowany jest najbliższy termin, jednak z odpowiednim wyprzedzeniem czasowym.
Rys. 5.4 Diagram przypadków użycia dla rejestracji wizyt.
Diagram klas
Projektując oraz implementując naszą aplikację staraliśmy się bazować na popularnym wzorcu
projektowym MVP. Z tego powodu serwer aplikacji i aplikacja kliencka przeznaczona
dla pracowników były podzielone na warstwy. Aplikacja mobilna została wykonana w inny sposób
ze względu na specyfikę systemu android.
Najważniejszym elementem wszystkich wymienionych aplikacji jest model biznesowy danych.
Jest on wspólny dla wszystkich wersji, jednak wersja mobilna posiada zaimplementowaną jego
okrojoną wersję, ponieważ nie używa wszystkich encji biznesowych projektu.
Rys. 5.5 Diagram klas - model.
Kolejnym elementem wzorca projektowego jest prezenter. W naszym przypadku zawiera on serwisy
biznesowe komunikujące się bazą danych lub serwerem aplikacji. Zadaniem serwisów jest również
kontrola całej logiki biznesowej, spójności danych oraz bezpieczeństwa.
Do obsługi funkcjonalności dla tych encji biznesowych zostały zaimplementowane interfejsy
serwisów biznesowych. Encje zostały podzielone pomiędzy serwisy w taki sposób, żeby podział
odpowiadał powiązaniom oraz podziałem funkcjonalności.
Rys. 5.5 Diagram klas – prezenter – interfejs serwisów biznesowych.
Prezentowane funkcje operują na encjach biznesowych. Ważne jest jednak, że zwracają odpowiednio
uzupełnioną encję. Jeśli jest potrzeba zwracana jest pełna encja biznesowa wraz z odpowiednimi
powiązaniami. W przypadku pobierania wielu encji biznesowych postanowiliśmy zasugerować się
użyciem tak zwanych RowEntity i nie doczytać pełnych danych.
Na powyższym diagramie widać, że zaprojektowane interfejsy posiadają dla każdej ważnej encji
funkcje:
•
•
•
•
•
- GetAll – Pobiera wszystkie encje biznesowe, nie uzupełnia wszystkimi danymi. Np.
pobierając wszystkich lekarzy nie pobiera ich pokoi.
- GetById – Pobiera pełną encję biznesową o zadanym id. Uzupełnia wszystkie pod elementy.
Np. Pobierając wizytę pobiera również pacjenta, lekarza, oraz pokój. Nie pobiera adresu
pacjenta, ani jego kasy chorych.
- GetEmpty – Tworzy pustą encję biznesową. Metoda stworzona do inicjalizacji elementów po
stworzeniu obiektu za pomocą konstruktora.
- Update – Dodaje/Edytuje element bazy danych. Użycie tej funkcji w aplikacji klienckiej
wysyła zapytanie do serwera aplikacji.
- Delete - Usuwa element z bazy danych. Użycie tej funkcji w aplikacji klienckiej wysyła
zapytanie do serwera aplikacji.
Dalsza implementacja serwisów biznesowych jest już niezależna od stworzonych interfejsów i nie
musi być tak silnie kontrolowana. Najważniejsze, by cała logika działania znajdowała się właśnie w
serwisach.
Na poniższym diagramie widać przykład dodatkowych metod jakie mogą być dodane do serwisu
biznesowego. W tym przypadku są to metody do obsługi wizyt
Rys. 5.6 Diagram klas – prezenter – przykładowe dodatkowe metody serwisów dla wizyt.
Poniżej widać przykład dodatkowych metod klas dla recept. Prócz Pobrania recepty po identyfikatorze
dodano jeszcze pobranie po identyfikatorze pacjenta. Dodana metoda ułatwi zaimplementowanie listy
recept dla danego pacjenta przydatnej przy wydawaniu recept. Do serwisów DoctorsService oraz
NursesService zostały dodane odpowiednie metody dodające recepty do bazy danych oraz zmieniające
stan recepty na wydaną. Znajdują się one tam ponieważ są przypadkami użycia dla konkretnych
aktorów.
Rys. 5.7 Diagram klas – prezenter – przykładowe dodatkowe metody serwisów dla recept.
Diagram stanów
W naszym programie istnieją dwie encje biznesowe których stan naprawdę ma duże znaczenie. Są to:
•
•
recepty
wizyty.
Rys. 5.8 Diagram stanów – recepta.
Stan recepty to wydana lub niewydana. Od tego stanu zależy czy receptę można wydać pacjentowi,
czy może należy zablokować tę akcję. Wydane recepty zostają wciąż w bazie danych, ponieważ takie
inforamcje są przychodni potrzebne do składania raportów.
Rys. 5.9 Diagram stanów – wizyta.
Stan wizyty to wizyta zatwierdzona i niezatwierdzona. W przypadku niezatwierdzonej odpowiednio
wcześniej wizyty należy zwolnić termin.
Diagram aktywności
Najbardziej kłopotliwym dla nas samych w systemie okazała się rejestracja wizyty. Jako projektanci
systemu powinniśmy wzajemnie rozumieć własne pomysły. Jednak okazało się, że taka
funkcjonalność może zostać niejednoznacznie zrozumiała. Z pomocą przyszedł nam właśnie diagram
oraz opis słowny, dopiero to pozwoliło na pełne zrozumienie problemu oraz naszego pomysłu na
rozwiązanie go.
Efektem końcowym rozważań został poniższy diagram prezentujący rejestrację wizyty. Ważnym
punktem jest tutaj stan oczekiwanie na zatwierdzenie, którego długości nie ustaliliśmy i uważam, że
powinna być konfigurowalna.
Jak widać na diagramie, po rejestracji wizyty pacjent ma określoną długość czasu na zatwierdzenie jej.
Wizyta zostaje odwołana jeśli pacjent wydał taką decyzję, lub jeżeli nie zatwierdził jej w wymaganym
czasie. Dodatkowo możliwość odwołania wizyty ma lekarz i recepcjonistka. Jednak też musi zrobić to
w określonym czasie.
Rys. 5.10 Diagram aktywności – wizyta.
Diagram sekwencji
Diagram przepływu danych

Podobne dokumenty