- 什么是敏捷
- 敏捷就是一种思想
- 敏捷开发是基于敏捷的一种实践
- 一些关于敏捷的名词
- retro
- tdd
- code review
- points
- 结对编程
- mvp
- 反馈
- Story Point:功能需求点
- VoC(客户的声音)
- Unit Test
- Functional Test(功能测试)
- show case
- small commit
- MVP:最小可行性产品
- 敏捷宣言
个体和互动 高于 流程和工具 工作的软件 高于 详尽的文档 客户合作 高于 合同谈判 响应变化 高于 遵循计划 - 敏捷开发12原则
- 1 我们最重要的目标,是通过持续不断地及早交付有价值的软件使客户满意。
- 2 欣然面对需求变化,即使在开发后期也一样。为了客户的竞争优势,敏捷过程掌控变化。
- 3 经常地交付可工作的软件,相隔几星期或一两个月,倾向于采取较短的周期。
- 4 业务人员和开发人员必须相互合作,项目中的每一天都不例外。
- 5 激发个体的斗志,以他们为核心搭建项目。提供所需的环境和支援,辅以信任,从而达成目标。
- 6 不论团队内外,传递信息效果最好和效率最高的方式是面对面的交谈。
- 7 可工作的软件是进度的首要度量标准。
- 8 敏捷过程倡导可持续开发。责任人、开发人员和用户要能够共同维持其步调稳定延续。
- 9 坚持不懈地追求技术卓越和良好设计,敏捷能力由此增强。
- 10 以简洁为本,它是极力减少不必要工作量的艺术。
- 11 最好的架构、需求和设计出自自组织团队。
- 12 团队定期地反思如何能提高成效,并依此调整自身的举止表现。(即retro)
【敏捷实践】
-
scrum
- scrum: Scrum是迭代式增量软件开发过程,通常用于敏捷软件开发。
- Product Owner: 负责维护产品订单的人,代表利益相关者的利益。
- scrum master: 为Scrum过程负责的人,确保scrum的正确使用并使得Scrum的收益最大化。一般不翻译
- team:开发团队,由负责自我管理开发产品的人组成的跨职能团队,团队拥有交付可用软件需要的各种技能。在一定的周期限制内,开发团队则会创建可用的、 并且可以随时推出的软件成品。
- scrum要素:
- sprint: 冲刺,一个固定的时间周期,(通常在2周到1个月之间),开发团队会在此期间内完成所承诺的一组订单项的开发。(迭代)
- user story: 用户故事 (task)
- points: 故事点塑,代表故事的大小,这里的大小不代表开发时间,只是故事的复杂度,工作量的大小。points是用来评估team的交付能力的
- backlog: 待办事项集合。可以预知的所有任务,包括功能性的和非功能性的所有任务
- sprint backlog: 每个迭代的开发列表
- release planning: 发版计划
-
scrum meeting
- stand up - 站会
- sprint planning meeting - 迭代计划会议,确认迭代要做的,以及优先级,识别task的风险和依赖,以及是否要去调研等等,以便做好迭代开发的前期准备
- showcase - 展示迭代完成的功能,目的是及时同需求方确认功能是否和需求吻合
- retrospective - 就是retro,总结前一个迭代好的和不好的,指定action和负责人,以便在之后去进行改进和保持。
-
scrum价值观
- 专注 - 把你的心思和能力都用到你承诺的工作上去
- 勇气 - 有勇气去面对各种挑战
- 公开 - 把项目中的一切开放给每个人看(包括进展、问题、阻碍)
- 承诺 – 愿意对目标做出承诺(作为一个自组织团队,在迭代开始的时候做出承诺,并在迭代中全力完成)
- 尊重– 每个人都有他独特的背景和经验。(团队是长期坐到一起,并且稳定的,有助于加深彼此的了解和沟通)
【敏捷实践】
- 极限编程
- TDD:测试驱动开发
- CI/CD:持续集成/持续部署
- refactoring:重构
- code review:代码审查
- pair programming
- 看板方法:
- 限制WIP
- 减小批量
- 可视化
- 管理度量队列
- 反馈:
- 产品的反馈:MVP
- 团队的反馈:Retro
- 项目的反馈:TDD CI/CD
- 个人的反馈:舒适区