摘 要:软件工程教材中,谈到了项目监控的重要性。因其抽象性,学生较难理解。项目监控要以软件开发进度表为依据来进行操作。本文介绍了项目监控的实际操作方法,力求让学生理解掌握项目监控的方法,并体会项目监控的重要意义。
关键词:软件工程;项目监控
1 前言
“软件工程”是计算机及相关专业的一门重要的专业课程。软件工程课程一般在大三开设,目标是让学生系统掌握软件开发的规范、方法和过程,同时培养学生团队合作,共同解决问题的能力,为学生毕业后从事软件项目开发、管理等相关工作打下良好基础。软件工程课程知识交叉性强,综合运用计算机科学、统计学、管理学等学科的方法来开发管理软件项目,主要涉及技术与方法、工具与环境、标准与规范、过程与管理四个方面的知识。1993年IEEE给出软件工程全面的定义:“软件工程是:①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究把工程应用于软件中操作的途径。”软件工程由于课时限制,以及学生参与软件项目开发经验的欠缺,这门课程通常让学生觉得很抽象。尤其在如何实现有效管理项目的开发过程,如何行之有效的监控项目实施方面缺乏直观的案例,难以让学生充分理解跟踪项目开发过程的方法和意义。
软件开发项目管理是一个计划,组织,监督,控制和引导项目的过程,除此之外,它还应该考虑人力资源和相关的软件和硬件平台。软件开发项目管理的主要目标是:高效的项目计划,包括进度计划和费用计划;使项目可能遇到的风险最小化;对项目过程和产品进行量化管理,以便为将来的项目规划和执行提供依据;提供有效的项目跟踪和过程报告方法,充分保证项目生命周期的可见性;确保项目产品在要求的范围内按时提交。要圆满完成软件开发任务,就要制定出切实可行、详细周密的计划,并对计划的实施进行监控。合理完善的软件开发进度表,是实现项目监控的必要条件。
2 制定软件开发进度表
软件项目管理先于任何技术活动之前开始,并且贯穿于软件的整个生命周期之中。软件项目管理过程从一组项目计划活动开始,而制定计划的基础是工作量估算和完成期限估算。这些工作是基于用户对完成期限的要求、项目负责人和系统分析员对整个软件项目的分析理解、对项目组每一个成员工作能力的了解、以及他们管理相关软件项目的经验等条件之上。在这些基础上,他们合理地对工作任务进行分解,把整个工程项目分成若干子项目,每一个子项目又分为若干子任务。软件项目的按时保质的完成基于每一个子项目、每一个子任务按时保质完成的基础之上。
项目负责人制定进度表时,通常有8个步骤:
(1)分割项目:综合考虑每个子任务的难度等各方面的因素,估计出完成每个子任务需要产生的代码行或需实现的功能点;
(2)确定依赖:确定分割后得到的各个活动、任务之间的依赖关系。某些任务必须顺序进行,另一些则可以并行进行;某些活动或任务只有在另一项活动或任务所产生的工作产品可以使用后才能开始,另一些则可以独立进行;
(3)分配时间:确定完成每项任务所需的工作量,如人天工作量,并指定每项任务的开始日期和完成日期;
(4)分配有效工作量:每个项目有确定的工作人员数。进行时间分配时,项目管理者必须保证在任一时间,所分配的人员数目不会超过参与该项目的工作人员数。例如,某项目有2个工作人员,即每天可以有2个人天工作量可以使用,若在某一天必须完成3个并行任务,每个任务要求0.5人天,那么就多出了0.5人天的工作量;
(5)明确责任:每一项任务均应指定具体负责人员;
(6)定义结果:对所安排的每项任务均应有明确的结果要求。软件项目开发过程中每项任务的结果通常是一个工作产品,例如模块的设计,或是一个工作产品的一部分。项目提交的产品通常是这些工作产品的组合。
(7)确定里程碑:每个任务或一组任务应当与项目里程碑相关联。里程碑的到达即标志着与该里程碑有关联的一个或多个工作产品通过了评审和批准。
(8)利用工具完成项目开发安排。甘特图能形象地描绘任务分解情况,以及每个子任务的开始时间和结束时间,是进度计划和进度管理的有力工具。当把一个工程项目分解成许多子任务,并且它们彼此间的依赖关系又比较复杂时,工程网络可以更好的描述整个项目计划。
一个足够详细的进度表,是监督项目进度并控制整个项目的基础。监督项目的完成过程,可以引导学生采用他们熟知的工具Excel,形成项目组每个责任者每天完成工作的报表,以及整个项目每天完成情况的报表,以便管理者及时发现项目进展中存在的问题,从而及时对项目的开发计划进行调整和修订。
3 监控软件项目开发过程的方法
3.1 日报表的制定
项目进度日报主要反映的是项目每日的进度情况。在项目日报中,主要关注每个工程师每天完成工作量和计划工作量之间是否有偏差。首先可在Excel的同一个表单中建立2张表,如表1、表2所示。如果分给1个工程师的子任务需要5天完成,那么理想状况下每天的工作量应该是1人日,故表1中计划量列为5个1,“完成比例”列每天填写日工作量的完成比例,“实际值”列是由每一行所对应的计划量×完成比例得到的,表1右下角的数值是“实际值”这一列数据的和,故此值每日更新。表2为项目完成的季度表,第1列为日期,第2列是每天从表1右下角获得的值,即每天子任务的完成进度。第3列是计划子任务每天完成的进度。第4列和第5列数字是灰色的,用于生成分析图表。第4列同表1中实际值列,代表工程师每天的实际工作量。第5列全为1,代表工程师每天应完成1人日的工作量。
表1 日任务完成情况 | 表2 项目进度表 | |||||||
计划量 | 完成比例 | 实际值 | 日期 | 实际值 | 计划值 | |||
1 | 90% | 0.9 | 0.9 | 1 | 0.9 | 1 | ||
1 | 80% | 0.8 | 1.7 | 2 | 0.8 | 1 | ||
1 | 140% | 1.4 | 3.1 | 3 | 1.4 | 1 | ||
1 | 90% | 0.9 | 4 | 4 | 0.9 | 1 | ||
1 | 100% | 1 | 5 | 5 | 1 | 1 | ||
| | 0 | | | 1 | |||
| | 0 | | | 1 | |||
| | 0 | | | 1 | |||
| | 0 | | |