您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 【软件工程】基于开源软件的软件工程实施系统研究
基于开源软件的软件工程实施系统研究徐哲,蔡建平(北京工业大学,北京,100022)摘要:文章介绍了开源软件对软件工程实施各阶段提供的支持,并根据软件工程实施的实际需求,建立了一个基于开源软件的软件工程实施系统。系统采用了基于SOA模式的系统架构,并采用XML中间件实现异构数据的集成。关键词:开源软件、软件工程、SOA、数据集成中图分类号:TP311文献标识码:AResearchontheimplementationofsoftwareengineeringBasedonopen-sourcesoftwareXuZhe,CaiJianPing(BeiJinguniversityoftechnology,BeiJing,100022)Abstract:ThearticleintroducedOpen-sourcesoftwarewhichcanbeusedtosupporttheimplementationofsoftwareengineering.Accordingtoactualneeds,webuildtheimplementationsystembasedonopen-sourcesoftware.TheSystemisbasedonthemodelofthesystemarchitectureSOA,andDataintegrationwiththeXMLmiddleware.Keywords:Open-sourcesoftware、Softwareengineering、SOA、DataIntegration1引言在软件开发过程中,关键的问题是软件开发组织不能很好地定义和管理其软件生产过程,从而使一些好的开发方法和技术起不到所期望的作用。软件工程是利用工程学角度来研究并指导软件开发,利用严格的工程技术使软件开发形成科学的生产体系。软件工程的实施,可以使软件开发组织更好的利用先进的技术和方法,高效的开发出高质量的软件。在充分认识软件工程的重要性后,开发组织还要借助相应工具的支持,才能很好的完成软件工程的实施。通过有利的工具可以使软件工程的实施更加的高效,和规范。最终保证软件工程实施的成功。以往的软件工程的实施主要是使用商品化的工具。大量的开源软件的出现,为我们使用开源软件来实施软件工程提供了可能。本文以软件工程的实施作为研究的基础,旨在对开源软件的综合应用进行新的尝试,并解决相应的技术问题。2开源软件综述开源软件就是在开放源代码许可证的规范下发布的软件,以保障软件用户自由使用及接触源代码的权利,同时也保障了用户自行修改、复制以及再分发的权利。所有公布软件源代码的程序都可以称为开源软件。开源软件有很多特有的优点,主要包括:可以减少重复劳动,在现有工作基础上发展,更好的质量控制,减少维护费用,同时,开源软件比较安全,且具有较高的可靠性和稳定性。开源软件是一般商业软件的创新和补充,是另一种经营方式,它的出现为软件业注入了新的活力。所以,开源软件的发展有重要的现实意义,而对开源软件的综合应用得到了越来越多的重视。3支持软件工程实施的开源软件3.1可获得开源软件介绍软件工程的主要的环节包括:可行性分析,需求管理,软件设计,编码,测试,产品发布,缺陷管理,项目管理,版本控制,测试管理等方面的内容。针对这么多的方面,相应的开源资源是非常丰富的,下表显示了各个阶段可获得的部分开源软件:软件工程阶段可获得的开源软件需求管理Rth,Osrmt,Opencollective软件设计ArgoUML,StarUML编码Eclipse,Gcw缺陷管理Mantis,Bugzilla版本控制Svn,Cvs项目管理Ganttproject,Xplanner测试Junit,Jmeter,Cppunit3.2对现有开源软件的选型为了能充分利用现有资源,我们要对软件工程各个阶段的开源工具进行调研、选型。然后,分别对各个阶段的开源工具进行支撑度的分析,找到能够完成本阶段工作,同时能够与其他软件较好的协同工作的开源软件,通过测试、比较,找到一种可行的组合方案。利用选取的这些软件,构成我们实施平台的功能核心。下面是对所选取的几个主要的开源工具的简单介绍和特征分析:3.2.1需求管理工具Osrmt是一种正在积极开发中的开源需求管理工具。它使用数据库来保存数据,并且使用JDBC连接到数据库,用户可以根据需要来选择数据库。Osrmt使用Java编写,并且也提供了基于Web的接口,以便进行协作。该工具还支持多种方式的可跟踪性,使用者可以选择一个构件,并浏览依赖的对等项,或者可以简单地将一个构件拖动到另一个构件上,以创建依赖关系。在Osrmt中,构件可以是特性、需求、设计项目、源代码或者测试用例。3.2.2软件设计工具ArgoUML是一个交互式的、具有图形界面的软件设计环境,支持面向对象软件的设计、开发和编写文档等工作。ArgoUML完全基于Java,具有平台独立性,同时它采用开放的标准:XML、SVG和PGML。3.2.3软件编码与软件测试工具Eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。Eclipse附带了一个标准的插件集,包括Java开发工具。Eclipse除了可以当作Java的IDE来使用,还包括插件开发环境,这个组件主要针对希望扩展Eclipse的软件开发人员,因为它允许他们构建与Eclipse环境无缝集成的工具。由于Eclipse中的每样东西都是插件,对于给Eclipse提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。JUnit是一个开源的java单元测试框架。JUnit可以按Eclipse插件的形式,集成到IDE中,支持白盒测试的工作。该工具主要具有以下的特性:1.提供的API可以写出测试结果明确的可重用单元测试用例。2.提供了三种方式来显示测试结果,并可扩展。3.提供了单元测试用例成批运行的功能。4.超轻量级且使用简单。5.整个框架设计良好,易扩展。3.2.4缺陷跟踪与版本控制工具Mantis是基于PHP/MySQL/Web-based缺陷跟踪系统,是以Web操作的形式提供项目管理及缺陷跟踪服务。该工具主要具有以下的特性:1.权限设置灵活,并可定制Email通知。2.方便的缺陷关联功能,每个缺陷都可以链接到其他相关缺陷。3.有各种缺陷趋势图和柱状图,为项目状态分析提供依据,且可输出到Excel中分析。4.流程定制不如商业工具方便,可满足一般需求。Subversion是一种开放源码的全新版本控制系统,支持可在本地访问或通过网络访问的数据库和文件系统存储库。不但提供了常见的比较、修补、标记、提交、回复和分支功能性,Subversion还增加了追踪移动和删除的能力。此外,它支持非ASCII文本和二进制数据,这些优点使Subversion不仅对传统的编程任务非常有用,同时也适于Web开发和其他在传统方式下未采纳版本控制功能的领域。3.3开源软件部署方案图一开源软件的部署方案图一演示了已选取的开源软件的部署方案。其中,开发端提供的主要功能包括编码,测试,版本控制等内容,因此开发端所部署的软件主要是以Eclipse为核心的开发和测试工具,其中Eclipse是软件编码的IDE,而软件测试工具以插件的形式集成到了IDE中,同时,还包括SVN的客户端TortoiseSVN。服务器端主要是提供软件工程实施的过程中需要进行的设计和管理的功能。这些功能主要包括需求分析,软件设计,缺陷管理,配置管理,项目管理等内容,因此,服务器端主要部署的软件有Osrmt、Subversion、ArgoUML、Mantis、Ganttiprogram等。4基于开源软件的软件工程实施系统架构4.1实施平台的系统架构开源软件除了有前面介绍的很多优点以外,由于其自身的性质也决定了它有很多不可避免的问题。因为这些问题的存在,使得简单的将这些开源软件拼凑在一起,并不能很好的完成现实中的工作需要。主要的原因有以下这些:首先,自由获得开源软件是不收费的,所以,提供的界面和服务都不如商品化的软件友好,对于用户而言使用起来不是很方便,所以需要其他的软件的辅助来共同完成工作。此外,开源软件不是由一个统一的组织进行开发的,所以不同的软件之间没有整体性,难以进行协同工作。因此,在选择了较为优秀的开源软件之后,还要完成将多个开源软件整合的工作。最终,在这些开源软件的基础上,构建一个能为软件工程实施而服务的软件系统,使这些软件能完成商品化工具的相应功能。针对开源软件之间缺乏整体性,并且使用的数据结构各异,同时也为了方便日后相应软件的更换,在构建服务器端的软件系统的过程中,借鉴了面向服务体系结构(SOA)的思想,指导进行系统的架构。SOA是一种架构模型,它可以根据需求通过网络对松散耦合的粗粒度服务进行分布式部署、组合和使用。在SOA中,所有功能被定义为独立的服务,每个服务带有明确可调用的接口。服务之间互相通信,可以是简单的数据传递,也可以以定义好的顺序调用多个服务进行服务组合,形成业务流程。在实际的系统架构中,整个软件体系结构由5个层构成,分别是表示层、服务发布层、业务逻辑层、数据访问层和持久层。系统架构模型如图二所示:开发端EclipseJunitJmeter管理端服务器端ArgoUMLOsrmtMantisSvnTortoiseSVNGanttiprogram图二系统架构模型主要的功能层的定义如下:表示层:在形式上对各个服务的调用进行统一,使得它们能够在网络环境下运行,并在Web界面进行调用,通过Web页面为用户提供可视化交互途径。服务发布层:通过Webservice发布服务,将各个开源软件,按照相应的功能要求,划分为若干个模块,然后将各个模块封装成粗粒度,松散耦合的服务。针对用java语言开发的开源程序,使用JavaWebStart技术,将软件封装成可执行jar包并放置在服务器上,用户可以直接通过网络进行下载和调用。业务逻辑层:由选取的开源软件提供的软件工程实施的主要业务逻辑。数据访问层:对各个服务的数据进行异构化数据集成,完成服务间的松散耦合。4.2服务间的异构数据集成数据集成的核心任务是要将互相关联的异构数据源集成到一起,使用户能够以透明的方式访问这些数据源。目前实现异构数据集成的方法有很多种,其中基于中间件数据集成模式是目前较为理想的解决方案。在我们的系统中采用XML中间件实现异构数据源的集成。基于XML中间件的数据集成方法是一种典型的模式集成方法,它利用XML文档作为访问数据库中间层,将数据库数据转换为XML的数据源,然后基于XML数据源在客户端进行访问,可以屏蔽多数据源的异构性和分布性。数据访问层DB表示层WindowsWebXML服务发布层业务逻辑层ArgoUMLOsrmtMantisGanttiprogram图三XML中间件数据集成模型如图三所示,XML的中间件数据集成模型主要由中介器,包装器和统一接口组成,其中每个数据源对应一个包装器,中介器通过包装器和各个数据源交互。用户在全局数据模式的基础上向中介器发出查询请求。中介器处理用户请求,将其转换成各个数据源能够处理的子查询请求。包装器对特定数据源进行了封装,将其数据模型转换为系统所采用的通用模型,并将结果返回给中介器。结束语:基于开源软件的软件工程实施系统的设计实现,是对软件工程实施的有力支持,通过对开源软件的利用,使得软件工程的实施脱离了对商品化工具的依赖,同时,也实现了开源软件经济价值。本文创新在于通过SOA系统架构和异构数据集成,对开源软件的综合应用进行了新的有益尝试,并取得了一定的进展。参考文献:[1]向东,李冬梅,严代彪.基于SOA模式的综合业务管理系统架构设计[J].空军雷达学院学报,2007,21:190-193.[2]余永红.基于XML中间件实现异构数据源集成研究[J].湖南理工学院学报,2006,19:16-18.[3]陈跃国,王京春.数据集成综述[J].计算机科学,2004,31:48-51.
本文标题:【软件工程】基于开源软件的软件工程实施系统研究
链接地址:https://www.777doc.com/doc-166858 .html