敏捷开发之路

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux-音频应用编程

ALPHA I.MX6U 开发板支持音频,板上搭载了音频编解码芯片 WM8960,支持播放以及录音功能!本章我们来学习 Linux 下的音频应用编程,音频应用编程相比于前面几个章节所介绍的内容、其难度有所上升,但是笔者仅向大家介绍 Li…

电影院订票选座小程序+ssm

题目:电影院订票选座小程序的设计与实现 摘 要 由于APP软件在开发以及运营上面所需成本较高,而用户手机需要安装各种APP软件,因此占用用户过多的手机存储空间,导致用户手机运行缓慢,体验度比较差,进而导致…

【网络】网络基础知识(协议、mac、ip、套接字)

文章目录 1. 计算机网络的背景2. 认识网络协议2.1 协议分层2.2 OS与网络的关系 3. 网络传输基本流程3.1 局域网通信流程3.2 跨网络通信流程 4. Socket 编程预备4.1 理解源IP地址和目的IP地址4.2 端口号与Socket4.3传输层的典型代表4.4 网络字节序 5. socket 编程接口5.1 介绍5.…

Kubernetes(K8S) + Harbor + Ingress 部署 SpringBoot + Vue 前后端分离项目

文章目录 1、环境准备2、搭建 K8S3、搭建 Harbor4、搭建 MySQL5、构建 SpringBoot 项目镜像6、构建 Vue.js 项目镜像7、部署项目 7.1、配置 NameSpace7.2、配置 Deployment、Service7.3、配置 Ingress-Nginx7.4、访问测试 1、环境准备 本次整体项目部署使用的是阿里云ECS服…

自回归模型(AR )

最近看到一些模型使用了自回归方法,这里就学习一下整理一下相关内容方便以后查阅。 自回归模型(AR ) 自回归模型(AR )AR 模型的引入AR 模型的定义参数的估计方法模型阶数选择平稳性与因果性条件自相关与偏自相关函数优…

学习Python的笔记--面向对象-继承

1、概念 多个类之间的所属关系,即子类默认继承父类的所有属性和方法。 注:所有类默认继承object类,object类是顶级类或基类; 其他子类叫做派生类。 #父类A class A(object):def __init__(self):self.num1def info_print(self)…

2024数字科技生态大会 | 紫光展锐携手中国电信助力数字科技高质量发展

2024年12月3日至5日,中国电信2024数字科技生态大会在广州举行,通过主题峰会、多场分论坛、重要签约及合作发布等环节,与合作伙伴共绘数字科技发展新愿景。紫光展锐作为中国电信的战略合作伙伴受邀参会,全面呈现了技术、产品创新进…

基于STM32的智慧宿舍系统(DAY5)_光照传感器、MQ2、电流传感器、紫外线传感器

注意上述右图的配置需要根据我们实际所使用的通道来,239.5这个是采样时间,根据需要调整,然后我们打到DMA配置项,如下图 这个地方只有DMA模式需要调整,完成上述配置后我们就可以生成代码了,然后我们按照如下…

NDK编译(使用Android.mk)C/C++程序和库

1、编译可执行目标文件 1.1、编写源代码 源代码可以是c或cpp文件&#xff0c;但一定要包含main函数&#xff0c;否则会报错。例如&#xff1a; //test.c #include <stdio.h> int main() {printf("Hello,NDK!"); } 1.2 编写Android.mk文件 编写Android.mk文…

使用Excel 对S型曲线加减速算法进行仿真

项目场景&#xff1a; 项目场景&#xff1a;代码中写了S型加减速算法&#xff0c;相查看生成的加减速数组&#xff0c;直观的展示出来&#xff0c;USB通信一次64字节&#xff0c;对于我几个个32位的频率值不太方便&#xff0c;于是采用Excel进行仿真。 代码中如何生成S加减速曲…

SwiftUI 列表(或 Form)子项中的 Picker 引起导航无法跳转的原因及解决

概述 在 SwiftUI 的界面布局中&#xff0c;列表&#xff08;List&#xff09;和 Form 是我们秃头码农们司空见惯的选择。不过大家是否知道&#xff1a;如果将 Picker 之类的视图嵌入到列表或 Form 的子项中会导致导航操作无法被触发。 从上图可以看到&#xff1a;当在 List 的…

【Elasticsearch入门到落地】3、es与mysql的概念对比

接上篇《2、正向索引和倒排索引》 上一篇我们学习了什么是正向索引和倒排索引。本篇我们来学习Elasticsearch与Mysql的概念与区别。 一、文档 Elasticsearch是面向文档存储的&#xff0c;可以是数据库中的一条商品数据&#xff0c;一个订单信息。文档数据会被序列化为json格式…

云服务器部署upload-labs-docker(文件上传靶场)环境 以及相关报错问题

环境的搭建 准备&#xff1a;云服务器&#xff08;本地的linux服务器&#xff08;版本最好不要是老的不然不兼容docker&#xff09;&#xff09; f8x配置docker环境&#xff1a; https://github.com/ffffffff0x/f8x 一键配置 docker拉取file-labs靶场 https://github.com…

HAMR技术进入云存储市场!

2024年12月3日&#xff0c;Seagate宣布其Mozaic 3系列HAMR&#xff08;热辅助磁记录&#xff09;硬盘获得了来自一家领先云服务提供商&#xff08;可能AWS、Azure或Google Cloud其中之一&#xff09;以及其他高容量硬盘客户的资格认证。 Seagate的Mozaic 3技术通过引入热辅助磁…

【错误记录】Android Studio 开发环境内存占用过多 ( 记录内存使用情况 )

文章目录 一、报错信息二、AS 内存记录分析 一、报错信息 使用 Android Studio 一段时间后 , 内存爆了 , 占用了 10G 的内存 ; 二、AS 内存记录分析 AS 刚启动时 , 只占 2014M 内存 ; 编译运行程序后 , 内存变为 2800M 左右 ; 设置显示的运行程序对应的日志 , 占用内存 就会稳定…

BERT模型的实现

本文用 pytorch 实现一个BERT模型。 食用方法&#xff1a; 直接下载完整实现&#xff0c; 在自己本地跑一遍&#xff0c;保证不报错。先完成数据预处理阶段&#xff08;1-4&#xff09;的代码阅读&#xff0c;然后按照如下关键点的描述完成代码的实现。自己看着代码手写后续部…

VSCode GDB远程嵌入开发板调试

VSCode GDB远程嵌入式开发板调试 一、原理 嵌入式系统中一般在 PC端运行 gdb工具&#xff0c;源码也是在 PC端&#xff0c;源码对应的可执行文件放到开发板中运行。为此我们需要在开发板中运行 gdbserver&#xff0c;通过网络与 PC端的 gdb进行通信。因此要想在 PC上通过 gdb…

Hadoop3集群实战:从零开始的搭建之旅

目录 一、概念 1.1 Hadoop是什么 1.2 历史 1.3 三大发行版本&#xff08;了解&#xff09; 1.4 优势 1.5 组成&#x1f497; 1.6 HDFS架构 1.7 YARN架构 1.8 MapReduce概述 1.9 HDFS\YARN\MapReduce关系 二、环境准备 2.1 准备模版虚拟机 2.2 安装必要软件 2.3 安…

RK3568笔记0:环境搭建

第1章 安装NFS服务器 NFS可以让不同的机器、不同的操作系统之间彼此共享文件 服务器安装NFS sudo apt-get install nfs-kernel-server服务器创建一个共享目录 sudo mkdir -p /home/lmz/workspaces/shared_directory配置共享目录到服务器中的配置文件中 sudo vim /etc/export…

Linux socket编程

目录 基础概念端口和端口号Socket&#xff08;套接字&#xff09;UDP和TCP的概念 Socket编程实战socket的类型struct sockaddrstruct sockaddr_in网络字节序socket APITCP网络编程流程分析UDP Demo样例 other概念补充setsockopt函数心跳机制面向字节流与面向报文的理解 参考 基…