软件开发项目的计划若干问题(上

发表于:2008-08-21来源:作者:点击数: 标签:软件开发项目
关键字:软件 开发 项目管理 软件管理 计划 摘要 本文主要谈谈软件开发项目的计划的目的、作用、制定的原则、计划的要素、软件开发项目的特点、以及对项目经理而言需要注意的问题和一些工作经验、工作方法。 关键词 项目管理、计划 正文 前言 著名的项目管理
关键字:软件开发 项目管理 软件管理 计划
摘要
本文主要谈谈软件开发项目的计划的目的、作用、制定的原则、计划的要素、软件开发项目的特点、以及对项目经理而言需要注意的问题和一些工作经验、工作方法。
关键词 项目管理、计划


正文


前言
      著名的项目管理泰斗Harold Kerzner博士在他的可以比作项目管理“圣经”的经典之作《项目管理—计划、进度和控制的系统方法》中说:“项目经理最重要的职责是做计划、整合计划和执行计划”。“项目经理是成功项目计划的核心”“计划是一种必备的管理职能,它增进了对相互作用的不同部门之间复杂问题的理解”。对于软件开发这个特殊的领域,制定项目计划、执行项目计划对项目进行控制的知识和经验的积累非常重要。


一、项目计划目的与作用
      根据软件能力成熟度模型集成CMMI1.1,软件开发项目计划的目的是:建立和维护定义项目活动的计划。项目计划属于CMMI的第2级,其过程域包括开发项目计划、与相关人员交流、获取对计划的承诺、维护计划;项目计划为实施和监控项目活动提供了基线。

      项目计划的第一个目的是建立估计值,即建立和维护项目计划因素的估计值。为此应该确定项目范围,即通过建立高层工作分解结构来估计项目范围;监理工作产品和任务属性的规模与复杂度;确定项目的生命周期阶段、以此来限定计划范围;基于估算的原理进行对工作产品和任务的项目工作量和成本的估算。

      项目计划的第二个目的是开发项目计划文档,即文档化项目计划,维护项目计划,并以此作为项目管理的基线。为此应该建立和维护项目的预算和进度表;要识别和分析项目风险;确定如何采集和管理项目数据;确定实施计划所需要的各种资源;确定项目实施所必需的知识和技能;确定各项任务或活动的承担人;编写项目计划文档。

      项目计划的第三个目的是获得并维持所有项目干系人对项目的承诺。为此应当评审影响项目的所有计划使所有项目干系人理解项目承诺;必要时调整项目计划以适应有效的和已经估计的资源;获取所有项目干系人特别是项目任务或活动的承担人对项目计划的承诺。

      项目计划是项目实施的基础。通过所有项目干系人认可的项目计划形成文件,便于本企业高层领导、相关管理部门粮道、相关参与部门领导、项目组成员、客户、协作单位、分包单位等等所有项目干系人之间的交流沟通。项目计划是项目组为实现项目目标而科学地预测并确定项目生命周期的行动方案。任何项目计划都是为了解决三个问题:一是确定项目目标,二是确定为了达成项目目标的各项行动的顺序和时间,三是确定项目中每项行动所需要的资源。所以制定项目计划就是在明确项目目标的基础上,确定项目行动方案,分配相关资源的项目综合管理过程,就是通过对历史的、当前的、项目或组织内部的和项目或组织外部的有关信息进行分析和评价,对项目生命周期过程中可能的发展进行评估、预测,对新项目实施工作进行的各项活动做出尽可能周密的安排,最终形成一个所有项目干系人认可的、约定项目各项活动、作为项目实施工作基础的文件—项目计划。项目计划围绕项目目标的完成系统地确定项目的任务、安排任务进度、编制完成任务所需的资源预算等,从而保证项目能够在合理的工期内,用尽可能低的成本达到尽可能高的项目质量要求。在制定项目计划过程中必须明确五个基本问题:做什么、如何做、何时做、谁去做、需要多少资源。

      简单地说,项目计划可以起到如下作用:

1、 确定完成项目目标所需的各项任务范围,落实责任,制定各项任务的时间表,明确各项任务所需的人力、物力、财力;
2、 确定项目的工作规范,遵循的标准,成为项目实施的依据和指南;
3、 明确项目组各成员及其工作责任范围以及相应的职权;使项目组成员明确自己的工作目标、工作方法、工作途径、工作期限要求;
4、 保证项目进行过程中项目组成员和项目干系人之间的交流、沟通与协作,使得项目各项工作协调一致,增加客户满意度;
5、 为项目的跟踪控制提供基础。
6、 项目计划在项目中起到承上启下的作用,计划批准后应当作为项目的工作指南。


二、项目计划制定的原则
1、 目的性。任何项目计划的制定应当围绕项目目标的实现展开。制订计划的第一步就是必须分析目标、进而找出为了完成目标所要完成的所有任务。

2、 系统相关性。项目计划由一系列子计划组成,如范围计划、人力资源计划、进度计划、资源计划、质量管理计划、风险管理计划等等。各个子计划不是孤立存在的,彼此之间相对独立,又紧密相关,应当形成一个有机的整体。构成项目计划的任何子计划的变化都会影响到其它子计划的制定和执行,进而影响到项目计划的正常实施。

3、 经济性。项目不仅要有较高的效率,而且要有较高的效益,因此计划过程是对多种选择权衡、优化的过程。

4、 动态性。由于项目环境一般处在变化之中,特别是软件开发先把棺木的多变性,经常使计划的实施偏离项目的基准计划,因此项目计划要随作环境和条件的变化不断调整和修改,以保证项目目标的完成。如何防止项目计划多变,对出现的问题及时加以处理以保证进度按原计划实现,在一定的意义上说甚至是更为重要的。防止项目计划多变,就要改进计划的编制工作,提高计划的质量,这首先要求项目经理和项目计划制定人员应当较好地掌握项目的环境条件,对各种条件进行深入的调查落实并做出有根据的预测,据以制定实施方案,适当留有余地,以使编制的项目计划切实而可行。其次就是要使这种计划能够得到贯彻执行,因为再好的计划,如果不能认真执行,也不过是毫无意义的一纸空文。根据各方面的经验,实行各种不同形式的责、权、利机制是保证计划实现的关键。

三、软件开发项目的特点
      与其他类型项目的共同点:项目成功与否不仅取决于项目过程中所采用的技术方法工具,还取决于项目管理的水平,特别是计划与控制的水平。了解软件开发项目的特点对于项目的计划制定和管理控制非常必要的。
与其他类型项目的不同点:

1、 软件产品和其他产品不同,软件产品是一种“逻辑”产品,是无形的,没有物理属性的,看不见、摸不着、难以理解;

2、 需求难以明确且频繁变更:由于用户的成熟度或责任心的原因。用户已开始无法给出明确的需求。在开发过程中,需求可能要经常及修改,因此需要经常地修改程序与文档;

3、 难以在早期发现问题:需求不明确,加上后期修改可能没有进行全局性的考虑,产生的问题难以从早期的文档中直观地发现,需要等系统设计出来后才会发现。

4、 项目成员对文档的重视不够。符合用户需求的高质量软件需要依赖于大量准确规范的文档编辑工作,但项目组成员对他并不感兴趣,很少愿意认真去做,因而直接影响了软件的质量。

5、 劳动密集型+智力密集型:软件开发过程需要大量高强度的脑力劳动,并且都是手工劳动,这些劳动非常细致、高度复杂、容易出错,质量那一用简单的度量来衡量,使得软件的正确性难以保证。对于不深入找掌握软件工程知识或缺乏软件开发实践经验的人员,是难以做好软件开发项目管理工作的。

原文转自:http://www.ltesting.net