一、MoSCoW模型是什么

MoSCoW模型是在项目管理、软件开发中使用的一种排序优先级的方法,以便开发人员、产品经理、客户对每个需求交付的重要性达成共识。

MoSCoW是一个首字母缩略词,代表:

  • M(Must have):必须有。这些是产品成功的关键任务功能,通常是MVP(最小可行产品)的功能,例如微信的聊天、添加好友的功能。
  • S(Should have): 应该有。这些功能很重要,但不是必需的。虽然’应该有’的要求与’必须有’一样重要,但它们通常可以用另一种方式来代替,去满足客户要求。
  • C(Could have):可以有。这些要求是客户期望的,但不是必需的。可以提高用户体验,或提高客户满意度。如果时间充足,资源允许,通常会包括这些功能。但如果交货时间紧张,通常现阶段不会做,会挪到下一阶段做。
  • W(Won’t have): 不会有。最不重要,最低回报项目,或在当下是不适合的要求。不会被计划到当前交货计划中。“不会有”会被要求删除,或重新考虑。

总的来说,MoSCow模型为我们提供了一种思考方式,围绕实际产出交付物确定优先级,引导我们重新思考迭代中的需求。

二、为什么要使用MoSCow模型?

1、优先级管理:MoSCoW模型帮助团队明确需求的优先级,确保最重要的需求得到满足。通过将需求分类为Must(必须有)、Should(应该有)、Could(可以有)和Won't(不会有),团队可以更好地理解和管理需求的重要性。

2、风险管理:将需求按照优先级分类可以帮助团队在项目实施过程中更好地管理风险。Must级别的需求通常是项目的核心功能,如果这些需求无法满足,项目可能会失败。通过优先处理这些关键需求,团队可以减少项目失败的风险。

3、交付价值:MoSCoW模型有助于团队在有限的时间和资源下,优先交付最有价值的功能。通过明确不同需求的优先级,团队可以确保在项目进行过程中首先交付最重要的功能,从而提供更大的价值给用户或客户。

4、沟通和共识:MoSCoW模型提供了一种简单且易于理解的方式来描述和沟通需求的优先级。通过使用这个模型,团队成员和利益相关者可以更容易地就需求的重要性达成共识,避免冲突和误解。

三、MoSCoW模型如何使用

Why Companies Need to do a Better Job of Prioritizing Features这篇文章中,作者介绍了三种方法:

1、按知识价值排序

风险是未知的,一旦出现下面几种信号,是时候停止考虑这些功能了,要开始考虑降低风险了。

  • 团队:“我们不知道这是否可行…”
  • 产品负责人:“我不知道客户对这个怎么反应。”
  • 架构师:“我不确定这个平台是否支持这个功能。”
  • 业务分析师:“我还没有弄清楚那部分的需求。”
  • 测试人员:“我怎么测呢?”

对于如上的每一个例子,都是缺乏知识的清晰信号,从而妨碍了相关人员有信心地往前走。

2、按增收排序

“举个例子,在付款时,用户体验模型显示:有15%的人选择【Paypal】直接付款流程。如果Paypal作为支付方式,将会大量地降低购物车放弃率,从而收入会增加10%-15%。”

那如何计算这个功能潜在的增加收入?

创建一个可比的标准,用于衡量当前的收入差距,并量化潜在的收入增加(以百分比或美元表示)与增加收入所需的成本(超过一年)。对于所有与增加收入相关的功能,按照递减的增收排序。

3、按成本节省排序

“旧平台每笔交易需要10秒,而新平台每笔交易需要7秒。把功能挪到新的平台上,每笔交易会节省30%的时间,而且每个月我们会做超过100万笔的交易。”

现实生活中的大多数情况会更复杂混乱。

节省时间的功能都有助于降低成本,例如自动化手动任务。调查你的客户在手动执行该任务时所花费的时间,并使用该人的“成本/小时”来计算成本节省的具体数值。有时,通过削减一些功能,可以实现成本的节约,例如推出仅包含核心功能的“轻量化”版本软件。

创建一个开放的API,允许开发人员创建能够节省成本的功能。通过将功能开发任务转移到开发社区中,个人开发者将负责提供资金并支持这个插件。

四、最后小结

MoSCoW模型虽然看上去简单,但内涵丰富。“需求”可以算是各角色矛盾的核心了,想想那些年产品经理和研发人员打过的嘴仗、项目交付前曾拼过的命……千言万语汇成一句话:需求管理不规范,项目交付两行泪!快去试试用MoSCoW来进行需求管理吧!

需求太多处理不过来?MoSCoW模型帮你的更多相关文章

  1. 记一次构建SaaS平台项目失败后的反思(收集的客户需求太少,且没有区分重点,闭门造车。技术演变要渐进)

    记一次构建SaaS平台项目失败后的反思 前言: 笔者从2017年起开始着手将公司现有的软件系统改造成多租户模式,以降低整个系统的运营成本.但最后这个项目以失败告终.今天,我将对这个SaaS项目是如何走 ...

  2. 移动硬盘临时文件太多怎么办,python黑科技帮你解决

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 星安果 PS:如果想了解更多关于python的应用,可以私信我,或者 ...

  3. 传统开发模型vs敏捷开发模型——过程模型的变革

    一.概念框架 在了解一个新概念的时候,最好的方法就是把它插入到原有的概念体系中.在不仅有助于对概念的记忆,更利于深刻地认识概念的本质.精髓.下图说明了"敏捷开发"在软件工程理论体系 ...

  4. 有关基于模型的设计(MBD)一些概念和理解(zz)

    http://www.matlabsky.com/thread-38774-1-1.html 本文转载于MathWorks中国高级工程师董淑成的帖子内容.为了方便阅读,对原文进行了重新整理编辑. 之前 ...

  5. (转)iOS Wow体验 - 第六章 - 交互模型与创新的产品概念(2)

    本文是<iOS Wow Factor:Apps and UX Design Techniques for iPhone and iPad>第六章译文精选的第二部分,其余章节将陆续放出.上一 ...

  6. A_Pancers团队作业4—基于原型的团队项目需求调研与分析

    任务1:实施团队项目软件用户调研活动. (1)用户调研对象:我们的项目软件是基于安卓系统的音乐播放器,以设计出操作简单的音乐播放器为目的,所以本次用户调研的对象主要以身边的老人为主,对他们听音乐,听戏 ...

  7. django中模型详解-字段类型与约束条件

    这片博文来详细说明django模型的使用,涉及到django模型的创建,字段介绍,以及django模型的crud操作,以及一对一等操作. 在使用模型之前,我们首先设置数据库选项,django的默认数据 ...

  8. 【Social Listening实战】当数据分析遭遇心理动力学:用户深层次的情感需求浮出水面

    本文转自知乎 作者:苏格兰折耳喵 ----------------------------------------------------- 本文篇幅较长,分为五部分,在中间部分有关于心理分析工具的介 ...

  9. 《TP5.0学习笔记---模型篇》

    https://blog.csdn.net/self_realian/article/details/78596261 一.什么是模型 为什么我们要在项目中使用模型,其实我们知道,我们可以直接在控制器 ...

  10. 什么是Java内存模型

    转载 : https://www.jianshu.com/p/bf158fbb2432 在知识星球中,有个小伙伴提了一个问题: 有一个关于JVM名词定义的问题,说”JVM内存模型“,有人会说是关于JV ...

随机推荐

  1. 2023-03-24:音视频mp3和h264混合(muxer)编码为mp4,用go语言编写。

    2023-03-24:音视频mp3和h264混合(muxer)编码为mp4,用go语言编写. 答案2023-03-24: 这是一个使用FFmpeg库将MP3和H.264混合编码为MP4的Go语言程序. ...

  2. 2022-01-03:比如arr = {3,1,2,4}, 下标对应是:0 1 2 3, 你最开始选择一个下标进行操作,一旦最开始确定了是哪个下标,以后都只能在这个下标上进行操作。 比如你选定1下标,

    2022-01-03:比如arr = {3,1,2,4}, 下标对应是:0 1 2 3, 你最开始选择一个下标进行操作,一旦最开始确定了是哪个下标,以后都只能在这个下标上进行操作. 比如你选定1下标, ...

  3. 2020-06-11-ASP.NET Core Blazor 子组件父组件数据同步的问题

    上一篇写数据绑定的文章,写到最后留了一个坑.当子组件绑定父组件的一个字段,并且子组件修改它的时候父组件不能实时进行同步更新UI的问题,最近终于在Blazui作者的指导下搞定了. UserInfo类要实 ...

  4. 公众号接入 ChatGPT 了!

    虽迟但到,用了一段时间的chatgpt,功能确实令人惊叹,也是第一次体验到了交互式编程.不得不说,未来已来,花了一些时间,终于把chatgpt接入到了公众号! 使用方法 打开公众号的对话框,直接提问! ...

  5. STM32H5移植zbar记录

    ZBar是一种流行的二维码扫描和解码工具,它在嵌入式系统中拥有广泛的应用.在嵌入式系统中,我们面临着有限的资源和更严格的性能要求,因此,选择适当的库来完成特定的任务非常重要. ZBar适用于各种嵌入式 ...

  6. Charles一文全明白

    自从用上了Mac本,抓包工具也从Fiddler换成了Charles,用了这么长时间,也是该对Charles做一个总结了,避免自己下次配置的时候又忘记怎么操作 1.Charles是什么? Charles ...

  7. Java的Object类的方法

    Java的Object类是所有类的根类,它提供了一些通用的方法.下面是一些常用的Object类方法: 1. equals(Object obj):判断当前对象是否与给定对象相等.默认情况下,equal ...

  8. 【python基础】复杂数据类型-列表类型(排序/长度/遍历)

    1.列表数据元素排序 在创建的列表中,数据元素的排列顺序常常是无法预测的.这虽然在大多数情况下都是不可避免的,但经常需要以特定的顺序呈现信息.有时候希望保留列表数据元素最初的排列顺序,而有时候又需要调 ...

  9. 【python基础】复杂数据类型-列表类型(列表切片)

    1.列表切片 前面学习的是如何处理列表的所有数据元素.python还可以处理列表的部分元素,python称之为切片. 1.1创建切片 创建切片,可指定要使用的第一个数据元素的索引和最后一个数据元素的索 ...

  10. x86 机器指令编码规则

    x86 机器指令编码依次由一下部分组成: 指令前缀(prefix,非必需) 操作码(opcode,必需) 寻址方式 R/M(ModR/M,非必需) 比例因子-变址-基址(SIB,非必需) 地址偏移量( ...