process 分为两种:
waterfall 的整个过程特点是:
agile 的流程特点是
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UUhZtGlE-1661611881439)(/Users/qinpeinuan/Library/Application Support/typora-user-images/image-20220820172125652.png)]](https://1000bd.com/contentImg/2023/10/27/024223338.png)





软件开发过程 SDLC 有多种不同的模型,其中包括 formal 风格的和 agile 风格的
formal 风格的 SDLC 有:
waterfall
incremental
v-model



敏捷风格的 SDLC 有:
agile 不是一种特定的模型,而是:

一种基于迭代开发的框架,其中需求和解决方案通过自组织的跨功能团队之间的协作演进
一个规制化的过程,鼓励经常检查和适应
一种鼓励团队合作、自我组织和责任的领导理念
一组工程最佳实践,旨在允许快速交付高质量的软件
将开发与客户需求和公司质量相结合的业务方法


scrum 是应用了 agile 思想的一种实现方式,agile 还可以体现在很多方面,但是 scrum 只是其中的一种方式; scrum 专注于在最短的时间内发布具有最高商业价值的产品

它使我们能够快速、反复地检查实际工作的软件(每两到四周)。
设置优先级,团队通过自组织的方式决定按照何种优先级发布最高价值产品
每 2-4 周,都可以看到实际的软件开发产品,然后决定是按照当前的样子发布还是在下一个 sprint 中继续提升


在普通的 waterfall 或者 formal 的 sdlc 过程中,通常会采用一个全局的管理者为各个功能分配人员和任务,但是 scrum 的团队中大家自发地讨论决定项目的优先级,大家各自的任务分配和交付速度
用看板等任务管理工具将任务按照优先级划分成多个不同的 sprint 然后用最快的速度完成 sprint 的任务再进行下一个 sprint
Requirements are captured as items in a list of product backlog
Scrum is one of the agile processes - the one most widely used, discussed and debated
Time frame is contained to a manageable size (weeks or months)


PO 要站在所有的角色的角度进行考虑,收集他们的需求,代表所有的 users ,负责填写 product backlog
Backlog 不是针对某一个 sprint 或者一段时间的注意事项,而是整个项目持续过程中都应该注意的问题或者是对项目的整体规划
在每个 sprint 开始的时候,都要开会 sprint planning meeting;要根据 product backlog 确定这个 sprint 的 sprint backlog;在整个 sprint 的执行过程中我们不会改变 sprint 中规定的内容,如果到期 sprint 中的内容没有完成就移到下一个 sprint 中,我们通常不会延长一个 sprint 的时长也不会在一个sprint 的过程中改变或者扩展计划
每个 sprint 持续时间 1-4 周,按照 sprint backlog 上的任务进行开发,每天展开 daily scrum meeting 做完事情通过 burndown 或者 burnup charts 来记录;每个 sprint 结束之后要通过 sprint review 来进行反思
www.mountaingoatsoftware.com 可以查到更多有关于 scrum roles ceremonies artifacts 的信息
- 定义整个产品的特点
- 决定产品内容和发布时间
- 对产品的效益负责
- 根据市场价值决定产品开发过程的优先级
- 在每次 iteration 中调整产品的定位和优先级
- 接受或者拒绝工作结果(在 sprint 结束的时候决定按照当前的方向继续开发还是改变开发的方向和设计)
- 对项目进行管理
- 负责制定Scrum的价值和实践
- 消除障碍(需要更好的设备或者是开发工具)
- 确保团队的功能和生产力
- 支持所有角色之间的紧密合作
- 保护团队不受外部干扰
- 是Scrum团队的成员之一也是积极参与者(active participant)
- 通常 6-9 名成员组成
- 构成人员涉及的能力是交叉的:程序员、测试人员、用户体验设计师、业务代表等。
- 参与者应该是全职的——有些例外
- 共同定位(物理或虚拟)——更有利于及时的沟通和协作
- 决定以何种方式完成当前的 sprint
- 根据 user story 和 product backlog 来指定当前的 sprint backlog
- 评估 sprint backlog 判断能在多长的时间内完成(这是一项比较困难的任务),是否超过了团队的能力负荷
- PO 制定的优先级来指导整个 sprint 任务
- 创建发布计划
- 顶层设计也需要在这个阶段完成
前半部分会议讨论关于 what 的问题,即确立当前 sprint 的目标,应该做什么
写下来当前的 sprint goal
从 backlog 中确认能够达成 goal 的 item
后半部分的会议讨论 how 的问题,即确立应该通过什么样的具体方式完成当前的 sprint
- 分解sprint backlog中的每个(特性)用户描述/大型用户描述,以获取所需的所有工作(描述点)
- 用户故事构成了sprint 计划的基础,用于跟踪、成本和管理进度
- 团队表述这段时间完成的工作(之前哪些工作没有做到位,如今我们填补了这个空白,进行了一些工作,目前他正常运行)——向投资人和利益相关者展示
- 通常采用演示新特性或底层架构的形式
- 是一种非正式的会议
- 2小时准备时间规则:大家只准备 2 个小时,不要过度准备
- 不适用 ppt
- 所有的团队成员参加
- 不设限制
- 定期看看什么是有效的,什么是无效的,下一个 sprint 中应该着重注意什么
- 通常 30 分钟
- 在每个 sprint 结束的时候进行
- 所有的团队人员参加
- 讨论:
- 要开始某些行动(比如应该增加对代码的规范操作,代码回顾等)
- 要停止某些行动(到目前为止表现出的一些不好的习惯:停止在每个 standup meeting 的时候讨论整个架构,因为这样很浪费时间且低效)
- 继续保持某些行为
- 每天 15 分钟左右
- 不是为了解决问题的,而是确认哪些是当前阻挡团队和开发进度的问题,明确 user story 中的疑问
- 帮助避免了不必要的其他会议
- 可以问三个关键问题:
- 昨天我做了什么
- 今天我要做什么
- 是什么阻碍了我完成工作
- User story 其实就是用户需求,是从端用户或者 customer 的角度来撰写的
- 用户故事将重心从书写需求转移到谈论需求;这样可以不用像出一版用户需求分析花费那么长的时间
- user story 简介的从 customer 或者 user 的角度描述一个用户想要的功能,每条user story使用一个具体的模板来写
- 描述点是一种度量单位,用于表达对全面实现产品待办事项列表项或任何其他工作所需的总体工作的估计;因为在现实的 scrum 开发中,我们往往很难估计一个任务具体需要的时间是多少
- 故事点可以帮助估算在一个sprint中可以完成多少工作
- 使用描述点进行估算时,将为每个条目分配一个值。 原始值不重要,重要的是相对值
- 一个 point 为 2 的 story 应该是一个 point 为1 的 story 工作量的两倍。它也应该是 point 为 3 的 story 的三分之二。
- 除了分配给每个 story 的 point 为 1,2,3 这种值之外,团队还可以分配100,200和300。或者100万,200万,300万。重要的是比率(相对值),而不是实际数字
- Scrum团队在Sprint计划期间将用户故事分解为低级用户故事(拆分用户故事)
- 用户故事用于SME和开发人员之间的对话。开发人员用任务(tasks)更新用户故事和时间估算
- 剩余的估计项目每天更新
- Sprint Backlog 很少改变
- sprint中的用户描述要么100%完成,要么没有完成(具有原子性)因为已经具体到一个最小的用户故事;如果没有完成那么就移动到下一个 sprint 中
- 燃尽图是剩余工作与时间的图形表示。
- 未完成的工作(或积压的用户故事)通常在纵轴上,时间在横轴上。
- 它被用来预测所有工作何时完成。
- 图中的例子:一开始规划了 10 天,但是在第 8 天的时候就完成了所有的任务
https://www.youtube.com/watch?v=9TycLR0TqFA


