Software Design Specification
For
FrugalPhone
Submitted by
Blue Team
Instructor Gregory Hislop, Jeff SalvageTeam Members Patrick Freestone, Stephen Prazenica, Johnathan Saunders,
Kyle Usbeck, Kimmie YuanCycle 3Date Submitted 2/22/2007
Document template copyright (c) 2005, Gregory W. Hislop. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation.
1
Grading Rubric - Design SpecificationThis rubric outlines the grading criteria for this document. Note that the criteria represent a plan for grading. Change is possible, especially given the dynamic nature of this course. Any change will be applied consistently for the entire class.
Achievement Minimal Limited Satisfactory Exemplary ScoreContent Section(s) missing, not
useful, inconsistent, or wrong.
Serious omissions or problems with content.
Some problems with completeness or details of content
Provides all relevant information correctly and with appropriate detail
Introduction 10Architectural Description
10
Interface Description
10
Detailed Design
40
Grammar and Spelling
10 Many serious mistakes in grammar or spelling
Several large issues or many smaller ones
Some small grammar or spelling issues
Grammar, punctuation, and spelling all correct
Expression 10 Very difficult to understand
Hard to follow or poor word choices
Mostly easy to read and understand
Clear and concise. A pleasure to read
Tone Tone not appropriate for technical writing
Tone somewhat unprofessional
Mostly professional tone
Tone is consistently professional
Organization 10 Very hard to find information
Information difficult to locate
Can find information with slight effort
All information is easy to find and important points stand out
Layout Layout makes it harder to understand and use the document
Layout is inconsistent or not visually appealing or supportive
Layout is reasonable, consistent and generally helpful
Layout is attractive, consistent, and helps guide the reader
Late SubmissionTotal 100
2
Table of Contents
1 Introduction..................................................................................................................71.1 Purpose................................................................................................................71.2 Scope....................................................................................................................71.3 Definitions, Acronyms, and Abbreviations.........................................................7
1.3.1 System Components....................................................................................71.3.2 Data Entities.................................................................................................71.3.3 Technical Terms..........................................................................................8
1.4 References............................................................................................................91.5 Overview..............................................................................................................9
2 Architectural Description...........................................................................................102.1 Requirement Fulfillment View..........................................................................11
2.1.1 Use Case 1: Find Competitors’ Product Prices [SRS 2.3.1.1]...................112.1.2 Use Cases 2-6 [SRS 2.3.1.2-6]..................................................................122.1.3 Interface to Retailer Data [SRS 3.1.1.1]....................................................12
2.2 Component View...............................................................................................142.2.1 Mobile Device Decomposition..................................................................142.2.2 Mobile Device Interface Decomposition...................................................152.2.3 FrugalPhone Server Database Decomposition..........................................162.2.4 Product Pricing Data Retailer Interface Decomposition...........................162.2.5 Admin Console Decomposition.................................................................16
3 Interface Description.................................................................................................173.1 User Interface.....................................................................................................17
3.1.2 Phone User Interface..................................................................................193.2 Data Interface.....................................................................................................213.3 Programming Interface......................................................................................21
4 Detailed Design.........................................................................................................224.1 Mobile Device...................................................................................................23
4.1.1 Mobile Device Classes..............................................................................234.1.2 Requirement Traceability Matrix..............................................................40
4.2 Mobile Device Interface....................................................................................414.2.1 Mobile Device Interface Classes...............................................................414.2.2 Requirements Traceability Matrix.............................................................45
4.3 FrugalPhone Server Database............................................................................464.3.1 FrugalPhone Server Database Tables........................................................464.3.2 FrugalPhone Server Database Classes.......................................................484.3.3 Requirement Traceability Matrix..............................................................51
4.4 Product Pricing Data Retailer Interface.............................................................524.4.1 Product Pricing Data Retailer Interface Classes........................................524.4.2 Product Pricing Data Retailer Interface Files............................................604.4.3 Requirement Traceability Matrix..............................................................63
4.5 Admin Console..................................................................................................644.5.1 Admin Console Screens.............................................................................66
3
4.5.2 Admin Console Classes.............................................................................794.5.3 Requirements Traceability Matrix.............................................................89
4
Table of ContributionsThe table below identifies contributors to various sections of this document.
Section Writing Editing
Entire Document Team
1 Introduction
1.1 Purpose
1.2 Scope
1.3Definitions, Acronyms, and Abbreviations
1.4 References
1.5 Overview
2 Architectural Description
3 Interface Description
3.1 User Interface
3.2 Data Interface
3.3 Programming Interface
4 Detailed Design SLP,PGF,KU
5
1 Introduction
1.1 PurposeThe purpose of this SDS document is to provide the system architecture, interfaces, and design details for the implementation of FrugalPhone. Developers of the system are the intended audience for this document.
1.2 ScopeFrugalPhone allows consumers to use a Mobile Device to check competitors’ prices for a specific product. Consumers send product information to this service with their Mobile Device. FrugalPhone then returns a list of product pricing results that includes information such as the store name, physical location, price, and the last time the price was validated. GPS-enabled phones also display the distance to the store.
The FrugalPhone service provides several input methods. One format in which a consumer is able to enter product information is a UPC Code. Another format that a consumer could use is product name. A third format is bar code scanning via the camera on camera phones.
The FrugalPhone service gathers pricing data in two ways. One way in which the system gathers pricing data is by browsing web pages. A second way is by allowing retailers to provide product pricing data feeds to the FrugalPhone system.
The objective of this application is to create a more portable version of Internet price-checking websites. Given this objective, the ideal goal of FrugalPhone is to provide the ability to compare product prices anytime and anywhere.
1.3 Definitions, Acronyms, and AbbreviationsThis section provides definitions for common terms used throughout the document. They are provided to help minimize ambiguity throughout the document.
1.3.1 System Components
Mobile Device– The application that allows the consumer to enter product input data into the system and view the pricing result data.
FrugalPhone Server – This is the part of the system that is responsible for gathering the product pricing data from the Internet, as well as communicating with the Mobile Device.
Admin Console – The interface to the system that allows the system administrator to manage the FrugalPhone server.
1.3.2 Data Entities
Product Input Data – This is the data about a specific product that the consumer inputs into the Mobile Device that is used to identify the product.
6
Pricing Result Data - This is the data returned to the consumer that includes information about the product, locations where it is sold, the prices at those locations, and the distance to the store (GPS-enabled devices only).
Product Pricing Data – This is the data gathered from the retailers about prices and locations for consumer products. It is used to generate the pricing result data.
FrugalPhone Server Management Parameters - This is the data that regulates the FrugalPhone server and is controlled by the system administrator.
FrugalPhone Server Status Updates – This is the data about the status of the FrugalPhone server communicated to the system administrator via the Admin Console.
1.3.3 Technical Terms
JSP - JavaServer Pages (JSP) technology provides a simplified, fast way to create dynamic web content. JSP technology enables rapid development of web-based applications that are server and platform independent.
Servlets - Java Servlet technology provides Web developers with a simple, consistent mechanism for extending the functionality of a Web server and for accessing existing business systems.
JavaBeans - Components (JavaBeans) are reusable software programs that you can develop and assemble easily to create sophisticated applications.
CommSystem - Component of FrugalPhone that transfers messages between a Comm Package (Mobile Device) and Comm Package (FrugalPhone Server).
HTTP - Hypertext Transfer Protocol (HTTP) is a request/response protocol between clients and servers.
JVM - A Java Virtual Machine (JVM) is the program that executes the machine language generated by Java language compilers.
XML – Extensible Markup Language (XML) is a general purpose markup language that is used to structure data.
Feed – A feed is a data file that is updated at a regular interval.
URL – A uniform resource locator (URL) is a unique address for locating a file.
7
1.4 ReferencesThe following references are supplemental to the material found in this document:
GS1. GS1 ID Keys – Technical. Retrieved October 15, 2006 from http://www.gs1.org/productssolutions/idkeys/technical/#gtin
Freestone, Prazenica, Saunders, Usbeck, Yaun. Cycle-1 Software Requirements Specification for FrugalPhone. October, 2006.
Freestone, Prazenica, Saunders, Usbeck, Yaun. Cycle-1 Software Design Specification for FrugalPhone. November, 2006.
Freestone, Prazenica, Saunders, Usbeck, Yaun. Cycle-2 Software Requirements Specification for FrugalPhone. December, 2006.
Freestone, Prazenica, Saunders, Usbeck, Yaun. Cycle-2 Software Design Specification for FrugalPhone. January, 2006.
Freestone, Prazenica, Saunders, Usbeck, Yaun. Cycle-3 Software Requirements Specification for FrugalPhone. February, 2006.
1.5 OverviewThe table below provides the distribution of content across the sections in this document.
Section 1 This section of the document contains the purpose of this document, scope of the FrugalPhone system, important definitions, and references.
Section 2This section of the document contains the high-level overview of the system architecture as well as a beginning decomposition of the major system components.
Section 3 This section of the document details the user, data, and programming interfaces of the FrugalPhone system.
Section 4 This section of the document provides detailed design for all design entities of the FrugalPhone system.
8
2 Architectural DescriptionThis section of the document provides two different views of FrugalPhone, the Requirement Fulfillment View and the Component View.
9
2.1 Requirement Fulfillment ViewFrugalPhone fulfills certain functions defined in the Software Requirements Specification (SRS) (Cycle - 2 Software Requirements Specification, 2006). This view of the system provides insight into how the use cases and external data interface defined in the SRS are fulfilled by the design of FrugalPhone.
2.1.1 Use Case 1: Find Competitors’ Product Prices [SRS 2.3.1.1]
This use constitutes the primary use case of FrugalPhone. This process is illustrated in Figure 1 - Find Competitors' Product Prices Sequence Diagram. First the consumer selects their entry type method via the EntryTypeScreen(4.1.1.1). Depending on the selection, they are directed to the appropriate input screen, either UPCInputScreen(4.1.1.3) or ProductNameInputScreen(4.1.1.2). From these screens, the consumer enters a UPC code or product name to identify desired product(s). Once this information is entered by the user, the mobile device’s CommSystem(4.1.1.14) sends the data to the FrugalPhone server’s CommSystem(4.1.1.15). On the FrugalPhone server, the ProductInputDataHandler queries the database via the DBConnection(4.3.2.1). This query returns a PricingResultData(4.2.1.1) object which is passed all the way back to the mobile device. The mobile device then displays the information in the PricingResultData(4.2.1.1) using the PricingResultScreen(4.1.1.4).
10
Figure 1 - Find Competitors' Product Prices Sequence Diagram
2.1.2 Use Cases 2-6 [SRS 2.3.1.2-6]
Use Cases 2-6 involve the FrugalPhone server Admin Console, a JSP web application, whose navigation is illustrated in Figure 4 - Admin Console Screen Diagram and whose design is illustrated in Figure 48 - Admin Console Design.
2.1.3 Interface to Retailer Data [SRS 3.1.1.1]
This process is illustrated in Figure 2 - Interface to Retailer Data Sequence Diagram. The interface to retailer data is the avenue by which the FrugalPhone server gathers product pricing data. The ProductPricingDataImportTimingService(4.4.1) queries the database via a DBConnection(4.3.2.1) to determine the refresh rate and acquire a list of FeedFile(4.4.1.1) objects. When it is time to refresh, the ProductPricingDataImportTimingService(4.4.1) uses the FeedFile(4.4.1.1) list and XMLParser(4.4.1.2) to generate a list of PricingResultItem(4.2.1.2) objects stored in a ProductPricingData(4.4.1.3) object. Finally, the list of ProductPricingData(4.4.1.3) is used to update the product information in the database.
11
Figure 2 - Interface to Retailer Data Sequence Diagram
12
2.2 Component ViewThe FrugalPhone system can be divided into several components. Listed below are the five components of the system and the conceptual packages utilized within them.
Figure 3 - FrugalPhone Component Diagram
2.2.1 Mobile Device Decomposition
The Mobile Device component of the system is the software application that is running on the consumer’s Mobile Device. This component has the responsibility of sending data to and receiving data from the Mobile Device Interface as well as allowing the consumer to enter product input data and view pricing result data. The class diagram for the Mobile Device is shown in Figure 6 - Mobile Device Package Structure on page 22.
13
2.2.1.1 UI PackageThe UI Package is the collection of user interface screens that are displayed by the consumer’s Mobile Device. In addition to handling the display, this package is responsible for gathering and validating the consumer input. The UI Package also handles formatting the output that is displayed to the consumer, which includes pricing result data and any errors relevant to the consumer.
This package uses predefined components from the J2ME UI package.
2.2.1.2 GPS PackageThe GPS Package is responsible for determining the last known physical location of the Mobile Device.
2.2.1.3 Comm Package (Mobile Device)The Comm Package, part of the CommSystem, is responsible for managing the communication between the Mobile Device and the Mobile Device Interface from the perspective of the client. This package provides a means of wirelessly transmitting any class that implements Sendable. Please see the CommObjects Package in Section 142.2.2.2 for subclasses of Sendable.
*Note: This package is a Java ME compatible design of the Comm Package (FrugalPhone Server) in Section 2.2.2.1.
2.2.1.4 CommObjects PackageThe CommObjects Package contains the classes that are transferred between the Mobile Device Interface and Mobile Device.
The CommObjects Package also contains the utility classes shared between the Mobile Device and the Mobile Device Interface. These utilities include classes that handle remote addressing, transfer errors, and configuration parameters.
2.2.2 Mobile Device Interface Decomposition
The Mobile Device Interface is a component within the FrugalPhone Server. The responsibilities of the Mobile Device Interface include receiving product input data from the Mobile Device, performing queries against the FrugalPhone server database with that information, and formatting and returning the pricing result data.
2.2.2.1 Comm Package (FrugalPhone Server)The Comm Package, part of the CommSystem, is responsible for managing the communication between the Mobile Device and the Mobile Device Interface from the perspective of the FrugalPhone server. This package provides a means of wirelessly transmitting any class that implements Sendable. Please see the CommObjects Package in Section 142.2.2.2 for subclasses of Sendable.
2.2.2.2 CommObjects PackageSee the description provided in Section 2.2.1.4.
14
2.2.3 FrugalPhone Server Database Decomposition
The FrugalPhone Server Database is the component of the system that stores information needed for the application and provides utilities for accessing and manipulating that data. Please see Figure 33 - FrugalPhone Server Database Class Diagram for the database design.
2.2.3.1 DB PackageThe DB Package provides classes for accessing and manipulating data from the FrugalPhone Server Database. This package is used by the Mobile Device Interface and the Product Pricing Data Retailer Interface system components.
2.2.4 Product Pricing Data Retailer Interface Decomposition
The Product Pricing Data Retailer Interface is the component of the system that allows retailers to provide product pricing data feeds to the FrugalPhone system. A list of URLs for properly formatted data feed files is stored as the Product Pricing Data Location(s) FrugalPhone Server Management Parameter. These URLs are entered into the FrugalPhone Server Database by a system administrator via the Admin Console.
The Product Pricing Data Retailer Interface will refresh at a rate defined by the Product Pricing Data Refresh Rate, another FrugalPhone Server Management Parameter.
2.2.5 Admin Console Decomposition
The Admin Console is the component of the system that allows a system administrator to view the status of the FrugalPhone server, change the FrugalPhone Server Management Parameters, and manage system administrator accounts. This system component is implemented as a JSP-based web application. Please see Section 4.4.3 for details regarding the specific screens and classes.
2.2.5.1 AdminConsole PackageThe AdminConsole package is divided into two sub-packages, requesthandlers and datahandlers. This package is responsible for the data processing involved in the web application.
15
3 Interface Description
3.1 User InterfaceIn this section we will discuss the user interface for the Admin Console and the Mobile Device.
3.1.1 Admin Console User Interface
Figure 4 - Admin Console Screen Diagram
16
3.1.1.1 Level 0Login – The system administrator uses this page to log into the system using his or her
username and password. If the username and password are correct, the system displays AdminOptions. If the username and password are incorrect the system displays LoginErrorRetry.
LoginErrorRetry – The system administrator can attempt to log onto their account again on this page. The correct username and password combination must be entered for access. This page is displayed when an incorrect username and password is entered in Login.
3.1.1.2 Level 1AdminOptions – AdminOptions is displayed if the system administrator entered his or her
username and password correctly. The system administrator can then choose to display ManageSysAdmins, ViewStatus, or ManageServerParameters.
3.1.1.3 Level 2ManageSysAdmins – ManageSysAdmins is accessible from AdminOptions. The system
administrator can select several options from this screen to properly manage system administrator accounts. The possible options are ChangePassword, AddSysAdmin, and DeleteSysAdmin.
ViewStatus – ViewStatus is accessible from AdminOptions. The system administrator will use this screen to view information about the current status of the FrugalPhone Server.
ManageServerParameters – ManageServerParameters is accessible from AdminOptions. The system administrator will be able to alter parameters which affect how the FrugalPhone server operates. If the system administrator makes a change in ManageServerParameters, ParameterChangeConfirmation will be displayed. The server management parameters are addressed in the classes TimeoutConfigurationParameter(4.2.1.3), FeedFileListConfigurationParameter(4.4.1.4), and FeedFileRefreshRateConfigurationParameter(4.4.1.7).
3.1.1.4 Level 3aChangePassword – ChangePassword is accessible from ManageSysAdmins. The system
administrator will be able to change the password of an existing username. After changing the password, PasswordChangeConfirmation is displayed.
PasswordChangeConfirmation – This screen is displayed after a password is updated in ChangePassword. The system administrator receives confirmation that password was correctly changed.
AddSysAdmin – AddSysAdmin is accessible from AdminOptions. The system administrator can add a new username and password for a new system administrator account. After entering the new account information, SysAdminAddConfirmation is displayed.
17
SysAdminAddConfirmation – This screen is displayed after a new system administrator account is added to the system in AddSysAdmin. The system administrator receives confirmation that the account was correctly added.
DeleteSysAdmin – DeleteSysAdmin is accessible from AdminOptions. The system administrator can delete an existing system administrator account. After selecting the account to delete, the SysAdminDeleteConfirmation is displayed.
SysAdminDeleteConfirmation – This screen is displayed after an existing system administrator account is deleted from the system in DeleteSysAdmin. The system administrator receives confirmation that the account was deleted.
3.1.1.5 Level 3bParameterChangeConfirmation – This screen is displayed after system parameters have
been modified in ManageServerParameters. The system administrator receives confirmation that the parameters were correctly changed and that those changes were applied.
3.1.2 Phone User Interface
3.1.2.1 Screens
Figure 5 - Phone Screens Diagram
18
EntryTypeScreen – This is the first screen displayed when a consumer accesses FrugalPhone on a Mobile Device. EntryTypeScreen allows the user to choose whether to enter product information in the form of UPC code or product name. Depending on the choice, either UPCInputScreen or ProductNameInputScreen is displayed.
UPCInputScreen – This screen is accessible from EntryTypeScreen. UPCInputScreen allows the consumer to enter product information in the form of a UPC code. After the UPC code information is entered, PricingResultScreen is displayed.
ProductNameScreen – This screen is accessible from EntryTypeScreen. ProductNameInputScreen allows the consumer to enter product information in the form of a product name. After the product name is entered, PricingResultScreen is displayed.
PricingResultScreen – This screen is displayed after information is entered in either UPCInputScreen or ProductNameInputScreen. PricingResultScreen provides the consumer with the appropriate pricing data based on the product information that was entered.
19
3.1.2.2 Navigation Controls
Navigation on the Mobile Device is implemented similarly to common Mobile Device applications. Continuity of button functionality is sought between the operating system on the Mobile Device and the FrugalPhone application. The table below outlines the basic uses of common buttons on a Mobile Device and how they will be used in the FrugalPhone application.
Buttons Names Typical FunctionsSend Used to answer an incoming call, not
implemented by applicationCancel / Back / Home
Used to return the user to the “previous” state or home state
Pound Used to indicate the end of input
Star Used for non-alphanumeric input
Numeric Keypad
Used for alphanumeric input
Right / Left Option
Soft functions listed in bottom of screen corners
(Directional Keypad)Up / Down / Left / Right
Used to move on-screen selections or cursor in a certain non-diagonal direction
OK Button Used for verification
3.2 Data InterfaceFrugalPhone implements a data interface to gather product pricing data from retailers. This process works through the Product Pricing Data Retailer Interface which is described in Section 2.2.4 and Section . The format of the XML file used to provide the product pricing data is outlined in Section 4.4.2.
3.3 Programming InterfaceThe FrugalPhone system does not provide an external API.
20
4 Detailed DesignThis section provides details for the design components of FrugalPhone. Requirement traceability for each design component can be found at the end of each component's section. The design components of FrugalPhone are the Mobile Device, the Mobile Device Interface, the FrugalPhone Server Database, the Product Pricing Data Retailer Interface, and the Admin Console.
21
4.1 Mobile DeviceThis section of the SDS details the Java classes and user interface screens that are part of the Mobile Device design.
4.1.1 Mobile Device Classes
The Mobile Device component is composed of four packages and a driver. The UI package has the GUI screens displayed on the mobile device. The Comm package is used to wirelessly transmit data from the CommObjects package to the FrugalPhone Server. The classes in CommObjects are thus shared between the mobile device and the FrugalPhone server. The GPS package is used to query the mobile device’s GPS card.
Figure 6 - Mobile Device Package Structure
22
4.1.1.1 EntryTypeScreen
Figure 7 - EntryTypeScreen GUI
Figure 8 - EntryTypeScreen Class Diagram
Identification EntryTypeScreen
Type Class
Purpose The purpose of this class is to provide an interface for the consumer to select a product input data entry mode.
Function This class allows the Mobile Device to obtain a product input data entry type and forward the consumer to the appropriate next screen.
Subordinates None
Dependencies Javax.microedition.lcdui.List
Interface See screen above
Resources JVM is running
Data See Figure 8 - EntryTypeScreen Class Diagram for attributes.
23
4.1.1.2 ProductNameInputScreen
Figure 9 - ProductNameInputScreen GUI
Figure 10 - ProductNameInputScreen Class Diagram
Identification ProductNameInputScreen
Type Class
Purpose The purpose of this class is to provide an interface for the consumer to enter a product name.
Function This class allows the system to obtain a product name entered by the consumer.
Subordinates None
Dependencies Javax.microedition.lcdui.TextBox
Interface See screen above
Resources JVM is running
Data See Figure 10 - ProductNameInputScreen Class Diagram for attributes.
24
4.1.1.3 UPCInputScreen
Figure 11 - UPCInputScreen GUI
Figure 12 - UPCInputScreen Class Diagram
Identification UPCInputScreen
Type Class
Purpose The purpose of this class is to provide an interface for the consumer to enter a product UPC Code.
Function This class allows the system to obtain a product UPC Code entered by the consumer.
Subordinates None
Dependencies Javax.microedition.lcdui.TextBox
Interface See screen above
Resources JVM is running
Data See Figure 12 - UPCInputScreen Class Diagram for attributes.
25
4.1.1.4 PricingResultScreen
Figure 13 - PricingResultScreen GUI
Figure 14 - PricingResultScreen Class Diagram
Identification PricingResultScreen
Type Class
Purpose The purpose of this class is to provide the consumer with the requested pricing result data.
Function This class allows the system to display the pricing result data.
Subordinates None
Dependencies Javax.microedition.lcdui.List; PricingResultData
Interface See screen above
Resources JVM is running
Data See Figure 14 - PricingResultScreen Class Diagram for attributes.
26
4.1.1.5 PricingResultDetailScreen
Figure 15 - PricingResultDetailScreen GUI
Figure 16 - PricingResultDetailScreen Class Diagram
Identification PricingResultDetailScreen
Type Class
Purpose The purpose of this class is to provide the consumer with the requested pricing result data.
Function This class allows the system to display the pricing result data for a specific store/product combination.
Subordinates None
Dependencies javax.microedition.lcdui.Alert; PricingResultItem
Interface See screen above
Resources JVM is running;
Data See Figure 16 - PricingResultDetailScreen Class Diagram for attributes.
27
4.1.1.6 Sendable
Figure 17 - Sendable Class Diagram
Identification Sendable
Type Class
Purpose The purpose of this class is to provide a framework for objects that will be sent over the CommSystem.
Function This class provides a framework for objects that will be sent over the CommSystem.
Subordinates PricingResultData; PricingResultItem; ProductInputData; IPAddress; GPSLocation
Dependencies None
Interface This is an abstract class.
Resources JVM is running;
Processing None
Data See Figure 17 - Sendable Class Diagram for attributes.
28
4.1.1.7 ProductInputData
Figure 18 - ProductInputData Class Diagram
Identification ProductInputData
Type Class
Purpose The purpose of this class is to provide a consistent way to store all available types of product input data.
Function This class provides a framework for storing and sending the product input data that is input by the consumer.
Subordinates ProductNameInputData; ProductUPCInputData
Dependencies Sendable; IPAddress; GPSLocation
Interface This is an abstract class.
Resources JVM is running;
Processing None
Data See Figure 18 - ProductInputData Class Diagram for attributes.
29
4.1.1.8 ProductNameInputData
Figure 19 - ProductNameInputData Class Diagram
Identification ProductNameInputData
Type Class
Purpose The purpose of this class is to provide a way to store product input data of type product name.
Function This class provides a container for product name product input data.
Subordinates None
Dependencies ProductInputData
Interface This attributes of this class are only entered at construction time.
Resources JVM is running;
Processing None
Data See Figure 19 - ProductNameInputData Class Diagram for attributes.
30
4.1.1.9 ProductUPCInputData
Figure 20 - ProductUPCInputData Class Diagram
Identification ProductUPCInputData
Type Class
Purpose The purpose of this class is to provide a way to store product input data of type UPC Code.
Function This class provides a container for UPC Code product input data.
Subordinates None
Dependencies ProductInputData
Interface This attributes of this class are only entered at construction time.
Resources JVM is running;
Processing None
Data See Figure 20 - ProductUPCInputData Class Diagram for attributes.
31
4.1.1.10 IPAddress
Figure 21 - IPAddress Class Diagram
Identification IPAddress
Type Class
Purpose The purpose of this class is to represent network addressing for communication purposes.
Function This class serves as a container for network addresses.
Subordinates None
Dependencies Sendable
Interface This class provides a method to access a formatted string. This string is formatted “{0-255}.{0-255}.{0-255}.{0-255}”.
Resources JVM is running;
Processing This class checks the format of the input string.
Data See Figure 21 - IPAddress Class Diagram for attributes.
32
4.1.1.11 UPC
Figure 22 - UPC Class Diagram
Identification UPC
Type Class
Purpose The purpose of this class is to provide a consistent, well-formatted container for UPC Codes.
Function This class serves as a container for UPC Codes.
Subordinates None
Dependencies Sendable;
Interface This class provides a method to access a formatted string. This string is formatted as defined in GS1.
Resources JVM is running;
Processing This class checks the format of the input string.
Data See Figure 22 - UPC Class Diagram for attributes.
33
4.1.1.12 DeviceLocator
Figure 23 - DeviceLocator Class Diagram
Identification DeviceLocator
Type Class
Purpose The purpose of this class is to find the last known GPS location of the Mobile Device.
Function This class checks the Mobile Device’s internal database for the most recent GPS entry.
Subordinates None
Dependencies GPSLocation
Interface This class will provide a static function to query the Mobile Device’s GPS card.
Resources JVM is running; GPS card
Processing This class is responsible for parsing any raw GPS data and formatting it as a GPSLocation (see section 4.1.6).
Data See Figure 23 - DeviceLocator Class Diagram for attributes.
34
4.1.1.13 GPSLocation
Figure 24 - GPSLocation Class Diagram
Identification GPSLocation
Type Class
Purpose The purpose of this class is to provide an easily-transferable container for GPS Information.
Function This class provides a container for GPS data.
Subordinates None
Dependencies CommObjects
Interface This class accepts latitude and longitude in the form of degrees North or West
Resources JVM is running
Processing None
Data See Figure 24 - GPSLocation Class Diagram for attributes.
35
4.1.1.14 CommClient
Figure 25 - CommClient Class Diagram
Identification CommClient
Type Class
Purpose The purpose of this class is to provide a means of communicating with the Mobile Device Interface.
Function This class sends and receives classes that implement Sendable.
Subordinates None
Dependencies IPAddress; Sendable and its subordinates
Interface This is a singleton class that provides methods for sending and receiving Sendable objects.
Resources JVM is running; Discoverable External IP Address;
Processing This class determines the type of Sendable object and handles accordingly.
Data See Figure 25 - CommClient Class Diagram for attributes.
36
4.1.1.15 CommServer
Figure 26 - CommServer Class Diagram
Identification CommServer
Type Class
Purpose The purpose of this class is to provide a means of communicating with the Mobile Device.
Function This class sends and receives classes that implement Sendable.
Subordinates None
Dependencies IPAddress; Sendable and its subordinates
Interface This is a singleton class that provides methods for sending and receiving Sendable objects.
Resources JVM is running; Discoverable External IP Address
Processing This class determines the type of Sendable object and handles accordingly.
Data See Figure 26 - CommServer Class Diagram for attributes.
37
4.1.1.16 SendResult
Figure 27 - SendResult Class Diagram
Identification SendResult
Type Class
Purpose The purpose of this class is to provide feedback on success or failure of communications via the CommSystem.
Function This class contains information about transfer status.
Subordinates None
Dependencies None
Interface This class provides accessors and mutators for its attributes.
Resources JVM is running;
Processing None
Data See Figure 27 - SendResult Class Diagram for attributes.
38
4.1.2 Requirement Traceability Matrix
This section provides traceability between the detailed design in this section and the requirements set forth in the SRS (Cycle - 3 Software Requirements Specification, 2006).
Figure 28 - Mobile Device Traceability Matrix
39
4.2 Mobile Device InterfaceThis section of the SDS will detail the Java classes that receive data from the Mobile Device and use that data to query the FrugalPhone Server Database. These classes then format the results and send the pricing result data to the Mobile Device.
4.2.1 Mobile Device Interface Classes
This section details the classes that are used exclusively by the Mobile Device Interface component. The Mobile Device Interface additionally contains a desktop Java implementation of the classes in the Comm package and shares the CommObjects package with the Mobile Device (please see Figure 6 - Mobile Device Package Structure).
40
4.2.1.1 PricingResultData
Figure 29 - PricingResultData Class Diagram
Identification PricingResultData
Type Class
Purpose This purpose of this class is to provide an efficient way to group PricingResultItems.
Function This class allows for the storage and access of multiple PricingResultItems in a single container.
Subordinates None
Dependencies Sendable; PricingResultItem
Interface PricingResultsItems are added to this class.
Resources JVM is running;
Processing None
Data See Figure 29 - PricingResultData Class Diagram for attributes.
41
4.2.1.2 PricingResultItem
Figure 30 - PricingResultItem Class Diagram
Identification PricingResultItem
Type Class
Purpose The purpose of this class is to provide a container for a single product/location combination.
Function This class allows for the storage of a single record returned by a DBConnection query.
Subordinates None
Dependencies Sendable; Java.util.date
Interface This class provides accessors and mutators for its attributes.
Resources JVM is running;
Processing None
Data See Figure 30 - PricingResultItem Class Diagram for attributes.
42
4.2.1.3 TimeoutConfigurationParameter
Figure 31 - TimeoutConfigurationParameter Class Diagram
Identification TimeoutConfigurationParameter
Type Class
Purpose The purpose of this class is to provide a standard practice for accessing the timeout configuration parameter, which specifies the length of time to wait during a network transfer.
Function This class can be used to find and store the timeout configuration parameter.
Subordinates None
Dependencies DB.ConfigurationParameter
Interface This class is constructed with a value for the timeout configuration parameter. The timeout is measured in milliseconds.
Resources JVM is running;
Processing None
Data See Figure 31 - TimeoutConfigurationParameter Class Diagram for attributes.
43
4.2.2 Requirements Traceability Matrix
This section provides traceability between the detailed design in this section and the requirements set forth in the SRS (Cycle - 3 Software Requirements Specification, 2006).
Figure 32 - Mobile Device Interface Traceability Matrix
44
4.3 FrugalPhone Server DatabaseThis section of the SDS describes the tables contained in the FrugalPhone Server Database. It also details the classes of the DB Java package used by the Mobile Device Interface and the Product Pricing Data Retailer Interface to communicate with the database.
4.3.1 FrugalPhone Server Database Tables
The seven tables included in the FrugalPhone Server Database are designed below in Figure 33 - FrugalPhone Server Database Class Diagram. Data mappings between external XML data files and the Product, ProductPriceLocation, Location, Website, and Store tables can be found in Section 4.4.2.2.
Figure 33 - FrugalPhone Server Database Class Diagram
45
4.3.1.1 Product This table stores information about products.
4.3.1.2 ProductPriceLocationThis table stores current prices for products at given locations. This table allows the system to associate a product with a location that the product is offered as well as the price at the location. This table also provides information on whether the price is a sale or regular price.
4.3.1.3 Location This table stores information about locations that offer products.
4.3.1.4 Website This table stores information specific to online locations.
4.3.1.5 Store This table stores information specific to physical retailer locations.
4.3.1.6 ServerManagementParameter This table stores the management parameters that are used to run the FrugalPhone server with the exception of the feed file locations, which are stored in the FeedFile table.
4.3.1.7 FeedFileThis table stores a list of locations where retailer XML files are located.
4.3.1.8 SystemAdministrator This table stores the username and password for FrugalPhone system administrators as well as whether or not the system administrator is a super user.
46
4.3.2 FrugalPhone Server Database Classes
This section describes classes that are part of the DB package. These classes provide a layer of abstraction between the database and the rest of the application as well as a single point of access to the database.
4.3.2.1 DBConnection
Figure 34 - DBConnection Class Diagram
Identification DBConnection
Type Class
Purpose The purpose of this class is to have a single pathway for all connections to the FrugalPhone Server Database.
Function This class is an interface to the FrugalPhone Server Database to get and set configuration parameters as well as insert and extract product and pricing information.
Subordinates None
Dependencies ProductPricingData; DBResult; ProductInputData; PricingResultData; ConfigurationParameter
Interface This class is utilized via static function calls.
Resources JVM is running
Processing This class formats the information going into and coming out of the FrugalPhone Server Database.
Data See Figure 34 - DBConnection Class Diagram for attributes.
47
4.3.2.2 DBResult
Figure 35 - DBResult Class Diagram
Identification DBResult
Type Class
Purpose The purpose of this class is to provide feedback on success or failure of a database operation via the DBConnection.
Function This class contains information about database operation status.
Subordinates None
Dependencies None
Interface This class provides accessors and mutators for its attributes.
Resources JVM is running;
Processing None
Data See Figure 35 - DBResult Class Diagram for attributes.
48
4.3.2.3 ConfigurationParameter
Figure 36 - ConfigurationParameter Class Diagram
Identification ConfigurationParameter
Type Class
Purpose This purpose of this class is to provide a consistent way of handling entry and extraction of FrugalPhone Server Management Parameters from the database.
Function This class provides a framework for defining FrugalPhone Server Management Parameters.
Subordinates TimeoutConfigurationParameter; FeedConfigurationParameter
Dependencies None
Interface This is an abstract class.
Resources JVM is running;
Processing None
Data See Figure 36 - ConfigurationParameter Class Diagram for attributes.
49
4.3.3 Requirement Traceability Matrix
This section provides traceability between the detailed design in this section and the requirements set forth in the SRS (Cycle - 3 Software Requirements Specification, 2006).
Figure 37 - FrugalPhone Server Database Traceability Matrix
50
4.4 Product Pricing Data Retailer InterfaceThis section of the SDS details the Java classes that allow FrugalPhone to gather product pricing data from retailers. The classes that are used to place that data in the FrugalPhone Server Database are described in Section 4.3.
4.4.1 Product Pricing Data Retailer Interface Classes
The classes listed in this section are responsible for the transfer of the product pricing data from retailers’ XML feeds to the FrugalPhone Server Database. The classes listed below belong to the FeedParser package with the exception of the ProductPricingDataImportTimingService, which is responsible for driving the data import process at the time specified by the FeedFileRefreshRateConfigurationParameter object.
Figure 38 - Product Pricing Data Retailer Interface Package Structure
51
4.4.1.1 FeedFile
Figure 39 - FeedFile Class Diagram
Identification FeedFile
Type Class
Purpose The purpose of this class is to simplify adding product data feeds provided by retailers into the FrugalPhone Server Database.
Function This class provides a way to convert a file at a specified URL into ProductPricingData.
Subordinates None
Dependencies URL; ProductPricingData
Interface This class is constructed with a feed URL and converted to ProductPricingData via a function call.
Resources JVM is running
Processing This class converts a feed file into ProductPricingData
Data See Figure 39 - FeedFile Class Diagram for attributes.
52
4.4.1.2 XMLParser
Figure 40 - XMLParser Class Diagram
Identification XMLParser
Type Class
Purpose The purpose of this class is to provide a robust method for parsing specifically formatted XML files into ProductPricingData objects.
Function This class parses XML files for product pricing data.
Subordinates None
Dependencies org.xml.sax.helpers.DefaultHandler
Interface A new instance of this class is instantiated. Then, all feed files can be converted to ProductPricingData via the getPricingData() method.
Resources JVM is running;
Processing None
Data See Figure 40 - XMLParser Class Diagram for attributes.
53
4.4.1.3 ProductPricingData
Figure 41 - ProductPricingData Class Diagram
Identification ProductPricingData
Type Class
Purpose The purpose of this class is to provide a framework for objects that are used for sharing product pricing data between the XMLParser and DBConnection.
Function This class holds product pricing data.
Subordinates StoreProductPricingData, WebsiteProductPricingData
Dependencies com.frugalphone.commobjects.UPC
Interface This class is an abstract class.
Resources JVM is running;
Processing None
Data See Figure 41 - ProductPricingData Class Diagram for attributes.
54
4.4.1.4 StoreProductPricingData
Figure 42 - StoreProductPricingData Class Diagram
Identification StoreProductPricingData
Type Class
Purpose The purpose of this class is to provide a container for objects that are used for sharing product pricing data between the XMLParser and DBConnection.
Function This class holds product pricing data for physical retailers.
Subordinates None
Dependencies ProductPricingData
Interface This class can be constructed with all parameters or no parameters. Then, all members are available via accessors and mutators.
Resources JVM is running;
Processing None
Data See Figure 42 - StoreProductPricingData Class Diagram for attributes.
55
4.4.1.5 WebsiteProductPricingData
Figure 43 - WebsiteProductPricingData Class Diagram
Identification WebsiteProductPricingData
Type Class
Purpose The purpose of this class is to provide a framework for objects that are used for sharing product pricing data between the XMLParser and DBConnection.
Function This class holds product pricing data for websites.
Subordinates None
Dependencies ProductPricingData
Interface This class can be constructed with all parameters or no parameters. Then, all members are available via accessors and mutators.
Resources JVM is running;
Processing None
Data See Figure 43 - WebsiteProductPricingData Class Diagram for attributes.
56
4.4.1.6 FeedFileListConfigurationParameter
Figure 44 - FeedFileListConfigurationParameter Class Diagram
Identification FeedFileListConfigurationParameter
Type Class
Purpose The purpose of this class is to provide methods to extract, add, and clear the list of retailer feed files from the FrugalPhone Server Database.
Function This class manages the list of retailer feed files in the FrugalPhone Server Database.
Subordinates None
Dependencies DB.ConfigurationParameter
Interface This class is only meant to be constructed in the DB package and is the result of a specific database query. Once an instance of this class is acquired, it provides methods to mutate and access the list of FeedFile objects.
Resources JVM is running;
Processing None
Data See Figure 44 - FeedFileListConfigurationParameter Class Diagram for attributes.
57
4.4.1.7 FeedFileRefreshRateConfigurationParameter
Figure 45 - FeedFileRefreshRateConfigurationParameter Class Diagram
Identification FeedFileRefreshRateConfigurationParameter
Type Class
Purpose The purpose of this class is to provide methods to view and edit the refresh rate for importing retailer feed files.
Function This class manages the refresh rate of retailer feed files in the FrugalPhone Server Database.
Subordinates None
Dependencies DB.ConfigurationParameter
Interface This class is only meant to be constructed in the DB package and is the result of a specific database query. Once an instance of this class is acquired, it provides methods to mutate and access the retailer feed file refresh rate.
Resources JVM is running;
Processing None
Data See Figure 45 - FeedFileRefreshRateConfigurationParameter Class Diagram for attributes.
58
4.4.2 Product Pricing Data Retailer Interface Files
This section contains details about the formatting of retailer feed files.
4.4.2.1 Retailer Product Pricing Data FileIdentification Retailer Product Pricing Data File
Type File
Purpose The purpose of this file is to provide, in a well-formatted manner, the product pricing data.
Function This file stores the product pricing data.
Subordinates None
Dependencies None
Interface This file must be formatted in standard XML using the tag structure below. It is possible to have multiple stores in the same file. Likewise, it is possible to have multiple products in each store. A store can either be of type “store” or “website”.
Resources The URL of the file must be accessible and readable from the FrugalPhone Server.
Processing None
59
Data
60
4.4.2.2 Product Pricing Data File to Database MappingThis section contains a table relating tags and attributes in the Retailer Product Pricing Data File to tables and columns in the FrugalPhone Server Database.
Figure 46 - XML to Database Mapping
61
4.4.3 Requirement Traceability Matrix
This section provides traceability between the detailed design in this section and the requirements set forth in the SRS (Cycle - 3 Software Requirements Specification, 2006).
Figure 47 - Product Pricing Data Retailer Interface Traceability Matrix
62
4.5 Admin ConsoleThis section of the SDS details the Java classes/beans, JSP pages, and user interface screens used to implement the Admin Console.
Figure 48 - Admin Console Design, on the next page, illustrates the interaction of all classes and screens of the Admin Console. This figure only illustrates downward flow. At any screen in any level, it is possible to return directly to any of the lower-numbered levels. The master screen for each level is denoted by gray shading. Please note that Level 3a returns to the ManageSysAdmins screen and Level 3b returns to the ManageServerParameters screen.
63
Figure 48 - Admin Console Design
64
4.5.1 Admin Console Screens
This section provides details for the screens of the Admin Console.
4.5.1.1 Login
Figure 49 - Login Screen
Identification Login
Type Web page (HTML)
Purpose The purpose of this screen is to allow system administrators to access the system using a username/password.
Function This screen allows the Admin Console to obtain a system administrator’s username and password for validation.
Subordinates AdminOptions
Dependencies None
Interface See screen above
Resources Web server is running
Processing None
Data None
65
4.5.1.2 LoginErrorRetry
Figure 50 - LoginErrorRetry Screen
Identification LoginErrorRetry
Type Web page (HTML)
Purpose The purpose of this screen is to inform system administrators that his/her login attempt was unsuccessful and provide him/her with another opportunity to login.
Function This screen allows the Admin Console to provide the system administrator with a login error message and obtain the system administrator’s username and password for validation.
Subordinates AdminOptions
Dependencies LoginRequestHandler
Interface See screen above
Resources Web server is running
Processing None
Data None
66
4.5.1.3 AdminOptions
Figure 51 - AdminOptions Screen
Identification AdminOptions
Type Web page (HTML)
Purpose The purpose of this screen is to provide the system administrator with the ability to choose one of the administration options: view server status, change management parameters, and manage system administrator accounts.
Function This screen allows the Admin Console to obtain a system administrator’s choice for an administration option.
Subordinates ManageSysAdmins; ViewStatus; ManageServerParameters
Dependencies LoginRequestHandler
Interface See screen above
Resources Web server is running
Processing None
Data None
67
4.5.1.4 ManageSysAdmins
Figure 52 - ManageSysAdmins Screen
Identification ManageSysAdmins
Type Web page (HTML)
Purpose The purpose of this screen is to provide the system administrator with the ability to choose one of the options for managing system administrator accounts: change system administrator password, add system administrator, and delete system administrator.
Function This screen allows the Admin Console to obtain a system administrator’s choice for a system administrator account management option.
Subordinates ChangePassword; AddSysAdmin; DeleteSysAdmin
Dependencies None
Interface See screen above
Resources Web server is running
Processing None
Data None
68
4.5.1.5 ViewStatus
Figure 53 - ViewStatus Screen
Identification ViewStatus
Type Web page (JSP)
Purpose The purpose of this screen is to provide the system administrator with current information about the operation of the FrugalPhone Server.
Function This webpage allows the Admin Console to provide the system administrator with current information about the operation of the FrugalPhone Server.
Subordinates None
Dependencies ServerStatusBean
Interface See screen above
Resources Web server is running
Processing None
Data None
69
4.5.1.6 ManageServerParameters
Figure 54 - ManageServerParameters Screen
Identification ManageServerParameters
Type Web page (JSP)
Purpose The purpose of this screen is to allow the system administrator to view current FrugalPhone Server Management Parameter values and to change those values.
Function This screen allows the Admin Console to display the current FrugalPhone Server Management Parameter values and obtain input from the system administrator for new values.
Subordinates ParameterChangeConfirmation
Dependencies ServerManagementParameterBean
Interface See screen above
Resources Web server is running
Processing None
70
Data None
4.5.1.7 ParameterChangeConfirmation
Figure 55 - ParameterChangeConfirmation Screen
Identification ParameterChangeConfirmation
Type Web page (HTML)
Purpose The purpose of this screen is to provide information to the system administrator about the success or failure of an attempted FrugalPhone Server Management Parameter change.
Function This screen allows the Admin Console to inform the system administrator of the success or failure of a FrugalPhone Server Management Parameter change.
Subordinates None
Dependencies ServerManagementParameterChanger
Interface This web page will display a confirmation of the success or failure of changing FrugalPhone Server Management Parameter(s).
Resources Web server is running
Processing None
Data None
71
4.5.1.8 ChangePassword
Figure 56 - ChangePassword Screen
Identification ChangePassword
Type Web page (JSP)
Purpose The purpose of this screen is to provide the system administrator with the ability to change his/her password.
Function This screen allows the Admin Console to obtain a new password from the current system administrator.
Subordinates PasswordChangeConfirmation
Dependencies ManageSysAdminsOptionRequestHandler; AdminConsoleSession
Interface This web page will display three text boxes to fill out to change the current system administrator’s password. One text box will be to verify the old password and the other two will be to type and re-type the new password.
Resources Web server is running
Processing None
72
Data None
4.5.1.9 AddSysAdmin
Figure 57 - AddSysAdmin Screen
Identification AddSysAdmin
Type Web page (HTML)
Purpose The purpose of this screen is to provide the system administrator with the ability to add a new system administrator.
Function This screen allows the Admin Console to obtain a new username and password from the current system administrator to be stored in the FrugalPhone Server Database SystemAdministrator table (Section 4.3.7).
Subordinates SysAdminAddConfirmation
Dependencies ManageSysAdminsOptionRequestHandler; SysAdminsBean
Interface This web page will display three text boxes. One text box will be for the new system administrator username and the other two will be to type and re-type the new password.
73
Resources Web server is running
Processing None
Data None
4.5.1.10 DeleteSysAdmin
Figure 58 - DeleteSysAdmin Screen
Identification DeleteSysAdmin
Type Web page (JSP)
Purpose The purpose of this screen is to provide the system administrator with the ability to delete an existing system administrator.
Function This screen allows the Admin Console to obtain the username of an existing system administrator to delete from the FrugalPhone Server Database SystemAdministrator table (Section 4.3.7).
Subordinates SysAdminDeleteConfirmation
Dependencies ManageSysAdminsOptionRequestHandler; SysAdminsBean
Interface This web page will display a list of current system administrator accounts with a checkbox next to each account. The web page will also include a button that is pressed to delete the checked accounts.
74
Resources Web server is running
Processing None
Data None
4.5.1.11 PasswordChangeConfirmation
Figure 59 - PasswordChangeConfirmation Screen
Identification PasswordChangeConfirmation
Type Web page (HTML)
Purpose The purpose of this screen is to provide information to the system administrator about the success or failure of an attempted password change.
Function This screen allows the Admin Console to inform the system administrator of the success or failure of and attempted password change.
Subordinates None
Dependencies SysAdminPasswordChanger
Interface This web page will display a success message or error.
Resources Web server is running
75
Processing None
Data None
4.5.1.12 SysAdminAddConfirmation
Figure 60 - SysAdminAddConfirmation Screen
Identification SysAdminAddConfirmation
Type Web page (HTML)
Purpose The purpose of this screen is to provide information to the system administrator about the success or failure of an attempted addition of a system administrator account.
Function This screen allows the Admin Console to inform the system administrator of the success or failure of and attempted addition of a system administrator account.
Subordinates None
Dependencies SysAdminAdder
Interface This web page will display a success message with the added
76
system administrator’s username or an error message.
Resources Web server is running
Processing None
Data None
4.5.1.13 SysAdminDeleteConfirmation
Figure 61 - SysAdminDeleteConfirmation Screen
Identification SysAdminDeleteConfirmation
Type Web page (HTML)
Purpose The purpose of this screen is to provide information to the system administrator about the success or failure of an attempted deletion of a system administrator account.
Function This screen allows the Admin Console to inform the system administrator of the success or failure of and attempted deletion of a system administrator account.
Subordinates None
Dependencies SysAdminDeleter
77
Interface This web page will display a success message with the deleted system administrators’ username(s) or an error message.
Resources Web server is running
Processing None
Data None
4.5.2 Admin Console Classes
The Admin Console classes are distributed across two packages, the requesthandler package and the datahandler package. The requesthandler package consists of classes that handle incoming HTTP requests from web pages, carry out any associated processing, and forward requests to the appropriate web page. The datahandler package contains classes that store data accessed by JSP web pages.
78
Figure 62 - Admin Console Package Structure
4.5.2.1 LoginRequestHandler
Figure 63 - LoginRequestHandler Class Diagram
Identification LoginRequestHandler
Type Class
Purpose The purpose of this class is to validate login information entered in the login screen and provide the system administrator access to the administrator options screen
Function This class allows the system to validate data entered into the login screen and forward the HTTP request to the appropriate web page – AdminOptions or LoginErrorReentry.
Subordinates None
Dependencies Javax.servlet.http.HttpServlet
Interface This servlet receives a page request from the login page and
79
forwards the request to the appropriate page.
Resources JVM is running
Processing This class determines whether a give username/password combination is valid and forwards the request accordingly.
Data See Figure 63 - LoginRequestHandler Class Diagram for attributes.
4.5.2.2 AdminOptionRequestHandler
Figure 64 - AdminOptionRequestHandler Class Diagram
Identification AdminOptionRequestHandler
Type Class
Purpose The purpose of this class is to forward system administrators to the appropriate page depending on the administration task that is chosen.
Function This class forwards the HTTP request to the appropriate page based upon the administration option choice made by the system administrator: manage server parameters, view server status, or manage system administrator accounts.
Subordinates None
Dependencies Javax.servlet.http.HttpServlet
Interface This servlet receives requests and forwards the HTTP requests to web pages.
Resources JVM is running
Processing This class processes incoming requests.
80
Data See Figure 64 - AdminOptionRequestHandler Class Diagram for attributes.
4.5.2.3 ServerManagementParametersBean
Figure 65 - ServerManagementBean Class Diagram
Identification ServerManagementParametersBean
Type Class
Purpose The purpose of this class is to provide a storage place for FrugalPhone Server Management Parameters that need to be displayed in a JSP web page.
Function This class stores the FrugalPhone Server Management Parameters in a form accessible to web pages.
Subordinates None
Dependencies Java.io.serializable
Interface This class is serialized so that it can be read from a JSP page.
Resources JVM is running
Processing None
Data See Figure 65 - ServerManagementBean Class Diagram for attributes.
81
4.5.2.4 ServerStatusBean
Figure 66 - ServerStatusBean Class Diagram
Identification ServerStatusBean
Type Class
Purpose The purpose of this class is to provide a storage place for the FrugalPhone Server Status that needs to be displayed in a JSP web page.
Function This class stores the FrugalPhone Server Status in a form accessible to web pages.
Subordinates None
Dependencies Java.io.serializable
82
Interface This class is serialized so that it can be read from a JSP page.
Resources JVM is running
Processing None
Data See Figure 66 - ServerStatusBean Class Diagram for attributes.
4.5.2.5 ServerManagementParameterChanger
Figure 67 - ServerManagementParameterChanger Class Diagram
Identification ServerManagementParameterChanger
Type Class
Purpose The purpose of this class is to provide the ability to change FrugalPhone Server Management Parameters and display a confirmation of success or failure.
Function This class receives an HTTP request with data that it uses to change FrugalPhoneServer Management Parameter values and display a confirmation page.
Subordinates None
Dependencies Javax.servlet.http.HttpServlet
Interface This servlet receives a page request with data that it uses to update server management parameters.
83
Resources JVM is running
Processing This server determines how to update the database with the new values.
Data See Figure 67 - ServerManagementParameterChanger Class Diagram for attributes.
4.5.2.6 ManageSysAdminsOptionRequestHandler
Figure 68 - ManageSysAdminsOptionRequestHandler Class Diagram
Identification ManageSysAdminsOptionRequestHandler
Type Class
Purpose The purpose of this class is to provide a traffic controller for directing system administrator account management requests to the correct web page.
Function This class receives an HTTP request and depending on the value of the data with the request forwards the request to the appropriate web page: change password, add system administrator account, or delete system administrator account.
Subordinates None
Dependencies Javax.servlet.http.HttpServlet
Interface This servlet receives requests and forwards the HTTP requests to web pages.
84
Resources JVM is running
Processing This class processes incoming requests.
Data See Figure 68 - ManageSysAdminsOptionRequestHandler Class Diagram for attributes.
4.5.2.7 SysAdminBean
Figure 69 - SysAdminsBean Class Diagram
Identification SysAdminBean
Type Class
Purpose The purpose of this class is to provide a storage place for the list of system administrators that can be accessed by a JSP web page.
Function This class stores the system administrator information in a form that can be accessed by JSP web pages.
Subordinates None
Dependencies Java.io.serializable
Interface This class is serialized so that it can be read from a JSP page.
Resources JVM is running
Processing None
Data See Figure 69 - SysAdminsBean Class Diagram for attributes.
85
4.5.2.8 SysAdminManager
Figure 70 - SysAdminManager Class Diagram
Identification SysAdminManager
Type Class
Purpose The purpose of this class is to handle requests to add a system administrator, modify a system administrator’s password, or delete a system administrator.
Function This class receives one of three requests (add/modify/delete) and performs the appropriate update in the FrugalPhone Database.
Subordinates None
Dependencies Javax.servlet.http.HttpServlet
86
Interface This servlet receives requests and then processes them before forwarding the request to the next web page.
Resources JVM is running
Processing This class processes incoming requests, determines what type of request is received (add/modify/delete), and performs the appropriate action.
Data See Figure 70 - SysAdminManager Class Diagram for attributes.
4.5.2.9 AdminConsoleSession
Figure 71 - AdminConsoleSession Class Diagram
Identification AdminConsoleSession
Type Class
Purpose The purpose of this class is to provide the Admin Console with a method of tracking data about the logged-in system administrators.
Function This class stores information about the current Admin Console session.
Subordinates None
Dependencies Javax.servlet.http.HttpSession
Interface This class would provide data to other classes via accessors.
Resources JVM is running
Processing None
Data See Figure 71 - AdminConsoleSession Class Diagram for attributes.
87
88
4.5.3 Requirements Traceability Matrix
This section provides traceability between the detailed design in this section and the requirements set forth in the SRS (Cycle - 3 Software Requirements Specification, 2006).
Figure 72 - Admin Console Traceability Matrix
89