【经验】项目管理:瀑布式、Scrum
1、瀑布式开发
| 流程 | 关键词 | 关键人员 | 输出 |
|---|---|---|---|
| 立项 | 简述、周期、预算 | 领导 | 立项申请表、立项评审表 |
| 策划 | 计划 | 项目经理、QA、CM | 各种计划书(项目、配置、测试等),评审 |
| 需求 | 功能 | 项目经理 | 功能列表、需求规格书、需求开发计划等,评审 |
| 设计 | UML | 开发 | 设计(概要、详细、数据库)、分析、评审 |
| 编码 | 写代码 | 开发 | 源码、单元测试、安装包、产品集成、代码审查 |
| 测试 | 测试 | 测试 | 需求测试、集成测试、系统测试、缺陷跟踪、评审 |
| 手册 | 使用文档 | 项目经理 | 安装手册、操作手册 |
| 验收 | 发布、验收 | 客户 | 确认表、验收单 |
| 结项 | 评价 | 领导 | 总结报告 |
| 质保 | 维护 | QA | 检查表、问题跟踪表 |
2、Scrum
2.1 简述
Scrum是迭代式增量软件开发过程,是敏捷方法论中的重要框架之一
百度百科:https://baike.baidu.com/item/Scrum/1698901?fr=aladdin
推荐博客:https://blog.csdn.net/a715167986/article/details/128716292
2.2 术语
角色
产品负责人 Product Owner: 负责维护产品订单的人,代表利益相关者的利益。
Scrum主管 Scrum Master: 为Scrum过程负责的人,确保scrum的正确使用并使得Scrum的收益最大化。一般不翻译。
开发团队 Team: 由负责自我管理开发产品的人组成的跨职能团队。
工件
产品列表 Product Backlog:根据用户价值进行优先级排序的高层需求。
冲刺订单 Sprint Backlog:要在冲刺中完成的任务的清单。
产品增量 Increment:最终交付给客户的内容
活动
计划会 Sprint Planning Meeting:在每个冲刺之初,由产品负责人讲解需求,并由开发团队进行估算的计划会议。
每日立会 Daily Standup Meeting:团队每天进行沟通的内部短会,因一般只有15分钟且站立进行而得名。
评审会 Review Meeting:在冲刺结束前给产品负责人演示并接受评价的会议。
反思会/回顾会 Retrospective Meeting:在冲刺结束后召开的关于自我持续改进的会议。
其他
冲刺 Sprint: 一个时间周期(通常在2周到1个月之间),开发团队会在此期间内完成所承诺的一组订单项的开发。
2.3 用户故事
用户故事(user story)是从用户的角度来描述用户渴望得到的功能。一个好的用户故事包括三个要素:
角色: 谁要使用这个功能。
活动: 需要完成什么样的功能或目标。
商业价值:为什么需要这个功能,这个功能带来什么样的价值。
用户故事通常按照如下的格式来表达:
英文:
As a <Role>, I want to <Activity>, so that <Business Value>.
中文:
作为一个<角色>, 我想要<活动>, 以便于<商业价值>
举例:
作为一个“网站管理员”,我想要“统计每天有多少人访问了我的网站”,以便于“我的赞助商了解我的网站会给他们带来什么收益。”
需要注意的是用户故事不能够使用技术语言来描述,要使用用户可以理解的业务语言来描述。
关于用户故事,Ron Jeffries用3个C来描述它:
卡片(Card) - 用户故事一般写在小的记事卡片上。卡片上可能会写上故事的简短描述,工作量估算等。
交谈(Conversation)- 用户故事背后的细节来源于和客户或者产品负责人的交流沟通。
确认(Confirmation)- 通过验收测试确认用户故事被正确完成。
用户故事的六个特性- INVEST
INVEST = Independent, Negotiable, Valuable, Estimable, Small, Testable独立性 可协商性 有价值 可以估算性 短小 可测试性
- 独立性(Independent)— 要尽可能的让一个用户故事独立于其他的用户故事。用户故事之间的依赖使得制定计划,确定优先级,工作量估算都变得很困难。通常我们可以通过组合用户故事和分解用户故事来减少依赖性。
- 可协商性(Negotiable)— 一个用户故事的内容要是可以协商的,用户故事不是合同。一个用户故事卡片上只是对用户故事的一个简短的描述,不包括太多的细节。具体的细节在沟通阶段产出。一个用户故事卡带有了太多的细节,实际上限制了和用户的沟通。
- 有价值(Valuable)— 每个故事必须对客户具有价值(无论是用户还是购买方)。一个让用户故事有价值的好方法是让客户来写下它们。一旦一个客户意识到这是一个用户故事并不是一个契约而且可以进行协商的时候,他们将非常乐意写下故事。
- 可以估算性(Estimable)—开发团队需要去估计一个用户故事以便确定优先级,工作量,安排计划。但是让开发者难以估计故事的问题来自:对于领域知识的缺乏(这种情况下需要更多的沟通),或者故事太大了(这时需要把故事切分成小些的)。
- 短小(Small)— 一个好的故事在工作量上要尽量短小,最好不要超过10个理想人/天的工作量,至少要确保的是在一个迭代或Sprint中能够完成。用户故事越大,在安排计划,工作量估算等方面的风险就会越大。
- 可测试性(Testable)—一个用户故事要是可以测试的,以便于确认它是可以完成的。如果一个用户故事不能够测试,那么你就无法知道它什么时候可以完成。一个不可测试的用户故事例子:软件应该是易于使用的。
2.4 史诗、特性
敏捷中需求通常被分为史诗、特性、用户故事三大类别,逐层往下,粒度越来越小。需求直到被分解至用户故事时,才能放入Scrum迭代。
史诗:由多个较小的故事组成的史诗。
特性:一组相关的故事,有价值的单方向功能集合。
用户故事:独立的较小用户的价值交付单元。有可能不足以单独发布。

2.5 猪与鸡
2.5.1 鸡和猪的故事
一天,一只鸡散步时遇见了猪。
鸡对猪说:“嗨,我们合伙开个餐厅吧。”
猪说:“好啊,那准备取什么店名呢?”
鸡说:“要不,就叫火腿和鸡蛋吧。”
猪直接拒绝了:“那可不行。我要割肉,你只要下蛋。这样下去,我迟早要完蛋。”
2.5.2 保护“猪”,兼顾“鸡”
这个故事实际上反映了软件开发过程中的2种不同角色,即需要完全投入的“猪”和只要部分投入的“鸡”。真实项目过程中,往往会发生这样的现象,产品经理或领导,喜欢临时往项目中新增任务,打乱原先的开发节奏,导致程序员压力倍增,士气低落,项目延期。
而Scrum,就是为了保护“猪”这种角色,兼顾“鸡”的感受,从而确保整个项目正常交付。它是一套敏捷开发流程。
2.6 Scrum用到的工具
- 用户故事。迭代计划会议用到,Product Owner以用户的角度去描述需求。如,作为一个学员,我希望能在做完一份试卷后,系统能针对我的薄弱点提供相应的指导及练习。
- Product Backlog。迭代计划会议用到,Product Owner事先将所有的用户故事按优先级排好,放到一个列表内,这个列表就是Product Backlog。
- Sprint Backlog。迭代计划会议用到,整个开发小组通过估点将用户故事按优先级移入到迭代计划内,迭代计划中待完成的用户故事列表即为Sprint Backlog。
- 估点。主要用于评估用户故事的大致工作量。下一篇文章会额外介绍估点。
- 燃尽图。主要用于迭代进度的管控。下一篇文章会额外介绍燃尽图。
2.7 Scrum标准流程
2.7.1 Scrum标准流程之Sprint Planning Meeting
迭代计划会议中,整个小组通过估点的方式,按优先级将用户故事从Product Backlog中移入到Sprint Backlog,表示整个小组承诺本迭代要做完的任务。做完的标准是测试通过,除非此任务不可测试。
2.7.2 Scrum标准流程之Daily Stand Up Meeting
迭代计划会后,小组成员按个人喜好领取自己的任务,并在每天的站立会议上讲一下自己昨天做了什么,今天准备作什么,大概什么时候完成,以及遇到了什么问题。当有人提出遇到难题时,Scrum Master需要在会后安排人帮忙解决,而不是在会议上直接解决。每个人大概30秒-1分钟,整个会议一般不超过15分钟。每一个工作日结束后,需要画燃尽图(下一篇文章会额外介绍)。
2.7.3 Scrum标准流程之Review Meeting
一个迭代开发阶段结束后,进入内部演示会议,工作成果给整个小组演示(包括Project Owner)。EduSoho的做法是,bug及小优化不演示,点数较大的功能点做演示。
2.7.4 Scrum标准流程之Restrospective Meeting
内部演示结束后,整个小组(包括Project Owner)召开一个迭代回顾会,回顾本迭代中大家哪些做的好,哪些做的不好,每人各列举3个好的以及不好的,列的时候只讲现象,不分析原因,不找解决方案。然后整个小组投票选出3个不好的,分析原因,寻找解决方案,并指定执行者。
为什么只解决3个不好的?每个小组的精力有限,如果要一个迭代内解决全部问题,不太现实,先优先解决3个最重要的,多次迭代后,会发现整个小组的变化越来越明显。
相关文章:
【经验】项目管理:瀑布式、Scrum
1、瀑布式开发 流程关键词关键人员输出立项简述、周期、预算领导立项申请表、立项评审表策划计划项目经理、QA、CM各种计划书(项目、配置、测试等),评审需求功能项目经理功能列表、需求规格书、需求开发计划等,评审设计UML开发设…...
Learning C++ No.17【STL No.7】双端队列
引言: 北京时间:2023/3/17/7:18,刚刚快乐的早锻炼回来(不对 ,应该说回来有一会了),因为此时我已经吃完早饭,洗过澡了;现在回想起上学期,就算是第二天需要晨跑…...
Snackbar
1.简介 位于底部的提示View 支持侧滑消失 同一时间只有一个 不支持跨Activity展示 国内使用率很低 2.基础使用 2.1 基本展示 Snackbar.make(view, "Content", Snackbar.LENGTH_LONG).show()2.2 设置点击事件 注意不设置点击事件回调,点击按钮的文字不…...
HummerRisk 使用教程:主机检测
1. 概述 HummerRisk 是开源的云原生安全平台,以非侵入的方式解决云原生环境的安全和治理问题。核心能力包括混合云的安全治理和容器云安全检测。 本文将介绍HummerRisk中的主机检测部分功能,包括如何管理主机、管理凭证,以及使用主机检测规…...
【Arduino无线气象站项目】
【Arduino无线气象站项目】 1. 概述2. Arduino无线气象站电路图3. 定制设计电路板4. Arduino无线气象站代码5. 总结1. 概述 使用DHT22传感器测量室外温度和湿度,并使用NRF24L01收发器模块将这些数据无线发送到室内机。在室内机,还有另一个用于测量室内温度和湿度的DHT22传感…...
HTTP详解
一,什么是HTTPHTTP(全称为“超文本传输协议”),是一种应用非常广泛的应用层协议,之前在《初识网络原理》的博客(初识网络原理_徐憨憨!的博客-CSDN博客)中,有详细讲解过TCP/IP五层模型,其中应用层描述了数据…...
cpufreq--处理器功耗控制
cpu 功耗控制 参考框架: cpufreq 框架。 cpufreq 框架提供 cpu 功耗管理接口,以及功耗管理方案。 用户可以通过功耗管理接口(以文件形式提供)来选择管理方案,并设置相关参数。 管理方案的实现则由具体的驱动来完成。…...
做技术,最忌讳东张西望
又好长时间没更新,研二了,忙着做实验、写论文、发论文,再加上给我导做一些事情(都习惯了,以前很不爽的事情,现在居然能这么平静的说出来)。 但这不是我今天说的重点,而是另外一件事…...
Oracle 常见报错问题汇总
Oracle 常见报错问题汇总 报错:ORA-01017: invalid username/password; logon denied报错:ORA-01031: insufficient privileges报错:"ORA-01034: ORACLE not available" 和 "ORA-27101: shared memory realm does not exist"报错:“ORA-00119: invalid…...
单片机连接有人云上传数据
首先采用有人物联网的模块 ,连接有人云平台服务器 看云平台相关配置配置连接设备在线后 添加设备添加设备完成后 添加变量模板 变量模板的添加方式如下 :本次采用的是标准的MODbus 协议添加一个温度变量温度变量如下显示云平台 下发数据 采集01 03 00 00…...
系统集成项目管理工程师:第18章项目风险管理学习笔记
第18章项目风险管理 一、目录 18.1 风险概述 18.1.1 风险的定义 18.1.2 风险的分类 18.1.3 风险的性质 18.2 项目风险管理 18.3 规划风险管理 18.3.1 规划风险管理的输入 18.3.2 规划风险管理的工具与技术 18.3.3 规划风险管理的输出 18.4 识别风险...
【笔试强训选择题】Day3.习题(错题)解析
文章目录 前言一、Day3习题(错题)解析二、Day3习题(原题)练习总结前言 今天我们将进入到第三天的练习,希望能一直坚持下去,不断反思总结错误,得到进步; 一、Day3习题(错…...
基于GPT-4的免费代码生成工具
大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…...
Android开发的这一年里,Jetpack的Room源码是怎么狠狠奖励我的?
简述 Android Jetpack的出现统一了Android开发生态,各种三方库逐渐被官方组件所取代。Room也同样如此,逐渐取代竞品成为最主流的数据库ORM框架。这当然不仅仅因为其官方身份,更是因为其良好的开发体验,大大降低了SQLite的使用门槛…...
推荐一款卸载软件的小工具-《UninstallToo》
目录 UninstallToo介绍 UninstallToo下载 UninstallToo使用 总结 UninstallToo介绍 Uninstall Tool 是一款可以用来替代“添加/删除程序”的工具。它允许您显示隐藏的安装程序,按名称过滤已安装程序的列表,强行写在程序,浏览注册表项目&a…...
线程池——JUC随记8
线程池使用方式 1、一池N线程(Executors.newFixedThreadPool(n)) import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors;public class ExecutorDemo {public static void main(String[] args) {ExecutorService execu…...
SpringCloudAlibaba微服务调用组件-Feign
SpringCloudAlibaba微服务调用组件-Feign 本项目代码与笔记已存放在Gitee仓库 地址: 代码,笔记 文章目录SpringCloudAlibaba微服务调用组件-Feign1. 什么是Feign1.1 优势2. Spring Cloud Alibaba快速整合OpenFeign1)引入依赖2)编写…...
高效学习方法论
2023.03.17 《程序员的三门课:技术精进、架构修炼、管理探秘 / 于君泽等著》学习笔记 学会学习一、高效学习的方法1、管理好自己的目标1)评估能力2)制定目标3)评估目标2、利用好碎片时间3、在同一时间只做一件事二、高效学习的途径…...
C语言结构体(一篇学会)
C语言结构体 在C语言中,结构体是一种自定义的数据类型,它允许用户将不同类型的数据组合在一起。结构体由多个变量组成,这些变量称为结构体的成员。结构体成员可以是不同的数据类型,如整数、浮点数、字符或其他结构体等。 结构体…...
嵌入式软件开发之Linux下C编程
目录 前沿 Hello World! 编写代码 编译代码 GCC编译器 gcc 命令 编译错误警告 编译流程 Makefile 基础 何为 Makefile Makefile 的引入 前沿 在 Windows 下我们可以使用各种各样的 IDE 进行编程,比如强大的 Visual Studio。但是在Ubuntu 下如何进…...
微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...
Prompt Tuning、P-Tuning、Prefix Tuning的区别
一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
Kafka入门-生产者
生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...
【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验
Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...
二维FDTD算法仿真
二维FDTD算法仿真,并带完全匹配层,输入波形为高斯波、平面波 FDTD_二维/FDTD.zip , 6075 FDTD_二维/FDTD_31.m , 1029 FDTD_二维/FDTD_32.m , 2806 FDTD_二维/FDTD_33.m , 3782 FDTD_二维/FDTD_34.m , 4182 FDTD_二维/FDTD_35.m , 4793...
Vue 3 + WebSocket 实战:公司通知实时推送功能详解
📢 Vue 3 WebSocket 实战:公司通知实时推送功能详解 📌 收藏 点赞 关注,项目中要用到推送功能时就不怕找不到了! 实时通知是企业系统中常见的功能,比如:管理员发布通知后,所有用户…...
TJCTF 2025
还以为是天津的。这个比较容易,虽然绕了点弯,可还是把CP AK了,不过我会的别人也会,还是没啥名次。记录一下吧。 Crypto bacon-bits with open(flag.txt) as f: flag f.read().strip() with open(text.txt) as t: text t.read…...
