Scrum经验性过程

news2025/1/20 1:42:29

软件开发是一个复杂的活动, 在软件产品开发的过程中不仅存在着需求的不确定性,也存在着技术的不确定性,再加上参与软件开发的主体通常是由多人组成的软件开发团队,加上人的因素,就让整个软件开发的活动变得非常复杂。如下图所示,软件开发活动通常处在下图的很复杂的区域。

图-01

为了管理软件开发的活动,我们会引入过程控制来管理它。过程控制通常有两种方式,第一种方式是预定义的过程,第二种方式是经验性过程。

我们所熟知的是预定义的过程,它通常是使用已知的方法解决已知的问题。制造业的生产线就是典型的预定义过程,例如生产饼干、啤酒、汽车的生产线等。预定义的过程的特点是给予固定的输入,得到固定的输出,过程可重复。它的优势在于可以大规模批量生产。预定义过程的缺点在于一旦过程定义出现错误,或产品设计上存在瑕疵,会造成比较大的损失。

图-02

如果我们期望解决的问题比较复杂,并且存在着较大的不确定性的时候,我们需要使用经验性过程。经验性过程的特点是过程是不能够完全预先定义好,结果是不可预知的,生产过程是不可重复的。比如研究一项新技术,下一盘棋,踢一场球赛,在过程运行当中,我们需要通过不断的获得真实的反馈,然后进行适应和调整,使得过程能够产出我们需要的结果。

“在过程运行机制相当简单易懂的情况下,典型的做法是采用预定义的建模方式。如果过程复杂程度超出预定义方式的能力范围,便应用经验性方式。”

                                                              ——B.A.Ogunnaike and W.H.Ray

《过程动态学、建模与控制》

软件产品的研发通常存在多很多的不确定性,并且生产的过程非常的复杂,所以更适合使用经验性过程来管理。

Scrum以经验性过程控制理论做为理论基础的过程。Scrum 采用迭代、增量的方法来优化可预见性并控制风险。

Scrum过程框架的基石包括如下三个方面:

第一:透明性(Transparency)

透明度是指,在软件开发过程的各个环节保持高度的可见性,影响交付成果的各个方面对于参与交付的所有人、管理生产结果的人保持透明。管理生产成果的人不仅要能够看到过程的这些方面,而且必须理解他们看到的内容。也就是说,当某个人在检验一个过程,并确信某一个任务已经完成时,这个完成必须等同于他们对完成的定义。

第二:检验(Inspection)

开发过程中的各方面必须做到足够频繁地检验,确保能够及时发现过程中的重大偏差。在确定检验频率时,需要考虑到检验会引起所有过程发生变化。当规定的检验频率超出了过程检验所能容许的程度,那么就会出现问题。幸运的是,软件开发并不会出现这种情况。另一个因素就是检验工作成果人员的技能水平和积极性。

第三:适应(Adaptation)

如果检验人员检验的时候发现过程中的一个或多个方面不满足验收标准,并且最终产品是不合格的,那么便需要对过程或是材料进行调整。调整工作必须尽快实施,以减少进一步的偏差。

Scrum中通过三个活动进行检验和适应:每日例会检验Sprint目标的进展,做出调整,从而优化次日的工作价值;Sprint评审和计划会议检验发布目标的进展,做出调整,从而优化下一个Sprint的工作价值;Sprint回顾会议是用来回顾已经完成的Sprint,并且确定做出什么样的改善可以使接下来的Sprint更加高效、更加令人满意,并且工作更快乐。

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

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

相关文章

MySQL的索引详解

1.什么是MySQL的索引 1.1索引的概念 索引是一种特殊的文件,包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引, 并指定索引的类型,各类索引有各自的数据结构实现。 所以索引归根结底只是在做一件事,添加了索…

数据结构-Redis(三)

前面介绍了redis的String和哈希,接下来看看其他的数据结构 List LPUSH:左边放入 RPUSH:右边放入 LPOP:取出左边第一个数,并且移除 RPOP:取出右边第一个数,并且移除 由上操作可以看出&#…

chatgpt赋能python:Python中一行输出的方法

Python中一行输出的方法 Python是一种高级编程语言,其语法简洁、易于阅读、丰富的库和解释器使其成为了众多程序员的选择。在Python中有时需要一行输出多个值、变量或者其他信息,因此在本文中将介绍如何在Python中实现一行输出的方法。 一般的输出方法…

chatgpt赋能python:Python如何一行一行运行?

Python 如何一行一行运行? Python是一门广泛应用于开发Web、科学计算、人工智能等领域的高级编程语言。相比其他编程语言,Python简单易学,语法简洁优雅,拥有许多强大的第三方库和工具。但作为一个新手,可能会对Python…

【复习笔记】FreeRTOS(四) 列表项的插入和删除

本文是FreeRTOS复习笔记的第四节,列表项的插入和删除。 上一篇文章: 【复习笔记】FreeRTOS(三)任务挂起和恢复 文章目录 一、列表和列表项1.1. 列表1.2. 列表项1.3. 迷你列表项 二、实验目的三、测试例程四、实验效果 一、列表和列表项 列表和列表项是F…

Dubbo 注册,调用,通信,容错

Dubbo简化模型 3种开发方式 开发方式 举例 特点 XML配置 等 业务代码零侵入 扩展修改方便 注解方式 EnableDubbo DubboService DubboReference 扩展修改方便 修改需要重新编译代码 API编程 DubboBootstrap ServiceConfig ReferenceConfig应用 业务侵入性大 修改复杂…

【前端学习】React学习资料

React 是一种开源的 JavaScript 库,用于构建用户界面。它由 Facebook 开发并维护,已经成为了当今最流行的前端库之一。与其他框架不同,React 主要专注于视图层(View),旨在通过声明式、组件化的方式来构建复…

Pagination分页(antd-design组件库)展示所有配置选项和onChange的作用

1.Pagination分页 采用分页的形式分隔长列表,每次只加载一个页面。 2.何时使用 当加载/渲染所有数据将花费很多时间时; 可切换页码浏览数据。 组件代码来自: 分页 Pagination - Ant Design 3.本地验证前的准备 参考文章【react项目antd组件-d…

redis到底是怎么样进行渐进式hash的

Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。那么redis的底层是如何来存储数据的呢? 一、redis如何在存储大量的key时候,查询速度还能接近O(1)呢&#xf…

分布式事务方案学习

第100篇文章啦!分布式事务在面试中分布式事务也是十分重要的点,所以学习完分布式锁后我们就来学习分布式事务吧。 事务表示的是我们在业务逻辑中对数据库进行操作的一组单元,需要同时成功或同时失败,不了解的小伙伴们可以看一下下…

Linux编译器-gcc/g++(动静态链接)

目录 一、Linux编译器-gcc/g的使用1.1 背景知识1.2 预处理,编译,汇编,链接1.3 动静态链接 二、补充sudo设置 一、Linux编译器-gcc/g的使用 1.1 背景知识 我们为什么能在windows或者linux下进行C/C或者其它形式的开发呢?前提条件…

我在VScode学Java(Java一维数组、二维数组、JVM中的堆和栈)重制版

​ 我的个人博客主页:如果’真能转义1️⃣说1️⃣的博客主页 关于Java基本语法学习---->可以参考我的这篇博客:《我在VScode学Java》 Java一维数组、二维数组 零._.在Java中_什么是数组Java 数组是一种数据结构,存储一组相同类型的数据。引…

Docker网络模型(七)使用 IPvlan 网络

使用 IPvlan 网络 IPvlan 驱动为用户提供了全面控制 IPv4 和 IPv6 寻址的能力。 IPvlan 让操作者能完全操控二层(数据链路层)网络的 vlan 标签,甚至也提供了三层(网络传输层)路由控制给感兴趣的用户。对于抽象出物理限…

【SpringSecurity】CSRF、环境配置、授权、认证功能、记住我功能实现

SpringSecurity 文章目录 SpringSecurityCSRF跨站请求伪造攻击开发环境搭建认证直接认证使用数据库认证自定义登录界面 授权基于角色的授权基于权限的授权使用注解判断权限 记住我SecurityContext SpringSecurity是一个基于Spring开发的非常强大的权限验证框架,其核…

Java快速安装以及入门指南

安装 Java 环境教程 Java 是一种广泛应用于软件开发、Web 应用程序和移动应用程序等领域的编程语言。如果您要使用 Java 进行开发或运行需要 Java 程序,您需要先在计算机上安装 Java 环境。 本教程将向您介绍如何在 Windows 操作系统上安装和验证 Java 环境。还将…

第2章 可行性研究

文章目录 第2章 可行性研究2.1 可行性研究的任务2.2 可行性研究过程2.3 系统流程图2.3.1符号2.3.3 分层 2.4 数据流图2.4.1 符号1. 数据源点或终点2. 数据加工(变换数据的处理)3. 数据存储4.数据流数据流与数据加工之间的关系 2.4.2绘制数据流图的例子顶…

chatgpt赋能python:Python3.6.5到Python3.7.5:升级指南

Python 3.6.5到Python 3.7.5:升级指南 Python是一种广泛使用的编程语言,拥有强大的库和框架,能够开发各种类型的应用程序。在Python的发行版中,版本更新是常见的过程,以提供更好的性能和新的功能。 本文将介绍如何将…

手记系列之六 ----- 分享个人使用kafka经验

前言 本篇文章主要介绍的关于本人从刚工作到现在使用kafka的经验,内容非常多,包含了kafka的常用命令,在生产环境中遇到的一些场景处理,kafka的一些web工具推荐等等。由于kafka这块的记录以及经验是从我刚开始使用kafka&#xff0…

chatgpt赋能python:Python怎么一行一行读文本?

Python怎么一行一行读文本? 在Python中,要一行一行地读取文本文件,我们可以使用Python内置函数readline()。它每次读取一行文本,并且会自动把文本的换行符\n去掉。下面我们来详细了解如何使用readline()函数读取文本文件。 读取…

4.卡尔曼滤波原理及实战

欢迎访问个人网络日志🌹🌹知行空间🌹🌹 文章目录 0.关于卡尔曼1.卡尔曼滤波算法2.卡尔曼滤波算法的应用一个简单例子一个复杂的例子参考 0.关于卡尔曼 卡尔曼,匈牙利数学家,1930年出生于匈牙利首都布达佩斯…