scrum 敏捷软件开发方法

精益思想

   

精益思想是精益生产的核心思想,它包括精益生产、精益管理、精益设计和精益供应等一系列思想,其核心是以较少的人力、较少的设备、在较短的时间和较小的场地内创造出尽可能多的价值;同时也越来越接近客户,提供给他们确实需要的东西。

   

精益思想要求企业找到最佳的方法确立提供给顾客的价值,明确每一项产品的价值流,使产品在从最初的概念到到达顾客的过程中流动顺畅,让顾客成为生产的拉动者,在生产管理中精益求精、尽善尽美。价值观、价值流、流动、拉动和尽善尽美的概念进一步发展成为应用于产品开发、制造、采购和服务顾客各个方面的精益方法。可以概括为:

   

1、价值观

精益思想认为企业产品(服务)的价值只能由最终用户来确定,价值也只有满足特定用户需求才有存在的意义。精益思想重新定义了价值观与现代企业原则,它同传统的制造思想,即主观高效率地大量制造既定产品向用户推销,是完全对立的。

   

2、价值流

价值流是指从原材料到成品赋予价值的全部活动。识别价值流是实行精益思想的起步点,并按照最终用户的立场寻求全过程的整体最佳。精益思想的企业价值创造过程包括:从概念到投产的设计过程;从定货到送货的信息过程;从原材料到产品的转换过程;全生命周期的支持和服务过程。

   

3、流动

精益思想要求创造价值的各个活动(步骤)流动起来,强调的是""。传统观念是"分工和大量才能高效率",但是精益思想却认为成批、大批量生产经常意味着等待和停滞。精益将所有的停滞作为企业的浪费。

精益思想号召"所有的人都必须和部门化的、批量生产的思想做斗争,因为如果产品按照从原材料到成品的过程连续生产的话,工作几乎总能完成得更为精确有效"

   

4、拉动

"拉动"的本质含义是让用户按需要拉动生产,而不是把用户不太想要的产品强行推给用户。拉动生产通过正确的价值观念和压缩提前期,保证用户在要求的时间得到需要的产品。

实现了拉动生产的企业具备当用户需要时,就能立即设计、计划和制造出用户真正需要的产品的能力;最后实现抛开预测,直接按用户的实际需要进行生产。流动和拉动将使产品开发周期、定货周期、生产周期降低 50%90%

   

5、尽善尽美

精益制造的目标是通过尽善尽美的价值创造过程(包括设计、制造和对产品或服务的整个生命周期的支持)为用户提供尽善尽美的价值。精益制造的尽善尽美有三个含义:用户满意、无差错生产和企业自身的持续改进。

   

   

   

项目管理三角形

   

传统项目铁三角 > 敏捷铁三角

   

   

   

上面的部分是确定的

下面的部分是可变动的

即 传统项目来说,范围是确定的,成本和进度是可以变动的;

敏捷项目来说, 成本和范围是确定的,进度是可以变动的

   

   

   

传统项目铁三角 > 敏捷三角形

   

   

敏捷三角形的约束是 敏捷铁三角 【范围、成本、时间】

   

传统: 范围是固定的,成本和时间是可变的

敏捷: 时间是固定的,成本和范围是可以协商的; 价值是不变的,质量是不变的,和约束里面的范围 是可变的

   

   

价值的定义

   

   

   

   

   

MVP 最小可行产品

   

   

   

   

   

   

   

   

   

   

   

   

用户故事地图

   

   

备注:

一个蛋糕制作及心得分享系统

   

创建故事地图的8个步骤

  1. 召集到3-5名对产品非常熟悉的人员参与。3-5人听上去像是个魔法数字,实际上是的。因为更少的人意味着你无法获得足够的建议,而更多人则会因为讨论和协调降低会议效率。
  2. 使用静默头脑风暴模式,让每个人在便签纸上写下自己认为重要的"所要做的事情",也就是用户任务(User Tasks)。每个人都用同样颜色的便签来书写自己的用户任务描述,这个阶段不要互相讨论。一旦大家都基本完成了准备,让每个人轮流大声读出自己的内容,并把便签纸全部放置在桌面上。这时如果出现重复的内容就可以省略掉:【上图的绿色标签, User task, 也称之为 "行走的骨骼"(walking skeleton)】
    1. 根据产品规模,这个过程可能需要3-10分钟的时间,你可以观察大家的行为来判断是否需要停止。
    2. 基本上每张便签都会以一个动词开头,如:发送邮件、创建联系人、添加用户等。
    3. 这些便签组成了一级用户故事,也称为用户任务(User Tasks),它们组成了用户故事地图上的 "行走的骨骼" (The walking skeleton)部分。
    4. 这时可以提示参与者:我们只用了很少的时间就完成了需求的收集过程,而且有些内容你可能没有想到,而其他人帮你想到了。
  3. 然后,让大家将桌面上所有的便签进行分组,将类似的任务分为一组,其它的类似:
    1. 这个过程最好也采用静默模式进行,因为这样做会更快。如果发现重复的内容,就略过。
    2. 基本上分组会很容易完成。
    3. 这时同样观察每个人的行为,判断大家是否已经做完,基本上这个过程需要2-5分钟。
  4. 选择另外一个颜色的便签,对每个组进行命名,并贴在每组便签的上部。【上图的蓝色标签, User activity, 也称之为 "主干"(backbone】
  5. 对这些分好组的便签进行排序,一般按照用户完成操作的顺序,从左到右摆放:
    1. 如果大家无法决定顺序,那么顺序可能没有那么重要(明显)。
    2. 这一组便签,Jeff Patton称为用户活动 (User Activities)
  6. 现在,按照 "行走的骨骼" 用户活动这行开始讲述用户故事,确保你没有遗漏任何用户活动和用户任务。这时一般由组织者进行讲述,其他人提出意见,甚至可以让最终用户来参与讨论。
  7. 这时,我们已经完成了用户故事地图的基本框架,可以在每个用户任务下面添加更加细节的用户故事(User Stories)了。此时仍然建议使用静默头脑风暴的模式来进行第一轮用户故事的产生,同时借助如Persona和Scenario等方式协助完成这个过程。一旦你完成了用户故事的创建,就可以开始划定发布计划(Releases)了:
    1. 一般在第一个发布中只选择每个用户任务的2-3个用户故事,这对于帮助大家排定优先级和范围将很有帮助。
    2. 基本上不必使用用户故事的标准句法(As a ...)来书写这些故事,因为每张便签都处于地图的特定位置,很容易识别其所处的场景和角色。
  8. 最后,针对第一个发布的所有用户故事进行分解,确保我们的第一个发布越小越好,基本上需要保证在1-2个迭代后就可以发布产品的第一个版本。

       

   

   

敏捷方法

敏捷软件开发(Agile software development),又称敏捷开发,是一种从1990年代开始逐渐引起广泛关注的一些新型软件开发方法,是一种应对快速变化的需求的一种软件开发能力。它们的具体名称、理念、过程、术语都不尽相同,相对于"非敏捷",更强调程序员团队与业务专家之间的紧密协作、面对面的沟通(认为比书面的文档更有效)、频繁交付新的软件版本、紧凑而自我组织型的团队、能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发过程中人的作用

敏捷宣言

"敏捷"一词来源于2001年初美国犹他州雪鸟滑雪圣地的一次敏捷方法发起者和实践者(他们发起组成了敏捷联盟)的聚会。雪鸟会议共同起草了《敏捷软件开发宣言》,其中最重要的部分就是对一些与会者一致同意的软件开发价值观的表述。

价值观

  1. 个体和互动 高于 流程和工具
  2. 工作的软件 高于 详尽的文档
  3. 客户合作 高于 合同谈判
  4. 响应变化 高于 遵循计划
  5. 也就是说,尽管右项有其价值,我们更重视左项的价值。

   

原则
敏捷宣言中还包括以下原则:

  1. 对我们而言,最重要的是通过尽早和不断交付有价值的软件满足客户需要。
  2. 我们欢迎需求的变化,即使在开发后期。敏捷过程能够驾驭变化,保持客户的竞争优势。
  3. 经常交付可以工作的软件,从几星期到几个月,时间尺度越短越好。
  4. 业务人员和开发者应该在整个项目过程中始终朝夕在一起工作。
  5. 围绕斗志高昂的人进行软件开发,给开发者提供适宜的环境,满足他们的需要,并相信他们能够完成任务。
  6. 在开发小组中最有效率也最有效果的信息传达方式是面对面的交谈。
  7. 可以工作的软件是进度的主要度量标准。
  8. 敏捷过程提倡可持续开发。出资人、开发人员和用户应该总是维持不变的节奏。
  9. 对卓越技术与良好设计的不断追求将有助于提高敏捷性。
  10. 简单——尽可能减少工作量的艺术至关重要。
  11. 最好的架构、需求和设计都源自自我组织的团队。
  12. 每隔一定时间,团队都要总结如何更有效率,然后相应地调整自己的行为。

   

   

Scrum 是一种敏捷方法

   

   

   

   

   

   

   

   

   

   

   

角色

1,产品负责人

2,敏捷教练

3,团队

   

工件

1, 产品backlog

2,冲刺 backlog

3,燃尽图

   

会议

  1. 项目计划会 / 评估用户故事、做项目计划
  2. 每日站会<自组织无人主持、轮流发言交换信息>
    1. 昨天完成了什么任务
    2. 今天计划做什么任务
    3. 遇到哪些障碍 【在站会上不讨论怎么解决障碍】
  3. 评审会
  • 演示产品
  1. 回顾会

   

   

   

   

代码提交流程

1. 从项目库FORK私有项目库

2. 在私有项目库,基于功能或者ISSUE 建立开发分支

3. 将开发分支推送到远程代码库,并以 squash 模式提交merge request 到 项目库

4. Gitlab 执行测试脚本,进行代码检查,运行安装测试,运行Odoo测试用例

   

   

   

jeffery 2024年4月23日
标签
存档
Scrum 要义