(计算机软件与理论专业论文)持续集成在软件项目开发的应用研究.pdf_第1页
(计算机软件与理论专业论文)持续集成在软件项目开发的应用研究.pdf_第2页
(计算机软件与理论专业论文)持续集成在软件项目开发的应用研究.pdf_第3页
(计算机软件与理论专业论文)持续集成在软件项目开发的应用研究.pdf_第4页
(计算机软件与理论专业论文)持续集成在软件项目开发的应用研究.pdf_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

华南师范火学硕士学位论文 器、软件质量和测试工具等; ( 3 ) 为了使软件企业能够易于在中小型b s 架构项目中引入c i 系统,本文基于大量 的实践研究,给出了一套详细的可实施的c i 架构设计与实现方案,包括版本管 理的实现、自动化部署的实现、自动化测试的实现、质量管理的实现,并由实际 案例,对如何通过引入c i 系统来改善软件开发过程提供了实践规则,以最终达 到软件开发厂商与目标用户的双赢结果。 论文创新点是:研究、设计、开发一套较为完善的适用于中小型b s 架构项目开发 的持续集成系统,此c i 系统基于h u d s o n 构建,配置较简便、易于使用,以及提出了在 中小型b s 架构项目中实践c i 的管理与实施规则。 关键词:持续集成;c i ;自动化构建;自动化部署;自动化测试 i i 黼究l1 涨必2 4 3 矾 a p p iie dr e s e a r c ho fc o n tin u o u sin t e g r a tio n o n a b s t r a c t s o f t w a r ep r o j e c t sd e v elo p m e n t m a j o r :c o m p u t e rs o f t w a r ea n dt h e o r y n a m e :l i uq i a o l i n g s u p e r v i s o r :f a nb i n g b i n g a sn e t w o r ke f f e c t st h eo b j e c t i v eo fs o f t w a r ed e v e l o p m e n t ,b ss t r u c t u r eb e c o m e st h e m a i no p e r a t i o n a lm o d eo fs m a l la n dm e d i u ms o f t w a r ep r o j e c t b e c a u s eo ft h eo w nf e a t u r e so f b ss t r u c t u r e ,t h eu ia n db u s i n e s sl o g i co fa p p l i c a t i o ns y s t e mr u no nd i f f e r e n te n v i r o n m e n t r e s p e c t i v e l y c o n s i d e r i n gt h er e d u c t i o no fc o s t ,a p p l i c a t i o ns y s t e mc o m m o n l ya p p l i e st h e t h i r d p a r t yo p e ns o u r c ec o m p o n e n t s ,s u c ha ss t r u t s ,s p r i n g ,j b o s s ,i b a t i se t c ,w h i c hw i l l r e s u l ti np r o j e c ti n t e g r a t i o nm o r ed i f f i c u l t f o rs m a l la n dm e d i u ms i z e di tp r o j e c t t h ep r o j e c t s m a l li n v e s t m e n t ,s h o r td e v e l o p m e n tc y c l e ,d r a m a t i cc h a n g e si nd e m a n da r et h eb a s i cf e a t u r e s t h a td e t e r m i n et h ec o u t r o lo ft h ep r o j e c t sp r o g r e s s ,q u a l i t ya n dc o s tw i l lb eav e r yd i f f i c u l t t a s k t h r o u g ht h ea p p l i c a t i o no fc i ,i nt h ee a r l ys t a g e so ft h ep r o j e c ti ta l l o w su s e r st oa c t u a l l y u s et h et a r g e ts o f t w a r es y s t e m ,w h i c hg r e a t l ys h o r t st h ec y c l et oc o r r e c tt h ed e v i a t i o no ft h e d e m a n d ,t h u sr e d u c i n gc o s t s c is y s t e mi t s e l fi sas o f t w a r ee n g i n e e r i n gp r o j e c t ,w h i c hh a ss p e c i f i ck n o w l e d g e , t e c h n i c a l r e q u i r e m e n t sa n di m p l e m e n t a t i o np r o g r a m s f o rt h et e a mw i t h o u tr e l e v a n t e x p e r i e n c e ,i ti sm o r ed i f f i c u l tt oc o n s t r u c tac is y s t e mt h a nb u i l dac u s t o m e rt a r g e ts y s t e m c is y s t e mc o n f i g u r a t i o ni n c l u d e sv e r s i o nm a n a g e m e n t ,e r r o ra n dn e e d sc h a n g em a n a g e m e n t , b u i l dm a n a g e m e n t ,a u t o m a t e dt e s tm a n a g e m e n t ,a u t o m a t e dd e p l o y m e n t ,d e v e l o p m e n tp r o c e s s m a n a g e m e n t ,q u a l i t ym a n a g e m e n t t h e s em o d u l e sa r en o ts i m p l yp i l e du p ,b u ti tb e g i n sw i t h 1 1 1 a l le 仃o ra l l dn e e d sc h a n g em a n a g e m e n t ,觚dd 。c u m e m v e r s i 。ni n i t i a t e db yd o c u l l l e n ti n p u t d r i v e s 卸t 。m a t e db u i l d , t e s ta i l d d e p l 。y i n gt h es 。f l w a r ew h i c hu s e r sc a i l a c t u a l l yu s e ,a 1 1 d 士l r l a i i yl to u t p u t sa 、o 呔i n gt a 唱e ts y s t e m e a c hc 。m p 。n e n t i nc is y s t e mh a san 啪b e r0 f o p t i o n st oc h o o s e , w h i c h r e q u i r e st h ep r o j e c tr od e t e r m i n et h ea c t u a l s i t u a t i 。n ,a i l dr e q u i r e sc i s y s t e mc 。n s i m c t 。船h a v eaf a i r l y c 。m p l e t es y s t e ma r c h i t e c 眦a 1 1 ds 。r 啪d e v e l 。p m e n t t e c h n i q u e s , w h i l ei nt h ec u r r e n t j 。bm a r k e th u m a nr e s 。u r c e sm e e t i n g t h i sd 锄a n da r e 姗l e s s t h a l lt h en u m b e ro f t h es e n i o rs y s t e m s a n a l y s ta n da r c h i t e c t t h em a i nc o n t e n t sa r e ( 1 ) a n a l y s i so ft h ep r o b l e m s 。fs m a l l a n dm e d i u mb s s t m c t u r e p r 。j e c t s d e v e l o p m e n tp r o c e s s t h er e a s o n sf o rt h ef o r m a t i o n ,a n dt h e i d e a s & s o l u t i o n s : l z j c o m p 删1 v e 猢l y s i so ft h et e c h n o l o g ya n di n f r a s t r u c t u r ec o m p o n e n t s r e q u i r e d 1 n b u l l d i n gc is y s t e m s ,i n c l u d i n g v e r s i 。nm a n a g e m e n t ,c is e r v e r ,s 。r 、啪 q u a l i t ya n dt e s t i n gt o o l s ; 例 lom a l ( e i te a s yf o rs o f t w a r e c o m p a n i e st oa p p l yc is y s t e mi ns m a l la i l dm e d i u m b 7 s s t m c t u 聆p r o j e c t s ,b a s e donal o to fp r a c t i c a l r e s e a r c h ,t h ep a p e rg i v e sa d e t a l l e d d e s i g na n di m p l e m e n t a t i o np r o g r a m 。fc if r a m e w o r k ,i n c l u 岫t 1 1 e i m p l e m e n t a t i o no fv e r s i 。n m a n a g e m e n t ,t h e i m p l e m e n t a t i o no fa u t o m a t e d d e p l o y m e n t , t h ei m p l e m e n t a t i o no f a u t o m a t e dt e s t i n g ,a n dt h ei m p l e m e n t a t i o n 。f q u a l i t ym a n a g e m e n t f r o mt h er e a lc a s e ,t h ep a p e r p r o v i d e sp r a c t i c a lm l e so n h 。w t o 印p l yc is y s t e mt oi m p r o v et h es o f t w a r e d e v e l 叩m e n tp r o c e s s ,i n 。r d e rt o r e a c hw i n - w i nr e s u l t sb e t 、v e e ns o r w a r e d e v e l o p m e n tf i r m s 觚dt a r g e tu s e r s a n i c l e s1 衄。v 砒i 。1 1 i s :r e s e 砌,d e s i g n ,d e v e l 。pa m 。r ec 。m p l e t ec is y s t e ma p p l i c a b l e t 。s m a l l 锄dm e d i 啪b ss t r u c t u r ep r 岫s d e v e l 。p m e n t ,a n dt h es y s t e mi sb u i l tb a s e d 。n h u d s 。n ,s 吼p l e rt 。c 。n n g u r ea 1 1 de a s yt 0u s e ;r a i s et h e m a n a g e m e n ta 1 1 di m p l e m e n t a t i 。nm l e s o fc ip r a c t i c ei ns m a l la n dm e d i u m b ss t r u c t u r ep r o i e c t k e y w o r d s :c u o u s i n t e g r a t i 。n ;c i ;a u t 。m a t i cb u i l d ;a m o m a t i c d e p l 。y ;a u t 。m a t i c t e s t i v 持续集成在软件项目开发的应用研究 目录 摘要i a b s t r a c t ii i 第1 章绪论1 1 1课题研究背景1 1 1 1中小型b s 架构项目开发过程中面临的问题1 1 1 2 软件集成方式2 1 2课题的研究现状5 1 3 课题研究目的和意义6 1 3 1 国内持续集成的应用问题6 1 3 2 课题研究目的7 1 3 3 课题研究意义7 1 4 课题研究工作8 第2 章持续集成架构与相关技术9 2 1 持续集成架构9 2 2 版本管理1 1 2 - 3c i 服务器1 4 2 4 软件质量( 圈度、风格) 1 5 2 5 测试工具1 6 2 6 本章小结18 第3 章持续集成设计与实现方案19 3 1 持续集成设计方案1 9 3 1 1 持续集成方案19 3 1 2 持续集成方案的关键技术一2 2 3 2持续集成实现方案2 3 3 2 1 版本控制的实现一2 3 3 2 2 自动化项目编译与集成( h o o k ,b u i l d x m l ) 2 5 3 2 3 代码检查和自动测试的实现2 7 3 2 4 c i 反馈信息的集成、显示与处理的实现2 9 3 3 本章小结3 0 第4 章c i 系统的应用实践3 1 4 1 c i 实践的管理与实施规则3 1 4 1 1 c i 实践涉及的因素3l v 华南师范大学硕士学位论文 4 1 2c i 管理与实施规则3 1 4 2 c i 系统实践案例3 4 4 3本章小结3 7 第5 章总结和展望3 9 5 1 总结3 9 5 2工作展望3 9 参考文献4 1 致 射4 3 研究生期间参加的主要科研工作4 4 持续集成在软件项目开发的应用研究 1 1 课题研究背景 第1 章绪论 1 1 1 中小型b s 架构项目开发过程中面临的问题 软件开发是一个复杂的过程,一个完整的软件生命周期包含需求分析、概要设计、 详细设计、编码实现、软件测试、软件发布和维护等多个相互交织、相互影响的过程。 对于中国中小型b s 架构软件开发项目,其主要特点:投资少、时间短、用户需求变更 较大、项目计划不到位、软件测试不足、缺乏缺陷管理机制等,这些特点导致软件项目 要按照预定的进度、成本、质量顺利完成变得更为困难。结合对中国中小型软件企业现 状1 1 1 ,以下从开发进度、软件质量、成本、风险等方面1 2 1 深入分析中小型b s 架构项目 开发面临的问题。 ( 1 ) 项目进度不可控 在项目开始前缺乏充分的分析和论证,对目标项目没有足够认识和了解,由于无法 准确估计项目开发所需要的时间、每个阶段需要的时间乃至整个项目规模等重要项目数 据,难以制定出能切实起到指导作用和控制项目进度的计划表。在b s 架构项目开发中, 一般不同的开发者负责不同模块的开发,各模块往往在项目开发后期才进行集成,项目 管理者在项目集成前,只能通过咨询各开发成员的任务完成情况来估计项目进度,但现 实中大多时候开发成员会给出一种模棱两可的答案“快了,差不多了,基本完成了”, 即使开发成员说“已经完成”,项目管理者也是无法确定其完成的程度,因此在开发过 程中,也是很难准确掌握握项目的进度,从而无法对不合理的项目计划进行调整。当软 件开发过程中,往往会出现这样的情况:客户又提出了一些新的需求,或者某些功能不 符合客户的真正的需求,这些都进一步导致项目步入进度不可控状态。 ( 2 ) 软件缺陷缺乏管理 项目开发中需求分析、设计和编码等各个阶段都可能引入缺陷,由于中小型软件项 目规模较小、开发人员少,以及开发团队对软件测试不予重视,对各个阶段缺乏必要的 测试和审查工作,导致每个阶段都引入了相当多的缺陷。在项目开发后期,会发现大量 1 华南师范大学硕士学位论文 的缺陷,在缺陷修改过程中可能进一步引入新的缺陷,导致缺陷难以收敛,产品也难以 集成。 ( 3 ) 成本超出预算 由于中小型软件企业为了获得项目,在项目招投标是往往采用低价的方式竞标,如 能把握好需求,和控制好项目的风险,尚有利润空间。但如果项目需求经常变更,而开 发团队却没能快速响应变更和控制好项目进度,开发周期势必延长,从而导致项目成本 上升,超出预算,甚至超出项目合同造价。 ( 4 ) 开发风险较大 在中小型项目开发中,需求变更频繁,项目缺乏可见性,项目进度无法控制,软件 缺陷缺乏管理,这些都会大大增加了项目开发风险。项目开发周期延长,项目资金投入 需额外增加,会一起客户的强烈不满,使得项目的交付风险增大。软件质量在开发周期 无法保证,将大大增加软件的维护风险。 1 1 2 软件集成方式 在中小型软件项目开发中,如何更好适应变更频繁的需求,把握项目进度,提高软 件质量,降低项目成本成为项目开发的核心问题 3 1 。在项目开发中提高项目的可见性, 有利于改善或解决上述的中小型b s 架构项目开发所面临的问题。不同的集成方式会给 项目开发带来不同程度的可见性,对项目进度的把控、软件质量、项目成本和开发风险 也有不同的影响。以下将阐述不同饷软件集成方式,并分析各种集成方式对上述问题 的解决情况。 集成是将各部分源代码结合到一起,确定它们是否能作为一个整体工作。软件集成 方式不是一成不变,它随着软件工程理论和技术的发展向前演进,从瀑布模型的大爆炸 式集成模式,r u p 的递增式集成模式,m s f 的每同构建集成模式,发展到x p 的持续 集成模式。 1 1 2 1 瀑布模型的大爆炸式集成模式 瀑布模型是由温斯顿罗伊斯在1 9 7 0 年最初提出的,直到8 0 年代早期,它一直是唯 一被广泛采用的软件开发模型。瀑布模型是一个顺序软件开发过程,它被看作像瀑布一 样流动稳定向下通过了需求分析、设计、实现、集成、测试、安装和维护等阶段。瀑布 模型的核心思想是按工序将问题分解,将功能的设计和实现分开,便于分工协作,即采 2 持续集成在软件项目开发的应用研究 用结构化的分析与设计方法将逻辑实现和物理实现分开1 4 l 。不同程序员负责实现不同的 单元模块,在项目开发后期,将各个单元模块合并成一个大的系统。但是在现实中往往 出现这样的情况:各个小模块可以单独工作,把它们集成为一个大的系统则可能失败, 此时要定位错误是一件很困难的事,当找到错误的具体位置并尝试修复这个b u g 时,很 有可能又引入了新的b u g ,这使得集成成为软件项目中最棘手、最紧张的时刻。在大爆 炸式集成中,一次试运行成功的可能性不大,集成阶段花费的时间直接影响了项目的开 发周期,集成是否顺利直接关系到项目的风险,在这种集成模式下,集成的结果是不可 预测的,要想掌控项目的开发周期和项目的风险是几乎不可能的。 1 1 2 2 r u p 的递增式集成模式 r u p ( r a t i o n a lu n i f i e dp r o c e s s ) 是r a t i o n a l 软件公司创造的迭代软件开发过程框架, 是一种重量级过程( 也被称作厚方法学) ,比较适用于大型软件团队开发大型项目。为了 把握一个项目的时间尺度,r u p 把一个项目分为四个不同阶段:构思阶段、细化阶段、 构建阶段和移交阶段。r u p 采用迭代式开发,允许通过后续的细化对项目产生更好的理 解,把项目中最高风险的事项作为最高优先级的任务集中精力解决【5 i 。理想的情况下, 每一次迭代都以一个可执行的发布为结束,以减少项目风险。r u p 在每次迭代中都会进 行集成( 至少集成一次) ,它采用递增式的软件集成方式,代码编写和测试都细分为若干 部分分别进行,然后一次添加一部分,最终将所有部分合并为一个可用的整体。 与大爆炸式集成相比,递增式集成的优点有:比较容易查找到错误的位置,错误主 要出现在新的或变更的构件以及它们与集成构建的接口代码;构件测试更加充分全面, 构件一边开发一边集成,然后进行测试,与一次性集成相比,构件得到更多次执行。虽 然每次迭代中都会进行集成( 至少集成一次) ,但是每次迭代间隔时间相对较长,各部分 之间交互的缺陷需要等到集成才能发现,缺陷引入到缺陷发现间隔时间较长,难以快速 定位缺陷,不利于缺陷的解决。相对大爆炸式集成,项目开发中的项目可见性提高了, 但很有限,在一个迭代过程中,项目管理者还是依靠经验和各个成员开发进度来大概估 算项目整体进度,只有等到一个迭代结束代码进行集成时,才能获知项目的具体进度。 1 1 2 3 m s f 的每日构建集成模式 m s f ( m i c r o s o f ts o l u t i o nf r a m e w o r k ) 微软解决方案框架是基于微软公司及其合作伙 伴的开发经验所提出的一套软件工程模型、开发准则和应用指南1 6 l 。m s f 有两种模型: 团队模型描述了一个软件开发项目中各个成员的角色,包括产品经理、架构师、开发者、 华南师范大学硕士学位论文 测试员和实施员等等;管理模型描述了一个项目的不同阶段,包括构想、设计、构建、 确定、部署。 m s f 采用的集成方式是每日构建( d a i l yb u i l d ) ,每天对程序代码的最新版进行一次 构建,通过代码编译来确定项目所需的依赖包已存在,和通过尽可能的测试来表明最新 版代码没有引入缺陷。每日构建除了对增加的新功能点进行测试,还要对已经测试过的 功能点进行冒烟测试1 7 l 。冒烟测试这个名称的来历,大概是从电路板测试得来的,因为 当电路板做好以后,首先会加电测试,如果板子没有冒烟再进行其它测试,否则就必须 重新来过。类似的如果冒烟测试没有通过,那么这个版本代码也会返回给开发队伍进行 修正,测试人员测试的版本必须首先通过冒烟测试的考验。每日构建的优点在于:项目 进度可见性可以控制到1 - 2 天的细粒度,较容易看到进度的偏差;能及早发现并解决缺 陷,提高了软件质量;由于将大集成分解到每同构建的小集成,避免了传统大集成测试 时候出现严重问题的可能。但每日构建也存在一些风险和缺陷,主要表现在:给开发人 员带来太大压力,每天都在较紧张环境中工作;需要额外投入人力资源保证每日构建畅 顺;对开发负责人要求更高,需要将功能细化到1 2 天的有明确输出的功能点。 1 1 2 4 x p 的持续集成模式 x p ( e x t r e m ep r o g r a m m i n g ) 极限编程是一套软件开发方法学,旨在提高软件质量和快 速响应客户需求的变化。x p 是敏捷软件开发中最富有成效的几种方法学之一,它提倡 在较短的开发周期快速发布1 8 1 。x p 是一个轻量级、灵巧的软件开发方法,它的价值观 是沟通、简单、反馈、鼓励和尊重。基于以上五个抽象的价值,x p 提供了为项目决策 作指导更加具体化的原则,概括为:人性化、经济学理论、互利、充分利用原有经验、 持续改进、成员多样风格、反省、平滑、机遇、冗余、失败、质量、逐步转变、认同的 责任、总结。基于上述的价值观和原则,x p 支持者总结一系列实践,这些实践不是一 成不变,它与具体环境相关,当环境变化了,实践也可能跟着调整,但价值观不用改变。 x p 有1 3 个核心实践,包括坐在一起办公,完整团队,创建信息化的工作场所,精力充 沛地工作,结对编程,用户故事,每周开发循环,每季度开发循环,松弛计划,十分钟 构建,持续集成,测试驱动编程,增量式设计等。 持续集成是x p 的核心实践之一,与以往在所有开发完成后再控制软件品质的传统 实践不同,它是通过在持续过程中小增量控制软件品质,以提高软件质量,减少软件发 布时间i 们。在持续集成中,每天构建多次,每隔几小时甚至是几分钟就构建一次,构建 , 4 持续集成在软件项目开发的应用研究 过程都是自动化,并及时反馈。 持续集成与每日构建都采用“早集成、常集成”的策略,减少缺陷引入和缺陷发现 之间的时间,提高软件的质量。但它们有不同的地方: ( 1 )集成频率的差异。每日构建一般一天集成一次,持续集成一天集成多次,有可 能是几个小时集成一次,有可能是几分钟集成一次,决定于项目实际情况,持 续集成鼓励成员经常集成代码,以便更早、更容易发现缺陷并解决。 ( 2 )自动化测试的差异。持续集成将持续测试分为4 个自动执行的分组,即单元测 试、组件测试、系统测试和功能测试,通过一种有效的方式进行配置持续集成 系统,以使得单元测试可以在代码提交时执行,组件测试、系统测试和功能测 试可以定期进行。在每日构建中,代码每日b u i l d 之后,需要进行冒烟测试, 对系统的基本功能进行简单测试,强调功能的覆盖率,而不对功能的j 下确性进 行验证。如果冒烟测试没有通过,那么这个版本代码会返回给开发队伍进行修 正,测试人员测试的版本必须首先通过冒烟测试的考验。 ( 3 )集成反馈的差异。持续集成强调及时反馈,可以采用同步反馈或异步反馈的方 式,但共同点都是集成失败之后向开发人员提供快速的反馈。每日构建一般是 当天构建第二天反馈,缺陷的引入和发现的时间间隔要比持续集成的长。 持续集成使得开发团队在何时何地都能生成可部署的软件,每天多次的软件集成部 署大大增强项目的可见性,集成的自动化减少重复过程的劳动( 如代码编译、测试执行、 代码审查、软件部署以及信息反馈等) ,自动化测试提高软件质量。持续集成使得软件 的健康程度可以测量,缺陷的检测和修复变得更快,这些都可以缓解“很晚才发现缺陷”、 “低品质的软件”、“没有可部署的软件 等等风险,并对开发团队的软件产品建立起更 强大的信心。 1 2 课题的研究现状 1 9 9 6 年k e n tb e c k 在参与克莱斯勒综合报酬系统的薪水册项目( c h r y s l e r c o m p r e h e n s i v ec o m p e n s a t i o ns y s t e m ( c 3 ) p a y r o l lp r o j e c t ) - 开发时,提出了极限编程 ( e x t r e m ep r o g r a m m i n g ,即x p ) 。1 9 9 9 年1 0 月,他发行了一本关于极限编程方法学的书 极限编程解析:拥抱变化( e x t r e m ep r o g r a m m i n ge x p l a i n e d :e m b r a c ec h a n g e ) ,书中 描述了x p 的1 2 个实践,持续焦成( c o n t i n u o u si n t e g r a t i o n ,即c i ) 这个术语来自于其中 5 华南师范大学硕士学位论文 一个实践1 1 0 1 。 2 0 0 0 年,x p 倡导者之一的t h o u g h t w o r k s 首席科学家m a r t i nf o w l e r 和其同事 m a t t h e w f o e m r n e l 发布了他们关于c i 的第一篇文章持续集成) ) ( c o n t i n u o u si n t e g r a t i o n ) , 文章中基于t h o u g h t w o r k s 公司软件项目c i 实践,介绍了持续集成的优点和持续集成的 实践要点,其中包括集成要频繁、单一代码源、自动化构建脚本、自动化测试代码等。 他们还认为:对于任何切实可行的软件开发活动,持续集成都是基本的组成部分f 1 1 i 。这 篇文章的流行,使得很多项目开发团队认识到持续集成的价值,但由于文章没有给出具 体的实施方案,c i 真正应用于项目实践还是很少。 2 0 0 7 年,p a u lm d u v a l l 、s t e v em a t y a s 和a n d r e wg l o v e r 在c o n t i n u o u si n t e g r a t i o n : i m p r o v i n gs o f t w a r eq u a l i t ya n dr e d u c i n gr i s k ( 此书被评为第l8 届j o l t 震撼大奖图书, 2 0 0 8 年被译成中文版持续集成:软件质量改进和风险降低之道) 一书中,介绍持续 集成的基本原则和工具,还介绍了测试驱动、代码审查、数据库集成、信息反馈等实践 和工具。他们认为持续集成的“早集成、常集成 的策略可以增强项目可见性、降低项 目失败风险【1 2 l 。伴随着这本书的推广,更多的人认识到持续集成的价值和原则,更多 的项目团队把c i 真正应用到项目开发中。 最近几年,国内软件行业越来越关注持续集成,国内一些著名的技术论坛,例如 c s d n 、j a v a e y e 、c h i n a u n i x 、p h p c h i n a ,都在争相讨论持续集成这个热门话题。从2 0 0 5 年开始,t h o u g h t w o r k s 与c s d n 等已经举办了四届“敏捷中国 开发者大会( a g i l ec h i n a d e v e l o p e r sd a y ) ,向中国软件开发者传播业内领先的敏捷软件开发思想与实践,其中包 括持续集成的实践原则和工具。尽管国内已经有不少开发者已经意识到持续集成的价 值,但真正能把持续集成应用于项目中的却少之又少。 为了使更多的开发者重视和应用c i 实践,国际软件组织于2 0 0 6 年在芝加哥举办了 首次c i t c o n 会议( c o n t i n u o u si n t e g r a t i o na n dt e s t i n gc o n f e r e n c e ) ,此后每年都在几个不 同的国家举行几次,会议的主题是关于持续集成和测试的原则和应用,各国的持续集成 和测试领域的软件大师参与其讨论。 1 3 课题研究目的和意义 1 3 1 国内持续集成的应用问题 6 一 - _ _ _ _ _ _ - _ _ ,一 持续集成在软件项目开发的应用研究 最近几年,国内已经有不少项目开发团队开始意识到持续集成的价值,但真正能把 它应用于项目中的却寥寥可数,终究其原因,主要有以下几点: ( 1 ) 把持续集成引入到项目中存在一定风险并需要相应的成本支出,在没有全面 深入了解持续集成的情况下,大多数公司不敢也不愿意尝试。 ( 2 )国内缺乏实施持续集成技术与理论方面的相关人才。 ( 3 ) 业界缺乏对整个持续集成过程支持的有效实施方案。 在多个中小型b s 架构项目中实施了持续集成理念,并由此感受到了持续集成所带 来的及时软件交付、提高软件质量、降低开发风险等收益,但同时也遇到了实施持续集 成所需要的技术、管理与经营方面的知识需求,而这些需求却并非普通技术人员或管理 人员能够完全具备的,因此,如何建立一个合理的实施方案,使持续集成在实施过程中 减少对项目成员的技术、管理与经营方面的知识、经验的需要就具有了重要意义。 1 3 2 课题研究目的 课题研究主要有两个目的: ( 1 ) 研究、设计、开发一套持续集成系统,包括持续测试、持续审查、持续数据库 集成、持续部署、持续反馈等功能,希望能给中小型b s 架构项目开发中搭建 持续集成系统提供参考价值。 一 ( 2 ) 提出一套持续集成实践的管理与实施规则,希望能给中小型b s 架构项目开发 中实施持续集成提供指导。 1 3 3 课题研究意义 针对上述的中小型b s 架构项目所面临的问题,希望本课题研究能为上述问题的改 善或解决带来积极的意义: ( 1 ) 控制项目进度 持续集成可以自动化地持续部署软件,提高项目可见性。管理者可以随时随地通过 浏览器访问c i 服务器上可运行软件,获得软件功能的完成情况,通过查看持续集成反 馈报告,获知项目的发展趋势构建成功或失败、代码缺陷率、软件总体品质等项目 信息,从而做出有效的决策,制定合理的开发计划。在整个开发过程中,用户可以通过 浏览器访问c i 服务器上试运行软件,从而及时与开发者交流需求,避免了变更需求在 7 华南师范大学硕上学位论文 开发晚期才提出。 ( 2 ) 提高软件质量 持续集成包含了持续测试和持续审查,每一次构建,软件通过测试验证其行为,通 过审查验证代码是否符合编码标准和设计标准,从而提高软件的可维护性、可靠性、稳 定性、安全性和可读性等。 ( 3 ) 控制开发成本 持续集成可以减少项目开发中重复过程,例如代码编译、数据库集成、测试执行、 审查执行、部署和反馈等。这些重复过程自动化可以节省时间、费用和工作量。项目管 理者根据持续集成反馈的项目信息,有效地控制项目进度,合理安排人力资源,从而有 助于项目成本的控制。 ( 4 ) 降低项目风险 在持续集成环境中,创建一个可重复的构建过程,使用版本控制库中的所有软件资 产,随时构建可部署的软件,从而降低了“没有可部署软件的风险;代码每次变更时 都执行测试,这样就能够在软件开发生命周期中尽早发现缺陷,从而减低了“很晚才发 现缺陷 的风险。经常运行构建,随时了解项目的功能完成情况和健康状况,从而降低 了“缺少项目可见性 的风险;在每次变更时执行测试和审查,通过了解代码圈度、重 复情况、代码覆盖率和其他因素,去发现可能进入代码中的潜在缺陷,从而降低了“低 品质软件的风险1 1 3 1 。 1 4 课题研究工作 本文研究工作如下: ( 1 ) 研究、设计、开发一套持续集成系统,包括版本管l 里( s c ms e r v e r ) 研究,客户端 ( s c mc l i e n t ) 研究,c i 服务器研究,软件质量研究( 包括代码风格、圈度等) ,测 试工具研究:单元测试( 易) 、集成测试( 非常困难) 、代码覆盖率( 非常困难) ,相关 版本管理信息、代码质量检查信息、测试信息的集成、显示与处理的研究等等。 ( 2 ) 提出一套持续集成实践的管理与实施规则,包括对方案涉及的因素的研究,方案 实施规则的研究。 ( 3 ) 结合实际案例,对持续集成应用实践与测试进行研究。 8 一 持续集成在软件项目开发的应用研究 2 1 持续集成架构 第2 章持续集成架构与相关技术 持续集成是一种开发实践,即团队的成员经常集成他们的工作,通常每个成员每天 集成多次,每次集成通过自动化构建来验证,一次构建包括编译、审查、测试、打包和 部署等,它是将源代码放在一起,并验证软件可以作为一个一致的单元运行的过程,从 而尽快地检测出集成错误1 1 4 1 。持续集成的功能主要包括持续数据库集成、持续测试、持 续审查、持续部署、持续反馈等1 1 2 1 ,如图2 1 : q 二q _ q q :一日 持续数据 库集成 持续测试持续审查 持续部署 持续反馈 图2 - 1 持续集成 ( 1 ) 持续数据库集成 持续数据库集成是一个过程,数据库代码( d d l 、d m l 、配置文件等) 发生变更,可 以触发集成构建,重建数据库和测试数据。所有开发者应该使用本地数据沙盒,通过 s q l 脚本生成自己的数据副本。 ( 2 ) 持续测试 在c i 环境中,把测试分为自动化单元测试、自动化组件测试、自动化系统测试和 自动化功能测试。单元测试验证软件系统中所有小元素的行为,这些小元素通常是一个 类。单元测试可以在开发周期的早期创建并执行,是一种有效的排错方法。有时候,单 元测试有依赖关系,需要使用模拟对象( m o c k ) ,去替换真实的、复杂的对象。组件测试 ( 也称集成测试、子系统测试) 验证系统的各个部分,可能需要安装某些外部依赖关系, 如数据库、文件系统或网络终端等,这些测试验证组件的交互能否产生预期的组合行为。 系统测试运行整个软件系统,因此需要完整地安装系统,如s e r v l e t 容器和相关的数据, 这些测试验证外部的接口,如w e b 页面、w e b 服务以及g u i 能否像设计那样工作等。 华南师范大学硕士学位论文 功能测试( 也被称作验收测试) 是从用户角度测试应用程序,测试将模仿客户的行为。利 用s e l e n i u m ( 针对w r e b 应用程序) 和a b b o t ( 针对g u i 应用程序) - v 具f 1 5 1 ,让功能测试自动 化。 ( 3 ) 持续审查 审查软件和测试软件之间存在区别:测试是动态的,执行软件,目的是测试软件的 功能和性能。审查基于一组预先定义的规则分析代码。审查包括编码的语法标准、架构 分层遵守情况、代码重复率等。通过自动化审查,减少重复的代码,降低代码的复杂性, 判断代码的覆盖率,检查代码的风格,以及持续进行设计复查。 ( 4 ) 持续部署 持续部署能工作的软件,有助于提高项目可见性,持续部署主要有六大步骤:在版 本控制库中打上标签;提供干净的部署环境,可以减少已有软件资产的假定;直接从版 本控制库中取出软件资产,生成构建版本并为它提供标签,然后在目标机器上安装;确 保所有测试都执行成功;生成反馈报告有助于让大家了解构建版中包含的功能、缺陷和 需求;如果出现了问题,可以利用版本控制库的标签回滚到之前的构建版。 ( 5 ) 持续反馈 反馈的目的是发出通知,能够触发快速而准确的行动。在正确的时间,以正确的方 式,向正确的人发送正确的信息,可以减少问题或风险引入与解决之间的时间。持续反 馈的实现可以采用不同的机制,例如:电子邮件、手机短信彩信,声音,宽屏显示器等。 持续集成是一个循环过程,每个循环包含三部分:更新集成工作空间、集成构建和 反馈1 1 6 l 。图2 2 显示了持续集成基本架构: 1 0 通 留软件不同版本的数份拷贝,并适当编号。在现代软件开发中,一般通过版本配置工具 ( s c ms e r v e r ) 进行自动化的版本管理,包括软件资源的记录、保存、合并、权限控制 和追踪等功能。 目前,比较流行的版本控制工具有开源的s v n ( s u b v e r s i o n ) 、开源的c v s ( c o n c u r r e n t v e r s i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论