技术开发 频道

新产品开发的需求管理

【IT168 技术文章】

    需求管理(Requirement management)是完整管理模式中的一环,同其他特性诸如完整性、一致性等不可分割,彼此相关而成一体。一套需求管理应当是已知系统需求的完整体现,每部分解决方案都是对总体需求一定比例的满足(甚至是充分满足),仅仅解决部分需求是没有意义的。对关键需求的疏忽很可能是灾难性的,试想一架飞机的安全设计不过关将会带来什么样的后果。不同的需求组合起来,构成了一套完整的需求模型。用户需求决定了系统设计所要解决的问题,所要带来的结果。可以说,需求管理指明了系统开发所要做和必须做的每一件事,指明了所有设计应该提供的功能和必然受到的制约。

    需求管理的过程,从需求获取开始贯于整个项目生命周期,力图实现最终产品同需求的非常好的结合。通过对需求管理在项目进程中实施的不同任务进行分析,我们可以看出需求管理所起的作用。

    需求管理本就是一个动态的过程,离开了能动的、变化的系统进程而空谈需求管理,无异于纸上谈兵。

    需求管理恰如裁缝的量体裁衣,它直接关系到最终产品的成型。仅从字面出发,如果一个产品满足了客户需求,那它无疑就是成功的。需求管理的过程,从需求分析开始贯穿整个项目始终,力图实现最终产品同需求性的非常好的结合(参见Figure 1)。通过对需求管理在项目进程中实施的不同任务进行分析,我们可以看出需求管理所起的作用。

    需求管理能够确证:

    我们确知客户的需求是什么(质量);
    满足客户需求的非常好的解决办法(统一性);
    著名学者CROSby对于质量的定义是"同需求保持统一"。从这个意义上说,需求管理正是从质量出发以确定需求。每个人都应当始终明白他们所做的具体任务其意义何在。然而,在一个产品的生命周期里,其需求性是能动的,是处于变化之中的。

    对于系统工程没有严格统一的定义,因此很难找到足够的数据以说明系统工程所起的作用。有些致力于研究需求分析的组织认为,一项开发计划应当至少将8-15%的资源投入到系统工程方面。如果低于这一标准,将很可能导致无法对客户群做出准确把握。如果该项开发计划含有许多创新或实验的成分,那么这一百分比还应当适度提高。

    一、概述

    定义需求(Define Requirement)

    在项目进展过程中,如何区分用户需求与需求分析中需求定义呢?

    当完成用户需求调查后,首先对《用户需求说明书》进行细化,对比较复杂的用户需求进行建模分析,以帮助软件开发人员更好地理解需。例如采用Rational 的Rose工具进行需求的建模分析。如果使用工具进行建模分析,对需求分析人员的要求比较高。

    当完成需求的定义及分析后,需要将此过程书面化,要遵循既定的规范将需求形成书面的文档,我们通常称之为《需求分析说明书》。

    邀请同行专家和用户(包括客户和最终用户)一起评审《需求规格说明书》,尽最大努力使《需求规格说明书》能够正确无误地反映用户的真实意愿。需求评审之后,开发方和客户方的责任人对《需求规格说明书》作书面承诺。具体的同行评审详见需求评审章节。

    需求确认(Requirement Validate)

    需求确认是需求管理过程中的一种常用手段,也是需求控制的五一节之一;确认有两个层面的意思,第一是进行系统需求调查与分析的人员与客户间的一种沟通,通过沟通从而对需求不一致的进行剔除;另外一个层面的意思是指,对于双方达成共同理解或获得用户认可的部分,双方需要进行承诺。

    建立需求状态(EStablish Requirement STate)

    何谓需求状态;顾名思义,状态也就是一种事物或实体在某一个时刻或点所处的情况,此处要讲的需求状态是指用户需求的一种状态变换过程。

    为什么要建立需求状态?在整个生命周期中,存在著有几种不同的情况,在需求调查人员或系统分析人员进行需求调查时,客户存在的需求可能有多种,一类是客户可以明确且清楚的提出的需求;一类是客户知道需要做些什么,但又不能确定的需求;另一类是客户本身可以得出这类需求,但需求的业务不明确,还需要等待外部信息。还有是客户本身也说不清楚的。

    对于这些需求,在开发进展的过程中,存在著以下几种情况:
    有可能要取消的
    有的因为不明确而可以后延的,同时可能转化为被取消的需求
    与客户经过沟通或确认的,此处有两种情况,一类是确认双方达成共识,另一种情况是还需要再进一步沟通的。

    下面是一个简单的状态例子:

    CLOSED:经过确认,双方认可并达成共识;
    OPEN:双方确认,但没有达成共识的需求;
    待定:客户提出需求,但双方没有经过沟通或确认;
    需求评审(Requirement Review)

    对工作产品的评审有两类方式,一类是正式技术评审,也称同行评审,另一类是非正式技术评审。对于任何重要的工作产品,都应该至少执行一次正式技术评审。在进行正式评审前,需要有人员对其要进行评审的工作产品进行把关,确认其是否具备进入评审的初步条件。

    需求评审的规程与其它重要工作产品(如系统设计文档、源代码)的评审规程非常相似,主要区别在于评审人员的组成不同。前者由开发方和客户方的代表共同组成,而后者通常来源于开发方内部。

    有人问:需求评审究竟评审什么?要细到什么程度?怎么样进行?

    严格地讲,应当检查需求文档中的每一个需求,每一行文字,每一张图表。评判需求优劣的主要指标有:正确性、清晰性、无二义性、一致性、必要性、完整性、可实现性、可验证性、可测性。如果有可能,最好可以制定评审的检查表。

    需求评审面临的困难及对策如下:

    需求评审的一个通病是“虎头蛇尾”。需求评审的确乏味,也比较费脑子。刚开始评审时,大家都比较认真,越到后头越马虎。当需求文档很长时,几乎没人能够坚持到最后。会议主持人事先要强调需求评审的重要性:认真评审一小时可能会避免将来数十天的“返工”,让大家足够重视。评审组长还要设法避免大家在昏昏沉沉中评审。如果评审时间比较长,建议每隔两小时休息一次。另外,如果系统比较大,也可以细分成不同的部分分别进行,严格控制每一次评审的文档规模及持续时间。

    需求评审涉及的人员可能比较多,有些时候让这么多人聚在一起花费比较长的时间开会并不容易(例如有些人可能出差在外,有些人可能事务缠身)。没有必要把所有事情挤在一块做,需求开发是循序渐进的过程,需求评审也可以分段进行。这样每次评审的时间比较短,参加评审的人员也少一些,组织会议就比较容易。对于需求的工作产品《需求规格说明书》,我们可以标明几种文档状态,如草稿状态。评审状态,初始状态等。只有进入评审状态时,我们可以用不同的方式来对文档进行评审。但当其评审状态转化为初始状态时,需要进行严格的正式的同行评审。

    开评审会议时经常会“跑题”,导致评审效率很低。有时话匣子一打开后关不上,大家越扯越远,结果评审会议变成了聊天会议。主持人应当控制话题,避免大家讨论与主题无关的东西。对于自主研发的产品,由于需求评审人员大部分是开发人员,大家会不知不觉地谈论软件“如何做”。由于需求是否“可实现、可验证、可测试”本来就属于需求评审的范畴,所以强制大家“只谈做什么,不谈怎么做”几乎是不可能的。那么,在需求的评审会上,需要允许开发人员谈如何做,但不需太细,适而可止。同时,评审会必须明确一位评审组长,对时间与问题进行控制。

    开评审会议时经常会发生争议。适当的争议有利于澄清问题,比什么东西都一致赞成要好。然而当争议变为争吵时就坏事了。争吵不仅对评审工作没有好处,而且会无意中伤害同事们的感情。同时也解决不了问题。所以,在评审会的过程中,我们要尽可能的是在阐述事实与证据,而并不是从你心底要如何地说服别人。

    人们在很多时候分不清楚自己究竟是“坚持真理”还是“固执己见”。毫不妥协或者轻易妥协都不是好办法。我们应当养成良好的习惯:不要一棍子打死异己的观点,尝试着让自己站在他人的立场思考问题,这样你会找到比较满意的答案。试著从不同的角度去看同样的问题。

    {项目名称}评审报告_需求
    基本信息
    工作产品.版本号
    名称,标识符,版本,作者,时间

    工作产品标识号

    评审方式

    第几次评审

    工作产品存放路径

    评审地点

    评审时间

    参与人员

    评审人员名字
    工作单位或部门
    职务职称
    签字

    问题记录及处理意见
    问题编号
    位置
    问题描述
    问题类型
    严重程度

    Problem A
    Problem B

    评审结论

    评审结论
    [ ] 工作产品合格,“无需修改”或者“需要轻微修改但不必再审核”。
    [√] 工作产品基本合格,需要作少量的修改,之后通评审组长检查即可。
    [ ] 工作产品不合格,需要作比较大的修改,之后必须重新对其评审。

    签字

0
相关文章