开发一个软件项目,如果采用瀑布模型(或改进型瀑布模型)的话,通常会包括以下几个开发阶段,即:需求分析、系统设计、系统编码、系统测试、系统交付(及后续维护)。在项目管理过程域中,主要包括:项目规划、立项管理、需求管理、项目监控、风险管理和结项管理等。

我们把所有与需求相关的活动统称为需求工程。需求工程的活动又可分为两大类,即需求开发和需求管理。系统需求分析员通过需求调查(调研)、需求分析和需求定义,完成需求开发工作。而项目经理则通过对需求确认、需求跟踪和需求变更控制的主导,实现需求管理。

软件需求工程是软件项目开发工作的一个重要源头。它是由两个角色共同完成的。需求分析师一定要尽可能准确的获取客户需求,尽量一次做对,编写出高质量的《用 户需求说明书》和《产品需求规格书》,努力降低项目中后期因需求变更对项目的成本、质量和进度的影响。而项目经理则需通过加强需求管理,有效的防范和减少 不必要的需求变更。曾有人做过统计分析,如果在需求分析阶段发生的需求变更对项目带来的额外工作量是5的话,那么在系统分析和系统编码阶段发生的需求变更对工作量的增加分别是20和100。

对于那些软件能力成熟度高的软件企业的项目经理而言,可以毫不夸张的说:只要把需求管理做好了,项目也就已经成功了一半。
CMMI中对需求管理流程的定义与我项目实践的体会集成式能力成熟度模型(CMMI:Capability Maturity Model Integration)把需求管理流程划分为六部分,分别是:1、制定需求管理计划;2、求得对需求的理解;3、求得对需求的承诺;4、管理需求变更;5、维护对需求的双向跟踪;6、识别项目工作与需求之间的不一致性。

毋 容置疑,上述六个部分是构成需求管理流程的重要组成部分。但在实际操作中,仅仅是机械的遵循这些标准流程和要点,往往又是不够的。根据我在过去十年在国内 的多个大型软件项目(涉及仓储管理、物流园区信息平台、保税区海关联网监管系统,以及港口社区综合信息平台等)担任项目经理的管理实践获得的经验,我的看 法就是:要想成功的执行需求管理,涉及到的一些关键成功因素还远不止这些。下面是我的一些经验和体会。

我的两点经验一、应紧密结合国内企业的实际特点和人文环境,通过多种手段消除"需求的不确定性"
开 发企业级大型应用软件项目,需要应对的重要挑战就是"需求的不确定性"。那么,什么是"需求的不确定性"呢?我这里先例举两个场景。场景一:开发人员没有 行业背景,不能很好的理解业务需求。某个开发项目,尽管经过了多轮次、十分详尽和深入的需求研讨,而且开发人员都确信自己已经明白了客户提出的业务需求, 但费尽千辛万苦把系统做出来以后,客户却说:"对不起,这并不是我想要的!"于是几百万,甚至上千万的开发投入打了水漂;场景二:开发人员具备丰富的行业 经验,也确实理解了业务需求,但开发项目组因为没有很好的平衡各方利益关系,软件系统在上线后要么遭到全盘废弃,要么就只有那么一小部分功能得到实际应 用。客户的大部分项目投资没能获得应有的收益。

从以上描述的两个场景可以看出:造成需求不确定的原因很多。它们包括但不限于:1、开发团队缺乏所开发项目的业务背景和行业经验,导致不能很好的理解客户的业务需求;2、由于客户方人员的素质良莠不齐,以至于有些人员不能完整、全面、系统、准确的阐述自身业务和对系统的需求,或者提出的需求难以通过IT技术加以实现,有些时候有些人甚至会从大方向上误导开发团队;3、客户方不熟悉软件项目开发方使用的工具、不理解项目需求分析人员提交的文档,难以通过交流消除双方在认识上的分歧,进而实现真实意图的准确表达;4、软件项目的开发和实施所伴随的企业流程重组(BPR),通常都会给客户方的内部组织和个人带来不同程度的冲击,如果项目开发和实施方不能妥善处理利益关系并有效化解潜在风险,则项目就很可能开发失败,或者项目在开发完成后即遭到用户的抵制,项目成果也随即被客户否定。

对应的解决方法是:1、如果项目开发方缺乏行业经验,一定要聘请业务专家、行业顾问等专业人士,通过业务培训和专业指导等方式,提高项目团队尤其是需求分析师对客户需求的把握能力;2、从不同层级的客户方人员那里获取不同层级的用户需求。要有针对性的对客户方人员进行软件项目的基本知识培训,让他们更好的了解软件项目开发的过程和步骤,以提高他们对开发高质量业务需求重要性的认识水平;3、通过建立直观易懂的业务需求模型,在某些时候可以通过快速开发工具搭建一个系统原型作为交流工具,分别与客户方的管理人员和操作人员进行深入交流和细致的需求探讨;4、就BPR对客户方企业内部人员的影响进行细致的分析和仔细的评估,并就分析结果与客户方高层管理者进行正式汇报和专题交流,充分利用客户方的管理层的力量消除BPR带来的业务需求风险和系统实施风险。

二、项目经理要高度重视对项目外部干系人的管理

在 这里先要解释一下:什么是外部干系人。一个软件项目,其项目干系人包括若干本公司(项目开发方)的人员,如项目团队成员和公司内部的管理人员(由于项目组 是临时组织,需要从公司内部各职能部门抽调人员。因此,寻求公司管理层和各职能部门的资源支持是非常重要的),他们可统称为这个项目的内部干系人。而外部 干系人则是指能够影响本项目,或者本项目的工作成果会对他们的利益带来影响的客户方人员和其他关联方人员。

虽然绝大多数项目管理书籍都在长篇累牍的介绍如何管理好项目组成员。但我的看法就是:很多时候,对外部干系人管理的好坏往往是决定一个项目成败的关键。

也许有人会问:项目组成员是完成开发项目的工作人员。难道对他们的管理不是最重要的吗?当然重要。但在项目实践中,一个合格的项目经理会发现他对项目组成员的管理是相对简单的工作。理由有三:1、在国内,项目经理通常都是具有较强综合素质和拥有丰富工作经验的员工,在公司拥有较高的地位和影响力。他容易得到公司管理层的认同和各方面的资源支持,也容易在项目组树立威信。因此,只要能获得公司的坚定支持,从客观上讲,对项目组成员的管理不存在特别大的障碍;2、国内软件公司的项目经理绝大多数都是从普通员工中提拔的。他们往往具有多方面的技能,本身就能胜任从编码到设计到需求分析等多方面的工作。如果个别项目组成员能力不够,项目经理往往能够通过自身的能力弥补项目组成员的不足;3、如果项目经理遇到项目组内部的管理问题,他可以很容易的从公司内部寻求到帮助和支持,并把风险控制在可控范围之内。

而 对项目外部干系人的管理就大不一样了。首先,客户是我们的衣食父母。项目组从本质上讲是要服务于客户的。因此,项目经理与外部干系人打交道,往往处于相对 弱势的地位。而在公司内部,项目经理则通常是处于相对强势的地位。这显然是一个本质的区别;其次,项目组成员的从业经验和业务背景往往与外部干系人的背 景、经验和技能存在很多不同,往往构成了双方在相互信任、理解和沟通方面的若干障碍;第三,由于项目周期短,项目经理对客户方等重要外部干系人的了解始终 有限。往往存在大量信息的不对称。信息的不对称又会在很大程度上影响项目经理的全局把握能力。

那么,如何才能做好对项目外部干系人的管理呢?我认为关键是要做好以下三项工作。

首先,要认真进行项目外部干系人的识别工作

其次,要增进项目外部干系人对项目经理的信任和认同

第三,加强项目沟通管理

转载于:https://www.cnblogs.com/zhangtao09/p/3222060.html

软件项目中需求管理工作的重要性相关推荐

  1. 【软件工程】用户在软件项目中承担的工作

    终端用户 终端用户既指软件的最终操作者,也是软件工程内的一个概念,指终端用户的抽象集合,用于区分单纯使用软件的用户和进行软件开发的开发者.这种抽象主要在设计用户界面时有用,用于代表普通用户的共同特性. ...

  2. 软件项目中需求调研浅析

    大家好,由于本人前段时间一直在客户那做项目的需求调研,所以未及时更新博客,此次博文就本人在做需求调研的体会与大家分享下需求调研的经验.在需求调研中,遇到了许多问题.如果你是一位需求调研的"新 ...

  3. 论信息系统项目的需求管理

    最近有朋友让我将我写论文的经验写出来,并写个例子给她.拗不过,只好回忆.本文以我自己在2009年下半年项目管理师考试的论文题目为例,说明如何写论文. 论文的编写其实不难,关键是要将题目的内容都覆盖到, ...

  4. 项目管理理论中关于软件项目外包采购管理的探讨

    一.基本概念和背景 项目管理理论是一门综合多门学科的新兴研究领域,共有九大知识领域,包括项目集成管理.项目范围管理.项目时间管理.项目费用管理.项目质量管理.项目人力资源管理.项目沟通管理.项目风险管 ...

  5. 项目管理理论中关于软件项目外包采购管理的探讨(转)

    项目管理理论中关于软件项目外包采购管理的探讨 摘要: 本文分析了目前软件外包采购管理的重要意义和目前的形势,提出基于"双赢"策略的软件外包采购思想.在项目管理理论.CMM和ISO9 ...

  6. 【软件工程】软件项目中的用户

    文章目录 终端用户 用户在软件项目中承担的工作 用户体验 用户友好 以用户为中心的设计 利益相关的用户 终端用户 终端用户既指软件的最终操作者,也是软件工程内的一个概念,指终端用户的抽象集合,用于区分 ...

  7. 软件项目中如何开展有效的需求评审

    1.需求评审的重要性 在软件项目中,需求分析是最开始的工作,同时也是最重要的工作.需求分析如果做得不够详细或者是偏离用户需求或者是存在缺陷的话,往往会给项目带来灭绝性的灾难,不重视需求过程的项目团队将 ...

  8. 软件项目中的决策分析_软件工程中的决策管理

    软件项目中的决策分析 Every day we make a lot of decisions. I always wonder why, in so much companies, there is ...

  9. 视频教程-高级软件需求分析与需求管理实践-需求分析

    高级软件需求分析与需求管理实践 近二十年软件开发.软件设计.需求分析.项目管理.部门管理.公司管理及过程改进等经十五年的需求分析及需求管理工作经验,负责数十个大型项目的需求分析和需求管理工作,涉猎建筑 ...

最新文章

  1. MySQL面试题 | 附答案解析(十一)
  2. 找不到可安装的ISAM”的问题
  3. oracle 和sybase比较,oracle和sybase的一些区别
  4. 从CCNA到CCIE的网工认证道路规划
  5. 4G EPS 中的 FDD/TDD 无线帧
  6. IT服务台的进化(2)--企业外部服务台的优缺点
  7. zxing .net 多种条码格式的生成
  8. Bootstrap3 输入提示插件typeahead
  9. u盾 签名pdf显示 “签名于修订版中删除”_Adobe Acrobat Reader DC for mac(免费pdf阅读)...
  10. C++的三种交换数值的方式(值传递、地址传递、引用传递)
  11. 关于STM32 __IO 的变量定义
  12. 列出5个python标准库_5个常用 Python 标准库
  13. 2007年各大论坛最新经典WindowsXP操作系统
  14. 根据手势拿到superview
  15. UE4 角色添加武器后 移动出现漂移
  16. Android接腾讯Bugly没有上传崩溃日志
  17. 你听到海豚们的哭声了吗?
  18. 超声波的四个特性_超声波的几个特性
  19. android 仿小米相机,android-自定义相机遇小米3生成图片花屏
  20. (一)ssh远程连接服务器GPU以及其他GPU使用途径——新手指南

热门文章

  1. 三周一套报表开发系统,原来Excel的顶级替代品是它
  2. 阿里创业员工分享公司的BI选型之路!自研、开源的坑都踩过
  3. linux blind函数,C++拾遗--bind函数绑定
  4. vue表格刷新数据_Vue.js的列表数据的同步更新方法
  5. java泛型实验报告,java实验报告异常集合类和泛型
  6. 主板刷安卓 联发科_魅蓝2—来自2015年的青年良品,在2020刷个安卓9.0,起死回生(附教程及资源)...
  7. C++STL中的priority——queue
  8. 欧几里德算法+拓展欧几里德算法
  9. 【机器学习-西瓜书】四、决策树:信息熵;信息增益;增益率;ID3;C4.5
  10. 【NIPS 2020】Generalized Focal Loss: Learning Qualified and Distributed Bounding Boxes for...译读笔记