敏捷开发之路

1. 引言

最近有个企业软件开发项目,用户要求采用敏捷开发的方法实施项目。以前也参加过敏捷方法的培训,结合最近找的敏捷开发材料,形成了下面的敏捷实施过程内容。

以下采用了QAD量化敏捷开发方法,关于此方法详细参考内容见最后章节。

QAD量化敏捷开发:QAD是QuantitativeAgile Development的缩写,是一个覆盖从需求到发布, 端到端的, 相互衔接的团队级工程实践框架。

1、SEAj需求分析法是QAD方法的基石,SEAi方法极简定义:用无修饰词的人类语言描述每个场景, 找到被增查改删的宾语作为实体, 为每一个实体分析增查改删行为, 按成败快慢程度与字段排列将行为分解为需求实例。

2、SEAj需求需求拆分: 用于将需求迅速拆分为 4 个固定的层次, 其中某些层次具有严格 的定义和相似规模, 可直接用于估算、度量与量化管理; 并可以替代史诗故 事、用户故事; 且数值兼容各种体系的功能点, 如 IFPUG和 NESMA 。

2. 敏捷开发过程

如下图所示,项目实施过程分成了需求设计、开发测试、上线测试三阶段。项目各角色包括项目经理、产品经理(需求分析)、技术经理(架构师)、UI设计人员、开发人员、测试人员。

QAD方法我理解仅包含了需求调研和概要设计之后的内容,所以下图中补充了需求调研和概要设计的过程。

需求调研和概要设计也可以采用迭代的方式?我理解是不可以的,总体设计(概要设计)应该是建立在对需求基本全面了解的基础之上进行的,如果需求获取了50%或甚至是30%,是不无法做总体设计的。

2.1. 召开迭代计划会

1、每个迭代第一天召开,目的是选择和估算本次迭代的工作项。

2、产品负责人逐条讲解最重要的产品功能。

3、产品负责人参与讨论并回答与需求相关的问题。

注意:

1、会前准备:产品功能列表(条目化的需求、用户故事),优先级排序,最近1~2个迭代最希望看到的功能。会前准备至关重要,可帮助产品负责人理清头绪,不至于在迭代期内频繁提出变更、增加或删除故事

产品功能列表必须从客户价值角度描述,描述用户如何使用,而不是描述技术层面如何实现。比如“实现手写输入”“实现游戏排行榜”,而不是“编写数据库底层”。用户故事的语法“作为一个……,可以……,以(以便)……”很好地保证了这一点。

2、会上讲解:较难以文字表述的内容,如游戏的文化背景,嵌入式设备的手感,OA系统背后的人事关系……讲解过程中团队可以随时发问,产品负责人要予以解答。若产品负责人感觉答案没想清楚,可推迟故事的开发,或将故事分解为“已想清楚的”和“未想清楚的”,后者推迟到下一迭代或更晚。

3、这里的“用户故事”完全采用面向对象分析方法中的系统用例去表示。更为详细的内容可以参照面向对象的需求分析和设计内容

2.2. 制定迭代开发任务(场景)

1、迭代开发任务(场景)编写:描述要有完整的主 (角色) 谓 (行为) 宾 (实体)  , 字数越少越好, 但逻辑要连 贯、 清晰、 合理

2、编写原则:首尾完整、过程连贯、各得其所、无修饰词、宾语不重

3、例子:

2.3. 数据库设计(实体)

1、实体是在系统内部 可以被外界增查改删的业务数据

2、实体表述形式:用半角或全角方括号表示,如【商品】、【订单】、【结算记录】

3、识别方法:  场景描述中的动宾词组中的 "宾语"  ,就是实体。

4、例子:

2.4. 详细设计(分析行为)

1、行为Action 是用户或外部系统对业务实体的增查改删, 或本系统对其他系统行为的调用。

2、在 QAD 中, 行为用来替代敏捷开发中定义模糊的 "用户故事 (简称故事) " , 并承担着 迭代内估算和度量的核心职责。

3、例子:

2.5. 测试用例(实例)

1、针对所有的增查改删等行为, 通过成败的快慢、字段的排列组合这两个维度, 测试人员快 速编写了测试用例。

2、例子:

2.6. 每日立会

1、由于每次会议只持续10~15分钟,人们习惯在工位附近的空地上站着开会,所以被叫做“每日立会”。 2、每日立会上每个人汇报三个问题:我昨天做了什么,我今天要做什么,我遇到了什么困难。由于小组曾经共同估算任务,所以如果出现偏差,可以沟通出现的问题以相互帮助。 3、如无特殊原因,迭代期内产品负责人不会增加、改变、删除工作项,但却会协助开发人员进行产品功能细化。

2.7. 评审会

1、评审的标准是整个故事是否已经达到交付标准,而不是从其中分解出来的任务完成了多少,因此若一个故事“差一点就完成了”也算没有完成。 2、常常发生很多故事都已经开始开发,但都差一点完成的现象。因此应按迭代内的优先级逐条开发和交付故事。 3、一般在迭代计划会上设定每个故事的完成标准,如是否需要测试,是否需要考虑性能,是否需要说明文档等等。这些标准一般由项目组提前列好,每个故事只需要选中是否需要即可。 4、尽管有正式的评审会,但很多团队习惯在单个故事完成时,就让产品负责人进行单个故事评审,以确保交付时不会有“惊喜”。 5、评审会上发现的问题或改进将被累积到产品待开发项,也不会马上或在下一个迭代中开发,而是由优先级排序决定何时开发。

2.8. 复盘会

1、会上讨论三个问题:我们上个迭代有哪些事情做的好希望继续,那些事情做的不好希望改进,有何改进计划。 2、经常出现一些问题多次被提到,但却始终没有解决。应该每次仅就1~3个关键问题做出可行的解决方案,在下一个迭代执行改进。“可行”的概念包括两个含义:第一是方法简单,影响面小,见效快;第二个是目标不要激进,而要现实可行,积少成多。 3、如果必要可以执行领导回避制度,即具有管理职能的人不参加反思会,即使这些人是产品负责人,项目经理等。

3. 最后

1、以上内容大部来源于火星人陈勇,博客地址为:火星人陈勇-CSDN博客

2、QAD量化敏捷开发,视频资料 选择最多播放,可以看到相关视频。

3、《QAD量化敏捷开发》 电子书版:https://download.csdn.net/download/ocean1010/90097742

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

threejs相机辅助对象cameraHelper

为指定相机创建一个辅助对象,显示这个相机的视锥。 想要在场景里面显示相机的视锥,需要创建两个相机。 举个例子,场景中有个相机A,想要显示相机A的视锥,那么需要一个相机B,把B放在A的后面,两个…

Milvus向量数据库03-搜索理论

Milvus向量数据库03-搜索理论 1-ANN搜索 通过 k-最近邻(kNN)搜索可以找到一个查询向量的 k 个最近向量。kNN 算法将查询向量与向量空间中的每个向量进行比较,直到出现 k 个完全匹配的结果。尽管 kNN 搜索可以确保准确性,但十分耗…

解决git did not exit cleanly (exit code 128)问题

解决 git did not exit cleanly (exit code 128)问题 1、错误描述2、解决方法2.1 方法一2.2 方法二 1、错误描述 使用TortoiseGit进行操作时,总是提示下述错误。 2、解决方法 2.1 方法一 打开 TortoiseGit -> Settings 点击 Network&…

唇形同步视频生成工具:Wav2Lip

一、模型介绍 今天介绍一个唇形同步的工具-Wav2Lip;Wav2Lip是一种用于生成唇形同步(lip-sync)视频的深度学习算法,它能够根据输入的音频流自动为给定的人脸视频添加准确的口型动作。 (Paper) Wav2Lip模型…

ubuntu下Qt5自动编译配置QtMqtt环境(10)

文章目录 [toc]1、概述2、下载QtMqtt源码3、编译4、验证5、参考6、视频 更多精彩内容👉内容导航 👈👉Qt网络编程 👈 1、概述 Qt默认是不包含mqtt库的,如果需要使用到mqtt库就只能自己编译配置; 网络所有的…

verilog编程规范

verilog编程规范 文章目录 verilog编程规范前言一、代码划分二、verilog编码ABCDEFG 前言 高内聚,低耦合,干净清爽的代码 一、代码划分 高内聚: 一个功能一个模块干净的接口提取公共的代码 低耦合: 模块之间低耦合尽量用少量…

使用VScode 和 Keil搭建STM32的开发环境

目录 概述 1 Keil工具 1.1 Keil工具介绍 1.2 Keil 下载 1.3 安装Keil 1.4 Keil软件测试 2 VSCode软件 2.1 VSCode介绍 2.2 VSCode下载 2.3 安装VSCode 3 搭建STM32集成开发环境 3.1 安装Keil插件 3.2 参数配置 3.3 测试 4 配置头文件路径 4.1 参数配置 4.2 测…

【C++学习篇】map和set (set篇)

目录 1.map和set的使用 1.1序列式容器和关联式容器 2. set系列的使⽤ 2.1 set分类 2.2set类的介绍 2.3 set的构造和迭代器 2.4set的增删查 2.5 insert和迭代器遍历使⽤样例: 2.6 find和erase使⽤样例: 2.7multiset和set的差异 1.map和set的…

WGAN生成对抗网络数据生成

数据生成 | WGAN生成对抗网络数据生成 目录 数据生成 | WGAN生成对抗网络数据生成生成效果基本描述程序设计参考资料 生成效果 基本描述 1.WGAN生成对抗网络,数据生成,样本生成程序,MATLAB程序; 2.适用于MATLAB 2020版及以上版本&…

简易图书管理系统

javawebjspservlet 实体类 package com.ghx.entity;/*** author :guo* date :Created in 2024/12/6 10:13* description:* modified By:* version:*/ public class Book {private int id;private String name;private double pri…

c++笔记2

14、c的对象 对象和结构的区别; 结构:包含各种类型的变量; 对象:包含各种函数、和变量; 设计对象的时候引用class关键字创建类,和结构形状差不多; 将变量称之为属性,函数称之为方…

停止等待协议

理想传输条件有以下两个特点: 传输信道不产生差错不管发送发以多快的速度发送数据,接收方总是来得及处理收到的数据。 然而实际的网络都不具备以上两个理想条件,所以需要一个协议 “停止等待协议”就是每发送完一个分组就停止发送&#xf…

python | print() 函数常被忽略的几点用法

在 python 编程中,print() 是最为基础和常用的函数。 也正因如此,print() 函数的一些基础用法常常被我们初学者所忽略,典型的有:换行问题、间隔符使用及格式化输出等。 一、print() 换行问题 1、默认情况下,每一个 …

《鸣潮》运行时电脑提示“d3dx9_41.dll丢失”是什么原因?“缺失d3dx9_41.dll文件”的解决方法和预防方案

游戏运行时文件丢失与报错解决方案:《鸣潮》提示“d3dx9_41.dll丢失”怎么办? 大家好,我是一名在软件开发领域有着丰富经验的从业者。在游戏爱好者的世界里,遇到游戏运行时提示文件丢失或损坏的情况并不少见。今天,我…

性能测试需求分析(超详细总结)

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 1、客户方提出 客户方能提出明确的性能需求,说明对方很重视性能测试,这样的企业一般是金融、电信、银行、医疗器械等;他们…

(长期更新)《零基础入门 ArcGIS(ArcMap) 》实验三----学校选址与路径规划(超超超详细!!!)

目录 实验三 学校选址与道路规划 3.1 实验内容及目的 3.1.1 实验内容 3.1.2 实验目的 3.2 实验方案 3.3 操作流程 3.3.1 环境设置 3.3.2 地势分析 (1)提取坡度: (2)重分类: 3.3.3 学校点分析 (1)欧氏距离: (2)重分类: 3.3.4 娱乐场所点分析 (1)欧氏距离…

计算机网络 —— HTTPS 协议

前一篇文章:计算机网络 —— HTTP 协议(详解)-CSDN博客 目录 前言 一、HTTPS 协议简介 二、HTTPS 工作过程 1.对称加密 2.非对称加密 3.中间人攻击 4.引入证书 三、HTTPS 常见问题 1.中间人能否篡改证书? 2.中间人能否调…

【调试工具】USB 转 UART 适配器(USB 转 TTL)

「USB 转 TTL 转换器」是错误的叫法&#xff0c;正确的叫法应该为 「USB 转 UART 适配器」。 Device connection 注意端口的交叉连接&#xff0c;Device1_TX<---->Device2_RX USB-to-UART adapter GND 记得接地。 使用&#xff1a; 当 TX,RX 需要电平为 0-3.3V 时&am…

116. UE5 GAS RPG 实现击杀掉落战利品功能

这一篇&#xff0c;我们实现敌人被击败后&#xff0c;掉落战利品的功能。首先&#xff0c;我们将创建一个新的结构体&#xff0c;用于定义掉落体的内容&#xff0c;方便我们设置掉落物。然后&#xff0c;我们实现敌人死亡时的掉落函数&#xff0c;并在蓝图里实现对应的逻辑&…

图像生成-扩散模型的经典之作DDPM

论文&#xff1a;https://arxiv.org/pdf/2006.11239 项目&#xff1a;https://github.com/hojonathanho/diffusion Denoising Diffusion Probabilistic Models (DDPM) 是一种生成模型&#xff0c;它通过一系列逐步添加噪声的过程将数据点映射到一个简单的先验分布&#xff08;…