1 / 30

Messenger project - Distributed Software Development

Messenger project - Distributed Software Development. Members of Messenger project. Final presentation. Messenger project - The task of this project is to store relevant chat sessions from different messenger clients in a way so that this information can be easily retrieved later.

winnier
Download Presentation

Messenger project - Distributed Software Development

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Messenger project-Distributed Software Development

  2. Members of Messenger project Final presentation

  3. Messenger project-The task of this project is to store relevant chat sessions from different messenger clients in a way so that this information can be easily retrieved later.

  4. Project members Jonas Wadsten: Team leader, documentation, web, database Muhammad Irfan Tahir Sourcecode, database Zdenek Svoboda Web interface, documentation, testing Zahid Mukhtar Chief of documentation + UML Marko Bejuk Testing, documentation of tech stuff Tihana Knaffl Programming c/c++, the core of the program (sourcecode master)

  5. Process • Design • Database • Source code • Software • Web interface • Documentation • Questions?

  6. Overview

  7. Class Relationship Diagram (CRD)

  8. Object Sequence diagrams (OSD) • OSD OF System Startup • OSD of Login Session • OSD of Add I/M, Delete I/M, Search • OSD of chat

  9. Object Sequence diagrams OSD OF System Startup

  10. Object Sequence diagrams OSD of Login Session

  11. Object Sequence diagrams OSD of Add I/M, Delete I/M, Search

  12. Object Sequence diagrams OSD of chat

  13. Source Code • general issues • technical issues • Yahoo! messenger • simplified GUI design • satisfied requirements • upgrade possibilities

  14. Messenger Product

  15. Messenger Product(Cont’d)

  16. Messenger Product(Cont’d)

  17. Help GUI

  18. Database Progress… Tables Created(2)

  19. Database Progress… Tables Created(3)

  20. Database Progress…Tables Modified

  21. Web interface Homepage: http://messengerclient.1go.dk/ • Click to login actor continues • Actor can set this page as homepage • Actor can see his/her IP and info about browser

  22. Web interface • Start page (Search) • For administrators • Users can not see add & edit • Search by project, member, keyword and date

  23. Web interface • Conversation page for admin • User has same without edit & add • Actor can see details about conversation: 1. project name 2. project members (involved in conversation) 3. Time of conversation (hyperlink)

  24. Web interface • Personal info page • User can change personal data & password • All lines must be filled in • For all actors is visible logout after login

  25. Web interface

  26. Web interface • <?php • ############################################# • # name : project.php • # location : include/ • # by who : jonas wadsten • # purpose : here u can add and change projects • # as long as u are logged in as • # an administrator • # date : 2004-12-18 • # revision/what/who/when: • # changed design, Zdenek, 2004-12-28 • # added edit part + change design, jonas, 2005-01-13 • # added add part, jonas , 2005-01-17 • ############################################# • if ($_SESSION[login] == "") • { • print "<table class='normal'><tr><td>hey, your are not logged in yet...</td></tr></table>"; • } • else • { • print "<table class='normal'>"; • if ($do == "delete") • { • # delet the project, it just change delete value to 1 • $project = $_REQUEST['ProjectID']; • #UPDATE Person SET FirstName = 'Nina' WHERE LastName = 'Rasmussen' • $qUpdateProject = "UPDATE Project SET Deleted = 1 WHERE ProjectID = $project"; • $resultUpdate = mysql_query(qUpdateProject) or die("SQL: $qUpdateProject <br>".mysql_error()); • } • elseif ($do == "add") • { • $what = $_REQUEST['what']; • if ($what == "addProject") • { • $qAddProject = "INSERT INTO Project (ProjectName, StartDate, EndDate, AddedBy) • VALUES('{$_REQUEST['ProjectName']}', '{$_REQUEST['StartDate']}','{$_REQUEST['EndDate']}','{$_REQUEST['AddedBy']}')"; • $resultAddProject = mysql_query($qAddProject) or die("SQL: $qAddProject <br>".mysql_error()); • print "<tr><td colspan=2>project '{$_REQUEST['ProjectName']}' has been added to database....</td></tr>"; • }?> • <tr><td colspan="3" align="left">:: add a project</td></tr> • <tr><td colspan=3>&nbsp;</td></tr> • <tr height=2><td colspan=3 style='background-color: brown'></td></tr> • <tr><td colspan=3>&nbsp;</td></tr> • <form action="index.php?page=project&do=add&what=addProject" method="post" name="add_project"> • <input type="hidden" name="AddedBy" value=<?PHP echo"$_SESSION[memberID]"; ?>> • <tr><td width=150>:: name of project</td><td><input type="text" name="ProjectName"></td></tr> • <tr><td>:: start date</td><td><input type="text" name="StartDate"></td></tr> • <tr><td>:: end date</td><td><input type="text" name="EndDate"></td></tr> • <tr><td>:: added by</td><td><input disabled value="<?PHP echo"$_SESSION[FirstName] $_SESSION[LastName]"; ?>" type="text" name="Name"></td></tr> • <tr><td align="center" height="30"><a href='#' onClick='reset()'>:: reset ::</a></td><td align="center"><a href='#' onClick='add_project.submit()'>:: submit ::</a></td></tr> • </form> • <?PHP • } • elseif ($do == "edit") • { • $what = $_REQUEST['what']; • if ($what == "addPerson") • { • # adds a person to the project • $qAddPerson = "INSERT INTO MemberInProject (ProjectID, MemberID) VALUES('$projectID', '{$_POST['memberID']}')"; • $resultAdd = mysql_query($qAddPerson) or die("SQL: $qAddPerson <br>".mysql_error()); • } • elseif ($what == "update") • { • # update the project • $qUpdateProject = "UPDATE Project SET ProjectName='{$_POST['ProjectName']}', StartDate='{$_POST['StartDate']}', EndDate='{$_POST['EndDate']}' WHERE ProjectID = '{$_POST['ProjectID']}'"; • $resultUpdate = mysql_query(qUpdateProject) or die("SQL: $qUpdateProject <br>".mysql_error()); • } • # if you selected an project via a link this sql query will be executed • if ($projectID != '') • { • # get the project info from 2 tables, Project and TeamMember • $qGetOneProject = "SELECT * FROM Project, TeamMember WHERE ProjectID = $projectID AND Project.AddedBy = TeamMember.MemberID"; • $result2 = mysql_query($qGetOneProject) or die("Query failed: qGetOneProject <br>".mysql_error()); • $numRows2 = mysql_num_rows ($result2); • while ($line = mysql_fetch_array($result2)) • { • $t0 = $line['ProjectID']; • $t1 = $line['ProjectName']; • $t2 = $line['StartDate']; • $t3 = $line['EndDate']; • $t4 = $line['FirstName']; • $t5 = $line['LastName']; • $t6 = $line['AddedBy']; • $t7 = $line['Deleted']; • } • # get info about the teammembers in the project that has been shosen.... • $qGetProjectMembers = "SELECT * FROM MemberInProject, TeamMember WHERE ProjectID = $t0 AND TeamMember.MemberID = MemberInProject.MemberID"; • $result3 = mysql_query($qGetProjectMembers) or die("Query failed: qGetProjectMembers <br>".mysql_error()); • $numRows2 = mysql_num_rows ($result3); • # get info about all the teammembers for adding in project • $qGetAllMembers = "SELECT * FROM TeamMember WHERE deleted = 0"; • $result4 = mysql_query($qGetAllMembers) or die("Query failed: qGetAllMembers <br>".mysql_error()); • $numRows4 = mysql_num_rows ($result4); • } • # Here is the query that collects all the projects in database... • $qGetProjects = "SELECT * FROM Project"; • $result = mysql_query($qGetProjects) or die("Query failed qGetProjects <br>".mysql_error()); • $numRows = mysql_num_rows ($result); • # Here all the projects in database is printed • print "<form name='pick_project' method='post' action='index.php?page=project&do=edit'><tr><td width=150>:: pick a project: </td>"; • print "<td><select name='projectID'>"; • while ($line = mysql_fetch_array($result)) • { • $s0 = $line['ProjectID']; • $s1 = $line['ProjectName']; • $s2 = $line['Deleted']; • print "<option value='$s0'"; • if ($projectID == $s0) • print " selected"; • print ">$s1"; • if ($s2 == 1) • print " (deleted)"; • print "</option>"; • } • print "</select></td><td>&nbsp;&nbsp;<a href='#' onClick='pick_project.submit()'>:: choose ::</a></td></tr></form>"; • # if a project is selected the info will be shown here and possible to edit it • if ($projectID != '') • { • ?> • <tr><td colspan=3>&nbsp;</td></tr> • <tr height=2><td colspan=3 style='background-color: brown'></td></tr> • <tr><td colspan=3>&nbsp;</td></tr> • <form action="index.php?page=project&do=edit&what=update" method="post" name="update_project"> • <input type="hidden" name="AddedBy" value="<?PHP echo"$t6"; ?>"> • <input type="hidden" name="ProjectID" value="<?PHP echo"$t0"; ?>"> • <tr><td width=150>:: name of project</td> • <td colspan="2"><input type="text" name="ProjectName" value="<?PHP echo"$t1"; ?>">&nbsp; • <?PHP • if ($_SESSION[AccessRights] == 3) • print "<a href='index.php?page=project&do=delete&ProjectID=$t0'>:: delete ::</a>"; • ?> • </td></tr> • <tr><td>:: start date</td><td colspan="2"><input type="text" name="StartDate" value="<?PHP echo"$t2"; ?>"></td></tr> • <tr><td>:: end date</td><td colspan="2"><input type="text" name="EndDate" value="<?PHP echo"$t3"; ?>"></td></tr> • <tr><td>:: added by</td><td><input disabled value="<?PHP echo"$t4 $t5"; ?>" type="text" name="Name"></td> • <td align="center"><a href='#' onClick='update_project.submit()'>:: update ::</a></td></tr> • </form> • <tr><td colspan=3>&nbsp;</td></tr> • <tr height=2><td colspan=3 style='background-color: brown'></td></tr> • <tr><td colspan=3>&nbsp;</td></tr> • <tr><td>:: people in this project (email)</td><td colspan="2" align="left">:: company</td></tr> • <tr><td colspan=3>&nbsp;</td></tr> • <?PHP • # here is the result of the query qGetProjectMembers printed, shows all the membes in selected project • if ($numRows2 == 0 || $numRows2 == "") • { • print "<tr><td colspan=3>no people in this project...</td></tr>"; • } • else • { • while ($line = mysql_fetch_array($result3)) • { • $u0 = $line['FirstName']; • $u1 = $line['LastName']; • $u2 = $line['Email']; • $u3 = $line['Phone']; • $u4 = $line['AccessRights']; • $u5 = $line['Company']; • $u6 = $line['Deleted']; • $u7 = $line['MemberID']; • print "<tr><td>$u0 $u1 (<a href='mailto:$u2'>$u2</a>)&nbsp;&nbsp;</td>"; • print "<td> $u5</td><td><a href='index.php?page=project&do=delete&ProjectID=$u7'>:: delete ::</a></td></tr>"; • } • } • print "<tr><td colspan=3>&nbsp;</td></tr><tr height=2><td colspan=3 style='background-color: brown'></td></tr><tr><td colspan=3>&nbsp;</td></tr>"; • # here is the result of the query qGetAllMembers printed, here can you add a person to the project • print "<form name='pick_member' method='post' action='index.php?page=project&do=edit&what=addPerson'><tr><td>:: add member to project: </td>"; • print "<td><select name='memberID'>"; • while ($line = mysql_fetch_array($result4)) • { • $v0 = $line['FirstName']; • $v1 = $line['LastName']; • $v2 = $line['MemberID']; • print "<option value='$v2'>&nbsp;$v0 $v1</option>"; • } • print "</select></td><td>&nbsp;&nbsp;<a href='#' onClick='pick_member.submit()'>:: add ::</a></td></tr>"; • print "<input type=hidden name=projectID value=$projectID></form>"; • } • } • else # If something is wrong and logged in you will get this error-message... • { ?> • <tr><td>hey, your are logged in and looking at the projects (project.php)<br><br>but something is wrong.. try again...</td></tr> • <?PHP } ?> • </table> • <?PHP } ?>

  27. Documentation • Chat contents • Minutes of meeting • Mail correspondence • Importance • The repository http://www.fer.hr/rasip/dsd/projects/8/docs

  28. Hours spent in project-934 hs / 116 man days

  29. Lessons learned • Communication is important and crucial- Never stop communicate- Documentation, requirements and design takes time- Tools for keeping track of project- Time consuming- A lot of learning and less output- We worked at 4 different locations- Used fer-homepage and CVS- Patience is important- Main objective is learned (teamwork in DSD)

  30. Messenger project-Questions?

More Related