浅谈项目管理在软件开发项目的应用
05-08
项目管理是第二次世界大战后期发展起来的重大新管理技术之一。虽然在此之前项目管理已广泛应用于许多事业领域,如工程建设项目和新产品开发,但直到第二次世界大战期间以及战后,它作为管理技术复杂的活动,或需要多学科协作的活动的一种特殊工具的价值,才完全被认识,其结果使项目管理成为一种相对来说较新的管理方法,得到迅速发展和不断完善,现在,项目管理已经被公认为是一种有生命力并能实现复杂的企业目标的良好方法。
随着信息技术的飞速发展,软件产品的规模也越来越庞大,个人单打独斗的作坊式开发方式已经越来越不适应发展的需要。各软件企业都在积极将软件项目管理引入开发活动中,对开发实行有效的管理。从概念上讲,软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对成本、人员、进度、质量、风险等进行分析和管理的活动。实际上,软件项目管理的意义不仅仅如此,进行软件项目管理有利于将开发人员的个人开发能力转化成企业的开发能力,企业的软件开发能力越高,表明这个企业的软件生产越趋向于成熟,企业越能够稳定发展(即减小开发风险)。
本文将根据自己在软件开发项目中的实际经验来浅述在软件项目开发过程中项目经理如何使用项目管理的理论来进行软件项目的管理。
一、 需求的确定
需求的确定也就是项目范围的确定,这是项目管理中首先要注意的,是软件开发项目管理的重中之重,只有分析设计的时间越长,需求设计做的越详细,测试的时间就越短,返工率越低,风险也越小,成本越容易得到控制。而需求分析没有做好就急忙上马进行开发的项目在项目初期进展顺利的时候问题不大,到了项目后期和测试阶段,一些潜伏期比较长但破坏作用比较大的问题就会显现出来,造成返工,延长测试时间。
本人原来负责过一个企业的B2B电子商务系统的项目,客户方对项目进度要求特别快,我们公司领导因为和客户方的领导关系比较好,所以就要求我们必须满足他们的时间要求。所以在做需求分析是,客户方就要求我们做需求的时间不要太长,还说具体细节可以在以后填充。就这样,经过简单的需求分析后,该项目就正式开始启动了,我们项目团队也就抓紧时间开始进行项目的开发了。
但结果证明我们是错误的,等我们按照项目开发计划的时间把DEMO版交给客户方的时候,客户方却对结果不满意,他们认为他们想实现的一些功能我们没有替他们实现,而实际上他们说的功能我们在做需求分析的时候他们并没有提供给我们;另外,客户方对系统的界面、操作方法还有一些其他功能也不满意,认为界面不符合他们企业的风格、操作过程也和他们现有的一些操作流程不太吻合等。所有的这些客户不满意产生的原因就是我们需求没有做够。
后来,我们只能又根据客户提出的新的需求对系统进行调整,就这样反复过多次,最终系统才能满足用户的需求。但就这个项目本身而言已经是失败了,因为项目的进度拖后、项目的成本也超支了。
所以与其把问题堆积到紧张的项目后期,不如把时间多花点到需求分析和总体设计上。经验告诉我,需求分析本身也存在着时间分配的问题。第一遍需求分析花的时间会最长,分析员们在客户的各个部门之间几乎把腿都跑断,把口水说干,就是为了确立一个初期的需求模型。所有的文档将会提交给项目经理进行复审并签字,不合格的打回重做。反馈表随之将提交给客户,第二遍第三遍等等接踵而来,与客户反复讨论和磋商,反复提交文档和表格,目的只有一个,明确需求。当项目经理最终合并了所有文档并确立需求之后,最终生成的需求文档将提交给客户的各部门负责人签字。这些文档将作为合同的附件添加,以便在将来项目变更或者碰到重大问题时和客户扯皮的重要依据。
二、 需求变更的管理
需求变更的管理属于项目管理中的过程控制内容,对任何项目,变更无可避免,无从逃避,只能去积极应对,这个应对应该是从需求分析就开始了。对一个需求分析做的很好的项目来说,基准文件定义的范围越详细清晰,用户跟项目经理扯皮的幌子就越少。而需求没做好,基准文件里的范围含糊不清,被客户抓住空子搞你一下是非常头疼的事情,往往要付出无谓的牺牲。
一般的,需求做好了,文档清晰又有客户签字,那么后期客户提出的变更就超出了合同的范围,需要另外收费。这个时候千万不能手软,并非要刻意赚取客户的钱财,而是不能养成客户经常变更的习惯,否则后患无穷,维护的成本会让项目经理吃不消。在客户提出变更请求时,要建立变更申请登记表和变更申请表,并让客户签字。当然,有时候一些不是非常关键的模块项目经理也不至于一点不讲情面,该卖面子的时候还是要卖,尤其是当着对方领导的面,千万要卖面子,但是也别卖的太干脆,不要让他们得到的太容易。
三、 项目团队的管理
项目团队管理属于项目管理中人力资源管理和沟通管理部分的内容,它是项目能否取得成功的重要因素。挑选合适的项目成员是项目经理头疼的一个大问题,有时候一个在别的项目里很优秀的项目成员,过来本项目未必能适应。所以,项目经理还是要拓展知识面,培养自己的敏锐度,因人置宜,才能挑选对自己项目有帮助的项目成员,才能真正对项目起作用。
任何项目都有核心的项目成员,核心项目成员背负着很重的责任,项目经理要特别注意爱护核心程序员,尤其是他们的生活困难和精神状况,有时候,他们耍性子或者不合作项目经理要妥协,要从自己身上找原因。
对项目程序的奖惩也是项目成员管理的一个重要工作,如果项目成员的工作做的十分好、工作效率很高,项目经理就可以对项目成员进行奖励,一般主要是进行精神上的奖励,如在项目讨论会等场合进行表扬,当然适当的时候可以进行物质上的奖励,如加奖金等;至于惩罚,要注意方法和技巧还是时间场合,骂,扣工资,开除都不顶用,在项目没完成之前不是追究责任的时候。一个优秀的项目经理应该给他一个机会,有时可以当作没事一样让他去做别的事情,把他做砸的事情交给别人去做,但其实这就是对他最大的惩罚。这样既能激励他上进又不会让他尴尬。
项目团队成员的冲突再所难免。在发生冲突的时候项目经理要牢记以公开,公正的方式处理冲突,不能偏袒任何一方;处理事情的时候必须对事不对人。有时候,成员与项目经理之间也会有冲突,一般情况下都可以几乎肯定是项目经理的责任,因为很少有成员敢吃豹子胆来反抗自己的顶头上司。这时候项目经理除了要及时的做自我检讨之外,要有宽广的心胸。绝对不可以利用职权打击与自己有矛盾的成员,否则团队里所有成员都会心寒,项目的质量将会大打折扣。如果他确实不对,也要忍住,等项目完了在处理。项目经理的心胸还表现在不能嫉贤妒能上。当公司高层越级表扬团队某成员时,你应该高兴和光荣,而不是阴险的想着下次如何把这份光环戴到自己的头上。
项目是有风险的,肯定会有失败的部分甚至整个项目失败。虽然说每个人都在项目里定下了责任,在项目里程碑里都有任务。但是当整个项目危机来临的时候,项目经理要勇于站出来,承担起全部的责任。这是做人的方式,也能让你赢得团队所有成员的尊敬和爱戴。往往在这个时候我们才能体会到什么叫团队合作精神,就是大家齐心合力,共渡难关。
四、 项目的沟通管理
在项目开发过程中,要多与项目干系人进行沟通,项目的干系人主要包括客户、公司领导等。
客户是项目开发过程中最要进行沟通的,我们可以尽早对用户进行培训,进行多层面的沟通,让用户深入理解在项目过程中的难点以及可能产生的组织结构与职务、岗位、职责的变化,经常鼓励他们积极参与项目的整个过程,有效排除各种干扰和抵触情绪以确保项目的成功。
除了客户外,项目经理也要多与公司的领导进行沟通,在项目开发过程中不要报喜不报忧,实施过程中出现的问题都要及时反映给公司领导,尽早让领导知道问题的详细情况,领导也就可以针对一些问题做出新的决策。如果把一些错误对公司领导隐瞒,让问题继续发展扩大直至积累到难以纠正才报告给高层领导,到那时,公司领导就根本不可能有什么解决问题的办法了。 最后,项目经理就要承担所有的后果。
五、 项目管理软件
在软件项目开发过程中项目经理要多利用一些项目管理软件来辅助项目的管理,这样可以提高项目的管理水平,增强计划的可执行性,提高资源的有效配置,加强成本管理,提高企业的竞争能力。在实际工作中,我们主要利用项目管理软件来实现如下功能:
1.成本预算和控制
输入任务、工期,并把资源的使用成本、所用材料的造价、人员工资等一次性分配到各任务包,即可得到该项目的完整成本预算。在项目实施过程中,可随时对单个资源或整个项目的实际成本及预算成本进行分析、比较。
2.制定计划、资源管理及排定任务日程
用户对每项任务排定起始日期、预计工期、明确各任务的先后顺序以及可使用的资源。软件根据任务信息和资源信息排定项目日程,并随任务和资源的修改而调整日程。
3.监督和跟踪项目
大多数软件都可以跟踪多种活动,如任务的完成情况、费用、消耗的资源、工作分配等。通常的做法是用户定义一个基准计划,在实际执行过程中,根据输入当前资源的使用状况或工程的完成情况,自动产生多种报表和图表,如“资源使用状况”表、“任务分配状况”表、进度图表等。还可以对自定义时间段进行跟踪。
4.报表生成
与人工相比,项目管理软件的一个突出功能是能在许多数据资料的基础上,快速、简便地生成多种报表和图表,如甘特图、网络图、资源图表、日历等。
5.方便的资料交换手段
项目管理软件还可以通过电子邮件发送项目信息,项目人员通过电子邮件获取信息,如最新的项目计划、当前任务完成情况以及各种工作报表。
在软件开发过程中使用项目管理的方法不仅体现在我上述的这些内容上,事实上,在项目的整个过程中,我们都应该使用科学的项目管理方法来保证项目可以顺利实施和完成。
随着信息技术的飞速发展,软件产品的规模也越来越庞大,个人单打独斗的作坊式开发方式已经越来越不适应发展的需要。各软件企业都在积极将软件项目管理引入开发活动中,对开发实行有效的管理。从概念上讲,软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对成本、人员、进度、质量、风险等进行分析和管理的活动。实际上,软件项目管理的意义不仅仅如此,进行软件项目管理有利于将开发人员的个人开发能力转化成企业的开发能力,企业的软件开发能力越高,表明这个企业的软件生产越趋向于成熟,企业越能够稳定发展(即减小开发风险)。
本文将根据自己在软件开发项目中的实际经验来浅述在软件项目开发过程中项目经理如何使用项目管理的理论来进行软件项目的管理。
一、 需求的确定
需求的确定也就是项目范围的确定,这是项目管理中首先要注意的,是软件开发项目管理的重中之重,只有分析设计的时间越长,需求设计做的越详细,测试的时间就越短,返工率越低,风险也越小,成本越容易得到控制。而需求分析没有做好就急忙上马进行开发的项目在项目初期进展顺利的时候问题不大,到了项目后期和测试阶段,一些潜伏期比较长但破坏作用比较大的问题就会显现出来,造成返工,延长测试时间。
本人原来负责过一个企业的B2B电子商务系统的项目,客户方对项目进度要求特别快,我们公司领导因为和客户方的领导关系比较好,所以就要求我们必须满足他们的时间要求。所以在做需求分析是,客户方就要求我们做需求的时间不要太长,还说具体细节可以在以后填充。就这样,经过简单的需求分析后,该项目就正式开始启动了,我们项目团队也就抓紧时间开始进行项目的开发了。
但结果证明我们是错误的,等我们按照项目开发计划的时间把DEMO版交给客户方的时候,客户方却对结果不满意,他们认为他们想实现的一些功能我们没有替他们实现,而实际上他们说的功能我们在做需求分析的时候他们并没有提供给我们;另外,客户方对系统的界面、操作方法还有一些其他功能也不满意,认为界面不符合他们企业的风格、操作过程也和他们现有的一些操作流程不太吻合等。所有的这些客户不满意产生的原因就是我们需求没有做够。
后来,我们只能又根据客户提出的新的需求对系统进行调整,就这样反复过多次,最终系统才能满足用户的需求。但就这个项目本身而言已经是失败了,因为项目的进度拖后、项目的成本也超支了。
所以与其把问题堆积到紧张的项目后期,不如把时间多花点到需求分析和总体设计上。经验告诉我,需求分析本身也存在着时间分配的问题。第一遍需求分析花的时间会最长,分析员们在客户的各个部门之间几乎把腿都跑断,把口水说干,就是为了确立一个初期的需求模型。所有的文档将会提交给项目经理进行复审并签字,不合格的打回重做。反馈表随之将提交给客户,第二遍第三遍等等接踵而来,与客户反复讨论和磋商,反复提交文档和表格,目的只有一个,明确需求。当项目经理最终合并了所有文档并确立需求之后,最终生成的需求文档将提交给客户的各部门负责人签字。这些文档将作为合同的附件添加,以便在将来项目变更或者碰到重大问题时和客户扯皮的重要依据。
二、 需求变更的管理
需求变更的管理属于项目管理中的过程控制内容,对任何项目,变更无可避免,无从逃避,只能去积极应对,这个应对应该是从需求分析就开始了。对一个需求分析做的很好的项目来说,基准文件定义的范围越详细清晰,用户跟项目经理扯皮的幌子就越少。而需求没做好,基准文件里的范围含糊不清,被客户抓住空子搞你一下是非常头疼的事情,往往要付出无谓的牺牲。
一般的,需求做好了,文档清晰又有客户签字,那么后期客户提出的变更就超出了合同的范围,需要另外收费。这个时候千万不能手软,并非要刻意赚取客户的钱财,而是不能养成客户经常变更的习惯,否则后患无穷,维护的成本会让项目经理吃不消。在客户提出变更请求时,要建立变更申请登记表和变更申请表,并让客户签字。当然,有时候一些不是非常关键的模块项目经理也不至于一点不讲情面,该卖面子的时候还是要卖,尤其是当着对方领导的面,千万要卖面子,但是也别卖的太干脆,不要让他们得到的太容易。
三、 项目团队的管理
项目团队管理属于项目管理中人力资源管理和沟通管理部分的内容,它是项目能否取得成功的重要因素。挑选合适的项目成员是项目经理头疼的一个大问题,有时候一个在别的项目里很优秀的项目成员,过来本项目未必能适应。所以,项目经理还是要拓展知识面,培养自己的敏锐度,因人置宜,才能挑选对自己项目有帮助的项目成员,才能真正对项目起作用。
任何项目都有核心的项目成员,核心项目成员背负着很重的责任,项目经理要特别注意爱护核心程序员,尤其是他们的生活困难和精神状况,有时候,他们耍性子或者不合作项目经理要妥协,要从自己身上找原因。
对项目程序的奖惩也是项目成员管理的一个重要工作,如果项目成员的工作做的十分好、工作效率很高,项目经理就可以对项目成员进行奖励,一般主要是进行精神上的奖励,如在项目讨论会等场合进行表扬,当然适当的时候可以进行物质上的奖励,如加奖金等;至于惩罚,要注意方法和技巧还是时间场合,骂,扣工资,开除都不顶用,在项目没完成之前不是追究责任的时候。一个优秀的项目经理应该给他一个机会,有时可以当作没事一样让他去做别的事情,把他做砸的事情交给别人去做,但其实这就是对他最大的惩罚。这样既能激励他上进又不会让他尴尬。
项目团队成员的冲突再所难免。在发生冲突的时候项目经理要牢记以公开,公正的方式处理冲突,不能偏袒任何一方;处理事情的时候必须对事不对人。有时候,成员与项目经理之间也会有冲突,一般情况下都可以几乎肯定是项目经理的责任,因为很少有成员敢吃豹子胆来反抗自己的顶头上司。这时候项目经理除了要及时的做自我检讨之外,要有宽广的心胸。绝对不可以利用职权打击与自己有矛盾的成员,否则团队里所有成员都会心寒,项目的质量将会大打折扣。如果他确实不对,也要忍住,等项目完了在处理。项目经理的心胸还表现在不能嫉贤妒能上。当公司高层越级表扬团队某成员时,你应该高兴和光荣,而不是阴险的想着下次如何把这份光环戴到自己的头上。
项目是有风险的,肯定会有失败的部分甚至整个项目失败。虽然说每个人都在项目里定下了责任,在项目里程碑里都有任务。但是当整个项目危机来临的时候,项目经理要勇于站出来,承担起全部的责任。这是做人的方式,也能让你赢得团队所有成员的尊敬和爱戴。往往在这个时候我们才能体会到什么叫团队合作精神,就是大家齐心合力,共渡难关。
四、 项目的沟通管理
在项目开发过程中,要多与项目干系人进行沟通,项目的干系人主要包括客户、公司领导等。
客户是项目开发过程中最要进行沟通的,我们可以尽早对用户进行培训,进行多层面的沟通,让用户深入理解在项目过程中的难点以及可能产生的组织结构与职务、岗位、职责的变化,经常鼓励他们积极参与项目的整个过程,有效排除各种干扰和抵触情绪以确保项目的成功。
除了客户外,项目经理也要多与公司的领导进行沟通,在项目开发过程中不要报喜不报忧,实施过程中出现的问题都要及时反映给公司领导,尽早让领导知道问题的详细情况,领导也就可以针对一些问题做出新的决策。如果把一些错误对公司领导隐瞒,让问题继续发展扩大直至积累到难以纠正才报告给高层领导,到那时,公司领导就根本不可能有什么解决问题的办法了。 最后,项目经理就要承担所有的后果。
五、 项目管理软件
在软件项目开发过程中项目经理要多利用一些项目管理软件来辅助项目的管理,这样可以提高项目的管理水平,增强计划的可执行性,提高资源的有效配置,加强成本管理,提高企业的竞争能力。在实际工作中,我们主要利用项目管理软件来实现如下功能:
1.成本预算和控制
输入任务、工期,并把资源的使用成本、所用材料的造价、人员工资等一次性分配到各任务包,即可得到该项目的完整成本预算。在项目实施过程中,可随时对单个资源或整个项目的实际成本及预算成本进行分析、比较。
2.制定计划、资源管理及排定任务日程
用户对每项任务排定起始日期、预计工期、明确各任务的先后顺序以及可使用的资源。软件根据任务信息和资源信息排定项目日程,并随任务和资源的修改而调整日程。
3.监督和跟踪项目
大多数软件都可以跟踪多种活动,如任务的完成情况、费用、消耗的资源、工作分配等。通常的做法是用户定义一个基准计划,在实际执行过程中,根据输入当前资源的使用状况或工程的完成情况,自动产生多种报表和图表,如“资源使用状况”表、“任务分配状况”表、进度图表等。还可以对自定义时间段进行跟踪。
4.报表生成
与人工相比,项目管理软件的一个突出功能是能在许多数据资料的基础上,快速、简便地生成多种报表和图表,如甘特图、网络图、资源图表、日历等。
5.方便的资料交换手段
项目管理软件还可以通过电子邮件发送项目信息,项目人员通过电子邮件获取信息,如最新的项目计划、当前任务完成情况以及各种工作报表。
在软件开发过程中使用项目管理的方法不仅体现在我上述的这些内容上,事实上,在项目的整个过程中,我们都应该使用科学的项目管理方法来保证项目可以顺利实施和完成。
相关文章:
- Protel软件在高频电路布线中的技巧(05-08)
- PROTEL软件使用的误区(05-08)
- HFSS软件简单介绍(05-08)
- 仿真软件官方网址(05-08)
- EDA软件列表(05-08)
- CST 软件的历史及版本更新(05-08)
射频专业培训教程推荐