You are on page 1of 65

Quality Management System

ABC
Software Design Specification Version 0.5

Project/Department: Issue Date: Issue Status: Owner: Author: Location: Confidential Class:

ABC December 5, 2007 Draft ABC Hau Tran ABC Repository <TMA Confidential>

DOCUMENT ADMINISTRATION: The master of this document is stored in an electronic database and is write-protected. It may only be altered by authorized persons. Copies may be printed out, but this is not recommended. Viewing of the master online ensures access to the current issue. Any hard copy of this document or unlocked soft copy must be regarded as an uncontrolled copy.

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

Table of Contents
1. DOCUMENT MANAGEMENT 1.1.1 Document Reviewer History 1.1.2 Document Approver History 1.1.3 Document Revision History INTRODUCTION 2.1 Overview 2.2 Design Map 2.3 Supporting Materials 3. ABC web site: http://www.ABC.com/content/us/en/index.jsx FedEx web site: http://www.fedex.com/us/officeprint/main/ 6 6 6 6 7 7 7 8 Error! Bookmark not defined. Error! Bookmark not defined. 9 9 9 10 10 10 12 12 13 13 14 15 16 16 16 16 17 18 19 19 19 19 20 20 21 21 21 21 22 22 23 23

2.

CONSIDERATIONS 3.1 Assumptions and Dependencies 3.2 System Environment 3.3 Processes, Policies, Conventions, and Tactics 4.1 4.2 4.3 ARCHITECTURE System Architecture Processes of Key Components in the Architecture Architecture Decisions and Rationales COMPONENT DESIGN Components Dependencies Diagram Description of the Components Components and Use Cases Mapping Detail Component Design 5.4.1 Module <<UserService>> 5.4.1.1 Processing Narrative 5.4.1.2 Sequence Diagram 5.4.1.3 Class Diagram 5.4.1.4 Interface Description 5.4.1.5 Data Processing 5.4.2 Module <<RoleService>> 5.4.2.1 Processing Narrative 5.4.2.2 Sequence Diagram 5.4.2.3 Class Diagram 5.4.2.4 Interface Description 5.4.2.5 Data Processing 5.4.3 Module <<ReportService>> 5.4.3.1 Processing Narrative 5.4.3.2 Sequence Diagram 5.4.3.3 Class Diagram 5.4.3.4 Interface Description 5.4.3.5 Data Processing 5.4.4 Module <<TrackingService>>

4.

5. 5.1 5.2 5.3 5.4

TMA Confidential

TMA Solutions, 2004

Page 2 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

5.4.4.1 Processing Narrative 5.4.4.2 Sequence Diagram 5.4.4.3 Class Diagram 5.4.4.4 Interface Description 5.4.4.5 Data Processing 5.4.5 Module <<ShipmentService>> 5.4.5.1 Processing Narrative 5.4.5.2 Sequence Diagram 5.4.5.3 Class Diagram 5.4.5.4 Interface Description 5.4.5.5 Data Processing 5.4.6 Module <<PickABCervice>> 5.4.6.1 Processing Narrative 5.4.6.2 Sequence Diagram 5.4.6.3 Class Diagram 5.4.6.4 Interface Description 5.4.6.5 Data Processing 5.4.7 Module <<PrintJobService>> 5.4.7.1 Processing Narrative 5.4.7.2 Sequence Diagram 5.4.7.3 Class Diagram 5.4.7.4 Interface Description 5.4.7.5 Data Processing 6. USER INTERFACE DESIGN Navigation Screen Representation 6.2.1 Main Structure 6.2.2 Content Page 6.2.3 Button, Textbox, Drop-down List 6.2.4 Menu Items, Action Items 6.3 Screen Snapshots 6.3.1 Shipping 6.3.1.1 Create a Shipment 6.3.1.1.1 Begin Your Shipment 6.3.1.1.2 Add Shipping Options 6.3.1.1.3 Preview Your Shipment 6.3.1.1.4 View History or Void Shipment 6.3.1.1.5 Create a Return 6.3.1.1.6 Set Preferences 6.3.1.2 Calculate Time and Cost 6.3.1.2.1 Provide Shipment Information 6.3.1.2.2 Provide Shipment Details 6.3.1.2.3 Time and Cost Summary 6.3.1.2.4 Time and Cost Details 6.3.1.3 Schedule a Pickup 6.3.1.3.1 Pickup Information 6.1 6.2

23 23 23 24 24 25 25 25 26 26 27 27 27 28 28 29 29 30 30 30 30 31 31 32 32 33 33 33 34 34 35 35 35 35 35 36 37 38 39 40 40 41 42 43 44 44

TMA Confidential

TMA Solutions, 2004

Page 3 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

6.3.1.3.2 Pickup Services Details 6.3.1.3.3 Pickup Status 6.3.1.3.4 Pickup Status 6.3.1.3.5 Set Preferences 6.3.2 Printing / Copying 6.3.2.1 New Print Job 6.3.2.2 Delivery Options 6.3.2.3 Manage Print Jobs 6.3.3 Tracking 6.3.3.1 Track by Reference 6.3.3.2 Track by Number 6.3.3.3 Track by Email 6.3.3.4 Import Tracking Numbers 6.3.4 Online Transaction Report 6.3.5 Support 6.3.6 Admin 6.3.6.1 Register 6.3.6.2 My ABC 6.3.6.3 Forgot User ID or Password 6.3.6.4 Manage Users 7. 7.1 7.2 DATA MODEL / DATA STRUCTURE General View Table Description 7.2.1 Table user 7.2.2 Table UserRole 7.2.3 Table LayoutReference 7.2.4 Table ABCAccount 7.2.5 Table Address 7.2.6 Table Pickup 7.2.7 Table Shipment 7.2.8 Table PaymentInfo 7.2.9 Table ReturnShipment 7.2.10 Table Package 7.2.11 Table Tracking 7.2.12 Table ShipmentHistory 7.2.13 Table PrintJob 7.2.14 Table PrintJobOption 7.2.15 Table Document 7.2.16 Table PrintJobHistory 7.2.17 Table Country 7.2.18 Table State 7.2.19 Table Service 7.2.20 Table ServiceType 7.2.21 Table Authorities 7.2.22 Table Resource DEPLOYMENT MODEL
TMA Solutions, 2004

45 46 46 47 48 48 48 48 49 49 49 50 50 50 51 51 51 52 52 53 53 53 54 54 55 55 56 56 57 57 59 59 59 60 60 60 61 61 62 62 62 62 62 63 63 63

8.

TMA Confidential

Page 4 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

9. 10. 11.

OPERATIONAL SUPPORTING MECHANISM RESTRICTIONS, LIMITATIONS, AND CONSTRAINTS TESTING ISSUES 11.1 Classes of Tests Unit Testing Integration Testing System Testing Stress and Load Testing 11.2 Expected Software Response 11.3 Performance Bounds

64 64 64 64 65 65 65 65 65 65

TMA Confidential

TMA Solutions, 2004

Page 5 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

1. DOCUMENT MANAGEMENT
1.1.1 Document Reviewer History
Reviewer Name Review Attendance (R/S) Comments Linh Le R Hai Nguyen R R/S: Required or Suggested participants or functions for the document review meeting.

1.1.2 Document Approver History


Approver name Linh Le <<ABC Technical Contact>> Approver Function Project Manager ABC Technical Contact Person Comments

1.1.3 Document Revision History


Date Dec 05, 07 Dec 12, 07 Version 0.1 0.2 Description Draft Update parts: - Architect - Component Design Update parts: - User Interface Design - Data Model/Structure Update parts: - Deployment Model - Testing Issues Update for comments in the review meeting Revised by Hau Tran Hau Tran

Dec 14, 07

0.3

Hau Tran, Hai Nguyen, Tuan Phan Hai Nguyen

Dec 18, 07 Dec 28, 07

0.4 0.5

Hau Tran, Hai Nguyen

TMA Confidential

TMA Solutions, 2004

Page 6 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

2. INTRODUCTION
This is a Software Design Specification (SDS) document, and it provides a detailed overview of the design for the ABC system. The main purpose of this document is to provide a solid foundation for the development phase of the product. The design takes the results of use case analysis in SRS document and produces a specification that can be effectively implemented. It contains an explanation of a way to carry out each of the requirement specifications written in the Software Requirements Specification (SRS). The design is considered complete, when it is detailed enough to implemented and tested. It serves as a guide to the developers who write the code and actually create the product. The SDS document will break down the project into components to describe in detail what the purpose of each component is and how it will be implemented. The SDS document will also serve as a tool for verification and validation of the final product.

2.1 Overview
The project to be developed is a pilot project that provides cost-effective and convenient on-line ABC services to the (SOHO) Small Office Home Office market and consumers via the ABC network in the United States. Ultimately, this future system will be an opportunity for all of the ABC Stores to provide on-line services to its customers, regardless of where they live, work or travel. The system is an open-source, multi-lingual, web-based application. The scope of the project is targeted to service the US market first before other markets (Canada, Western Europe, Latin America, and AsiaPacific). Specifically, this phase of project will aim to service only one ABC store in the US.

2.2 Design Map


This document will present the architecture, components, and graphical user interfaces (GUI) that make up the ABC system.

TMA Confidential

TMA Solutions, 2004

Page 7 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

Part Part 1

CONTENTS DOCUMENT MANAGEMENT

DESCRIPTIONS History of this document development, including Revision History, Reviewer history, and Approver History. An introduction to the document by explaining the purpose of the document, providing design map and references, and a brief overview of each section within the document. A description of any assumptions or dependencies regarding the software and its use. Other concerns such as: related software or hardware, operating systems, performance, security, design methodology, possible and/or probable changes in functionality. An overview of the components that make up the system architecture and the relationships between them. A detail of all components specification and the relationship between them. Screen snapshots and descriptions of user interface designs that directly support construction of the system. A description of the major data model of both global and subsystem scope. This should be represented in the form of entity relation model. A diagram that shows how system components, operating system, services and software will be deployed on each server. The design document may need to support some special mechanisms in order to easily identify issues / defects / problems and resolve them. Identification of any issues that may impact the design or implementation of the software. A specification of test strategy and preliminary test case.

Part 2

INTRODUCTION

Part 3

CONSIDERATIONS

Part 4

ARCHITECTURE

Part 5 Part 6

COMPONENT DESIGN USER INTERFACE DESIGN

Part 7

DATA MODEL / DATA STRUCTURE DEPLOYMENT MODEL

Part 8

Part 9

OPERATIONAL SUPPORTING MECHANISM RESTRICTIONS, LIMITATIONS, AND CONSTRAINTS TESTING ISSUES

Part 10 Part 11

2.3 Supporting Materials


Definitions, acronyms, and abbreviations

TMA Confidential

TMA Solutions, 2004

Page 8 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

ABC SDS SRS ORM IDE

United Parcel Service Software Design Specifications Software Requirement Specifications Object Relational Mapping Integrated Development Environment

References

ABC-SRS-001-Software Requirement Specification.doc

3. CONSIDERATIONS
3.1 Assumptions and Dependencies
The software is separated into 8 modules. Each module has it own responsibility:

Administration contains components of managing user accounts, roles and profiles. Packaging & Shipping contains components of shipments, pickABC and preferences. Printing and Copying contains components of print jobs, orders and options setting. Tracking contains tracking component. Report contains report component. Utility contains e-mail component. Delivery contains delivery service component. Payment contains payment service component. Help Desk Ticket System Will be implemented separately after finishing this pilot project.

3.2 System Environment


The following are the description of frameworks, tools, operating system, servers and plug-ins which are implemented in system development. Categories Frameworks Technologies JDK 1.5 Spring MVC Spring Web Flow Acegi Security Framework Hibernate framework JUnit (for unit testing) Hibernate 3.x (for Object Relational Mapping)

ORM (Object Relational Mapping)

TMA Confidential

TMA Solutions, 2004

Page 9 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

Business Logic Web Application Server IDE (Integrated Development Environment) Database Operating System

Spring framework Apache Tomcat 5.5 Eclipse 3.3.x with all necessary plug-ins. My SQL 5.0 Linux Enterprise

3.3 Processes, Policies, Conventions, and Tactics


There are two kinds of documents that customers require Software Requirements Specification (SRS) and Software Design Specification (SDS). SRS document describes all business and user requirements through use cases and diagrams. SDS document contains system architecture, components interaction diagram, description of all components and modules and data model. In further detail, all functions of each component are then further explained with description, sequence diagram, and class diagram.

4. ARCHITECTURE
4.1 System Architecture

TMA Confidential

TMA Solutions, 2004

Page 10 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

Client Tier
Shipping Browser Client Printing Browser Client Browser Client Tracking

Customer
Adminstration Browser Client Report Browser Client Browser Client Help Desk

UPS Store members


HTTPS Request

Middle Tier
CONTROLLER

HTTPS Response
VIEW View (JSP/HTML) Spring Scheduler

Acegi Security
7

Spring Dispatcher Servlet 2 3 Handler Mapping Spring Web Flow Model And View

5 ViewResolver

Controller

MODEL

4.1

4.2 Business Objects Hibernate Beans

Objects are managed by Spring IoC Container

Database Tier

Database System

TMA Confidential

TMA Solutions, 2004

JDBC

Page 11 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

4.2 Processes of Key Components in the Architecture

From the Client Tier, users who are ABC Store customers or members (Admin, ABC Store owner, ABC Store manager and staffs) will use Packing & Shipping services, Printing & Copying, Tracking and/or Transaction Report services via the web browsers as Internet Explorer or Firefox. Being able to send requests (HTTPS Request) to the middle tier, customers have to follow step-by-step of the wizards of services. Each step of one service generates a request to send to the ABC server in the middle tier (refer to SRS document ABCSRS-001-Software Requirement Specification.doc for functionality details). The ABC application in the middle tier contains business logic rules, functions to handle client requests. The data access objects (Hibernate objects) are included. One of features is the application sends emails to stores for printing and copying documents. Stores will print and deliver documents as requirements from email. The Spring framework also supports the email sender component. The following is the general architecture in middle tier of ABC Store application.
1 2

Spring Dispatcher Servlet receives requests from Client tier though Acegi security filter.

The Spring Dispatcher Servlet consults the suitable Handler Mapping to find a controller. The Spring Dispatcher Servlet dispatches the request to approximate Controller for processing belongs to Spring Web Flow configuration.
4 3

The Controller will work with business objects of the service


4.2

4.1

, e.g. createUser and

corresponding persistent classes


5

to create a ModelAndView object.

The Controller returns the ModelAndView object with a logical view name to the Dispatcher Servlet.
6 7 8

The Dispatcher Servlet consults its view revolver to find the appropriate view. DispatcherServlet forwards the request to the view. The view renders the JSP page to the web browser.

With the contents of a client request and business rules, the application will store the realworld data into database tables and retrieve data from database. The database model in the database tier for the system should be designed, implemented and tested carefully for processing a huge number of package information.

4.3 Architecture Decisions and Rationales


Name Multi-tiered Architecture Description A multi-tiered architecture is designed to partition the system into distinct functional units: Client, Presentation, Business-Logic, Persistence and Database Management System. This ensures a clean division of responsibility and makes the system more maintainable and extensible. Systems with three or more tiers prove
TMA Solutions, 2004 Page 12 of 65

TMA Confidential

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

more scalable and flexible than a client-server system, in which no business-logic middle tier exists. Apache Tomcat The main benefit of using the Apache server and Tomcat servlet engine is that both of these products are open source. These products can be downloaded and installed for free, they run on a variety of computer server hardware platforms, are very reliable, scalable, and are supported and enhanced by developers throughout the world. Spring is a lightweight container that makes it easy to wire objects together using an external XML configuration file. Spring supports pluggable transaction managers giving a broader range of choices for transaction handling. The Spring architecture allows connecting Struts as Web framework to Spring-based business and persistence layers. Spring also provides a simple mechanism for applying aspect-oriented code against normal, object-oriented code. Provides a full-featured MVC module for a very clean division between Controllers, Java Bean models and Views. This module is built on top of Spring MVC and adds the capability to easily write wizard web applications that span across several HTTP requests. The core artifact within Spring Web Flow is the flow (or conversation). It is this flow definition that defines a blueprint for a conversation with the user. Conversations can execute in parallel without intruding on each other, and when the conversation has finished, all allocated resources are automatically cleaned up. Hibernate is the most flexible and powerful ORM solution on the market today. Hibernate not only takes care of the mapping from Java classes to database tables and from Java data types to SQL data types, but also provides data query and retrieval facilities that significantly reduce development time. Hibernators design goal is to relieve the developer from 95% of common data persistence related programming tasks by eliminating the need for manual, hand-crafted data processing using SQL and JDBC. Acegi Security System is a remarkable, easy-to-use alternative to writing endless security code for authentication and authorization through out the applications. For any application written using Java and Spring framework, there is no reason why Acegi should not be used. Plain Old Java Object is preferred by many advocates because of its simple design. The name is used to emphasize that the object in question is an ordinary Java Object, not a special object. POJO is simply refers to the natural condition of an object class. The term serves as a reminder that simpler designs can be better, rather than incorporating a complicated framework in the architecture of a system without sufficient reason

Spring

Spring MVC Spring Web Flow

Hibernate

Acegi Security

POJO

5. COMPONENT DESIGN
5.1 Components Dependencies Diagram

TMA Confidential

TMA Solutions, 2004

Page 13 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

Report ReportService Administration UserService Tracking TrackingService

RoleService

Ultility EmailMgr Printing PrintJobService

Shipping ShippingService

PickupService

Payment PaymentService

Delivery DeliveryService

5.2 Description of the Components


# 1 Package Name Administration Component Name UserService Purposes The User Service component is responsible for creating, modifying and deleting users and assigning role or resetting password for an existing user. The Role Service component is responsible for creating a new role, modifying and deleting an existing role of ABC Store system. This pilot phase supports 5 roles: Customer, Admin, ABC Store Owner, ABC Store Manger and ABC Store Staff. The Report Service component is responsible for making Transaction Report contains shipping info, printing/copying info. The Tracking Service component is responsible for tracking the status of services which users are using by email, by shipment reference, The Shipping Service component is responsible for creating/voiding an online shipment.

RoleService

Report

ReportService

Tracking

TrackingService

Shipping

ShippingService

TMA Confidential

TMA Solutions, 2004

Page 14 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

PickABCervice 5 Payment PaymentService

Delivery

DeliveryService

7 8

Printing Utility

PrintJobService EmailMgr

The Pickup Service component is responsible for scheduling or voiding an online pickup. The Payment Service component contains all the logic related to the online payment and credit card validation. The Payment Service is an external subsystem. The Delivery Service component contains all the logic related to the ABC Store delivery service. The Payment Service is an external subsystem. The Print Job Service component is responsible for executing a print job online. The Email Manager component is responsible for generating and sending an email to end user.

5.3 Components and Use Cases Mapping


# 1 Package Name Administration Component Name UserService Use Cases Register an account (ABC_UC_1.1) Open an ABC Store account (ABC_UC_1.2) Log in (ABC_UC_1.3) Retrieve account and forgot password (ABC_UC_1.4) Customize personal profile (ABC_UC_1.5) Manage user accounts (ABC_UC_1.6) Manage user roles (ABC_UC_1.7) Generate transactions report (ABC_UC_5.1) Track by reference (ABC_UC_4.1) Track by e-mail (ABC_UC_4.2) Track by tracking numbers (ABC_UC_4.3) Import tracking numbers (ABC_UC_4.4) Create a shipment (ABC_UC_2.1) Continue previous shipment (ABC_UC_2.2) View shipment history (ABC_UC_2.3) Void shipment (ABC_UC_2.4) Set shipment preferences (ABC_UC_2.5) Create a shipment return (ABC_UC_2.6) Calculate shipment time and cost (ABC_UC_2.7) Schedule a pickup (ABC_UC_2.8) View pickup status (ABC_UC_2.9) Modify a pickup (ABC_UC_2.10) Void a pickup (ABC_UC_2.11) Set pickup preferences (ABC_UC_2.12)

2 3

Report Tracking

RoleService ReportService TrackingService

Shipping

ShipmentService

PickupService

TMA Confidential

TMA Solutions, 2004

Page 15 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

5 6 7

Payment Delivery Printing/Copying

PaymentService DeliveryService PrintJobService

Utility

EmailMgr

N/A N/A Start a new print job (ABC_UC_3.1) Set print job options (ABC_UC_3.2) Combine files (ABC_UC_3.3) Select delivery options (ABC_UC_3.4) Place the order (ABC_UC_3.5) Trace order (ABC_UC_3.6) Re-use print job (ABC_UC_3.7) Review order history (ABC_UC_3.8) N/A

5.4 Detail Component Design


5.4.1 Module <<UserService>>

5.4.1.1 Processing Narrative The User Service component is responsible for creating, modifying and deleting users and assigning role or resetting password for an existing user. 5.4.1.2 Sequence Diagram
<<Actor>> Users <<Page>> Homepage <<Page>> UserInfoForm <<Action>> <<Action>> UserFormAction AddUserAbsAction <<Service>> UserService <<Utility>> EmailUtility <<Entity>> <<Entity>> User UPSAccount

1 : access() 2 : register() 3 : getUserId() 5 : getUserId() 4 : view() 6 : submit() 7 : addUser() 8 : saveObject()

9 : createUPSAccount() 10 : generateEmail()

11 : sendEmail()

TMA Confidential

TMA Solutions, 2004

Page 16 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

<<Actor>> Users

<<Page>> UserMngtForm

<<Controller>> <<Action>> UserManager AddUserAbsAction

<<Service>> UserService

<<Utility>> EmailUtility

<<Entity>> <<Entity>> User UPSAccount

1 : access()

2 : action()

3 : getUserList() 5 : getUser()

4 : view() 6 : addUser() 7 : addUser() 8 : saveObject() 9 : createUPSAccount() 10 : generateEmail() 11 : sendEmail()

<<Actor>> Users

<<Page>> UserMngtForm

<<Controller>> UserManager

<<Action>> AddUserAbsAction

<<Service>> UserService

<<Utility>> EmailUtility

<<Entity>> <<Entity>> User UPSAccount

1 : access()

2 : action()

3 : getUserList() 5 : getUser()

4 : view() 6 : updateUser() 7 : resetPassword() 8 : enable/disable() 9 : updateUser() 10 : saveObject() 11 : updateUPSAccount() 13 : sendEmail() 12 : generateEmail()

14 : deleteUser()

15 : deleteUser() 16 : removeObject() 17 : deleteUPSAccount()

5.4.1.3 Class Diagram

TMA Confidential

TMA Solutions, 2004

Page 17 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

Controller

<<Controller>> UserManager -upsService +handleRequest() +...()

<<Controller>> UPSAccountManager -upsService +handleRequest() +...() <<Model>> User +user_id +userName +password +email +address +... +getUserName() +setUserName() +getPassword() +setPassword() +...()

<<Service>> UserService <<Utility>> EmailUtility +sendEmail() +...() -upsDAO +addUser() +removeUser() +updateUser() +getUserList() +addUPSAccount() +deleteUPSAccount() +getUPSAccountList() +...()

<<Entity>> Users

<<Model>> UPSAccount +account_number +user_id <<Entity>> UPSAccounts

<<Action>> AddUserAbsAction -upsService -emailUtil +doExecute() +getUPSService() +setUPSService() +...()

<<Action>> UserInfoFormAction -upsService +createFormObject() +...()

+getAccNumber() +setAccNumber()

AbstractAction

FormAction

5.4.1.4 Interface Description register(): register a new user account. getUserId(): get user identification to validate the user existed or not. addUser(): create an user and use User Service to add it into system. saveObject(): save user to database by User Service. generateEmail(): generate an email contains ABC Account number or UserID and password, user information sendEmail(): send an email to user. getUserList(): get the list of user in system. getUser(): get a specify user. updateUser(): update user information. resetPassword(): reset password in case users forgot password. disableUser(): lock users account. enableUser(): recover an account that has been locked.

TMA Confidential

TMA Solutions, 2004

Page 18 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

deleteUser(): delete an user out of system.

5.4.1.5 Data Processing


LayoutReference layout_id enter_tracking save_tracking create_shipment find_location quick_link billing_center oder_supply schedule_pickup form_export void_shipment int <pk> tinyint(1) tinyint(1) tinyint(1) tinyint(1) tinyint(1) tinyint(1) tinyint(1) tinyint(1) tinyint(1) tinyint(1) UserRole user_role_id int <pk> user_role_name varchar(50) role_privileges smallint UPSAccountInfo account_number user_id payment_id account_description char(30) <pk> int <fk> int varchar(256)

User_Role

User_UPSAccount

User User_Layout user_id layout_id user_role_id user_name email upsPassword secret_question secret_answer title company enabled role_use_ups info_notice pickup_reference tracking_reference shipment_reference printjob_reference int <pk> int <fk1> int <fk2> varchar(40) char(50) char(40) varchar(256) varchar(256) varchar(100) varchar(100) tinyint(1) varchar(100) int varchar(30) varchar(30) int int

Address address_id user_id payment_id address1 address2 city telephone zipcode extension floor_room country state int <pk> int <fk> int char(100) char(100) char(30) char(12) char(8) char(5) varchar(20) varchar(30) smallint

User_Address

5.4.2

Module <<RoleService>>

5.4.2.1 Processing Narrative The Role Manager component is responsible for creating a new role, modifying and deleting an existing role of ABC Store system. This pilot phase supports 5 roles: Customer, Admin, ABC Store Owner, ABC Store Manger and ABC Store Staff. 5.4.2.2 Sequence Diagram

TMA Confidential

TMA Solutions, 2004

Page 19 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

<<Actor>> Users

<<Page>> UserMgntForm

<<Controller>> RoleManager

<<Controller>> AddUserRole

<<Controller>> DeleteUserRole

<<Service>> UserService

<<Entity>> UserRole

1 : access() 2 : action() 3 : getUserRoleList() 4 : getUserRoles()

5 : view() 6 : createUserRole() 8 : updateUserRole() 7 : addUserRole()

9 : updateUserRole() 11 : deleteUserRole()

10 : saveObject()

12 : deleteUserRole() 13 : removeObject()

5.4.2.3 Class Diagram


<<Control>> UserRoleManager -upsService +...() +handleRequest() +...() <<Service>> UserService <<Controller>> AddUserRole -upsService Controller +hanldeRequest() +...() -upsDAO +...() +addUserRole() +updateUserRole() +deleteUserRole() +assignUserRole() +getUserRoleList() +...()

<<Model>> UserRole +privileges +name +desciption +getPrivileges() +setPrivileges() +getRoleName() +setRoleName() +getDescription() +setDescription()

<<Entity>> UserRoles

<<Controller>> DeleteUserRole -upsService +handleRequest() +...()

<<Model>> User

<<Entity>> Users

5.4.2.4 Interface Description getUserRoleList(): get all roles of user so that view them in Role manager. getUserRoles(): query all user roles in database. createNewRole(): allows users to create a new role for ABC system. addUserRole(): create a new role for user and use User Service to add it to system. updateUserRole(): update an existing user role.
TMA Confidential TMA Solutions, 2004 Page 20 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

saveObject(): save user role to database. deleteUserRole(): allows users to delete a role. If this role is being used by any users, the role of users will be set to default role (customer role as well). removeObject(): remove User Role in database.

5.4.2.5 Data Processing


UserRole user_role_id int <pk> user_role_name varchar(50) role_privileges smallint User_Role User user_id layout_id user_role_id user_name email upsPassword secret_question secret_answer title company enabled role_use_ups info_notice pickup_reference tracking_reference shipment_reference printjob_reference int <pk> int int <fk> varchar(40) char(50) char(40) varchar(256) varchar(256) varchar(100) varchar(100) tinyint(1) varchar(100) int varchar(30) varchar(30) int int

5.4.3

Module <<ReportService>>

5.4.3.1 Processing Narrative The Report component is responsible for making Transaction Report contains shipping info, printing/copying info. 5.4.3.2 Sequence Diagram

TMA Confidential

TMA Solutions, 2004

Page 21 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

<<Actor>> Users

<<Page>> ReportForm

<<Controller>> ReportManager

<<Service>> ReportService

<<Entity>> Shipments

<<Entity>> Packages

<<Entity>> PrintJobs

<<Entity>> Pickups

1 : access()

2 : makeReport() 3 : makeReport()

4 : getShipmentInfo()

5 : getPackageInfo() 6 : getPrintJobInfo() 7 : getPickupInfo() 8 : returnReport()

5.4.3.3 Class Diagram


<<Entity>> Pickups

Controller

<<Entity>> PrintJobs <<Service>> ReportService +getShipmentInfo() +getpackageInfo() +getPrintJobsInfo() +makeReport() +...() <<Entity>> Packages

<<Controller>> ReportManager -upsService +hanldeRequest() +...()

<<Entity>> Shipments

<<Entity>> Users

5.4.3.4 Interface Description makeReport(): allows users to make a report about customer using service in a date range. getUserInfo(): this function collects the info of customer using ABC services.
TMA Solutions, 2004

TMA Confidential

Page 22 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

getShipmentInfo(): this function collects all shipments which customer used. getPackageInfo(): this function collects all packages which customer used. getPrintJobInfo(): this function collects all print jobs which customer used getPickupInfo(): this function collects all pickup schedule which customer used.

5.4.3.5 Data Processing


N/A

5.4.4

Module <<TrackingService>>

5.4.4.1 Processing Narrative The Tracking Manager component is responsible for tracking the status of services which users are using by email, by shipment reference 5.4.4.2 Sequence Diagram
<<Actor>> Users <<Page>> TrackingForm <<Controller>> TrackingManager <<Utility>> EmailUtility <<Entity>> ShipmentHistory <<Entity>> PrintJobHistory

1 : access() 2 : trackByRef() 3 : trackByNumber() 4 : getShipmentHistory() 5 : getPrintJobHistory() 6 : showResult() 7 : trackByEmail() 8 : getShipmentHistory() 9 : getPrintJobHistory() 10 : generateEmail()

11 : sendEmail() 12 : importTrackingNumber()

5.4.4.3 Class Diagram

TMA Confidential

TMA Solutions, 2004

Page 23 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

<<Model>> ShipmentHistory Controller <<Controller>> TrackingManager -upsService +handleRequest() +...() <<Service>> TrackingService -upsDAO +getShipmentInfo() +getPrintJobInfo() +...() +date +location +notes +getDate() +setDate() +...() <<Entity>> ShipmentHistories

<<Model>> PrintJobHistory <<Utility>> EmailUtility +sendEmail() +...() +date +location +notes +getDate() +setDate() +...() <<Entity>> PrintJobHistories

5.4.4.4 Interface Description trackByRef(): allows users to track the shipment, print jobs and pickup by reference. trackByEmail(): allows users to track the shipment, print jobs and pickup by email. trackByNumber(): allows users to track the shipment, print jobs and pickup by entering numbers. importTrackingNumber(): allows users to import a CVS file contains number of shipment, print jobs and pickup. getShipmentHistory(): this function collects the history of shipments. getPrintJobHistory(): this function collects the history of print jobs. getPickupHistory(): this function collects the history of pickup. sendEmail(): this function will send an email to end user. 5.4.4.5 Data Processing

TMA Confidential

TMA Solutions, 2004

Page 24 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

ShipmentHistory address_id tracking_number shipment_status notice int <pk,fk1> varchar(30) <pk,fk2> varchar(30) varchar(128) Shipment shipment_id return_shipment_id tracking_number pickup_id user_id payment_id print_job_id shipper_address ship_from ship_to email_content print_reference1 Shipment_Tracking Shipment_Tracking int <pk> int varchar(30) <fk> varchar(30) int int int int int int varchar(50) tinyint(1)

ShipmentHistory_Address

Address address_id user_id payment_id address1 address2 address3 city telephone zipcode extension int <pk> int int char(100) char(100) varchar(100) char(30) char(12) char(8) char(5)

FK_%REFERENCE%

Tracking tracking_number shipment_id country shipment_type date_start date_end acount_num varchar(30) <pk> int <fk> varchar(30) varchar(30) date date varchar(30)

5.4.5

Module <<ShipmentService>>

5.4.5.1 Processing Narrative The Shipment Manager component is responsible for creating, voiding an online shipment. 5.4.5.2 Sequence Diagram
<<Actor>> Users <<Page>> ShipmentInfoForm <<Action>> ShipmentFormAction <<Action>> AddShipmentAbsAction <<Service>> ShipmentService <<Entity>> Shipments <<Entity>> Packages <<Entity>> TimeAndCost

1 : access() 2 : getShipmentInfo() 3 : getPackages() 4 : getPackageInfo() 5 : view() 6 : createShipment() 7 : createReturn() 8 : continueShipment() 9 : addShipment() 10 : addPackage() 11 : saveObject() 12 : saveObject() 13 : getTimeAndCode()

TMA Confidential

TMA Solutions, 2004

Page 25 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

<<Actor>> Users

<<Page>> ShipmentHistoryForm

<<Controller>> ShipmentManager

<<Controller>> VoidShipment

<<Service>> ShipmentService

<<Entity>> Shipments

<<Entity>> Packages

1 : access() 2 : showShipmentHistory() 3 : getShipmentList() 4 : getObjects() 5 : getObjects() 6 : view() 7 : voidShipment() 8 : voidShipment() 9 : removeObject() 10 : removeObject()

5.4.5.3 Class Diagram


<<Entity>> Packages <<Entity>> TimeAndCost

<<Controller>> ShipmentManager -upsService +handleRequest() +...() Controller <<Controller>> VoidShipment -upsService +handleRequest() +...()

<<Entity>> Addresses

<<Service>> ShipmentService -upsDAO +createShipment() +voidShipment() +viewShipmentHistory() +createShipmentReturn() +calculateTimeAndCost() +...()

<<Model>> Shipment +user +shipFrom +shipTo +service +... +getUserAddress() +setUserAddress() +getShipFrom() +setShipFrom() +schedulePickup() +...()

<<Entity>> Users

<<Action>> AddShipmentAbsAction -upsService AbstractAction +doExecute() +...()

<<Entity>> ReturnShipments

<<Controller>> PickupManager <<Action>> ShipmentInfoFormAction -upsService FormAction +createFormObject() +...() <<External>> DeliveryService

<<Controller>> PaymentManager

<<Entity>> Shipments

<<External>> PaymentService

5.4.5.4 Interface Description getShipmentInfo(): this function keeps shipment information for page session. createShipment(): allows users to create a shipment. getPackages(): allows users to get all packages customer having. getPackageInfo(): allows users to get the package info. createReturn(): allows users to create a return shipment. continueShipment(): allows users to continue an un-submitted shipment.

TMA Confidential

TMA Solutions, 2004

Page 26 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

addShipment(): this function creates a shipment and use Shipment Service to add this shipment into database. addPackage(): this function creates a package and use Shipment Service to add this package into database. saveObject(): this function save Shipment information into database. getTimeAndCost(): this function collects Time and Cost from database that customer provide. showShipmentHistory(): this function allows user to show all shipments customer created. getShipmentList(): this function collects all shipments user created. getObjects(): this function collects all Shipment from database. voidShipment(): this function allows user to void a shipment. removeObject(): this function removes object in database.

5.4.5.5 Data Processing


User user_id user_role_id layout_id user_name email upsPassword secret_question int <pk> int int varchar(40) char(50) char(40) varchar(256) PaymentInfo payment_id account_number address_id payment_name card_number expiration_date card_type int <pk> char(30) int varchar(50) varchar(40) date varchar(30) ReturnShipment return_shipment_id shipment_id ERL ERL_memo_field ERL_notice_fail return_service int <pk> int <fk> varchar(50) varchar(1024) varchar(40) varchar(30)

Shipment_Return Shipment_User Shipment_Payment Return_Shipment

Shipment Pickup pickup_id shipment_id print_job_id user_id pickup_date time_ready time_latest varchar(30) <pk> int <fk> int int date time time Shipment_Pickup Pickup_Shipment shipment_id pickup_id tracking_number return_shipment_id user_id payment_id print_job_id shipper_address ship_from ship_to int varchar(30) varchar(30) int int int int int int int <pk> <fk5> <fk4> <fk3> <fk2> <fk1> <fk6>

PrintJob_Shipment Shipment_PrintJob Shipment_Tracking PrintJob print_job_id shipment_id user_id pickup_id print_history_id print_job_name order_date cost int <pk> int <fk> int varchar(30) int varchar(50) date decimal(12) Shipment_Package Tracking_Shipment

Tracking Package package_id shipment_id package_weight declare_value package_length package_width int <pk> int <fk> decimal(10) decimal(10) decimal(10) decimal(10) tracking_number shipment_id country shipment_type date_start date_end acount_num varchar(30) <pk> int <fk> varchar(30) varchar(30) date date varchar(30)

5.4.6

Module <<PickABCervice>>

5.4.6.1 Processing Narrative The Pickup Manager component is responsible for scheduling or voiding an online pickup.

TMA Confidential

TMA Solutions, 2004

Page 27 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

5.4.6.2 Sequence Diagram


<<Actor>> Users <<Page>> PickupInfoForm <<Action>> PickupInfoFormAction <<Action>> AddPickupAbsAction <<Service>> PickupService <<Entity>> Pickups

1 : access() 2 : getPickupInfo()

3 : view() 4 : schedulePickup() 5 : updatePickup() 6 : addPickup() 7 : saveObject()

<<Actor>> Users

<<Page>> PickupHistoryForm

<<Controller>> PickupManager

<<Controller>> DeletePickup

<<Service>> PickupService

<<Entity>> Pickups

1 : access() 2 : showHistory() 3 : getPickupList() 5 : view() 6 : viewPickupStatus() 7 : getPickupStatus() 8 : getObject() 4 : getObjects()

9 : deletePickup() 10 : deletePickup() 11 : removeObject()

5.4.6.3 Class Diagram

TMA Confidential

TMA Solutions, 2004

Page 28 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

Controller <<Entity>> Addresses <<Controller>> PickupManager -upsService +handleRequest() <<Service>> PickupService -upsDAO <<Action>> PickupInfoFormAction -upsService +createFormObject() +...() +createPickup() +deletePickup() +viewPickupHistory() +viewStatus() +getPickupList() +...()

<<Model>> Pickup +date +address +time_ready +time_latest +... +getDate() +setDate() +getAddress() +setAddress() +...()

<<Entity>> Pickups

<<Entity>> Packages

<<Action>> AddPickupAbsAction -upsService FormAction +doExecute() +...() <<External>> PaymentService <<External>> DeliveryService

AbstractAction

5.4.6.4 Interface Description getPickupInfo(): this function collects pickup information for page session. schedulePickup(): this function allows users to schedule a pickup. updatePickup(): this function updates Pickup information. addPickup(): this function creates a new pickup and use Pickup Service to save it to database. saveObject(): this function save Pickup information into database. 5.4.6.5 Data Processing

TMA Confidential

TMA Solutions, 2004

Page 29 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

User user_id layout_id user_role_id user_name email upsPassword secret_question secret_answer int <pk> int int varchar(40) char(50) char(40) varchar(256) varchar(256)

Shipment shipment_id print_job_id tracking_number pickup_id user_id payment_id return_shipment_id shipper_address ship_from Shipment_Pickup int <pk> int varchar(30) varchar(30) <fk> int int int int int

Pickup_User Pickup_Shipment

Pickup pickup_id shipment_id print_job_id user_id pickup_date time_ready time_latest varchar(30) int int int date time time <pk> <fk2> <fk3> <fk1>

PrintJob print_job_id pickup_id user_id shipment_id print_history_id print_job_name order_date cost int <pk> varchar(30) <fk> int int int varchar(50) date decimal(12)

PrintJob_Pickup Pickup_PrintJob

5.4.7

Module <<PrintJobService>>

5.4.7.1 Processing Narrative The Print Job Manager component is responsible for executing a print job online. 5.4.7.2 Sequence Diagram
<<Actor>> <<Page>> <<Page>> <<Action>> <<Controller>> <<Action>> <<Controller>> <<Service>> <<Entity>> Users PrintJobInfoForm PrintJobMgntForm PrintJobFormAction PrintJobManager AddPrintJobAbsAction DeletePrintJob PrintingService PrintJobs 1 : access()

2 : getPrintJob()

3 : view()

4 : createPrintJob() 5 : setPrintJobOption() 6 : setDeliveryOptions() 7 : addPrintJob() 8 : saveObject() 11 : getPrintJobList() 12 : getObjects() 13 : view() 14 : deletePrintJob() 15 : deletePrintJob() 16 : removeObject()

9 : access()

10 : getPrintJobList()

5.4.7.3 Class Diagram


TMA Confidential TMA Solutions, 2004 Page 30 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

<<Controller>> PrintJobManager -upsService +handleRequest() +...()

<<Controller>> ShipmentManager

<<Entity>> Shipments

Controller

<<Controller>> DeletePrintJob -upsService +handleRequest() +...()

<<Service>> PrintJobService -upsDAO +selectDocument() +combineFiles() +setPrintOptions() +tracePrintOrder() +previewPrintOrder() +...()

<<Model>> PrintJob +printJobID +date +status +printOptions +... +getOrderDate() +setOrderDate() +getPrintOptions() +setPrintOptions() +...()

<<Entity>> PrintJobs

<<Entity>> PrintOptions

<<Action>> AddPrintJobAbsAction -upsService AbstractAction +doExecute() +...() <<Action>> PrintJobFormAction -upsService FormAction +createFormObject() +...()

<<Controller>> PickupManager

<<Entity>> Pickups

<<Entity>> Deliveries

5.4.7.4 Interface Description getPrintJob(): this function keeps print job information for page session. createPrintJob(): this function allows user to create a new print job online. setPrintOptions(): this function allows users to set the print options. setDeliveryOptions(): this function allows users to choose a delivery option. addPrintJob(): this function creates a print job and use PrintJob Service to save it into database. saveObject: this function saves the print job into database. getPrintJobList(): this function collects all print jobs customer created. getObjects: this function queries print job from database. deletePrintJob: this function deletes a print job. removeObject: this function remove print job information out of database. 5.4.7.5 Data Processing

TMA Confidential

TMA Solutions, 2004

Page 31 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

Pickup pickup_id shipment_id user_id print_job_id pickup_date time_ready time_latest email_notice1 varchar(30) <pk> int int int <fk> date time time varchar(50) user_id user_role_id layout_id user_name email upsPassword secret_question secret_answer

User int <pk> int int varchar(40) char(50) char(40) varchar(256) varchar(256)

Shipment shipment_id tracking_number pickup_id user_id payment_id print_job_id return_shipment_id shipper_address int <pk> varchar(30) varchar(30) int int int <fk> int int

Shipment_PrintJob PrintJob_Pickup Pickup_PrintJob PrintJob_Shipment User_PrintJob

PrintJob print_job_id pickup_id user_id print_history_id shipment_id print_job_name order_date cost PrintJob_History PrintJob_Document History_PrintJob int varchar(30) int int int varchar(50) date decimal(12) <pk> <fk3> <fk1> <fk4> <fk2>

PrintJobHistory print_history_id print_job_id printhistory_status notice int <pk> int <fk> varchar(30) varchar(128)

Document document_id print_job_id print_option_id document_name document_dir int <pk> int <fk> int varchar(50) varchar(50)

6. USER INTERFACE DESIGN


6.1 Navigation
Within the pages, primary navigation is provided on the top of the screen, in a horizontal list of graphical links. Secondary navigation is provided on the left, in a vertical list of text links.

TMA Confidential

TMA Solutions, 2004

Page 32 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

6.2 Screen Representation


6.2.1 Main Structure

There are 3 main parts for the structure of the screen shown above. These are: 1. Page Header: this content the ABC logo and the applications name. This part will be appearing for all the main page of application. 2. Left Menu Bar: This contents all the menu items use for navigate for the main modules of application. 3. Main Area: this area will content all the input and output of the application.

6.2.2

Content Page
TMA Solutions, 2004

TMA Confidential

Page 33 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

The content page dominates the main area of the web site.

6.2.3

Button, Textbox, Drop-down List

Depend on the screen the input text field, drop-down list, buttons will be appropriately displayed. Button contain the action and get parameter from the form or simply go to other screen. Text box allows user to enter information or to display information back to user. Drop-down list allows user to select an item from the list.

6.2.4

Menu Items, Action Items

Menu Items are presented in the left-hand side of the web site. They are the action steps for certain main action. Action Item are small individual actions for each menu item.

TMA Confidential

TMA Solutions, 2004

Page 34 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

6.3 Screen Snapshots


There are about 50 screens total in the system. We have a limited space in the document to show and explain all the screens. Therefore, each screen prototype below represents a use case of each component described in the Architecture section mentioned above. Currently, there are twenty eight screenshots are outstanding representatives for six components. Other sub-screens are incapable to present in the document.

6.3.1

Shipping Begin Your Shipment

6.3.1.1 Create a Shipment 6.3.1.1.1

6.3.1.1.2

Add Shipping Options

TMA Confidential

TMA Solutions, 2004

Page 35 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

6.3.1.1.3

Preview Your Shipment

TMA Confidential

TMA Solutions, 2004

Page 36 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

6.3.1.1.4

View History or Void Shipment

TMA Confidential

TMA Solutions, 2004

Page 37 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

6.3.1.1.5

Create a Return

TMA Confidential

TMA Solutions, 2004

Page 38 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

6.3.1.1.6

Set Preferences

TMA Confidential

TMA Solutions, 2004

Page 39 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

6.3.1.2 Calculate Time and Cost 6.3.1.2.1 Provide Shipment Information

TMA Confidential

TMA Solutions, 2004

Page 40 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

6.3.1.2.2

Provide Shipment Details

TMA Confidential

TMA Solutions, 2004

Page 41 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

6.3.1.2.3

Time and Cost Summary

TMA Confidential

TMA Solutions, 2004

Page 42 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

6.3.1.2.4

Time and Cost Details

TMA Confidential

TMA Solutions, 2004

Page 43 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

6.3.1.3 Schedule a Pickup 6.3.1.3.1 Pickup Information

TMA Confidential

TMA Solutions, 2004

Page 44 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

6.3.1.3.2

Pickup Services Details

TMA Confidential

TMA Solutions, 2004

Page 45 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

6.3.1.3.3

Pickup Status

6.3.1.3.4

Pickup Status

TMA Confidential

TMA Solutions, 2004

Page 46 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

6.3.1.3.5

Set Preferences

TMA Confidential

TMA Solutions, 2004

Page 47 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

6.3.2

Printing / Copying

6.3.2.1 New Print Job

6.3.2.2 Delivery Options

6.3.2.3 Manage Print Jobs

TMA Confidential

TMA Solutions, 2004

Page 48 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

6.3.3

Tracking

6.3.3.1 Track by Reference

6.3.3.2 Track by Number

TMA Confidential

TMA Solutions, 2004

Page 49 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

6.3.3.3 Track by Email

6.3.3.4 Import Tracking Numbers

6.3.4

Online Transaction Report

TMA Confidential

TMA Solutions, 2004

Page 50 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

6.3.5

Support

6.3.6

Admin

6.3.6.1 Register

TMA Confidential

TMA Solutions, 2004

Page 51 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

6.3.6.2 My ABC

6.3.6.3 Forgot User ID or Password

TMA Confidential

TMA Solutions, 2004

Page 52 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

6.3.6.4 Manage Users

7. DATA MODEL / DATA STRUCTURE


7.1 General View

TMA Confidential

TMA Solutions, 2004

Page 53 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

7.2
7.2.1

Table Description
Table user
Length 30 Description This field is used to identify every ABC user. This field refers to LayoutReference table. It helps to customize ABC profile. This filed refers to UserRole table. It helps to determine the role of ABC users when they uses The ABC. This field refers to Address table and helps to show address of the user. This field contains full name of the user. This field stores email address of ABC user.

The table stores information of an ABC user. Field name Key Field type User_id Primary key String Layout_id Foreigner key Integer User_role_id Foreigner key Integer

Address_id User_Name Email

Foreigner key No No

Integer String String 40 40

TMA Confidential

TMA Solutions, 2004

Page 54 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

Password Secret_question Secret_answer Title Company Enabled Role_Info Info_notice Pickup_reference

No No No No No No No No No

String String String String String Boolean String Integer Integer

40 126 30 30 50

50

Tracking_reference

No

String

30

Shipment_reference

No

Integer

PrintJob_reference

No

Integer

This field stores password of ABC user. It is required to login and use the ABC system. This field stores the question that helps to certify the user in special case. This field stores the answer for question in Secret_question field. This field is used to express the title of the ABC user. This field stores name of company that user is working. This field enables or disables the user for the ABC. This field stores information that ABC user knows about the ABC. This field stores some kinds of information that ABC users want the ABC notice them. This field stores identify of a pickup. It helps to keep information that ABC user usually uses and it loads automatically every time the user creates a pickup. This field stores identify of a tracking. It helps to keep information that ABC user usually uses and it loads automatically every time the user creates a tracking. This field stores identify of a tracking. It helps to keep information that ABC user usually uses and it loads automatically every time the user creates a shipment. This field stores identify of a tracking. It helps to keep information that ABC user usually uses and it loads automatically every time the user creates a print job.

7.2.2

Table UserRole

The table stores all roles of ABC users. It helps to classify ABC users and limit their right on some functions. At the pilot, The ABC has 5 roles (Admin, Store Owner, Store Staff, Store Manager, and Customer). Field name Key Field type Length Description This field plays a role of primary key of the table. It User_role_id Primary key Integer helps to distinguish among records. User_role_name No String 30 This field helps to make sense name of role. This field helps to control the right of ABC user on Privileges No Integer the ABC system.

7.2.3

Table LayoutReference

The table stores profile of each ABC user. It helps ABC users select information that is displayed when they visit The ABC. Field name Key Field type Length Description This field plays a role of primary key of the table. It Layout_id Primary key Integer helps to distinguish among records. This field lets ABC user select enter_tracking link Enter_tracking No Boolean is displayed on his profile or not when he logins the

TMA Confidential

TMA Solutions, 2004

Page 55 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

Save_tracking

No

Boolean

Create_shipment

No

Boolean

Find_location

No

Boolean

Quick_link

No

Boolean

Billing_center

No

Boolean

Order_supply

No

Boolean

Schedule_pickup

No

Boolean

Form_export

No

Boolean

Void_shipment

No

Boolean

ABC. This field lets ABC user select save_tracking link is displayed on his profile or not when he logins the ABC. This field lets ABC user select create_shipment link is displayed on his profile or not when he logins the ABC. This field lets ABC user select find_location link is displayed on his profile or not when he logins the ABC. This field lets ABC user select quick_link link is displayed on his profile or not when he logins the ABC. This field lets ABC user select billing_center link is displayed on his profile or not when he logins the ABC. This field lets ABC user select order_supply link is displayed on his profile or not when he logins the ABC. This field lets ABC user select schedule_pickup link is displayed on his profile or not when he logins the ABC. This field lets ABC user select form_export link is displayed on his profile or not when he logins the ABC. This field lets ABC user select void_shipment link is displayed on his profile or not when he logins the ABC.

7.2.4

Table ABCAccount

The table contains information of account that ABC users uses to pay for their services. Field name Key Field type Length Description This field plays a role of primary key. It helps to Account_number Primary key String 30 distinguish among records in the table. This field refers to a record in Payment table. It Payment_id Foreigner key Integer supplies information for billing. This field refers to a record in User table. It helps User_id Foreigner key String 30 to determine this account belong to whom. This field aims to have more description for the Account_description No String 126 account.

7.2.5

Table Address

The table stores address of an ABC user. An ABC user can have many addresses. And it also stores addresses for billing. Field name Key Field type Length Description This field plays a role of primary key. It helps to Address_id Primary key Integer distinguish among records in the tables. This field refers to a record in User table. It helps User_id Foreigner key String 30 to determine this account belong to whom.

TMA Confidential

TMA Solutions, 2004

Page 56 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

Payment_id Address1 Address2 City Telephone Zipcode Extension Floor_room Country State

Foreigner key No No No No No No No No No

Integer String String String String String String String String String 50 50 30 12 6 8 20 30 30

This field refers to a record in Payment table. It supplies information for billing. This field stores information about first street for the address. This field stores information about second street for the address. This field stores name of city. This field stores telephone number. This field stores zip code number. This field stores extension number. This field stores information about floor and room of the address. This field stores name of country. This field stores name of state if has.

7.2.6

Table Pickup
Key Primary key Foreigner key Foreigner key Foreigner key Field type Integer String Integer Integer 30 Length Description This field plays a role of primary key. It helps to distinguish among records in the table. This field refers to a record in User table. It helps to determine this pickup belong to whom. This field refers to a record in Address table. It stores location that packages are picked up. This field refers to a record in Shipment table. It helps to get information of shipment that this pickup relates to. This field stores the date this pickup is carried out. This field stores the earliest time this pickup can be carried out. This field stores the latest time this pickup can be carried out. This field stores email address. This field stores another email address. This field shows whether packages are over 70 lbs weight or not. This field stores total weight of all packages. This field stores result of the pickup. This field stores status of the pickup. This field figures out position that packages can be picked up at a location. This field stores email address to notice in case of failing to pick up. This field stores services name that uses to pick up packages.

The table stores information relates to a pickup of an ABC user. Field name Pickup_id User_id Address_id Shipment_id

Pickup_date Time_ready Time_latest Email_notice1 Email_notice2 Item_weigh_70lbs Total_weight Pickup_result Status Pickup_place Email_for_fail Service

No No No No No No No No No No No No

Date DateTime DateTime String String Boolean Decimal String String String String String 30 30 30 30 30 30 30

7.2.7

Table Shipment
TMA Solutions, 2004 Page 57 of 65

TMA Confidential

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

The table stores information of a specific shipment. Field name Key Field type Shipment_id Primary key Integer Tracking_number User_id Pickup_id Foreigner key Foreigner key Foreigner key String String Integer

Length

30 30

Return_shipment_id

Foreigner key

Integer

Payment_id Ship_from Ship_to Email_content Print_reference1 Email_notice_fail Email1 Email2 Email3 Email4 Email5 Response_email1 Response_email2 Response_email3 Response_email4 Response_email5 Saturday_deliver Date Cost Number_package Service

Foreigner key Foreigner key Foreigner key No No No No No No No No No No No No No No No No No No

Integer Integer Integer String Boolean String String String String String String Integer Integer Integer Integer Integer Boolean Date Decimal Integer String 40 30 30 30 30 30 30 256

Description This field plays a role of primary key. It helps to distinguish among records in the table. This field refers to a record in Tracking table. It helps ABC user to track the shipment. This field refers to a record in User table. It states that the shipment belongs to whom. This field refers to a record in Pickup table. It contains information so that all packages of the shipment can be picked up. This field refers to a record in the ReturnShipment table. It states that this shipment is a shipment or a return shipment. This field refers to a record in Payment table. It helps to get information for billing for the shipment. This field refers to a record in Address table. It stores place where the shipment begins. This field refers to a record in Address table. It stores place where the shipment will be shipped to. This field contains content of an email that will notice to who receive the shipment. This field allows ABC User select to print and stick a reference on every package or not. This field stores email address so that it can be used when the shipment is failed. This field stores first email address. This field stores second email address. This field stores third email address. This field stores fourth email address. This field stores fifth email address. This field stores options for case of using the first email. This field stores options for case of using the second email. This field stores options for case of using the third email. This field stores options for case of using the fourth email. This field stores options for case of using the fifth email. This field states that whether the shipment delivers on Saturday or not. This field stores date that the shipment is created. This field stores cost of the shipment. This field stores number of packages for the shipment. This field stores information about service that uses to ship the shipment.

TMA Confidential

TMA Solutions, 2004

Page 58 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

7.2.8

Table PaymentInfo

The table stores information that ABC customers use to pay for their services. Field name Key Field type Length Description This field plays a role of primary key. It helps to Payment_id Primary key Integer distinguish among records in the table. This field refers to a record in Shipment table. It Shipment_id Foreigner key Integer states that what shipment uses the payment info for its billing. Account_number Foreigner key String 30 This field refers to an ABC account. This field stores address that credit card use to pay Address_id Foreigner key Integer for. This field contains a brief description for the Payment_name No String 59 payment info. Card_number Expiration_date Card_type No No No String Date String 30 30 This field stores credit card number. This field stores date credit card will be expired. This field stores information about type of credit card.

7.2.9

Table ReturnShipment
Description This field plays a role of primary key. It helps to distinguish among return shipments. This field refers to a shipment in Shipment table. This field stores ERL. This field stores ERL_memo_field. This field stores an email to notice when the shipment return is failed. This field stores name of service that uses for the return shipment.

The table contains additional information for a return shipment. Field name Key Field type Length Return_shipment_id Primary key Integer Shipment_id ERL ERL_memo_field ERL_notice_fail Return_service Foreigner key No No No No Integer String String String String

30 30

7.2.10 Table Package


The table stores information relates to package that ABC Customer would like to transfer. Field name Key Field type Length Description This field plays a role of primary key. It helps to Package_id Primary key Integer distinguish among package in the table. Foreigner Shipment_id Integer This field refers to a shipment in Shipment table. key Weight No Decimal This field stores weight of the package. Declare_value Length Width Height Reference1 No No No No No Decimal Decimal Decimal Decimal String 256 This field stores value of the package. This field stores length of package. This field stores width of package. This field stores height of package. This field stores the first reference for package.

TMA Confidential

TMA Solutions, 2004

Page 59 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

Reference2 Is_large Additional_handling Merchandise_des Cod_amount Shipper_release Diliver_confirm_type Package_type

No No No No No No No

String Boolean Boolean String Integer String String

256

50

This field stores the second reference for package. This field states that whether package is large or not. This field allows ABC user select option of handling. This field stores information about merchandise of package. This field stores amount of cod of package. This field stores information that deliver confirms. This field helps to classify packages.

40 30

7.2.11 Table Tracking


The table stores the tracking information of a shipment. Field name Tracking_number Key Primary key Field type String Length 30 Description This field plays a role of primary key. It helps to distinguish among tracking item in Tracking table. This field refers to a shipment in Shipment table. This field stores information about type of shipment. This field stores start date in range of time view tracking. This field stores end date in range of time view tracking. This field stores account number that ABC user usually uses.

Shipment_id Shipment_type Date_start Date_end Account_number

Foreigner key No No No No

Integer String Date Date String

30

30

7.2.12 Table ShipmentHistory


The table stores history of every shipment. Field name Key Field type Tracking_number Primary key String Address_id Status Notice Primary key No No Integer String String Length 30 30 128 Description This field refers to a tracking in Tracking table. This field refers to an address in Address table. This field shows status of shipment. This field stores notice for every milestone.

7.2.13 Table PrintJob


The table stores information of a specific print job. Field name Key Field type Print_job_id Primary key Integer Print_history_id Shipment_id User_id Foreigner key Foreigner key Foreigner key Integer Integer String Length Description This field plays a role of primary key. It helps to distinguish among print jobs. This field refers to a printjob history in PrintJobHistory table. This field refers to a shipment in Shipment table. This field refers to a user in User table. It states

30

TMA Confidential

TMA Solutions, 2004

Page 60 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

Pickup_id

Foreigner key

Integer

Print_job_name Order_date Status Cost

No No No No

String Date String Decimal

50 20

that who creates the print job. This field refers to a pickup in Pickup table. It helps to get information about pickup for this print job. This field contains name of print job. This field stores date that print job is created. This field stores status of print job. This field stores expense for a print job.

7.2.14 Table PrintJobOption


The table contains options that ABC Customers want for their print job. Field name Key Field type Length Description This field plays a role of primary key. It helps to Print_option_id Primary key Integer distinguish among print job options. This field stores number of copies for a document Number_copy No Integer that needs to be printed. This field is an option that allows ABC user choose Is_collated No Boolean when he prints document. This field is an option that allows ABC user choose Is_single_side No Boolean when he prints document. This field is an option that allows ABC user choose Is_print_color No Boolean when he prints document. This field is an option that allows ABC user choose Is_first_color No Boolean when he prints document. This field is an option that allows ABC user choose Folding No Boolean when he prints document. This field stores type of paper uses to print Paper_type No String 20 document. This field stores category of paper uses to print Paper_category No String 20 document. This field is an option that allows ABC user choose Cutting No Boolean when he prints document. This field is an option that allows ABC user choose BindingStapling No Boolean when he prints document. This field is an option that allows ABC user choose HolePunching No Boolean when he prints document.

7.2.15 Table Document


The table stores information of the document that ABC Customer would like to print. Field name Key Field type Length Description This field plays a role of primary key. It helps to Document_id Primary key Integer distinguish among documents in the table. This field states which print job relates to the Print_job_id Foreigner key Integer document. This field refers to a document in the Document Print_option_id Print_option_id Integer table. It helps to select options when they print a document.

TMA Confidential

TMA Solutions, 2004

Page 61 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

Document_name Document_dir

No No

String String

30 50

This field stores name of document needs to be printed. This field stores directory of document.

7.2.16 Table PrintJobHistory


Field name Print_history_id Print_job_id Status Notice Key Primary key Foreigner key No No Field type Integer Integer String String 20 128 Length Description This field plays a role of primary key. It helps to distinguish among print job histories. This field refers to a print job in PrintJob table. It is also print job that we store history. This field stores status of print job. This field stores information of print job

7.2.17 Table Country


The table contains all countries on the world. Field name Key Field type Country_id Primary key Integer Country_name No String Length Description This field plays a role of primary key. It helps to distinguish among countries. This field stores name of country.

30

7.2.18 Table State


The table contains all states in each country. Field name Key Field type State_id Country_id State_name Primary key Foreigner key No Integer Integer String 30 Length Description This field plays a role of primary key. It helps to distinguish among states. This field refers to a country in Country table. It shows which country this state belongs to. This field describes name of state.

7.2.19 Table Service


The table lists all services following their type can be used at The ABC. Field name Key Field type Length Description This field plays a role of primary key. It helps to Service_id Primary key Integer distinguish among services. This field refers to a service type in ServiceType Service_type_id Foreigner key Integer table. It helps to classify the service following type of service. Service_name No String 30 This field describes name of service.

7.2.20 Table ServiceType


The table lists all types of services that can be used at The ABC. Field name Key Field type Length Service_type_id Primary key Integer Description This field plays a role of primary key. It helps to distinguish among types of service.

TMA Confidential

TMA Solutions, 2004

Page 62 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

Service_type_name

No

String

30

This field describes name of type of service.

7.2.21 Table Authorities


The table lists all authorities for each user The ABC. Field name Key Field type Author_id Primary key Integer Username No String Authority No String Length 30 40 Description This field plays a role of primary key. This field describes name of user that has authority. This field describes name of authority (ROLE_ADMIN).

7.2.22 Table Resource


The table lists all pages of The ABC. It also attaches authority for each page. Field name Resource_id Resource_name Authority Key Primary key No No Field type Integer String String Length Description This field plays a role of primary key. It helps to distinguish among pages. This field stores link of web page. This field stores authority for this page.

50 40

8. DEPLOYMENT MODEL
Distribution is an essential aspect of enterprise applications. Deployment model is useful for modeling how the different components that make up the system are distributed across multiple types of servers. The deployment model below displays the configurations of the ABC system with types of operating system, services or software will be installed on appropriate servers. There are two servers for the system Web Application server and Database server. Web Application server will be installed with:

JDK/JRE version 1.5.x or later. Apache Tomcat version 5.5.x or later Deploy all ABC packages by running the scripts setupABCWebStore.sh

Database server will be installed with: MySQL 1.5 or later. Setup ABC database by running the scripts setupDB.sh

TMA Confidential

TMA Solutions, 2004

Page 63 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

Client Browser

<<internet>>

<<Web Application Server>> Windows: Linux Inteprise, Apache Tomcat 5.5

<<DatabaseServer>> MySQL 5.0

<<deploy>>

<<deploy>> <<deploy>>

<<ViewArchiveFile>>

<<JavaArchiveFile>>

<<WebArchiveFile>> <<WebArchiveFile>> Administration <<WebArchiveFile>> Ultility

<<WebArchiveFile>> Tracking

<<WebArchiveFile>> Report

<<WebArchiveFile>> Shipping

<<WebArchiveFile>> Printing/Copying

<<WebArchiveFile>> Delivery

<<WebArchiveFile>> Payment

9. OPERATIONAL SUPPORTING MECHANISM


Event Logging and Development Logging are important parts of ABC Store system. They will help administrator to identify easily any problems, and help defects developers to find defects and resolve them easily. With development logging, we will support following types of logging. Debug: provides the debug info to help developer easily to find the problems. It should be logged for complicated data, and data flow Info: provides the information of each method the system will go though. It should be logged in beginning and ending of each function. Error: provides all error happened in system such as throwing the catch block,

10. RESTRICTIONS, LIMITATIONS, AND CONSTRAINTS


Address validation: The system does not perform detailed address validation. Packaging and shipping services: TMA system will not provide the calculation functionality of time and cost but the system will create function calls to get business rules, interfaces and/or APIs from the ABC iShip CMS backend system regarding cost and time. Printing and copying services: Customers can easily customize the document(s) by adding tabs and inserting pages into the document. TMA system will not support the function Preview Print Job in Printing/Copying service.

11. TESTING ISSUES


11.1 Classes of Tests
TMA Confidential TMA Solutions, 2004 Page 64 of 65

Quality Management System Issue Date: Dec 18, 2007

Software Design Specification

Code: ABC-SDS-001 Version: 0.5

Unit Testing

Individual components (Administration, ShipmentMgr ...) will be tested separately by developers. This test will be conducted on each function before integrating to the system. All units testing will be done in White Box fashion. Combined components will be tested as a whole. To maintain maximum control over the testing criteria, all data files will be made specifically for testing purposes. The level builder will be tested to ensure proper communication between the interface and the database. System Testing will be performed on Usability, Security, and Performance testing. These testing will be conducted by testers after the integration testing completed. Stress Testing will determine the stability of ABC Store system Load Testing is the process of creating demand on a system or device and measuring its response. These testing will be conducted by testers after the integration and system testing completed.

Integration Testing

System Testing

Stress and Load Testing


11.2 Expected Software Response


All components of the system are working properly and satisfy the requirement. The system satisfies non-functional requirements. There is an error log if the system has problem. Error-less compilation of code.

11.3 Performance Bounds


The normal speed to load a web page is within 10 seconds. 12 hours/day and 6 days/week for front-end (retail stores) technical support 24x7 for back-end (remote servers) technical support Number of connections the system maximum support: TBD

TMA Confidential

TMA Solutions, 2004

Page 65 of 65

You might also like