ZILDOR, INC. Software Design Document. SplitPay
|
|
|
- Crystal Harris
- 10 years ago
- Views:
Transcription
1 SplitPay Rick Aasen Ed Carlisle Nick Carson Leland Cerauskis Eric Jeffers Travis Green Blake Matson Josh Ritchey Phuong Vo Version 1.0 Approved March 4, 2011
2 2 TABLE OF CONTENTS Table of Contents Introduction Goals and Objectives Project Overview and Scope... 5 CORE FEATURES... 5 ADDITIONAL FEATURES Software Context Major Constraints Intended Audience and Reading Suggestions Data Design Internal Software Data Structure Global Data Structure Temporary Data Structure Database Description Architectural & Component-Level Design System Structure UserAccount Class Processing narrative (PSPEC) Interface description Processing detail GroupMember Class Processing narrative (PSPEC) Interface description Processing detail Group Class Processing narrative (PSPEC) Interface description Processing detail Bill Class Processing narrative (PSPEC) Interface description Processing detail Transaction Class Processing narrative (PSPEC) Interface description Processing detail Server Component Processing Narrative (PSPEC) Interface Description Processing Detail View Class
3 3 4. User Interface Design Description of the user interface Objects and actions For first time users For returning users Interface design rules Components available UIDS description Restrictions, limitations, and constraints Testing Issues Testing Cases and Expected Results White Box Testing: Black Box Testing: Feature Testing Performance Bounds Critical Systems Testing cases Appendices Packaging and installation issues Design metrics to be used Sequence Diagrams UML Diagram
4 4 1. INTRODUCTION The purpose of this software design document is to provide a low-level description of the SplitPay system, providing insight into the structure and design of each component. Topics covered include the following: Class hierarchies and interactions Data flow and design Processing narratives Algorithmic models Design constraints and restrictions User interface design Test cases and expected results In short, this document is meant to equip the reader with a solid understanding of the inner workings of the SplitPay system. 1.1 GOALS AND OBJECTIVES The purpose of SplitPay is to facilitate the process of resolving shared expenses, like those that arise when paying rent, splitting the check at dinner, or dividing travel expenses. Thus, the primary objective of the SplitPay project is to create a viable alternative to sorting out such expenses manually. Accordingly, the final product must be quick, efficient, and extremely easy to use. It must offer useful features without overwhelming the user with options. The user interface must be intuitive and have little or no learning curve. Beyond these general design principles, the application must also provide the following concrete functionalities: Algorithm for determining the most efficient payment scheme Support for multiple groups, bills, and transactions Automatic data synchronization Group, bill, and transaction history Push notifications Support for offline users 4
5 5 1.2 PROJECT OVERVIEW AND SCOPE The SplitPay system is composed of two primary components: a client-side application that receives user input and performs calculations, and a server-side application which updates and synchronizes data across devices. The system features can be broken up into two groups as well: core features, which are essential to the function of the application, and additional features, which are only meant to add extra functionality. The following list includes all of the features currently designated for inclusion in the final release of SplitPay: CORE FEATURES 1. USER REGISTRATION & WELCOME o Only appears once (the first time the application is run) o Allows the user to register with the SplitPay server o Enables the user to customize his/her account settings and preferences 2. GROUP CREATION & MANAGEMENT o Streamlines the process of creating and organizing groups o Provides support for multiple groups o Allows the user to add group members manually or from contacts list 3. POSTING A BILL o Stores and monitors the bill amount, the individuals involved, etc. o Includes support for multiple simultaneous bills o Efficiently distributes debt amongst the individuals responsible for the bill 4. MEMBER-TO-MEMBER TRANSACTIONS o Enables group members to simulate transfers of debt, payments made, etc. o Adjusts member balances accordingly o Records relevant information (amount paid, members involved, etc.) 5. FINAL DEBT RESOLUTION o Calculates the most efficient method of sorting out debts o Notifies group members of unresolved debts, credits, etc. o Offers the option to disband a group once all payments are made 6. GROUP HISTORY o Automatically records all transactions and bills posted to each group o Provides users with access to a detailed history of transactions o Supports sorting transactions by date, amount, payer, etc. 7. SHOW ALL DEBTS o Enumerates all of a user s unresolved debts across each group he/she is a part of o Provides easy access to relevant information (past transactions, group info, etc.) o Offers the option to resolve a debt (or debts) immediately 5
6 6 8. PUSH NOTIFICATIONS o Appear after any significant event occurs in a group o Alert group members of newly incurred expenses o Remind users of unresolved debts The features below are not guaranteed to be present in the final release of SplitPay, but will be added as time permits. Due to their tentative nature, they will not be covered in this document. ADDITIONAL FEATURES 1. HELP MENU o Displays a list of topics covering the different components of SplitPay o Offers detailed information on each feature, menu, etc. o Can be accessed at any time via the Settings menu 2. SETTINGS MENU o Allows the user to customize his/her preferences o Enables the user to modify certain features and functionalities o Can be accessed at any time using the built-in Settings button on Android phones 3. PAYPAL INTEGRATION o Incorporates a mechanism for initiating real transactions o Facilitates secure, hassle-free transactions between members o Automatically updates member balances as transactions occur 4. GPS TRACKING o Stores location data associated with certain events o Utilizes Google Maps to display transaction locations o Creates an expense map which can be viewed by all members of a group 5. RECEIPT IMAGING o Utilizes the camera built into Android handsets o Records and stores a snapshot of receipts associated with different expenses o Provides a method of checking/verifying expenses posted to a group 6. /SMS NOTIFICATIONS o Extends the standard notifications service built into SplitPay o Automatically delivers notifications via and/or text message o Enables individuals without SplitPay to receive group notifications 7. SPLITPAY TUTORIAL o Provides an abridged version of the Help menu for first-time users o Offers a step-by-step run through of each feature, menu, etc. o Enables any user to quickly and easily take advantage of all of SplitPay s functionalities 6
7 7 1.3 SOFTWARE CONTEXT SplitPay will be offered on the Android market free of charge. Development and maintenance costs are virtually nonexistent, so funding should not be an issue. If, however, this situation changes at some point, it will be possible to fund the project by incorporating on-screen advertisements into the application. Future development plans will be based on the features (if any) that do not make it in the initial release of the application. If all of these features are included, there are several experimental features that will potentially be incorporated. These features are not covered in this document. 1.4 MAJOR CONSTRAINTS The greatest constraint for the SplitPay project is time. There is roughly one month allocated to the development, testing, and documentation of this project, including both the Android application and the server-side application and database. Collectively, the development team has very little experience with the Android platform, so a significant portion of this time will be dedicated to learning the environment. Consequently, time is an even greater constraint. This may result in fewer features in the initial release, however the core functionality of the system will be unaffected. 1.5 INTENDED AUDIENCE AND READING SUGGESTIONS While the software requirement specification (SRS) document is written for a more general audience, this document is intended for individuals directly involved in the development of SplitPay. This includes software developers, project consultants, and team managers. This document need not be read sequentially; users are encouraged to jump to any section they find relevant. Below is a brief overview of each part of the document. Part 1 (Introduction) o This section offers a summary of the SplitPay project, including goals and objectives, project scope, general system details, and some major constraints associated with the intended platform. 7
8 8 Part 2 (Data Design) o Readers interested in how SplitPay organizes and handles data should consult this section, which covers data structures and flow patterns utilized by the system. Part 3 (Architectural and Component-Level Design) o This section describes the SplitPay system class by class, including interface details, class hierarchies, performance/design constraints, process details, and algorithmic models. Part 4 (User Interface Design) o This section covers all of the details related to the structure of the graphical user interface (GUI), including some preliminary mockups of the SplitPay Android application. Readers can view this section for a tentative glimpse of what the final product will look like. Part 5 (Restrictions, Limitations, and Constraints) o This section discusses the general constraints imposed upon the project Part 6 (Testing Issues) o Readers interested in the software testing process should consult this section, which offers a list of test cases, expected responses, and other pertinent information. Part 7 (Appendices) o This section includes any additional information which may be helpful to readers. 8
9 9 2. DATA DESIGN 2.1 INTERNAL SOFTWARE DATA STRUCTURE SplitPay s internal structure is divided into two parts: server-side and client-side. On the client side, data will reside locally in memory and will be organized based on the classes defined later in this document. Since the SplitPay program may be considered data-centric, the classes that handle the data will be isolated and will be accessed by way of a Model-View- Controller system. The data on the local Android client will be requested from the server at application initialization and refreshed as necessary based on user actions. The data structure on the server will essentially mirror the structure of the local Android client in terms of member fields of the classes. The server will be implemented using PHP. Permanent storage of user information will be accomplished using a MySQL database. Section 3.8 (Server Component) covers this subject in further detail. The server and Android client will exchange data using the JSON format. JSON is a lightweight object description language that is similar to XML. JSON is being used due to its versatility and because of the fact that an implementation is available for both PHP and JAVA. 2.2 GLOBAL DATA STRUCTURE The global data structure of this application is best characterized by the database. The database structure shows the data involved in the application in its purest sense. The local Android client of SplitPay will never access this database directly; it will instead issue requests to the server. 2.3 TEMPORARY DATA STRUCTURE Temporary data structures, as they relate to SplitPay, refer to the data objects that are created on the local Android client, and also to the JSON objects that interchanged between the server and the client. The data objects created on the local device will only exist for the duration of time that the application is running, and will subsequently be destroyed. The JSON objects will only exist for the duration of the transaction between the client and server. The server will destroy the objects after sending them, and the client will destroy the JSON objects once they have been parsed. 9
10 DATABASE DESCRIPTION -- Table structure for table `bill` -- CREATE TABLE `bill` ( `billid` int(11) NOT NULL auto_increment, `groupid` int(11) NOT NULL, `amount` int(11) NOT NULL, `displayname` varchar(30) NOT NULL, `payer` int(11) NOT NULL, `involved` int(11) NOT NULL, PRIMARY KEY (`billid`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; Table structure for table `billpayees` -- CREATE TABLE `billpayees` ( `billid` int(11) NOT NULL, `userid` int(11) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8; Table structure for table `group` -- CREATE TABLE `group` ( `groupid` int(11) NOT NULL auto_increment, `displayname` varchar(30) NOT NULL, `userid` int(11) NOT NULL, `leaderid` int(11) NOT NULL, `isactive` tinyint(1) NOT NULL, PRIMARY KEY (`groupid`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; Table structure for table `member` - CREATE TABLE `member` ( `userid` int(11) NOT NULL, `groupid` int(11) NOT NULL, `balance` int(11) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8; 10
11 Table structure for table `prefrences` -- CREATE TABLE `prefrences` ( `userid` int(11) NOT NULL, `setting1` varchar(30) NOT NULL, `setting2` varchar(30) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8; Table structure for table `transactions` -- CREATE TABLE `transactions` ( `transactionid` int(11) NOT NULL auto_increment, `groupid` int(11) NOT NULL, `tomember` int(11) NOT NULL, `frommember` int(11) NOT NULL, `amount` decimal(10,0) NOT NULL, PRIMARY KEY (`transactionid`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; Table structure for table `users` -- CREATE TABLE `users` ( `userid` int(11) NOT NULL auto_increment, ` ` varchar(30) NOT NULL, `displayname` varchar(30) NOT NULL, `isoffline` tinyint(1) NOT NULL, PRIMARY KEY (`userid`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; 11
12 12 3. ARCHITECTURAL & COMPONENT-LEVEL DESIGN 3.1 SYSTEM STRUCTURE The SplitPay system is broken up into two major components: a client-side Android application and a server-side PHP application and MySQL database. The client-side application is also separated into two parts: the functional component (written in Java), and the graphical component (written in XML). The functional component forms the core of SplitPay. It receives user input and constructs groups, bills, and transactions. It performs all of the calculations required to resolve debts. The graphical component, as the name implies, is simply the graphical user interface. It provides all of the buttons, text boxes, and other onscreen elements which allow the user to access all of the features provided by the application. The server component of SplitPay is comprised of a PHP interface, which manages incoming and outgoing messages, and a MySQL database, which provides centralized storage for synchronized data. The server application receives serialized data from Android devices and parses it into useful information. This data is then stored in the database and subsequently synchronized to other devices (if any) in the same group. 3.2 USERACCOUNT CLASS The UserAccount class is meant to represent SplitPay user accounts and includes a unique identifier, the user s address, a display name, and any other pertinent information (covered below). User objects are meant to represent SplitPay users within the application, and consequently there is one unique UserAccount object associated with each user PROCESSING NARRATIVE (PSPEC) When a user first creates his/her account with SplitPay, a new UserAccount object is created. This object is responsible for storing information unique to the SplitPay user. This includes the following: User ID address Display name Groups, bills, and transactions in which the user is involved 12
13 13 Thus, any time information related to a user is required, the UserAccount object is called upon. For instance, when a group leader adds a new member to a group, a UserAccount object is used to uniquely identify that user INTERFACE DESCRIPTION UserAccount new( displayname: String, String ) getdisplayname() : String setdisplayname( newname : String ) get () : String set ( new String ) getid() : int getgroups() : Group[] getbills() : Bill[] gettransactions(): Transaction[] joingroup( group: Group ) : boolean leavegroup( groupid: int ) : boolean addbill( bill: Bill ) : boolean removebill( billid: int ) : boolean addtransaction( transaction: Transaction ) : boolean removetransaction( transactionid: int ) : boolean pulldatafromserver() : boolean pushdatatoserver() : boolean PROCESSING DETAIL Since UserAccount is mainly used for data storage/retrieval, there are no algorithms associated with this class. The only methods in the class are accessors, mutators, and processes that communicate with the server DESIGN CLASS HIERARCHY The UserAccount class has no parent or child classes. However, each instance GroupMember has an associated UserAccount (which is not necessarily unique to that GroupMember) RESTRICTIONS/LIMITATIONS Since the UserAccount class is self-contained, there are no practical restrictions PERFORMANCE ISSUES Considering that there is only one UserAccount object associated with each device, there are no performance-related issues associated with this class. It requires a minimal amount of information to be stored on the phone, and requires no processor-intensive calculations. The 13
14 14 only potential performance issue would occur when this class attempts to communicate with the SplitPay server. If the device cannot connect to the server, then the methods responsible for communicating with the server will not be carried out until connection is restored DESIGN CONSTRAINTS The major constraint for this class is that there may only be one instance of UserAccount per handset. This is because there is only one user associated with each device. In addition, each user ID must be unique, or else interactions with the server will be highly problematic. Lastly, each UserAccount must have a valid address PROCESSING DETAIL FOR EACH OPERATION new( displayname: String, String ) o When a user first registers for an account, he/she inputs a display name and a valid address. The UserAccount constructor is called and this information is passed, creating a new UserAccount object for that user. joingroup( group: Group ) : boolean o Each UserAccount stores a list of all groups which the user is a member of. Thus, whenever a user creates or is added to a group, this method is called to add that group to the UserAccount. leavegroup( groupid: int ) : boolean o If a group is disbanded or a member leaves the group, this method is invoked to remove the target group from the UserAccount s group list. addbill( bill: Bill ) : boolean o As with groups, each UserAccount stores a list of bills the user is involved in. Thus, whenever the user is involved in a new bill, this method is called to update the bills list. removebill( billid: int ) : boolean o Whenever a bill is resolved and deleted, this method is invoked to update the bill list within this UserAccount. addtransaction( transaction: Transaction ) : boolean o As with bills, whenever a user is involved in a transaction, the associated UserAccount calls this method to add the transaction to the transactions list. 14
15 15 removetransaction( transactionid: int ) : boolean o When a transaction is resolved and deleted, this method is invoked to update this UserAccount s transactions list. pulldatafromserver() : boolean o If a bill or transaction is created, all the users involved must have their UserAccount objects updated to reflect the changes. When this method is called, all UserAccount information stored on the server replaces this UserAccount s information (if it has been changed). pushdatatoserver() : boolean o This method performs the opposite function of pulldatafromserver(): it replaces all outdated UserAccount information on the server with the UserAccount information stored on the phone. Accessors/mutators o These methods are used to obtain/modify UserAccount information as needed. All fields can be modified except for the unique identifier. 3.3 GROUPMEMBER CLASS The GroupMember class represents participants in SplitPay groups. This class includes a unique identifier, the respective group member s address, display name, a boolean value indicating if the member is the group leader, and the member s balance for the group. Each instance of the classes Group, Bill, and Transaction holds one or more instances of this class PROCESSING NARRATIVE (PSPEC) When a user adds a member to a group, an instance of GroupMember is created. This object is responsible for storing all the information about the new member necessary for group functionality. This includes the following: User ID address Display name Whether or not the member is an offline user Whether or not the member is the group leader The current balance of the member for that particular group 15
16 16 This class is referenced in all of the following situations: A user wishes to create or delete a group, bill, or transaction A user wishes to add or remove members of a group A group wishes to reconcile all debt The user requests information about a participant in a group, bill, or transaction (e.g., when showing a group s history of bills and transactions) INTERFACE DESCRIPTION GroupMember new( displayname: String, String ) getisoffline(): boolean setisoffline( b: boolean ) getuserid(): int get (): String getdisplayname(): String setdisplayname( name: String ) getbalance(): double setbalance( balance: double ) PROCESSING DETAIL As this class only represents a member of a group, bill, or transaction, it will not perform any computations on its own and therefore requires only accessor and mutator methods DESIGN CLASS HIERARCHY The GroupMember class has no parent or child classes. It does, however, hold a reference to its associated UserAccount object RESTRICTIONS/LIMITATIONS Due to the simplistic nature of this class, there are no known restrictions or limitations PERFORMANCE ISSUES Performance issues for this class should be minimal. It is little more than a small aggregation of information for specific members of groups, and therefore should not require significant processor or storage resources. 16
17 DESIGN CONSTRAINTS Due to the nature of the design, each instance of GroupMember must be associated with an instance of Group, Bill, or Transaction. There will be no free-floating instances of the class. In addition, each instance must have a unique user ID and address PROCESSING DETAIL FOR EACH OPERATION This class contains no operations beyond the standard accessor and mutator methods. 3.4 GROUP CLASS The Group class represents a collection of SplitPay users that have elected to distribute amongst themselves the balances of bills and transactions. Each group has a unique ID, display name, a list of participants (instances of class GroupMember), a list of associated transactions (instances of class Transaction), a list of associated bills (instances of class Bill), as well as methods for adding and removing members, stopping or disbanding the group, and several other operations (covered in the following sections) PROCESSING NARRATIVE (PSPEC) When a user creates a new group, a new Group object is constructed. This object is responsible for storing the associations between members, bills, and transactions, as well as calculating and updating the balances of each member according to the proprietary SplitPay algorithm INTERFACE DESCRIPTION Group new( displayname: String ) updategroup( message : String ) addmember( member: GroupMember ) removemember( member: GroupMember ) findmember( id: int ): GroupMember addbill( [bill parameters] ) addtransaction( [transaction parameters] ) disband() stop() resolvealldebts() getdisplayname(): String setdisplayname( name: String ) getgroupid(): int 17
18 PROCESSING DETAIL In addition to the standard accessor and mutator methods for attributes, this class implements the SplitPay algorithm in the method resolvealldebts() to return to the user a suggested payment scenario that balances all debts and credits with the fewest number of payments DESIGN CLASS HIERARCHY The Group class has no parent or child classes. However, each instance of Group holds collections of GroupMember, Bill, and Transaction objects RESTRICTIONS/LIMITATIONS Although Group objects hold a substantial amount of information, there is not enough data present to cause any memory-related issues. The amount of memory space occupied by a Group object will be minimal compared to the space available PERFORMANCE ISSUES Projected performance issues for this class should be minimal. The only computationally complex aspect of this class is the resolvealldebts algorithm, but it should perform perfectly on all Android devices. The algorithm s execution time scales linearly with the number of group members, and only basic mathematical operations (addition/subtraction) are utilized. Consequently, the algorithm s execution time will be negligible, even for very large groups DESIGN CONSTRAINTS This class has only two constraints: (1) group identifiers must be unique, as they are used by the server to identify the group, and (2) each instance of Group must have one or more members, one of which must be designated the leader PROCESSING DETAIL FOR EACH OPERATION new( displayname: String ) o This constructor is called whenever a user creates a new group and enters in all of the required information (in this case, the display name). addmember( member: GroupMember ) o This method receives an instance of class GroupMember and adds it to the members[] array of the group. 18
19 19 removemember( member: GroupMember ) o This method receives an instance of class GroupMember and removes it from the members[] array of the group. findmember( id: int ) o This method searches members[] for a GroupMember with a user ID matching the parameter id. disband() o This method dissolves the group. Only the leader may call this method. stop() o This method prevents new bills and transactions from being added to the group, as well as member creation/deletion. Only the leader may call this method. resolvealldebt() o This method uses a mathematical algorithm to calculate the most efficient manner of balancing debts in the group, minimizing the overall number of payments. Only the leader may call this method. 3.5 BILL CLASS Bill objects are meant to represent expenses that group members will be dividing amongst themselves. A Bill object includes a unique identifier, a display name, the bill amount, the designated payer, and a list of members involved with the bill PROCESSING NARRATIVE (PSPEC) When a user creates a Bill object, a unique identifier is assigned to it and the following information is collected: Display name Bill amount GroupMembers involved Timestamp (automatically recorded by the application) The splitbill() method will then be called upon to determine the changes for each members balance. Finally, the pushbalancechanges() method will push these changes to the server which can then apply the changes to each member s balance in the database. 19
20 INTERFACE DESCRIPTION Bill new( displayname: String, double: amount, GroupMember: payer, GroupMember: involved[] ) getdisplayname() : String setdisplayname( newname : String ) : boolean getid() : int getinvolved() : GroupMember[] getpayer() : GroupMember getamount() : int splitbill() : boolean pushbalancechanges() : boolean PROCESSING DETAIL This class is responsible for splitting a bill into equal payments and updating involved members' balances DESIGN CLASS HIERARCHY The Bill class has no parent or child classes. However, each instance of Group has an array of associated Bills RESTRICTIONS/LIMITATIONS Since the Bill class is self-contained, there are no practical restrictions PERFORMANCE ISSUES The only processing that this class is responsible for is splitting a bill into equal payments and then determining the changes that need to be made to each member s balance, neither of which is computationally intensive. The only potential performance issue would occur when this class attempts to communicate with the SplitPay server. If the device cannot connect to the server, then the methods responsible for communicating with the server will not function correctly. It will, instead, cache the information locally and send it once connection is restored DESIGN CONSTRAINTS The major constraint for this class is that data pushed to the server should be relative as opposed to absolute. For example, if a member's balance needs to be changed from $30 to $40, the change in balance, $10, would be pushed to the server, rather than the final balance, $40. This insures that if several bills are added at the same time, there will be no conflicts. 20
21 PROCESSING DETAIL FOR EACH OPERATION new( displayname: String, double: amount, GroupMember: payer, GroupMember: involved[]) o When a user creates a bill, he/she inputs a display name and a list of members involved in the bill. The Bill constructor is called and this information is passed, creating a new Bill object for that Group. splitbill() : boolean o This method is responsible for determining the balance changes for each member involved with the bill. pushbalancechanges() : boolean o This method is responsible for pushing the balance changes that were determined in the splitbill() method to the server. Accessors/mutators o These methods are used to obtain/modify Bill information as needed. The only field that can be modified is the displayname. 3.6 TRANSACTION CLASS The Transaction class is meant to represent monetary exchanges between group members. Each instance includes a unique identifier, the transaction amount, the payer, the receiver, and a confirmation boolean PROCESSING NARRATIVE (PSPEC) When a user creates a Transaction object, a unique identifier is created and the following information is collected: Transaction amount Payer Receiver Timestamp (recorded automatically by the application) The group leader must then confirm the transaction by invoking the confirm() method. This sets the Transaction object s confirmed flag to true, indicating that the exchange actually occurred. 21
22 INTERFACE DESCRIPTION Transaction new( double: amount, GroupMember: payer, GroupMember: receiver ) getid() : int getpayer() : GroupMember getreceiver() : GroupMember getamount() : int gethasbeenpaid() : boolean sethasbeenpaid() : boolean confirm() : boolean PROCESSING DETAIL This class is responsible for handling exchanges between individual members of a group DESIGN CLASS HIERARCHY The Transaction class has no parent or child classes. However, each instance of Group has an array of associated Transactions RESTRICTIONS/LIMITATIONS Since the Transaction class is self-contained, there are no practical restrictions PERFORMANCE ISSUES This class does not perform any computationally intensive tasks, nor does it require substantial resources. Consequently, there should be no performance problems for this class DESIGN CONSTRAINTS This class encounters the same design constraints as the Bill class. Balances must be uploaded to the server as changes, not as absolute amounts. This prevents multiple transactions from conflicting with one another if pushed to the server simultaneously PROCESSING DETAIL FOR EACH OPERATION new( double: amount, GroupMember: payer, GroupMember: receiver) o When a user creates a transaction, he/she inputs an amount and a receiver. The Transaction constructor is called and this information is passed, creating a new Transaction object for that Group. 22
23 23 confirm() : boolean o This method is responsible for determining and pushing the balance changes for both members involved in the transaction to the server. Accessors/mutators o These methods are used to obtain/modify Transaction information as needed. The only field that can be modified is hasbeenpaid. 3.7 SERVER COMPONENT The server component of SplitPay is responsible for storing and synchronizing data across devices. The server ensures that information on all handsets is consistent, and that the central database is kept up-to-date. There will be a ServerComm class that manages communications between the SplitPay Android application and the server PROCESSING NARRATIVE (PSPEC) The information stored in the database tables are made available to the SplitPay application (for both reading and writing) via multiple interfacing options, including: Push-to-Server Pull-from-Server Push-to-Phone Receive-from-Server Data will be exchanged between the client and server using the JSON format. Requests will be posted over HTTP using the REQUEST variables INTERFACE DESCRIPTION ServerComm pushtoserver() PullFromServer() PushToPhone() ReceiveFromServer() PROCESSING DETAIL The ServerComm methods defined above are relatively straightforward. There are no complex algorithms in this section as all that is taking place is a simple exchange of data. Three paradigms define the type of communication that will take place between the client and the server. These paradigms are covered in depth below. 23
24 DESIGN CLASS HIERARCHY The classes on the server will mirror those of the local application in terms of data member fields. They will be independent classes with no external dependencies, except for communication layers for database queries and HTTP communication RESTRICTIONS/LIMITATIONS Bandwidth and the presence of an internet connection are required in order to use these methods. If there is not one available, the methods will fail and the user will be notified. A caching function may be implemented in the future in order to batch updates that may need to be sent from the client until an internet connection is available PERFORMANCE ISSUES Performance issues are not of concern in this section. The data being exchanged is only plaintext, so bandwidth will never be an issue. The exception to this assumption is the optional feature of receipt imaging, which would require potentially large files to be transferred to and from the server. This may create a bottleneck, or prove to be too taxing on network throughput. This feature, however, is not designated for inclusion in the first release of the application DESIGN CONSTRAINTS The current design for the ServerComm component requires that each method be able to handle any object of any type. Thus, the serialization and deserialization functions will need to be incredibly robust and cannot rely on any assumptions about the data until it is decoded. Each method must contain logic to determine the type of object that it has deserialized and to call other server-side methods to handle these objects accordingly PROCESSING NARRATIVE (PSPEC) FOR EACH OPERATION pushtoserver() o This method will be used by the local Android application and will be used to upload an object. The object will be serialized into JSON format and then sent over HTTP to the server. The server will then de-serialize the object, check its validity, and send a response to the client. The client will use this response to determine if the operation was successful or not. 24
25 25 PullFromServer() o This method will issue a request for an object to the server, along with a unique identifier for that object (userid, groupid, etc.). The server will query the database and extract the requested object. The server will then serialize each object into a JSON object and send the JSON object as a response over HTTP. This method will gather the response, deserialize it, and return with the requested object. PushToPhone() o This method will be called on the server side, likely as the result of an action from another user. This method will take the object to be sent, serialize it into a JSON object, and send the object to the user determined by server side logic. ReceiveFromServer() o This method will be implemented as an Android service that runs in the background in order to receive notifications sent by PushToPhone() from the server. This method will deserialize the object that is being received and display the appropriate notification. 3.8 VIEW CLASS This class is provided by the Android API. It acts as the foundation for all user interface components. SplitPay s various graphical elements will inherit from and interact with this class. These components are separate from the functional design of SplitPay, and thus they are covered outside of this section. See Part 4 (User Interface Design) below for more information. 25
26 26 4. USER INTERFACE DESIGN The user interface consists of a set of menus through which the user can interact with data on the SplitPay server. These menus include a Welcome menu, a Groups menu, a Group Management menu, a Group History menu, a Create a Bill menu, and a Transaction menu. Each menu will contain fields for entering data required to perform a specified task. The user will interact with the menus through the device s touch screen. 4.1 DESCRIPTION OF THE USER INTERFACE Each menu will consist of various GUI components, such as buttons, labels, text fields, and list objects. These components will be arranged in such a way that the user will be able to quickly grasp the purpose of each menu and perform whatever task it is designed for efficiently. A detailed description of these menus and their interactions with each other will be described in section OBJECTS AND ACTIONS The next several pages describe and illustrate the following SplitPay menus: For first time users Welcome/Registration Groups Create Group For returning users Groups Create a Bill Member-to-Member Transaction View Group Group History Manage Group 26
27 27 FOR FIRST TIME USERS WELCOME/REGISTRATION o The first time a user runs the SplitPay Android application on his/her phone, the Welcome/Registration menu will appear, which welcomes the user to the application and requests his/her , cellphone number, and display name so a unique UserAccount can be created. 27
28 28 GROUPS o Once the user has finished creating an account, he/she will be taken to the main Groups menu which will initially be empty. The user will have the option to create a new group. The user can create a new group by pushing the add group button. 28
29 29 CREATE GROUP o This will take them to the Create Group menu. On this menu, the user will be able to add members using the + Member button. This will cause a popup menu to appear, prompting the user to enter the member s address so the server can determine if he/she has an existing SplitPay account. Once the user has created a group, he/she will have the option to create a bill within that group or carry out a transaction with another group member. 29
30 30 FOR RETURNING USERS G GROUPS (REVISITED) o When a returning user runs SplitPay, the user will be taken directly to the groups menu. Any existing groups that the user is a member mber of will be displayed here. The user s current balance in each group will also be displayed here. o From the groups menu, the user will be able to select a group and either add a bill to the selected group or simply view the details of the group. 30
31 31 CREATE A BILL o When the user creates a bill, all members will be highlighted on the list to signify that they are splitting the bill. The user can remove members by touching their names on the screen. This deselects that member, and they will no longer be highlighted. Initially, the app will assume that the user creating the bill is also paying it, but the user can drag another member from the list to become the new payer. o The user must also enter the amount,, which will be split amongst the bill s participants. o The user will be able to enter a name for the bill in the text field at the top of the menu. o Once the user is finished, he/she will press the submit button, so the bill can be confirmed by the group leader through the Group History menu (detailed later in this section). 31
32 32 MEMBER-TO-MEMBER TRANSACTION o When the user chooses to make a member-to-member transaction, he/she will be presented with a list of all group members. The user will be selected as the payer and will be expected to select a member from the list to receive the payment. The user may also drag a different member from the list to become the payer. o The user will enter the amount being transferred between the payer and receiver in the text field at the top of the menu. o Once the user is finished, he/she will press the submit button. As with new bills, transactions can be confirmed by the group leader through the Group History menu (covered later in this section). 32
33 33 V VIEW GROUP MENU o This menu will display all members of the selected group and their current balances. Balances will be displayed both graphically and textually. o From this menu, users will be able to add a bill or transaction as explained in the previous sections. o The user can access the group s history by tapping the History button on the screen. o Only the group leader will have access to group management, nt, which he/she can navigate to by tapping the Manage button. 33
34 34 G GROUP HISTORY MENU o This menu displays all of the bills and transaction that belong to the selected group. o Selecting an item on the list will expand it, showing further details for that item. o The group leader has the additional option of confirming or denying events. After the event has been confirmed, it will be sent to the server and synced to each device. 34
35 35 M MANAGE GROUP MENU o This menu is only accessible to the group leader. o On this menu, the leader will be able to add new members by tapping + Member, or remove members by tapping the X next to the member s name. o If a group is done adding bills, the leader can freeze the group by pushing the Stop button. This will prevent members from adding new bills, although they are still permitted to carry out transactions in order to resolve debts. o The leader can choose to resolve the group s debts by pressing the button labeled Resolve debts. This displays a list of transactions which representing the most efficient method for reconciling all debts. All group members can access this list from the Group History menu. The leader can then confirm these transactions once the transactions have actually occurred. o Once all debts have been resolved, the leader can disband the group by pressing the Disband button. 35
36 INTERFACE DESIGN RULES The interface design rules for SplitPay are derived from Ben Shneiderman s Eight Golden Rules of Interface Design. The following list offers a description of each rule, as well as how the rule applies to SplitPay. 1. Strive for consistency. o Consistent sequences of actions should be required in similar situations. Identical terminology should be used in prompts, menus, and help screens, and consistent commands should be employed throughout. o For each menu in SplitPay: all of the major options are displayed at the bottom of the menu (i.e. Add bill, Manage, Submit, etc.). All lists are displayed in the center of the menu (i.e. group members and group history). All data fields are displayed near the top of the menu. 2. Enable frequent users to use shortcuts. o As the frequency of use increases, so do the user's desires to reduce the number of interactions and to increase the pace of interaction. Abbreviations, function keys, hidden commands, and macrofacilities are very helpful to an expert user. o For ease of use, users will be able to add a bill from the main groups menu by simply selecting the group and pressing the Add bill button. 3. Offer informative feedback. o For every operator action, there should be some system feedback. For frequent and minor actions, the response can be modest, while for infrequent and major actions, the response should be more substantial. o Using Android s notification system, SplitPay will notify users whenever new information is successfully pushed to the server. Users will also be notified when the server is down, or they are unable to connect to the server. 4. Design dialog to yield closure. o Sequences of actions should be organized into groups with a beginning, middle, and end. The informative feedback at the completion of a group of actions gives the operators the satisfaction of accomplishment, a sense of relief, the signal to drop contingency plans and options from their minds, and an indication that the way is clear to prepare for the next group of actions. o Whenever a user finishes creating a bill or transaction, they will be notified that the process was completed successfully. This however, does not guarantee that the item was successfully pushed to server. 36
37 37 5. Offer simple error handling. o As much as possible, design the system so the user cannot make a serious error. If an error is made, the system should be able to detect the error and offer simple, comprehensible mechanisms for handling the error. o If fields are not properly filled out when a user presses the submit button for a menu, they will be notified, and suggestions will be made to help them fix the mistake. 6. Permit easy reversal of actions. o This feature relieves anxiety, since the user knows that errors can be undone; it thus encourages exploration of unfamiliar options. The units of reversibility may be a single action, a data entry, or a complete group of actions. o If leader adds a member incorrectly, he/she can remove the member and re-add. The leader can also deny bills and transactions that were created in error. 7. Support internal locus of control. o Experienced operators strongly desire the sense that they are in charge of the system and that the system responds to their actions. Design the system to make users the initiators of actions rather than the responders. o Experienced operators will often be the leader of their groups. As leader, the user will have heightened control over the functionality of the group. 8. Reduce short-term memory load. o The limitation of human information processing in short-term memory requires that displays be kept simple, multiple page displays be consolidated, window-motion frequency be reduced, and sufficient training time be allotted for codes, mnemonics, and sequences of actions. o Each menu is oriented to a singular task, allowing menu to be quickly and easily understood by the user. 4.3 COMPONENTS AVAILABLE Android provides a plethora of useful GUI components. The components that SplitPay will be using include the following: View o View class is what Android uses to display all of its GUI components. o All of SplitPay s menus will inherit from the android View class. 37
38 38 AbsoluteLayout o The AbsoluteLayout component allows the arbitrary placement of components within its bounds. o SplitPay uses this component on each of its menus to arrange the buttons and text in a logical manner. Button o The Button component allows users to interact by pushing it. When a button is pushed it creates an event which can be handled by an EventHandler outside of the Button class. o SplitPay will handle most of its human-computer interaction through buttons. Each menu class will have its own unique EventHandlers to handle the user s inputs. TextView o The TextView component is used to display text in a linear manner. o SplitPay will use TextView to display menu labels and messages. ListView o The ListView component is used to display a list of text with a scroll bar. ListView allows the user to scroll and select/highlight objects displayed on the list o ListView generates an event whenever the user changes the selection of objects on the list. o SplitPay will use ListView to display the list of groups, members, and group history events. o Each menu of the application will define EventHandlers for when the ListViews are interacted with. 4.4 UIDS DESCRIPTION The User Interface Development System is provided by the ADT plug-in for Eclipse. Our UIDS generates XML code from a graphical drag and drop menu designer. The graphical components of the UIDS are somewhat limited, so much of the design will be done by modifying the XML code directly. The functional aspects of each menu will be implemented in Java. This encompasses EventHandlers and any menu class members. 38
39 39 5. RESTRICTIONS, LIMITATIONS, AND CONSTRAINTS As time is a limiting factor, the optional features previously mentioned in the SRS document are not discussed at all in this document. This is due to the fact that these features will likely not be implemented within the allotted time for this projects completion. However, as a result of the highly modular design and organization of data as well as unlimited expansion potential on the server side implementing these optional features at a later date would be arguably easier than incorporating them into the first design. Another limitation of the software is the lack of a web interface. While not included in the optional features (as it may be considered a product of its own), a web interface to the SpiltPay system would allow users with or without the Android application to use a web interface with all of the capabilities of the SplitPay application. Once the server for the client application has been developed, it would be possible to implement this interface with relative ease. A constraint that is frequently mentioned in this document as well as the SRS is the requirement for the user to have internet access on their Android client. This is essential, as all data mutating actions make a call to the server in order to complete that action. A potential solution is an offline queue that stores actions to be sent to the server once an active internet connection is established. If any conflicting information has been uploaded by other users during the first users offline time, all of the first user s queued actions are discarded and the user is notified of this (and presented with the most recently changed data). As the application frequently queries a server over the internet, care must be taken to ensure that large amounts of traffic are not being sent or received by our application, as this may dissuade users with costly data plans from using our application. Currently, we do not anticipate this being a problem, due our use of encoded JSON messages for passing data between the client and the server. However, if during testing we find our usage is too high, we will begin to investigate ways to decrease this usage. Possible ideas include requesting specific fields that have changed, rather than entire objects, and also compressing the JSON objects that are sent between client and server. Another constraint imposed on the user of this software is that they must have an address. This is used a unique identifier for each user and also provides an avenue for a user to re-register their account in the event that they switch phones (as the ID of the phone will provide authentication for a user). 39
40 40 6. TESTING ISSUES Each class will be tested individually to make sure the functions and constructors are operating correctly. Then, once the program is assembled, it will be tested as a whole to ensure all of the components work together correctly. 6.1 TESTING CASES AND EXPECTED RESULTS The types of tests to be conducted are specified below, including as much detail as is possible at this stage. Emphasis here is on black-box and white-box testing WHITE BOX TESTING: While each class is being implemented, the developer assigned to that class will test to make sure each function is working. The developer is fully responsible for debugging his/her own code because the overhead of sharing code between developers has been deemed too costly. However, all code will be accessible through the provided version control system, so this rule may be violated if needed BLACK BOX TESTING: Black Box Testing comprises a majority of the testing process. This will be done after all the components are assembled, and will consist of running through all possible situations that may occur in the use of the SplitPay application FEATURE TESTING The following subsections provide a brief overview of the testing process for each feature ACCOUNT CREATION Description: correct data input o Input: Valid , that is not already on the server o Output: Account is created on server, user taken to main page 40
41 41 Description: incorrect data input o Input: invalid o Output: Account is not created, user is asked for different Description: incorrect data input o Input: already exists on server and is an online account o Output: Account is not created, user is asked for different and notified already exist Description: incorrect data input o Input: already exists on server and is an offline account o Output: Account is not created, existing account is set to online, user is sent to his main page CONNECTING TO SERVER Description: connection is established. o Input: Device tries to access the server, and succeeds o Output: Device pushes and pulls information as normal Description: connection cannot be established o Input: Device tries to access server and fails o Output: User is alerted that they are offline, no data is transferred to server. All changes are stored locally and temporarily. Description: connection is established after user has made changes while offline o Input: User is offline and makes changes that need to be pushed to the server; connection is established at a later time. o Output: device goes online; changes or either pushed to server or determined to be outdated CREATING GROUP Description: create group button is clicked o Input: group name is entered o Output: group created on server. User added to group, user set to leader, user's device goes to the new group's page ADDING MEMBERS TO GROUP Description: Add member button clicked o Input: Add member button clicked o Output: user is taken to a screen where he can enter an address or select a person from his contacts. 41
42 42 Description: Adds from contacts o Input: Valid , already on server o Output: user is added to group Description: Adds from contacts o Input: Valid , already on server o Output: user is added to group Description: correct data input o Input: Valid , already on server o Output: user is added to group Description: correct data input o Input: Valid , not on server o Output: offline account is created, user is added to group Description: incorrect data input o Input: invalid o Output: Account is not created, user is asked for different ADDING BILL/ USER TO USER TRANSACTION Description: Add bill button clicked o Input: Add bill button clicked o Output: User is taken to the add bill screen Description: valid data o Input: positive real numbers o Output: Leader is notified; if he confirms then the bill is added, pushed to the server, group member balances are updated and pushed to the server. User is returned to group page. Group displays new bill. Description: invalid data o Input: negative numbers; characters o Output: user remains on screen and asked to enter valid data STOPPING GROUP Description: if leader, group is stopped o Input: leader stops group o Output: Group is set to stopped on server. No new bills are allowed. No new members can be added. 42
43 RESOLVE ALL DEBT Description: resolve all debt is selected. o Input: leader or receiver confirm transaction o Output: New transaction is created and pushed to server, all debt recomputed. 6.2 PERFORMANCE BOUNDS Due to fact that the application is very demanding with respect to resources, execution time for all local actions should be negligible. This includes screen navigation, group management, bill/transaction creation, etc. Also, since data is exchanged with the server in small plaintext messages, interactions between the client and server should also take very little time. In relation to the server component, it must uphold acceptable performance ability when negotiating the passing of information between server and the client. For the scope of this project, a simple PHP application implemented on a standard virtual dedicated server will suffice. As this server is only performing simple algorithms and database calls, it is not processing-intensive. The only expected issue involving the server (in terms of performance) involves the amount of groups and devices performing an interaction. This would be easily throttled by upgrading the bandwidth of the server. However, this will not be an issue for this project, as no more than users will be utilizing the app. If the application is launched on the Android market, the server system will be revamped entirely. 6.3 CRITICAL SYSTEMS The two most critical components of the Android application are that debt calculations must be accurate and that the server database must be updated correctly and contain no corrupted or false data. Server interaction is of critical note. Without proper server setup and flow of information to phones and to the database, the app will be rendered useless. Extensive testing must be done to ensure the validity of the server implementation in regard to networking with the individual mobile phone apps. Since the functionality of the app depends on the ability to request and send information to the server, it is imperative that this works as expected. Testing procedures will call for verifying information is passed wholly and correctly to the app and likewise from the app to the server. PHP will drive the operation of this process by either receiving information or disseminating it (to/from the database). 43
44 TESTING CASES The following table lists all currently scheduled test cases: Feature Server Communication Cases Connection is established. New account, New Group, new member, new bill, and new transaction are all created and sent to the server. Connection is not established. New account, New Group, new member, new bill, and new transaction are all created. Connection is not established. New account, New Group, new member, new bill, and new transaction are all created. Connection is then established. Account creation Correct information input. Incorrect information input. Group created. Add member New group created. Invalid input From contacts has account From contacts does not have account By has account By does not have account Add bill/ Transaction Stop Group Resolve All debts Correct values Invalid values Try to add bills and members after group has been stopped. Make transaction through this screen Make transaction through transaction screen Algorithm Performance Create several groups, members and bills and make sure all data is accurate. Time all actions to make sure device runs smoothly. 44
45 45 7. APPENDICES 7.1 PACKAGING AND INSTALLATION ISSUES No special considerations are warranted here beyond installation of SplitPay app through Android Marketplace and/or running of the environment through the SDK emulator. Packaging requires that the Android application be signed. The Android system will not install applications which are not signed. After this the final APK package will be zipped. 7.2 DESIGN METRICS TO BE USED Stability will be determined by measuring and calculating the ease to change packages without affecting other packages within the application. Abstractness will be evaluated subjectively by analyzing code readability, modularization of classes and methods, and overall structure of the code. 7.3 SEQUENCE DIAGRAMS See attached file: sequence_diagrams.pdf 7.4 UML DIAGRAM See attached file: UML_diagram.pdf NOTE: these files are included as attachments in order to preserve formatting. 45
SplitPay. Software Requirements Specification. for. Prepared by: Version 1.0 approved ZILDOR, Inc. February 9, 2011
Software Requirements Specification for SplitPay Version 1.0 approved ZILDOR, Inc. February 9, 2011 Prepared by: Rick Aasen Ed Carlisle Nick Carson Leland Cerauskis Eric Jeffers Travis Green Blake Matson
SmartCart Design Description
SmartCart Design Description Version 1.0 Revision History Date Version Description Author 2011-10-20 0.1 Initial draft SmartCart Team 2011-24-10 0.8 Revised draft SmartCartTeam 2011-27-10 0.9 Revised draft
How To Use Remedy On A Pc Or Macbook 2.5 (For Mac)
Remedy Quick Start Guide Remedy 7 is a workflow tool for managing requests and their resolution. It is available to subscribed departments at NYU. This guide will introduce you to the basic layout and
NetIQ Advanced Authentication Framework - Smartphone Applications
NetIQ Advanced Authentication Framework - Smartphone Applications User Guide Version 3.0 1 Table of Contents 1 Table of Contents 2 Introduction 3 About This Document 3 System Requirements 4 Install Smartphone
Gladinet Cloud Backup V3.0 User Guide
Gladinet Cloud Backup V3.0 User Guide Foreword The Gladinet User Guide gives step-by-step instructions for end users. Revision History Gladinet User Guide Date Description Version 8/20/2010 Draft Gladinet
DiskPulse DISK CHANGE MONITOR
DiskPulse DISK CHANGE MONITOR User Manual Version 7.9 Oct 2015 www.diskpulse.com [email protected] 1 1 DiskPulse Overview...3 2 DiskPulse Product Versions...5 3 Using Desktop Product Version...6 3.1 Product
EMC Documentum Webtop
EMC Documentum Webtop Version 6.5 User Guide P/N 300 007 239 A01 EMC Corporation Corporate Headquarters: Hopkinton, MA 01748 9103 1 508 435 1000 www.emc.com Copyright 1994 2008 EMC Corporation. All rights
One step login. Solutions:
Many Lotus customers use Lotus messaging and/or applications on Windows and manage Microsoft server/client environment via Microsoft Active Directory. There are two important business requirements in this
Kaldeera Workflow Designer 2010 User's Guide
Kaldeera Workflow Designer 2010 User's Guide Version 1.0 Generated May 18, 2011 Index 1 Chapter 1: Using Kaldeera Workflow Designer 2010... 3 1.1 Getting Started with Kaldeera... 3 1.2 Importing and exporting
MOBILE ARCHITECTURE BEST PRACTICES: BEST PRACTICES FOR MOBILE APPLICATION DESIGN AND DEVELOPMENT. by John Sprunger
MOBILE ARCHITECTURE BEST PRACTICES: BEST PRACTICES FOR MOBILE APPLICATION DESIGN AND DEVELOPMENT by John Sprunger When developing mobile applications, there are a number of key challenges where architecture
Attix5 Pro Server Edition
Attix5 Pro Server Edition V7.0.2 User Manual for Mac OS X Your guide to protecting data with Attix5 Pro Server Edition. Copyright notice and proprietary information All rights reserved. Attix5, 2013 Trademarks
Getting Started with Android Programming (5 days) with Android 4.3 Jelly Bean
Getting Started with Android Programming (5 days) with Android 4.3 Jelly Bean Course Description Getting Started with Android Programming is designed to give students a strong foundation to develop apps
Microsoft Outlook 2013 Part 1: Introduction to Outlook
CALIFORNIA STATE UNIVERSITY, LOS ANGELES INFORMATION TECHNOLOGY SERVICES Microsoft Outlook 2013 Part 1: Introduction to Outlook Fall 2014, Version 1.0 Table of Contents Introduction...3 Starting Outlook...3
Bitrix Site Manager 4.1. User Guide
Bitrix Site Manager 4.1 User Guide 2 Contents REGISTRATION AND AUTHORISATION...3 SITE SECTIONS...5 Creating a section...6 Changing the section properties...8 SITE PAGES...9 Creating a page...10 Editing
Table of Contents. Vu ipad. v2.6. Navigation. Document Manager. Sync Manager. File Access. Field Verification Measurements. Markups List.
Table of Contents Navigation Document Manager Sync Manager File Access Field Verification Measurements Markups List Forms Studio Sessions Studio Projects Preferences Vu ipad v2.6 Navigation Panels There
isecurity+ Android Guide us.zyxel.com Edition 1, 2/2012
isecurity+ Android Guide Edition 1, 2/2012 us.zyxel.com Copyright 2011 ZyXEL Communications Corporation Login Screen After opening the isecurity+ app, you will be brought to the login screen. If you already
RESCO MOBILE CRM USER GUIDE. Access your CRM data on any mobile platform ipad, iphone, Android, Windows Phone or Win XP/Vista/7/8
RESCO MOBILE CRM USER GUIDE Access your CRM data on any mobile platform ipad, iphone, Android, Windows Phone or Win XP/Vista/7/8 Contents Synchronization... 1 1.1. How to synchronize your device... 1 1.2.
VMware vcenter Log Insight User's Guide
VMware vcenter Log Insight User's Guide vcenter Log Insight 1.0 This document supports the version of each product listed and supports all subsequent versions until the document is replaced by a new edition.
Microsoft Project Server 2010 Administrator's Guide
Microsoft Project Server 2010 Administrator's Guide 1 Copyright This document is provided as-is. Information and views expressed in this document, including URL and other Internet Web site references,
ADOBE DRIVE CC USER GUIDE
ADOBE DRIVE CC USER GUIDE 2 2013 Adobe Systems Incorporated. All rights reserved. Adobe Drive CC User Guide Adobe, the Adobe logo, Creative Cloud, Creative Suite, Illustrator, InCopy, InDesign, and Photoshop
Social Media in the Process Automation Industry
Social Media in the Process Automation Industry Distributed Software Development Design Document Version 0.1 In co-operation with: Title: Social Media in the Process Automation Industry Product name: ABBConnect
Exclaimer Mail Archiver User Manual
User Manual www.exclaimer.com Contents GETTING STARTED... 8 Mail Archiver Overview... 9 Exchange Journaling... 9 Archive Stores... 9 Archiving Policies... 10 Search... 10 Managing Archived Messages...
PTC Integrity Eclipse and IBM Rational Development Platform Guide
PTC Integrity Eclipse and IBM Rational Development Platform Guide The PTC Integrity integration with Eclipse Platform and the IBM Rational Software Development Platform series allows you to access Integrity
PORTAL ADMINISTRATION
1 Portal Administration User s Guide PORTAL ADMINISTRATION GUIDE Page 1 2 Portal Administration User s Guide Table of Contents Introduction...5 Core Portal Framework Concepts...5 Key Items...5 Layouts...5
isecuremail User Guide for iphone
isecuremail User Guide for iphone Page 1 CONTENTS Chapter 1: Welcome... 4 Chapter 2: Getting Started... 5 Compatability... 5 Preliminary Steps... 5 Setting up a POP3 / IMAP4/ Exchange Email Account...
EMC Documentum Repository Services for Microsoft SharePoint
EMC Documentum Repository Services for Microsoft SharePoint Version 6.5 SP2 Installation Guide P/N 300 009 829 A01 EMC Corporation Corporate Headquarters: Hopkinton, MA 01748 9103 1 508 435 1000 www.emc.com
Customising Your Mobile Payment Pages
Corporate Gateway Customising Your Mobile Payment Pages V2.0 May 2014 Use this guide to: Understand how to customise your payment pages for mobile and tablet devices XML Direct Integration Guide > Contents
Operational Decision Manager Worklight Integration
Copyright IBM Corporation 2013 All rights reserved IBM Operational Decision Manager V8.5 Lab exercise Operational Decision Manager Worklight Integration Integrate dynamic business rules into a Worklight
Handle Tool. User Manual
User Manual Corporation for National Research Initiatives Version 2 November 2015 Table of Contents 1. Start the Handle Tool... 3 2. Default Window... 3 3. Console... 5 4. Authentication... 6 5. Lookup...
Intellect Platform - The Workflow Engine Basic HelpDesk Troubleticket System - A102
Intellect Platform - The Workflow Engine Basic HelpDesk Troubleticket System - A102 Interneer, Inc. Updated on 2/22/2012 Created by Erika Keresztyen Fahey 2 Workflow - A102 - Basic HelpDesk Ticketing System
Personal Call Manager User Guide. BCM Business Communications Manager
Personal Call Manager User Guide BCM Business Communications Manager Document Status: Standard Document Version: 04.01 Document Number: NN40010-104 Date: August 2008 Copyright Nortel Networks 2005 2008
Hands-On: Introduction to Object-Oriented Programming in LabVIEW
Version 13.11 1 Hr Hands-On: Introduction to Object-Oriented Programming in LabVIEW Please do not remove this manual. You will be sent an email which will enable you to download the presentations and an
Creating Database Tables in Microsoft SQL Server
Creating Database Tables in Microsoft SQL Server Microsoft SQL Server is a relational database server that stores and retrieves data for multi-user network-based applications. SQL Server databases are
ImagineWorldClient Client Management Software. User s Manual. (Revision-2)
ImagineWorldClient Client Management Software User s Manual (Revision-2) (888) 379-2666 US Toll Free (905) 336-9665 Phone (905) 336-9662 Fax www.videotransmitters.com 1 Contents 1. CMS SOFTWARE FEATURES...4
INTRODUCTION TO ATRIUM... 2 SYSTEM REQUIREMENTS... 2 TECHNICAL DETAILS... 2 LOGGING INTO ATRIUM... 3 SETTINGS... 4 NAVIGATION PANEL...
INTRODUCTION TO ATRIUM... 2 SYSTEM REQUIREMENTS... 2 TECHNICAL DETAILS... 2 LOGGING INTO ATRIUM... 3 SETTINGS... 4 CONTROL PANEL... 4 ADDING GROUPS... 6 APPEARANCE... 7 BANNER URL:... 7 NAVIGATION... 8
Microsoft Outlook 2010 Part 1: Introduction to Outlook
CALIFORNIA STATE UNIVERSITY, LOS ANGELES INFORMATION TECHNOLOGY SERVICES Microsoft Outlook 2010 Part 1: Introduction to Outlook Spring 2015, Version 1.4 Table of Contents Introduction...3 Starting Outlook...3
Software Engineering I CS524 Professor Dr. Liang Sheldon X. Liang
Software Requirement Specification Employee Tracking System Software Engineering I CS524 Professor Dr. Liang Sheldon X. Liang Team Members Seung Yang, Nathan Scheck, Ernie Rosales Page 1 Software Requirements
SimpleFTP. User s Guide. On-Core Software, LLC. 893 Sycamore Ave. Tinton Falls, NJ 07724 United States of America
SimpleFTP User s Guide On-Core Software, LLC. 893 Sycamore Ave. Tinton Falls, NJ 07724 United States of America Website: http://www.on-core.com Technical Support: [email protected] Information: [email protected]
Installation and Troubleshooting Guide for SSL-VPN CONNECTIONS Access
Installation and Troubleshooting Guide for SSL-VPN CONNECTIONS Access Version 1 Revised 11/29/2007 Table of Contents Java Installation:...4 Browser Configuration:...4 Citrix Client Installation:...8 Attempting
DreamTeam User Guide. Product Usage and Best Practices Guide. By Adam Buxbaum
DreamTeam User Guide Product Usage and Best Practices Guide By Adam Buxbaum December 9, 2010 Table of Contents Introduction... 4 Project Manager... 5 Creating Projects... 6 Managing Resources: Addition
Imaging License Server User Guide
IMAGING LICENSE SERVER USER GUIDE Imaging License Server User Guide PerkinElmer Viscount Centre II, University of Warwick Science Park, Millburn Hill Road, Coventry, CV4 7HS T +44 (0) 24 7669 2229 F +44
Software Requirements Specification for POS_Connect Page 1. Software Requirements Specification. for. POS_Connect. Version 1.0
Page 1 Software Requirements Specification for POS_Connect Version 1.0 1/9/2013 Page 2 Table of Contents Table of Contents Revision History 1. Introduction 1.1 Purpose 1.2 Document Conventions 1.3 Intended
End User Guide The guide for email/ftp account owner
End User Guide The guide for email/ftp account owner ServerDirector Version 3.7 Table Of Contents Introduction...1 Logging In...1 Logging Out...3 Installing SSL License...3 System Requirements...4 Navigating...4
Student Attendance Through Mobile Devices
Student Attendance Through Mobile Devices Anurag Rastogi Kirti Gupta Department of Computer Science and Engineering National Institute of Technology Rourkela Rourkela-769 008, Odisha, India Student Attendance
Smartphone Enterprise Application Integration
WHITE PAPER MARCH 2011 Smartphone Enterprise Application Integration Rhomobile - Mobilize Your Enterprise Overview For more information on optimal smartphone development please see the Rhomobile White
LabVIEW Internet Toolkit User Guide
LabVIEW Internet Toolkit User Guide Version 6.0 Contents The LabVIEW Internet Toolkit provides you with the ability to incorporate Internet capabilities into VIs. You can use LabVIEW to work with XML documents,
Understanding offline files
Understanding offline files Introduction If you've ever needed to access important files stored in a shared folder on your network but couldn't because the network connection was unavailable, then you
How To Install An Aneka Cloud On A Windows 7 Computer (For Free)
MANJRASOFT PTY LTD Aneka 3.0 Manjrasoft 5/13/2013 This document describes in detail the steps involved in installing and configuring an Aneka Cloud. It covers the prerequisites for the installation, the
Change Management for Rational DOORS User s Guide
Change Management for Rational DOORS User s Guide Before using this information, read the general information under Appendix: Notices on page 58. This edition applies to Change Management for Rational
Welcome to MaxMobile. Introduction. System Requirements. MaxMobile 10.5 for Windows Mobile Pocket PC
MaxMobile 10.5 for Windows Mobile Pocket PC Welcome to MaxMobile Introduction MaxMobile 10.5 for Windows Mobile Pocket PC provides you with a way to take your customer information on the road. You can
Appointment Scheduler
Appointment Scheduler User s Guide While every attempt is made to ensure both accuracy and completeness of information included in this document, errors can occur, and updates or improvements may be implemented
BlueJ Teamwork Tutorial
BlueJ Teamwork Tutorial Version 2.0 for BlueJ Version 2.5.0 (and 2.2.x) Bruce Quig, Davin McCall School of Engineering & IT, Deakin University Contents 1 OVERVIEW... 3 2 SETTING UP A REPOSITORY... 3 3
Colligo Email Manager 6.0. Offline Mode - User Guide
6.0 Offline Mode - User Guide Contents Colligo Email Manager 1 Key Features 1 Benefits 1 Installing and Activating Colligo Email Manager 2 Checking for Updates 3 Updating Your License Key 3 Managing SharePoint
vcloud Director User's Guide
vcloud Director 5.5 This document supports the version of each product listed and supports all subsequent versions until the document is replaced by a new edition. To check for more recent editions of
DEPARTMENT OF EDUCATION. Online Application General Information
DEPARTMENT OF EDUCATION CHILD NUTRITION PROGRAM Online Application General Information Contents Revision History... 2 Revision History Chart... 2 Welcome to the Child Nutrition Programs Website... 3 What
Save and Share Files in the Cloud with OneDrive for Business
Work Smart by Microsoft IT Save and Share Files in the Cloud with OneDrive for Business Microsoft OneDrive for Business is your professional file library your OneDrive for your business needs. OneDrive
ORACLE SERVICE CLOUD GUIDE: HOW TO IMPROVE REPORTING PERFORMANCE
ORACLE SERVICE CLOUD GUIDE: HOW TO IMPROVE REPORTING PERFORMANCE Best Practices to Scale Oracle Service Cloud Analytics for High Performance ORACLE WHITE PAPER MARCH 2015 Table of Contents Target Audience
WCAG 2.0 Checklist. Perceivable Web content is made available to the senses - sight, hearing, and/or touch. Recommendations
WCAG 2.0 Checklist Perceivable Web content is made available to the senses - sight, hearing, and/or touch Guideline 1.1 Text Alternatives: Provide text alternatives for any non-text content Success Criteria
Power Tools for Pivotal Tracker
Power Tools for Pivotal Tracker Pivotal Labs Dezmon Fernandez Victoria Kay Eric Dattore June 16th, 2015 Power Tools for Pivotal Tracker 1 Client Description Pivotal Labs is an agile software development
Sendspace Wizard Desktop Tool Step-By-Step Guide
Sendspace Wizard Desktop Tool Step-By-Step Guide Copyright 2007 by sendspace.com This publication is designed to provide accurate and authoritative information for users of sendspace, the easy big file
Help. Contents Back >>
Contents Back >> Customizing Opening the Control Panel Control Panel Features Tabs Control Panel Lists Control Panel Buttons Customizing Your Tools Pen and Airbrush Tabs 2D Mouse and 4D Mouse Tabs Customizing
Microsoft Outlook 2010 Part 1: Introduction to Outlook
CALIFORNIA STATE UNIVERSITY, LOS ANGELES INFORMATION TECHNOLOGY SERVICES Microsoft Outlook 2010 Part 1: Introduction to Outlook Spring 2012, Version 1.0 Table of Contents Introduction...3 Starting the
Parallels Plesk Control Panel. Plesk 8.3 for Windows Advanced Administration Guide. Revision 1.0
Parallels Plesk Control Panel Plesk 8.3 for Windows Advanced Administration Guide Revision 1.0 Contents Preface 5 Documentation Conventions... 5 Typographical Conventions... 5 Feedback... 6 About This
Specialized Android APP Development Program with Java (SAADPJ) Duration 2 months
Specialized Android APP Development Program with Java (SAADPJ) Duration 2 months Our program is a practical knowledge oriented program aimed at making innovative and attractive applications for mobile
Microsoft Office 365 Outlook Web App (OWA)
CALIFORNIA STATE UNIVERSITY, LOS ANGELES INFORMATION TECHNOLOGY SERVICES Microsoft Office 365 Outlook Web App (OWA) Spring 2013, Version 1.0 Table of Contents Introduction...3 Signing In...3 Navigation
Pendragon Forms VI. Reference Guide
Pendragon Forms VI Reference Guide Copyright Information Copyright 2010 Pendragon Software Corporation. All rights reserved. This documentation may be printed by licensee for personal use. Except for the
Application Discovery Manager User s Guide vcenter Application Discovery Manager 6.2.1
Application Discovery Manager User s Guide vcenter Application Discovery Manager 6.2.1 This document supports the version of each product listed and supports all subsequent versions until the document
Customer Portal User Guide
Customer Portal User Guide COPYRIGHT NOTICE ViaWest Customer Portal User Guide is published and copyrighted 2012 by ViaWest Inc. All rights reserved. No part of this manual may be reproduced in any form,
MiVoice Integration for Salesforce
MiVoice Integration for Salesforce USER GUIDE MiVoice Integration for Salesforce User Guide, Version 1, April 2014. Part number 58014124 Mitel is a registered trademark of Mitel Networks Corporation. Salesforce
HP Array Configuration Utility User Guide
HP Array Configuration Utility User Guide January 2006 (First Edition) Part Number 416146-001 Copyright 2006 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change
Designing and Implementing an Online Bookstore Website
KEMI-TORNIO UNIVERSITY OF APPLIED SCIENCES TECHNOLOGY Cha Li Designing and Implementing an Online Bookstore Website The Bachelor s Thesis Information Technology programme Kemi 2011 Cha Li BACHELOR S THESIS
Avalanche Enabler 5.3 User Guide
Avalanche Enabler 5.3 User Guide 30/05/2012 ii Copyright 2012 by Wavelink Corporation. All rights reserved. Wavelink Corporation 10808 South River Front Parkway, Suite 200 South Jordan, Utah 84095 Telephone:
Network Event Viewer now supports real-time monitoring enabling system administrators to be notified immediately when critical events are logged.
About Network Event Viewer is a network wide event log monitoring, consolidation, auditing and reporting tool enabling System Administrators to satisfy Sarbanes-Oxley auditing requirements while proactively
Contents Overview... 3 The flow of a ticket... 3 Getting help... 3 K2 Partner and Customer Portal... 3 K2 Knowledge Base... 4 K2 Community site...
Support Ticket Help Contents Overview... 3 The flow of a ticket... 3 Getting help... 3 K2 Partner and Customer Portal... 3 K2 Knowledge Base... 4 K2 Community site... 4 K2 Help Files... 4 Asking for help...
Two Factor Authentication (TFA; 2FA) is a security process in which two methods of authentication are used to verify who you are.
Two Factor Authentication Two Factor Authentication (TFA; 2FA) is a security process in which two methods of authentication are used to verify who you are. For example, one method currently utilized within
Title: SharePoint Advanced Training
416 Agriculture Hall Michigan State University 517-355- 3776 http://support.anr.msu.edu [email protected] Title: SharePoint Advanced Training Document No. - 106 Revision Date - 10/2013 Revision No. -
Quadro Configuration Console User's Guide. Table of Contents. Table of Contents
Epygi Technologies Table of Contents Table of Contents About This User s Guide... 3 Introducing the Quadro Configuration Console... 4 Technical Specification... 6 Requirements... 6 System Requirements...
TABLE OF CONTENTS. Copyright Pro Softnet Corporation. All rights reserved. 2
Last modified on 08.11.2011 TABLE OF CONTENTS Introduction... 4 Features... 5 General Features... 5 Backup Features... 5 Restore Features... 6 Link for Application Download... 6 Install IBackup for Mac...
Interfacing SAS Software, Excel, and the Intranet without SAS/Intrnet TM Software or SAS Software for the Personal Computer
Interfacing SAS Software, Excel, and the Intranet without SAS/Intrnet TM Software or SAS Software for the Personal Computer Peter N. Prause, The Hartford, Hartford CT Charles Patridge, The Hartford, Hartford
vrealize Operations Manager Customization and Administration Guide
vrealize Operations Manager Customization and Administration Guide vrealize Operations Manager 6.0.1 This document supports the version of each product listed and supports all subsequent versions until
Installing Magento Extensions
to Installing Magento Extensions by Welcome This best practice guide contains universal instructions for a smooth, trouble free installation of any Magento extension - whether by Fooman or another developer,
How To Integrate An Ipm With Airwatch With Big Ip On A Server With A Network (F5) On A Network With A Pb (Fiv) On An Ip Server On A Cloud (Fv) On Your Computer Or Ip
F5 Networks, Inc. F5 Recommended Practices for BIG-IP and AirWatch MDM Integration Contents Introduction 4 Purpose 5 Requirements 6 Prerequisites 6 AirWatch 6 F5 BIG-IP 6 Network Topology 7 Big-IP Configuration
IMS Software Requirement Specification
IMS Software Requirement Specification GRUPPE 3 Alexandrow Paul Fruhwirth Clemens Gombotz Robert Jelinek Alexander
Turnitin Blackboard 9.0 Integration Instructor User Manual
Turnitin Blackboard 9.0 Integration Instructor User Manual Version: 2.1.3 Updated December 16, 2011 Copyright 1998 2011 iparadigms, LLC. All rights reserved. Turnitin Blackboard Learn Integration Manual:
Apple Applications > Safari 2008-10-15
Safari User Guide for Web Developers Apple Applications > Safari 2008-10-15 Apple Inc. 2008 Apple Inc. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system,
Mobile App Framework For any Website
Mobile App Framework For any Website Presenting the most advanced and affordable way to create a native mobile app for any website The project of developing a Mobile App is structured and the scope of
Contents WEKA Microsoft SQL Database
WEKA User Manual Contents WEKA Introduction 3 Background information. 3 Installation. 3 Where to get WEKA... 3 Downloading Information... 3 Opening the program.. 4 Chooser Menu. 4-6 Preprocessing... 6-7
FedConnect. Ready, Set, Go! Now includes highlights of FedConnect 2! Version 2
FedConnect Ready, Set, Go! Now includes highlights of FedConnect 2! Version 2 New Features in FedConnect 2... 3 Using FedConnect Registering... 4 Signing In... 9 Navigating FedConnect... 12 Searching Public
OPTAC Fleet Viewer. Instruction Manual
OPTAC Fleet Viewer Instruction Manual Stoneridge Limited Claverhouse Industrial Park Dundee DD4 9UB Help-line Telephone Number: 0870 887 9256 E-Mail: [email protected] Document version 4.0 Part Number:
Java the UML Way: Integrating Object-Oriented Design and Programming
Java the UML Way: Integrating Object-Oriented Design and Programming by Else Lervik and Vegard B. Havdal ISBN 0-470-84386-1 John Wiley & Sons, Ltd. Table of Contents Preface xi 1 Introduction 1 1.1 Preliminaries
http://www.trendmicro.com/download
Trend Micro Incorporated reserves the right to make changes to this document and to the products described herein without notice. Before installing and using the software, please review the readme files,
IBM Tivoli Software. Document Version 8. Maximo Asset Management Version 7.5 Releases. QBR (Ad Hoc) Reporting and Report Object Structures
IBM Tivoli Software Maximo Asset Management Version 7.5 Releases QBR (Ad Hoc) Reporting and Report Object Structures Document Version 8 Pam Denny Maximo Report Designer/Architect CONTENTS Revision History...
ODBC Client Driver Help. 2015 Kepware, Inc.
2015 Kepware, Inc. 2 Table of Contents Table of Contents 2 4 Overview 4 External Dependencies 4 Driver Setup 5 Data Source Settings 5 Data Source Setup 6 Data Source Access Methods 13 Fixed Table 14 Table
SignalDraw: GUI Tool For Generating Pulse Sequences
SignalDraw: GUI Tool For Generating Pulse Sequences Konstantin Berlin Department of Computer Science University of Maryland College Park, MD 20742 [email protected] December 9, 2005 Abstract Generating
Comparing Microsoft SQL Server 2005 Replication and DataXtend Remote Edition for Mobile and Distributed Applications
Comparing Microsoft SQL Server 2005 Replication and DataXtend Remote Edition for Mobile and Distributed Applications White Paper Table of Contents Overview...3 Replication Types Supported...3 Set-up &
MODULE 7: TECHNOLOGY OVERVIEW. Module Overview. Objectives
MODULE 7: TECHNOLOGY OVERVIEW Module Overview The Microsoft Dynamics NAV 2013 architecture is made up of three core components also known as a three-tier architecture - and offers many programming features
Whats New in CRM 2015 Update 1
Whats New in CRM 2015 Update 1 NAVIGATION Easier and faster to find the information you need With the new navigation bar, it's easier and faster to find the information you need When you choose the Main
