Projekt konceptualny
Celem projektu jest stworzenie aplikacji pozwalającej na stały kontakt psychologa ze swoim pacjentem w przypadku gdy osobista wizyta jest utrudniona lub niemożliwa. Pokonując barierę lokalizacji pacjent uzyskuje możliwość leczenia się u najlepszego specjalisty. Uzyskuje także dostęp do lekarzy którzy nie przyjmują w najbliższej okolicy jego zamieszkania.
Pacjent dostaje dostęp do bazy danych lekarzy. Uzyskuje informację o ich specjalizacji oraz przebiegu ich kariery. Dzięki tym informacjom może podjąć najlepszą decyzję o zapisaniu się na leczenie do konkretnego lekarza. W prosty i intuicyjny sposób może poprosić o poradę, zadać pytanie czy umówić się na tradycyjne leczenie. Pacjent przez cały czas trwania procesu leczenia ma wgląd do historii korespondecji z danym lekarzem. W prosty sposób dostaje chronologiczną listę konkretnch pytań oraz porad specjalisty.
Lekarz przez cały proces leczenia ma dostęp do danych pacjentów którzy podjęli u niego leczenie. System wspomaga organizację całego procesu kuracji. Zapewnia dostęp do historii korespondencji z pacjentem. Co więcej lekarz uzyskuje możliwość prowadzenia historii przebiegu schorzenia danego pacjenta. Notatki które może dodawać to spostrzeżenie, próby diagnozy, oraz ogół informacji które w prostszy sposób pomogą podać trafniejszą diagnozę.
Analiza stanu wyjściowego
Poszukiwania serwisu internetowego, który odpowiadałby dokładnie mojej aplikacji nie przyniosły pożądanego skutku. Co prawda istnieją serwisy które świadczą podobne usługi tj. e-poradnia.online.synapsis.pl czy www.e-psychologowie.pl. Koncentrują się one jednak na stałej wewnętrznej bazie lekarzy i umożliwiają rejestrację jedynie pacjentom. Ogranicza to w ich przypadku stworzenie społeczności udzielającej się w serwisie. Dodatkową motywacją do angażowanie się w życie społecznosci dla lekarzy i pacjentów będzie forma reklamy na stronie. Najbardziej aktywni lekarze otrzymują reklamy swoich gabinetów na głównej stronie, podobnie jak użytkownicy którzy polecą aplikację największą ilość razy.
Analiza wymagań użytkownika
Admin
Logowanie
Przypominanie hasła
Edycja profilu - zmiana hasła
Lsitowanie wszystkich użytkowników, usunięcie
Proces leczenia (dostęp do kuracji wszytskich użytkowników):
Listowanie kuracji, edycja, usunięcie
Historia korespondencji
Przeglądanie pytań do psychologa - dodanie, edycja, usunięcie
Przeglądanie porad - dodanie, edycja, usunięcie
Historia schorzenia pacjenta(dostęp do kuracji wszytskich użytkowników):
Listowanie schorzeń, edycja, usunięcie
Schorzenie - dodanie, edycja, usunięcie
Notatki - dodanie, edycja, usunięcie
Specjalizacje - dodanie, edycja, usunięcie
Lekarz
Rejestracja
Logowanie
Przypominanie hasła
Edycja profilu - zmiana hasła
Wyświetlanie danych wszystkich lekarzy
Proces leczenia:
Listowanie kuracji
historia korespondencji
Odbieranie pytań od pacjenta
Porady dodanie, edycja, usunięcie
Historia schorzenia pacjenta:
Schorzenie - dodanie, edycja, usunięcie
Notatki - dodanie, edycja, usunięcie
Listowanie leczonych pacjentów
Pacjent
Rejestracja
Logowanie
Przypominanie hasła
Edycja profilu - zmiana hasła
Wyświetlanie danych wszystkich lekarzy
Zapisanie się na leczenie
Proces leczenia:
Listowanie kuracji, edycja, usunięcie
Listowanie historii korespondencji
Pytanie do psychologa dodanie, edycja, usunięcie
Przeglądanie porad
Listowanie lekarzy przypisanych do pacjenta
Określenie scenariuszy użycia
Pacjent Lekarz Admin
1. Rejestracja
Użytkownik klika „Sign up”
Pojawia się formularz
Uzupełnia dane i klika przycisk „Sign up”
Jeśli uzupełnił wszytsko prawidłowo to zostaje utworzone nowe konto a użytkownik zostaje przekierowany do głównej strony
Jeśli popełnił błąd zostaje wyświetlona informacja o błędzie
2. Logowanie
Użytkownik klika „Sign in”
Pojawia się formularz
Uzupełnia dane i klika przycisk „Sign in”
Jeśli uzupełnił wszytsko prawidłowo to zostaje zalogowany a następnie przekierowany do głównej strony
Jeśli popełnił błąd zostaje wyświetlona informacja o błędzie
3. Edycja profilu - zmiana hasła
Użytkownik klika „Edit profile”
Pojawia się formularz
Uzupełnia dane i klika przycisk „Update”
Jeśli uzupełnił wszytsko prawidłowo to zostaje zalogowany a następnie przekierowany do głównej strony
Jeśli popełnił błąd zostaje wyświetlona informacja o błędzie
4. Wyświetlanie danych wszystkich lekarzy
Użytkownik klika „List of doctors”
Pojawia się lista lekarzy (Name and Surname, Specialization)
Użytkownik klika „Show”
Pojawiają się dokładne informacje (Name and Surname, Specialization, CV)
Pacjent
1. Zapisanie się na leczenie
Użytkownik klika „Sign up for treatment”
Pojawia się lista lekarzy (Name and Surname)
Użytkownik wybiera lekarza i klika „Create Treatment”
Użytkownik zapisał się na leczenie a następnie przekierowany do strony pokazującej szczegóły leczenia
2. Listowanie kuracji, edycja, usunięcie
Użytkownik klika „Treatment process”
Pojawia się lista kuracji
Jeśli użytkownik kliknie Edit
Pojawia się formularz
Uzupełnia dane i klika przycisk „Update”
Jeśli uzupełnił wszytsko prawidłowo to zostaje zalogowany a następnie przekierowany do głównej strony
Jeśli popełnił błąd zostaje wyświetlona informacja o błędzie
Jeśli użytkownik kliknie Destroy
Pojawia się komunikat „Are you sure?”
Jeśli kliknie „Yes” kuracja zostanie usunięta w przeciwnym wypadku kuracja nie zostanie usunięta
3. Pytanie do psychologa dodanie, edycja, usunięcie
Użytkownik klika „Treatment process” a później „Correspondency”
Pojawia się historia korespondencji
Jeśli użytkownik kliknie „Edit”
Pojawia się formularz
Uzupełnia dane i klika przycisk „Update”
Jeśli uzupełnił wszytsko prawidłowo to zostaje zalogowany a następnie przekierowany do głównej strony
Jeśli popełnił błąd zostaje wyświetlona informacja o błędzie
Jeśli użytkownik kliknie „Destroy”
Pojawia się komunikat „Are you sure?”
Jeśli kliknie „Yes” kuracja zostanie usunięta w przeciwnym wypadku pytanie nie zostanie usunięte
Jeśli kliknie „New Question”
Pojawia się formularz
Uzupełnia dane i klika przycisk „Create”
Jeśli uzupełnił wszytsko prawidłowo to zostaje utworzone pytanie a następnie zostaje przekierowany do historii korespondencji
Jeśli popełnił błąd zostaje wyświetlona informacja o błędzie
4. Przeglądanie porad
Użytkownik klika „Treatment process” a później „Correspondency”
Pojawia się historia korespondencji
Użytkownik klika „Show”
Pojawiają się szczegóły porady
5. Listowanie lekarzy przypisanych do pacjenta\\
Użytkownik klika „List of my doctors”
Pojawia się lista lekarzy
Użytkownik klika „Show”
Pojawiają się szczegółowe dane o lekarzu
Lekarz
1. Listowanie kuracji
Użytkownik klika „Treatment process”
Pojawia się lista kuracji
2. Przeglądanie pytań od pacjenta
Użytkownik klika „Treatment process” a później „Correspondency”
Pojawia się historia korespondencji
Użytkownik klika „Show”
Pojawiają się szczegóły treści pytania
3. Porady - dodanie, edycja, usunięcie
Użytkownik klika „Treatment process” a później „Correspondency”
Pojawia się historia korespondencji
Jeśli użytkownik kliknie „Edit”
Pojawia się formularz
Uzupełnia dane i klika przycisk „Update”
Jeśli uzupełnił wszytsko prawidłowo to zostaje zalogowany a następnie przekierowany do głównej strony
Jeśli popełnił błąd zostaje wyświetlona informacja o błędzie
Jeśli użytkownik kliknie „Destroy”
Pojawia się komunikat „Are you sure?”
Jeśli kliknie „Yes” porada zostanie usunięta w przeciwnym wypadku porada nie zostanie usunięta
Jeśli kliknie „Give advice”
Pojawia się formularz
Uzupełnia dane i klika przycisk „Create Advice”
Jeśli uzupełnił wszystko prawidłowo to zostaje utworzone pytanie a następnie zostaje przekierowany do historii korespondencji
Jeśli popełnił błąd zostaje wyświetlona informacja o błędzie
4. Schorzenia - dodanie, edycja, usunięcie
Użytkownik klika „Treatment process” a później „History of diseases”
Pojawia się historia choroby
Jeśli użytkownik kliknie „Edit”
Pojawia się formularz
Uzupełnia dane i klika przycisk „Update”
Jeśli uzupełnił wszytsko prawidłowo to dane zostają zaktualizowane a następnie przekierowany do historii choroby
Jeśli popełnił błąd zostaje wyświetlona informacja o błędzie
Jeśli użytkownik kliknie „Destroy”
Pojawia się komunikat „Are you sure?”
Jeśli kliknie „Yes” schorzenie zostanie usunięte w przeciwnym wypadku schorzenie nie zostanie usunięte
Jeśli kliknie „New Disease”
Pojawia się formularz
Uzupełnia dane i klika przycisk „Create Disease”
Jeśli uzupełnił wszytsko prawidłowo to zostaje utworzone schozenie a następnie zostaje przekierowany do historii choroby
Jeśli popełnił błąd zostaje wyświetlona informacja o błędzie
6. Notatki - dodanie, edycja, usunięcie
Użytkownik klika „Treatment process” a później „History of diseases”
Pojawia się historia choroby
Jeśli użytkownik kliknie „Edit”
Pojawia się formularz
Uzupełnia dane i klika przycisk „Update”
Jeśli uzupełnił wszytsko prawidłowo to dane zostają zaktualizowane a następnie przekierowany do historii choroby
Jeśli popełnił błąd zostaje wyświetlona informacja o błędzie
Jeśli użytkownik kliknie „Destroy”
Pojawia się komunikat „Are you sure?”
Jeśli kliknie „Yes” notatka zostanie usunięta a w przeciwnym wypadku notatka nie zostanie usunięta
Jeśli kliknie „New Note”
Pojawia się formularz
Uzupełnia dane i klika przycisk „Create Note”
Jeśli uzupełnił wszytsko prawidłowo to zostaje utworzone schorzenie a następnie zostaje przekierowany do historii choroby
Jeśli popełnił błąd zostaje wyświetlona informacja o błędzie
7. Listowanie leczonych pacjentów
Użytkownik klika „List of my patients”
Pojawia się lista pacjentów
Użytkownik klika „Show”
Pojawiają się szczegółowe dane o pacjencie
8.Admin - dostęp do wszystkich funkcjonalności pacjenta i lekarza
1. Specjalizacje - dodanie, edycja, usunięcie
Użytkownik klika „Specialization management”
Jeśli użytkownik kliknie „Edit”
Pojawia się formularz
Uzupełnia dane i klika przycisk „Update”
Jeśli uzupełnił wszytsko prawidłowo to dane zostają zaktualizowane a następnie przekierowany do listy specjalizacji
Jeśli popełnił błąd zostaje wyświetlona informacja o błędzie
Jeśli użytkownik kliknie „Destroy”
Pojawia się komunikat „Are you sure?”
Jeśli kliknie „Yes” specjalizacja zostanie usunięta a w przeciwnym wypadku nie zostanie usunięta
Jeśli kliknie „New Specialization”
Pojawia się formularz
Uzupełnia dane i klika przycisk „Create Specjalization”
Jeśli uzupełnił wszytsko prawidłowo to zostaje utworzone schorzenie a następnie zostaje przekierowany do historii choroby
Jeśli popełnił błąd zostaje wyświetlona informacja o błędzie
Identyfikacja funkcji
Budowa i analiza diagramu przepływu danych.
Wybór encji (obiektów) i ich atrybutów.
specializations
id
name
users
id
reset_password_token
encrypted_password
name
role
cv
specialization_id
advices
id
title
content
question_id
questions
id
title
content
treatment_id
treatments
id
user_id
doctor_id
notes
id
name
content
disease_id
diseases
id
name
content
treatment_id
ERD
Projekt diagramów STD
Projekt Logiczny
Projektowanie tabel, kluczy, kluczy obcych, powiązań między tabelami, indeksów, etc. Projekt bazy w języku SQL.
Projekt bazy danych w SQL
Database: `psycholog_development`
CREATE TABLE IF NOT EXISTS `advices` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) DEFAULT NULL,
`content` text NOT NULL,
`question_id` varchar(255) NOT NULL DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=19;
CREATE TABLE IF NOT EXISTS `diseases` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL DEFAULT NULL,
`content` text,
`treatment_id` int(11) NOT NULL DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4;
CREATE TABLE IF NOT EXISTS `notes` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL DEFAULT NULL,
`content` text,
`disease_id` int(11) NOT NULL DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=7;
CREATE TABLE IF NOT EXISTS `questions` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) DEFAULT NULL,
`content` text NOT NULL,
`treatment_id` int(11) NOT NULL DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=17;
CREATE TABLE IF NOT EXISTS `specializations` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5;
CREATE TABLE IF NOT EXISTS `treatments` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL DEFAULT NULL,
`doctor_id` int(11) NOT NULL DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=13;
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`email` varchar(255) NOT NULL DEFAULT '',
`encrypted_password` varchar(128) NOT NULL DEFAULT '',
`reset_password_token` varchar(255) NOT NULL DEFAULT NULL,
`name` varchar(255) NOT NULL DEFAULT NULL,
`role` varchar(255) NOT NULL DEFAULT NULL,
`cv` text,
`specialization_id` int(11) NOT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `index_users_on_email` (`email`),
UNIQUE KEY `index_users_on_reset_password_token` (`reset_password_token`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=11;
Słowniki danych
specializations
id, int(11), NOT NULL, identyfkator główny specjalizacji
name, varchar(255), NOT NULL, nazwa specjalizacji
users
id, int(11), NOT NULL, identyfkator główny użytkownika
reset_password_token, varchar(255), NOT NULL, token służacy do resetowania hasła
encrypted_password, varchar(255), NOT NULL, zakodowane hasło
name, varchar(255), NOT NULL, imię i nazwisko użytkownika
role, varchar(255), NOT NULL, nazwa roli użytkownika
cv, text, NULL, dane cv - lekarza lub dane użytkownika
specialization_id, int(11), NULL, klucz obcy specjalizacji
advices
id, int(11), NOT NULL, identyfkator główny porady
title, varchar(255), NULL, tytuł porady
content, text, NOT NULL, zawartość porady
question_id, int(11), NOT NULL, klucz obcy pytania
questions
id, int(11), NOT NULL, identyfkator główny pytania
title, varchar(255), NULL, tytuł pytania
content, text, NOT NULL, zawartość pytania
treatment_id, int(11), NOT NULL, klucz obcy leczenia
treatments
id, int(11), NOT NULL, identyfkator główny leczenia
user_id, int(11), NOT NULL, klucz obcy użytkownika
doctor_id, int(11), NOT NULL, klucz obcy lekarza
notes
id, int(11), NOT NULL , identyfkator główny notatki
name, varchar(255), NULL, tytuł notatki
content, text, NOT NULL, zawartość notatki
disease_id, int(11), NOT NULL, klucz obcy choroby
diseases
id, int(11), NOT NULL, identyfkator główny choroby
name, varchar(255), NOT NULL, nazwa choroby
content, text, NULL, informacje dodatkowe o chorobie pacjenta
treatment_id, int(11), NOT NULL, klucz obcy leczenia
Analiza zależności funkcyjnych i normalizacja tabel
Pierwsza postać normalna (1NF)
Baza danych spełnia poniższe wymagania:
opisuje jeden obiekt
wartości atrybutów są elementarne (atomowe, niepodzielne) - każda kolumna jest wartością skalarną
nie zawiera kolekcji (powtarzających się grup informacji)
posiada klucz główny
Rozpatrywana baza danych jest w pierwszej postaci normalnej.
Druga postać normalna (2NF)
Każda kolumna zależy funkcyjnie od całego klucza głównego (a nie np. od części klucza). Baza jest w drugiej postaci normalnej.
Trzecia postać normalna (3NF)
Wszystkie atrybuty tabel zależą w sposób bezpośredni od klucza głównego - nie ma relacji przechodnich. Baza jest w trzeciej postaci normalnej.
Projektowanie operacji na danych
logowanie
SELECT `users`.* FROM `users` WHERE `users`.`email` = 'd3@3.pl' LIMIT 1
szukanie użytkownika
SELECT `users`.* FROM `users` WHERE `users`.`id` = 3 LIMIT 1
aktualizacja danych użytkownika
UPDATE `users` SET `name` = 'doctor333', `encrypted_password` = '$2a$10$bExVABd0ft5x0sWRiI6.IuFDm9t3RfaVt5CXSPVwLO24ui9W0SRty' WHERE `users`.`id` = 3
listowanie lekarzy
SELECT `users`.* FROM `users` WHERE (role = 'doctor')
listowanie procesów leczenia
SELECT `treatments`.* FROM `treatments` WHERE (`treatments`.doctor_id = 3)
listowanie pytań od pacjenta
SELECT `questions`.* FROM `questions` WHERE (`questions`.treatment_id = 2)
listowanie odpowiedzi dla danego pytania
SELECT `advices`.* FROM `advices` WHERE (`advices`.question_id = 6)
wysłanie odpowiedzi przez lekarza
INSERT INTO `advices` (`title`, `content`, `question_id`) VALUES ('rada', 'przykładowa odpowiedź ', 6)
usuwanie odpowiedzi
DELETE FROM `advices` WHERE `advices`.`id` = 9
aktualizacja odpowiedzi
UPDATE `advices` SET `question_id` = 6, `content` = 'odpowiedz' WHERE `advices`.`id` = 18
listowanie procesu leczenia, chorób i notatek
SELECT `treatments`.* FROM `treatments` WHERE `treatments`.`id` = 2 LIMIT 1
SELECT `diseases`.* FROM `diseases` WHERE (`diseases`.treatment_id = 2)
SELECT `notes`.* FROM `notes` WHERE (`notes`.disease_id = 3)
dodawanie nowej notki i choroby
INSERT INTO `notes` (`name`, `content`, `disease_id`) VALUES ('Note1', 'content of a note', 3)
INSERT INTO `diseases` (`name`, `content`, `treatment_id`) VALUES ('choroba 2', 'opis choroby', 2)
listowanie pajentów leczących się u danego lekarza
SELECT `treatments`.* FROM `treatments` WHERE (`treatments`.doctor_id = 3)
Raport końcowy
Implementacja bazy danych
Implementacja bazy danych została utworzona w oparciu o diagramy erd i sql. Ponieważ aplikacja została napisana w technologii RubyonRails implementacja bazy danych aplikacji może przebiegać na 2 sposoby.
Pierwszy sposób to skorzystanie z mechanizmu ORM. modele w Rails reprezentowane są przez klasy dziedziczące po klasie bazowej ActiveRecord::Base. ActiveRecord jest mechanizmem ORM, tzn. przedstawia tabelaryczne dane z bazy danych w formie klas i obiektów. Tabeli w bazie danych odpowiada klasa dziedzicząca po ActiveRecord, kolumnom tabeli – właściwości(atrybuty) tej klasy, natomiast wartościom pól w bazie danych wartości atrybutów obiektów danej klasy.
Innym sposobem jest skorzystanie z projektu bazy danych w SQL zaprezentowany w projekcie logicznym.
Zdefiniowanie interfejsów do prezentacji, edycji i obsługi danych
Rejestracja
Lista lekarzy
Aktualizacja użytkownika
Lista procesów leczenia
Korespondencja, pytania i odpowiedzi
Historia Leczenia
Nowa rada
Zapisanie użytkownika na leczenie
Zdefiniowanie dokumentów do przetwarzania i prezentacji danych
W aplikacji nie ma zapotrzebowania tworzenia dokumentów ani raportów z racji jej charakteru. Projekt to nieskomplikowana internetowa aplikacjia tworzona w małym zespole programistycznym zatem istniejąca dokumentacja jest wystarczająca.
Zdefiniowanie panelu sterowania aplikacji
Panel administracyjny tworzą linki edycji, usuwania i tworzenia nowych zasobów. Linki wbudowane są w standardową aplikacjię przez co zyskuje ona na przejrzystości i intuicyjności.
Zdefiniowanie makropoleceń dla realizacji typowych operacji
Tworzenie aplikacji korzystającej z frameworka RubyonRails nie wspiera własnych rozwiązań. Pisząc aplikacje korzystamy z szeregu wewnętrznych rozwiązań wpisujących się w regułę Convention Over Configuration, polegająca na sprowadzeniu do minimum niezbędnej konfiguracji przez zastępowanie jej gotowymi domyślnymi, zalecanymi wzorcami.
Uruchamianie i testowanie aplikacji
Aplikacja została uruchomiona lokalnie przy wykorzystaniu serwera WebBrick oraz przeglądarek internetowej Mozilla Firefox i Google Chrome. Łączenie się aplikacji z bazą danych realizowane było przy wykorzystaniu mechanizmu ActiveRecord. Testowanie aplikacji polegało na ręcznym sprawdzeniu działania czynności wykonywanych w aplikacji.
Wprowadzanie danych
W aplikacji nie występuje automatyczne wprowadzanie danych. Dane wprowadzane są ręcznie za pośrednictwem aplikacji WWW przez użytkownika a te które potrzebne sa do działania aplikacji ( np specjalizacje lekaskie) wprowadzane są przez administratora.
Wdrażanie systemu do użytkowania
Wdrażanie systemu będzie w polegało na utworzeniu bazy danych na serwerze, skopiowaniu danych i skonfigurowaniu jej w czym pomaga narzędzie Capistrano. Po wdrożeniu system będzie można przetestować korzystając z przeglądarki internetowej.
Przeprowadzenie szkolenia użytkowników
Prostota aplikacji eliminuje ten podpunkt. Na głównej stronie aplikacji mogłaby pojawić się infografika o przeznaczeniu aplikacji i o paru krokach kozystania z niej.
Zapewnienie obsługiwania systemu po wdrożeniu
Obsługa aplikacji po wdrożeniu to kontrola poprawności działania programu oraz bazy danych. Autorzy powinni reagować na feedback od użytkowników na temat postaci aplikacji a także informacji o błędach. Ważne jest także skalowalność a zatem przygotowanie bazy, serwera jak i aplikacji do znacznego obciązenia w przypadku zwiększenia liczby użytkowników.
Rozwijanie i modyfikowanie aplikacji
Aplikacja mogłaby rozwijać się dynamicznie wraz z pojawieniem się informacji zwrotnych od użytkowników jak i nowych pomysłów. Trzeba wziąć pod uwagę konkurencje która w razie powodzenia proejktu pojawiłaby się na rynku. Sytuacja powinna być monitorowana tak aby aplikacji była aktualna i spełniała standardy