APP下载

论软件项目的管理

2015-04-18关馨北京富士通系统工程有限公司

科学中国人 2015年20期
关键词:项目管理

关馨北京富士通系统工程有限公司

论软件项目的管理

关馨
北京富士通系统工程有限公司

摘要:随着我国软件业的蓬勃发展,软件开发项目不再是软件开发人员的个人行为而是团队行为。如何在要求的时间内、合理的投资下保质保量地交付软件产品是一个巨大的挑战。现今软件开发项目超期、超预算、最终的软件产品的质量不能使最终用户满意等问题,都是困扰软件业的重大问题。因此,软件开发的项目管理日益受到重视。本文以本人担任项目经理而负责的“高品质可视化”软件系统开发过程为例,描述了如何应用项目管理,控制软件开发的全过程,从而保证了项目开发的胜利完成。由于本人所在单位是通过ISO9001和CMMI产品质量认证企业,在软件开发中严格遵循质量认证体系标准,确保产品开发的质量,并对于相关的一些质量记录进行收集和整理,在项目结束后进行系统的分析,从而总结本项目的得失,为以后新的项目能够顺利的保质保量的完成,提供一些有效的帮助和借鉴。

关键词:项目管理;开发过程;高品质可视化

前言

软件项目开发是一个复杂的脑力劳动过程。大型软件开发周期长,参与人员多,项目管理工作的好坏对于项目的开发成败至关重要。“高品质可视化”软件系统是日本富士通公司委托本人所在单位承担的一个管理软件。该项目在开发过程中参与人员有8人,项目负责人1人,程序人员7人,开发工作有较大技术难度和组织难度。在本项目的软件开发过程中,运用软件项目管理技术,有力地保证了“高品质可视化”软件系统的成功开发,并取得了委托方的好评。

一、软件项目管理概述

1、软件项目

“项目”,在两千多年之前就已经存在。著名的埃及金字塔、我国的万里长城都是国际上众人称颂的典型项目。什么是项目?对项目比较具体一些的解释是“用有限的资源、有限的时间为特定客户完成特定目标的阶段性工作”。这里的资源指完成项目所需要的人、财、物;时间指项目有明确的开始和结束时间;客户指提供资金、确定需求并拥有项目成果的组织或个人;目标则是满足要求的产品和服务,并且有时它们是不可见的。

对软件企业而言,可以分为两类:一类是做软件产品的,一类是做专业服务的,企业软件和专业服务往往必须相结合。通过软件工程,将客户需求转化为软件产品的项目称为软件系统的开发项目。软件企业不仅向客户提供产品,更重要是根据其要求提供不同的解决方案。即使有现成的解决方案,也需要根据客户的要求进行一定的客户化工作,尽量满足和完善客户的要求,甚至需要考虑客户没有考虑到的可实现的解决方案。

2、软件项目管理

如果说在软件业初期,软件是依靠一个或几个人利用业余时间边想边写而编出来的,那么在软件业已经发展成为一个具有上百亿元产业规模的今天,软件业已经越来越像很多其他的传统制造业,有项目部门、生产部门、质量部门、市场部门等等,一个软件从构想到真正出现在市场上,需要大量的从事不同工作的人共同努力。软件开发不再是开发人员的个人行为而是团队行为,如何将这些人有效地组织在一起,将所有的资源结合在一起,按照预定的时间,保证质量地将产品交付客户是软件企业面临的一个重大的问题。

解决这一问题的关键正是软件项目的管理。软件项目管理是确保软件项目按时、按预算、保质量完成的关键活动,它主要包括项目计划的制订和对项目按计划执行情况的跟踪与动态调整。计划的合理性是保证项目按计划执行的重要因素。软件项目管理可以根据项目的实际需求、允许的工期等情况,合理地安排项目活动、资源配备和项目进度,并准确地预见项目进行过程中可能遇到的风险,充分准备风险防范措施,制订完备的项目计划,才能确保项目按计划顺利进行。因此在项目进行过程中,项目负责人要不断保持对项目实际进展状况的动态跟踪,当出现与计划不一致的情况时,要根据实际情况合理地调整计划安排,以确保最终的成功。当项目计划出现变更时,要分析其诱发因素,并纪录相关数据,利用这些数据来改进开发过程。

二、浅谈软件项目管理的几点体会

随着我国软件业的蓬勃发展,软件开发不再是软件开发人员的个人行为而是团队行为,如何在要求的时间内、合理的投资下保质保量地交付软件产品是一个巨大的挑战。现今软件开发项目超期、超预算、最终的软件产品的质量不能使最终用户满意等问题,都是困扰软件业的重大问题。因此,软件开发的项目管理日益受到重视。软件项目管理的问题更多的可能是实践问题而非理论问题,以下是本人结合在“高品质可视化”软件系统中担当项目负责人的项目管理经验,谈谈自己在软件项目管理中的几点体会和思考。

1、全面地掌握软件项目的开发流程

软件开发项目可划分为需求分析、产品设计、编程、测试、产品交付等几个阶段。在项目工作开始之前就提前明确每个过程中的作业内容和要求,是至关重要的。如下的图表1所示,介绍了“高品质可视化”软件系统开发时的工作流程和在各工程阶段的工作内容。

在项目工作的初始,需求分析也是最关键的一步,它直接关系到项目后续阶段实施的成功与否。一个全面的详细的分析,不会放过任何一个细小的的环节,好的分析意味着项目成功的一半。

“高品质可视化”软件系统的项目开发非常重视需求分析活动,特意派专人前往日本和客户进行接触,以便能更好的了解客户的需求,及时的提出解决方案,以便于客户的抉择。因为客户需求是客观存在的,关键是要区分哪些是操作性的、哪些是流程性的。对流程性的要求,要认真地进行分析,以区分哪些是受网络技术限制,不能实现的;哪些是受专业技术限制的,需要调查的;哪些是次要的可以以后追加的,但前提必须是抱着对客户负责的态度。

例如:客户对系统提出可对同一画面进行不同的内容的处理的要求,这在网络操作中是不允许的,也是不可能实现的。在和客户讲明原因,并提出了变通的解决方案后,客户也欣然接受了。因为注重前期的分析活动,明确了客户的实际业务需求,进而为“高品质可视化”软件系统的后续开发奠定了良好的基础。产品交付后获得了客户的好评。

经过需求分析后,生成软件项目开发的《需求分析规格说明》。它主要包括以下内容:制定开发标准;定义软件的总体功能;规定软件的支持平台和运行环境;详细描述软件的性能、功能和数据的各种需求等。再由公司的开发部负责人、项目负责人、相关设计人员以及客户方的相关人员共同组成评审小组,对《需求分析规格说明》实施评审,通过评审后软件项目开发才能进入软件设计阶段。

2、制定完整的软件项目计划和开发进度

项目计划是对项目未来进行的估计和预测,是实施项目管理的控制基础。制定计划应防止以下两种倾向:一种是项目计划的制定过于粗略,随意性大,可操作性差,在实施中无法遵循。另一种则是过度计划,必须将项目中全部细节都考虑清楚后才动手,这也是不切实际的,在执行中会发现难以与实际一致,而不得不频繁地进行调整。这两种倾向都导致了制定的计划不切实。

“高品质可视化”软件系统的项目中,根据系统设计的功能要求、开发人员体制的构成、工程阶段的划分、项目开发周期、成本经费预算等,制定了详细的项目开发计划。在项目计划中清晰地描述了每个阶段要完成的工作和成果验收方法,甚至具体到有多少个画面。

根据项目的开发周期和阶段划分,制定《项目整体进度表》,明确各阶段的作业内容、担当者、开始日期和完成日期,有预计和实际的记录对比栏,实际比预计延迟时,需记录原因及对策。具体到每一个成员,制定了《项目详细进度表》,明确每个担当者的作业内容和进度。《项目详细进度表》一般控制到“人周”,有的细到“人天”。如图表2所示,为”高品质可视化”软件系统开发工作的《项目整体进度表》概要,其中的具体担当者等信息从略。

通过进度表管理,不仅能够掌握项目整体的进展、完成情况,而且可及时了解每个开发人员的工作内容和开发进度。根据项目实际进展情况修正开发计划;根据每个人的开发特点和工作内容,适时调配人员和工作。

另外,在项目开始时,对开发人员规定了这样的要求:任何难题的解决不要超过1天,1天不能自行解决的问题及时报告给项目组长协助解决,并填写Q/A票;2天仍不能解决的问题,采用其他方法变通处理,并填写Q/A票。这一规定有效的避免的由于技术问题卡壳而导致进度的延误,使开发工作在控制在正常的范围内,如有相似问题出现就可尽快解决。同时要求开发人员每天填写工作日志,记录工作内容和进展情况。这样通过工作日志随时了解项目组成员每天的工作情况,使开发过程更加透明。

尽管有项目计划,但是在项目执行过程中难免与实际情况有差异,一定会产生很多修改、变更。一定要注意对项目变更的控制,尽量不要改来改去,造成项目无法正常结束;另外,在项目执行过程中还会遇到各种始料未及的意外风险,使得项目不能按计划运行。综合上述,项目管理不应照搬固定流程或模式,对具体问题应做具体分析,灵活应对。

3、建立有效的成本预算和控制体制

软件开发项目中的人力成本占总成本的相当比例,项目实际的人力成本决定了项目的赢利水平。在实际工作中可能会发现:作项目预算时项目的利润很高,但最后核算部门的总体利润时却赔本。这是因为人力成本很难估算准确,为了保证项目进度要求,在项目执行中会不断追加人力,使得人力资源大大超出了预算。因此软件企业必须建立人力成本结构及运用控制体制,通过核算项目的人力成本来控制项目开发成本。

“高品质可视化”软件系统开发项目建立一套有效的成本预算和控制体制。具体做法是:

(1)预算成本

根据单位的标准参数,计算项目整体的预算工数、预算人月,进而得到预算成本。

①每个画面、报表、批处理的标准工时(PG~PT)

画面:根据画面中控件的数量和复杂程度选择24—32H

报表:根据报表中控件的数量和格式复杂程度选择24—32H

批处理:批处理的STEP数选择12—16H

②各个工程阶段的工时比例和工时的预算

依据各个工程阶段的工时比例,以PG-PT工程段的标准工时为基础,来进行各个工程阶段的工时的预算。如下图表3所示。

图表3《项目工程阶段和工时比例》

③规模系数

标准项目数:20个/画面或报表

规模系数=实际项目数÷标准项目数

④难易度

根据画面内部关系和处理方法的难易度系数选择0.6—1.6;根据批处理的复杂程度系数选择0.8—1.6;根据报表抽取数据的复杂程度系数选择0.6—1.2。

图表4《难易度系数》

⑤项目管理工时

系统整体富裕量和项目管理所用工时:占整体工时的10%~15%

⑥各工程阶段的预算工时

每个画面/报表/批处理的预算工时=标准工时×工时比例×规模系数×难易度

⑦系统整体的预算工时

预算工时=预算工时之和÷(110%~115%)

⑧预算人月

预算人月=系统整体预算工时÷标准人月工时(170H/人月)

⑨预算成本(人力成本)

预算成本=预算人月×标准人月单价

如下图表5所示,“高品质可视化”软件系统开发项目的预算工数,按PG-PT标准工时(画面26H,报表24H,批处理12H)计算得到。

图表5《工数预算表(从SA到ST)》

项目的规模(预算人月数)=6840×1.1÷170=44.2(人月)

(2)成本管理控制和生产性分析

在项目开发期间,按月对每个开发人员的实际工数进行统计,通过实际与预算的比较分析,可以获得当前的项目整体生产性和每个开发人员的生产性。通过对已经完成工程的生产性分析,可以了解每个开发人员的工作效率和项目整体进度,便于对本工程段或下一个工程段的计划和人员配制进行制作和调整。

所谓的生产性是通过从作业的预算时间和实际时间进行比较得出的,实际工作时间越于预算时间,生产性越大,表明此人的工作效率较高。但如果生产性过高或过低,则有可能是对项目的预算出现问题,这时就要调整计划或进行人员调整。在项目开发中,要动态监控人力投入情况,及时记录实际成本支出,通过实际与预算的比较,对项目生产性的进行分析,一旦发现超出预算,即时进行补救处理。

例如,在“高品质可视化”软件系统PG工程段时,由于一些特殊的原因,客户又提出了新的要求,为了保证工期的顺利完成,就及时进行了人员的调整和部分计划的调整,并在以后后续工程也进行了相应的调整。

4、建立有效的沟通机制

在项目管理中,规范、准确、高效的沟通是项目顺利进行的必要前提。在项目进行过程中,沟通一直是一个比较大的困难。

“高品质可视化”软件系统项目的具体做法是:

对于项目组内部:每周例行开一次项目进度报告会。参会人员包括所有项目开发小组成员和项目负责人。在会上,项目管理人员向项目成员讲解项目的整体计划,布置每个成员现阶段在项目中所承担的具体任务,让项目成员准确地了解执行项目的具体方法。对于项目计划的必要变更,及时地让项目小组成员了解;同时,听取每个成员的工作进度,解决成员在项目开发中遇到的实际问题,对于专业技术问题,小组成员可以自由交流,展开讨论,相互帮助,共同克服;对于不太好决断的问题,则由项目负责人和有经验的项目组成员负责进行调查,并将调查结果及时通告项目组其他成员。这样,项目管理人员能够清晰、准确地掌握项目的进展情况以及每个成员的工作进度,及时发现问题,为项目的后续工作计划和进度的调整提供决策依据。

对于客户方面:则是明确相互之间的联系人,每周定期向客户通报项目进展状况,使得客户对项目进展有所了解。对于在整个项目进行过程中,出现的一些业务或流程上的问题和对应的解决方案,也需要及时通报给客户,必须在得到客户的认可后才能进行对应的实施。同时要求对客户提出的新的需求或变更,力争在一个工作日内提出解决方案,如在一个工作日内无法回答,必须及时通知客户,并明确回答期限。这样才能够保证整个项目在开发过程中不会出现偏差,保证完全符合客户的要求,确保项目的顺利完成。

5、建立有效的项目质量管理机制

软件开发涉及到方方面面的人员,历经多个开发阶段,各个环节间都可能带来产品质量问题;同时,由于软件产品是逻辑体,在项目完成前不具备实体的可见性,因而产品质量也难以把握,因此如何有效地管理软件产品的质量一直是软件企业面临的问题。

在“高品质可视化”软件系统的开发过程中,通过对不同工程段的核查以及里程碑处的评审和制定较为详细测试计划以及相关的程序修改方案,很好地解决了这一问题。在各工程段完了进入下一工程段时都要进行核查,不符合要求时,要进行返工,以保证进入下一工程段的产品是合格的。而在里程碑处(需求分析、设计、编码、测试)则必须通过评审才能进入下一工程段,以保证不把问题遗留到下一工程段。在实现设计的关键阶段编码阶段,则不断的进行品质测试,采用互查的方式进行功能检查和代码核查,以便降低编码中的错误率。随后,把系统所有程序段连在一起,严格按照测试计划和相关测试设计书进行结合和系统测试以确认这些程序段可以共同工作。最后,派专人与客户共同进行测试并进行必要的讲解和说明,对客户提出意见及时进行对应和解决,对产品质量进行评估。由于建立了严格有效的项目质量管理机制,因此产品受到了客户的好评,现在已经建立了良好的客户关系。

另外,由于本人所在单位是通过ISO9001和CMMI产品质量认证企业,在软件开发中严格遵循质量认证体系标准,确保产品开发的质量。并对于相关的一些质量记录进行收集和整理,在项目结束后进行系统的分析,从而总结本项目的得失,为以后新的项目能够顺利的保质保量的完成,可以提供一些有效的帮助和借鉴。

结论

我国软件业与世界先进国家相比,尚存在不小的差距,其主要原因是软件工程化技术和科学的管理方法没有得到广泛的应用。今天,软件开发项目不再是软件开发人员的个人行为而是团队行为。对于以“项目”为基本运作单位的软件企业来说,特别是在新的领域或运用新的技术时,软件开发项目超期、超预算、最终的软件产品的质量不能使客户满意等问题,一直是困扰企业发展的重大问题。如何在要求的时间内、合理的投资下保质保量地交付软件产品,实现“客户满意、公司获利”这一企业目标,其中的关键是软件项目管理。软件企业只有在深入学习和大量实践的基础上,形成了独具特色和竞争力的项目管理方法,才能不断地在激烈的市场竞争中胜出。

参考文献:

[1]项目管理知识体系指南(第4版)(美)项目管理协会著王勇、张斌译

作者简介:关馨,北京富士通系统工程有限公司,高级工程师。

猜你喜欢

项目管理
装配式EPC总承包项目管理
项目管理在建筑工程管理中发挥重要作用
项目管理在土木工程建筑施工中的应用探究
项目管理在土木工程建设中的应用分析
项目管理在土木工程建筑施工中的应用分析
建筑工程项目管理中BIM技术的应用
基于大数据分析的集合式EPC总承包项目管理软件技术的应用
项目管理在科研项目管理中的应用
勘察设计项目管理研究
建筑工程施工项目管理创新路径分析