Transcript nutlog_des

February 26, 2008
Andy Chang · Osei Simba Hinds · Rachal Royce
From the Requirements:

Personal accounts
 Tables
 Login
 Graphs

Other
Log functionality
 Web-based
 Exercise activity entry
 Database
 Food item entry
 Specific pages, i.e. User
 Item entry assistance
 Field selection

Reporting functionality
 Registration
 Manage account settings


Goal functionality
 Goal entry
 Goal progress tracking
Homepage (Summary Page)
and Welcome/Help Page
System Architecture

Multi-tier, not Model-View-Controller architecture
 User interface tier (presentation layer)
 Processing tier (application layer)
 Data storage and access (data layer)
Model-View-Controller
Three-tier
Presentation Layer

User interface
 Accepts requests
from the user
 Displays page
contents and its
layout
 Renders output to
the screen

Passes requests
to the application
layer
Application Layer

Handles requests
 Processes input from presentation layer
○ Checks for validity
○ Converts to system format
○ Performs calculations
 Calls data layer to retrieve data if necessary
 Returns output to presentation layer
Data Layer
Accepts calls from application layer
 Generates database queries to retrieve
the necessary data or to update the
necessary tables
 Returns requested output or errors to
the application layer

Class Design


Use of Abstract Factory Pattern
Each layer divided up so that the classes correspond to
the main pages/functions from the requirements
Presentation Layer
Application Layer
Data Layer
•Dispatcher
•ControllerFactory
•AbstractController
•HomepageController
•AccountController
•GoalsController
•ReportsController
•ApplicationFactory
•HomepageApplication
•AccountApplication
•GoalsApplication
•ReportsApplication
•DataAccessFactory
•AccountDAO
•ExerciseLogDAO
•FoodLogDAO
•ExerciseDAO
•NutritionDAO
•GoalsDAO
•SessionDAO
Database Design
Request Cycle
Request Cycle
Request Cycle
Client
Presentation Layer
Application Layer
Data Layer
Navigates to www.nutlog.com.
inputs an invalid username and
password combination and
presses <<GO>>
Slams keyboard and mutters
“nutlog is a piece of $@#%!”
Sends the inputted information to
Application Layer and requests for
login validation
Generates to the output conveying
the result of the request, i.e. “Invalid
username or password”
Calls account data access object
in the data layer to retrieve login
information pertaining to the
inputted username
Compares the user input with the
retrieved information and returns an
error signal to the presentation layer
Sends a query to the database to
retrieve the username’s data from
the accounts table
Returns the query result to the
application layer
Testing Plan

Tools
 Mock Database
○ Store initial state information

Strategies
 Unit Testing
○ Test each subsystem in isolation
 Integration Testing
○ Top-down integration strategy
 Performance Testing
○ Simulate stress situations through automation
 Regression Testing
○ Regular compilation and running of tests
 Manual Testing
○ Customers as testers
Implementation Plan

Six builds, incrementally adding features
 Build 1: Shell System
 Build 2: Log System for Single User
 Build 3: User Accounts/Multiple Logs
 Build 4: User Guide and Help System
 Build 5: Goals
 Build 6: Reports
 Build n: More features
Problems

Design
 Not specific and comprehensive enough
 Cannot know exact design until
implementation

Implementation Plan
 Dividing work equally
○ How to calculate time
units accurately

Security
 Password encryption
 Storing sessions