Professional Documents
Culture Documents
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.
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.
TMA Confidential
Page 2 of 65
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
Page 3 of 65
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
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
Page 5 of 65
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.
Dec 14, 07
0.3
0.4 0.5
TMA Confidential
Page 6 of 65
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.
TMA Confidential
Page 7 of 65
Part Part 1
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
Part 7
Part 8
Part 9
Part 10 Part 11
TMA Confidential
Page 8 of 65
United Parcel Service Software Design Specifications Software Requirement Specifications Object Relational Mapping Integrated Development Environment
References
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.
TMA Confidential
Page 9 of 65
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
4. ARCHITECTURE
4.1 System Architecture
TMA Confidential
Page 10 of 65
Client Tier
Shipping Browser Client Printing Browser Client Browser Client Tracking
Customer
Adminstration Browser Client Report Browser Client Browser Client Help Desk
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
Database Tier
Database System
TMA Confidential
JDBC
Page 11 of 65
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
4.1
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.
TMA Confidential
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
Hibernate
Acegi Security
POJO
5. COMPONENT DESIGN
5.1 Components Dependencies Diagram
TMA Confidential
Page 13 of 65
RoleService
Shipping ShippingService
PickupService
Payment PaymentService
Delivery DeliveryService
RoleService
Report
ReportService
Tracking
TrackingService
Shipping
ShippingService
TMA Confidential
Page 14 of 65
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.
2 3
Report Tracking
Shipping
ShipmentService
PickupService
TMA Confidential
Page 15 of 65
5 6 7
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.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
9 : createUPSAccount() 10 : generateEmail()
11 : sendEmail()
TMA Confidential
Page 16 of 65
<<Actor>> Users
<<Page>> UserMngtForm
<<Service>> UserService
<<Utility>> EmailUtility
1 : access()
2 : action()
3 : getUserList() 5 : getUser()
<<Actor>> Users
<<Page>> UserMngtForm
<<Controller>> UserManager
<<Action>> AddUserAbsAction
<<Service>> UserService
<<Utility>> EmailUtility
1 : access()
2 : action()
3 : getUserList() 5 : getUser()
14 : deleteUser()
TMA Confidential
Page 17 of 65
Controller
<<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
+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
Page 18 of 65
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
Page 19 of 65
<<Actor>> Users
<<Page>> UserMgntForm
<<Controller>> RoleManager
<<Controller>> AddUserRole
<<Controller>> DeleteUserRole
<<Service>> UserService
<<Entity>> UserRole
9 : updateUserRole() 11 : deleteUserRole()
10 : saveObject()
12 : deleteUserRole() 13 : removeObject()
<<Model>> UserRole +privileges +name +desciption +getPrivileges() +setPrivileges() +getRoleName() +setRoleName() +getDescription() +setDescription()
<<Entity>> UserRoles
<<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
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.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
Page 21 of 65
<<Actor>> Users
<<Page>> ReportForm
<<Controller>> ReportManager
<<Service>> ReportService
<<Entity>> Shipments
<<Entity>> Packages
<<Entity>> PrintJobs
<<Entity>> Pickups
1 : access()
2 : makeReport() 3 : makeReport()
4 : getShipmentInfo()
Controller
<<Entity>> PrintJobs <<Service>> ReportService +getShipmentInfo() +getpackageInfo() +getPrintJobsInfo() +makeReport() +...() <<Entity>> Packages
<<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
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.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()
TMA Confidential
Page 23 of 65
<<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
Page 24 of 65
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
Page 25 of 65
<<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()
<<Controller>> ShipmentManager -upsService +handleRequest() +...() Controller <<Controller>> VoidShipment -upsService +handleRequest() +...()
<<Entity>> Addresses
<<Model>> Shipment +user +shipFrom +shipTo +service +... +getUserAddress() +setUserAddress() +getShipFrom() +setShipFrom() +schedulePickup() +...()
<<Entity>> Users
<<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
Page 26 of 65
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.
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
Page 27 of 65
1 : access() 2 : getPickupInfo()
<<Actor>> Users
<<Page>> PickupHistoryForm
<<Controller>> PickupManager
<<Controller>> DeletePickup
<<Service>> PickupService
<<Entity>> Pickups
TMA Confidential
Page 28 of 65
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
Page 29 of 65
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()
<<Controller>> ShipmentManager
<<Entity>> Shipments
Controller
<<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
Page 31 of 65
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
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)
TMA Confidential
Page 32 of 65
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
The content page dominates the main area of the web site.
6.2.3
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 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
Page 34 of 65
6.3.1
6.3.1.1.2
TMA Confidential
Page 35 of 65
6.3.1.1.3
TMA Confidential
Page 36 of 65
6.3.1.1.4
TMA Confidential
Page 37 of 65
6.3.1.1.5
Create a Return
TMA Confidential
Page 38 of 65
6.3.1.1.6
Set Preferences
TMA Confidential
Page 39 of 65
TMA Confidential
Page 40 of 65
6.3.1.2.2
TMA Confidential
Page 41 of 65
6.3.1.2.3
TMA Confidential
Page 42 of 65
6.3.1.2.4
TMA Confidential
Page 43 of 65
TMA Confidential
Page 44 of 65
6.3.1.3.2
TMA Confidential
Page 45 of 65
6.3.1.3.3
Pickup Status
6.3.1.3.4
Pickup Status
TMA Confidential
Page 46 of 65
6.3.1.3.5
Set Preferences
TMA Confidential
Page 47 of 65
6.3.2
Printing / Copying
TMA Confidential
Page 48 of 65
6.3.3
Tracking
TMA Confidential
Page 49 of 65
6.3.4
TMA Confidential
Page 50 of 65
6.3.5
Support
6.3.6
Admin
6.3.6.1 Register
TMA Confidential
Page 51 of 65
6.3.6.2 My ABC
TMA Confidential
Page 52 of 65
TMA Confidential
Page 53 of 65
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
Foreigner key No No
TMA Confidential
Page 54 of 65
No No No No No No No No No
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
Page 55 of 65
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
Page 56 of 65
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
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
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
Page 58 of 65
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
TMA Confidential
Page 59 of 65
No No No No No No No
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
Foreigner key No No No No
30
30
30
TMA Confidential
Page 60 of 65
Pickup_id
Foreigner key
Integer
No No No No
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.
TMA Confidential
Page 61 of 65
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.
30
TMA Confidential
Page 62 of 65
Service_type_name
No
String
30
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
Page 63 of 65
Client Browser
<<internet>>
<<deploy>>
<<deploy>> <<deploy>>
<<ViewArchiveFile>>
<<JavaArchiveFile>>
<<WebArchiveFile>> Tracking
<<WebArchiveFile>> Report
<<WebArchiveFile>> Shipping
<<WebArchiveFile>> Printing/Copying
<<WebArchiveFile>> Delivery
<<WebArchiveFile>> Payment
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.
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
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.
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
Page 65 of 65