140 likes | 272 Views
February 26, 2008 Andy Chang · Osei Simba Hinds · Rachal Royce. Nutlog Design. From the Requirements:. Personal accounts Registration Login Manage account settings Log functionality Exercise activity entry Food item entry Item entry assistance Field selection Goal functionality
E N D
February 26, 2008 Andy Chang· Osei Simba Hinds · Rachal Royce Nutlog Design
From the Requirements: • Personal accounts • Registration • Login • Manage account settings • Log functionality • Exercise activity entry • Food item entry • Item entry assistance • Field selection • Goal functionality • Goal entry • Goal progress tracking • Reporting functionality • Tables • Graphs • Other • Web-based • Database • Specific pages, i.e. User 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 • Dispatcher • ControllerFactory • AbstractController • HomepageController • AccountController • GoalsController • ReportsController • Application Layer • ApplicationFactory • HomepageApplication • AccountApplication • GoalsApplication • ReportsApplication • Data Layer • DataAccessFactory • AccountDAO • ExerciseLogDAO • FoodLogDAO • ExerciseDAO • NutritionDAO • GoalsDAO • SessionDAO
Request Cycle Client Navigates to www.nutlog.com. inputs an invalid username and password combination and presses <<GO>> Slams keyboard and mutters “nutlog is a piece of $@#%!” Presentation Layer 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” Application Layer 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 Data 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