技术开发 频道

软件工程领域中项目管理实施体会

【IT168 技术文章】

    “项目”,在二千多年之前就已经存在。著名的埃及金字塔、我国的万里长城都是国际上众人称颂的典型项目。项目管理发展到今天,应用相对成功的领域主要是在土木工程上,现已逐步应用于软件工程、航空、国防、金融、体育等行业。

    一般来说,“项目”具有技术复杂,参与的人员还众多,时间又非常紧迫,因此,人们开始关注如何有效地实行项目管理来实现既定的目标。在这里,主要谈谈在软件工程领域中项目管理的运用,也就是项目管理能够给人们提供一种解决问题的思路和方法。 

    I. 当前项目管理存在的问题

    一项调查表明,大约70%的软件开发项目超出了估算的时间,大型项目平均超出计划交付时间20%至50%,90%以上的软件项目开发费用超出预算,并且项目越大,超出项目计划的程度越高。国内绝大多数的IT企业正或多或少地承受着“项目黑洞”的痛楚:项目无法按期完成、项目合作方的工作难以协调、用户需求经常变动、工作质量难以保证。很多企业常常抱怨说,我们的技术实力不比国外差,我们的员工也很努力,但是我们的产品和工作效率为什么总比不上国外?

    诸如此类的问题,就是当前软件开发中,实现项目管理实施时带来的问题。虽然,项目管理在土木工程中,项目管理在中国已经实施得十分成熟。但是,软件开发不同于其他产品的制造,软件的整个过程都是设计过程(没有制造过程);另外,软件开发不需要使用大量的物质资源,而主要是人力资源;并且,软件开发的产品只是程序代码和技术文件,并没有其他的物质结果。基于上述特点,软件项目管理与其他项目管理相比,有很大的独特性。其问题的具体表现为:

    一、工期失控,计划失控。项目做多,往往会形成一种错觉:不按计划工期完成的项目是正常的;能按计划工期准时完成的,往往是不正常的。这说明,项目的实际工期和计划工期不符,是“家常便饭”。大多数工期延期,很少提前的。工期延期、失控,自然而言会导致计划无法执行;计划无法执行,成本就失控;产品就会变形......

    二、项目前期多数出现“没事做”,后期“没人做”。在项目启动后,因为人员的配置,人员的衔接,硬件的配置,客户需求的确定性,一般会造成很多人“没事做”。而有些事是必须放在项目前期做的。前期不做,会对中后期有很大的影响。或者放到中后期做,会,要多花几倍的人力、物力。到了项目后期,会出现“虎头蛇尾”,大量的事情需要人来做,项目的人员又是固定的,其他人因为不了解整个项目,无法“空降”,则只能删除一些事情咯。这样就造成很多事情,没人做,后果可想而知。

    三、开发人员心态失控。延期,赶进度;晚上加班。还是延期,星期六也加班吧。还是不能按期完成,又到项目后期,只好封闭开发。平时晚上加班,星期六、星期天也加班。这就是很多开发人员开发项目渐进式的流程。不同项目的开发人员,只要问问对方是否加班,就大概可以了解到对方参加的项目的开发阶段拉。先抛弃加班对开发人员的效率的影响,对开发人员心态的影响才是最重要的。每个人都有趋利弊害的天性,开发人员也不例外。既然要赶进度,效率没有提高的情况下,要缩短开发时间,那只有简化功能,减少处理异常的情况,能把功能完成再说,等以后测试或用户哪里出问题再说。如果侥幸不出问题,那就没问题拉。这种情况下,当然希望测试的水平越“水”越好拉。哦,别忘了,测试也是开发人员的一部分。工期延期了,上面要求的进度又越来越紧,测试时间就更短,强度大,那只有有意无意去逃避错误,这样就皆大欢喜拉。

    这些共性的问题,就是项目管理所要解决的问题。只有解决了这些问题,项目管理水平就会得到质的飞跃!当然要解决这些问题,不是一两篇文章,一两个公司就能解决的,需要所有人的不断探索才能解决的。这里,主要是个人的一些思考,供大家参考。

    II. 定位问题

    有人会问,产品或项目的需求不就是包含了定位,何须重复讲呢。其实,这是一个误区。同样一个需求,在一个中学生中实现和在一个大学生中实现是完全不同的;在一个有经验的群体中实现和在一个缺乏经验的群体中实现是完全不同的。有些项目,由于定位未做好,未开始注定是失败的,无论是需求分析得如何好,编码、测试控制得十分完美,终究逃不过失败这一关。

    做软件的都知道,是没有真正的软件。即使是通用做的最好的WINDOWS,也不可能是通用到每一类人,每一个国家,每一个民族的人,通用到那些只有几千人的少数民族。因此,一个项目的定位是十分重要的。

    产品和项目的定位是不一样的。做项目不比卖产品,产品卖出就是成功,项目投产才算成功;产品是静态的,项目是动态的;产品质量有问题可以包换、保修,项目一旦失败,时间不能倒流,客户损失的可能就是市场竞争优势和机遇。

    对于用户定制的项目,定位相对简单,只要了解到定制用户的使用范围,使用者的知识结构、行业经验、电脑的基本知识及是否用过相关软件即可。特别地,如果是用过相关地软件,一定要了解清楚,哪些操作、功能是必须保留地,哪些操作、功能是可以修改或必须修改的。一段用户的已习惯了某种办法、操作方式,是很能更改的,如果定制的项目不遵照用户的习惯进行开发,在软件的运行初期,往往会出现很多意想不到的问题。此外,还必须注视用户方人员流动、机构变化造成的影响。

    对于产品的开发,定位则相对复杂些。由于产品的使用者是不确定的,是预测的。因而产品的定位显得特别重要。国内的产品,是不存在通用产品的。通用,只相对于某些大行业或某个行业而言。有些产品,号称是通用产品,既不能使通用领域的用户满意,更不能使专用领域的用户满意,是一个彻底失败的产品。相反,一些产品,一开始就定位于某个行业,某个细分的行业,反而做的很好,用户量比所谓的通用的产品的用户量还要多。

0
相关文章