Final Design report
Transcription
Final Design report
MIDDLE EAST TECHNICAL UNIVERSITY COMPUTER ENGINEERING DEPARTMENT Senior Project 2007-2008 Final Design Report Team Members: Taha Bekir Eren 1448646 Erdem Karahan 1347616 Mine Karakaya 1395136 1. INTRODUCTION 1.1. Project Title 1.2. Motivation 1.3. Project Definition 1.4. Project Goals 2. REQUIREMENT ANALYSIS 2.1. System Requirements 2.1.1. Hardware Requirements 2.1.2. Software Requirements 2.1.3. Development Environment Requirements 2.2. Functional Requirements 3. USE CASE ANALYSIS 3.1. Use Case Diagrams 3.2. Use Case Scenarios 4. MODELING 4.1. Data Modeling 4.1.1. Entity Relationship Diagrams 4.1.2. Creating IMBO Database 4.2. Functional Modeling 4.2.1. Data Flow Diagrams 4.2.2. Data Dictionary of Data Flow Diagrams 4.2.3. Process Specification of Data Flow Diagram 5. PROJECT SCHEDULE 5.1. Project Milestones 5.2. Gantt Chart 6. CLASS DIAGRAMS AND DESCRIPTIONS 7. SEQUENCE DIAGRAMS 8. TESTING PLAN AND PROCEDURES 8.1. Test Plan 8.2. Unit Testing 8.3. Integration Testing 8.4. Security Testing 8.5. Acceptance Testing 9. SOFTWARE INTERFACE DESCRIPTION 1. INTRODUCTION 1.1. Project Title IMBO 1.2. Motivation The communication methods people chose have altered due to the developments in technology. Internet has become widespread during recent years. A result of the widespread usage of Internet, Web applications became very popular. One of the key reasons for Web applications’ popularity is the ability to update and maintain them without distributing and installing software on potentially thousands of client computers. Another reason is that web applications have become faster and more practical for real-world applications. A kind of web application is instant messaging; a form of real-time communication between two or more people based on typed text. Modern, Internet wide, GUI-based instant messengers began to appear in the mid 1990s with ICQ (1996); followed by followed by AOL Instant Messenger, Yahoo, MSN, Excite, Ubique, IBM, MSN, AIM and Google Talk. Nowadays, the number of web sites providing their users instant messaging is increasing. For example, Quick Contacts in Gmail and Windows Web Messenger are instant messaging web applications on web sites. Moreover, some web applications provide an integrated environment among instant messaging systems. For example, Meebo is an in-browser instant messaging program, which supports multiple IM services, including Yahoo! Messenger, Windows Live Messenger, Google Talk, AIM, and ICQ by using Jabber protocol. Other examples are ebuddy (supporting MSN, Yahoo, AIM, and GTalk) and Communication Tube (supporting ICQ, MSN, IRC, GTalk). 1.3. Project Definition IMBO will enable users to reach their multiple IM services through IMBO IM service contemporaneously. So IMBO will be an online, browser based instant messaging (IM) environment which supports multiple popular IM services; namely MSN, GTalk, ICQ, Yahoo. IMBO will use Jabber (XMPP) as a technological base for instant messaging purposes. Following figure shows the context diagram of IMBO: 1.4. Project Goals Here are some general features that will be in IMBO: Visitor is the user of IMBO selecting one of the IM services from MSN, GTalk, ICQ ,Yahoo and requesting to sign up his/her chosen IM service without any subscription in IMBO. Visitor will be able to chat with his/her contacts from his/her chosen IM service. If his /her chosen IM service enables file transfers, he/she will be able to transfer files with his/her contacts. Signed-Up User of IMBO is the user subscribed to IMBO IM service; in addition, has more privileges than the Visitor has. Users can create an IMBO account, under which they can combine multiple popular instant messaging accounts; namely MSN, GTalk, ICQ, Yahoo. Signed-Up Users are provided offline messaging and offline-user tracking feature that gives online-offline information data of other users to the user. The offline-tracking feature will be beneficial for curious users who want to check out the status of their contacts, not for a moment but for a period of time. The simpler but more powerful instances of our extra features would probably be the group and group wall features, which will enable users of IMBO to socialize. Users of IMBO account can create groups, and become members of existing groups. They can also search for groups or invite their contacts to become a member of an existing group. One of the impressive attributes of the group is photo sharing. One can upload a photo, which he/she finds relevant to group. By group wall feature, users can share any kind of information or useful links related to their groups; which they are familiar with from Facebook. Besides, users that have an IMBO account will be able to create and maintain user profiles. If the user gives authorization, other users will be able to make searches among users of IMBO account using the profile criteria. Otherwise, the unwilling user will be excluded from the profile search. We will not only settle for profiles created in IMBO but we will also import profile information from Facebook, which will give extra power to our service. Moreover, IMBO will be able to export profile information to third party applications. The striking fact here is that no other web based instant messaging service provides those like popular and practical features. 2. REQUIREMENT ANALYSIS 2.1. System Requirements 2.1.1. Hardware Requirements When the number of our users increases, our hardware requirements will change; therefore strictly defining hardware requirements is not artful. As a baseline, we need a single Pentium 4 computer with 1 GB of RAM. Nevertheless, as the number of users increase some enhancements on hardware configurations must be considered: Moving to a multi-processor and vast memory (both RAM and durable Storage) server Creating a clustered server architecture Separating DBMS server from the Web Server Installing a RAID system on the DBMS server Using a distributed file system 2.1.2. Software Requirements Windows as the operating system (because of ASP.NET application) IIS (Internet Information Services) Openfire (Jabber Server) MS SQL Server as DBMS 2.1.3. Development Environment Requirements Microsoft Visual Studio 2005 Eclipse SQL Server Management Studio 2.2. Functional Requirements Web Application: It is the only part of the project, which is directly in touch with the user. Therefore, it either directly or indirectly interacts with other modules to reflect user processes in IMBO system. We determined our requirements based on our market research. Users can login with their existing instant messaging (IM) accounts without any subscription in IMBO. This can be achieved by making a connection to the provided jabber server (e.g. if the user provides a Gmail address, connect to talk.google.com). Obviously, no database activity is needed for this. Users will be able to do IM service specific actions. For example; a user login to Msn via IMBO can send nudge, one login to ICQ via IMBO can make profile search which is provided by ICQ, and one login to GTalk can use the attribute named “Show Current Music Track”. Users can create an IMBO account, under which they can combine multiple other IM accounts. This relation will be saved in our database. Users can create groups, become members of existing groups and use group walls. They can search for groups or invite their contacts to become a member of an existing group. Users will be able to send and receive instant messages with their IMBO account, even if they do not have any other IM accounts. In this case, our jabber server will be used to send and receive instant messages. If a user has an IMBO account, he/she will be able to create and maintain a user profile. If the user gives authorization, other users will be able to make searches using profile criteria. Otherwise, the user will be excluded from the search. Users will be able to send messages even when the recipient is offline (some current IM systems provide this function, as GTalk and Windows Live Messenger, some do not). If the user combines multiple IM accounts in an IMBO account, when he/she signs in, all his/her accounts will be automatically signed in. All contacts; he/she has in various IM accounts; can be seen within a single list in IMBO. A user may track his/her contact(s)'s status while he/she is offline. Changes in status will be reported when the user signs in next time. Profile Web Services: Profile information coming from Web Application Module or from third party applications is sent to database Services Module by Profile Web Services. The third party application here is Facebook; meaning we will import profile information from Facebook. Profile information coming from Database Services Module is sent to Web Application Module or to third party applications by Profile Web Services. Therefore, we will enable exporting profile information in our system to third party applications. Profile searching will be available via xml web services. The web service will query the database by using database classes. Jabber Plug-in: The plug-in will send the offline messages to the recipients when they become online. Sender's login information may be needed to send the messages. Another alternative is sending the messages in the name of sender with another address (such as admin@imbo.com). The plug-in will save contact tracking information to the database to be used by the web application. In addition, contacts to be tracked information will be read from the database. 3. USE CASE ANALYSIS 3.1. Use Case Diagrams Use Case Diagram For Candidate User Of IMBO: Use Case Diagram For Signed-Up User Of IMBO: Use Case Diagram For Visitor: 3.2. Use Case Scenarios Candidate User of IMBO: Request Sign-Up From IMBO: In order to sign up to IMBO, the candidate user will have to submit user name and password to web user interface. Optionally, the candidate user may submit profile information to be a member of the profile search feature. Signed-Up User of IMBO: Login: The signed-up user of IMBO will have to login to IMBO IM service in order to be able to make operations that are allowed by IMBO IM service after the validation of login data. Operations Done From IMBO: The signed-up user of IMBO will have the ability to chat, send offline messages, transfer files, constitute groups, enrol as a member of groups, use group walls, give authorization to be searched by other users via profile search attribute, make profile search, subscribe to offline tracking, import profile information from Facebook, and export profile information to third party applications. Unsubscribe From IMBO: The signed-up user of IMBO may unsubscribe from IMBO whenever he/she wants. Visitor: Login: The visitor will choose one of the IM services from MSN, GTalk, ICQ, and Yahoo; and will login to that IM service. After the validation of login information, the visitor will be able to make operations that are allowed by the IM service he/she has login. Operations Done From MSN: The visitor will have the ability to chat, transfer files, send nudge to the contacts he/she has in MSN after he/she signs in MSN via IMBO. Operations Done From GTalk: The visitor will have the ability to chat, transfer files with the contacts he/she has in GTalk, and use “Show My Current Music Track” attribute after he/she signs in GTalk via IMBO. Operations Done From ICQ: The visitor will have the ability to chat, transfer files and use profile search attribute provided by ICQ among the contacts he/she has in ICQ after he/she signs in ICQ via IMBO. Operations Done From Yahoo: The visitor will have the ability to chat with the contacts he/she has in Yahoo after he/she signs in Yahoo via IMBO. 4. MODELING 4.1. Data Modeling 4.1.1. Entity Relationship Diagrams 4.1.2. Entity Descriptions Entity & Relation Descriptions for Main Database: Users: This entity contains information of an IMBO user. It is the central entity of our data definitions. user_id: Unique identifier of the user. This field is automatically assigned, and it is not visible to user. Other entities refer to a user entity by this field. user_name: Account name of the user. This account name will exist on our jabber server as an IMBO user. password: Password of the user. This password will be the same with the one in the jabber server’s database. signup date: This is the date and time when the user opened his/her IMBO account. This information can be used for account expiration and similar things. Offline Messaging: message_id: Unique identifier of the offline message. This field is automatically assigned, and it is not visible to user. Other entities refer to an offline message by this id. from: Sender of the offline message. This address will be used when the receiver becomes online. to: Receiver of the offline message. message_date: This is the date/time information, which holds when the user sent the message. This information can be used to express actual date/time of the message to the receiver. message_text: Text of the message. Contact Tracking: tracking_id: Unique identifier of the tracking information. This field is automatically assigned, and it is not visible to user. Other entities refer to tracking information by this id. follower: ID of the tracker user. We don’t use the address as the follower because to use contact tracking feature can be used only by registered users. This information refers to the user_id of the user entity. followed: Address of the tracked user. tracking_date: Date and time part of the tracking information. For example, at 27.05.08 15:00 A is online. state: State of the tracked user. e.g. online, away, offline. Profile: user_id : The id of the user who owns the profile. This data refers to the user_id information of the user entity. first_name : First name of the user. last_name : Last name of the user. nick_name : Nick name of the user. This can be displayed while the user chats. birthday : Birthday of the user. website : Personal web site of the user. birth_place : Birth place of the user. occupation : Professional occupation of the user. gender : Gender of the user. country : The country where the user is resident. city : The city where the user is resident. company : The company user works for. interests: Interests of the user as plain text. When a profile search is performed and this field is used, a full text search will be performed over this field. Groups: This entity contains information for user groups. group_id : The unique identifier of the group. Other entities refer to this entity by this field. group_name : Name of the group. group_description : Text description of the group. Users&Groups: This entity holds the membership information of users with respect to groups. Since this is a many to many relation, we needed an extra entity to hold the relation. group_id : Refers to the group entity. user_id : Refers to the user entity. Group_Walls: This entity contains wall messages of the groups. Each group has a wall and a wall can contain several messages. Since this design yields to one too many relation, this entity holds a group_id attribute. entry_id : Unique identifier of the wall message. group_id : ID of the group which owns this wall message. sender_id : Sender of the wall message. message : Actual data of this entity. message_date : Date and time of the message. Group_Pictures: This entity contains images of groups. An image belongs to a group and a group can own several images. picture_id : Unique identifier of the picture. group_id : ID of the group which owns the picture. sender_id : Uploader of the picture. picture : Actual data of the entity. 4.1.3. Data Description Underlined data means that the data is primary key. Users: Data Type&Size Format USER_ID INT NUMBER(AUTOINC) USER_NAME VARCHAR100 TEXT PASSWORD VARCHAR100 TEXT (Encrypted) SIGNUP_DATE DATETIME DATE+TIME Data Type&Size Format MESSAGE_ID INT NUMBER(AUTOINC) FROM VARCHAR100 TEXT TO VARCHAR100 TEXT MESSAGE_DATE DATETIME DATE+TIME MESSAGE_TEXT VARCHAR4000 TEXT Data Type&Size Format TRACKING_ID INT NUMBER(AUTOINC) FOLLOWER INT NUMBER FOLLOWED VARCHAR100 TEXT TRACKING_DATE DATETIME DATE+TIME STATE SMALLINT NUMBER Offline Messages: Contact Tracking: Profiles: Data Type&Size Format USER_ID INT NUMBER FIRST_NAME VARCHAR50 TEXT LAST_NAME VARCHAR50 TEXT NICK_NAME VARCHAR100 TEXT BIRTHDAY DATETIME DATE+TIME WEBSITE VARCHAR100 TEXT BIRTH_PLACE VARCHAR100 TEXT OCCUPATION VARCHAR100 TEXT GENDER SMALLINT NUMBER COUNTRY INT NUMBER CITY VARCHAR40 TEXT COMPANY VARCHAR40 TEXT INTERESTS VARCHAR4000 TEXT Data Type&Size Format GROUP_ID INT NUMBER(AUTOINC) GROUP_NAME VARCHAR100 TEXT Groups: GROUP_DESCRIPTION VARCHAR2000 TEXT Users&Groups: GROUP_ID INT NUMBER USER_ID INT NUMBER ENTRY_ID INT NUMBER GROUP_ID INT NUMBER SENDER_ID INT NUMBER MESSAGE VARCHAR1000 TEXT MESSAGE_DATE DATETIME DATE+TIME PICTURE_ID INT NUMBER GROUP_ID INT NUMBER SENDER_ID INT NUMBER PICTURE BLOB IMAGE Group_Walls: Group_Pictures: 4.2. Functional Modeling 4.2.1. Data Flow Diagrams Level 0 Data Flow Diagram: Level 1 Data Flow Diagrams: 4.2.2. Data Dictionary of Data Flow Diagrams Name Messages Input To User, Visitor, Jabber Server,1.0 Web Application Output From User, Visitor, Jabber Server,1.0 Web Application Description These are the messages communicated through user and web application module, visitor and web application module and jabber server and web application. Format Instant text messages Name Group Information Input To User, Jabber Server, Database Server,1.0 Web Application, 3.0 Database Web Services Output From User, Jabber Server, Database Server,1.0 Web Application, 3.0 Database Web Services Description Information about the groups that the user is a member of Format Database record(s) Name Profile Information Input To User,1.0 Web Application, Database Server, 3.0 Database Web Services, 4.0 Profile Web Services, 3rd party applications Output From User,1.0 Web Application, Database Server, 3.0 Database Web Services, 4.0 Profile Web Services, 3rd party applications Description Log-in user’s profile information Format Database record(s) Name Offline Messages Input To Database Server,2.0 Jabber Plug-In, Jabber Server, 3.0 Database Web Services Output From Database Server,2.0 Jabber Plug-In, Jabber Server, 3.0 Database Web Services Description Messages sent when the receiver side user is offline Format Instant text messages Name Contact Tracking Information Input To 2.0 Jabber Plug-In, 3.0 Database Web Services, Database Server Output From Jabber Server, 3.0 Database Web Services, 1.0 Web Application Description Online-Offline records of the contacts of a user Format Database Record(s) Name Send Message Input To 1.3 Message Operations Output From 1.1 Visitor Interaction,1.2 User Interaction Description Messages sent from login users or from the visitors of the service Format Instant text messages Name Receive Message Input To 1.1 Visitor Interaction,1.2 User Interaction Output From 1.3 Message Operations Description Messages received from login users or from the visitors of the service Format Instant text messages Name Search Profile Input To 1.2 User Interaction Output From 1.4 Profile Operations Description Profile searching results obtained by the profile operations Format Database Record(s) Name Save Profile Input To 1.4 Profile Operations, Database Server, 3.2 Profile Processor Output From 1.2 User Interaction,1.4 Profile Operations , 3.2 Profile Processor Description Saved profile information data Format Database Record(s) Name Search Groups Input To 1.2 User Interaction, 3.1 Group Processor Output From 1.5 Group Operations , 3.1 Group Processor Description Resulting data obtained from group searching Format Database Record(s) Name Group Membership Request Input To 1.5 Group Operations, 3.1 Group Processor Output From 1.2 User Interaction, 1.5 Group Operations Description Group membership request data Format Record representing the request Name Create Membership Input To Database Server Output From 3.1 Group Processor Description User membership saving information recorded to the database Format Record representing the membership Name Incoming Messages Input To 1.3 Message Operations Output From - Description Branch of the data “Messages” in level 0 Format Instant Text Messages Name Outgoing Messages Input To - Output From 1.3 Message Operations Description Branch of the data “Messages” in level 0 Format Instant Text Messages Name Tracking Information Input To 1.2 User Interactions, 1.6 Tracking Operations, 3.0 Database Web Services, Database Server, 2.0 Jabber Plugin, 2.2 Tracking Info processor, 3.3 Tracking Info Processor Output From 1.6 Tracking Operations, 3.0 Database Web Services, Database Server, 2.0 Jabber Plugin, 2.2 Tracking Info processor, 3.3 Tracking Info Processor Description Online-Offline information data of the user’s contacts, formed by the tracking information processor Format Database Record Name Create Group Input To 1.5 Group Operations, 3.1 Group Processor, Database Server Output From 1.2 User Interaction, 1.5 Group Operations, 3.1 Group Processor Description Data related to creation of a new group Format Database Record 4.2.3. Process Specification Process Specification/Level_1 Since the processes of level_0 are the abstract versions of the ones in level_1, specification of level_0 processes are meaningless. 1.1 Visitor Interaction Input of this process is “receive message” and output of the process is “send message”. This process stands for the operations representing the interaction between the visitor of the website and the system. 1.2 User Interaction Inputs of this process are “receive message”, “search profile”, “search groups” and “tracking info“ and the outputs are “send message”, “save profile” ,”create group” and “membership request”. The process stands for all operations providing the above features with the interaction between user and the system. 1.3 Message Operations Its inputs are “send message” and “incoming messages” and outputs are “receive messages” and “outgoing messages”. It is the layer between the sender and the receiver which also supports sending the “previously offline” messages represented by the input “incoming messages” and the “outgoing messages”. 1.4 Profile Operations Its inputs are “search profile” and “save profile” , outputs are “search profile” and “search profile” and “save profile”. This process handles all operations supporting the profile related features. 1.5 Group Operations Its inputs are “create group”, “search groups” and “membership request” and outputs are “create group”, “search groups” and “membership request”. This process unit handles all group related operations. 1.6 Tracking Operations The input and output of this unit is tracking info which means that this process unit evaluates the contact tracking information coming to itself and sends it to the user interaction process unit. 2.1. Offline Message Processor The data “offline messages” stands for both input and output for this process unit. The messages for going to the offline users simply marked as offline in this unit and sent to the database web services unit. 2.2 Tracking Info Processor The data “tracking info” stands for both input and output for this process unit. That is, information gained from jabber server is evaluated in this processor and brought into a form as tracking information; then sent to the database web services unit. 3.1 Group Processor Inputs of this unit are “membership request”, “create group” and “search groups”. Outputs are “create membership”, “create group” and “search group”. This is the web service unit which provides the communication between the group operations unit and the system database. 3.2 Profile Processor Its inputs are “search profile”, ”save profile” outputs are again “search profile”, “save profile”. This is the web service unit which provides the communication between profile operations unit and the system database. 3.3 Tracking Info Processor Its input and output is “tracking info” which means that the information coming from the tracking info processor is interpreted as a web service and sent to the system database. 3.4 Offline Message Processor Its input and output “offline message” which means that the information coming from the offline message processor is interpreted as a web service and sent to the system database. 5. PROJECT SCHEDULE 5.1. Project Milestones These are the work packages of our project: Project Management: Project Proposal System Requirements Specification and Analysis Report Initial Design Report Final Design Report Web Application & Web Services: Database Design Database Library (Profile Related) Implementation (Prototype) Web Application (Visitor Panel) Implementation (Prototype) Prototype Integration & Testing Prototype Release Database Library Implementation (Profile Operations) Database Library Implementation (Group Operations) Database Library Implementation (Offline Messages) Web Application Implementation (Group Operations) Web Application Implementation (Profile Operations) Web Application Implementation (User Panel) Web Application Implementation (Visitor Panel) Profile Web Services Implementation (Complete) Integration Alpha Testing Beta Testing and Debugging Web Application & Web Services Release Jabber Server Plug-in: Plug-in Implementation (Prototype) Plug-in Implementation (Sending Offline messages) Plug-in Implementation (Contact Tracking) Integration Alpha Testing Beta Testing and Debugging Plug-in Release 5.2. Gantt Chart 6. CLASS DIAGRAMS AND DESCRIPTIONS Database Layer Module: Web Application Module: Profile Manager Module: Message Handler Module: Group Manager Module: Jabber Plugin Module: Class Descriptions: DBLayer : This class corresponds to Database Web Services. Its main function is to provide a call interface to the database server. With help of this class, no other class interacts with the database server directly. This provides an abstraction and modularity. Descriptions of methods: executeNameAndPasswordQuery : When a user tries to login, her username and password should be in the database. This methods looks for the related username and password in the database. addUser : Adds a new user to the database. updateUser : When data of a user changes, such as password, it has to be reflected to the database. This method performs necessary update query. searchGroup : Searches the database for groups using provided parameters. Returns an array of Group objects. getGroupByID : Returns a single Group object according to its ID. If no rows are returned from the query, null is returned. saveGroup : Saves a group class to the database. deleteGroup : Deletes a group from the database. addMemberToGroup : Adds a user to a group as a member. addPictureToGroup : Adds a new picture to the group. addWallMessageToGroup : Adds a new wall message to group wall. searchProfile : Searches the database for profiles using provided parameters. Returns an array of Profile objects. getProfileByID : Returns a single Profile object according to its ID. If no rows are returned from the query, null is returned. saveProfile : Saves a Profile class to the database. deleteProfile : Deletes a profile information from the database. getOfflineMessages : Returns the saved offline messages of a user as a Message array. addOfflineMessage : Adds an offline message to the database. saveTrackingInfo : Saves a contact tracking log which is received by the jabber plugin. getTrackingInfo : Retrieves contact tracking info(s) from the database. Return value is a Track_Info array. getTrackingRegistrations : Returns the tracking registrations of a user as a Tracking_Registration array. When user X wants to track user Y, she has to register for contact tracking for user Y. addTrackingRegistration : Creates a new contact tracking registration in the database. deleteTrackingRegistration : Cancels an existing tracking registration and deletes it from the database. Profile : This class represents a profile entity. It has many fields which are parts of a user profile, such as occupation and gender. There get and set methods for each of these fields. Other than get and set methods there save and load methods which are described below. saveToDB : Saves the data of the class to the database using the saveProfile method of the DBLayer class. loadFromDB : Loads a profile information into the Profile object. Uses getProfileByID method of the DBLayer class. Profile Manager: As the name implies, this class manages profiles. searchProfile : Searchs profiles among the database. Returns the result as a Profile array. Uses searchProfile method of DBLayer class. createProfile : Creates a new profile. Uses the saveProfile method of DBLayer class. getProfileByID : Gets a profile from the database according to its ID. Uses getProfileByID method of DBLayer class. deleteProfile : Deletes a profile. Uses deleteProfile method of DBLayer class. Group: This class represents a profile entity. Other than its get and set methods, it provides saveToDB and LoadFromDB functions which are similar to the related methods of Profile class. Group Manager: This class manages groups. searchGroup : Performs a search among the groups. Uses searchGroup method of DBLayer class. getGroupByID : Gets a group from the database according to its ID. Uses getGroupByID method of DBLayer class. createGroup : Creates a new Group. Uses the saveGroup method of DBLayer class to save the Group to the database. addMemberToGroup : Adds a user to a group as a member. Uses addMemberToGroup of DBLayer class. addPictureToGroup : Adds a new picture to the group. Uses addPictureToGroup of DBLayer class. addWallMessageToGroup : Adds a new wall message to the group wall. Uses addWallMessageToGroup of DBLayer class. deleteGroup : Deletes a group. Uses deleteGroup method of DBLayer class. Tracking Info: This class contains data of a contact tracking result. Each instance of this class is like an entry in a log which records presence of IM users. Instances of these classes are created by the jabber Plugin, and saved to the database via DBLayer class. When the tracker user becomes online, tracking data is pulled from the database and displayed to user by the web application. This class has no methods other than get and set methods. Tracking Registration: When a user wants to track another user’s presence, she registers for contact tracking, and an instanced of this class is generated. Jabber Plugin gets these registrations from the DBLayer class using the getTrackingRegistrations method. This class has no methods other than get and set methods. Tracker : This class detects the packets which are going through the Openfire server. It saves the presence information when a tracked user’s presence information changes. It maintains a list of tracking registrations. Message : This class represents an instant message entity. Other than get and set methods, it has a send method which sends the message via its connection property. This connection property is obtained from the user class, when the message is created. Offline Message Handler : This class detects the packets which are going through the Openfire server, like the Tracker class. If the packet is a message packet and the receiver is offline, the message is saved to the database to be sent later in time. User : This class represents a user, and is used by User Application and Visitor Application. It has a connection property which represents a XMPP connection, and it maintains received messages in a queue. The client via web method calls pulls these messages over JavaScript. Methods other than the get and set methods are below. saveToDB : Adds a newly created user to database. login : The user logins to system with this method. This method creates and activates the XMPP connection. getNextMessage : Returns the next message from the message queue. This method is called from client JavaScript. handleIncomingMessage : This is a callback method which is invoked by the AGSXMPP library when a new message is received. handlePresenceInfo : This is a callback method which is invoked by the AGSXMPP library when new presence information is received. sendMessage : Sends an instant message using the Message class. Visitor Application : This class provides services to the visitor. It sends and receives messages with sendMessage and ReceiveMessage classes respectively. sendXML and ReceiveXML methods are used to handle XML traffic which carry data other than messages. This methods make file transfer and nudge (MSN) possible. User Application : This class provides services to the registered IMBO user. It provides all functionality that is provided by the Visitor Application. Below methods provide the exclusive functionality. searchGroups : Using the Group_Manager class, groups are searched and results are displayed to the user. createGroup : User can create a new group by this method. addPictureToGroup : User can upload a picture for a group which she is a member of. writeToGroupWall : With this method, a user can write a text message to group wall. membershipRequest : User can join an existing group. newTrackingRegistration : When a user wants to track an IM user, she registers to contact tracking with this method. getTrackingResults : Presence information is displayed to user like a log. searchProfile : Using the Profile_Manager class, profiles are searched with respect to provided criteria. Results are displayed to the user. saveProfile : User can either create a new profile or update the existing one with this method. Profile Web Service : This class provides services to import and export data from and to third party applications. It uses an instance of the Profile_Manager class to perform the necessary operations. 7. SEQUENCE DIAGRAMS Login and Message Operations of Visitor: Sign-up and Login Operations to IMBO System for Candidate User: Profile Manager Operations of IMBO User: Group Manager Operations of IMBO User: Tracking Operation of IMBO User: 8. TESTING 8.1. Test Plan Our group intends to use dynamic testing as we are planning to run IMBO with a set of test cases in all the development stages. We have decided on that the developer of each unit of IMBO will conduct unit testing on his/her part in the project; for the remaining testing phases, we are planning to work together. We will apply white box test as being testers; us; have access to the internal data structures, code, and algorithms. 8.2. Unit Testing Database Layer Module: Test Case: Can “Create Group” information be saved in Database correctly? Operation: Groups will be tried to be created via Group Processor Sub module manually. Success: Continue testing Group Processor Sub module Failure: Group Processor Sub module; namely code written in ADO.NET; will be inspected. Test Case: Can “Membership Request” be saved in Database as a “Created Membership” correctly? Operation: Memberships will be tried to be created via Group Processor Sub module manually. Success: Continue testing Group Processor Sub module Failure: Group Processor Sub module; namely code written in ADO.NET; will be inspected. Test Case: Can “Searched Group” information be fetched from Database correctly? Operation: Created groups will be tried to be fetched via Group Processor Sub module manually. Success: Start testing Profile Processor Sub module Failure: Group Processor Sub module; namely code written in ADO.NET; will be inspected. Test Case: Can “Profile to be Saved” be saved in Database correctly? Operation: Manually created profiles will be tried to be saved in Database via Profile Processor Sub module manually. Success: Continue testing Profile Processor Sub module Failure: Profile Processor Sub module; namely code written in ADO.NET; will be inspected. Test Case: Can “Searched Profile” information be fetched from Database correctly? Operation: Created profiles will be tried to be fetched from Database via Profile Processor Sub module manually. Success: Continue testing Tracking Information Processor Sub module Failure: Profile Processor Sub module; namely code written in ADO.NET; will be inspected. Test Case: Can “Tracking Information” be saved in Database correctly? Operation: Manually created “Tracking Information” will be tried to be saved in Database via Tracking Information Processor Sub module manually. Success: Start testing Offline Message Processor Sub module Failure: Tracking Information Processor Sub module; namely code written in ADO.NET; will be inspected. Test Case: Can “Offline Message” be saved in Database and be fetched from Database via Offline Message Processor Sub module correctly? Operation: Firstly; manually created offline messages will be tried to be saved in Database; and then they will be tried to be fetched from Database via Offline Message Processor Sub module manually. Success: Start testing Jabber Plugin Module Failure: Offline Message Processor Sub module; namely code written in ADO.NET; will be inspected. will be inspected. Jabber Plugin Module: Test Case: Can “Tracking Information” be detected from Jabber Server via Tracking Info Processor Sub module correctly? Operation: Before sending the information to other modules, tracking information is detected by printing the session related values we got from sessionListener interface on the Openfire admin console. Success: Start testing Offline Message Processor Sub module Failure: Tracking Information Processor Sub module; namely the code written in java using eclipse tool; will be inspected. Test Case: Can user’s instant status be detected from Jabber Server via Offline Message Processor Sub module correctly for the “Offline Message” feature? Operation: As in the tracking case, the presence information of the user at an instance of time is checked by printing the related information to the Openfire admin console. Success: Continue testing Offline Message Processor Sub module Failure: Offline Message Processor Sub module; namely code written in java using eclipse tool; will be inspected. Test Case: Can “Offline Messages” be sent to Jabber Server via Offline Message Processor Sub module correctly? Operation: This part of the Offline Message processor is related to the transfer of the message content when the user is offline. The action to be checked is whether the transfer is successful or not. Success: Start Integration Testing Failure: Offline Message Processor Sub module; namely code written in java related to the transfer of message content; will be inspected. The remaining modules will be tested during Integration Testing. 8.3. Integration Testing Test Case: Can Profile Web Services import profile information from Facebook correctly? Operation: Using the Facebook API, Profile Web Services will import and save sample profile(s) to database. Success: Continue Integration Testing Failure: Profile Web Services Module; namely code written in C# .NET as an XML Web Service will be inspected. Test Case: Can Profile Web Services Module export profile information to third party applications correctly? Operation: Since third party applications will be using profile service via web service calls, a simple client will be created, which will be using methods of Profile Web Services. Success: Continue Integration Testing Failure: Profile Web Services Module; namely code written in C# .NET as an XML Web Service will be inspected. Test Case: Can Jabber Plugin Module send offline messages to Database Layer Module correctly? Operation: Interoperation via web service will be checked whether the soap packets are valid and the results are correct. Success: Continue Integration Testing Failure: Jabber Plugin Module; namely code written in java (related to web service); will be inspected. Test Case: Can Jabber Plugin Module receive offline messages from Database Layer Module correctly? Operation: Some offline messages will be inserted to the database manually. When plugin module pulls offline messages from database services, and prints the output to the Openfire console. Success: Continue Integration Testing Failure: Jabber Plugin Module; namely code written in Java which tracks presence information and sends the offline messages when the related user becomes online. will be inspected. Test Case: Can Web Application Module receive contact-tracking information from Database Layer Module correctly? Operation: Sample contact tracking information will be inserted to the database manually. Using the web application, displayed contact tracking information will be compared against actual data. Success: Continue Integration Testing Failure: Web Application Module; namely code written in C# as an ASP.NET application will be inspected. Test Case: Can Web Application Module send profile information to Database Layer Module correctly? Operation: A sample profile will be created and saved within the web application. Results will be checked by viewing the related database table manually. Success: Continue Integration Testing Failure: Web Application Module; namely code written in User Application class will be inspected. Test Case: Can Web Application Module receive profile information from Database Layer Module correctly? Operation: After saving a sample profile, the profile will be reloaded within the web application and results will be compared. Success: Continue Integration Testing Failure: Web Application Module; namely code written in User Application class will be inspected. Test Case: Can Web Application Module send messages to Jabber Server correctly? Operation: Since the Jabber plugin can receive and process incoming messages, the messages will be printed to Openfire console as they are received. Success: Continue Integration Testing Failure: Web Application Module; namely code written in User Application class will be inspected. Test Case: Can Web Application Module receive messages from Jabber Server correctly? Operation: Since the Jabber plugin can receive and process incoming messages, the messages will be printed to Openfire console as they are received. Result will be compared to the output of the web application. Success: Continue Integration Testing Failure: Web Application Module; namely code written in User Application and User classes will be inspected. 8.4. Security Testing -We will try to sniff incoming and outgoing data of the web application. If it is possible, it means a security breach. -We will try sql injection methods on the forms of web application. -We will try to connect to database server directly from a remote computer (Skipping the database web services module). 8.5. Acceptance Testing It will be the process of making tests on the completed IMBO system. The tester team and end-users will conduct it. We will use two version of it: 8.5.1. Alpha Testing Our team members will conduct alpha testing. In this phase of testing, we will adopt white box techniques in principle. 8.5.2. Beta Testing IMBO (probably versions of IMBO) will be released to beta testers. As using IM services is so common all around the world, we think that finding volunteers, as beta testers will not cause us any problems. We will request from beta testers to report any bugs that they encounter. 9. SOFTWARE INTERFACE DESCRIPTION Figure 1: User Interface For Sign-up to IMBO Figure 2: User Interface for Visitor of IMBO Figure 3: User Interfaces for Login Figure 4: User Interface for Creating a Group Figure 5: User Interface for Group Page