科学技术对经济发展、社会进步、人类生活质量的提高、国家综合国力的增强起着巨大的作用。
而随着信息技术日新月异的发展,软件行业作为极具挑战性和创造性的一项行业,其软件项目的研发更是极具挑战性。随着各种软件技术的不断创新、相关软件产品的开发规模越来越大,面对如此重要而且投入与影响逐年增加的软件研发活动,要求对其进行科学有效的管理变得尤为重要。因此,各软件企业都努力利用项目管理方法去管理软件研发项目,以便对其整个研发过程实施科学有效的管理。
项目管理(Project Management):是运用各种相关技术、知识、技能、方法及工具,在计划、组织、领导、控制等方面所开展的各种活动,其目的是为了达到或超过项目需求方对项目所设定的要求或期望。从项目管理的概念可以看出,软件研发项目管理是根据管理科学相关理论,结合软件产品研发的实际,通过对资源、成本、质量、进度、风险、绩效等进行系统分析、管理及控制,使软件研发项目按照质优原则朝着预设目标进展。项目管理的最终目标是高质量地按时在项目预算成本内完成项目全部任务指标。
同时也要注意到,与其它行业的项目管理相比,软件业项目管理有其自身的特殊性。首先,软件不同于硬件,它是计算机系统中的逻辑实体而非物理实体,具有抽象性,因此是纯知识性产品,在资金投入上可计量性不强,很难参照常规方法进行估量其研发进度和质量,使得研发效率难以准确预测和保证。其次,软件产品研发复杂性高也导致了在研发过程中难以预见和控制各种潜在风险性。另外,软件研发还需考虑社会因素的影响,所有这些均可能致使项目研发前功尽弃。
软件项目管理的对象是软件工程项目,它所涉及的范围覆盖了软件项目研发的整个过程: 需求分析、软件设计、编程实现、软件测试以及后期运行维护等。因此与之相对应,软件项目管理的内容主要包括软件项目需求管理、软件项目估算与进度管理、软件项目质量管理、软件项目资源管理、绩效考核管理等。本文结合笔者多年从事科技管理与实际软件研发项目管理工作中的经验,就软件研发项目管理中应注意的几个问题进行研究分析。
软件需求分析管理
对任何项目而言,需求是灵魂。需求分析作为软件研发过程的基础,其结果优劣将直接影响整个软件的研发过程,成功的软件产品必然是以成功的需求分析为前提。
正如企业在研发新产品前需掌握市场需求,软件研发亦如此,据相关资料显示,因需求分析因素所造成的软件项目失败或缺陷约占60%,而系统实施阶段的其它错误导致软件项目失败的比率约为40%,由此可看出需求分析的重要性。由于需求分析不明确导致项目失败的根源在于研发人员没有准确把握客户的真正需求。一方面可能是用户最初没有清晰明确的需求,而是在项目研发过程中,不断地变更或提出新需求,这些变更不仅加大了研发成本,同时产生项目无法按时完成等问题;另一方面,也可能是研发人员对用户需求调研不彻底,没有真正熟悉客户的业务流程,未能从专业的角度研发挖掘客户的潜在大量实践均已证明,项目管理在软件产品的全生命周期中占据极其重要的地位,软件项目研发失败更多的是管理层面问题,并非技术层面问题。
需求,导致项目的进展及质量均难以控制,严重的后果是使整个项目研发失败。因此,必须加强软件项目需求管理来解决不断变化的需求问题。需求管理的目的是在客户与研发方之间建立双方对需求的协商机制,并严格控制需求的变更。在需求正确建立过程中,要做到准确识别需求,必须利用相关专业领域知识分析、挖掘,才能确认需求。
因此要求需求分析人员不仅具备很强的沟通能力,即人际交往能力、语言及文字交流能力,更重要的是要具备相关专业领域知识,正如要做好项目管理软件,要求需求分析人员要掌握项目管理的专业知识,专业领域知识可使需求分析人员更好的把握客户的需求,同时要求分析人员具有计算机知识,这是因为需求分析人员要利用掌握的计算机知识把客户需求以设计研发人员能够理解的技术语言予以表述,将客户需求传递给设计研发人员。需求是客户到设计研发人员两者之间的桥梁,因此需求管理中最基本的任务是明确需求,使设计研发人员和客户双方达成共识,建立相关需求联系机制,确保用户所有需求均被正确地应用,并且在需求发生变更时,能够完全地控制其影响范围,始终保持产品与需求的一致性。
软件项目估算与进度管理
软件项目计划是开展软件研发项目的前提,是监督、评估、审核计划执行情况的依据。由于软件研发项目有着不确定性的特点,因此制定项目计划的目的是能使项目管理人员对资源、成本、质量和进度等做出合理的估算,是为了让项目更好地在可控范围之内。估算具有较高的风险性,它既需要项目管理人员的相关经验、又要求有用的历史资料准确可信客观并足够的定性或定量数据等来支撑。项目估算的精准程度在很大程度上取决于项目管理人员对项目复杂程度及规模的把握、项目的结构化程度的认识,支撑材料及数据的可靠性等多方面的影响。如果项目计划既缺乏相关数据材料的支持,又不进行项目估算,只依据管理人员自身的经验进行管理,项目成功的可能性将大为减小。因此一个成功的软件项目必须要有一个合理可行的项目计划作为基础。
项目的进度管理是整个项目管理过程中的重要环节,贯穿项目研发全过程。项目的进度管理是决定项目能否顺利开展的关键内容。科学完善的项目进度管理不仅直接的影响项目的工期,还能够对项目成本控制、项目质量管理、项目资源管理等研发过程涉及的各个环节起到积极的助推作用。在实际软件项目研发的过程中,大多数的项目都会出现不同程度的与进度相关的问题,比如延期滞后、进度失控等,最终导致项目失败。因此项目管理人员应根据项目的实际进展情况和研发资源的配置,采用合理的进度管理模式,在规定的时间内完成项目任务书规定的指标,让客户满意。
软件项目的进度管理主要是考虑软件研发资源配置及具体工期进行相应的调度、安排,依据软件项目估算的情况,制订合理并切实可行的进度计划,并在执行过程中定期检查或审计项目计划的实际进展情况,分析产生进度偏差的可能原因,由此不断调整或修改进度计划直至软件最终交付使用。可以在软件研发的各个阶段设置时间节点,以便实现对项目进度的监督与有效控制。进度安排可以考虑采用甘特图或网络图描述。
软件质量管理
国际标准组织ISO9000对质量的定义是 “一组固有特性满足要求的程度,即可以满足明示的、通常隐含的或必须履行的需求或期望”。美国质量管理专家朱兰博士认为产品质量就是产品的适用性,即产品在使用时能成功地满足用户需要的程度。因此软件项目的质量就是“软件项目能够满足已确定或隐含的全部需求或期望的特征集合”,是能够满足软件项目在项目初始阶段就明确的功能、性能等特征的总和。主要表现在以下几方面:是否能达到客户的所有明示的需求或期望;运用合理的质量标准体系,来控制软件的研发;能否满足客户隐含的需求或期望。
软件项目质量管理的主要目的就是确保软件开发是从用户需求或期望出发,保证最终交付的软件能满足客户的需求或期望。质量管理关注的重点应在前期的预防,而不是后期的检查与改正,这需要项目管理人员在项目执行的全过程中始终坚持质量管理的理念,不断改进提高,使最终交付的软件产品能满足客户明确、隐含的需求或期望的全部特性。
软件质量控制的主要目的则是为了使软件研发效率得到最大限度的提高,增强软件或公司的市场竞争力,从而为客户提供满足质量需求的稳定可靠的软件产品。质量控制是一个常态过程,通过度量实际的质量性能并与执行标准相比较,当出现偏差时采取行动予以纠正。因此项目管理人员可以采用合理的软件研发流程、利用多种测试方法充分测试、重视文档管理等手段来进行质量控制。质量控制是技术和方法的集合,包括进行软件建模、度量、评估、审核及其它相关活动。
软件测试管理
根据软件研发的相关统计数据,软件测试的成本大约占软件研发总成本的 30%-50 %左右,由此可见软件测试在软件研发中的重要程度。软件测试是软件质量控制中的重要组成,是软件完成后投入实际应用前的一个必经阶段,是对软件产品质量的检验和评估。它一方面检查软件中潜在的质量问题,同时对产品质量进行客观的评价,并以此为依据进行改进。软件测试的基本目的是要发现软件中的错误。优秀的测试是发现到测试时仍没有被发现的错误。而测试的根本目的则是保证整个软件研发过程是按照规范高标准、高质量完成的。软件测试的最终目标是为了保证软件能正常运行,同时满足设计指标,具备客户所要求或期望的各项功能。
软件项目管理是门科学,也是一门艺术。尽管项目管理没有非常高深的理论,但是在很大程度上,实施却并非易事。因此在软件研发管理过程中,应该理论联系实践,积极从实践中寻找问题并改进、提高,实施有效的管理,使软件项目研发获得成功。