没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
1页
乔梁:我们先追溯一下相关的历史。最开始的时候,记得是2009年,社区中有人总结了一个持续集成成熟度模型。然后,在这本书中提出了一个持续交付成熟度模型,被认为是1.0版。Jez根据近一年的实际应用,对其进行了一些修订,于是又有了1.2版。这个模型本身是普适的,并没有说特定的某个领域适用,所有的软件团队都可以拿过来做解读,用这把尺子量一量现在在哪儿,下一个目标在哪儿。也就是说,它是用于团队自我改进,而非用于团队间的横向评比。 但是,有人把它与CMMI做类比,用来衡量团队达到了几级。这其实是一种不当的用法,因为,这个模型是贡献给社区的一个参照,并未想过要成为一个用来衡量团队绩效的标准。我们在百度也只是用来衡量团队持续集成实践的成熟度,以便发现团队的下一个改进目标。 而且,它是对持续交付实践过程的一种度量,不是对业务结果的度量。所谓对过程的度量,就是指各维度的实践做得怎么样。但是这样的实践之后,对业务有什么样的贡献,是周期缩短了还是bug减少了,最终还是服务于这些业务目标。假如在每一个维度上的级别都很高,但业务的贡献度却没有那么高,我觉得那一定是有问题的。
资源推荐
资源详情
资源评论
Level
持续集成
(Continuous Integration
环境与部署
(Environments and
Deployments)
可视化与可追踪性
Visibility and Traceability
测试
Testing
数据管理
Data Management
配置管理
Configuration
Management
组织协调性
Organisational Alignment
Level 5
改进级
(
Optimizin
)
关注于过程改进
随着可以从主干上拿到已全
面集成且生产环境可部署的
构建版本。关注点是:随着
对代码质量信心不断提交,
能够进行更加频繁的提交。
1. 环境的准备是全自动化
的。
2. 已具备根据需求快速重建
完整环境和基础设施的能
力。
3. 端到端的业务度量项被监
控。
1. 演示和回顾被定期且以较
高频度进行。
2. 生产环境的回滚很少且完
全自动化。
3. 随着时间推移,变更的
backlog 变小。
1. 生产环境免疫系统可以探
测到部署失败,并可能自
动纠正。
1. 建立了数据库性能和部署
过程反馈机制,并用来做
持续改进。
1. 能够定期验证:变更管理
策略是否能够支撑有效的
协作、快速开发和可审计
的配置管理流程。
1. 提交变更的业务能力仅受
限于团队正在做什么。
2. 业务人员能够拿到基于产
品环境上的使用模式,以
及新功能 A/B 测试后的
丰富数据做决定。
Level 4
定量级
(
Quantitatively
managed
)
对过程进行端到端
的度量与控制。已
具备全面自动化部
署的能力。
构建数据度量项被收集,高
度可视化,并执行相应的改
进活动。
构建失败不会没人管。所有
团队成员至少每天提交一
次。
尽可能在最后时刻(即将发
布时)才拉发布分支。
1. 协调的部署管理。
2. 发布计划自动产生。
3. 对所有的失败进行根因分
析。
4. 回滚流程被脚本化,并被
管理起来。
5. 建立了环境和系统健康状
态指示牌,其中的数据被
监控和报告。
1. 对任何元素的变更和控制
都可以被端到端的追踪。
2. Product owner 能够选择
在什么时间点发布某个具
体功能。
3. 自动生产完整的 release
notes。
4. 能够从任何一次发布中得
到相应的 Release
Notes。
5. 对于工作流中的工作项,
其估算是基于事实,而不
是假设。
1. 发布中所有项(item)尽可
能使用自动化进行彻底的
测试。
2. 对非功能需求总是使用现
实的负载和使用方式完成
测试。
3. 通过测试先行的方式进行
单元测试、组件测试和验
收测试的全面自动化。
1. 每次部署时,数据库升级
或回滚都使用生产数据进
行自动化的测试。
2. 使用一个标准的版本控制
工具,所有配置项和工作
都能被标识和管理。
3. 对产品环境的任意变更都
是成功通过部署流水线完
成的。
1. 运维团队尽可能多地使用
部署流水线完成他们要做
的修改。
2. 在整个生命周期早期,团
队成员就能够识别和解决
问题。
3. 使用与业务成功相关的度
量项来衡量团队的成功。
Level 3
已定义级
在整个产品生命周
期中,已为增量自
动化制定了标准和
实践。
1. 每次提交都会触发构建和
各类测试。
2. 公共工具集中的脚本或工
件得到重用。
1. 开发和测试环境是全面自
动化且自服务的。
2. 已具备 “点击按钮即可
向任意环境进行部署”的
能力。
3. 为了完成自己的工作,每
个人都有相应权限访问并
操作相应的环境。
1. 能够通过一套公共的工具
集对产品的所有变更进行
追踪,包括对审批和测试
结果的追踪。
2. 在整个生命周期的初期,
错误(Errors)就能很容
易被关联到某个具体的变
更上。
1. 一旦需要,就将新的测试
添加到测试套件里。
2. 非功能测试被加到自动化
测试套件中。
3. 手工测试主要关注于探索
性测试。
1. 数据库变更作为部署流程
的一部分自动执行。
1. 外部库和依赖被管理起来
了。
2. 版本控制的使用规范被文
档化,而且所有团队成员
使用共同的工具。
3. 所有必要的工件都有标
识。
1. 所有职能型团队都被看做
是产品交付团队的成员,
并且有代表参与各种定期
的产品会议。
2. 运维团队为交付团队提交
咨询服务(consultative
services)。
Level 2
可重复级
(Repeatable)
根据直观感觉遵从
一定的流程。无事
先定义好的标准或
公共工具集。高度
依赖于个人能力。
1. 在开发人员的代码上进行
定期的自动化构建和单元
测试。
2. 利用自动化过程,能够从
源控制中重新生成任意一
个构建版本。
3. 开发人员的提交频率是不
定的。
1. 环境已被定义,并可自动
化地准备和控制。
2. 部署操作是手工和自动化
相结合才能完成。
1. 从需求到发布仅有有限的
追踪能力,通常需要涉及
多种信息的引用,有些信
息还需要手工收集。
2. 对错误的根因追踪需要时
间冗长。
3. 自动化测试和手工测试相
结合,并做为 Story 开发
过程中的工作来完成。
4. 在组件测试和验收测试级
别上,仍旧严重依赖于手
工测试。
5. 对“完成的定义”不包含
自动化测试的完成。
1. 对数据库的变更是利用与
应用程序版本相匹配的脚
本来完成的。
2. 完整环境的所有元素
(All elements)被清楚
定义。
3. 对源代码、测试、构建和
部署脚本、数据迁移和所
需的支持性文档等等进行
版本控制,但没有标准的
工具集。
1. 为了减少瓶颈,在开发周
期中更早地得到反馈,职
能型团队之间存在一些协
作。
2. Product owner 被识别,
且有决定权。
Level 1
退化级
(
Regressive
)
过程不可重复,发
布不频繁且不可
靠。
改进行为依赖于团
队成员临时性的努
力
1. 软件的构建过程是手工
的。
2. 构建过程冗长,而且其中
的主要步骤常常出错。
1. 手工准备环境,对冲突无
控制。
2. 手工部署软件。
1. 无法识别“谁,在什么时
间,做了什么,为什么要
这么做。”
2. 错误的根因不可追踪。
1. 开发之后才做手工测试。
2. 测试过程冗长,并且测试
后仍旧令人对产品质量底
气不足。
1. 数据迁移是手工完成的,
非常痛苦,而且很花时
间。
1. 有部分版本控制,通常是
根据个人意愿通过手工方
式进行。
2. 对工件没有正式化管理。
1. 在开发过程中,团队成员
以“筒仓”的方式工作,
等待下游完成工作。
2. 当产品被放到试运行环境
或生产环境时,没有知识
传递过程或活动。
批注 [1]: 持续集成是指以某种一
致节奏通过部署流水线来管理变更
流程
批注 [2]: 配置管理是指在将一个
可靠的产品发布到生产环境过程中
对所需的所有元素进行管理
资源评论
99fen
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功