




已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
韶关市广播电视大学开放教育本科毕业设计(论文)XXXXXXXX 系 统姓 名:XXX专业班级:XX秋计算机科学与技术指导教师:XXX提交日期:200X年X月X日摘要摘要水利是国民经济的一个基础产业,水文信息又是水利信息的基础,水文工作的核心。到大型的全方面应用。关键词:水文;分布式计算;遥测ABSTRACTWater conservancy is a basic industry of the national economy, hydrology information is a foundation of the information of water 。ect application.KeyWords: Hydrology;Calculate distributedly;Telemetering measurementI目录目 录摘要IABSTRACTII第一章 绪论11.1 选题背景及意义11.2 项目特点11.3 项目成本分析21.4 论文的主要工作2第二章 技术基础32.1 Java32.1.1 Java32.1.2 Java Bean32.2 多线程42.3 EJB52.3.1 EJB52.3.2 EJB3.052.4 Jboss62.4.1 Jboss62.4.2 Hibernate72.4.3 JBoss Cache缓存架构112.5 显示层技术122.6 开发工具Eclipse122.7 极限编程142.8 代码版本控制16第三章 需求分析及方案论证183.1 需求分析183.2 实体关系图203.3 项目设计方案22第四章 项目的总体设计234.1 项目组件框架图234.2 接收模块功能设计234.3 组件介绍254.4 原始报文接收EJB274.5 报文处理EJB284.6 自主开发的缓存方案294.7 定时轮询EJB304.8 有状态会话Bean314.9 日志功能32第五章 代码优化测试及性能分析345.1 单元测试345.2 代码测试结构415.3 重构43论文总结46致谢47参考文献4811第一章 绪论第一章 绪论1.1 选题背景及意义目前存在的遥测系统一般有遥测系统监控软件和C/S结构的系统,从运行情况看不能适合越来越广泛的网络应用要求。遥测系统监控软件往往只能单机运作,根本无法实现网络化;C/S结构的应用不能适应频繁扩展的网络变化,维护成本高企,升级换代困难。本单位的实际需要,特开发了本系统,本系统将按照商用化通用化的标准进行开发。1.2 项目特点项目特点:极强的整合能力,经过少量的修改可以将其他遥测系统的数据整合到本系统中来。引入用户分组功能,针对不同的用户,提供不同的数据服务,更好的适应了市场的需要。1.3 项目成本分析1.4 论文的主要工作以下是项目进度安排表第二章 技术基础第二章 技术基础2.1 Java2.1.1 Java在不同的时间点上,Java这个名词有着不同的意义。要了解什么是Java,从一些历史性的数据上,可以对Java的角色有所了解。 总而言之,随。学习Java本身也不仅仅在于学习如何使用它的语法,更多的时候是在学习如何应用Java所提供的资源与各种标准,以开发出架构更好、更容易维护的软件。2.1.2 Java BeanJavaBeans 规范将“组件软件”的概念引入到 Java 编程的领域。组件是自含的、可重用的软件单流的软件解码就是这样的,Bean可以独立工作,也可以与其他一系列分布式组件一起协同工作。2.2 多线程多线程是这样一种机制,它允许在程序中并发执行多个指令流,每个指令流都称为一个线程,彼此间互相独立。同时还专门针对特定数据对时间顺序的要求进行了线程控制。很好的保证了数据处理即高效又准确。2.3 EJB2.3.1 EJBEJB(Enterprise Java Bean,企业Java Bean)是基于Java的服务器端组件架构技术。借助它,开发者能够轻松构建企业级、分布式组件应用。EJB是本项目的核心内容。2.3.2 EJB3.03.0版本之前,由于EJB的复杂性使之在J2EE架构中的表现一直不是很好。EJB大概是J2EE架构中唯一一个没有兑现其能够简单开发并提高生产力 的组建。EJB3.0规范正尝试在这方面作出努力以减轻其开发的复杂性。EJB3.0减轻了开发人员进行底层开发的工作量,完成这些事情)。,意思是你可以为所有的注释提供一个明确的缺省值,这样多数常规信息就可以据此推断得出。新的持久化模型新的实体bean也是一个加了注释的简单Java对象(POJO)。一旦它被EntityManager访问它就成为了一ean、有状态回话bean、消息驱动Bean、实体Bean,2.4 Jboss2.4.1 Jboss在J2E现应用的热部署和热卸载能力。因此,它是高度模块化的和业级市场日益增长的需求,Jboss公司从2003年开始就推出了24*7、专业级产品支持服务。同时,为拓展Jboss的企业级市场,Jboss公司还签订了许多渠道合作伙伴。比如,Jboss公司同HP、Nov本项目选择了Jboss作为ejb容器。目前版本JBoss4.05GA。2.4.2 Hibernate在Java世界,Hibernate是最引人关注的一个话题。从Gavin King加入EJB3.0 EG,负责制Hibernate。 因此我们可以的EJB3.0实现核心就是Hibernate。Hibernate的缓存机制缓存是介于应用程序和物理数据源之间,其作用是为了降低应用程序对物理数据源访问的频次,从而提高了应用的运行性能。缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写缓nFactory的外置缓存是一个可配置的插件。在默认情况下,SessionFactory不会启用这个插件。外置区别,需要深入理解持久化层的缓存的两个特性:缓存的范围和缓存的并发访问策略。持久化层的缓存的范围缓存的范围决定了缓存的生命周期以及可以被谁访问。缓存的范围分为三类。1 事务范围存可能会存放大量的数据,所以存放的介质可以是内存或硬盘。缓存内的数据既可以是相互关联的对象形式也可以是对象的松散数据形式。松散的对象数据形式有点类似于对象的序列化数据,但是对象分解为松散的算法比对象序列化的算法要求更快。3还是没3 与其他应用共享的数据。Hibernate的二级缓存如前所述,Hibern件查询则毫无作用。为此,Hibernate提供了针对条件查询的Query缓存。Hibernate的Query缓存策略的过程如下:也就是说本项目支持以上的所有数据库。所需要做得只是修改配置文件,增加相应的驱动即可,根本不用重新修改项目。2.4.3 JBoss Cache缓存架构在jboss中使用二级缓存使用了JBOSS自家的JBoss Cache缓存架构,这个架构已经超过了HibJBoss Cache是完全可配置的。系统的方方面面,诸如复制机制,事务隔离级别,清除public class Contact implements Serializable2.5 显示层技术由于工作进度的原因,这部分的技术还没有具体应用的项目中,拟采用JBoss Seam,JBoss Seam是一个Java EE 5框架。它通过把JSF与EJB3.0组件合并在一起,从而为开发基了,当时的版本是1.0,现在是1.2了,并且随着EJB3.0规范的正式发布,实现上有了一些更加长足的发展。2.6 开发工具Eclipse目前比较流行的Java IDE有Eclipse()、JBuilder(/us/products/jbuilder/index.html)件开发无关的其他应用程序类型的基础,比如内容管理系统。以运行在JBuilder上了,这在一定程度上 也算是某种开放了。同时,由于Eclipse使用SWT作为其图形库,因此,JBuilder在运行速度上要高于以前版本的JBuilder。本项目绝大部分工作是在Eclipse下完成制作的。2.7 极限编程极限编程(Extreme Programming,XP)是一门一起来保证高质量的软件。XP 其实是一种保证成功的团队开发的简单而有效的方法。 XP 强调四种价值:交流,简易,回馈,勇气。XP 程序员之间紧密的相互交流,XP 程序员也和客户紧去帮助“预见、管理、决策和控制的依据”的作用。因此必须重新审视开发环节,去除臃肿累赘,轻装上阵。一、XP的核心思想从长远看,早期发现错误以及降低复杂度可以节约成本。极限编程强调我们将任务/系统细分为可以在较短周期解决的一个个子任务/模块,并且强调测试、代码质量和及早发现问题。通常,通过一个个短小的迭代周期,我们就可以获得一个个阶段性的进展,并且可以及时形成一个版本供用户参考,以便及时对用户可能的需求变更作出响应。二、XP的十二种方法 规划策略(The Planning Game) 结对编程(Pair programming) 测试(Testing) 重构(Refractoring) 简单设计(Simple Design) 代码集体所有权(Collective Code Ownership) 持续集成(Continuous Integration) 现场客户(On-site Customer) 小型发布(Small Release) 每周40小时工作制(40-hour Week) 编码规范(Code Standards) 系统隐喻(System Metaphor) 三、XP的四个核心价值极限编程中有四个核心价值是我们在开发中必须注意的:沟通(Communication)、简单(Simplicity)、反馈(Feedback)和勇气(Courage)。 P;轻松愉快地来感受XP的实践思想;自己认真实践后,通过对真实反馈的分析,来决定XP对自己的价值;有勇气接受它,或改进它。四、XP 带给我们的变化通过软件工程设计的简单而优美的软件并不比那些设计复杂而难以维护的软件有价值。这是真的吗?XP认为事实并非如此。一个典型的项目花在人力上的金钱是花在硬件上的时间的20 倍,这意味着一个项目每年求的变化。一般情况下,客户只有在系统被开发完成以后能真正去体会它。XP 却不一样,它通过加强客户们的源代码也并不意味着我们可以不努力去管理代码的质量。五、什么时候用XPXP方法的产生是因为难以管理的需求变化,从一开始你的客户并不是很完全的知道他们要的系统是怎么样的,你可能面对的系统的功能一个月变化多次。在大多数软件开发环境中不断变化XP方法需要一个扩展的开发团体,XP 团体不仅仅包括开发者,经理、客户也是其中的一员,所有的工作一环扣一环,问问题,商讨方法和日程,增加功能测试,这些问题的解决不仅仅涉及到软件的开发者。另一个客户需要的软件。假如对于你的开发来说,这是很重要的方面,你就可以选择XP 了。2.8 代码版本控制CVS (Concurrent Version System),可翻译成并行版本系统,它主要用于版本的管理,尤其在多人团队合作的开发模式中作用巨大。 为什么要使用 CVS 呢?如果各位有过团队合作开发的经验就会知道,在团队合作开发中,要对整个项目的各个文件进行控制是多么繁琐的一件事情,经常会出,而省下更多的精力用本项目其实已经是第二个版本的开发了,在本项目的开发中尽可能采用敏捷编程的方式,进行开发,采用这种形式,版本控制非常重要,没有良好的代码版本控制,是不可能进行持续开发的。第三章 需求分析及方案论证第三章 需求分析及方案论证3.1 需求分析根据使用部门的要求,得出本项目的需求如下用例图所示:用户用例图设备用例图3.2 实体关系图以上是包图,DBentity是在数据库存储的实体包,localMemoryEntity对应数据库实体在缓存的实体,cache包是对缓存实体的封装包。下面是数据库实体类图。通过类图可以看出实体间的继承关系,以及它们之间的依赖关系。39第四章 项目的总体设计3.3 项目设计方案根据以上的需求,以及需要达到的性能和高可用性的要求,确定了以下的设计方案。项目按照三层结构规划设计,包括显示层、逻辑层(中间件)、数据库。由于项目比较复杂,并且只有我一个人在开发,所以开发时间比较长,目前开发还没有完成。本论文所涉及的只包括设备接收数据加工入库,历史数据的灌入,数据库定型,二级缓存模式的实现,大部分的核心逻辑层等,显示层等还没有开始开发。对应上图,主要完成的工作在EJB和数据库层。本项目的核心技术也主要体现在EJB和JSF。第四章 项目的总体设计4.1 项目组件框架图目前已完成了接收模块、设备数据接收处理组件、内部管理EJB组件组中的主要组件,还需要大量的时间完成JSF呈示组件以及WEB页面的设计。4.2 接收模块功能设计接收模块适用于将各种物理接收设备传过来的二进制信号转换为字符代码,并将原始代码传递到EJB容器的接受EJB的远程接口。一个接收模块可以接入多个物理设备,接收模块可以位于网络中任何可以连接EJB容器的位置,可以多个接收模块分布式工作。只要硬件允许没有数量限制。这里设计到了串口API的选择,当前Java标准的开发版本中没有提供串口API,或许以后的版本中会提供,现在一般有两种选择,一个是SUN的Java(tm) Communications API(/products/javacomm/reference/docs/index.html),在适当的时候SUN也许会把这个API并入标准库中;另一个是自由软件项目RXTX(/jarvi/rxtx/index.html)提供的API。目前可在Linux、Windows、Solaris、Mac OS下运行。这两个项目提供来回接收模块与EJB远程接口之间可以达到3毫秒左右,当然这时数据只是放到EJB的缓存中还没有进行处理,在数据处理EJB会有说明。4.3 组件介绍本项目使用了三种EJB,无状态会话Bean、有状态会话Bean、实体Bean,另外一种消息驱动Bean,到目前为止还没有实现的需求。无状态会话Bean的工作原理,用以下活动图表示:这里一个非常核心的技术实现,就是无状态会话的实例池,这个实例池可以永久存在,甚至当EJB容器非法关闭时,因为它被持久到了本地硬盘,等容器重新激活,它又在停止点位置继续工作。这里就有一个永续工作的概念,以及对代码的高可靠性的要求在里面。这种现象也曾给我的开发调试工作带来不小的困惑。以下是项目组件图4.4 原始报文接收EJB这个EJB是一个无状态会话Bean,活动图如下:从图中可以知道,这个EJB没有对数据进行更多的处理,只是简单将数据包装送入对象缓存区,然后立即返回。缓冲区的对象等待其他EJB来处理。这样可以提高整个数据接收的反应速度。4.5 报文处理EJB这是个定时器,实质上是个无状态会话Bean,这个EJB是本项目中最复杂的一个EJB,也是最核心的。在这个EJB中主要完成所有实时数据的处理工作,对于大数据量的处理,例如历史数据的批量处理或者其他系统传入的批量数据,将自动使用多个EJB进行并发处理,可以大大提高处理处理效率,实现了并发处理时所需要的同步控制,可以保证数据正确性,以下是活动图。4.6 自主开发的缓存方案Jboss cache为我们提供非常完整缓存方案,正是因为它提供了太为完整的方案,以致于过于臃肿庞大不便控制,所以在使用中必然带来性能上损失,特别是在群集上使用,性能会有较大的下降。为此我们需要在缓存的更小粒度上进行控制。方案原理:对于频繁异的存在,所以还可以在次提高处理效率,使用专门线程定时检查数据版本变动,其他应用不直接与群集缓存打交道,而是只与本机内存对象关联。本项目使用了EJB的技术架字段读入分解存放在缓存中,使用时直接使用内存数据,修改后数据重新格式化为文本下面是方案的活动图,从图中可以看到,用户对数据的修改不是立即生效的,而是要等到定时器的轮询完成。根据需求分析的结果,本项目可以允许数据出现短时间的数据不同步情况出现。4.7 定时轮询EJB用于EJB项目运行环境的初始化工作,定时检查需要同步的数据情况,完成数据同步工作。一下是活动图。4.8 有状态会话Bean有状态会话Bean在实现显示逻辑时会大量应用到,下面是状态图。由于本项目进度还没有开始显示层的开发工作,显示层的内容就不介绍了。4.9 日志功能在应用程序中添加日志记录总的来说基于三个目的:监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作;跟踪代码运行时轨迹,作为日后审计的依据;担当集成开发环境中的调试器的,我代码。在UG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。第五章 代码优化测试及性能分析第五章 代码优化测试及性能分析5.1 单元测试单元测试是必不可少的,单元测试能够带来比功能测试更广泛的测试覆盖;让团队协作成为可能;vlet,Ejb等,Junit有不同的使用技巧,Eclipse3.2.2集成了JUnit4.0。上图是项目的一次单元测试运行情况图,绿色表示通过。单元测试是必须的,但是根据单元测试的特点,一些方面的代码是不进行单元测试的,例如布局等与视觉有关的代码等,还有容器(例如本项目使用的EJB容器JBOSS)相关代码象模拟技术。下面是项目用到的一个测试用例。package yc.ejb.data;import static org.junit.Assert.*;import java.util.ArrayList;import java.util.Date;import java.util.List;import javax.persistence.EntityManager;import org.junit.Test;import com.合理性检验.Date合理化历史;import com.合理性检验.DataCheckType;import serial.JsDriverType;import serial.YcSystemInfo;import yc.ejb.entity.DBentity.PrimaryData;Date合理化历史 hi_Date=new Date合理化历史(1523l);assertEquals(hi_Date.get检验情况(),DataCheckType.需要初始化);YcDataRealTime obj2=new MackYcDataRealTime();obj2.setStcdid(1523l);obj2.setCheckType(0);obj2.setSj(new Date();obj2.setPrimaryDataId(tmppri.getId();/设置对应的原始来码IDassertEquals(hi_Date.get检验情况(),DataCheckType.未知或者不确定);assertEquals(hi_Date.getStcdId(),1523l);assertEquals(hi_Date.getNewData(),1676);asassertEquals(hi_Date.get检验情况(),DataCheckType.未知或者不确定);assertEquals(hi_Date.getStcdId(),1523l);assertEquals(hi_Date.getNewData(),1676);assertEquals(hi_Date.getOldData(),1676);assPrimaryData primaryData=new MackPrimaryData();MackPrimaryData tmppri; Ppublic void setTmppri(MackPrimaryData tmppri) this.tmppri = (MackPrimaryData) tmppri;class MackYcDataRealTime extends YcDataRealTimepublic long in代码中用到了三个模拟测试类,分别模拟了一个缓存对象类,两个实体类,按照常规调试的话,需要使用数据库配合才行,使用模拟技术化,就不用了,这样大大简化了测试的复杂度,也提高了测试性能。5.2 代码测试结构Eclipse(Eclipse 3.2)的最新版本带有Callisto,一套丰富的针对Eclipse 3.2的可选插件。Callisto包括一个功能强大的分析工具,此工具称为Eclipse测试与性能工具平台,简称TPTP。TPTP提供了一套功能全面的开源性能-测程序的服务器的持续正常运行时间很长,累积下来的内存泄漏可能最终导致应用程序崩溃或服务器停止运行。这些都是留心应用程序内存泄漏情况的充数据。尽管这些统计数据不如Cobertura或Clover这样的专用工具提供的完整,您仍然可以通过它们快速了解性能测试正在有效地测试哪些方法。某次的TPTP综合测试情况图,图中包括了JUnit的测试,还有内存占用情况图,测试时间图,代码覆盖情况图等综合情况。某个经过单元测试的类的代码覆盖情况图,绿色表示运行过了,红色表示没有运行过的代码。5.3 重构所谓重构是这样一个过程:“在不改变代码外在行为的前提下,对代码做出修改,以改进程序的内部结构。”重构是一种有纪律的、经过训练的、有条不紊的程序整理方法工程堕落为随意所为。重构正好相反。哪怕手头上有一个糟糕的设计,也可以借助重构将它加工成设计良好的代码。重构的每个步骤都非常简单,如把某个属性从一个class移到另一个class,将某些代码从一个方法中拉出来形成新的方法等等。但是如果没有重构,程序的设计过程会逐渐腐败变质(程序的坏味道)。当人们只为短期目的,或是在完全整体设计之前,就贸然修改代码,程序将逐渐失去自行为象出来。Ralph Johnson把这种“早期重构”描述为“拨开乌云见青天”。重构把我带到更高的理解层次上。3、重构助你找到臭虫(bug)在进行代码重下来。你会把时间都花在调试上,无法添加新的功能。修改的时间愈来愈长,因为你必
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版农家院餐饮住宿一体化租赁运营管理合同
- 2025年度专业厨房承包与食材配送服务合同
- 2025房地产销售代理与法律咨询服务合作协议
- 2025年度单位食堂单位订餐配送合作协议
- 2025年国际标准车辆及设备租赁服务合同
- 2025版通信工程环境影响评价与监测服务合同
- 2025版轻钢隔墙抗震加固与改造合同
- 2025年度绿色有机粮油大宗购销合作协议
- 2025年智能化场地硬化施工项目合作协议
- 2025年城市更新项目电力低压线路改造与安全检测合同
- 项目实施进程汇报
- 2025学宪法讲宪法知识竞赛题库及答案(小学组)
- 中小企业网络安全解决方案概述
- 官方兽医考试题及完整答案详解(名校卷)
- 医学检验质量安全管理培训
- 2025年小学英语教师业务理论考试试题及答案
- 2025至2030中国基因分析服务行业项目调研及市场前景预测评估报告
- 公安行政案件办理务实课件
- 2025仓库保管员试题及答案
- 房地产样板间装饰工程重点难点及措施
- 康复科护理金点子
评论
0/150
提交评论