需求学习——软件开发需求分析五个常见错误及应对措施

在软件开发的传统瀑布模型中,需求分析的第一个阶段也是最重要的阶段。这个阶段包括以最清楚的形式搜集与客户要求和定义有关的信息以及希望产品解决的问题。

这种分析包括了解客户的商业背景和限制、产品必须执行的功能、它必须实现的性能水平、以及它必须兼容的外部系统。用来了解这些问题的技巧包括客户面谈、使用情况和软件特性“购物清单”。分析结果一般以正式需求规范的形式呈现,并作为下一个步骤的输入。

至少,这是它理论上的应用情况。实际上,这个理论模型存在着许多问题,这些问题可能给分析过程的其它步骤造成延迟或连锁性错误。本文讨论项目经理在这个阶段中遇到的一些常见问题,并提出可能的解决方案。

[color=red]问题1:客户并不(确切地)知道他们需要什么 [/color]

在需求分析阶段,可能最常见的问题就是客户对于他们的需要仅有一个模糊的概念,而要由你提出合适的问题、进行必要的分析,把这个不确定的概念转化成一个正式文本化的软件需求规范;这个规范反过来又可用作一个项目计划和工程结构的基础。

要解决这个问题,你应当:

确保在项目开始之初,你用了足够的时间来了解项目的目标、交付成果和范围。
确定客户所使用的任何假设,用批评的眼光评估项目给终端用户可能带来的好处和风险。
尝试为项目写出一份具体的远景陈述,包括它提供的特殊功能或给用户带来的好处,以及希望它解决的所有商业问题。
让客户阅读、考虑并同意前面完成的软件需求规范,调整他们的期待,保证双方充分理解项目交付成果。
[color=red]问题2:需求在项目进行过程中发生改变 [/color]

软件开发项目中遇到的第二个问题是,随着项目的发展,在第一阶段定义的需求发生了变化。随着开发不断取得进展,软件原型得以确定,这时客户能够更加清楚的发现原始计划中存在的问题并做出必要的纠正,于是需求也因而改变。需求发生改变还可能是因为外部环境的变化要求改造原始的商业问题,并因此有必要开发一个与最初建议的解决方案全然不同的解决方案。优秀的项目经理意识到这些可能性,并往往制定了后备计划来应对这些变化。

要解决这个问题,你应当:

为变更请求的收集、分析和组合制定一个定义明确的过程,保证你的客户知道他/她的切入点。
为每个开发阶段设定转折点,超过这个转折点就不允许进行某些改变——例如,一旦一个模块完成75%,就不允许进行重大改变。
保证向所有股东清楚地通报变更请求(和变更批准),以及进行变更的根本原因,因而还要对主项目计划进行更新。
[color=red]问题3:客户的时间表不合理 [/color]

我们常常听到客户这样说:“这是一个非常紧迫的任务,我们需要项目在X周内完成。”常见的错误就是,没有进行详细分析,并了解项目的范围以及完成项目所必需的资源,就同意客户的要求。未经讨论就同意不合理的时间表,你实际上在给客户造成伤害:项目很有可能被延期(因为不可能按时完成),或存在质量问题(因为你在赶工,没有进行适当的检验)。

要解决这个问题,你应当:

把项目需求规范转化成一个项目计划、详细的任务和各阶段所需的资源,并为最佳情况、一般情况和最差情况建立模型。
保证项目计划考虑到有效资源的限制,并为检测和质量检验保留足够的时间。
与客户讨论最终期限问题,用你计划草案中的数据为你的陈述提供证据。如果你的计划是合理的,则很有可能随后的谈判会极为成效,并对双方有利。
[color=red]问题4:沟通客户、工程师和项目经理间存在的隔阂 [/color]

通常,客户和工程师之间由于背景差异以及理解技术条款的不同方式,他们无法进行有效地沟通。这可能导致混乱和严重的沟通问题;因此,项目经理的一项重要任务——特别是在需求分析阶段——就是保证双方能够准确了解交付成果以及必须完成的任务。

要解决这个问题,你应当:

在每次会议上做记录,并向整个项目团队分发这些记录。
注意用词一致。从一开始就列出一份你要使用的名词术语表,保证所有股东都有一份,并坚持使用这些术语。
[color=red]问题5:开发团队并不理解客户组织的政治策略[/color]

Bolman和Deal这两位学者认为一位高效的项目经理是一个把组织看作一个“竞争舞台”的人,它理解权力、冲突、谈判和联盟的重要性。这样的经理不仅熟悉运作和职能任务,他或她还认识到为通用目标制定议程、建立观点一致的联盟以及向抗拒性的经理说明一个特定职位合法性的重要性。

在给大型组织执行大型项目时,这些技巧尤其重要,因为信息常常分散在各处,因此需求分析往往会受到信任问题、内部利益冲突和信息低效这些因素的阻碍。

要解决这个问题,你应当:

审查现有的网络,确定你需要的信息和可能拥有这些信息的人。
培养同盟,发展关系,并系统地考虑你在组织内的社会资产。
以符合他们自己经历的方式说明问题,说服客户组织内的反对者。
使用初始访问/支撑点来推动议程。
希望上述讨论能够让你意识到需求分析阶段存在的可能缺陷,并提供一些避免这些缺陷的指导方法。祝你好运!
数据仓库需求分析指南 数据仓库项目是一个复杂的过程,项目的开发涉及到多方面的问题和风险:技术风险、数据质量问题、项目管理问题,但最项目中中最隐蔽、最容易忽略、最难控制的一环,就是需求的调研和分析。需求分析不深入、不准确的结果就是系统完成后没有人愿意使用它。因此我们要采取有效的措施的来避免这种情况。 阅读详情

相关推荐

需求分析在软件工程中的关键作用与最佳实践

在软件工程中,需求分析是项目成功的基础。它不仅决定了系统应实现的功能,还影响了项目的整个开发流程,直接关系到开发进度、质量以及成本。准确、全面的需求分析能帮助开发团队更好地理解用户需求,减少开发过程中的返工与错误,确保最终交付的软件系统符合预期。本文将深入探讨需求分析的关键作用以及实践中常用的最佳方法。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1070

软件需求分析案列_一个需求分析做的不够的案例

突然发现,这段时间被失败的项目包围着。其实认真想想,做了那么多项目,成功的不太记得了,失败的却总是纠缠着你。这个项目,要说它失败呢。它还运行了2-3年,业务一直在用它在监控库存,很依赖它来制定订货数量和时间。要说它成功呢,到现在业务部门还不断地要求修这里改那里。项目简介:是一个库存监控报警系统。系统每天计算那些东西的库存量低于一个标准值(该值根据时间段内的发料情况来设定,系统自动计算),把需要报警...

weixin_39834154的博客 1039

系统架构设计中的需求分析与建模

需求分析是系统架构设计的基础,它决定了系统的功能和非功能需求,并为后续的设计和开发提供了依据。通过有效的需求分析方法和建模技术,架构师可以确保系统架构设计能够满足用户的需求,并在面对需求变更和冲突时保持灵活性和可维护性。未来的系统架构设计将更加注重需求分析的自动化和智能化,架构师需要不断学习和适应新的技术趋势,以应对日益复杂的需求分析挑战。

Programming Talk 1720

终于明白了,一个软件的需求分析师多么麻烦!

开发一个软件,2天没搞明白需求,我也是醉了=-= 转载于:https://www.cnblogs.com/ITcong/p/4170091.html

weixin_30265103的博客 783

软件开发流程实践:需求分析到详细设计

在软件工程领域,需求分析是整个开发流程的起点,它定义了软件必须完成的任务和功能,以及需要满足的业务目标。需求分析阶段的目标是获取用户、客户、利益相关者的期望,并将这些期望转化为具体的、可操作的、可验证的软件需求。深入理解需求分析的定义和目标,有助于项目团队在规划和设计阶段避免方向性的错误,减少资源浪费,并提高最终产品的市场适应性。本章将概述需求分析的核心概念、步骤和最佳实践,为后续章节的功能性和非功能性需求分析打下坚实基础。

weixin_30415591的博客 831

软件项目管理——失败案例分析

软件项目管理——失败案例分析,IBM360系列的经验与教训

一个失败的案例

最近有一个新的项目团队在开发一个新的功能,并且决定尝试用Scrum,非常有幸被邀请加入,担任ScrumMaster。一开始的时候一切似乎都很顺利,我们召开了一次项目的启动会议,请负责的产品经理明确对结果的期望,并且进一步确定了PO的职责。更让我觉得好的是,由于这个项目的产品设计人员和专职的测试人员都在国外,为了确保质量,大家都同意本地的开发团队(都由开发人员组成,没有测试人员)不仅要关注代码开发,...

weixin_33859504的博客 801

Badcase归因分析“四部曲”

badcase是业内的专业名词,简单解释一下。bad是坏,case是案例,说白了就是模型或者具体规则无法很好预测的那些案例。以分类模型为例,本来一个样本应该是负类的,结果预测为正类,那这个样本就能被称为bad case。那相对应的就是good case就是优秀案例。

qq_25438419的博客 3517

软件开发需求分析五个常见错误及应对措施

<!--google_ad_client = "pub-0241434510974184";/* 博客文章广告728x90, */google_ad_slot = "7316585398";google_ad_width = 728;google_ad_height = 90;// -->在软件开发的传统瀑布模型中,需求分析的第一个阶段也是最重要的阶段。这个

MPU的专栏 3868

DeepSeek如何构建可扩展的 AI 驱动交易系统,基于 MetaTrader 5 与 Python 利用先进的数据处理、机器学习和容器化部署来优化算法交易。

MT5 Python API 架构设计分为三层:通信层:利用异步消息传递(例如 ZeroMQ 或标准套接字编程)支持每秒数万个数据请求。转换层: C++ 动态库有效地将 MT5 命令转换为 Python 对象(反之亦然),从而优化速度和内存使用率。接口层:提供Pythonic API,封装了所有终端功能,包括:1)实时价格订阅(滴答或秒级更新)2)历史数据检索(从M1到更高的时间范围)3)订单流监控(交易详情和市场深度)4)策略执行引擎(用于算法交易)

iCloudEnd的博客 1379

从技术债红线到系统治理:透视 SAP Clean Core 中的 Level D

SAP推出的Clean Core分级体系将扩展风险划分为A到D四个等级,其中Level D代表最高风险类别,涉及直接修改标准代码、隐式增强、使用noAPI对象等不被推荐的做法。这些做法虽然短期见效快,但会带来升级冲突、数据完整性风险等长期问题。SAP强调治理重点不是完全消除经典ABAP,而是优先清理Level D对象,逐步向稳定接口迁移。典型案例显示,依赖内部细节的扩展往往在系统升级或云迁移时集中暴露出问题。企业应通过工具链持续监控Level D占比,将其纳入技术债管理范畴。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1063

软件开发需求分析

本实验中,我们了解了需求分析的基础知识和方法流程,并运用这些知识和方法,制定了具体的需求分析方案,并确保项目按照规定时间和质量要求完成,为软件的开发和升级提供了有力的保障和基础。确定所开发项目的需求,在此基础上完善和细化可行性分析中数据流图的功能,可以采用不同的分析工具(如Rose或Visio),完成对项目的分析过程,给出系统的需求分析文档。确定所开发项目的需求,在此基础上完善和细化可行性分析中数据流图的功能,可以采用不同的分析工具(如Rose或Visio),完成对项目的分析过程,给出系统的需求分析文档。

m0_68447809的博客 1628

罗克韦尔AB PLC_FactoryTalk无法登录的解决方法

罗克韦尔AB PLC_FactoryTalk无法登录的解决方法

Robot_PLC_HMI_Automation 3574

测试需求分析

1.1  测试需求分析概述 1.2  功能测试需求分析方法   测试需求分析概述 一、什么是需求分析 我理解的需求分析就是要弄清楚用户需要的是什么功能,用户会怎样使用系统。这样我们测试的时候才能更加清楚的知道系统该怎么样运行,才能更好的设计测试用例,才能更好的测试。     测试需求分析是测试工作的第一步,经过需求分析,对原始需求列表中列出的每一个需求点,找到我们需要测试的测试要点;针...

Somnus 3734

SDMA 如何实现设备对主机内存的访问

摘要:SDMA(System Direct Memory Access)是PCIe设备直接访问主机内存的核心机制,使外设无需CPU干预即可高效读写系统RAM。其实现原理包括:设备作为主控发起DMA请求,通过PCIe Memory TLP访问主机物理地址;完整通路涉及驱动分配DMA安全内存、设备配置、地址转换(IOMMU)和中断通知等步骤;关键技术涵盖地址类型(HPA/IOVA)、TLP格式、缓存一致性和安全防护机制。SDMA广泛应用于GPU、网卡、NVMe等高性能场景,是现代异构计算的基础技术,需软硬件协同

MHD0815的博客 239

ximalaya 新xm-sign逆向思路

本文主要介绍目标网站新xm-sign值的逆向思路。仅代表个人理解,如有其他建议可在评论区沟通。声明仅仅记录一下自己的学习方法,不作为其他参考、更不作为商业用途。如有侵犯请联系本人删除。

weixin_66580433的博客 2017

万字长文教你如何做需求分析,建议收藏

▲点击上方“老于的笔记”关注公众号回复1,免费获取B端运营地图正文来了产品经理的基础工作就是需求分析,需求分析的本质是根据认知进行假设,然后给出判断。如果需求分析的结果出了问题,那么产品必然会失败。本文作者围绕如何进行需求分析展开分享,一起来看看吧。需求分析阶段的核心可以总结为两句话:“这个需求能不能做?做成什么样?”。据此可以将需求分析分为两个阶段:前半段的核心是分析需求的真实性和验证需求解决...

于连林 4356

C#【必备技能篇】Winform实现多语言切换(.resx文件的应用)

在实际的项目开发中,软件需要实现多语言切换。本文通过一个实际的例子,可以让你学习到这个技能。

星Yeah 的博客 1万+

现代项目需求分析:从功能到非功能,全面解读项目成功的基石

通过用户故事,我们可以从用户的角度清晰地描述功能需求。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 3287

Onnxruntime之YOLOP部署过程记录

魔改YoloP部署过程记录

如果想成为中心,那么就到中心去吧。 1924

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

我的软件项目需求分析总结

需求分析是项目开发的基础,基础打的牢不牢直接关系到后面所有的工作,是项目实施成败的关键     总体上说,我们的需求分析是做了,但是做得很不够,我们做的需求只解决了我们能做出这样的项目,但是没有解决这样的项目是不是真就是客户想要的。造成这种状况的原因主要是下面几个情况:     客户本身说不清楚     文物网是这样,中彰国际更是这样,但是这不能怪客户,毕竟客户在软件方面的知识要少的多,也没有相关

ivanlovetracy::伊凡::的专栏 1639

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

软件需求分析概述

目录需求规格说明书软件需求分析 需求规格说明书 软件需求分析 产品需求文档(PRD) 产品需求文档(PRD)是将商业需求文档(BRD)和市场需求文档(MRD)。 Royce(瀑布模型) 瀑布模型 RUP(Rational Unified Process)是将软件生存周期的各项活动规定为按固定顺序而连接的若干阶段工作,形如瀑布流水,最终得到软件产品。 缺点:过于理想。 需求...

weixin_44931630的博客 4210

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

浅谈测试需求分析

小编理解的需求分析就是要弄清楚用户需要的是什么功能,用户会怎样使用系统。这样测试时才能更清楚的知道系统该怎么样运行,才能更好的设计测试用例,才能更好的测试。测试需求分析是测试工作的第一步,经过需求分析,对原始需求列表中列出的每一个需求点,找到我们需要测试的测试要点;针对所确定的测试要点,分析测试执行时对应的测试方案/方法。

weixin_71807218的博客 953
上一篇: 学习软件开发的需求分析——软件开发中需求分析的20条法则
下一篇: 软件开发需求分析过程:提取、抽象、升华
quningstudy
博客等级 码龄19年 9粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值