3.2需求的正确性
软件开发是一种专业行为,一般的业主难以理解软件开发人员的开发理念。所以在和业主交流时,他们讲述的需求在实际中利用现有的技术是实现不了的,用户以为自己很清楚自己的需求了,但实际上他们只是依据当时的工作需求提出的。随着开发工作的不断进展,用户可能想到更多的功能和特色,进而对以前的需求进行改动,导致需求的不一致。
另外一种情况就是开发人员和业主交流时,由于业主本身对需求的描述不清晰,导致开发人员误解或曲解了业主最初的要求,最后开发出来的系统不是不能满足用户,就是一个发生需求错误的系统。事实上这种错误在需求阶段也会经常发生。更可怕的是,对于需求阶段出现的错误,如果在软件项目进行到后期的时候才发现,修复费用是非常可怕的,甚至会超出项目本身的费用。因此做好需求管理、减少需求错误的出现对于降低软件项目的成本是必要的,也是至关重要的。
3.3需求的完备性
系统的需求是层出不穷的,我们不可能做到把所有的需求都一一列举出来,并且随着时间的推进,用户的需求也会越来越多,要穷举需求是不可能做到的。但是对于需求中的重点问题以及必须的流程一定要完备。另外,并不是用户提出的所有需求都要满足,在项目的最后,改变一个需求对整个项目的影响或损失很可能会超过需求本身给用户带来的益处。
3.4需求的变更
需求的变化问题是每个开发人员、每个项目经理都遇到的问题,也是最头痛的问题,一旦发生了需求变化,你不得不来修改你的设计、重写你的代码、修改你的测试用例、调整你的项目计划等等,需求的变化好比是万恶之源,为项目的正常的进展带来不尽的麻烦,怎么办?管理它!使需求在受控的状态下发生变化,而不是随意变化,需求管理就是要按照标准的流程来控制需求的变化。难题随之而来,需求中的变化一般不是突发的革命性的变化,最常见的是项目需求的渐变(Project Scope Creep)问题,这种渐变很可能是客户与开发方都没有意识到的,当达到一定程度时,双方才蓦然回首,发现已经物是人非,换了一番天地。
4.如何有效实现软件开发的需求管理
4.1需求获取
关于要做些什么,其实对于产品的需求阶段而言,是极其重要的一个环节,拿IPhone 4S来说吧,它的需求获取阶段就定了以下几个需要做的点:A5双核,800万像素摄像头,1080P高清,Retina显示屏,iCloud, iOS5…, 最后也很好的实现了,那对于用户而言,他们关注的是什么呢?不就是关注实现了什么功能吗,是不是做得更漂亮,更薄,更强大?但是怎么去把它做薄,做强大,用了什么材料,用了什么技术,他们明显不会去关心的,所以对于用户而言,就是关注“做了些什么”,而“做了些什么”在需求阶段对应的就是“要做些什么”。
4.2需求分析与设计
既然需求已经获取了,也就是说客户已经跟开发小组叙述要做什么以及他们想要实现的一些的功能。这也就现在就真正开始进入需求管理阶段。
首先就是需求分析阶段,所谓的需求分析,是指的是在建立一个新的或改变一个现存的电脑系统时描写新系统的目的、范围、定义和功能时所要做的所有的工作。需求分析是软件工程中的一个关键过程。在这个过程中,系统分析员和软件工程师确定顾客的需要。只有在确定了这些需要后他们才能够分析和寻求新系统的解决方法。下面是一张典型的需求分析出错的图:
图 1 需求分析出错 软件开发质量管理提升系统之需求管理(3):http://www.youerw.com/jisuanji/lunwen_532.html