软件需求工程解析

  世间万物的产生追其源皆为一个起因——那就是其他事物对其的需求,软件也不例外,一个软件的诞生,往往是某些人或个体在生活或工作上遇到了一些问题,然后产生了一些需求,进而向工程师提出制作软件的要求。由此可见,需求对于软件工程的重要性,它是软件的产生的根本原因。

  那么需求究竟是什么?需求就是产品支持其拥有者的业务所必须完成的事,或让拥有者接受并感兴趣所必须具备的品质。什么是软件需求?软件需求是指用户解决问题或达到目标所需条件或权能(Capability)。以及系统或系统部件要满足合同、标准、规范或其它正式规定文档所需具有的条件或权能。也是一种反映前面两项所述条件或权能的文档说明。它包括功能性需求及非功能性需求,非功能性需求对设计和实现提出了限制,比如性能要求,质量标准,或者设计限制。

  对于软件需求工程的解析,软件工程主要活动包括以下几点:需求、系统分析和设计、编码、测试以及运行与维护。以上几点可以用一个金字塔形象地概括出来,金字塔从上到下依次为:需求:1、设计:5、编码:10、测试:20-50和运行和维护:200。最一开始我的理解是:以上几点在该金字塔中体现的是重要性所占的比重。然而一般仅将需求称为工程,主要原因在于:如果在需求阶段只需要花费1个时间单位就能够改正的错误;如果推迟到设计阶段改正就需要5个时间单位;如果推迟到测试阶段就可能达到20-50个时间单位;如果推迟到运行与维护阶段就可能需要花费200个时间单位。由此可见,我的理解较为偏执,是占的比重固然不错,但是这里指的仅仅是时间上所占的比重,例如:提出一个需求仅仅需要1分钟,而工程师需要花费5分钟去设计,花费10分钟去编码,最后还需要20-50分钟去测试,花费200分钟去运行和维护。

  对于需求工程的定义个范畴:需求阶段=纸上谈兵。随着开发阶段的不断深入,产生的人工制品也就不断增多。要进行修改,则需要考虑的东西就越多,代价越大。需求工作是用户需求到技术解决方案的转换,所以被称为“需求工程”。需求工程主要包括需求开发和需求管理两个主要范畴。需求开发:收集、分析、整理、编写、验证需求的全过程,重点在于开发出高质量的需求规格说明书。需求管理:对需求的变化全过程进行跟踪。重点在于确保开发的软件满足需求的定义。

  从金字塔中我们可以看出对于一个软件来说,需求的重要性,它是一个软件产生的根本原因,虽然它所占的时间比重较少,但是其重要性所占的比重是巨大的,没有需求就没有其他的实现,固然也就构不成金字塔。

原文地址:https://www.cnblogs.com/news1997/p/8559665.html