「首席架构师看敏捷建模」敏捷核心实践:怎么样排列需求?

简介: 「首席架构师看敏捷建模」敏捷核心实践:怎么样排列需求?

敏捷者希望开发高质量和高价值的软件,而开发高价值软件最简单的方法就是首先实现最高优先级的需求。这使他们能够最大化涉众的ROI。因为需求经常变化,您需要一个精简的、灵活的方法来进行需求变更管理:简而言之,敏捷者努力真正地管理变更,而不是阻止变更。这一做法有三个版本:

  • 产品待办事项列表(Scrum)
  • 工作项目列表(有纪律的敏捷)
  • 选择池(精益)

1. 产品待办事项列表:简单

图1概述了Scrum管理需求的方法,其中您的软件开发团队有一堆需要处理的优先级和估计需求(Scrum将这个优先级堆栈称为“产品backlog”)。有几个要点需要理解:

  • 新需求由项目涉众确定优先级,并添加到堆栈的适当位置。
  • 从根本上说,当涉及到需求优先级时,一个人需要成为最终的权威。在Scrum和纪律严明的敏捷交付(DAD)中,这个角色来自Scrum,这个人被称为产品负责人。
  • 尽管经常有许多项目涉众,包括最终用户、经理、架构师、运营人员,但仅举几个例子,产品所有者负责代表他们所有人。
  • 堆栈/待办事项列表最初是由您在项目开始时设想的需求所填充的(在Scrum中,他们称之为“填充待办事项列表”)。
  • 每次迭代(Scrum术语中的“sprint”),您的团队都将迭代的工作价值从栈顶提取出来,并承诺在迭代结束时实现它。
  • 您的项目涉众有权定义新的需求,改变他们对现有需求的想法,甚至根据他们认为合适的情况重新排列需求的优先级。
  • 利益相关者负责及时做出决策并提供信息。在一些项目中,业务分析师(通常扮演产品负责人的角色)可能会承担此职责。无论谁担任这个角色,都需要与其他利益相关者合作,确保每个人都得到公平的代表,这通常是一项艰巨的任务。
  • 非需求工作项目的优先级要么由团队与涉众协商,要么作为计划中空闲时间的一部分处理。许多Scrum团队现在不仅仅把需求(比如缺陷)放在他们的backlog上。

图1所示。Scrum需求管理。


2. 工作项目列表:有纪律的敏捷

图1中描述的方法非常简单,反映了我认为敏捷构建级别的思想。图2概述了一种更规范的方法,它扩展了上面描述的管理工作项的方法。这种方法是有纪律的敏捷交付(DAD)所建议的默认方法,两者都反映了敏捷交付团队所面临的现实世界。你应该考虑以下几个有趣的改进:

超越功能需求。我们知道我们做的不仅仅是在每次迭代中实现新的需求,我们经常做与需求无关的工作,比如接受培训,检查其他团队的产品,处理缺陷(我认为缺陷只是另一种类型的需求)等等。重点是,不仅仅需要将需求放在堆栈上,我们还需要工作项。

  • 采用风险价值方法。纪律严明的敏捷团队认识到开发团队面临着一些共同的风险,他们希望尽快解决这些风险。这些风险包括在项目早期达成涉众一致意见的需要,可以通过需求设想,或者开发一个共享的远景或者项目章程来解决这个风险。另一个常见的风险是需要证明您的体系结构策略(通过体系结构设想标识)确实有效。最有效的方法是通过为您的系统构建一个端到端框架(或钢框架)来使用工作代码证明您的体系结构,该框架解决了您的团队所面临的主要技术风险。有纪律的敏捷交付(DAD)团队将在项目的早期查看他们的工作项堆栈,通常是在项目的初始阶段/“迭代0”/“sprint 0”部分,以确定哪些需求展示了这些技术上有风险的特性。如果这些要求没有堆栈的顶部,他们常常因为风险和回报(值)倾向于使相互,然后他们用产品所有者讨论这个问题,看看他们能激励人(负责优先级)将这些需求转移到堆栈的顶部。如果一个高风险的需求目前接近于栈底,那么您应该质疑这个需求是否真的是需要的,因为很有可能您永远不会真正抽出时间来处理它,因为优先级更高的工作总是会成为先例。
  • 提前一点建模。因为我们知道所有的需求,更不用说一般的工作项,都不是平等创建的,所以我们不应该天真地假设我们应该在迭代开始的时候等待从堆栈顶部取出迭代的工作值。如果一个工作项非常复杂,需要比迭代计划会话中通常发生的更多的思考,该怎么办?纪律严明的敏捷团队将采用前瞻性建模实践,对工作项堆栈进行一两次迭代,并投入时间研究即将到来的复杂工作项,以降低总体项目风险。提前建模在Scrum中称为backlog梳理,揭示了Scrum实践中一些不必要的概念耦合。

图2。有纪律的敏捷工作管理流程。


3.选择池:精益

图3描述了一种在看板团队中常见的需求管理精益方法。需求/工作管理的敏捷方法和精益方法之间有几个关键的区别:

  • 选项。工作项被视为解决方案中要处理的潜在选项,而不是必需的工作项。顺便提一下,IT中的术语“需求”一直以来都是有问题的(如果某个东西是一个需求,那么如何将它的一部分或全部从您的交付范围中删除呢?)
  • 选项被管理为一个池。敏捷团队将工作项管理为优先级队列,精益团队将选项管理为一个池,当他们有能力执行相应的工作时,他们将从这个池中与涉众一起选择最有价值的工作。实际上,优先级是在团队涉众的准时(JIT)基础上完成的。这可能很复杂,因为单个涉众将有不同的优先级,因此需要进行权衡,而且团队可能支持不同的服务类别。当然,纪律严明的敏捷策略所描述的风险缓解问题也应该考虑接下来选择哪个选项。
  • 选项可能被组织到服务类中。并不是所有的选项都是相同的。在《看板》一书中,David J. Anderson描述了您的团队可能考虑的几种潜在的选项类别(Anderson将其称为服务类)。许多工作项属于“标准”类,它们的优先级主要基于它们对组织的业务价值。有些工作项目有固定的交付日期,这对于政府立法或与外部客户签订的合同所产生的需求来说是很常见的。您还可能有少量(希望如此)的加急工作项,比如针对生产问题的关键修复或高优先级的客户需求。最后,你可能有一些低优先级的“无形”工作项目,你知道在将来的某个时候你需要处理它们,你决定在团队认为合适的时候处理它们(也许是为了简化其他工作,从更具挑战性的工作中休息一下,……)。需要注意的是,这里描述的类别并不是一成不变的,您的团队可能会识别出不同的类别,或者根本不需要进行分类。此外,在上面描述的敏捷策略中,服务类可以被支持为多个队列。
  • 目标是限制正在进行的工作(WIP)。当敏捷团队努力选择一个固定数量的功能,刚好足够他们在一次迭代中实现时,精益团队选择产生一个连续的功能流,当他们有能力这样做时,将工作拉入他们的“交付系统”。限制WIP可以提高团队的交付可预测性,提高质量(由于反馈周期较短),并提高生产力。
  • 淘汰旧的工作项。精益团队通常会努力确定老化规则,如果一个工作项池中超过一定的时间,从池中移除的假设下,如果它已经很长时间没有重要到可以选择从池中就可能永远不会。如果工作项确实被证明是需要的,那么它总是可以在将来的某个日期添加到池中。请注意,老化规则在不同的团队之间会有所不同,一个团队可能需要3个月,而另一个团队可能需要5个月。此外,此策略可以应用于前面描述的产品backlog或工作项列表方法。

图3。精益工作管理流程。


利益相关者可以通过以下几种方式添加选项:

  • 当团队最初形成时,通过需求想象会话。
  • 以利益相关者认为的即兴方式。
  • 当选项池接近空时,通过有目的的建模会话。
  • 通过使用现有的生产系统来识别增强请求或缺陷报告。

4. 哪种策略适合你?

没有一种策略在所有情况下都是最好的,你需要确定并选择最适合你的策略。表1比较了这些策略。

表1。比较的策略。


相关文章
|
2月前
|
算法 物联网 定位技术
蓝牙室内定位技术解决方案:核心技术架构与优化实践
本文探讨了蓝牙iBeacon与Lora结合的室内定位技术,分析其在复杂室内环境中的优势与挑战。通过三层架构实现高精度定位,并提出硬件、算法与部署优化方向,助力智慧仓储、医疗等场景智能化升级。
143 0
蓝牙室内定位技术解决方案:核心技术架构与优化实践
|
2月前
|
数据采集 人工智能 安全
开源赋能双碳:MyEMS 能源管理系统的架构与实践价值
在全球碳中和趋势与“双碳”目标推动下,能源管理趋向精细化与智能化。MyEMS是一款基于Python开发的开源能源管理系统,具备灵活适配、功能全面的优势,覆盖工厂、建筑、数据中心等多元场景。系统支持能源数据采集、分析、可视化及设备管理、故障诊断、AI优化控制等功能,提供“监测-分析-优化”闭环解决方案。遵循“国家+省级+接入端”三级架构,MyEMS在重点用能单位能耗监测中发挥关键作用,助力实现能源效率提升与政策合规。开源模式降低了技术门槛,推动“双碳”目标落地。
115 0
|
2月前
|
人工智能 物联网 机器人
面向多模态感知与反思的智能体架构Agentic AI的实践路径与挑战
Agentic AI(能动智能体)代表人工智能从被动响应向主动规划、自主决策的范式转变。本文系统解析其核心架构,涵盖感知、记忆、意图识别、决策与执行五大模块,并探讨多智能体协作机制与通信协议设计。结合代码示例,展示意图识别、任务规划与异步执行的实现方式,分析该架构的优势与挑战,如高自主性与通信复杂性等问题。最后展望未来方向,包括引入RAG、LoRA与多模态感知等技术,推动Agentic AI在自动编程、机器人协作等场景的广泛应用。
面向多模态感知与反思的智能体架构Agentic AI的实践路径与挑战
|
4月前
|
监控 Linux 应用服务中间件
Linux多节点多硬盘部署MinIO:分布式MinIO集群部署指南搭建高可用架构实践
通过以上步骤,已成功基于已有的 MinIO 服务,扩展为一个 MinIO 集群。该集群具有高可用性和容错性,适合生产环境使用。如果有任何问题,请检查日志或参考MinIO 官方文档。作者联系方式vx:2743642415。
1162 57
|
3月前
|
消息中间件 存储 Kafka
一文带你从入门到实战全面掌握RocketMQ核心概念、架构部署、实践应用和高级特性
本文详细介绍了分布式消息中间件RocketMQ的核心概念、部署方式及使用方法。RocketMQ由阿里研发并开源,具有高性能、高可靠性和分布式特性,广泛应用于金融、互联网等领域。文章从环境搭建到消息类型的实战(普通消息、延迟消息、顺序消息和事务消息)进行了全面解析,并对比了三种消费者类型(PushConsumer、SimpleConsumer和PullConsumer)的特点与适用场景。最后总结了使用RocketMQ时的关键注意事项,如Topic和Tag的设计、监控告警的重要性以及性能与可靠性的平衡。通过学习本文,读者可掌握RocketMQ的使用精髓并灵活应用于实际项目中。
1758 7
 一文带你从入门到实战全面掌握RocketMQ核心概念、架构部署、实践应用和高级特性
|
5月前
|
存储 运维 Serverless
千万级数据秒级响应!碧桂园基于 EMR Serverless StarRocks 升级存算分离架构实践
碧桂园服务通过引入 EMR Serverless StarRocks 存算分离架构,解决了海量数据处理中的资源利用率低、并发能力不足等问题,显著降低了硬件和运维成本。实时查询性能提升8倍,查询出错率减少30倍,集群数据 SLA 达99.99%。此次技术升级不仅优化了用户体验,还结合AI打造了“一看”和“—问”智能场景助力精准决策与风险预测。
462 69
|
3月前
|
存储 缓存 运维
微信读书十周年,后台架构的技术演进和实践总结
微信读书经过了多年的发展,赢得了良好的用户口碑,后台系统的服务质量直接影响着用户的体验。团队多年来始终保持着“小而美”的基因,快速试错与迭代成为常态。后台团队在日常业务开发的同时,需要主动寻求更多架构上的突破,提升后台服务的可用性、扩展性,以不断适应业务与团队的变化。
128 0
|
5月前
|
存储 人工智能 开发框架
MCP 实践:基于 MCP 架构实现知识库答疑系统
文章探讨了AI Agent的发展趋势,并通过一个实际案例展示了如何基于MCP(Model Context Protocol)开发一个支持私有知识库的问答系统。
MCP 实践:基于 MCP 架构实现知识库答疑系统
|
4月前
|
缓存 算法 网络协议
IP代理技术原理深度解析:从基础架构到应用实践
IP代理是网络通信中的关键技术,通过构建中间层实现请求转发与信息过滤。其核心价值体现在身份伪装、访问控制和性能优化三个方面。文章详细解析了HTTP与SOCKS协议的工作机制,探讨了代理服务器从传统单线程到分布式集群的技术演进,并分析了在网络爬虫、跨境电商及企业安全等场景的应用。同时,面对协议识别、性能瓶颈和隐私合规等挑战,提出了多种解决方案。未来,IP代理将融合边缘计算、AI驱动优化及量子安全加密等趋势,持续发展为支撑现代互联网的重要基础设施。
278 2
|
4月前
|
人工智能 监控 前端开发
基于 Next.js 的书法字体生成工具架构设计与 SSR 优化实践
本项目是一款书法字体生成工具,采用 Next.js 14(App Router)与 Tailwind CSS 构建前端,阿里云 Serverless 部署后端。通过混合渲染策略(SSG/SSR/CSR)、Web Worker 异步计算及 CDN 字体分片加载优化性能。服务端借助阿里云函数计算处理计算密集型任务,将平均耗时从 1200ms 降至 280ms,支持 1000+ QPS。动态路由与 ARMS 监控提升工程化水平,未来计划引入 WebGPU 和 AI 字体风格迁移技术,进一步优化用户体验。

热门文章

最新文章