第七章:敏捷开发工具方法-part1-敏捷开发基础

news2024/12/25 10:49:34

文章目录

  • 一、Scrum基础概念
    • 1.1 传统开发模式与敏捷开发的区别
    • 1.2 传统项目管理与敏捷项目管理的区别
    • 1.3 敏捷宣言
    • 1.4 敏捷开发的特征
      • 1、敏捷的方法
  • 二、角色与职责
    • 2.1 Scrum Team
    • 2.2 角色职责总结
    • 2.3、研发阶段概览
      • 1、Sprint计划会议
      • 2、产品实施阶段
      • 3、Sprint评审会议
      • 4、Sprint回顾会议
  • 三、敏捷开发实践
    • 3.1、增量迭代
    • 3.2、测试驱动开发
    • 3.3、持续集成
    • 3.4、面对面交流
    • 3.5、Scrum何时 使用更有效

一、Scrum基础概念

敏捷开发背景
速度是企业竞争致胜的关键因素,软件项目的最大挑战在于一方面需要应付变动中的需求,一方面需要在有限的时间完成项目,传统的软件工程难以满足这些要求
所以软件团队除了在技术上必须日益精进,更需要运用有效的开发流程,以确保团队能够发挥综效。这正是Agile Process (敏捷的软件开发流程)于近年来兴起的主要原因。

1.1 传统开发模式与敏捷开发的区别

1、瀑布开发:

  • 预见性开发模式
  • 每一个步骤有严格产出成果
  • 设计越完美,成本损失越小
  • 不适应快速变化
    在这里插入图片描述
    2、敏捷开发
  • 人和交互重于过程和工具
  • 可工作的软件 重于全而完备的文档
  • 客户协作 重于合同谈判
  • 随时应对变化 重于 循规蹈矩
    在这里插入图片描述

1.2 传统项目管理与敏捷项目管理的区别

1、传统项目管理

  • 事先对整个项目进行估计、计划、分析
  • 反对变更,变更需要重新估计、重新规些
  • 严密的合同来减少风险,如果改变需求要走CR 流程
  • 项目作为一个“黑盒子”,对客户与供应商的可视性差
  • 文档和计划驱动的方法软件交付时间晚,意识到风险的时间晚WBS,甘特图,关键路径分析

2、敏捷项目管理

  • 对整个项目做一个粗略的估计,每一次迭代都有详细的计划
  • 鼓励变化,客户价值驱动开发
  • 信任和赋予权力;合约使变更变得简单,增加价值
  • 客户和开发人员之间是紧密的连续的合作关系
  • 每次迭代都产生可交付的软件,专注于交付软件
  • 第一次迭代就可交付能工作的版本,风险发现的早

1.3 敏捷宣言

1、敏捷宣言

  1. 个体和交互 胜于 流程和工具
  2. 可工作软件 胜于 几长的文档
  3. 与客户协作 胜于 合同的谈判
  4. 对变化响应 胜于 遵循原计划

敏捷开发的核心思想是: 以人为本,适应变化敏捷思想是:一种以人为核心、迭代、循序渐进的开发方法

2、敏捷开发12个原则

  1. 最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意
  2. 即使到了开发的后期,也欢迎改变需求。
  3. 经常性地交付可以工作的软件,交付的间隔可以从几周到几个月,交付的 时间间隔越短越好
  4. 在整个项目开发期间,业务人员和开发人员必须天天都在一起工作。
  5. 围绕被激励起来的个人来构建项目。
  6. 在团队内部,最具有效果并且富有效率的传递信息的方法,就是面对面的 交谈。
  7. 工作的软件是首要的进度度量标准。
  8. 敏捷过程提倡平稳的开发节奏;发起人、开发者和用户应该能够保持一个长期的、恒定的开发速度。
  9. 不断地关注优秀的技能和好的设计会增强敏捷能力。
  10. 简单化是根本(不做过度设计和预测)
  11. 最好的构架、需求和设计出自于自组织的团队。
  12. 每隔一定时间,团队会在如何才能更有效地工作方面进行反思并对自己的行为进行相应调整。

1.4 敏捷开发的特征

在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。

1、敏捷的方法

敏捷方法包括:Extreme Programming(XP)极限编程、Scrum、Adaptive Software Development (ASD)自适应软件开发、Crystal Clear and Other Crystal Methodologies水晶方法、Dynamic Systems Development Method (DSDM)动态系统开发方法 等等

1、Extreme Programming(XP)极限编程

  • XP我们一般称为极限编程,是最轻量级的开发流程。每个Sprint的迭代周期大致为1-2周。
  • 最主要的精神是:在客户有系统需求时,给予及时满意的可执行程序、所以最适合需求快速变动的项目
  • 它强调客户所要的是:
    • workable的执行码,所以把与撰写程序无关的工作降至最低,并要求客户与开发人员最好以side-by-side的方式一起工作
  • XP的实践包括:
    • 完整团队、计划游戏、客户测试、简单设计、结对编程、测试驱动开发、改进设计、持续集成、集体代码所有权
    • 编码标准、隐喻、可持续的速度
      在这里插入图片描述
      2、Scrum整体框架
  • Scrum 是用于开发、交付和持续支持复杂产品的一个框架,是一个增量的、迭代的开
    发过程。
  • 在这个框架中,整个开发过程由若干个短的迭代周期组成,一个短的迭代周期称为一个Sprint,每个Sprint的建议长度是2至4周
  • 在Scrum中,使用产品Backlog来管理产品的需求,产品backlog是一个按照商业价值排序的需求列表,列表条目的体现形式通常为用户故事。Scrum团队总是先开发对客户具有较高价值的需求。
  • 在Sprint中,Scrum团队从产品Backlog中挑选最高优先级的需求进行开发。挑选的需求在Sprint计划会议上经过讨论、分析和估算得到相应的任务列表,我们称它为Sprint backlog。在每个选代结束时,Scrum团队将递交潜在可交付的产品增量
    在这里插入图片描述

二、角色与职责

本节介绍Scrum开发方法下的角色与职责。

  • 角色包括:Product Owner(PO)产品负责人(所有者),Scrum Master 敏捷教练,Team团队
  • Artfacts工件 : Product Backlog 产品Backlog(需求清单),Sprint Backlog 迭代Backlog,Increment潜在可交付产品增量
  • Ceremonies仪式(敏捷开发过程中的会议):PB Refinement 产品需求澄清、Sprint Review 迭代计划会议、Daily Meeting 每日立会、Sprint Review 评审会议、Sprint Retrospective回顾会议
    特性Features:Courage勇气,Openness 开放、Commitment 承诺、Focus 专注、Respect 尊重

2.1 Scrum Team

Scrum 的基本单位是小团队(一般10人以下),称为Scrum Team。Scrum Team,一名Scrum MasterProduct Owner 和 Developers 组成。在 Scrum Team 中,没有子团队或层次结构。Scrum Team是具有凝聚力的专业团体,一次专注于一个目标,即 Product Goal。
Scrum Team 是跨职能的(cross-functional),这意味着团队成员具有在每个 Sprint 中创造价值而所害的全部技能。他们也是自管理的,这意味着他们在团队内部决定谁做什么、何时做以及如何做。
Scrum Team 规模足够小以保持灵活,同时足够大以便可以在 一个 Sprint 中完成重要的工作,通常只有 10 人或更少。总的来说,我们发现较小的团队沟通更好,效率更高。如果 Scrum Team变得太大,则应考虑将他们重组为多个具有凝聚力的Scrum Team,每个团队都专注于同一产品。因此,他们应该共享相同的Product Goal、Product Backlog 和 Product Owner。

1、Developers

  • 为 Sprint 创建计划,即Sprint Backlog;
  • 通过遵循 Definition of Done 来注入质量;
  • 每天根据 Sprint Goal 调整计划;
  • 作为专业人士对彼此负责。

2、Product Owner

  • Product Owner 负责将Scrum Team 的工作所产生的产品价值最大化
  • Product Owner 还负责对Product Backlog 进行有效管理,包括:
    • 开发并明确地沟通Product Goal;
    • 创建并清晰地沟通Product Backlog 条目 (items);
    • 对 Product Backlog 条目进行排序:
    • 确保 Product Backlog 是透明的、可见的和可理解的。
  • Product Ower 可以自己做上述工作,或者也可以将职责委托他人。然而无论如何,ProductOwner 是负最终责任的人。
  • 为保证 Product Owner 取得成功,整个组织必须尊重他们的决定。这些决定在Product Backlog的内容和顺序中可见,并在 Sprint Review 时透过可检视的 Increment 予以体现。

3、Scrum Master

  • 负责按照Scrum 指南的游戏规则来建立Scrum。他们通过帮助Scrum Team 和组织内Scrum Master的每个人理解 Scrum 理论和实践来做到这一点

  • Scrum Master 以多种方式服务于Scrum Team,包括:

    • 作为教练在自管理和跨职能方面辅导Scrum Team 成员;
    • 帮助 Scrum Team 专注于创建符合 Definition of Done 的高价值 Increment;
    • 促使移除 Scrum Team 工作进展中的障碍:
    • 确保所有 Scrum 事件都发生并且是积极的、富有成效的,并且在时间盒 (timebox)内完成。
  • 负责按照Scrum 指南的游戏规则来建立Scrum。Scrum Master的每个人理解 Scrum 理论和实践来做到这一点

  • Scrum Master 以多种方式服务于Product Owner,包括

    • 帮助找到有效定义Product Goal 和管理Product Backlog 的技巧;
    • 帮助 Scrum Team 理解为何需要清晰且简明的Product Backlog 条目;
    • 帮助建立针对复杂环境的基于经验主义的产品规划 (empirical product planning);
    • 当需要或被要求时,引导利益攸关者协作。
  • Scrum Master 负责按照Scrum 指南的游戏规则来建立Scrum。他们通过帮助Scrum Team 和组织内的每个人理解 Scrum 理论和实践来做到这一点

  • Scrum Master 以多种方式服务于组织,包括

    • 带领、培训和作为教练辅导组织采纳Scrum;
    • 在组织范围内规划并建议Scrum 的实施
    • 帮助员工和利益攸关者理解并实施针对复杂工作的经验主义方法 (empirical
      approach):
    • 消除利益攸关者和Scrum Teams 之间的隔阂。

在这里插入图片描述
在这里插入图片描述

2.2 角色职责总结

Scrum团队总结出来有:三个角色,四个仪式,三个物件
1、三个角色
- 产品负责人
- Scrum Master
- 团队
2、四个仪式
- Sprint计划会议
- 每日站会
- Sprint评审会议
- Sprint 回顾会议
3、三个物件
- 产品Backlog
- Sprint Backlog
- 燃尽图

2.3、研发阶段概览

1、Sprint计划会议

  • 团队从产品backlog中挑选他们承诺完成的条目。
  • 创建Sprint Backlog
    • 标识具体的任务并为任务做估算
    • 由团队协作完成,而不是Scrum Master
  • 考虑了高层设计
  • Sprint 计划会议会产生一些实实在在的成果
    • Sprint目标
    • 团队成员名单(以及他们的投入程度,如果不是 100%的话)
    • Sprint backlog(即 Sprint 中包括的故事列表)
    • 确定好 Sprint 演示日期
    • 确定好时间地点,供举行每日 Scrum 会议
      在这里插入图片描述

2、产品实施阶段

- 产品实施阶段工作:
	- 开发、测试、监控.
- 方法:
	- 任务看板、燃尽图、每日立会
- Sprint backlog的形式
	- Redmine、Jira、禅道、阿里云效等等
	
	**燃尽图**
> 燃尽图 (burn down chart) 是在项目完成之前,对需要完成的工作的一种可视化表示。
> 分为:Sprint燃尽图,迭代燃尽图
> Sprint燃尽图展示了以故事点表示的在本轮迭代中剩余的工作量。
> y轴:预估剩下的故事点
> x轴:日期(非工作日除外)
> y/x=生产率
燃尽图分板示例:
![在这里插入图片描述](https://img-blog.csdnimg.cn/b68feeffc2cc4541baab4d613eefdba4.png)

哪些信息可以从每日燃尽图中得到,却不能从迭代燃尽图中得到?
每日燃尽图显示了团队在某轮迭代中的进度,你可以用这个信息判断计划的工作能否在迭代结束时都能完成。

哪些情况下燃尽图会有向上的趋势
加新任务的速度比完成任务的速度快
有大量的任务被低估了

每日例会
  • 最好在每天早上开,时间一般控制在15分钟之内
  • 条件允许的话,会议最好每天都在同一时间同一地点举行
  • 谁都可以参加这个会议,但只有团队成员发言,其它人员只能旁听
  • 所有出席者都应站立(有助于保持会议简短)
  • 确定更新燃尽图
  • 会议由Scrum Master主持,在会上每个团队成员需要问3个问题
    • 我昨天完成了哪些工作
    • 我今天将要做什么
    • 我遇到哪些障碍

3、Sprint评审会议

  • 在Sprint结束时召开,会议时间控制在两小时以内
  • 开发团队展示这个Sprint中完成的功能,不需要PPT,一般是已经完成的功能DEMO
  • 客户、管理层、Product Owner以及其它开发人员都可以参加
  • 主要是对项目开发的进度通过对实际已完成产品功能的审核进行控制,由产品负责人断定实际所发两点的功能是否与既定的Sprint目标一致

4、Sprint回顾会议

  • Sprint结束后,时间在1-3个小时
  • 回顾刚结束的Sprint,对其进行总结和反思,审视和适应的能力是Scrum 的基础,在Sprint回顾会议期间,项目团队会分析Sprint中的成功经验和所遇到的阻碍,
  • 产品负责人、Scrum团队和Scrum Master参加

三、敏捷开发实践

3.1、增量迭代

每个迭代有一个大约为1~4周的时间框,在SCRUM里称为一次冲刺(超过1个月的详细计划往往偏差很大)
每次迭代都应该有明确的目标
每次迭代都应该有明确的可演示的工作成果
迭代过程中项目团队应该尽量免受打扰
迭代可以将项目的压力分解到每个小的阶段,风险也能同时分解

在这里插入图片描述

3.2、测试驱动开发

什么是测试驱动?

  • 首先创建测试用例,然后开发软件通过测试(在开发代码前,首先编写测试代码)
  • 一种设计软件的方法,而不仅仅是一种测试方法
  • 所创建的测试用例用来指导和约束项目中的各项工作,对未来的各项工作提供一个安全的保护
  • 不需要测试的工作不需要完成
  • 所创建的测试用例通常替代详细的业务和技术需求定
  • 测试也有效地驱动设计,使设计更加趋向于可行的设计
  • 通常情况下需要自动测试的支持 (EUnit,JUnit etc.).
  • 对于UI软件应用TDD方法有一定的困难

3.3、持续集成

极限编程称为“每日构建”

  • 持续集成一般利用ant,maven,jenkins等工具
  • 每日构建的好处:
    • 将集成风险降到最低
    • 降低质量风险
    • 提升士气
  • 每日构建可以看做是项目的心跳,冒烟测试就像是听诊器
  • 每日构建必须至少:成功编译、打包、发布;不含有任何明显的缺陷;通过冒烟测试

3.4、面对面交流

  • 虽然如今通讯工具花样繁多,但面对面交流在某些场合下仍然是不可替代的;
  • 敏捷开发把交流缺失问题考虑在内,要求团队成员彼此直接协作,尽量创造面对面交流的机会:
  • 尤其当业务分析师和软件开发人员一起工作的时候,面对面的交流是很重要的。
  • 署名共享需求文档只会打开曲解和误解之门更不用说书面信息比口头交流还要慢很多

其他:

  • 结对编程、每日立会、用户故事、团队工作室、频繁发布、自组织团队、重构

3.5、Scrum何时 使用更有效

  • 公司和客户一致认为应当使用敏捷方法,双方都能理解敏捷方法
  • 敏捷方法对需求不完整以及经常变换的项目比较有效
  • 项目可以划分成固定时间间隔的迭代,并且可以冻结正在进行的迭代的范围
  • 公司和客户都有能力担当角色尤其是Product Owner 和 Scrum Master
  • 项目的人员结构能够分成6到10人的团队,最好每个工作地点一个小组.(Scrum of
    Scrums,Scrum的扩展)
  • 才队成员能够以自组织的方式工作
  • 项目的合同允许变更:固定价格的项目可以使用敏捷,但应当尽量避免。最好在按时间和材料付费或者按月付费的项目中进行使用、变更项目的范围不需要高级管理层的批准

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/970689.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度解析BERT:从理论到Pytorch实战

本文从BERT的基本概念和架构开始,详细讲解了其预训练和微调机制,并通过Python和PyTorch代码示例展示了如何在实际应用中使用这一模型。我们探讨了BERT的核心特点,包括其强大的注意力机制和与其他Transformer架构的差异。 关注TechLead&#x…

Web Components详解-Shadow DOM基础

目录 引言 概念 基本用法 attachShadow函数 mode(模式) delegatesFocus(委托聚焦) Custom ElementsShadow DOM 基本用法 样式及属性隔离 写在最后 相关代码 参考文章 引言 上篇文章的自定义标签中,我们使…

iWatch框架设计

iWatch框架设计 一、项目框架结构设计 1、项目文件介绍 OverSeaProject:是IOS相关文件文件内容iWatchApp和iWatch Extension:是之前使用xcode14之前的xcode创建的360 app的Watch App,产生的文件结构,包含一个app和Extension的ta…

leetcode 1609.奇偶树

⭐️ 题目描述 🌟 leetcode链接:奇偶树 思路: 树的层序遍历,用队列辅助。用一个变量记录当前是多少层,以及当前层的节点个数,依次遍历,因为需要判断当前层是否严格递增或递减,如果正…

突破销售瓶颈:亚马逊卖家如何借力TikTok网红营销?

随着社交媒体的崛起,营销方式也在不断变革。TikTok作为一款风靡全球的短视频平台,吸引了数以亿计的用户,成为了品牌宣传和销售的新热点。对于亚马逊卖家而言,通过合理运用TikTok网红营销策略,可以有效提升产品的曝光度…

微信最新更新隐私策略(2023-08-15)

1、manifest.json 配置修改 在mp-weixin: 参数修改&#xff08;没有就添加&#xff09; "__usePrivacyCheck__": true, ***2、注意 微信开发者工具调整 不然一直报错 找不到 getPrivacySetting 废话不多说 上代码 3、 编辑首页 或者用户授权界面 <uni-popup…

无涯教程-JavaScript - DMAX函数

描述 DMAX函数返回列表或数据库中符合您指定条件的列中的最大数字。 语法 DMAX (database, field, criteria)争论 Argument描述Required/Optionaldatabase 组成列表或数据库的单元格范围。 数据库是相关数据的列表,其中相关信息的行是记录,数据的列是字段。列表的第一行包含…

GPT-5继续秘密训练中!ChatGPT开学大礼包

&#x1f989; AI新闻 &#x1f680; GPT-5继续秘密训练中&#xff01;DeepMind联合创始人披露了未来模型的规模增长 摘要&#xff1a;DeepMind联合创始人在采访中透露&#xff0c;OpenAI正在秘密训练GPT-5&#xff0c;未来3年&#xff0c;Inflection模型将比现在的GPT-4大10…

Python While 循环语句

Python 编程中 while 语句用于循环执行程序&#xff0c;即在某条件下&#xff0c;循环执行某段程序&#xff0c;以处理需要重复处理的相同任务。其基本形式为&#xff1a; while 判断条件(condition)&#xff1a;执行语句(statements)…… 执行语句可以是单个语句或语句块。判…

BL110设备支持Modbus TCP协议接入

随着物联网技术的不断发展&#xff0c;越来越多的工业设备被连接到云平台上&#xff0c;以实现远程监控和管理。在这篇文章中&#xff0c;我们将介绍如何方便用户快速把多种工业设备接入几个主流的云平台&#xff0c;如华为云 IoT、AWS IoT、阿里云 IoT、ThingsBoard、金鸽云等…

【多线程案例】线程池的应用及实现

文章目录 1. 什么是线程池&#xff1f;2. 线程池的应用3. 自己实现线程池 1. 什么是线程池&#xff1f; 线程池就相当于一个池子&#xff0c;里面有很多的创建好的线程&#xff0c;可以进行统一的管理。当我们使用线程的时候&#xff0c;直接从里面调取&#xff0c;而不用在频繁…

如何将Word转成PDF?试一下这个转换方法

Word转成PDF是现代办公中常见的需求&#xff0c;它可以确保文件的格式和内容在不同平台上保持一致&#xff0c;并且更加方便共享和打印。在这个数字化时代&#xff0c;我们经常需要将Word文档转换为PDF格式&#xff0c;无论是个人用户还是商务用户都会遇到这样的需求。那么如何…

接口自动化测试中如何对xml 格式做断言验证?

在服务端自动化测试过程中&#xff0c;发起请求之后还需要对响应值进行验证&#xff0c;验证响应信息符合预期值之后&#xff0c;这一条接口自动化测试用例才算完整的通过。所以这一章节&#xff0c;将会讲解在接口自动化测试中&#xff0c;是如何对服务端返回的 XML 格式响应内…

4个维度讲透ChatGPT技术原理,揭开ChatGPT神秘技术黑盒【文末送书】

文章目录 写在前面1.Tansformer架构模型2. ChatGPT原理3. 提示学习与大模型能力的涌现4. 行业参考建议写作末尾 写在前面 2022年11月30日&#xff0c;ChatGPT模型问世后&#xff0c;立刻在全球范围内掀起了轩然大波。无论AI从业者还是非从业者&#xff0c;都在热议ChatGPT极具…

一种基于Python的自定义日志解析的实践方法

需求说明&#xff1a; 从如下的日志文件里解析出如下字段&#xff1a; 参数名&#xff1a;教育程度 左值&#xff1a;60 右值&#xff1a;90 表达式&#xff1a;等于 结果&#xff1a;不满足 解决方法&#xff1a; Step1: 因为原始日志来源于网页&#xff0c;这里真正的…

前端加密方式

前端加密 1.不可逆加密2.可逆加密a.对称加密b.非对称加密&#xff08;本文重点&#xff09;a.含义&#xff1a;b.过程理解&#xff1a;c.项目中使用&#xff1a; 总结&#xff1a;参考地址 目前搜索前端加密是可以看到有非常非常多的方法的&#xff0c;这里我们需要对其分类总结…

设计模式-9--迭代器模式(Iterator Pattern)

一、什么是迭代器模式 迭代器模式&#xff08;Iterator Pattern&#xff09;是一种行为型设计模式&#xff0c;用于提供一种统一的方式来访问一个聚合对象中的各个元素&#xff0c;而不需要暴露该聚合对象的内部结构。迭代器模式将遍历集合的责任从集合对象中分离出来&#xf…

睿思BI实现杜邦分析

杜邦分析法&#xff08;DuPont analysis&#xff09;是一种分析企业财务状况的方法&#xff0c;得名于美国杜邦公司。该方法可以应用于销售业绩分析。 睿思BI实现杜邦分析效果如下&#xff1a; 效果演示地址&#xff1a;https://www.ruisitech.com/rsbi-ultimate/#/dashboard/…

Hook技术

Hook 英文直译是“钩子”的意思&#xff0c;在程序中将其理解为“劫持”更好理解&#xff0c;意思是&#xff0c;通过 Hook 技术来劫持某个对象&#xff0c;从而控制它与其它对象的交互。 Hook 技术是一种用于改变 API 执行结果的技术&#xff0c;Android 系统中有一套自己的事…

架构设计基础设施保障IaaS存储

目录 1. 云硬盘2. 对象存储3. 表单上传案例4. 服务上传验证5. 云数据库6. 云数据库操作7. 服务连接云数据库8. 新一代原生数据库9 阿里云PolarDB生产最佳实践 1. 云硬盘 HDD&#xff08;普通云盘&#xff09; 特征&#xff1a; 性能一般&#xff0c; IOPS大概在数百左右。 应…