鉴定说明书认股鉴定表合同书调查报告市场调查自查报告调查表案例

最新文档

WiMAX无线通讯系统软体与工具开发--子计画八


  文件类型:PDF/Adobe Acrobat   文件大小:字节

更多搜索:WiMAX  无线  通讯  系统  软体  工具  开发  --  
1
WiMAX无线通讯系统软体与工具开发--子计画八:
通讯软体发展之持续整合系统研究成果报告
执 期限 : 民国 95 8月1日 至 民国 96 7月30日
主持人 : 郑有进 国 台 科技大学资讯工程系副教授
计画 与人员: 陈建村,欧伯浩
国 台 科技大学资讯工程系研究生
一,前言
持续整合(continuous integration)是一
种透过自动化的方式,持续整合软体系统
中各个模组与元件,以保持系统稳定 与
品质的软体开发最佳实务作法.该做法已
被广泛证实可有效改善软体开发 程并增
进软体品质[McConnell96][Beck99],并已
成为各种软体开发程序中极为重要且 可
或缺的一环.然而,由於持续整合需要协
调 同开发人员或团队,花费相当多的人
与时间,因此该实务作法虽然可大幅改
善软体品质但似乎鲜少真正被 实
[Fowler][Hightower02];其中主要原因之一
即为软体开发团队缺少自动化持续整合工
具.
有鉴於此,我们在国科会自由软体计划
的赞助之下在93 开发 「JCIS:一个
支援Java应用程式的开放原始码持续整
合系统」 [JCIS04].本计划之目的在於延
续该计画,以增加其对於通讯软体专案的
支援.JCIS是一个以Java技术开发的持续
整合系统,可执 如编译,测试,产生
函式库文件与静态程式码分析等工作,并
产生多种报表以提供专案开发团队 解专
案的品质与进 .在第一版的JCIS中,我
们主要支援以Java语言开发的软体专案
之持续整合;这一点对於许多以C/C++开
发的WiMAX通讯软体而言, 显得
足.因此,在此计画中,我们首先将扩充
JCIS的建构能 ,以支援C/C++语言所开
发的WiMAX通讯软体专案.由於可扩充
性为JCIS在设计之初的主要目标之ㄧ,因
此扩充对於其他语言的支援将可在现有的
系统架构下持续进 .
二,研究目的
本计划之研究目的在於开发一个可支
援WiMAX通讯软体持续整合的系统.该
系统符合下 主要的功能与非功能需求:
(1) 支援C/C++语言专案之自动化持续整
合.
(2) 实做支援C/C++专案的建构工具,包
含编译,测试与专案程式码分析.
(3) 支援专案角色权限设定.
(4) 支援跨平台执 的能 (Windows
2000/XP与Linux作业系统).
(5) 支援以电子邮件通知建构结果.
(6) 支援多个建构专案管 .
(7) 提供Web管 介面.
三,研究方法
JCIS提供 可扩充的架构可以让其他人
在这之上开发新功能,其扩充的方式就是
透过开发新的Builder 达成.在本计划中
我们要开发可以支援C/C++语言的建构工
具, 如CPPCompiler(支援C/C++编译
功能)与CPPUnit(支援C/C++单元测试)
等.图1为新增Builder的 程图,在本小
节中我们将 明每一个 程步骤的内容.
2
图 1 制作Builder 程图
3.1 实作IBuilder介面
考图2,要建 自己的Builder必须
继承IBuilder介面,在这 我们以建 一
个新的AntJUnitBuilder为 子, 明如
何建 Builder.该Builder会呼叫ANT
执 单元测试.
为 简化Builder 的撰写,我们提供
AbstractBuilder物件,由该物件实作
干共同的程式码.因此,新的Builder只需
继承自AbstractBuilder并override几个
method即可.我们在
AbstractBuilder.execute()套用 Template
Method [GOF95],所以execute()会另外呼
叫 个Abstract Method: run()与
setPreferenceStore().这 个Abstract
Method就是Hook Method,我们必须在继
承AbstractBuilder的子 别去override它
们.图3是AntJUnitBuilder实作run ()的
程式码内容,其主要功能在以执 外部程
式的方式呼叫Ant.
至於setPreferenceStore()的功用则是
要去设定Builder所需的特别资 , 如产
生Report与Derived Resource的位置.图
4是AntJUnitBuilder在setPreferenceStore()
的实作内容.93-101 是建 一个新的
PreferenceStore的实体,之后再从系统内
取得设定资 ,以Map形式显示.这些资
会以XML存放在系统内.103-111 则
是为 设定此Builder所需的特别资 ,在
此我们设定 Report的放置目 (103
),Report要被外界 取的url 径(106
),还有这个Builder要纪 Report的专
属Newshawk 别名称(109 ).Newshwak
在是格式化Builder内输出讯息的物件.
IBuilder
+setWorkspaceRoot( : IWorkspaceRoot )
+getPreferenceStore() : IPreferenceStore
+getReport() : IReport
+getName() : Stri ng
+ex ec ute( )
Abst r a ct Bui l der
-preferenceStore : IPreferenceStore
-IReport : IReport
+setPreferenceStore()
+ex ec ute( )
+r un( )
AntJUnitBuilder
+setPref erenceStore()
+getName() : String
+r un( )
图 2 AntJUnitBuilder的继承关系
3.2 注册Builder
我们建 好新的Builder后,要在
Builder Factory注册,才可以使用.Builder
Factory会 考一个设定档
(workspace.xml),以传回 同的Builder
实体.每个Workspace 有这样一个设定
档,存放於Workspace内的_metadata目
中workspace.xml.如图5所示,第19-20
就是我们新增的AntJUintBuilder的设
定,并在Builder Tag内的className属性
设定完整的 别名称.
3
图 3 run()程式 表
图 4 setPreferenceStore程式 表
图 5 Builder Factory 设定档内容
3.3 建 Builder环境
除 Builder Factory要做注册的设定
外,Builder本身也有设定档,可以提供
Builder专属的资 设定.在Workspace的
_metadata目 内还有一个builder.xml,就
是记 所有builder的专属 设定.其格
式如图6所示,每个builder所用的专属
设定要以[builder name].[property name]
这样的形式当成entry tag写入到
builder.xml.
图 6 Builder 设定档内容
3.4 布署Builder
最后一个步骤就是将撰写完成的Builder
部署到JCIS中.部署方式非常简单,只需
要将Builder复制到安装JCIS目 中的
Libs子目 即可,请 考图7.
部署完毕之后,重新启动JCIS,进入
系统Builder管 画面,就可以看到新的
AntJUnitBuilder已经放在最下面,如图8
所示.
图 7 Builder Factory 设定档内容
图 8 系统显示所有可使用的Builder
三,结果与讨
JCIS目前已被实际使用於「WiMAX
无线通讯系统软体与工具开发」总计划
4
中,其中包含 个WiMAX通讯软体子
计画.在此我们以子计画三「WiMAX实
体层通道编码软体模拟平台」为 明
WiMAX通讯软体开发应用JCIS的方法与
成果.
图9为子计画三在JCIS中的Project
Summery(专案概观)画面;其中包含
专案基本资 (Project Description),原始
码控制性统资讯(Source Control Info),专
案相依资讯(References Projects)以及自
动建构排程设定(Schedule).
在JCI的整合 程中可执 多个建构
工作,我们将一个建构工作称之为
Builder, 同专案将可依据其需要使用
同的Builder.图10显示子计画三所采用
的建构工具设定画面,其中包含 statsvn
(可以分析与统计source code repository
动情形),GCCCompiler (GCC 编译
器),RATS(C++原始码静态分析工具),
CppUnit(C++单元测试程式).
当建构活动执 完毕之后,JCIS会产
生一个执 成果报表;图11为子计画三之
持续整合结果报表.该报表记载专案中所
使用之Builder的执 时间,报表,建构结
果.图12显示其中一项整合活动-编译
C++程式-之详细报表.由图12我们可以
发现该专案程式(通常是由学生所撰写的
程式)宣告 如y,j等变 ,但却未使
用.此资讯可提供给专案主持人( 师)
在code review 阶段,作为审视程式码的
一个检查方向.
图9:子计画三「WiMAX实体层通道编
码软体模拟平台」之专案概观画面
图 10:子计画三「WiMAX实体层通道编
码软体模拟平台」所采用的建构工具画面
图 11:子计画三「WiMAX实体层通道编
码软体模拟平台」持续整合结果报表
图 12:WiMAX通讯软体之C++ 程式编译
结果报表
五,相关研究
我们检视 四个知名的开放原始码持
续整合系统,分别为CruiseControl
[CruiseControl],Anthill [Anthill],Gump
[Gump],Continuum [Continuum],并与
JCIS做比较分析,其结果显示於表1.以
下我们 明表1中各项功能特色的意义:
分配测试至 同平台执 :专案内的测
试案 ,可自动传送到远端 质平台上
进 测试.
专案相依性:当A专案 考到B专案
时,A专案进 整合之前,自动先整合
B专案,如此A专案才可 考到最新
版本的B专案.
程式库相依性:当专案 考已经包装好
的程式库档案(如jar档),每当进 整
合时,会使用此程式库的功能进 整
合.
5
同时建构多个专案:当持续整合系统内
有多个专案时,同时间可以执 多个专
案的整合. 未支援此功能,代表虽然
系统可以管 多个专案,但同时间只能
有一个专案执 整合.
提供管 专案的Web介面:可以在Web
介面上进 建 ,维护与删除专案资
.
产生程式 动统计:可以在系统上直接
透过整合的介面察看程式经过时间
动的统计报告.
产生模组相依性资 :可以在系统上直
接透过整合的介面察看程式模组的相
依性分析报告.
检查程式开发规范:可以在系统上直接
透过整合的介面察看程式码规范检查
的分析报告.
专案 与人员分配 同权限的角色:可
以提供 同专案有 同的成员个别扮
演 同的角色, 进 专案权限的管
.
使用建构工具:持续整合系统使用的外
部建构工具,大部分 可以用Ant执
.而JCIS除 可以用Ant,也自订
扩充介面,可以容纳其他非Ant的建
构工具.
,计画成果自评
在本计划中我们成功设计并实作一
个支援WiMAX通讯软体的持续整合系
统.该系统可以支援以C/C++或Java语言
所撰写的软体专案.我们达成 所有在原
本计画书中所规划的目标.目前该软体已
经实际使用於本校软体中心所提出的
WiMAX通讯软体整合型计划中.我们相
信本软体对於产业界或是国科会整合型软
体计划也有实际的应用价值.我们正持续
扩充本软体的功能,以 可支援大 软体
专案的持续整合活动.此外,我们也著手
整 本计划的成果并准备发表期刊 文.
6
考文献
[Anthill] Anthill,
http://www.urbancode.com/projects/anthill/d
efault.jsp.
[Beck99] K. Beck, Extreme Programming
Explained, Addison-Wesley, 1999.
[CruiseControl] CruiseControl,
http://cruisecontrol.sourceforge.net/.
[Continuum] Apache Continuum,
http://maven.apache.org/continuum/.
[Fowler] M. Fowler, Continuous Integration,
http://www.martinfowler.com.
[Gump] Apache Gump,
http://gump.apache.org/.
[Hightower02] R. Hightower and N.
Lesiecki, Java Tools for eXtreme
Programming: Mastering Open Source
Tools including Ant, JUnit, and Cactus,
Wiley, 2002.
[JCIS04] 郑有进,一个支援Java应用程式
的开放原始码持续整合系统, 国科会自由
软体专案研究计划,计画编号 NSC
93-2218-E-027-038.
[McConnell96] S. McConnell, Rapid
Development, Microsoft Press, 1996.
表1 现存持续整合系统之功能比较
功能/特色 CruiseControl Anthill Gump Continuum JCIS
开放原始码 是 是 是 是 是
费用 免费 免费 免费 免费 免费
开发语言 Java Java Python Java Java
分配测试至
同平台执
专案相依性
程式库相依性
同时建构多个
专案
提供管 专案
的Web介面
产生程式 动
统计
产生模组相依
性资
检查程式开发
规范
专案 与人员
分配 同权限
的角色
无 无 无 有
(但 完整)

使用建构工具 Ant,Maven, NAnt Ant Ant Ant, Maven Ant与自
定义
使用电子邮件
通知建构结果

·上一篇:*connectedthinking
·下一篇:全球WiMAX强制性测试验证研讨会
下载链接
相关下载
最热搜索
<%=Components.Fun.GetTemplate(Components.Template.TemplateType.Foot)%>