3类需求层次结构关系,企业该如何选择和设置?

本文涉及的产品
云效 DevOps 流水线,基础版人数 不受限
云效 DevOps 制品仓库,基础版人数 不受限
云效 DevOps 测试管理,基础版人数 不受限
简介: 企业在云效上到底应该用需求来管,还是任务来管?需求、任务总是傻傻分不清楚。

企业在云效上到底应该用需求来管,还是任务来管?需求、任务总是傻傻分不清楚。

今天我们跟踪云效《阿里巴巴DevOps实践指南》一起解决交付问题的第一步,是搞清交付的是什么。否则,交付对象是模糊的,明确的过程就无从谈起,更无法保证过程效率。搞清楚交付的对象,具体包括它来源于哪里,为什么服务,有怎样的层次结构以及各个层次承载的价值。 接下来,我们将基于最典型的需求层次结构,介绍这部分内容。

典型的需求层次

image.png

典型的需求来源及需求层次关系

上图展示了典型的需求层次结构,它包含三个层次:业务需求、产品需求和技术任务。

01 业务需求

需求协作和交付过程,最终必须为业务服务——交付业务价值,并保障业务成功。业务需求来源或转化自原始的用户诉求或业务和产品的初始想法。这些原始的需求经过过滤、归类和分析转化为正式业务需求。

不同特征的组织,业务需求的习惯名称不同。比如:强调用户驱动的可能称之为“用户需求”,对外以产品形式售卖的可能称之为“解决方案”或“产品特性”。不管名称是什么,它们的共同特点是都服务于业务的目标,且最终都要落地为产品功能。在本篇中,我们统称其为“业务需求”,强调这个层次的业务属性。

业务需求承载业务价值,它是系统验收的基本单元,也是运营和发布(Release)的基本单元,需要时可以被独立地发布和运营。它一般由业务人员(如业务运营或业务分析师)负责收集、创建和维护。

02 产品需求

产品需求可以分为两类。第一类拆分自业务需求,直接服务于今天的业务,它一般由业务负责人或产品经理基于业务需求拆分而来;第二类源自产品的规划,它们不直接服务当前业务,而是为未来的业务做基础和提前的准备,典型的包括:产品的基础功能、提前的技术布局、技术重构等。它们通常由产品经理和技术团队创建和维护。

产品需求承载产品的具体功能,是产品集成和测试的基本单元,通常也是系统部署(Deploy)的基本单元。一个业务需求设计多个产品的功能时,它会被拆分到多个产品,对应多个产品需求。例如,业务需求是“在供应链中支持预先锁定库存”。为了实现它,需要供应链计划、库存管理、履约服务、财务结算等多个产品的功能改动,就对应多个产品需求。

03 技术任务

技术任务承载具体的实现工作,它是工作分配(Assign)的基本单元,也是实现的基本单元。技术任务分解自产品需求,它包括不同职能的任务,如前端、后端、算法等。技术任务的拆分通常由技术团队完成。

不同上下文中的层次结构变体

现实中,业务和产品复杂度不同,其层次结构也不同。下图是三个不同变体。从左到右分别适用于简单、典型和复杂的业务和产品。


image.png

基于不同的业务和产品复杂度的需求层次结构调整

图中的第一种模式适用于简单的业务。这时,业务与产品一一对应,业务需求与产品需求也合并为一层。这一模式下,原始需求直接转化为产品需求,产品需求分解为技术任务。这一模式适用于简单的互联网业务、企业应用或工具产品,业务在初创时都适合这一模式。

对于复杂的产品和业务,如果产品需求只有一个层次,可能会让产品需求过大。这时,可以将产品需求分解为两个层次——产品特性和产品需求两层,也就是图中的第三种模式,它适用于电信产品、基础技术产品、复杂的企业应用等复杂的业务领域。不过,对于大部分场景,第二种典型中的三个层次就已经足够。

赋予每个层次明确的意义和目的

不同方法体系,其需求层次结构的定义的依据不同,结果也不同,如:Scrum中常用Epic、Story和Task来描述需求的层次关系。这一层次结构的划分依据是规模。其中,Story(用户故事)是从用户角度对需求的描述,它要求能够在一个迭代完成;Epic(史诗)是巨型故事或故事集,需要被进一步分解为Story;Task(任务)是对Story的进一步拆分,要求能跟踪和更新日常进展,通常可以由单个人完成,工作量不超过20工作人时(Person Hours)。

image.png
需求类型的不同命名方式

作为通用方法,Scrum追求普适性,其推荐的需求层次刻意回避了业务属性。但是,它在提高普适性的同时,让协作过程的业务意义模糊,导致无法定义精准和有效的协作流程。

我们认为,只有明确需求层次以及每个层次承载的价值,我们才能够定义有意义的协作过程,过程相关的人员的职责和活动,并判断这一过程是否与所承载的价值匹配。因此,我们在设计需求的层次结构时,要求明确每个层次的意义和价值。

总结

以上,我们分析了需求的来源、需求的层次结构、以及每个层次所承载的价值。它是一个标准参考模型,本身具备较好的普适性。基于业务的特征不同,也可以加以定制。比如:因业务的复杂性不同,而增减层次;或者业务交付方式不同,而将业务需求改成其他名称。

清晰定义需求的层次结构,明确各个层次的价值。基于它们,我们就可以定义协作过程,实现并交付这些价值,保障协作和交付的效率和效果。下一节我们会介绍业务驱动的协作。

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
SVN版本控制系统
SVN是现在软件开发之中的主流软件版本控制工具,在工作之中利用SVN可以有效的解决多人开发的代码管理问题,本课程将为读者讲解SVN服务器的配置以及基于MyEclipse的SVN客户端插件的配置与使用,并且在讲解之中着重讲解了冲突的产生于解决。
相关文章
|
2月前
|
存储 NoSQL 数据处理
组合和继承怎么集成一个性能较好的项目
组合与继承是面向对象编程的核心概念,前者通过对象间关联实现高效解耦,后者则重用代码以节省空间和内存。组合常用于现代项目,利用代理与依赖注入简化代码管理;而继承简化了子模块对父模块资源的应用,但修改会影响整体。随着分层解耦及微服务架构如SpringCloud的出现,这些技术进一步优化了数据处理效率和服务响应性能,尤其在分布式存储与高并发场景下。同步异步调用、Redis分布式应用等也广泛运用组合与继承,实现代码和内存空间的有效复用。
|
5月前
|
缓存 JavaScript
计算属性和方法有什么区别?怎样选择
计算属性和方法有什么区别?怎样选择
|
6月前
|
设计模式 编译器 数据安全/隐私保护
C++ 多级继承与多重继承:代码组织与灵活性的平衡
C++的多级和多重继承允许类从多个基类继承,促进代码重用和组织。优点包括代码效率和灵活性,但复杂性、菱形继承问题(导致命名冲突和歧义)以及对基类修改的脆弱性是潜在缺点。建议使用接口继承或组合来避免菱形继承。访问控制规则遵循公有、私有和受保护继承的原则。在使用这些继承形式时,需谨慎权衡优缺点。
98 1
|
6月前
|
定位技术 计算机视觉 Windows
类间两种关系:继承、 组合
类间两种关系:继承、 组合
36 0
|
6月前
|
算法 编译器 C++
【C++ 概念区分】C++ 中覆盖,重写,隐藏 三者的区别
【C++ 概念区分】C++ 中覆盖,重写,隐藏 三者的区别
172 0
|
Java
类之间的比较
类之间的比较
65 0
|
存储 编译器 C语言
C++ 基础篇之类 & 对象的关系
C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计。类是 C++ 的核心特性,通常被称为用户定义的类型。
【C++之多层继承】成员在各类的范围内的访问属性
【C++之多层继承】成员在各类的范围内的访问属性
|
大数据 开发者
电商项目之层级调用原则讲解|学习笔记
快速学习电商项目之层级调用原则讲解
电商项目之层级调用原则讲解|学习笔记