软件集成的7重境界

来源:互联网 发布:java跟javascript 编辑:程序博客网 时间:2024/06/13 05:11
 每日集成和持续集成现在成为软件开发的最推荐实践,通过整理不同的做法来比较比较看,也许会有意思的:)

 

第1重,手工打开n个工程,复制m个文件,按照脑袋里的次序一个一个编译,花费了不少时

间,总算编译完成了。换个工程师来编译就出了好多错,问了很多问题,最后历经千难万险

总算编译成了,但是跑起来一看,发现漏了点什么,如是反复几次,最后总算编出了个勉强

可用的版本。

第2重,书写了编译说明书,照着说明,手工打开n个工程,复制m个文件,按照次序一个一

个编译。就算换个人来,也能照着编出来。

第3重,书写了编译脚本,能够做到一键编译

第4重,阶段编译, 每隔1周或几周,进行一次自动的大集成编译,并且配套进行测试,

第5重,每日集成,一天就执行一次,一般是在晚上做,也有nightly build的说法,整个过

程的时间可以长达12小时以上,所以可以安排界面自动化测试、代码检查等比较耗时的任务,可以有全面的每日测试集,运行时间可以达到1小时以上

第6重,持续集成,配套进行快速测试。每逢checkin做,或者每隔一定时间(比如半小时)检查有无代码checkin,如果有,就做。 一般的,当天的后续工作对持续集成的结果有依赖,所以对开发人员而言,需要等待持续集成的结果,这样持续集成全过程的时间就被大大限制了,其测试集是一个快速测试集,一般而言全过程时间控制在15分钟以内。

第7重,每日集成+持续集成,有全面的每日测试集,运行时间可以达到1小时以上。由于每日集成和持续集成解决的问题是有差异的,有少数组织两个都做。

对以上7重境界的评论如下。

CMMI组织起码达到第2重,敏捷团队起码达到第4重。

CMMI没有对持续集成和每日集成有具体要求,对集成提出了要求,要求并不高。持续集成和每日集成能够符合CMMI中配置管理和项目集成过程域的多个实践。

如何最大程度的避免因为人工所带来的错误,那就是把人完成的工作尽量让机器完成,第2重就是通过少量的自动化脚本来减少这种重复性工作中人为犯错的可能性。

持续集成应该也会受到所采用的语言和相关技术及所开发产品类型的影响,可能会做不到最后那几重, 而且不是所有的地方都有必要来追求最高境界的。