University of Houston–Clear Lake



Team 11

Software Requirements for the Smart Shopper Application for the iPhone.

Introduction

1 Purpose

The purpose of this document is to guide programmers and designers in the creation of the iPhone application Smart Shopper, and to serve as a measure to compare the described version of Smart Shopper against the delivered version of Smart Shopper.

2 Scope

The document contains a complete description of the functionality of "Smart Shopper" including function requirements, nonfunctional requirements, use cases, definitions, and miscellaneous items

3 Overview

The purpose of the Smart Shopper application is to allow its user to compose a shopping list from a list of products available at a single store. To accomplish this the application has two parts: a remote server application accessible over the Internet that holds lists of stores, products available in the store, and products which have discount coupons; and a client application residing on a handheld mobile device (an iPhone) which contacts the server using its available Internet access (via EDGE, 3G, CDMA, or wi-fi) and on which a user (or shopper) composes and manages shopping lists.

The server application has three parts that (1) wait for a connection to be established from the mobile device, (2) fetch store, product, or coupon data depending on the type of request, and (3) format and return the data to the mobile device.

The client application on the mobile device has four parts that (1) request from the server and present to the user a list of stores, allowing a user to choose one store from a list of stores; (2) request from the server and present to the user a list of products available at one store, allowing the user to select among products available at the chosen store; (3) allow the user to arrange and manage the selected list of products; and (4) request from the server and present to the user a discount coupon for one product.

Definitions

1 Application

By context, one of three applications: the complete application, the client application, or the server application.

2 Client

That portion of the Smart Shopper application residing on the iPhone; also called the "Client Application" and "Mobile Application."

3 Complete Application

The totality of the client and server applications.

4 Database

A client or server database; on server this refers its stored information about stores, products, and coupons; on the client this refers to its stored information about stores, products, and coupons supplied by the server with the additional information the client has added (for example, that an item on the Product List is now on the Shopping List).

5 Database, Coupon

On the Server, the Coupon Database is the up-to-date list of all coupons for all products at all stores. On the client, the Coupon Database is a view of of the Grocery Store Item Database. The client Coupon Database contains only those coupons for products available at the grocery store the client has chosen. On the client this database may be incomplete or out-of-date.

6 Database, Shopping List

On the Client, the Shopping List Database is a view of the client's Grocery Store Item Database which lists only the products for which the user has chosen to shop. For each item on the Shopping List, the shopper may mark it as selected (that is, "in cart"). Unselected items are still "on shelf" or "not in cart" or "overlooked."

7 Database, Grocery Store

On the Server, the Grocery Store Database is the up-do-date list of existing stores. On the client, the Grocery Store Database is the a list of grocery stores provided by the server. The client database may be incomplete or out-of-date.

8 Database, Product

On the Server, the Product (or "Grocery Store Item") Database is the current list of items (or "products") available at all grocery stores. On the client the Grocery Store Item Database is a list of products available at a single store, the store at which the shopper has chosen to shop. The client database may be incomplete or out-of-date.

9 Deliverables

Executable code, source code, code documentation, user guide, reference guide, and user manual.

1 Discount Coupon (also "Coupon")

A discount for a product at a particular store.

10 Grocery Store

A store supplying products whose Product List is available to the Smart Shopper client application.

11 Grocery Store Item

A product for sale at a grocery story; also "Product."

12 Grocery Store Item List

The list of products for sale at a grocery story; also "Product List."

13 Mobile Application

That portion of the Smart Shopper application residing on the iPhone; also called the "Client Application" and "Client."

14 Mobile Device

An iPhone running version 3.1 or later of the iOS operating system. Note: not an iPad or iPod touch, though the client application may function on these devices.

15 Product

An item for sale at a grocery store.

16 Product List

The list of products for sale at a grocery store.

17 Server (also Server Application)

That portion of the Smart Shopper application accessible over the web by the client. The server supplies lists of grocery stores, a list of products available at the chosen grocery store, and discount coupons for products available at the chosen grocery store.

18 Shopper

The user of the client application, who chooses a grocery store, reads the list of products available at a chosen grocery store, creates a Shopping List from the list of products, marks items on the Shopping List as selected from the shelves, and shows discount coupons to the cashier at a grocery store.

19 Shopping List

The subset of products on a products lists chosen by the shopper as items for which to shop. An item may be on or off the shopping list. An item on the Shopping List may be in the cart or overlooked (not in the cart).

Use Cases

[pic]

System Use Case

2 Client-Server Use Cases

|Client Requests List of Grocery Stores |

|Summary |The client application connects to the server application via the Internet to |

| |receive a list of grocery stores. |

|Users |A shopper using the client application. |

|Preconditions |No special preconditions. |

|Course of Events |Shopper requests list of nearby grocery stores. |

| |Client sends zip code or geographic position to server. |

| |Server responds with list of nearby grocery stores. |

| |Client orders the list. |

|Alternate Courses |If the client is unable to connect to the server or the server fails to respond to |

| |the client, an error message is displayed. |

|Postconditions |A list of grocery stores held in the client database. |

[pic]

|Client Requests List of Products |

|Summary |The client application connects to the server application via the Internet to |

| |receive a list of products available at a particular grocery store. |

|Users |A shopper using the client application. |

|Preconditions |Client has displayed list of grocery stores to shopper. |

|Course of Events |Shopper selects a grocery store at which to shop. |

| |Client connects to the server to request a list of products available at the |

| |shopper’s chosen grocery store. |

| |Server responds with the list of products available at the chosen grocery store. |

|Alternate Courses |If the client is unable to connect to the server or the server fails to respond to |

| |the client, an error message is displayed. |

|Postconditions |A list of products held in the client database. |

[pic]

|Client Requests Discount Coupon |

|Summary |The client application connects to the server application via the Internet to |

| |request a discount coupon for a particular product available at a particular grocery|

| |store. |

|Users |A shopper using the client application. |

|Preconditions |The shopper has chosen a grocery store and a product available at the grocery store.|

|Course of Events |Shopper selects a product from a shopping list |

| |Client connects to the server to request the discount coupon for that product and |

| |for the store at which the product is available. |

| |Server responds with an image of the discount coupon. |

|Alternate Courses |If the client is unable to connect to the server or the server fails to respond to |

| |the client, an error message is displayed. |

| |If no discount coupon exists, the client notifies the shopper. |

|Postconditions |The discount coupon is stored on the client. |

[pic]

4 Shopper-Client Use Cases

|Shopper Opens Client Application |

|Summary |The shopper opens the client application. |

|Users |A shopper using the client application installed on the mobile device. |

|Preconditions |No special preconditions. |

|Course of Events |Client opens the “Smart Shopper” client application. |

| |Client displays either the last screen which the shopper used when the application |

| |was closed or suspended, or, if the last screen is not available, the shopper must |

| |choose a grocery store at which to shop. |

|Alternate Courses |None. |

|Postconditions |None. |

[pic]

|Shopper Searches for a Grocery Store |

|Summary |The shopper searches for a nearby grocery store. |

|Users |A shopper using the client application. |

|Preconditions |The client application shows the “search for a grocery store” screen. |

|Course of Events |The shopper enters a zip code into the search box. |

| |The client fetches a list of nearby grocery stores from the server. |

| |The client displays the list of stores to the shopper. |

|Alternate Courses |If the client is unable to connect to the server or the server fails to respond to |

| |the client, an error message is displayed. |

| |If the client has a list of grocery stores corresponding to the shopper’s zip code, |

| |the client displays the locally-stored list of grocery stores. |

|Postconditions |A list of nearby grocery stores in held in the client database and shown to the |

| |shopper. |

|Shopper Chooses a Grocery Store |

|Summary |The shopper chooses a grocery store from available grocery stores; the client |

| |downloads the list of products available at the chosen grocery store. |

|Users |A shopper using the client application. |

|Preconditions |A list of nearby grocery stores. |

|Course of Events |Shopper chooses a grocery store from the list of nearby grocery stores. |

| |Client application downloads from the server the list of products available at the |

| |chosen grocery store. |

| |Client displays to the shopper the list of products. |

|Alternate Courses |If the client is unable to connect to the server or the server fails to respond to |

| |the client, an error message is displayed. |

| |If the client application has stored in its database the list of products for the |

| |chosen grocery store, the server is not contacted and the stored list is displayed. |

|Postconditions |A list of products available at the chosen store is held in the client database and |

| |shown to the shopper. |

|Shopper Adds Product to Shopping List |

|Summary |The shopper chooses a product from the Product List. The status of the product |

| |visibly changes. The product is added to the Shopping List. |

|Users |A shopper using the client application. |

|Preconditions |Shopper is viewing a list of products available at the chosen grocery store. |

|Course of Events |Shopper selects product from Product List. |

| |Status of Product changes from “off list” to “on list.” |

| |Product is added to Shopping List. |

|Alternate Courses |None. |

|Postconditions |Product is added to Shopping List; a new Shopping List is created, if necessary. |

|Shopper Removes Product from Shopping List |

|Summary |The shopper selects a product from the Product List. The status of the product |

| |visibly changes. The product is removed from the Shopping List. |

|Users |A shopper using the client application. |

|Preconditions |Shopper is viewing a list of products available at the chosen grocery store. |

|Course of Events |Shopper selects product from Product List |

| |Status of product changes from “on list” to “off list” |

| |Product is removed from Shopping List. |

|Alternate Courses |None. |

|Postconditions |Product is removed from Shopping List. |

|Shopper Sorts List of Products |

|Summary |The shopper sorts lists of products. List is sorted by aisle or name. |

|Users |A shopper using the client application. |

|Preconditions |Shopper is viewing the Product List or the Shopping List. |

|Course of Events |The Shopper sorts list by product name or product aisle |

| |The list is sorted. |

|Alternate Courses |None. |

|Postconditions |List is sorted. |

|Shopper Chooses to View Items on a Single Aisle |

|Summary |The shopper wishes to view all items on a common aisle. |

|Users |A shopper using the client application. |

|Preconditions |Shopper is viewing the Product List or the Shopping List. |

|Course of Events |Shopper chooses to show all items on the same aisle as a selected item. |

| |All items on the aisle are shown. |

|Alternate Courses |None. |

|Postconditions |Items on a single aisle are displayed. |

|Notes |This does not require display of only items on a single aisle. It is possible to |

| |fulfill this requirement by sorting products by aisle, then scrolling to the section|

| |of the sorted list corresponding to the chosen aisle. |

|Shopper Searches List of Products |

|Summary |The shopper searches a list of products. Only matching items (fi any) are displayed.|

|Users |A shopper using the client application. |

|Preconditions |Shopper is viewing the Product List or the Shopping List. |

|Course of Events |Shopper searches for a string of text. |

| |Display changes to show matching items. |

|Alternate Courses |If no items match the search, a warning is displayed and the display returns to its |

| |status prior to the search. |

|Postconditions |A list of matching items. |

[pic]

Functional Requirements

1 Server

A rich and robust server application is not part of the deliverables for this project. The Smart Shopper server application need only respond to the requests from the client. No means is provided to add data to the server, delete data from the server, or update data on the server. The form of the database from which the server will select data in response to client request is entirely at the discretion of the development team: they may choose any means to implement the server and its database.

1 Client Requests List of Grocery Stores

The client may request a list of grocery stores by sending the server a zipcode. The server will respond with stores in that and nearby zip codes, formatted for inclusion in the client’s database.

2 Client Requests List of Products

The client may request a list of products by sending the server a unique identification number for a particular grocery store.

3 Client Requests Coupon for a Product

The client may request a coupon for a product sold at a particular grocery store by sending the server a unique identification number for a particular grocery store and a unique identification number for a particular product.

2 Client

1 Grocery Stores

1 List of Grocery Stores

The shopper chooses a single grocery store from a list (or optionally, a map). A single grocery store must be chosen from the list (or map) of stores before the server can send the client the list of products available at that store. This list will be stored in the client’s database and will be used instead of requesting another copy from the server.

2 Grocery Store Map

(Optional requirement) The list of grocery stores should display on a map, allowing the shopper to choose a local grocery store. The user chooses a store by selecting it from the map.

3 Expiry Date

(Optional requirement) The list of grocery stores will have an expiry date of six months, after which the list must be deleted from the client and replaced with a new list.

4 Replacement of Old List with New List

When a list of grocery stores arrives from the server, it replaces the old list stored on the client. If a grocery store is on the old list, but not on the new list, the old grocery store and its product and shopping lists are deleted from the client databases.

5 Server Fails to Respond

If server fails to respond, the application will display a stored list, if one exists. If no stored list exists, an error message shown to the user.

6 Memory

The client will remember the last grocery store chosen by the user.

2 Product List

1 List of Products

After the shopper has chosen a grocery store, the client will display either a list of products available at the store or an error message indicating the server cannot be contacted. If a Product List is available, it will be displayed so that the shopper can choose items from the Product List to be "moved" to the Shopping List. If the server is unavailable, the client will use a stored list of products. If a stored list of products for the chosen store is not available, an error message will be displayed to the user.

2 Default State

The default state of an item on the Product List is as an item "not to be purchased," that is, an item on the Product List is not an item on the Shopping List unless and until the shopper chooses to "move" an item to the Shopping List. An item not on the Shopping List is “off [the Shopping] list.” An item included in the Shopping List is “on [the Shopping] list.”

3 Number of Lists Stored

Only one Product List for particular grocery store will be stored on the mobile device. Only two Product Lists (necessarily from different grocery stores) will be stored on the mobile device, once a third Product List is requested from the server, the least-used Product List will be purged.

4 Expiry Date

(Optional requirement) Lists of products available have an expiry date of one month, after which the list must be deleted and replaced with a new list.

5 New List Replaces Old List

When a new list of products for a particular grocery store arrives on the client from the server, the old list of products and its associated shopping list (if any) is deleted.

3 Searching & Sorting Products

The shopper may choose to search and to sort products on either the Product List or the Shopping List. Searching and sorting will function identically on both lists. The Product List will display all products or a subset of products after a search. The Shopping List will display all products on the shopping list or subset of said products after a search. Subset may be empty (that is, no matching products were found).

1 Sorting

The shopper may choose to sort products on the Product List or Shopping List by aisle or name. The display should be changed to reflect the shopper's choice. The shopper may to view items on the Product List or Shopping List which may be found on their common aisle. The mobile device should display items found on that aisle.

2 Searching

The shopper may choose to search products on the Product List or Shopping List by entering ("typing") text into a search box. The search must be case-insensitive and allow for partial matches. Example: search term "Tomato" matches product items "tomato" and "canned tomatoes."

The search results, if not an empty set, are displayed as subsets of the Product List or Shopping List (as appropriate), along with a means to return to the full Product List or Shopping List. If no results are found, the shopper is notified of the search failure.

4 Managing the Shopping List

An item is placed on a Shopping List by the shopper selecting ("marking" or "checking") and item on a Product List. An item on the Shopping List may be removed by reversing this selection ("unmarking" or "unchecking").

1 Marking Items as “in cart”

An item on the Shopping List is marked as "in cart" by the shopper when the shopper has selected an item from "off the shelf" at the store and put the item in the shopper's cart and changed the item's status on the list. The mobile device should display the change in status of the item to reflect its "in cart" status. The shopper may choose to change the status of an item from "in cart" to "not in cart," and the Shopping List display must be updated to reflect the new status.

2 Display of Items “in cart”

The Shopping List may display all items, selected ("in cart") items, or items not selected ("overlooked"). These subset displays of the Shopping list may be sorted by aisle or name.

3 Number of Shopping Lists Stored

Only one Shopping List per Product List will be stored on the mobile device. (A single Shopping List is a subset of a Product List which lists products for a single grocery store.) Creation of a new list erases the old list.

4 Deleting Shopping Lists

Upon completing shopping (or at the shopper's discretion), the shopper may choose to erase the Shopping List. All items on the Shopping List have their status changed ("unchecked") from "items to purchase" to the default state of "items not to purchase."

5 Expiry Date

A Shopping List is a subset of a Product List available at a particular store. When a Product List is replaced or removed from the mobile device, the Shopping List view is deleted as well.

6 Non-Transferability

A Shopping List is a subset of a Product List, which is itself bound to particular grocery store. Shopping lists are not transferable between different Product List or different grocery stores.

5 Coupons

The shopper has chosen to view the discount coupon for an item on the Product List or Shopping List. The mobile device should display the coupon. No coupons will be stored on the device, except when needed for temporary display, for example, at the checkout register.

6 Memory

The client application will recall the last screen the shopper used, and upon re-opening the application or returning to the application (for example, after a phone call), the application will display the screen which the shopper last used.

7 Device Rotation

The client application will display only the portrait orientation.

3 Data Description

1 Grocery Store

A grocery store is sufficiently described by its chain name, address, latitude; longitude, zipcode and a unique identification number.

2 Product on the Product List

A product on the Product List is sufficiently described by its generic name, a unique identification number, aisle, the unqiue id of the grocery store at which the product may be found, and a discount coupon, if any.

3 Product on the Shopping List

An item on the Shopping List (a "product which the shopper wishes to purchase") is sufficiently described by adding to the product description a flag indicating the product is to be purchased, and a flag indicating the product is or is not in the shopper's cart.

4 Coupon

A coupon is sufficiently described by its generic name (for example, "frozen pizza"), its expiry date, and a reproduction of the physical coupon at a size enabling it to be scanned by a cashier's scanner or shown on the mobile device by the shopper to a cashier.

Nonfunctional Requirements

1 Server

The server must respond to the client in a reasonable amount of time. For purposes of this document, the response times begin when the shopper chooses to view information which is available on the server and ends when the initial server response (or failure to respond) is displayed on the mobile device's screen. This response time must be less than ten (10) seconds on a wi-fi (or better network) and proportionally slower on slower networks (for example, EDGE).

1 Partial Server Responses (Optional Requirement)

If the client receives complete items (for example, a complete record for a grocery store), but not the complete list of items (for example, the complete list of grocery stores) from the server, the client will display the incomplete list.

2 Server Failure

All instances of server failure (for any reason including absence of a Internet connection) must be reported to the shopper.

2 Client

The design of the client interface must be clean, uncluttered, and attractive. It must be possible for the client to use the interface while in a grocery store shopping. To meet this goal

• buttons should be arranged according to Apple's Human Interface Guidelines;

• buttons should be few, large, and appropriately spaced;

• text should be as large and readable as possible.

Functions Not Implemented

1 Server

No Server functionality other than already described will be part of the deliverables for the Smart Shopper application; specifically, no interface for editing, creating, updating, or deleting the server database is a component of the deliverables.

2 Client

No means is provided to update a Product List to reflect the current availability of products at a grocery store. (That is, the list must be replaced.)

No means is provided to update a Shopping List to reflect the current availability of products at a different store than was chosen when the list was created.

Alterations & Changes

Once the mentor has accepted this document, all changes to it must be unanimously accepted by all team members and by the mentor. However, any changes(design, functionality, coding, etc. including any and all ways in which the total application may be adapted) to the client or server made by the teamwhich are necessary for adaptation to the mobile device will be unconditionally accepted by the mentor and professor even after the document’s acceptance.

-----------------------

Parth Saxena (Team Leader);

Sowmya Coppisetty

Abhinva Chhabra

Guy Hail.

................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download