Online Health Monitoring System
Detailed Design
COP 4331, Fall, 2014
Modification history:
Version |
Date |
Who |
Comment |
v0.0 |
08/15/00 |
G. H. Walton |
Template |
v1.0 |
10/9/14 |
James Luke |
First commit |
Team Members:
Contents of this Document
Trace of Requirements to Design
When storing a user's medical data, security is paramount. We do not want an attacker to be able to steal sensitive information that could be used to harass or blackmail patients. For this reason, we will be encrypting the MySQL database. To protect our user's passwords from being stolen, we will implement salting and hashing in our user account store. These measures, while not bulletproof, will help keep the users safe in the unlikely event that our server is compromised by attackers online or within the server room.
Since most modules will be depending on retrieving and modifying this data, I will need to work closely with all members of the team. In order to reduce work, we will need to agree on uniform modes of access to the system.
Overview:
Data:
This module works closely with most other modules in this project. Much of the functionality acts as a wrapper to the database for these modules. In this way, we will come in contact with many of the data structures defined in their detailed designs:
In addition, this module will incorporate two new data structures: Setting and Account.
Setting |
String username |
String email | String docotrName |
Bool isDoctor |
Account |
String username |
String salt | String hashPassword |
In the Setting structure, doctorName corresponds with the username of the user's doctor. This is used to match doctors and users in a one-to-many fashion. A boolean value of true in isDoctor indicates that this account belongs to a doctor.
In the Account structure, salt refers to the random data used in the one way hash algorithm provided by PHP. The hashPassword is the result of that hash algorithm. Both are needed to verify a user's real password.
User Interface Visualization
Visual of HTML page produced by displayLoginUI()
Visual of the HTML page produced by displaySettingsUI()
Operations:
As noted above, one of the main functions is to pass data inbetween modules and the database. This allows other team members to not have to learn SQL queries and the details of how the data is stored. The other duty this module performs is to keep track of user accounts and the process of logging in and out. Many of these other functions will heavily rely on the built-in capabilities of PHP, such as the native password hashing API.
PHP is a great way to interface with our MySQL installation. It inclueds a library of functions dedicated to MySQL operations.
We will make the most of the features available to us through PHP to store and retrieve our user data.
Interfaces
Interfaces are provided for account functionality and for other modules to access the database. Each other module has its own interface to the database. This makes it easier to maintain a low level of dependency between modules. It is also easy to modify the interface to match the needs of each module
Event Sequence Diagrams
The first diagram represents creating an account. The second represents logging in and changing an account setting.
Class Diagram
Trace of Requirements to Design:
Item Description |
Detailed Design Section |
Document of Origin |
Sections of Origin |
Overall functionality of
Database Manager |
Overview |
Concept of Operations |
Users and Modes of
Operation, Operational Features |
Log In |
Event Sequence Diagrams |
Software Requirements Specification |
Use Case
Descriptions |
Crete Account |
Event Sequence Diagrams |
Software Requirements
Specification |
Event Table, Use Case
Descriptions |
Change account settings |
Data, Operations |
Software Requirements
Specification |
Use Case Descriptions |
Secure user information |
Design Issues |
Software Requirements
Specification |
3.8 |
Template created by G. Walton (GWalton@mail.ucf.edu) on October 8, 1999 and last modified on August 15, 2000
This page last modified by James Luke on October 9, 2014