APP下载

浅论软件需求分析

2012-08-15董文彬

科技视界 2012年26期
关键词:管理工具开发人员开发者

董文彬

(同济大学 中国 上海 200092)

0 引言

作为客户我们都有过类似的经验:一个不能进行一项基本操作的软件是多么令人烦恼。尽管开发者最后会满足要求,但客户也不会感激他。而从开发者的角度来说,在整个系统完成之后,用户再提出对功能的进一步要求是多么烦人的事。

在开发中遇到的上述的问题,都是由于收集、编写等需求分析过程中的失误带来的,这也是整个软件行业的普遍问题:过于侧重于开发而忽略了软件需求分析的重要性。实际上,在软件开发技术中,软件需求分析是软件开发周期非常重要的一步,也是整个软件开发的基础,关系到软件工程的成败和软件产品的质量,是软件项目是否成功的重要因素之一。

1 软件分析的任务

每个软件产品都是为了使其用户能够以某种方式改善自己的生活、提高自己的工作效率,所以,开发者必须要详细的了解用户需要什么,并总结出功能需求来设计软件、实现功能,从而满足用户要求。

但是在许多软件项目中,由于需求分析人员在需求阶段采取一些不严谨的方法,导致了开发者开发的产品和用户所期望的产品之间存在着巨大的期望差异。这些不严谨的方法包括:非正式信息的收集,未确定或不明确的功能,未发现或未经交流的假设,不完善的需求文档和突然的需求变更过程。

Frederick Brooks在他的文章中说过:开发软件系统最困难的部分就是准确说明开发什么。这句话的也充分说明了软件需求分析的任务:就是用严谨的方法对目标系统提出完整、准确、清晰、具体的要求,确定软件系统的必须完成的任务,并深入描述软件的功能和性能,确定软件的设计边界和软件同其他元素的接口。

简单来说,软件需求的任务就是消除软件产品和用户期望产品之间的鸿沟。

2 软件需求分析过程

一个成功的软件产品是能以合理的价格和时限在功能、质量上完全满足用户的期望。倘若一个项目团队不重视需求过程,就会给软件的成功与否带来极大的风险。这些风险包括:

(1)缺乏一些基本功能,导致产品不被用户接受

(2)用户需求的增加导致产品开发成本的增加

(3)模糊的需求说明导致软件产品的返工

(4)开发人员开发一些用户用不到的功能

那么项目团队应该如何解决上述问题呢?需要在需求过程中抓住以下四个基本原因:

(1)用户参与不充分

从客户的角度来看,他们通常不明白为什么收集需求需要花费那么多功夫,或者有些时候,用户自己也不太明白真正的需求。

另一方面,有些开发人员也不重视用户的参与。因为对于习惯编写代码的人,写程序要比和用户交流有趣的多。

还有一种可能就是开发人员觉得自己已经明白用户的需求了。

对于此类问题的解决方法也很简单:让业务熟悉、具有代表性的用户在项目早期直接参与到开发队伍中,并一同经历整个开发过程。

(2)用户需求的不断增加

虽然用户需求的不断增加在绝大多数项目中,都是一个不可避免的问题,但是如果在整个软件开发过程中,都有着持续不断的补偿需求,那么整个项目会变得越来越庞大,甚至超出了项目计划和项目预算范围,最后项目的完成将会很困难。

实际上,开发者可以将需求变更范围控制到很小。需对项目视图、范围、目标、约束限制和成功标准给予准确说明,并将此说明作为评价需求变更和新特新的的参照框架。

(3)模棱两可的需求

在需求规格说明中的诸多问题中,模棱两成为可怕的问题。它让不同的开发人员对同一个内容产生了不同的理解,它不但会让软件与用户的要求不符合,而且在开发过程中给开发人员造成许多麻烦:比如它会让开发人员因为错误的理解而浪费时间,并且使开发者与测试者的期望不一致。

模棱两可的需求带来不可避免的后果就是返工。

当然对于模棱两可的需求的处理也有很多方法。其中一种是组织负责从不同角度审查需求的队伍,因为简单的浏览需求文档时不能解决模棱两可问题的,如果能让不同的人从不同的角度来对需求文档进行评审,就会真正的解读需求文档,避免了后期才发现的歧义,从而避免了软件返工。

(4)画蛇添足的功能

有些开发人员喜欢自作主张的添加一些“具有欣赏”性但是需求文档中并未提及的功能,但是用户并不觉得这些功能有用,反而增加了产品使用的复杂性,还让开发人员的时间无意义的浪费了。因此作为开发人员来说,应当努力使软件简单易用,而不是未经用户同意,就擅做主张,脱离实际。

同样,作为用户来说,有些用户可能会要求加一些看上去很“酷”的功能,但是缺乏实用价值,而实现这些功能同样会耗费额外的时间。为了将此类问题的损害减到最小,开发人员应该坚持一点:需求分析始终注重的是那些能使用户完成他们业务的核心功能。

综上所述,一个项目团队如果实行高质量的需求分析过程就会获得多方面的好处。最大的好处是开发后期和整个维护阶段的重做工作大大减少了,开发成本和时间损耗也大大减少了。

3 需求管理

为了完成完善需求阶段的工作,形成规格说明是必要过程,可是仅仅完成需求规格说明是不够的,开发人员不但要把所有客户的需求应用到产品里,还要有效的控制需求与设计的一致,达到最准确的实现既定的需求的目的。需求管理另一个目标则是把软件需求建立一个基线供软件工程和管理使用。

许多项目组都遇到这样的情况,定义需求时,无论怎样谨慎和小心,总会有可变因素;变更需求之所以难以管理,是因为一个变更了的需求需要花费很多时间来实现一个新的特性和功能,而且有时候一个需求变更还会影响到其他需求。

所以,应当保证一个需求有一个弹性的结构,使他能更好的适应变更,从而能让项目风险承担者在开发过程中能控制变更。

为了让变更控制更为有效,一个好的变更控制过程是必要的。好的变更过程给项目风险承担者提供了正式的建议需求变更机制。通过这些处理过程,项目负责人可以在信息充分的条件下做出决策通过控制产品生存期成本来增加客户和业务价值。当通过变更控制过程来跟踪已建议变更的状态,就会确保不会丢失或疏忽已建议的变更。

4 需求管理工具

大多数项目组对于需求的管理都是基于文档,然而基于文档存储需求的方法有着若干限制及缺陷。例如难以保证文档与现实的一致性、手工变更产生错误信息、低效率的工作和很难跟踪每个需求的状态等。使用需求管理工具就可以解决以上问题。

对于小项目来说,使用简单的数据库就可以管理需求。对于大项目就需要用到商业需求管理工具。

许多大型项目都有一个较为漫长的开发过程,随着开发的进行,开发人员会逐渐记不清需求细节,这时商业需求管理工具就会凸显作用。它可以帮助开发人员管理需求变更、存储需求属性、帮助影响分析、跟踪需求状态、访问控制、与风险承担着进行沟通、重用需求等。

人工管理的话是很难实现如此多的功能。因此,使用商业需求管理工具,虽然会增加一些投入,但是却可以让项目组更好的获益。

5 结束语

对于一个软件项目来说,核心任务就是理解需要解决的问题并且解决它。科学有效的需求分析为这个核心任务提供了成功的基础。尽管就目前而言,改变软件行业对于需求分析阶段一贯的工作方式是较为困难的,但是随着一些标准的推广(如CMMI),对软件开发过程中软件需求分析的管理,会越来越规范和高效。

猜你喜欢

管理工具开发人员开发者
精益管理工具在手术室耗材管理中的应用
Semtech发布LoRa Basics 以加速物联网应用
hosts文件管理工具
iOS开发者调查
iOS开发者调查
栝楼产业开发者谢献忠
三星SMI扩展Java论坛 开发人员可用母语