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

Design Issues

Detailed Design Information

Trace of Requirements to Design


Design Issues: 

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.


Detailed Design Information:

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