当前位置: 首页 > news >正文

[SE]软件项目需求分析为什么困难

有几种原因使需求分析变得困难:(1)客户说不清楚需求;(2)需求自身经常变动;(3)分析人员或客户理解有误。

1 客户说不清楚需求

有些客户对需求只有朦胧的感觉,当然说不清楚具体的需求。例如全国各地的很多政府机构在搞网络建设,这些单位的领导和办公人员大多不清楚计算机网络有什么用,反而要软件系统分析人员替他们设想需求。这类工程的需求是如此的主观,以致产生很多贪污腐败现象。

有 些客户心里非常清楚想要什么,但却说不明白。读者可能很不以为然。就举日常生活的事例吧,比如说买鞋子。我们非常了解自已的脚,但没法说清楚脚的大小和形 状。只能拿鞋子去试,试穿时感觉到舒服才会买鞋(居然也有神通广大的售货员,看一眼客户的手,就知道应该穿什么样的鞋)。

如果客户本身就 懂软件开发,能把需求说得清清楚楚,这样的需求分析将会非常轻松、愉快。如果客户全不懂软件,但信任软件开发方,这事也好办。分析人员可以引导客户,先阐 述常规的需求,再由客户否定不需要的,最终确定客户真正的需求。最怕的就是“不懂装懂”或者“半懂充内行”的客户,他们会提出不切实际的需求。如果这些客 户甚至觉得自己是上帝的爸爸,那么沟通和协商都会很困难。

2 需求自身经常变动

唐僧曾说:“妖要是有了仁慈之心,就不再是妖,是人妖。”(《大话西游之大圣娶亲》)
连妖都会变心,别说人了。所以喜新厌旧乃人之常情,世界也因此变得多姿多彩。
软件的需求会变化吗?

答:据历史记载,没有一个软件的需求改动少于三次。唯一只改动需求两次的客户是个死人。这个可怜的家伙还是在运送第三次需求的路上被车子撞死的。[Cline 1995]
让我们先接受“需求会变动”这个事实吧,免得在需求变动时惊慌失措。明白“需求会变动”这个道理后,在进行需求分析时就要留点神:
(1)尽可能地分析清楚哪些是稳定的需求,哪些是易变的需求。以便在进行系统设计时,将软件的核心建筑在稳定的需求上,否则将会吃尽苦头。
(2)在合同中一定要说清楚“做什么”和“不做什么”。如果合同含含糊糊,日后扯皮的事情就多。要防止象韩复渠那样,在别人请他喝酒吃饭时他什么都点头(人家就更加献殷勤),吃完了他就宣布刚才答应的事都不算数,便扬长而去。

3 分析人员或客户理解有误

有个外星人间谍潜伏到地球刺探情报,它给上司写了一份报告:“主宰地球的是车。它们喝汽油,靠四个轮子滚动前进。嗓门极大,在夜里双眼能射出强光。……有趣的是,车里住着一种叫作‘人’的寄生虫,这些寄生虫完全控制了车。”

软 件系统分析人员不可能都是全才。客户表达的需求,不同的分析人员可能有不同的理解。如果分析人员理解错了,可能会导致开发人员白干活,吃力不讨好。我读中 学时候最怕写作文逃题,如果逃题了,不管作文写得多长,总是零分。所以分析人员写好需求说明书后,要请客户方的各个代表验证。如果问题很复杂,双方都不 明白,就有必要请开发人员快速构造软件的原型,双方再次论证需求说明书是否正确。

由于客户大多不懂软件,他们可能觉得软件是万能的,会提出一些无法实现的需求。有时客户还会把软件系统分析人员的建议或答复给想歪了。

有一个软件人员滔滔不绝地向客户讲解在“信息高速公路上做广告”的种种好处,客户听得津津有味。最后,心动的客户对软件人员说:“好得很,就让我们马上行动起来吧。请您决定广告牌的尺寸和放在哪条高速公路上,我立即派人去做。”

为什么软件系统分析员的工资要比普通程序员高?就是因为需求分析困难嘛。

转载于:https://www.cnblogs.com/RoyCNNK/articles/2977209.html

相关文章:

  • JS求一个字符串的长度
  • JS中的prototype
  • html5 Canvas 如何自适应屏幕大小
  • 手机web——自适应网页设计(html/css控制)
  • @media screen 针对不同移动设备
  • 网站页面性能优化的34条黄金守则
  • IE和Firefox的Javascript兼容性总结
  • HTML本地存储之IndexedDB(1)
  • 关于Web Worker的一些心得
  • 关于Web Worker的一些心得(二)
  • displaynone与visiblehidden的区别
  • html5横、竖屏状态 以及禁止横屏
  • Ext3.2转Ext4要点
  • html5 canvas 详细使用教程
  • SVG 与 Canvas:如何选择
  • 【知识碎片】第三方登录弹窗效果
  • angular2 简述
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • ES6之路之模块详解
  • Python_OOP
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • Vultr 教程目录
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 检测对象或数组
  • 解析 Webpack中import、require、按需加载的执行过程
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 再次简单明了总结flex布局,一看就懂...
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • ​业务双活的数据切换思路设计(下)
  • ​一些不规范的GTID使用场景
  • # 飞书APP集成平台-数字化落地
  • #android不同版本废弃api,新api。
  • #define 用法
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (4) PIVOT 和 UPIVOT 的使用
  • (C#)一个最简单的链表类
  • (C语言)fgets与fputs函数详解
  • (C语言)逆序输出字符串
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (一)基于IDEA的JAVA基础1
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • .bat批处理(一):@echo off
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?
  • .sdf和.msp文件读取
  • /etc/fstab 只读无法修改的解决办法
  • @cacheable 是否缓存成功_Spring Cache缓存注解
  • [1] 平面(Plane)图形的生成算法
  • [100天算法】-x 的平方根(day 61)
  • [BUUCTF]-Reverse:reverse3解析
  • [BZOJ 4034][HAOI2015]T2 [树链剖分]
  • [BZOJ4566][HAOI2016]找相同字符(SAM)