岚海网络信息技术有限公司官方博客

精彩文集

精彩热评

软件开发中为什么尽量不要变更需求

  • 2020-09-08
  • 0
      在软件开发中,大家都会遇到过这样的问题:客户的一个新想法,就推翻了之前与客户经过再三讨论而确认定下来的需求。如果是功能性需求变更还会让人容易接受一些,毕竟功能性需求不实现的话,是会大大影响到软件产品的质量。但是一些非功能性的变更会让人很头疼,许多是看起来无关痛痒的、鸡毛蒜皮的变更,却是极为令人无语和无奈,甚至是烦恼和厌恶的。

    (1)什么是软件需求?
    软件需求的定义是:用户解决问题或达到目标所需的条件或功能。一般包含业务需求、用户需求、功能需求、行业隐含需求和一些非功能性需求。业务需求反映了客户对系统、产品高层次的目标要求;功能需求定义了开发人员必须实现的软件功能。所谓非功能性需求,是指为满足用户业务需求而必须具有除功能需求以外的特性。

    (2)非功能性需求变更的特点?
    让我们从客户角度和开发人员角度去看看非功能性需求的特点。首先,有些非功能性小需求从客户角度看起来工作量不大,但是实际上开发人员要耗费比较长的时间去完成这些小功能。其次,许多非功能性需求,如界面美观、操作方便等都是客户头脑一热、或领导一拍脑袋就部署下去的需求,往往是原来在需求分析阶段所没有注意的内容。

    (3)为什么增加需求软件公司会根据工作量增加费用?
    软件开发公司最大的成本其实是人力成本,如上面所说的,有时候客户提出的需求,从客户的的角度看起来工作量并不大,但实际上开发人员需要耗费较长的时间去处理这些需求,这其中增加了时间,在无形中也增加了软件开发公司的开发成本,所以当客户提出与原需求表不一样的需求是,软件开发公司会进行评估,如果工作量不大或是与开发原需求的时间差异不大的可以免费帮忙修改,但如果新提出的需求开发起来真的需要耗费较长时间或与原需求差异,则会增加一定费用的原因。

    其实,非功能性需求是常常很难做到客户满意的。原因是非功能性需求描述很困难,它很难像功能性需求那样,可以通过结构化和量化的词语来描述清楚。在描述这类需求时候,我们经常采用软件性能要好、操作要方便、软件界面要美观大方等较模糊的描述词语。例如,易用性就同时涉及到美工和UI界面、人机工程、交互式设计、心理学、用户行为模式等内容。这类描述词语都是脱离了软件的执行环境,是对人和相关的场景的描述,因此很难体现到软件架构设计和具体的实现中。

    所以,关于非功能性需求在项目开发中往往是很难做到尽善尽美的,通常非功能性需求都是需要到项目开发成型,功能性需求测试通过没有BUG以后,才会逐步进行优化。可能很多人疑惑为什么在项目开发过程中不能将功能性需求和非功能性需求同时兼顾,原因如下:

    (1)功能性需求可以通过结构化和量化的词语来描述清楚,描述清楚的需求,在开发过程中对比于非功能性需求开发起来效率、速度都更快。

    (2)非功能性需求需要与客户多次沟通,且每个人的理解能力、审美、操作习惯等因素都不会是一致的,所以哪怕多次沟通,但结果也有和客户的想法出现差异的情况,那么多次修改就会延长项目开发的周期,导致项目周期已经到了,但是功能性需求却并未全部完成;

    (3)功能性需求才是一个软件、网站使用的核心部分,而非功能性需求则是称托功能性需求的一个辅助部分,大多数客户开发软件、网站都希望能够在约定的时间内完成开发并投入使用,但若是功能性需求尚未完成,则表示程序无法正常运行,所以在开发过程中软件开发公司会将功能性需求进行优先开发,直至功能性需求BUG修复完成以后,才会逐步进行非功能性需求的优化。
全部 0 条评论