持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第30天
软件生产中的需求问题
软件需求技术的发展:
- 二十世纪五十年代,无处理需求,开发以机器为中心
- 六十年代,进行草图分析,以应用为中心
- 七十年代,需求分析,形式化方法
- 九十年代,需求分析,面向对象,软件膨胀时期
根据调查,需求因素
-
对成功项目的影响指数为53.9%
-
对问题项目的影响指数为55.6%
-
对失败项目的影响指数为60.9%
需求问题是当前软件开发面临的主要问题
软件的模拟特性
在导致需求问题的原因当中,一个最重要的原因是:未能很好地理解和掌握“应用型”软件的模拟特性以及由此而产生的一系列影响和要求。
软件的模拟特性来源于其知识载体的特性:软件在运行中表现出来的特性、行为应该和应用的现实情况保持一致。这样,人们通过观察软件的表现就可以得出相应现实问题的答案,即软件“模拟”了现实。
例如:图书管理软件中记录的借书情况和现实中发生的借书事件是一致的,软件只是对现实事件的模拟
这种对现实进行模拟的软件我们常叫做应用型软件
在实践当中,对应用型软件的“模拟”特性理解不透彻或应用不坚决的问题普遍存在。
具体原因是在实际工作中,虽然大部分软件开发人员将其主要精力都消耗在应用型软件的生产中,但他们每天接触更多的却是工具软件。
因此,开发人员可能会受工作环境的影响,常用工具型软件相关的评判标准及生产过程来理解应用型软件,往往对应用型软件的“模拟”特性理解不透彻或应用不坚决,进而导致对需求处理阶段重视不足或者在需求阶段轻视领域知识研究,应用型软件的生产就会发生需求问题。
在进行需求分析时,人们对软件自身特性投入很大精力的同时,对本应投入很大精力的问题背景和应用环境却常常关注不足。
需求问题的具体原因分析
软件生产中产生需求问题的最大原因在于对应用软件的模拟特性理解不透彻或应用不坚决,它会导致软件开发者产生轻视需求的态度问题。另外,还有一些技术原因也会导致需求问题的产生。
例如:
1.非技术性和社会性因素重视不足
对于应用型软件的模拟特性使得需求处理具有很突出的特性。在需求处理阶段,除了专注于技术性要求外,而非技术性和社会性因素也是不可缺少的必要因素,否则同样会导致软件开发的失败。
一方面,通过建模与分析才能将混乱、模糊的用户需求变成清晰、明确的软件需求;另一方面,建模与分析的理论可以帮助人们系统化地看待问题,使得需求处理活动更好的进行。
2.传统需求分析方法的缺陷
编程 ->设计->分析
传统的结构化和面向对象方法都是最先在编程领域取得成功的。
设计和编程都有构建高质量(健壮性、可维护性、适应性等等)软件的共同目标,而且使用相同的概念和组织机制保证了从设计到编程的平滑过渡,所以,它们在设计领域的应用也取得了成功
但是需求分析除了拥有构建高质量软件的目标之外,还有一个更加重要的目标是理解现实 ,这是传统分析方法所拥有的概念和组织机制无法实现的。
3.软件规模的日益扩大
一方面提高了需求处理中非技术性和社会性因素的影响比重
另一方面也进一步放大了传统技术在需求处理阶段的不适应性
组织部门的划分、传统与惯例、规章和约束、行业特性和行业约定、社会地位和社会价值等组织结构文化和社会背景方面的因素会对需求分析的正确性产生一定的影响
4.需求问题的高代价性
如果在需求处理过程中有错误未内解决,则其后的所有阶段都会受到影响,而且需求错误修复的代价是高昂的。