浅析需求开发

引言

  无论是ERP项目还是小型的软件开发领域,包含需求、设计、编码和测试四个阶段,其中需求是整个软件开发的最关键的一个输入,据统计,不成功的项目中有30~40%的问题是由需求造成的。大量的研究表明需求阶段发现和纠正错误的代价是软件开发各阶段中成本最低的,越是后期的变更,成本越高,良好的需求开发对提高软件成功率和避免失败具有重要的意义。

  如何正确地获取用户的需求,围绕其进行管理,以便最终交付给用户符合其期望的产品是需求工程的任务。需求工程的研究产生了如CMM(能力成熟度模型)、UML(统一建模语言)、RUP(Rational统一建模过程)、CASE(用例)等管理方法和开发工具,软件思想家温伯格(Gerald M.Weinberg )先生指出“CMM只是一种标准,UML也只是一种记录需求的工具,而不是捕获需求的方法,需求的管理主要还是靠经验”。准确而有效获取用户需求、精确表述用户需求并得到用户认可,是软件项目开发成功的最重要的里程碑之一。本文针对需求开发中存在的风险进行探讨总结,整理出其预防措施,期望以后对软件项目的需求分析进行风险预防、控制等提供参考。

  一、什么是需求?
项目经理博客
  1997年IEEE软件工程标准词汇表对软件需求的定义为:用户解决问题或达到目标所需的条件或能力。系统或系统部件要满足合同、标准、规范或其它正式规定文档所需具有的条件或能力。用通俗地说,“需求”就是用户的需要,包括用户要解决的问题、达到的目标,以及实现这些目标所需要的条件,表现形式一般为文档形式。需求分为需求开发和需求管理,而需求开发又分为需求获取、需求分析、编写规格说明书和需求验证。如图1所示,整个活动构成软件开发生命周期的需求分析阶段。如何帮助用户提出准确的需求、理解和分析用户环境是需求获取的过程。为问题涉及的信息、功能及行为建立模型并将用户需求精确化、完全化是需求分析的过程,最终形成需求规格说明书是编写规格说明书的过程,将需求说明书交付用户并得到用户认可是需求验证的过程。需求获取、分析、编写需求规格说明和需求验证并不遵循线性的顺序,这些活动是相互隔开、增量和反复的进行。

  二、需求开发四步骤
项目管理者联盟
  1、需求获取转自项目管理者联盟

  针对大项目如企业ERP的需求获取,采取的办法(1)、成立需求分析小组,划分任务,细化侧重点,为获取用户需求做好准备工作。(2)、访谈用户获取问题,了解用户的功能需求同时,还需要注意用户的非功能需求(如:用户界面、响应时间、自动恢复时间等)。访谈用户前,首先要了解和划分用户的类型,针对用户的情况可以划分组别,详细描述出他们的个性特点及任务情况。其次,就要选择好每类的代表,对其进行访谈和调研,每类用户代表都能对其负责的方面有代表性并能做出决策,2005年我单位准备上ERP系统,当时北京某软件单位到我司作调研的时候,下属单位都是选择行政“一把手”参与调研。每次的交流都需要有记录,对于交流的结果还可以分类,以便于后续的分析活动开展。项目经理圈子

  2、需求分析training.mypm.net

  调研人员对于收集的需求信息要做进一步的分析和整理,判断哪些是软件必须提供的,哪些是软件目前无法满足的,哪些用户需求会衍生出很多的隐性需求,还有哪些是用户没有想到的需求。这是一个需求分析人员消化用户资料的过程。

  这个过程主要通过建立模型来描述用户的需求,实际上是抽象图形化的过程。一般用图形表示系统的整体结构、用原型等方式向用户提供可视化的界面、用系统可性行分析来说明软件的效果和效率、用UML描述系统的需求及内部关系。

  3、编写需求规格说明书

  需求规格说明书也称为功能规格说明、需求协议或系统规格说明,它精确地阐述一个软件系统必须提供的功能和性能以及它所要考虑的限制条件。它是开发设计的蓝本,也是系统测试和用户文档的依据。项目管理论坛

  4、需求验证www.mypm.net
需求验证是为了确保需求说明书准确无误、完整地表达必要的质量的一种方式。客户、分析人员、设计人员、测试人员等利益相关人员经过多次的评审后的需求说明书就可作为需求管理的基线。用户和开发方对软件项目内容的描述是以需求规格说明书作为基础,它是软件验收时合同双方确认的重要依据。

  三、需求开发中存在的困难以及对策bbs.mypm.net

  在软件项目开发过程中,风险无所不在,如何有效规避风险,尤其是需求开发过程中的风险(需求风险)。本文按着需求开发的过程提供几条建议:
项目管理论坛
  1、需求获取

  问题一:用户对于自己的需求不太清楚或工作繁忙无暇理清需求。在很多的实际开发过程中,第一种情况就是用户对自己真正的需求并不十分明确,他们认为计算机是万能的,只要简单地说一说自己想要得到什么样的结果就行了。对于自己的业务规则、工作流程都不愿说谈。笔者在2006年曾准备开发一个医院的库房管理系统,当本人开始做需求调查的时候,就是存在用户无法准确有效地表述功能需求的问题。针对这种情况,其对策是:需求分析人员一定要深入用户工作场地,仔细查看用户的资料和报表,与不同层面的用户交流、沟通,且要多了解用户实际工作的场景,有条件的话,可以做一个“实习生”亲身体验用户的日常工作。站在用户的角度帮助用户分析需求。关注用户工作的每个细节,搞清用户的真实需求,以最大可能减少后期地需求变更。第二种情况就是业务人员配合力度不够。有的用户日常工作繁忙,他们不愿决付出更多的时间和精力向分析人员讲解业务。面对这种用户,其对策是:需求分析人员改变沟通技巧,讲清楚软件需求的重要性,见缝插针,抓住关键点,向其咨询,以用例和模型的方式向其演示,达到用户和分析人员互相了解和理解。 项目管理者联盟文章
转自项目管理者联盟
  问题二:用户与需求分析人员缺乏有效沟通,双方误解需求。人们在交流的时候,经常会发生“答非所问,问非所求”的事情,软件用户与开发人员缺乏有效沟通方法,交流上存在障碍,用户与开发人员存在知识背景差异,都从自己的角度,使用自己的专业术语或语言表达方式来描述和理解问题,使得双方并不能够很好地就软件需求达成共识。2005年北京某公司到我公司做调查,对方技术人员常挂在嘴边的就是“BOM”,但作为用户还没有完全接受这个词,他们用得最多的是流水号、生产线、配套件等。一般说来,用户不太容易从计算机的角度去理解自己的需求问题。从而使需求描述的不一致,不规范,多义性。笔者今年夏季为某事业部编写库房管理软件的时候,笔者采用快速原型化开发了此软件,双方出现了误解的情况,比如:针对“数量”,我理解为整数,但实际上库房数据中“数量”就是以小数为单位,她认为我应该理解了这个问题,实际上她前面输入的数据的确都是整数,使用到一定的程度,结果显示大相径庭。对策:分析人员需要花更多的时间去了解系统用户的特点,多学习用户行业的专业术语,用用户看得懂的语言来表达需求的内容。其次,分析人员除了需要过硬的专业知识,还要具备较强的沟通交流能力。谦虚、诚恳地向用户学习,才能探索出用户的真正需求。如果能在用户方找到即对生产过程了解,又懂计算机知识的行家来为开发人员与用户牵线架桥则是最好不过的事情。项目管理者联盟

  问题三:用户的需求不断变更 项目管理者联盟文章

  由于需求识别不全、业务发生变化、需求本身错误、需求不清楚等原因,随着客户对项目的越来越深刻的理解,对他过去提出的需求要求一变再变,面对这种情况:需求人员要意识,做软件就像装修房子,永远可以找到需要增加的东西、需要改变的地方,“需求的变化是永恒,需求不可能是完备的”。因此我们在需求获取的时候,一方面应该跟用户讲清楚需求开发的重要性,让用户明白减少后期的需求变更的重要性,且随意的需求变更带来的风险(成本增加、进度延后等)必将由用户和开发者共同承担。另一方面也需让用户明白:开发者和用户更多的是战略合作伙伴关系,其共同的目标是:开发出适合用户需要的软件。
training.mypm.net
  2、需求分析
项目管理培训
  问题一:主次不分 需求分析人员常站在自身的角度去理解用户的需求造成主次不分。而实际上不同的系统对系统的功能与非功能性需求要求很不一样。比如,金融系统一般对系统的安全质量要求比较高。企业ERP系统一般对信息传递速度要求高一些。针对这种情况,首先需求分析人员可以借用当前的需求分析工具和图形的方式,明确用户的功能需求和非功能需求,特别注意产品性能、使用性、完整性、可靠性等非功能性需求。其次就要充分考虑到哪些需求是相对固定的需求,哪些可能会产生变动的需求,哪些需求会牵一发而动全身,区分这些需求,设定用户的每项需求、特性或使用实例的优生级并安排在特定的产品版本或实现步骤中,以应付客户后期的需求变更。
项目管理者联盟
  问题二:需求分析时间不够 这个问题非常普通,用户认为“我出钱你出力,当然以我的要求为准”,但实际上不合理的要求会导致项目失败,拿一个简单的例子来说明:假如1个人需要干100天时间才能把某件事情完成,为了赶进度,现在增加人数,选100个人干一天把这件事情做完。绝大多数人都会认为是不可能实现的。软件项目也是如此,它有一个最短周期,也就是说无论你如何增加资源追赶进度,都无法再缩短时间,在关键路径上增加人力、物力资源,或许还会添乱。一般需求开发工作应占全部工作量的15%。所以用户方与开发方必须达成共识留足够的时候给需求分析。
项目管理者联盟文章
  3、需求规格说明编写training.mypm.net
bbs.mypm.net
  问题一:文档混乱,文字表述过多 需求文档是需求人员对前期工作的总结。需求人员写出的文档混乱,图形连线错综复杂。首先是需要理清思路:需求的描述可以从2个方面来进行描述,一方面是对用户现行系统的描述,一方面是对系统未来的设想。构成企业信息系统主要包括基本要素:企业的组织结构、流程、数据、商务规则与功能,其中从用户的角度主要关注流程,是以流程为中心,通过流程将其他几个要素贯穿起来,需求分析人员也应该从这个角度来和用户沟通;从开发者的角度主要关注企业的数据、商务规则与功能,以便于系统的实现;从实施者的角度主要关注企业的组织结构与功能,以便于系统的发布与实施。企业组织结构是用户企业业务流程与信息的载体,对分析人员理解企业的业务和系统范围有帮助;业务流程图把企业的业务流程与部门职责结合起来了,且形象直观;企业的数据(各种单据、帐本、报表等)可采用描述分类、格式化;企业商务规则与功能可以采用分类方法进行。其次尽量采用SRS(需求规格说明书),较好的模板为IEEE标准830-1998描述的SRS模板,下面是一个常见的需求说明书的模板:

  1. 前言(目的、范围、定义、缩写词、略语)
  2. 项目概述 (产品描述、产品功能、用户特点、一般约束、假设和依据)转自项目管理者联盟
  3. 功能性需求 (功能需求1、功能需求2….)
  4. 外部接口 (用户接口、硬件接口、软件接口、通信接口)
5. 性能需求
  6. 设计约束 (其他标准的约束、硬件的限制)
  7. 属性项目经理圈子
  8. 其他需求(数据库….)
  9. 附录
  10. 索引 training.mypm.net

  4、需求论证

  问题六:需求文档口头达到共识,缺乏文字依据。有时候因为时间紧凑或其他原因,即使达到了一致的共识,多数的用户单位都不愿意在需求文档上签字。这种情况有可能导致后期需求不断变更,需求变更影响软件开发的进度、成本,甚至有可能使得软件开发中止。对策:需求分析人员与用户建立良好的沟通渠道,强调需求文档书面认可的重要性,期望得到用户的理解。
blog.mypm.net
  总结:

  综上所述,多数软件项目都是在时间紧、人员少、项目预算有限的条件下完成的。在这些“先天不足”的条件下,如何做到项目进度不延迟、工作量不超期、费用不超支?首先就是关注需求分析。 “良好的开端就成功了一半”,需求分析做好了,对下一步的设计阶段工作真正起到指导性作用,规避需求开发过程存在的问题,成功的软件项目指日可待。

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值