持续交付管理
持续集成:个体不断向主干分支快速迭代的过程,强调开发的及时性,以保障局部和整体开发进度的协调,而不是像瀑布模型那样集中提交,而存在大量冲突的情形;
持续交付:将持续集成的二进制包不断进行测试,优化的过程,使应用保证一种随时可交付使用的状态.
持续部署:构建产品可快速安全交付用户使用的方式,强调快速生产化,包含基础设施的部署能力.
业务治理
持续交付的实现不仅仅是一种新的交付方法论,它更是对于企业的业务治理.
1 快速交付可以支持收入的持续增长;
2 业务风险管理,提前控制风险;
通过明确持续交付内容,可以把握软件的整体和部分,理解整个业务流程,便于规划和管理企业软件;
配置发布成熟度模型:
业务治理目标
- 缩短生产周期,快速交付,提前盈利;
- 减少缺陷,提高效率,降低修复成本;
- 提高软件交付生命周期的可预测性;
- 具有采用和遵守任何必要的法律规章的能力;
- 具备发现和管理软件交付风险的能力;
- 通过更好的风险管理和交付更少缺陷的软件来减少成本;
成熟度模型使用:
- 确认公司配置发布阶段;
- 选择适合公司的阶段领域进行改造,定义验收条件;
- 创建实施计划;
- 验证是否达到预期,相关干系人进行实施讨论;
- 不断重复,积累知识,然后在内部推广;
项目生命周期
团队发展阶段:
创建期,风暴期,规范期,运转期,调整/重组期;
同样,项目也可以划分为以下阶段:
识别阶段,启动阶段,初始阶段,开发/部署阶段,运维阶段
- 识别阶段
1 收集利益干系人列表
2 进行软件前期业务分析
3 收集产品需求
4 排列需求优先级
- 启动阶段
1 生成商务分析报告,评估项目价值;
2 列示概括性的功能和非功能需求列表(容量,可用性,服务连续性,安全性等要求),可以满足工作量评估和做项目计划即可;
3 发布计划,包括了工作量规划,项目相关成本;需要评估需求的相对大小,工作量,风险和人力资源计划;
4 测试策略
5 发布策略
6 架构评估报告,使用的平台和框架
7 风险和问题列表
8 开发生命周期的描述
9 执行上述内容的计划描述
实际该阶段需要干系人对产出物达成共识,可以对于相应的问题域有较详尽的认识且是共识,这个是必须要记录的,也是该阶段的关键;
整个项目最长周期最好以三到六个月为怡.
- 初始阶段
1 确保团队获取到对应的软硬件
2 确保基础设施就绪
3 权限分发
4 创建好版本控制库
5 角色,职责,工作时间和会议时间达成共识
6 为第一周做准备,并设置好该周目标
7 创建一个简单的测试环境和测试数据
8 稍微详细的研究下预定系统设计:探索可行性
9 做一些调研,识别和缓解任何分析,开发和测试风险
10 建立需求列表
11 初始化项目,完成项目结构,构建脚本,一些测试,可以持续集成
- 开发/部署阶段
核心流程
1 代码随时处于可工作状态,每次提交代码都会触发自动化测试套件(单元测试,组件测试,端到端验收测试)
2 每个迭代都可以部署到类生产环境,并向用户演示
3 迭代长度不超过两周
迭代开发价值
1 功能被划分优先级,将核心功能快速成型,
2 快速和用户沟通产品进度,得到产品反馈
3 定期演示,进行产品进度跟踪
4 保持软件随时可工作,加强团队纪律性和兴奋度
5 可以有效验证产品,可以部署到生产环境.
- 运维阶段
识别新功能,排定优先级,分析,开发,测试和发布,周而复始
整个项目的生命周期代表软件的成长阶段,针对不同的阶段有效的安排对应的事情,可以加速软件成型,快速创造价值,磨练各个团队.一个好的项目管理是企业文化的体现,这种环境下,企业的效益和员工的成长都是息息相关的.
风险管理流程
影响软件交付进度的所有因素都是软件的风险.对于它们的管理,可以加强软件的健壮性和快速交付能力.
风险管理模型:影响*可能性;
比如如果软件推迟一天交付,公司要损失10万,而推迟的可能性是50%,那么风险的影响的就是5万.
实际中根据项目生命周期的阶段来进行风险管理是具体而有效的,不断降低软件开发中的不可控因素,是保障软件成功的关键,将所有风险影响因素变为可测量项,并进行跟踪治理,就可以获得一个健康的产品.
风险管理内容:
1 如何跟踪项目进度
2 如何防止缺陷
3 如何发现缺陷
4 如何知道一个需求已完成;
5 如何管理环境
6 如何管理配置项,如测试用例,部署脚本,环境和应用程序配置,数据库脚本和外部库
7 演示频率
8 回顾会议频率
9 运行自动化测试频率
10 如何部署软件
11 如何构建软件
12 可行且可接受的发布计划
13 风险问题列表及时更新
常见软件风险:
1 不频繁或充满缺陷的部署
2 较差的应用程序质量
3 缺乏管理的持续集成工作流程
4 较差的配置管理