【IT168 技术文章】
约定:本文涉及到的关键字概念和采用的技术的概念都不做详细解释,里面的概念定义请查阅相关书籍,这里只讨论这些在需求管理中的使用;同时里面的案例信息也不在这里做详细交代。
引用案例:某市网上审批项目。
1 概述
我们知道现代项目管理的六要素是:时间、成本、质量、组织、范围、客户满意度,实际上,要满足这六个要素,计划一个良好的需求分析是实现这六因素的前提,如果我们在项目生命周期的某些阶段出了问题,而我们可能还不知道,这将影响整个项目周期,无论该计划如何详尽,如果需求有误和需求分析不到位,项目的控制将没有任何价值,IT软件项目中百分之四十至百分之六十的问题都是在需求分析阶段埋下的“祸根”(Leffingwell 1997),从某种意义来讲,项目的成功基于项目的需求管理的成功。
2 需求的定义及特点
根据IEEE项目工程标准词汇表(1997)年中对需求的描述如下:业主解决问题或达到目的所需的条件或权能,和系统或系统部件要满足合同、标准、规范或其他正式规定文档所需具有的条件或权能。在PMBOK中,项目需求就是在“项目范围”约定的。
需求最显著的特点是“随着项目而改变、随着项目而渐进明晰”,项目管理的特点是随着进展而渐进明细化,可以看出需求管理和项目管理一样,这就意味着需求在项目的整个生命周期都可能存在的,这样项目管理的过程,也必不可少需求的管理。
3 如何获取需求
获得需求的方式可以有多种多样:电话询问、现场考察、聆听用户讲解、阅读用户编制的相关文件(如招标书),其实这些方法都是GET方式,我们可以通过以下两类技术手段来达到:GET(获取)和PUSH(引导、反馈、激发)相互结合的方式来得到我们真正的需求,而这两个过程都是必须交互进行的,一般我们可以筛选一名非常有经验(包括谈判技巧、深厚的业务和技术背景、人缘很好、勤奋努力)的人士担任需求工程师,长期在客户那里工作,他的工作主要是界定项目的范围和需求变更管理,通过我们编制的各类模板文档来实现需求变更的控制;
一般来讲IT集成需求包含三个不同的层次-业务需求、用户需求和功能需求-也包括非功能需求:业务需求提供给客户和产品开发商的新系统的最初利益,反映了组织机构或客户对系统、产品高层次的目标要求,它们在项目视图与范围文档中予以说明;用户需求文档描述了用户使用产品必须要完成的任务,这在使用实例文档或方案脚本说明中予以说明;功能需求定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足了业务需求,必须具备一定的业务背景和技术背景,能从三个不同的层次发掘客户的需求。
根据我们在某市网上审批项目中的经验,我们采用如下方法,其中每项工作都记录文档备案:如查阅了大量资料和病历资料格式、各类应急防御措施、统计分析报表、系统规划书、旧系统业务状况、历史资料、还访谈了操作员的应用感受、多次技术交流、专题讨论等多种形式的交互式讨论和分析。这样无论是业务、功能、用户详尽的期望我们都了解的比较透彻。
4 需求管理
获取了需求接着要作的的工作就是对需求分析、消化和评审、基线制定、需求说明书制定,这里我们主要集中在需求分析和需求说明书两方面来。
4.1需求分析
1)建立需求关联图:需求关联图是用于定义系统与系统外部实体间的界限和接口的简单模型,同时它也明确了通过接口的信息流和物质流,通过关联图,对用户需求的约定和确认以及CCB的评审都是非常关键的。
2)创建开发原型:创建用户接口原型可以在如下应用如下情况:如果开发人员或用户不能确定需求时,开发一个用户接口原型,这样使得许多概念和可能发生的事更为直观明了。用户通过评价原型将使项目参与者能更好地相互理解所要解决的问题。通过开发原形,业主和集成商都可以相互了解业务,发掘潜在的信息,避免用户需求的不必要变更。
3)分析可行性:分析需求可行性在允许的成本、性能要求下,分析每项需求实施的可行性,明确与每项需求实现相联系的风险,包括与其它需求的冲突,对外界因素的依赖和技术障碍,这个主要用于内部评审和制定技术线路提供依据,如在什么情况下采用.NET技术,什么情况下采用J2EE技术,我们在2003年电子政务网上审批系统中充分对需求(业务、技术、用户操作人员需求、现有系统需求等)做整体提取分析来确定技术线路的选型。
4)确定需求优先级:确定需求的优先级别应用分析方法来确定使用实例、产品特性或单项需求实现的优先级别。以优先级为基础确定产品版本将包括哪些特性或哪类需求。当允许需求变更时,在特定的版本中加入每一项变更,并在那个版本计划中作出需要的变更。
5)为需求建立模型:为需求建立模型需求的图形分析模型是软件需求规格说明极好的补充说明。它们能提供不同的信息与关系以有助于找到不正确的、不一致的、遗漏的和冗余的需求。这样的模型包括数据流图、实体关系图、状态变换图、对话框图、对象类及交互作用图。
6)编写数据字典:在需求阶段,很难使团队的思路一致,建立一个合适的机制是完全必要的,这就是数据字典,数据字典是对系统用到的所有数据项和结构的定义,以确保开发人员使用统一的数据定义。在需求阶段,数据字典至少应定义客户数据项以确保客户与开发小组是使用一致的定义和术语。分析和设计工具通常包括数据字典组件。
4.2建立需求与产品质量的关系模型
需求是项目正确实施的一个前提,如果没有抓住用户的需求,那么很可能是漏洞百出,最终产品将不是一个真正的可交付物。我们知道,质量是一个客户满意度的一个主要因素,质量在项目中又有许多影响因素,这里我们着重从需求的角度出发来讨论需求与质量的关系,那么如何来从需求的角度出发建立与质量的控制呢?
我们来建立一个思路如下:客户所有的期望 需求产生 转换矩阵 产品开发 可交付物 客户满意。在这里转换矩阵就非常关键了,如何来实现需求与质量的关联呢,可以通过质量功能调配(QFD)来实现,通过QFD可以把需求(用户期望)、产品特性关联起来,这里要用到一个工具:质量屋(House of Quality),我现在用一个案例来说明这个工具,在做某市网上审批项目中,我们从客户哪里收集和整理了许多需求:审批项目、报表要求、认证方式、工作流要求、数据范围及格式、操作界面、医药管理规范等等;我们通过建立质量屋完成了需求与如何去实现,如下图所示:
在QFD技术中以三种形式来定性地描述工程特征之间的相关影响关系,即正相关(向相同方向变化)、不相关和负相关(向相反方向变化)。对相关程度还可以进一步地细分为强相关、一般相关和弱相关几种关系,并给以标度值来表达相关程度,这样我们可以定义一些需求的强弱程度:如不确定需求、一般确定需求、强烈确定需求等,在这个HOQ中,还要用到其他技术工具,如:要素加权法等,这样做的好处是主次分明,可以把需求分析和管理做到随时间的推进客户的变更变限于固定的框架里,符合如下曲线,而不至于走向极端。
4.3需求说明书编写经验谈
目前需求说明书有固定的格式和要求,可以从专门介绍需求说明书的相关书籍中获得,在本论文中,我着重阐述需求说明书的经验,编写优秀的是没有公式化的方法的,这需要大量的经验,要从你在过去的文档中发现的问题学习。
1) 采用IT项目需求规格说明模版,要注意的是很多人拿来需求说明书模板就套用,这就有很大的风险,例如:会出现需求不全、需求范围界定不到位、需求分类不明确等因素,我们应该把需求规格说明书拿来后先罗列许多要点:约定、法律法规、需求分类、技术限制、采用的技术和工具等等全面考虑,与项目干系人特别是用户进行沟通,然后讨论,可以采用头脑风暴法和德尔菲方法来讨论,确定说明书大纲,而不能照本著书。
2) 附加文档的管理,值得注意的是需求说明书并非一成不变的,我们可以通过附加文档来跟踪用户的新的需求和需求变更,这样必须建立一个配套的文档集合,随时跟踪需求,保证开发团体步进统一,一般这些文件是要考虑的:《需求(或功能)变更申请书》、《需求(或功能)变更规格书》、《需求清单一览表》等。这样做的好处是对需求时实监控,保证项目的安排,同时让用户知道变更是一件很严肃的事情,可以防止个别人提出无法界定的需求(因为现实IT项目中,很多问题是其他系统的遗留而又超出本项目技术线路可以弥补的问题等)。
3) 编写需求说明书的时候,可能还会遇到一些解决不了的需求,我们也一定用专门的章节要罗列出来,防止漏项,同时也利于我们在做实施计划的时候来采取那种措施,采购其他设备、投入相关人力或其他办法。
4) 需求必须要客户确认,许多项目,可能开发商为了保护自己的“利益”很多事情都没有得到客户的确认,其实在需求阶段,我们的需求是要跟客户确认的,比如数据字典、界面选型、技术线路、功能模块等,这样做的好处是防止需求把握不得当,缺少了用户必要的功能,另一个就是防止了开发商需求镀金,提供了不必要的功能。
5 总结
经过以上各个方面来讨论需求管理在整个项目生命期所起到的作用,结合自身的经验,和一个案例《某市网上审批系统》综合分析了需求管理的办法和用到的工具,根据自身经验提出编写需求说明书要注意的地方。