300 likes | 318 Views
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.
E N D
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.
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)
Process • Design • Database • Source code • Software • Web interface • Documentation • Questions?
Object Sequence diagrams (OSD) • OSD OF System Startup • OSD of Login Session • OSD of Add I/M, Delete I/M, Search • OSD of chat
Object Sequence diagrams OSD OF System Startup
Object Sequence diagrams OSD of Login Session
Object Sequence diagrams OSD of Add I/M, Delete I/M, Search
Object Sequence diagrams OSD of chat
Source Code • general issues • technical issues • Yahoo! messenger • simplified GUI design • satisfied requirements • upgrade possibilities
Database Progress… Tables Created(2)
Database Progress… Tables Created(3)
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
Web interface • Start page (Search) • For administrators • Users can not see add & edit • Search by project, member, keyword and date
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)
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
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> </td></tr> • <tr height=2><td colspan=3 style='background-color: brown'></td></tr> • <tr><td colspan=3> </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> <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> </td></tr> • <tr height=2><td colspan=3 style='background-color: brown'></td></tr> • <tr><td colspan=3> </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"; ?>"> • <?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> </td></tr> • <tr height=2><td colspan=3 style='background-color: brown'></td></tr> • <tr><td colspan=3> </td></tr> • <tr><td>:: people in this project (email)</td><td colspan="2" align="left">:: company</td></tr> • <tr><td colspan=3> </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>) </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> </td></tr><tr height=2><td colspan=3 style='background-color: brown'></td></tr><tr><td colspan=3> </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'> $v0 $v1</option>"; • } • print "</select></td><td> <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 } ?>
Documentation • Chat contents • Minutes of meeting • Mail correspondence • Importance • The repository http://www.fer.hr/rasip/dsd/projects/8/docs
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)