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.
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ą.
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.
- 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.
-
- Udostępnianie wybranych danych i wykresów innym użytkownikom - SOAP
- Aplikacja w J2ME do wprowadzania danych, apl. do obslugi serwisu (przegladanie serwisu, njawazniejszych danych) - zmiana wyglądu -forum
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).
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.
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.)
Koncepcja nie wymaga żadnych specjalnych zezwoleń ani licencji.
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 | |||
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 |
Patrz pkt. 9
Tak proste tabele spełniają założenia 3. postaci normalnej.
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]
Zdecydowalismy się uzywać platformy .NET, dokładnie frameworka MVC. Jako bazę danych wybraliśmy SQL Server 2008, hosing będziemy mieli zewnętrzny.
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.
Wprowadzanie danych do bazy nie stanowi żadnego problemu, na poziomie mapowania LINQ bazy danych mamy pełną walidację.
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.
Ponieważ serwis będzie na wykupionej platformie hostingowej nie musimy się martwić administracją.
Przede wszystkim będziemy dążyć do zaimplementowania możliwości rejestrowania danych z urządzeń mobilnych (telefon, palmtop).
[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/