Projekt stanowi podstawę bazodanową dla projektu realizowanego z przedmiotu Technologie i Programowanie WWW.

Sformułowanie zadania projektowego

Projekt ma być prostym w obsłudze, darmowym programem on-line dzięki któremu kobiety mogą monitorować okresy swojej płodności. Ma dać możliwość komputerowej dokumentacji oraz interpretacji obserwowanych objawów płodności. Zastosowanie pewnej metody objawowo-termicznej prof Rotzera (wskaźnik Pearla = 0,2) pozwala na prowadzenie bieżącej analizy komputerowej i wyciąganie wniosków w postaci określenia poszczególnych faz cyklu miesiączkowego. Dodatkowo analiza może zostać wzbogacona o inne metody. Rozwiązanie które proponujemy nie występuje na polskim rynku. Program jako że będzie darmowy i ogólnie dostępny będzie na pewno konkurencyjny dla dostępnej płatnej wersji angielskiej. Jeśli program stanie się popularny, będziemy mogli umieścić na nim reklamy.

Analiza stanu wyjściowego

Istnieją 2 podobne rozwiązania, jednak każdy z nich ma wyraźne braki które chcemy uzupełnić. Grupa klientów jest ta sama, pary stosujące naturalne metody planowania rodziny. Jeden projekt jest wortalem: www.fertilityfriend.com . Posiada on bardzo dużą, ciagle rozwijaną funkcjonalność. Jest to program płatny. Dla zachęcania nowych klientów dostępna jest ograniczona wersja bezpłatna oraz 1 miesiąc darmowego dostępu do części VIP. Opłata za stały dostęp to 10$/miesiąc. Nie posiada wersji polskiej. Drugi produkt z tej kategorii to program CTLife www.ctlife.pl . Jest to polski program, dostępny tylko w wersji desktopowej. Do tego jest on płatny 100 zł za licencję jednoosobową.

Analiza wymagań użytkownika (wstępna)

Uzytkownik chce otrzymać prosty, darmowy program gdzie bez wysiłku będzie mógł wprowadzać dane i otrzymywać jednoznaczne wyniki. Ograniczeniem jest to, że musimy zapewnić dyskrecję i bezpieczeństwo wprowadzanych danych, także danych osobowych.

Główne funkcjonalności (must):

- Zakładanie nowych kont, personalizacja : zmiana ustawień - Wprowadzanie parametrów odpowiadającym danym objawom płodności, zapis do bazy danych. - Grafy. Na podstawie zgromadzonych danych moduł liczący przeprowadza analizę i wyznacza okresy płodności / niepołodności. Można również generować czytelne wykresy (historia cyklu, fazy owulacji) - Pomoc. Jak korzystać z aplikacji. - Informacje o metodzie naturalnej antykoncepcji.

Funkcjonalności dodatkowe (should):

-

Funkcjonalności dodatkowe (could):

- Udostępnianie wybranych danych i wykresów innym użytkownikom - SOAP

Funkcjonalności dodatkowe (would):

- Aplikacja w J2ME do wprowadzania danych, apl. do obslugi serwisu (przegladanie serwisu, njawazniejszych danych) - zmiana wyglądu -forum

Wymagania techniczne

Serwis będzie wortalem internetowym, więc powinien mieć mozliwość uruchomienia na kazdym komputerze z dostępem do internetu i praktycznie dowolna przegladarką. Do uruchomienia tego projektu będziemy potrzebowali serwer (nie musi być zbyt wydajny, nie przewidujemy na początku zbyt dużego ruchu, w ramach potrzeby przeniesiemy się na coś bardziej wydajnego).

Wymagania dotyczace dostępu, obsługi, administracji, utrzymywalności

Jeśli zdecydujemy się na zainwestowanie w zewnętrzny hosting nie ma problemów związanych z obslugą, administracja, dostepem, utrzymywalnością. Ponieważ nie przewidujemy w poczatkowej fazie forum, nie potrzebujemy nikogo do moderacji.

Wymagania niezawodności i bezpieczeństwa

Ryzyko niezawodności zostanie zrzucone na firme hostingową.

Jeśli chodzi o bezpieczeństwo, to LINQ to SQL zapewnia bezpieczne połączenie z bazą danych (np. odporność na sql injection). Bezpieczeństwo strony przed nieautoryzowanymi użytkownikami jest zapewnine poprzez wprowadzenie mechanizmu autoryzacji asp (opis dokladniejszy w pkt. 8.)

Inne wymagania

Koncepcja nie wymaga żadnych specjalnych zezwoleń ani licencji.

Przypadki użycia

  1. Gość:
    1. Wyszukiwanie użytkowników
    2. Rejestracja z potwierdzeniem
      1. Zaproponowanie loginu
      2. Podanie hasła
      3. Podanie adresu email
      4. Podanie danych na swój temat
    3. Przeglądanie wyników ankiety
    4. Przeglądanie istniejących metod planowania rodziny
      1. Wysłanie powiadomienia mailowego o metodzie do znajomego
      2. Wyświetlanie danych na temat wybranej metody
  1. Użytkownik:
    1. Zarządzanie kontem
      1. Przypomnienie hasła/wygenerowanie nowego
      2. Aktualizacja profilu
        1. Zmiana hasła
        2. Zmiana adresu email
        3. Zmiana danych na swój temat
    2. Wyszukiwanie użytkowników
    3. Przeglądanie istniejących metod planowania rodziny
      1. Wysłanie powiadomienia mailowego o metodzie do znajomego
      2. Wyświetlanie danych na temat wybranej metody
    4. Przeglądanie danych nt cyklów owulacyjnych
      1. Przeglądanie wykresów z naniesionymi danymi
      2. Wprowadzanie danych
    5. Przeglądanie danych pomiarowych i obserwacyjnych
      1. Przeglądanie wykresów z naniesionymi danymi, w tym danych na temat obliczonych dni płodnych/niepłodnych
      2. Wprowadzanie danych
  1. Administrator:
    1. Zarządzanie kontami użytkowników
      1. Kasowanie/banowanie użytkowników
      2. Wysyłanie mailingu do użytkowników
    2. Kasowanie/dodawanie artykułów
    3. Przeglądanie uwag od użytkowników
    4. Przeglądanie statystyk serwisu
    5. Powiadamianie o informacjach dotyczących serwisu

Identyfikacja funkcji

  1. Rejestracja
  2. Potwierdzenie rejestracji
  3. Logowanie/wylogowywanie
  4. Modyfikacja profilu
  5. Wprowadzanie nowych danych pomiarowych
  6. Wyświetlanie wykresów płodności na podstawie danych
  7. Obliczanie dni płodnych, niepłodnych
  8. Czytanie artykułów
  9. Zgłoszenie uwag do administratora

FHD — diagramy hierarchii funkcji

WBS (Work Break-down Structure)

wbs.jpg

DFD (Data Flow Diagram)

Wybór encji (obiektów) i ich atrybutów

W systemie będą istniały nastepujace encje: Udostepnianie danych, dane pomiarowe, info o uzytkownikach, techniczna klasa o uzytkownikach.

Pole Typ Możliwy null Klucz Extra Opis
nfp_SHARES
ID_ int PKAutoincrementIdentyfikator udostępniania
OWNER_IDuniqueidentifier FKaspnet_Users.UserIdUżytkownik udostępniający
OBSERVER_IDuniqueidentifier FKaspnet_Users.UserIdOsoba otrzymująca dostęp
PRIVILAGESnchar(30) Zakres udostępnionych danych
nfp_MEASUREMENT_DATA
ID_int PKAutoincrementIdentyfikator pomiaru
USER_IDuniqueidentifier FKaspnet_Users.UserIdIdentyfikator użytkownika
TEMPfloat X Zmierzona temperatura
CERV_FLUIDint X Rodzaj obserwowanego śluzu
SPOTTINGint X Rodzaj krwawienia
INTERCOURSEint X Typ odbytych stosunków
DATEsmalldatetime Data pomiaru
FERTILEint X Obliczona płodność
nfp_USERS_INFO
USER_IDUniqueidentifier PK,FKaspnet_Users.UserId
EMAILvarchar(50) X Adres email
NAMEvarchar(20) X Imię
SURNAMEvarchar(20) X Nazwisko
BIRTHDATEdatetime X Data urodzenia
STATEvarchar(20) X Województwo
POSTCODEvarchar(10) X Kod pocztowy
CITYnchar(10) X Miasto
FEMALEbit Płeć
STREETvarchar(40) X Ulica
aspnet_Users
ApplicationIduniqueidentifier FKaspnet_Applications.ApplicationIdIdentyfikator aplikacji
UserIduniqueidentifier PK Identyfikator użytkownika
UserNamenvarchar(256) Nazwa użytkownika
LoweredUserNamenvarchar(256) Nazwa użytkownika małymi literami
MobileAliasnvarchar(16) X
IsAnonymousbit
LastActivityDatedatetime Data ostatniej aktywności

ERD — diagramy zwiazków encji

alltables.jpg

DFD — diagramy przepływu danych

STD (State Transition Diagram)

std.jpg

Projekt logiczny

Projekt tabel

Patrz pkt. 9

Normalizacja

Tak proste tabele spełniają założenia 3. postaci normalnej.

Mapowanie bazy danych

Zastosowalismy technologię LINQ TO SQL, ktora dostarcza zintegrowany język zapytań pozwalający na mapowanie relacyjnych baz danych na model obiektowy. Jest to technologia napisana pod bazy MS SQL Server. Dostepne jest narzędzie dblinq udostępniające podaną funkcjonalność na pozostałe bazy, jednak obecnie nie jest ono jeszcze wystarczająco rozwinięte by uzywać je w dużych komercyjnych projektach.

Cała koncepcja opiera się na mapowaniu do tabeli konkretnych. Stosujemy model trójwarstwowy, caly projekt opiera sie na frameworku MVC (model view controller). Komunikacja z bazą danych odbywa się za pośrednictwem klasy repozytorium. Proste zapytanie w LINQ to SQL:

from nfp_MEASUREMENT_DATA in db.nfp_MEASUREMENT_DATAs
                      where nfp_MEASUREMENT_DATA.USER_ID == user_id
                      orderby nfp_MEASUREMENT_DATA.DATE ascending
                      select nfp_MEASUREMENT_DATA;

LINQ zamienia na:

SELECT [t0].[ID], [t0].[USER_ID], [t0].[TEMP], [t0].[CERV_FLUID], [t0].[SPOTTING], [t0].[INTERCOURSE], [t0].[DATE], [t0].[FERTILE]
FROM [dbo].[nfp_MEASUREMENT_DATA] AS [t0]
WHERE [t0].[USER_ID] = @p0
ORDER BY [t0].[DATE]

linqklasy.jpg

Projekt fizyczny: implementacja

Platforma

Zdecydowalismy się uzywać platformy .NET, dokładnie frameworka MVC. Jako bazę danych wybraliśmy SQL Server 2008, hosing będziemy mieli zewnętrzny.

Implementacja bazy

Baza została na czas testów zainstalowana razem z serwerem Team Foundation Server na dedykowanym serwerze wewnątrz sieci AGH. Docelowo zostanie przeniesiona na zewnętrzny hosting.

Interfejsy

Podstawowe interfejsy:
  • Wprowadzanie danych:

enter_data.jpg

  • Wyswietlanie wykresow:

chart.jpg

  • Kalendarz obrazujący stan płodności dla poszczególnych dni:

calendar.jpg

Wprowadzanie danych

Wprowadzanie danych do bazy nie stanowi żadnego problemu, na poziomie mapowania LINQ bazy danych mamy pełną walidację.

Użytkowanie systemu

Użytkownik pierwszy raz odwiedzający serwis powinien zarejestrować się, wprowadzić przykładowe dane, i już po paru dniach może odczytać pierwsze wyniki. Dodatkowo powinien odwiedzic dział „Dowiedz się więcej” gdzie może zaczerpnąc więcej wiedzy teoretycznej na temat użytkowania serwisu oraz stosowanych metod.

Utrzymywanie i administracja systemu

Ponieważ serwis będzie na wykupionej platformie hostingowej nie musimy się martwić administracją.

Kierunki rozwoju

Przede wszystkim będziemy dążyć do zaimplementowania możliwości rejestrowania danych z urządzeń mobilnych (telefon, palmtop).

Literatura

[1] Design Patterns: Elements of Reusable Object-Oriented Software (ISBN 0-201-63361-2), Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides [2] http://msdn.microsoft.com/

pl/dydaktyka/ztb/2010/projekty/naturalnie_pl/start.txt · ostatnio zmienione: 2017/07/17 08:08 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0