2.3 需求工程在软件开发中的地位
2.3.1 需求工程对软件开发的影响
从软件工程提出的各种开发模型中可看出,需求工程是软件开发过程中的一个阶段。有些改进的开发模型,如快速原型模型也是因用户需求问题而提出的。需求工程处于软件开发的开始阶段,提供了软件项目其余部分得以实施的根基。显然,如果在开发的后期出现错误,受到影响的只是与后期阶段相关的工作,修正错误通常也是相对容易的事情。然而,如果错误出现在开始的阶段,而且没有立即发现和纠正,那么所有后续阶段的工作都是在错误的基础上进行的,修正错误的成本将是很大的。这个道理也和修建房屋一样,如果房屋的地基存在问题,则在该地基上修建的房屋是否会牢靠就值得怀疑。因此,需求工程在软件开发中起着十分重要的作用。需求工程对软件开发的影响如下:
需求是制定项目计划的基础。因为开发资源和进度安排的估算都应建立在对最终软件系统的真正理解上。
需求工程所产生的最终产物(需求规格说明)是软件设计和软件实现的基础。因为软件设计工作要根据功能需求来确定系统的结构和模块,而模块又是编写代码的依据。
需求规格说明是测试工作和用户验收软件系统的依据。用户需求是测试工作的重要参考。如果未清楚说明软件系统在某些条件下的期望行为,系统测试人员将很难弄清楚正确的测试内容。此外,软件系统能否最终满足用户需求,与需求规格说明能否正确和完整地反映用户需求是紧密相关的。
需求规格说明是软件维护工作的依据。
因此,需求工程不再仅限于软件开发的最初阶段,其贯穿于软件系统的整个开发工作中。
2.3.2 需求工程面临的困难
需求工程是人们通过不断地认识和深入研究而形成的结果。需求工程对软件开发的影响是很大的。随着软件系统日益大型和复杂化,软件需求的开发和管理也日益复杂,而且需求工程自身也面临诸多有待解决的问题,如:
1)需求获取与需求分析的困难性。
有些需求可能用户也不是很清楚;
需要用户与开发人之间进行充分的交流和协商;
需求间的冲突和矛盾的检查以及解决;
需求是否完整和确定;
合适的需求建模的方法和技术。
2)需求描述语言和规范化的困难性。
怎样规范化用户需求;
规范化哪些用户需求;
非形式化和形式化描述语言的使用。
3)需求验证的困难性。
需求规格说明正确性的确认和验证;
验证的方法和技术;
如何进行自动验证。
4)需求管理的困难性。
需求规格说明书的质量保证;
需求规格说明书的版本管理;
需求变更的控制。
以上只是列举了需求工程面临的部分困难和问题。如何解决这些困难和问题,决定了需求工程的目的、研究内容和所要完成的实际工作。