《持续集成软件质量改进和风险降低之道》

◆本书价值

软件的两大难题是1)确定软件需求,2)确定软件离目标的距离。通过软件的持续集成,让我们能直观的感受到软件开发在稳步向前推进,而且软件的质量是有一定保障的。

要成为一名专业的软件工程师,编程语言固然是初学者的必修课程。然而,持续集成也是初学者必须要了解的课程之一。软件开发的发展,必然是为了持续提升开发效率和开发质量。持续集成就是为此而生。

本书没有详细介绍持续集成的详细方法,而是以系统的视角介绍持续集成产生原因,以及每个检查背后面临的问题和解决之道。对团队采用持续集成具有很好的指导价值。

 

◆阅读收获

  • 了解CI的价值
  • 如何进行持续集成
  • 进行持续集成的注意点
  • CI系统包括哪些步骤和检查,每个步骤都有哪些工具

 

◆金句精选

1. 随着项目复杂度的增加,对集成和确保软件组件能一起工作提出了更高的要求,要早集成,常集成。

2. CI是一些基本实践,它不是软件开发中最炫的工作,但软件集成在今天复杂的项目中至关重要。

3. 构建是按一个按钮的事。

 

◆作者简介

[美]Paul M. Duvall、stephen M.Matyas、Andrew Glover

Paul M. Duvall和Andrew Glover分别是Stelligent公司的CTO和总裁。Stelligent是一家咨询公司,它们通过优化软件开发过程、帮助团队可靠地、快速的开发出更好的软件。

stephen M.Matyas是AutomateIT的副总裁。它通过自动花来改进软件开发。

 

◆精华解读

以下内容为《持续集成软件质量改进和风险降低之道》一书的精华解读,供广大书友们学习参考,欢迎分享,未经允许不可用做商业用途。

 

◆目录

一、CI的价值

二、引入持续集成的要求

三、持续集成的原则

四、构建过程的度量指标

五、CI系统的主要功能

 

◆正文

一、CI的价值

  • 1、降低风险

检测和修复变得更快

检测结果可以测量

  • 2、减少重复过程

从编译、数据库、测试、审查、部署、反馈等方面提高效率、减少工作量,从而降低研发费用

  • 3、持续生成可用的软件
  • 4、增强项目的可见性
  • 5、对产品建立起强大的信心

 

二、引入持续集成的要求

  • 1、经常提交代码,不要次提交许多代码,而是分解成小任务,快速编写、测试、提交、构建。
  • 使用SVN、GIT进行代码版本管理,使代码提交更容易
  • 2、不要提交无法构建的代码
  • 在提交代码前先执行私有构建。
  • 3、立即修复无法集成的构建
  • 4、编写自动化的开发者测试
  • 5、必须通过所有的测试和审查

 

三、持续集成的原则

1、自动化的构建脚本

比如使用ant创建自动化构建脚本。

2、单命令构建

通过一条命令或按钮,就能启动所有的构建过程。

3、构建脚本从IDE总分离

避免IDE和构建脚本产生耦合,所以要将构建脚本和IDE分离

4、集中存放软件资产

为了避免不同环境产生错误,将软件用到的各种资源集中存放到版本库中。

资源包括:

  •     组件,(源文件、库文件)
  •     第三方组建,jar、dll等
  •     配置文件
  •     初始化应用程序的数据文件
  •     构建脚本、构建工具、构建环境设置
  •     安装脚本

5、创建一致的目录结构

目录结构是构建的前提

6、让构建快速失败

尽早的发现构建问题,让最容易发现问题的构建放前面。

7、针对不同的环境构建

由于软件运行在不同的环境,比如开发环境、测试环境、客户环境,针对不同的环境要有不同的构建。可以利用配置文件,适配不同环境。

不同环境常见的不同有:日志级别、服务器配置、数据库连接、框架配置。

8、面对不同对象的构建

私有构建,开发者提交代码前,执行私有构建,防止代码提交后集成失败。

集成构建,使用独立的服务器对项目进行构建,一般每天晚上构建,或者用户触发。

发布构建,发布软件时执行的构建。

 

四、构建过程的度量指标

  • 编译时间以及它与过去编译时间的比较
  • 代码行
  • 审查的种类
  • 平均打包时间
  • 测试执行时间
  • 成功构建和失败构建的比例
  • 审查时间
  • 部署时间
  • 重建数据库的时间
  • 构建计算机的资源使用情况和性能

通过分析构建测量指标,优化构建过程。

  • 将自动化测试按类别分开,在不同的时间执行这些测试。
  • 基于审查工具的结果,重构测试。
  • 对复杂环境,使用模拟mock/桩stub对象的方式进行测试。
  • 将运行时间长的集成测试单独进行测试。
  • 并发执行测试。
  • 按构建类型(私有构建、集成构建、发布构建),执行不同的测试。

大项目的主要问题是保持构建的迅捷。可以有以下方法,定期执行运行时间长的过程、分解成子项目独立构建。

 

五、CI系统的主要功能

1、数据库集成

数据库SQL脚本集成,包括建库、建表、建数据。

创建数据库沙盒,使开发者间的数据库不会互相干扰。

2、持续测试

单元测试,独立的类级别测试。TestNG

组建测试,使用API进行测试。DbUnit

系统测试,将整个系统运行起来后,用于验证外部接口,如web页面、web服务等。JWebUnit

功能测试,以用户的视角测试应用程序,模仿用户的行为。工具有Selenium框架

3、持续审查

审查是静态的,测试是动态的。审查基于一组预先定义的规则分析代码。测试是执行软件的功能。它们都只是指出软件的问题。

  • 代码复杂度。圈复杂度(CCN,代码的分支路径)<10。长的方法,长的类。工具javaNCSS/PMD/Checkstyle
  • 设计审查,耦合度(传入耦合-Fan in,传出耦合-Fan out)反映架构问题,目标是高内聚低耦合。 不稳定性=传出耦合/(传出耦合-传入耦合)。工具JDepend
  • 编码规范。PMD/Checkstyle
  • 减少重复代码。 PMD-CPD/Simian
  • 测试覆盖率。计算方法:执行的代码行/总代码行。工具:Cobertura、EMMA、Clover

4、持续部署

使用干净的环境部署软件。

每次构建都打上一个标签(包括源码打上标签、构建动作打上标签),发现问题时,方便协调开发团队对问题的定位。

当构建失败或需要使用以前的版本时,能快速撤销部署,回滚到之前版本。

5、持续反馈

通过邮件、短信、IM等方式,及时发送构建报告。

 

◆结语

目前在中大型公司或项目,CI系统作为基础支持系统,集成到开发框架中。通过了解了CI系统背后的深层原因,了解软件的困境和解决方法。当面对低效率和低品质的软件开发,才能从容应对,提出解决之道。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值