目录
概述
- 强调程序员团队与业务专家之间的紧密协作、面对面沟通、频繁交付新的软件版本
- 一种以人为核心、迭代、循序渐进的开发方法
- 软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征(模块化,被测试,集成并可运行)
- 小项目分别完成,在此过程中软件一直处于可使用状态
流程
- 规划目标:通过和客户的沟通,对市场的了解,高层的战略目标而规划目标
- 产品规划:根据需求确认产品核心功能及其他功能
- 组织产品待办列表:产品部门根据产品规划制定相应的产品路线图
- 计划会:产品经理组织开展冲刺会议确认研发部门各自该做的事
- 产品迭代:做好每一代产品为期两周的研发
- 每日立会:每天早上进行十几分钟的站立会议,讨论昨天和今天的事情,进行信息共享
- 回顾会议:结束后总结做得好与不好的地方,吸取经验为下一代做铺垫
开发路线图
测试驱动开发
- 分析需求,形成用户故事(作为角色,需要xx功能,便于商业价值)
- 用户故事具有可测性
持续集成
- 频繁的集成,减少冲突,一天几十次
- 集成少,易定位
- 实现自动化的单元测试,功能测试
- 发送报告
重构
- 对重复的代码,进行不断的重构
- 每一次改变要尽可能小,用单元测试来保证重构是否引起冲突
- 不只是对实现代码进行重构,如果测试代码中有重复,也要对它进行重构
结对编程
- 分析、写测试、写实现代码或者重构
- 代码走读:命名规范,符合业务要求,逻辑有什么问题
- 一切皆可结对
小版本发布
- 尽量多的产品发布,一般以周、月为单位
- 客户每隔一段时间就会拿到发布的产品进行试用,而我们可以从客户那得到更多的反馈来改进产品
- 发布频繁,每一个版本新增的功能简单,不需要复杂的设计,简化了文档
- 简单设计,没有复杂的架构,所以客户有新的需求或者需求进行变动,也能很快的适应
较少的文档
- 代码就是文档,测试代码是大量的
- 代码简单,也就不需要的代码注释
以合作为中心,表现为代码共享
- 一切归团队
- 信息共享,代码共享
现场客户
- 客户在开发现场
自动化测试
- 为了减小人力或者重复劳动,所有的测试包括单元测试、功能测试或集成测试等都是自动化的
- 对QA要求高了
- 可调整计划:一次次迭代,小版本的发布,根据客户反馈随时作出相应的调整和变化
特点
- 以用户需求为核心,采用迭代、循序渐进的方法开发
- 适应性,根据需求变化而变化
- 发挥人的创造性能力
- 发挥团队配合能力
- 研发人员独立自主在技术上进行决策
- 特别重视项目团队中的信息交流
scrum框架
srum会议
- 冲刺会议(迭代会议)
- 每日站立会议
- 评审会议(需求评审(评审用户故事),产品结果评审等)
- 回顾会议(反思会)
scrum冲刺回顾会议
- 为了进行持续过程改进
- 做的好的地方,不好的地方,怎么改进
- 对客户需求的相应做出相对应的变化
scrum文档
- 产品订单:整个专案的概要文档 包括所需特性的粗略描述 每个人都可以编辑,以天为单位
- 冲刺订单:任务被分解为小时为单位 下一个需求信息 细化文档
- 燃尽图:显示未完成任务数 未完成的订单项数目
scrum站立会议
- 每天早上, 15-20分钟 昨天做了什么?你今天要做什么?你遇到了哪些困难?
- 站立会议让团队进行交流,彼此相互熟悉工作内容(信息共享)
scrum主要概念
- 需求
- sprint冲刺
- 版本