Chinaunix首页 | 论坛 | 博客
  • 博客访问: 12345
  • 博文数量: 14
  • 博客积分: 430
  • 博客等级: 下士
  • 技术积分: 185
  • 用 户 组: 普通用户
  • 注册时间: 2011-12-15 14:48
文章分类
文章存档

2012年(9)

2011年(5)

我的朋友
最近访客

分类: 项目管理

2011-12-27 17:06:34

有人说“做项目计划,如同给一个待出生的婴儿写传记那样困难。如果允许项目结束后再写计划,那就轻松多了,并且可以 100% 地准确”。确实是这样,为什么项目的计划这么难呢?

  在软件开发项目实践中,关于计划主要有以下一些常见问题

项目目标不够清晰明确

  这实际上在软件开发项目中是一个普遍的现象。缺乏详细的工作目标以便在项目结束时验证是否取得了预期的成果。对于软件开发项目而言,在进度、任务范围、质量、成本等项目目标中,进度是最容易清晰明确的,也是用户最为关心的。不管是献礼工程或一把手工程,进度都是项目目标诸多方面中最先制定的,并且能够很快在招标文件或合同中订下来。当然,这种进度的合理性未必是经得起考验的。而统计数字事实说明,大部分的软件开发项目的进度是不合理的。无论是急于求成的客户还是缺乏软件开发经验和软件工程知识的项目经理都存在对进度过于乐观的问题,其原因较多是因为他们对项目范围的认识是在一种比较粗的颗粒度基础之上。大多数的软件开发项目在开始阶段可能存在项目范围不够清晰的问题,需要经过需求调研之后才可以清晰。质量目标是最不容易清晰和明确的,这主要是因为软件系统的质量量化比较难。由于质量目标的不确定性,它在进度、成本、范围等目标的压力之下就很容易被忽视。这似乎说明了,质量目标是这些目标中最不重要的一个,最有可能被牺牲的一个。成本目标可能用户方面不太关心,确实软件开发组织最为关心的,软件开发的成本主要是人力资源的成本,其他的设备基础设施都是可以重复使用的。所以,在进度、任务范围、质量明确以后,人力资源的成本就可以经过经验等方式估算出来。

对编写计划的过程在思想意识上重视不够

  实际上是对项目计划的重要性认识还不够充分,虽然大家都知道知道“作计划”很重要,是项目成功的关键,但又认为计划就是写文档,也许是因为一些人善于写程序但不善于写文档,所以有些项目经理会认为写文档是一种走形式,或对繁琐的文档有一种排斥心理。其实不能把计划当成仅仅是写一个计划文档的问题,而是要通过编写计划文档的过程,理清项目目标、项目范围、项目所需资源、制定合理的项目进度、制定完成项目所需的各种约定(沟通、变更)、制定应对风险的有效对策。对于这一问题的解决,首先应当提高项目经理的计划意识,采用项目计划制定相关各种知识、技术、工具,加强对开发计划、阶段计划的有效性进行事前事后的评估与评审工作。

制订计划时没有进行充分的沟通

  项目经理制订计划时没有和项目主要成员和主要项目干系人共同讨论协商,达成共识;或者最终计划没有发布到所有相关的项目干系人,取得他们的认同、理解,最重要的是对计划中共同责任、目标和各自责任、目标的承诺;由此而造成的后果是项目计划缺乏项目组成员的支持,没有成为项目组成员的共识,没有使每个项目组成员努力实现在项目计划中所作的承诺。因此项目经理制订计划时首先要分清或确定主要项目成员和主要项目干系人,然后与他们进行充分的沟通协商,使项目计划是一个大家都认同的,形成共识的有效文件。

  一种更为严重的情况是遗漏了重要的项目干系人。在制定计划时没有考虑到所有项目干系人,特别是那些对于项目的成败有重要影响的项目干系人,在制定计划时要和他们进行充分沟通取得对项目进度、资源、验收标准等计划的共识和保证。

对总体计划、阶段计划的作用认识不足

  项目经理认为计划不如变化快,项目中也有很多不确定的因素,做计划是走过场,因此制定总体计划时比较随意,不少事情没有仔细考虑,或者是有一种等一下再说的想法;阶段计划因工作忙等理由经常拖延,造成计划与控制管理脱节,无法进行有效的进度控制管理。那些号称“所见即所得”的OA,边做、边提需求、边改、边完善的“四边形”的所谓“快速”软件开发也可能竟然是本企业周期延续最长的项目,因为无休无止的需求变更而永无止境。从项目的计划阶段来看,因为边做、边提需求、边改、边完善,所以他们首先就对计划没有信心,基本上计划对他们来说只是应付,久而久之,对计划方面的锻炼意识不如其他项目,甚至养成不容易改掉的习惯。

任务和职责划分不够清晰或有遗漏

  目标、任务的分解不够清晰、工作有遗漏,没有确定项目组成员职责的差别,如程序员的职责都笼统地写成“编码”。其主要原因是一些新任的项目经理是由程序员提拔起来的,不太熟悉软件工程各阶段工作职责中某些具体工作的分配,无法按任务分清每个人的责任。如应该分清楚需求人员该做什么、设计人员该做什么、编码人员该做什么、测试人员该做什么。责任似乎很容易分清,但大家却经常听到“这是需求的事”、“这是设计的事”这样的争论,严重的造成项目组内部的纠纷扯皮。就是因为这些新的项目经理对一项具体工作,如界面设计、数据规格等应该由需求分析人员来做,还是设计人员来做分不清楚,还有就是做到什么程度算概要设计,什么程度算详细设计,职责上也要搞清楚。建议新上任的项目经理应该多学习软件工程的相关知识。

项目计划没有突出重点

软件开发涉及到方方面面的工作,有些是主要的,有些是次要的,项目计划应当反映有价值的工作任务、环境条件。项目计划不能写成一个大杂烩,也不能写成一个包罗万象的百科全书。在项目计划中要简洁精确地反映对项目有价值的事情、任务和活动,避免罗嗦。的理论方法、成功的经验都是在实施项目时应该参考的。但是,每个项目是特殊的,具有“唯一性”的,一次需要为每个项目做专门的计划,选择适合的项目,适合的团队的方式和方法。

忽视次要工作任务对项目的影响

软件开发项目计划不仅要安排需求分析、概要设计、必要时的详细设计、系统实施和测试与维护等实际的重要工作,而且还应该安排项目中的支持性辅助活动,这些支持性辅助活动虽然不能成为关键活动,但是它们却对项目的进展又作重大的影响。这些辅助活动包括体系结构定义、文档评审后文档编写的返工甚至是需求调研的返工,测试之后的编码返工、系统交付、与软件复用相关的活动、项目组内沟通交流、休假和法定假日、培训和教育、团队成员的生活(如饮食、住宿、交通等)、项目规划、人员管理等管理活动、会议和回复电子邮件,等等。做项目计划时应当尽可能完整地列出这些影响项目的活动,或者按照固定的模板进行计划的制订,免得遗漏必要的计划内容。有时候,小的疏忽会带来大的问题,次要矛盾会成为或引发主要矛盾。例如,加班安排不当,会引起员工的厌倦甚至离职,造成软件项目的人力资源问题,从而影响项目的进度,甚至导致项目失败。

工作任务的分解不便于人员分工

在确定了系统构架之前应该考虑在编写文档的同时是否有些其他基础性的工作可以先做,如是否在需求分析的同时进行部分的系统概要设计;是否可以先进性技术预研,环境架构搭建、后台数据库框架搭建、软件系统框架搭建等等。迭代法使得在上一阶段的部分任务完成后,下一阶段的对应工作就可以投入进行。在确定了系统构架之前之后工作任务的分解都要考虑模块编码独立性、开发编码工作的负载均衡、编码进度安排优化、预防人员流动(如生病、其他更紧急的任务、离职等)对开发的影响一个好的项目计划同时应有助于减少项目组的压力和紧张,提高软件开发效率。

参考文献:

阅读(312) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~