持续集成概念

一. 软件开发生命周期(Software Development Life Cycle)主要包括以下几个阶段。

分析请求:分析用户请求,才能知道要开发什么样的软件。

设计 :针对用户请求,进行设计软件架构等。

执行:任务分派开始开发。

测试 : 测试软件的功能、代码等。

演变或者维护:发布和后期维护,如补丁更新等。


二. 软件开发中的瀑布开发模型,如下图:


从上图可以看到,开发阶段是按顺序来的。


瀑布模型的劣势:

  • 开发生命周期可能持续一年或者更长时间。
  • 存在着世大的不确定性
  • 不适合那些新特性更新频繁的项目。比如,电子商务项目
  • 持续集成的执行都是在开发阶段完成后,往往后面会存在很多问题,尤其针对于大项目而言。
  • 没有向后的可追溯性。
  • 在不同阶段称量进展是非常困难的,因为开发步骤相当于是线性的。后面肯定无法预估。


瀑布模型的优势:(试用于以下类型的项目)

  • 项目的初期布局有很好的文档和非常的固定(很少变动)
  • 有足够的金钱去维持管理团队,测试团队,开发团队,构建和释放团队,等。
  • 该技术是固定的,没有变动的。
  • 没有什么模糊的需求,也是最重要的。需求在需求分析阶段有之外,在其它任何阶段都没有。


三. 敏捷的救援

敏捷意味着快速、简单。 敏捷是开发的一种方法,它是通过组织内各团队合作来完成的。敏捷背后的原则是增量、快速、灵活的软件开发。提升了计划的灵活性。


1. 敏捷模型的12个原则

(1)通过早期有用的软件进行持续交付来达到客户满意度。

(2)适应不断变化的开发需求,甚至在软件开发后期。

(3)软件交付频繁(可能几周或者一个月内)

(4)在企业、人员、开者者之间密切的合作

(5)项目干系人应该是被信任的

(6)面对面的沟通方式是最好的交流方式

(7)正在开发软件是程序测量的标准

(8)可持续的发展,能够保持一个一致的步伐

(9)持续关注卓越的技术和良好的设计

(10)简单

(11)组织内部的团队成员

(12)适应不断变化的环境


2. 敏捷开发工作方式

在敏捷开发进程中,软件被分成多个功能或者模块,这些功能是在迭代中进行持续交付的。每次迭代持续三个礼拜,包括在不同区域同时工作的团队,比如计划,需求分析,设计,代码,单元测试和可接受性测试。

    这样的一个结果就是,没有任何人是空闲的。这和瀑布模型是完全不同的,瀑布模型是开发人员在非常忙的时候,测试人员和其它人员都比较空闲。 下图描述了敏捷开发模型。

从上图可以看出,模型像个圈一样,不停的进行迭代。相当于以前工作是串行的,现在是并行的一样。


3. 敏捷开发的优势

  • 功能可以被快速的开发和演示。
  • 资源请求更少。
  • 促进团队合作和交叉训练。
  • 适用于那些需求经常改变的项目。
  • 简约的文档
  • 更少或者没有计划。
  • 并行开发:功能开发可以并行来做。


四. CI的元素

1. 版本控制系统


2. 分支策略:GitFlow是另一种使用多个分支管理代码的方式。 如下图所示:


GitFlow完全的架构图如下 :

483cc922-1c02-4608-9f0d-b9cbc2f89c6a


3. CI 工具

此处使用的是jenkins。 还有其它如Build Forge, Bamboo 和 TeamCity.


4. 自动触发的构建


5. 代码覆盖率测试

代码覆盖的测试方式:

Type of coverage Description
Function The number of function called out of the total number of functions defined
Statement The number of statements in the program that are truly called out of the totoal number
Branches The number of branches of the control structures executed
Condition The number of Boolean sub-expressions that are being tested for a ture and false value
Line The number of lines of source code that are being tested out of the total number of lines present inside the code


代码覆盖率测试工具:

Language Tools
Java Atlassian Clover, Cobertura, JaCoCo
C#/.NET OpenCover, dotCover
C++ OpenCppCoverage,gcov
Python Coverage.py
Ruby SimpleCov


6. 静态代码质量分析


7. 自动化测试


8. 二进制库工具


9. 自动打包

posted @ 2018-06-25 17:35  大牛不会太遥远  阅读(7915)  评论(0编辑  收藏  举报