资源描述
软件工程实习报告书实时通讯系统的设计与实现学 号:0705010110姓 名:李乔指导老师:戴祖雄完成日期:2011年3月7日 目录第一章 A可行性研究报告. 31 引言 . 32 可行性研究的前提 . 33 可行性分析 . 44结论意见 . 4第二章 B需求分析说明书 . 61 引言 . 62 目标系统任务概述 63需求规定. 7第2章 C概要设计说明书. 81引言. 82总体设计. 8第3章 D详细设计说明书. 91引言. 102各个模块的具体流程. 113关键代码分析. 13第4章 E测试说明书. 161测试方案. 162测试用例. 163测试结果. 164测试结果分析. 16总结、致谢 17参考文献 18前言近年来,各种企业内部通讯系统得到了飞速发展,它可以不用连接Internet,直接在局域网内实现信息通讯、工作交流、提交计划等业务。这种通讯系统广泛应用于中小型企业的内部通讯,可以大大提高职工的工作效率,在方便企业内部职工交流的同时,也创造了一个安静的工作环境。在现代企业内部通讯软件是不可缺少的工具。本软件主要是针对企业内部职工的通讯与交流进行设计,目的是方便职工之间的交流,以提高工作效率。本课程设计说明书共五章。第一章为可行性分析,主要讨论该系统技术、 经济、社会方面的可行性。第二章为需求分析,主要明确该系统应具备的一些基 本功能。第三章和第四章为概要设计和详细设计,主要讲述系统的设计和实现。 第5章 为测试,主要是对该系统进行简单的功能测试。 本系统采用Java Swing和JavaDB进行开发,主要思想是面向对象的设计策略,界面友好、操作方便,用户可以轻松的掌握各种操作。因本人水平有限加之时间仓促,本课程设计说明书中难免有不妥之处,还望老师批评更正。A可行性研究报告1引言1.1编写目的企业实时通信系统是针对企业内部职工的通讯与交流进行设计,目的是方便职工之间的交流,以提高工作效率。1.2项目背景开发软件名称:企业实时通讯系统项目任务提出者:湖南科技大学计算机科学与工程学院 项目开发者:李乔用户:湖南科技大学计算机科学与工程学院实现软件单位:湖南科技大学计算机科学与工程学院 项目与其他软件,系统的关系本项目采用JAVA Swing技术和JDK1.6新增的JAVADB数据库,程序是以JAVA为运行环境而开发的应用程序,具有跨平台的特性。1.3 定义 专门术语:Java , Java Swing, JavaDB, SQL缩写词:Java , Swing, JavaDB, 结构化查询语言2可行性研究的前提2.1要求主要功能:根据企业内部通讯系统的特点,可以将本系统划分为信息通讯、系统升级、系统设置、用户搜索等共计6大部分。性能要求:)实现员工之间的实时通信。)当软件拥有新版本时,使用升级功能进行升级。)可以对系统的用户界面、用户名称、公共路径等进行设置。)可以对用户按指定IP段进行搜索。)可以访问企业内部公共路径中的资。2.2目标系统实现后,提高企业内部员工在工作时进行交流的效率,以达到员工之间可以利用工作的计算机进行实时通讯、而不必离开工作位置完成交流,从而提高工作效率。2.3条件,假定和限制建议软件寿命:3年。硬件条件:pc机。运行环境:Windows或Linux、Java数据库:JavaDB技术可行:现有技术可完全承担开发任务。操作可行:,软件能被原有工作人员快速接受。3可行性分析3.1对以往的系统的分析在利用企业内部通讯系统之间,企业员工之间的交流必须通过员工本人当面完成或通过电话等设备完成,员工不得不离开工作位置而完成交流,或者通过有声的方式完成通讯,这样一来难免会对办公环境中的其他员工造成不必要的影响,也大大降低了工作的效率。3.2开发系统简要描述在员工的工作计算机上搭载好软件的运行环境、部署好软件后,由于软件的工作方式与常用的通讯软件基本一致,用户可以轻松的掌握相关操作。3.3经济可行性分析本项目属于非盈利项目。由于Java本身属于开源的开发环境,所以所有的软件不需要额外的花费,只需要将软件的运行环境部署到工作计算机即可。3.4技术可行性根据客户提出的系统功能、性能及实现系统的各项条件,根据新系统目标来衡量所需的技术是否具备,本系统是一个数据库管理和查询的系统,现有的技术以较为成熟,硬件、软件的性能要求、环境条件等各项条件良好,估计利用现有技术条件应完全可以达到该系统的功能目标。同时,考虑给予的开发期限也较为充裕,预计系统是可以在规定期限内完成开发。3.5法律可行性研究开发此系统的过程并未涉及到合同侵权责任以及各种与法律相抵触的问题。本系统适用于各种中小型企业。运用此系统进行员工之间的内部交流,给企业员工的通讯带来极大的方便。3.6用户使用的可行性作为本产品的使用者要求有一定的计算机基础,可以熟练得使用window操作系统所提的各种功能。数据库管理要求具有专业水平的数据库管理员,用户需要简单的操作指导。4结论意见企业内部通讯系统必须提供网络通讯功能、在通讯过程中禁止使用聊天表情、文件传送等功能,避免资料外泄,或因发送错误而导致上级资料的丢失以及其他损失。最重要的是必须适应任何操作系统,也就是实现跨平台技术,因为企业内部的工作需要,工作环境中使用了多个操作系统来完成不同的工作。另外,系统不需要使用服务器中转和记录通讯内容,可以独立完成通讯任务,排除职工对领导监视工作进度等逆反心理。B需求分析1引言信息社会的高科技,商品经济化的高效益,使计算机的应用已普及到经济和社会生活的各个领域。计算机虽然与人类的关系愈来愈密切,还有人由于计算机操作不方便继续采用人工执行。为了适应现代社会人们高度强烈的时间观念,企业内部通讯系统为企业员工的交流提供了极大方便。该软件是以Java语言为实现语言,其功能在系统内部有源代码直接完成。操作人员只需利用一些基本的计算机操作,即可达到自己的目标。1.1编写目的本需求的编写目的在于提高企业员工之间通讯的便利性。本需求的预期读者是与企业内部通讯软件开发有联系的决策人,开发人员,支持本项目的领导和公司人员,软件验证者。1.2背景及范围项目的名称:企业内部通讯系统。1.3定义Swing是一个用于开发Java应用程序用户界面的开发工具包。它以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格。Swing开发人员只用很少的代码就可以利用Swing丰富、灵活的功能和模块化组件来创建优雅的用户界面。 工具包中所有的包都是以swing作为名称。Java DB是一个纯 Java 实现、开源的数据库管理系统(DBMS),源于 Apache 软件基金会(ASF)名下的项目 Derby。它只有 3MB 大小,对比动辄上 G 的数据库来说可谓袖珍。但这并不妨碍 Derby 功能齐备,支持几乎大部分的数据库应用所需要的特性。更难能可贵的是,依托于 ASF 强大的社区力量,Derby 得到了包括 IBM 和 Sun 等大公司以及全世界优秀程序员们的支持。这也难怪 Sun 公司会选择其 10.2.2 版本纳入到 JDK 6 中,作为内嵌的数据库。这就好像为 JDK 注入了一股全新的活力:Java 程序员不再需要耗费大量精力安装和配置数据库,就能进行安全、易用、标准、并且免费的数据库编程。 2目标系统概述2.1目标企业内部通讯系统以提供网络通讯功能为目标,应该能适应任何操作系统,也就是实现跨平台技术,因为企业内部的工作需要,工作环境中使用了多个操作系统来完成不同的工作。另外,系统不需要使用服务器中转和记录通讯内容,可以独立完成通讯任务。 2.2用户简介该系统的用户是中小型企业中各种职位的员工。2.3 组织结构和职责本系统采用MVC模式开发,有dao、frame、userlist三个主要的包。系统的组织结构比较简单,主要是单层结构,利用单独的客户端即可完成工作。3需求规定3.1功能需求:对企业通讯系统进行分析,初步分析该系统应具备以下的主要功能。(1) 信息通讯,员工可通过软件进行实时通讯;(2) 系统升级,实现软件版本更新;(3) 系统设置,用于设置系统界面、公共路径、IP段等;(4) 用户搜索,实现用户添加、删除等管理;(5) 访问公共资源,实现共享文件资源;3.2功能需求点列表1.用户管理:用户管理主要负责用户信息的管理,如通讯对象的添加、删除、改名等。2.系统设置:系统设置主要负责用户对系统的相关设置,如用户界面、系统路径、IP范围等。3.数据管理:数据管理包括对用户窗体的属性、用户的相关属性、通讯方的相关记录等的存储与管理 。3.3系统性能需求1.时间性能要求:在实际应用中由于通讯业务的要求,需要软件的响应时间应该尽可能缩短,对于有特殊需求的业务,还要求达到实时响应。2.储存性能要求:根据应用中实际情况配置适当容量的存储设备,由于本系统的存储要求不高,所以只要求存储设备能够稳定工作即可。3.稳定性安全性要求:要求软件尽可能的稳定,对于一般的应用系统,对安全性要求不高,但是对于通讯软件来说,在安全性方面应该加以保证。3.4系统运行需求由于本系统使用JavaDB数据库,所以只需要供软件运行的多台PC机即可,PC机应组成相应的局域网,并搭载Java运行环境。C概要设计说明书1 引言经过了需求分析阶段的工作系统必须“做什么”的问题已经清楚了,现在是决定“怎么做”的时候了。在这里要确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系。2总体设计2.1层次图:根据本次设计需要,整个企业内部通讯系统可以分成信息通讯、系统设置、用户管理等3个模块。系统的层次图如下图1所示:图1企业内部通讯系统层次图2.2各模块功能及相互关系1.信息通讯模块:通讯模块是企业内部通信系统的核心模块,它用于不同职工之间的通讯,这种通讯方式能够实现多个职工之间的通话,而不存在类似电话的占线问题,增加了任务分配的新方式,从而提高了企业的工作效率。该模块可以使用UDP协议和系统信使两种方式发送通讯信息。2.系统设置模块:系统设置模块用于管理企业内部通讯系统的相关设置,比如窗体大小,用户名、通讯对象、IP段、公共路径等,在企业内部通讯系统有新版本提示时,可以使用系统升级功能直接升级到最新版本,而不用重新安装。3.用户管理模块:用户管理模块类似聊天软件的好友列表,它包含了所有用户信息,具有更名、添加用户、删除用户、信使群发等功能。D详细设计说明书1 引言系统运用共享数据结构技术及多线程技术,通过I/O端口与用户进行通讯,实现了数据转发功能。首先,程序进行初始化,利用JavaDB数据库中存放的数据初始化用户主界面,并读取通讯对象的相关信息。当用户利用通讯窗体发送信息时,创建相关线程处理业务。当用户对通讯对象作出相关更改时,将结果保存至数据库,使得系统使用的数据与数据库中的数据保持一致,直至程序结束。在开始进行聊天通信前,需要先初始化系统,系统的初始化过程如下图2所示:图2系统初始化流程图当系统初始化完毕之后,就可以进行具体的通讯业务了(即普通通讯和信使通讯)。2各个模块的具体流程当用户启动系统后会出现一个主窗体,如下图3所示:图3 主窗体界面图4 通讯子窗体主窗体中包含了各种子窗体,如用户列表窗体、系统设置窗体和用户搜索窗体,以切换卡的方式进行切换。2.1通讯模块设计:当用户用鼠标双击选中图3中用户列表中的某个用户时,会创建一个通讯子窗体,如图4所示,此时可以按照如下图5所示的流程进行通信业务:图5 通讯业务流程图2.2系统设置模块设计:当用户使用切换卡切换到系统设置界面时,如下图6所示,可以进行系统相关配置的设置,具体业务流程如下图7所示:图6 系统设置界面图7 系统设置业务流程 2.3用户管理模块设计:操作用户可以使用多种途径对用户列表进行管理,比如在用户列表单击右键,在弹出菜单中按指定IP添加用户,或者选中删除用户。也可以在用户搜索面板中按指定的IP范围进行批量搜索添加,如下图8所示,用户管理业务的流程如图9所示: 图8 用户搜索面板图9 用户管理流程3关键代码分析3.1通信模块关键代码:通讯模块使用UDP进行通讯,利用Java听过的包中的相关API进行编程设计,利用MVC设计模式,将一个监听器绑定在发送按钮对象上,当用户点击发送时发送消息框中的消息。关键代码及注释如下:class sendActionListener implements ActionListener public void actionPerformed(final ActionEvent e) String sendInfo = getSendInfo();if (sendInfo = null)/对消息进行判断return;insertUserInfoToReceiveText(tree);/将操作用户的信息插入发送文本appendReceiveText(sendInfo + n, null);byte tmpBuf = sendInfo.getBytes();DatagramPacket tdp = null;try tdp = new DatagramPacket(tmpBuf, tmpBuf.length,new InetSocketAddress(ip, 1111);/初始化数据报包对象包装信息ss.send(tdp);/发送消息 catch (SocketException e2) e2.printStackTrace(); catch (IOException e1) e1.printStackTrace();JOptionPane.showMessageDialog(TelFrame.this, e1.getMessage();sendText.setText(null);/清空消息框,为再次输入准备sendText.requestFocus();/使消息框获得焦点,减少操作if (messageMode.isSelected()setState(ICONIFIED);3.2系统设置模块关键代码:系统设置模块设计的关键在于与JavaDB数据库的交互,关键代码与注释如下:public void updateLocation(Rectangle location) / 更新窗体位置String sql = updatetb_locationsetxLocation=?,yLocation=?,width=?,height=?;try PreparedStatement pst = conn.prepareStatement(sql);pst.setInt(1, location.x);/插入窗体位置数据pst.setInt(2, location.y);pst.setInt(3, location.width);pst.setInt(4, location.height);pst.executeUpdate();/更新数据库信息pst.close();/关闭连接 catch (SQLException e) e.printStackTrace();public Rectangle getLocation() / 获取窗体位置Rectangle rec = new Rectangle(100, 0, 240, 500);/创建rec对象并设置默认数据String sql = select * from tb_location;try Statement stmt = conn.createStatement();ResultSet rs = stmt.executeQuery(sql);if (rs.next() /若存在,则重设rec属性rec.x = rs.getInt(1);rec.y = rs.getInt(2);rec.width = rs.getInt(3);rec.height = rs.getInt(4);rs.close();stmt.close(); catch (SQLException e) e.printStackTrace();return rec;3.3用户管理模块关键代码:用户管理模块使用了树的数据结构,这样一来对用户对象的搜索插入操作就和对树的插入删除操作一样了,关键代码如下:public void delUser() / 删除用户TreePath path = getSelectionPath();if (path = null)return;User user = (User) (DefaultMutableTreeNode) path.getLastPathComponent().getUserObject();/获取节点中的用户对象int operation = JOptionPane.showConfirmDialog(this, 确定要删除用户: + user+ ?, 删除用户, JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);/给出提示信息以确认删除if (operation = JOptionPane.YES_OPTION) dao.delUser(user);/调用删除方法root.remove(DefaultMutableTreeNode)path.getLastPathComponent();/删除该节点treeModel.reload();E测试分析报告1测试方案在测试过程中,采用黑盒测试,即检查程序功能是否能按要求进行,是否适当的接收数据产生正确的输出,并保持外部信息的完整性。2测试用例在测试中使用采用在局域网中的多太计算机进行如下情况下的通讯:(1) 当网络连接正常和不正常时,即断开网络时的通讯。(2) 当输入信息正确和有误时的通讯。(3) 当通信接收方存在和不存在时的通讯(4) 对系统设置进行相关更改,测试能否保存。(5) 自定义IP段,检测用户管理模块的功能。3测试结果测试结果情况良好,具体表现如下:(1) 网络正常时,通讯正常工作,当网络不正常时,软件给予相应的错误提示。(2) 当输入正确时,通讯正常,当输入有误,如发送消息为空时,软件给予正确提示。(3) 当通讯接收方存在是,通讯正常,接收方正确收到信息,当通讯接收方不存在是,给予正确提示。(4) 对系统设置进行相应更改,数据库保存正常,在重启软件后能够正常读取相应的系统设置(5) 软件能够根据自定义的IP段进行自动查询和添加用户,工作情况良好。4.测试结果分析结果表明,经过测试每个功能都能按预先要求正常进行且速度达到了预期的标准。用户界面友好。用户能正常接收UDP信息以及信使信息。当然,作为通讯软件,在信息安全方面的考虑还有所欠缺,这也是设计中所不足的部分。总结、致谢通过本次设计,学到了不少东西。最重要的是对进行软件设计的整体设计流程及思维方法有了深刻的认识。在期间,发现的许多问题都源于没有认真的按步骤进行设计,不重视需求分析,总体设计部分,对各方面将会产生的问题考虑不周全。在设计过程中,使用到基本都是书本中所讲授过的知识,也让我体会到了学以致用的重要性。由于本人能力有限,在项目设计中考虑的方面难免有所欠缺,也谢谢指导老师的指正和提示!参考文献1张海潘.软件工程(第五版)M.北京:人民邮电出版社,2008.2(美)Roger S.Pressman.软件工程-实践者的研究方法M.北京:机械工业出版社,2002.3(美)Horstmann.C.S.Java核心技术,卷I:基础知识 M.北京:机械工业出版社,2008.4(美)Horstmann.C.S.Java核心技术,卷II:高级特性 M.北京:机械工业出版社,2008.18
展开阅读全文