【导读】软件项目管理的实质就是软件项目计划的编制和软件项目计划的跟踪控制,这里计划是项目成功实施的指南和跟踪控制的依据,而跟踪控制又保证项目计划的成功执行。本文以实例具体分析在软件开发过程中如何进行这两项工作。
在软件项目中有两条非常重要的线索,一条是软件项目开发过程,另外一条是软件项目管理过程。通常,人们容易注意软件项目开发过程,而忽略软件项目管理过程的线索。事实上,后者很重要,有时其重要性甚至超过项目开发过程。项目管理可以让一个项目获得高额的盈利也可以让一个项目损失惨重,而编码的影响力则相对小一些。现实中由于出色的项目管理,将已经亏损很严重的项目又重新扭亏为盈的例子并不少见。
项目管理在生活中的例子很多。例如进行一次商品采购,你会在一张纸上记录所有需要购买的东西(即采购清单),这个采购清单帮助你不要遗漏采购项,你可以采用“完成一个采购项,在采购清单上打一个勾”的方法协助你完成采购。与此类似,软件项目管理也是如何管理好软件项目的内容、花费的时间(进度)以及花费的代价(规模成本)。为此需要制定一个好的项目计划,然后控制好这个计划。编制软件项目计划、跟踪控制软件项目计划这就是软件项目管理的实质。其中,计划是项目成功实施的指南和跟踪控制的依据,而跟踪控制是项目计划成功执行的保证。
确定软件项目开发的策略
项目经理的首要任务是编制项目计划。项目计划有三大核心目标: 确定项目范围、项目预算、项目进度,即明确项目做什么、花多少钱、需要多长时间。为了制定一个合理有效的计划,项目经理需要从项目需求开始确定项目范围,然后将项目的需求进行分解,以便于估算、安排资源和合理的进度等。这样就形成了三个核心计划: 范围计划、成本计划和进度计划。此外,作为完整的项目计划,质量计划、风险计划、沟通计划等同样也必不可少。没有质量管理的项目是失败的项目,没有风险管理的项目会时时处于风险之中,没有沟通的项目是很难完成的。项目规划从合同阶段就开始了,其实任何一个合同的主要内容也是确定项目的范围、时间和成本。
软件项目最终的结果是根据用户的需求提交一个用户满意的产品,这是一个从无到有的过程。因此计划首先应该确定项目开发的策略,即项目的生存期模型。瀑布、V、原型、螺旋、渐进式阶段提交等模型是几种常见的生存期模型,渐进式阶段提交模型体现了软件项目渐进性的特点,同时,分阶段提交项目结果,也有利于软件项目开发。RUP(Rational的统一过程)提及的软件项目生存期模型就是一种渐进式阶段提交模型。图1的模型是笔者曾经参与的一个银行业务系统的生存期模型,它是渐进阶段提交的模型。
图1 某银行业务系统渐进式阶段提交模型
如果项目周期不是很长,可以不分阶段提交结果,而只是分阶段开发,这样渐进式阶段提交模型就演化为增量模型。例如笔者曾完成的一个《校务通管理平台信息系统》项目,它是对学校教务和教学活动进行综合管理的平台系统。尽管分阶段实施项目是比较理想的项目管理模型,但是由于这个项目不大,没有必要分阶段提交一个执行系统,所以采用增量的模型。
生存期模型中可以定义软件开发中采用的过程、程序,如果过程定义得很明确,或者过程定义的操作性很强,那么作为工厂化的软件开发就会很顺利,项目管理的过程也会很顺利,所以在软件项目中的这两条线索也是相辅相成的。
制定项目核心计划
项目的核心计划是范围、时间、成本的确定,这三方面并不是截然分开的,而在项目计划的制定过程中相互交织。
确定项目范围要从需求入手,将一个项目分解为更多的工作细目或者子项目,使项目变得更小、更易管理、更易操作。目的是为了提高估算(成本、时间和资源)的准确性,使工作变得更易操作,责任分工更加明确。任务分解的结果是WBS (Work Breakdown Structure)。只有在WBS中的工作才属于该项目的工作范围。
任务分解之后,可以根据分解的结果,估算任务的规模、成本,同时可以根据分解的结果进一步分解详细的项目活动,以便安排任务之间的关联关系,估算每个任务的工期,然后进一步估算项目总的工期。
项目的规模和进度估算有一定的关系。进度估算是从时间的角度对项目进行规划,而成本估算则是从费用的角度对项目进行规划。类比估算法、参数模型估算法、自下而上估算法等都是规模成本估算的方法,而经验导出模型、工程评价技术(PERT,Program Evaluation and Review Technique)、关键路径法(CPM,Critical Path Method)等都是进度估算的方法。在项目的进行过程中,可能要不断重复进行估算,以减少估算的误差。在项目的不同阶段可以采用不同的估算方法,开始可能很粗糙,随着项目的进展会逐步精确。
在安排项目进度的时候,可以根据WBS的分解情况,继续分解相应的活动(任务),分析确定各个活动之间的顺序关系,画出任务的网络图(例如PDM网络图或者ADM网络图)。图中的每一项任务必须有一个前驱和后继,除了项目中的 项和最后一项任务。确定关键路径在哪里、哪些任务还有变化,然后结合资源、成本等情况,再不断进行资源调整优化以及工期、活动关系的调整等。计划调整的过程虽然很费时费力,但也是一个关键的过程,要经过多次调整、修改、评审讨论等,最后才能确定一个计划,将此计划存为基准计划。这个基准计划可以存入项目管理系统中,例如MS Project。
通过这个基准计划可以确定项目的范围即项目所有的任务,还可以确定项目的时间进度表,这个计划也确定了各个任务的资源(人力资源、物力资源等),当然项目的成本就可以确定下来。
仍以《校务通管理平台信息系统》为例,根据项目WBS的分解情况,继续分解相应的活动(任务),然后确定各个活动之间的关系,系统的功能采用增量方式实现,实施阶段分6个增量,对各个任务(活动)分配相应的资源,经过多次的活动调整以缩短工期,多次的资源调配以解决资源冲突和减少成本,最终形成了基准计划,如图2所示。
图2 《校务通管理平台信息系统》基准计划
制定辅助计划
1. 质量保证计划
质量保证的主要活动包括过程评审和产品审计。过程评审和产品审计的目的是为了确保在项目进展过程的各个阶段和各个方面采取各项措施来保证和提高产品质量。
产品审计 产品审计由质量保证人员来进行,检查项目产品是否达到质量目标。质量保证人员对项目生存期中创建的工作产品可以有选择性地进行审计,以验证是否符合适当的标准,是否进行了质量检查。
过程评审 过程评审是检查项目是否严格按照组织定义的软件过程进行开发,过程评审的具体依据可以参照企业的过程规范,以保证项目中的所有过程活动都在实施范围内。在每次评审之后,要对评审结果做出明确地决策并形成评审记录。评审可采取文件传阅、评审会等形式。
这里质量保证人员负责对项目过程进行监督,发现的问题和解决情况在每周的例会上通报,对没有解决的问题进行讨论,对不能解决的问题提交高级管理者处理。
要注意的事,项目的质量活动包括质量保证和质量控制,质量保证是一种管理职能、质量控制是一种检查职能,质量保证是确定项目完成的是否正确,质量控制是确定项目是否正确地在进行。有时将质量控制归类到开发活动中,质量控制活动更多由开发人员完成。
2. 配置管理计划
软件配置管理贯穿于软件生存期的全过程,目的是用于建立和维护软件产品的完整性和可追朔性。软件配置管理是一组追踪和控制活动,软件配置管理可以管理好项目进行的中间产品以及它们之间的关系。配置管理计划中包括很多的内容,例如配置管理工具、配置项计划、基线计划、配置管理规程等。
文章来源于领测软件测试网 https://www.ltesting.net/