Projekt stanowi podstawę bazodanową dla projektu realizowanego z przedmiotu Technologie i Programowanie WWW.
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
Gość:
Wyszukiwanie użytkowników
Rejestracja z potwierdzeniem
Zaproponowanie loginu
Podanie hasła
Podanie adresu email
Podanie danych na swój temat
Przeglądanie wyników ankiety
Przeglądanie istniejących metod planowania rodziny
Wysłanie powiadomienia mailowego o metodzie do znajomego
Wyświetlanie danych na temat wybranej metody
Użytkownik:
Zarządzanie kontem
Przypomnienie hasła/wygenerowanie nowego
Aktualizacja profilu
Zmiana hasła
Zmiana adresu email
Zmiana danych na swój temat
Wyszukiwanie użytkowników
Przeglądanie istniejących metod planowania rodziny
Wysłanie powiadomienia mailowego o metodzie do znajomego
Wyświetlanie danych na temat wybranej metody
Przeglądanie danych nt cyklów owulacyjnych
Przeglądanie wykresów z naniesionymi danymi
Wprowadzanie danych
Przeglądanie danych pomiarowych i obserwacyjnych
Przeglądanie wykresów z naniesionymi danymi, w tym danych na temat obliczonych dni płodnych/niepłodnych
Wprowadzanie danych
Administrator:
Zarządzanie kontami użytkowników
Kasowanie/banowanie użytkowników
Wysyłanie mailingu do użytkowników
Kasowanie/dodawanie artykułów
Przeglądanie uwag od użytkowników
Przeglądanie statystyk serwisu
Powiadamianie o informacjach dotyczących serwisu
Identyfikacja funkcji
Rejestracja
Potwierdzenie rejestracji
Logowanie/wylogowywanie
Modyfikacja profilu
Wprowadzanie nowych danych pomiarowych
Wyświetlanie wykresów płodności na podstawie danych
Obliczanie dni płodnych, niepłodnych
Czytanie artykułów
Zgłoszenie uwag do administratora
FHD — diagramy hierarchii funkcji
WBS (Work Break-down Structure)
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 | | PK | Autoincrement | Identyfikator udostępniania | |
OWNER_ID | uniqueidentifier | | FK | aspnet_Users.UserId | Użytkownik udostępniający | |
OBSERVER_ID | uniqueidentifier | | FK | aspnet_Users.UserId | Osoba otrzymująca dostęp | |
PRIVILAGES | nchar(30) | | | | Zakres udostępnionych danych | |
nfp_MEASUREMENT_DATA |
ID_ | int | | PK | Autoincrement | Identyfikator pomiaru | |
USER_ID | uniqueidentifier | | FK | aspnet_Users.UserId | Identyfikator użytkownika | |
TEMP | float | X | | | Zmierzona temperatura | |
CERV_FLUID | int | X | | | Rodzaj obserwowanego śluzu | |
SPOTTING | int | X | | | Rodzaj krwawienia | |
INTERCOURSE | int | X | | | Typ odbytych stosunków | |
DATE | smalldatetime | | | | Data pomiaru | |
FERTILE | int | X | | | Obliczona płodność | |
nfp_USERS_INFO |
USER_ID | Uniqueidentifier | | PK,FK | aspnet_Users.UserId | | |
EMAIL | varchar(50) | X | | | Adres email | |
NAME | varchar(20) | X | | | Imię | |
SURNAME | varchar(20) | X | | | Nazwisko | |
BIRTHDATE | datetime | X | | | Data urodzenia | |
STATE | varchar(20) | X | | | Województwo | |
POSTCODE | varchar(10) | X | | | Kod pocztowy | |
CITY | nchar(10) | X | | | Miasto | |
FEMALE | bit | | | | Płeć | |
STREET | varchar(40) | X | | | Ulica | |
aspnet_Users |
ApplicationId | uniqueidentifier | | FK | aspnet_Applications.ApplicationId | Identyfikator aplikacji | |
UserId | uniqueidentifier | | PK | | Identyfikator użytkownika | |
UserName | nvarchar(256) | | | | Nazwa użytkownika | |
LoweredUserName | nvarchar(256) | | | | Nazwa użytkownika małymi literami | |
MobileAlias | nvarchar(16) | X | | | | |
IsAnonymous | bit | | | | | |
LastActivityDate | datetime | | | | Data ostatniej aktywności | |
ERD — diagramy zwiazków encji
DFD — diagramy przepływu danych
STD (State Transition Diagram)
Projekt logiczny
Projekt tabel
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]
Projekt fizyczny: implementacja
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
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/