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