学习项目管理理论后的体会
本人从事软件项目设计和开发工作,已经有15年了,大大小小的软件项目数起来要有20多个。但真正意义上的,是按照项目管理理论,从项目开始到项目结束进行全面控制的几乎没有,只是部分过程采用了一些管理理念和方法而已。
真正对项目管理有比较深刻的理解和认识的,还是这次参加“计算机信息系统集成项目经理培训”。通过系统的理论培训和教师结合实际的讲解,自己再联系以往的实际项目管理工作,感触很多。
一. 项目要进行整体管理,善始善终
整个项目开始要做好项目整体计划,在项目的整个过程中,始终要按照项目计划执行,如若遇到项目发生变更,要进行影响分析,得到批准后制定变更计划,并按变更计划执行。变更的影响情况,如:费用,时间进度等要通知相关的项目利益干系人,说明变更的原因和产生的影响。
项目首尾工作也是项目管理中,一项重要的工作。需要将项目过程中产生的文件资料进行整理,归档;对项目的费用和进度进行审计和审核,对项目的质量进行检验和验收;对项目的整个过程的利弊得失进行总结和交流。
变更计划在软件项目中经常遇到。控制好软件项目的变更,首先需要做好项目的开始目标基准的确定,基准的用户需求明确,才能衡量出哪些是需要变更的。否则变更的东西和开始要求的东西混在一起,变更计划就无从制定,变更的界限也无从划清。
自己做过的一个项目,开始为了占领市场和尽快拿下合同,在用户需求还没有详细提供的条件下,就与用户签定了合同,后来不仅费用受到限制,就连时间不够,在项目过程中,用户方还总是变更软件的功能和要求。因为没有一个基点,我们认为是变更需求和新增功能,而用户方认为是合同范围,不能因此增加费用和时间。这个项目在开始好象签定了合同我们争取了主动,其实需求不明确,使我们在后来的项目进程中一直处于被动。
所以项目从一开始就要做好计划,搞清目标。只有项目的目标明确,合理安排时间、费用、人力和其他资源,控制好项目的变更,这些是保证项目能够顺利完成的基本条件。
二. 项目范围管理理论解决了项目开始需求不清的问题
需求管理是项目范围管理中的问题,这是因为它实际上是开发过程中的所有管理原则的先决条件。只有在开发的目标被清楚明白地表述和理解的情况下,软件开发才能以一种有计划的有序的方式进行。实际上,没有文档化的需求,在开发工作完成前后都很有可能发生产品与要求的偏离。计划、追踪、配置管理以及软件质量保证这些在其他关键过程中涉及的原则,都是从一个稳定的基础开始的,那就是文档化的需求基线。
什么需求?需求是指“分配给软件的系统需求”,或者更简洁地说,“分配需求”。这些需求有可能是技术方面的(比如:功能和性能需求),也有可能是非技术方面的(比如:发布日期,开支限度)。
区分开需求管理和软件需求分析是很重要的。一旦分配需求被文档化,并且被所有受影响部门(客户,系统工程,软件工程)通过,需求管理的基本工作就完成了,所剩下的就是管理变更而已。没有证据证明分配需求本身就可以十分清楚完整的作为软件开发的全部基础。事实上,通常它们不是。
优化和精确描述需求,填补漏洞,将含义表达得更清楚是软件需求分析要做的,分析的结果被称为“软件需求“。这样,作为需求管理的输出的分配需求实际上就成了软件需求分析的输入。需求管理远远先于软件开发的技术行动,而软件需求分析则是关键开发技术行为的第一步。
从这里的描述看来,需求管理的活动简直太简单,太基础了,显然没有哪个软件开发组织会不有效的进行着这种活动。问题经常出在企业对透明度的惧怕。客户觉得保持需求含糊不清,松散或者无正式文件能够给他们更多的机会去说:“那并不是我所要的,那并不是我认为的需求的含义”。文档化清晰的需求可能迫使用户在系统满足了文档化的需求但没有满足实际需要的情况下,为开始变更负责。相似地,开发人员觉得含糊不清,松散或者无正式文件的需求能给他们更大的余地,允许他们与预算和进度尽可能地接近,然后说:“这就是我们所认为的需求的含义,如果你需要其他的什么东西,你必须另外付出代价。”文档化清晰的需求会迫使开发者承担满足这些需求的义务,并使他们暴露于开支、进度评估不准确的风险之下。
这样一来,尽管客户与开发人员的利益动机相对,但他们却走到了一起。每一方都认为他们在保护自己的利益,巩固自己讨价还价的地位,但是事实上每一方都在走向将来的失望和争吵,为项目埋下了一刻定时炸弹。
三.项目时间管理理论指导我们在项目管理中怎样抓主要矛盾
以前进行项目管理时,是根据经验和每个人的工作特点,进行项目的分工的,软件项目基本是按照需求分析,概要设计,详细设计,代码编程,调试和测试,用户验收等几个主要过程来进行的。但将项目分工更加细化,每个小过程的时间估算是多少,整个项目可以最短用多少时间来完成,怎样合理安排人员,怎样抓项目中的关键环节等等,这些都没有进行过量化的分析和管理。
项目管理的实施最为直观的就是缩短项目时间。利用项目管理理论、方法,有许多缩短时间的例子。美国路易斯维化工厂检修时把检修流程精细分解,按导向图建立起控制关系。他们惊奇地发现,检修过程选择不同路径总时间是有差别的。通过反复压缩最长路径上的任务,将工期反复优化,最后只用78个小时就完成了通常需125小时完成的检修,节省时间38%。这就是至今项目管理工作者还在应用的著名的时间管理技术CPM,即“关键路径法”。
所以我们在软件的项目管理中,也要将时间控制理论运用进来,结合软件工程的实际,将任务分解的更加详细,并用网络图将整个工作过程建立起来,估算好每个阶段的历时,找出关键路径,并通过快速跟进方法,将关键路径的工期缩短,以提高工效。
四. 质量管理是项目成败的关键
我们在进行软件项目过程中,对软件的功能测试一直认为还是比较认真和严格的,每次测试都要有测试计划和用例的编写,然后才能进行测试;测试要有记录,并将记录整理成测试报告。
但通过此次培训后,感觉到我们的测试工作与质量管理的要求还差的远,有距离。质量控制要深入到每个与项目相关的人,要深入到项目的每个过程中,从一开始,就要树立质量第一的理念,每个过程都要进行质量的控制,而不是到最好测试时,才想到质量,才去衡量是否符合标准。
标准化设计,标准化管理是项目质量的保证。参加质量体系认证有助于企业提高项目的管理水平,有利于提高工程项目质量。CMM模型已得到广泛的认可和接受,CMMI沿用其模型的组织方式,有5个等级和18个要素。通过5个等级的认证和加强管理,企业对项目的管理将经过5个境界的提高:从混乱,到里程碑的检查,到定义清楚的管理体系和标准,到进行统计过程控制量化管理,到最后的优化过程、评价工作流程、进行工作过程的改进。
本人以前参加过为日本软件进行部分功能的设计和编程工作。日本的软件企业对一个项目的质量控制就做的比较细致,用我们的观念衡量简直是不可容忍。做一个模块的详细设计,要用他们提供的标准的图形语言进行描述,用标准的设计摸版进行说明;并在设计完成后组织相关人员对这个设计进行评价,有问题需要修改设计,然后在评价直到通过才能开时以此为设计文件,进行代码。代码写完后,不是见到结果就完事了,要将代码打印出来,相关人员对代码的整个实现过程进行评价,提出修改建议,代码修改后,需要再审,也是通过以后才能提交入代码库,进行代码的组装。
当时认为日本的方法太浪费时间和人力了,对技术人员个人的能力估计的太低,怎么能提高工作效率呐。可是软件质量问题的频繁出现,是我们不断的认识到,开始浪费一些时间和人力,控制好每个细节的质量,就是省去了许多时候为解决质量问题而进行的新的时间和人力的支出。省去了大量的软件后期的质量维护费用。总的来看是核算的。为提高项目的质量,降低成本,必须从项目的开始就要做好质量的控制工作。
五. 沟通管理中的一些策略的使用可以使项目更好的完成
做项目就需要与客户接触,就会出现一些正式和非正式的谈判。双方都会为自己方的利益而进行讨价还价。与客户之间搞好沟通,是项目进展是否顺利的一个条件。沟通中有许多的策略在平时的实际工作中可以使用,目的不是坑害别人,而是为了更好地完成项目,达到双方事先确定的目标,而采用的一些艺术手段而已。沟通的技巧包括:下达最终期限,使用吃惊方法,采用有限权利法,不露面的人,公平合理,战略延迟,双方一起论理,撤退,不合理,既成事实等。本人就是成功的采用了战略延迟法,将客户方的一笔项目质保金及时地催要了回来。
体会还有很多,总之通过这次学习自己对项目的管理又有了新的认识,我会将这些理论知识运用到实际工作中去的。以提高项目的管理水平,提高项目的质量,降低项目的成本,降低项目的风险,最终提高企业的效益。