研究表明,要改正在产品付诸应用后所发现的一个需求方面的缺陷比在需求阶段改正这个错误要多付出大约100倍的成本。而另一项研究发现,在需求开发阶段发现的一个错误,平均仅需要花30分钟修复。
但若在系统测试时发现则需要5到17个小时来修复。因此我们不难发现,需求分析在IT项目中具有十分重要的作用。所谓需求分析是指通过对问题域的研究,获得对该领域特性及存在于其中(需要解决)的问题特性的透彻理解并有文档的说明。转自项目管理者联盟
本文结合作者在实际项目管理工作中的经验,就IT项目中需求分析时应注意的主要问题进行了研究分析。
1 与用户沟通前应进行充
通常,与用户沟通前的准备时间要远远大于正式会面沟通的时间。一般情况下,用户在和你连续交谈两个小时之后,就会失去热情和耐心,这是大部分人的共同特点。所以充分的准备工作至关重要。
准备工作包括对项目整体环境熟悉的准备工作和对具体业务进行调研前的准备工作。项目整体环境的熟悉工作需要了解:项目的背景、项目的目的、项目的利益相关方等信息,以便对当前项目的鹰钵情况有一定了解。项目经理博客
对具体业务调研前的准备工作包括:需求调研问题的准备、需求调研模板的设计、需求调研时间安排等内容。要充分珍视用户的时间,尽量避免由于准备工作不足而反复约见用户,给用户造成效率低下的印象。一旦发生这样的错误,以后可能就会很难约见到用户。
2 主动积极了解客户业务和相关知识
在计算机技术方面我们可能非常专业,但对于具体的用户业务可能并不十分清楚。这个项目对用户是否有帮助、某一系统功能是否有用、某一流程处理是否合理,在不了解用户业务的情况下,我们将很难做出判断。
因此只有在了解业务的基础上,我们才和用户有共同的沟通语言和业务理解,才能真正理解系统应具有哪些功能。笔者曾在经销商管理系统调研过程中,由于财务方面的知识有限,使得在对经销商财务部门的调研中对部分问题不是特别的理解。
当时,笔者向用户虚心进行请教,并在调研结束后及时对自己的财务知识进行了补充。应用领域的知识是无边无际的,在各种项目的调研过程中,肯定会出现由于需求分析者缺乏某一领域的知识而影响需求分析工作的准确、顺利进行。
遇到此类问题时,需求分析者应虚心向用户请教,同时应及时补充应用领域的知识。最好能够在调研前做好充分的准备。
3 对用户进行正确分类项目管理培训
组织中的用户在很多方面存在差异,例如:使用系统的频度和程度、计算机系统知识、所进行的业务过程以及个人的素质和喜好等。根据用户的特点,可对用户进行一定的分类。将用户分类并归纳各自特点,详细描述他们的个性特点及任务状况,将有助于需求的获取和分析。
不同的问题需要询问不同的人,对于操作细节的问题,要和实际负责操作的用户进行沟通,而对于关乎全局的问题,则要和相应的管理层用户进行沟通。如通过组织架构图得知仓库部门有三种角色:仓库主管、发货理货员、系统操作员。
我们发现仓库主管是对全盘业务相当熟悉的人,他负责协调本部门的全局事务;而发货理货员是部门的主要业务执行人;系统操作员则是仓库管理系统的直接操作者。若我们调研的目的是搞清该部门的整体性流程,我们会很自然地选择仓库主管作为访谈的对象。项目经理圈子
4 引导用户,使用户充分表达自己的想法
在与用户交谈中,如何引导用户说出他们的需求是非常关键的。恰当的提问,会使用户滔滔不绝,充分发表自己的意见和建议。而不恰当的提问,可能会导致用户无法回答或敷衍了事地进行回答。提问可分为封闭式提问和开放式提问。
封闭式提问目的明确。如:现在你们的送货单是手工填写还是电脑打印?但过多使用封闭式提问,会导致谈话枯燥,让用户感觉自己好像在接受审问。开放式提问是请对方对某一事物做进一步的解释,可使谈话达到一定的深度和广度。
如:你认为目前的工作中存在哪些可以改进的地方?开放式提问缺点是容易使谈话内容偏离主题。因此在谈话过程中,应采用封闭式和开放式提问相结合的方式。以简单问题开始、从用户熟悉的内容开始。每次只提一个问题、集中一个重点,宁问勿猜。
并尽量避免使用IT相关的一些术语,以便用户能够很好地理解我们的表达。
5 应实地了解用户工作流程项目管理论坛
实地观察用户执行业务任务的过程。了解用户什么时候获得什么数据,并怎样使用这些数据,业务处理 过程中需要处理哪些单据,需要和哪些角色的用户发生关联等。这都将有助于明确产品的功能需求。
经验证明,与人们面谈关于他们如何完成任务时会有许多限制和不准确性,而这是任务观察可以直接解决的。特别是对于某些组织中普遍接受的规则和方法,用户认为你也应理所当然知道,而不曾提起时。
近年来,由于人机交互的复杂性惊人地增加,人机交互的观察和记录已引起人们的广泛注意。观察是一个主观的领域,很大程度上依赖于需求分析者的经验。
通过观察发现:某些客户要求送货单中的商品价格为含税价格,而有些客户则要求送货单上的商品价格为不含税价格;有些商品的税率为13%,而有的商品税率为17%;
有些客户要求送货单上的金额小数点后保留四位,有的客户又要求送货单上必须提供自己公司的商品编码等。而这些都是在调研中,用户不曾提起的内容。
6 分析需求可行性
柳传志曾说:“没钱赚的事我们不干;有钱赚但投不起钱的事不干;有钱赚也投得起钱但没有可靠的人选,这样的事也不干。”
柳传志为联想集团的决策确立了上述准则,同时也为可以行性分析指明了重点。可行性分析主要是针对某一需求决定是做还是不做。一般可行性主要考虑两个方面的因素:技术和人。技术方面主要是分析在给定的时间段内是否可实现所需的功能并满足产品的质量要求等相关指标。
很多时候,用户的想法在实际实施过程中是不现实的。若一味地求全和盲目遵从用户的设想,将为项目的后续工作带来很大的风险。因此应尽量避免在需求分析中包含技术实施上有难度的功能。如在笔者曾经负责的一个项目中,用户要求新的管理系统应实现和用友、金蝶等管理系统的数据接口,以方便这些系统中的数据导人新的管理系统。
许诺提供与用友、金蝶等系统的数据接口,将为新系统的成功实施带来很大的风险。因为熟悉这些系统需要时间,开发与它们的接口也需要时间,而且用友、金蝶等这些系统存在多个不同的版本。因此与外部系统接口的可行性定义为:不可行。
人的方面主要考虑目标用户是否具有相应的素质和能力。在实际项目中,笔者曾对快速消费品行业经销商批次管理的可行性进行了分析。首先,批次管理将涉及到所有产品的出入库操作,并存在一个产品有多个批次的情况,因此批次管理对操作人员的能力和素质要求比较高。
其次,快速消费品行业的特点决定了产品的出入库操作极为频繁,因此,操作人员的工作强度比较大。再次,大部分经销商的仓库所在地都距离城镇比较远,因此工作人员的文化水平普遍不高。在综合考虑后,将批次管理的可行性定义为低。
对于复杂的项目,还应从经济方面和环境方面进行考虑。经济方面主要从投入、收益、短期、长远利益等方面进行分析。环境方面主要考虑市场环境和政策因素。
7 确定需求的优先级别
当客户的期望很高、开发时间很短且资源有限时,设定需求的相对优先级将有助于项目管理人员解决冲突、安排阶段性交付并做出必要的取舍。建立每个需求的重要性有助于规划软件的构造,以最少的费用提供产品的最大功能。
特别是对渐进式的项目,优先级的设定就显得更为重要,因为在这些开发中,项目时间安排极为紧迫并且交付日期不可改变,一些低优先级的需求就需要推迟到后续版本中进行实现或直接取消。
当众多用户因期望不同而就某些需求优先级的设定难以达成一致意见时,需求分析者可指出每一需求所需的费用、难度、技术风险或其他特定的与权衡需求有关的指标,来客观评价每一需求的优先级。
8 正确理解需求分析文档确认
需求分析是一项繁琐枯燥的工作,需要和用户不断的商讨、确认和反复。但大部分用户并不只做这项工作,特别当他被很多其他的事情缠身的时候,而无心在笔者曾负责的经销商管理系统中,经销商认为,库存过高将占用企业运转资金,增加企业负担;
库存过低则无法满足客户订单,从而导致交货周期延长,降低企业市场竞争力。由于经销商对当前可用库存十分关注,因此可用库存的优先级被定义为:高优先级。仔细考虑或回答你的问题。这很容易使你错误地认为用户已经真正地了解并认可了你的分析文档。
在需求分析文档上签字确认,通常被认为是用户同意需求分析内容的标志行为。而实际操作中,签字确认工作并未得到用户的充分重视。“他们要求我在需求文档上签名,于是我就签了,否则开发人员不开始编码。”用户的这种态度将可能给项目带来潜在的风险,如不断地进行需求变更等。
对于需要用户确认的需求分析文档,最好在用户确认前,就文档内容对用户进行一定的讲解,以确保用户完全理解并认可文档中的内容。若用户对文档中的内容存在修改意见,则修改后再与用户进行确认,直至用户完全认可文档中的内容为止。
通常为对项目有一个整体、准确的理解,需求分析所包含的内容通常大于项目范围所包含的内容。因此,应让用户理解对于某些功能的讨论并不意味着即将在系统中实现它。应使用户明白对需求分析文档的签字确认是建立一个需求的基线,进一步的变更可在此基线上通过项目定义的变更过程来进行。
需求确认将给初步的需求开发工作画上了双方都明确的句号,并有助于形成一个持续良好的用户与需求分析人员的关系,为项目的成功奠定坚实的基础。
9 结语
将知识从一个地方传送到另一个地方并不是一件简单的事情,而且原始的需求通常是以不完整的形式呈现的。它也许只是在某个现有系统的用户脑中,甚至有时用户都没有意识到他们知道什么。本文从引导用户、需求确认等方面对需求分析中应注意的主要问题进行了研究分析。
同时需求分析工作者也应在日常工作中加强学习,不断总结,使自己的需求分析能力得到不断的提升。
|