【IT168 技术文章】
1 引言
长期以来,软件项目高失败率的状况一直困扰着人们,研究表明,软件项目失败的原因主要有两个:一是应用项目的复杂性;二是缺乏合格的软件项目管理人才。实践证明缺乏有效的项目管理是导致软件项目失控的直接原因。软件开发的风险之所以大,是由于软件过程能力低,其中最关键的问题在于软件开发组织不能很好地管理其软件过程,从而使一些好的开发方法和技术不能起到预期的作用。
流程管理作为现代企业管理的先进思想和有效工具,随着市场环境与组织模式的变化,在以计算机网络为基础的现代社会信息化背景下越发显示出其威力和效用。流程管理不仅是一种管理技术,更体现了现代管理的思想。流程管理的重点是:理清和管理好所有主、支流程间的关系,使他们相互协调发挥应有的作用。流程管理增加了部门的透明度,管理的对象不是“部门”和“部门员工”的概念,而是以工序流程为管理对象,注重流程中每一个过程和效率以及和上下游工序的关系,管理重点在于整体流程的完整性和顺畅性。
运用流程管理方法和技术进行软件项目管理,可以有效地改变软件过程管理混乱的局面。首先对软件项目开发过程进行有效的、规范化的定义;其次,在软件项目开发过程中,所有的活动过程均按照流程所规定的活动的逻辑关系、活动的实现方式来执行,这样可以使得所有的活动有序和可控;第三,通过明确运作流程,使项目组人员迅速融入项目和开发过程中;第四,关注每个过程的“结果”,使软件项目的所有工作产品均能得到有效的保存,保证了软件产品完整性。
2 流程的概念及在软件项目管理中的作用
流程是由活动组成的。基本活动是由个人或团体来完成的,它不需要进行其他的基本活动的转化。流程的各个活动之间有着特定的流向,它包含着明确的起始活动与终止活动,因此是一个动态的概念。从结构上来看,流程有四个基本的构成因素:活动、活动的逻辑关系、活动的实现方式和活动的承担者。流程与“一系列的活动或事件”、“结果”等概念密切相关。流程管理不仅是一种管理技术,更体现了现代管理的思想,原有的以控制、塔式组织为基础的职能行政管理已经不能完全满足于现代企业发展和市场竞争的需要,管理的发展沿着分工理论运行了上百年后,现在又重新回归到整合与系统。
软件项目生命周期的一系列的开发过程是各种各样的流程活动。软件项目的计划编制、系统分析、概要设计、详细设计、程序编码、测试与维护等活动过程都是一种流程活动。制定软件项目管理流程,重点考虑以下几点:
1)制定的流程能引导项目逐步走向成功;
2)制定的流程能适用软件开发过程;
3)制定的流程能指导项目开发活动,有利于对项目开发活动的管理;
4)制定的流程能以直观的流程图表示,能使项目组成员清楚的知道软件开发与管理的过程和相互间的关系;
5)流程中的起始活动条件、终止活动条件明确、规范,便于控制;
6)流程中的工作产品定义明确、可度量,评价标准和方法具体、可操作。
3 软件项目管理总体流程设计
在软件项目开发管理过程中,不仅要努力实现项目的范围、时间、成本和质量等目标,还必须协调整个项目过程,以满足项目参与者及其他利益相关者的需要和期望;随着软件规模和所涉及的领域不断地扩大,软件项目的管理越来越困难。纵观所有失败的软件项目,基本原因是不能管理其软件过程,在无纪律的、混乱的项目状态下,组织不可能从较好的方法和工具中获益。严谨的软件过程控制与管理不仅可以在每个阶段回顾和纠正项目的偏差,识别软件项目的风险甚至果断中止项目,而且可以将人才流动所带来的不利影响减少到最小。要进行有效的过程控制,必须明确软件项目管理流程。
软件项目管理总体流程设计为项目搜寻、立项、售前、合同生成和合同执行等5个主要阶段,分别以P1、P2、P3、P4、P5表示;同时设计了立项完成、合同签定、功能定义、软件开发、项目验收等5个里程碑,分别以TM1、TM2、TM3、TM4、TM5表示,如图1所示。在这些流程中,合同执行流程是软件项目管理的核心,其主要过程有:产品定义、软件开发、测试执行、内部验收、项目实施与验收、项目维护。
图1 软件项目管理总体流程
4 软件项目管理总体流程分析
4.1项目搜寻
项目搜寻是项目立项的基础,项目搜寻阶段的主要任务包括市场信息收集,用户需求跟踪,对潜在的项目进行分析和筛选。
4.2项目立项
立项阶段的主要任务是确认立项的理由,提出立项建议,提供合适的资金和资源,使立项建议成为正式项目。
4.3 项目售前
售前阶段从项目立项开始到项目合同的签定结束,主要工作有:制定与客户的交流计划,详细了解客户的背景资料,了解客户启动项目的缘由、目的和期望,编制项目方案建议书,准备合同蓝本。
4.4合同生成
合同生成阶段的主要工作有:项目方案的评估与确定,技术合同、商务合同的商定、评估与签署。
4.5合同执行
合同执行是软件项目管理流程的重点,可分为软件开发、测试执行;内部验收、项目验收、系统维护等五个基本工作过程。
4.5.1软件开发
软件开发阶段分为:需求调研、系统分析、系统设计、编码、单元测试等过程。主要从三个方面进行管理:
1) 制定项目计划。软件项目计划是一个用来协调所有其他计划,以指导项目执行和控制的可操作文件。它体现了对客户需求的理解,是开展项目活动的基础,也是软件项目跟踪与监控的依据。
2) 确定开发过程。根据软件项目和项目组的实际情况,建立起一个稳定、可控的软件开发过程模型,并按照该过程来进行软件开发。
3) 加强过程控制。过程控制主要包括过程管理、变更控制和配置管理。
4.5.2测试与执行
项目测试的目的是检查系统是否符合项目合同与任务书规定的要求。项目测试分集成测试和系统测试,主要进行功能测试、健壮性测试、性能—效率测试、用户界面测试、安全性测试、压力测试、可靠性测试、安装/反安装测试等。测试过程在模拟运行环境中进行。
4.5.3内部验收
项目完成集成测试和系统测试后进行项目内部验收,主要有三个步骤:1)文档准备。项目经理提交内部验收计划、项目开发总结报告、产品发布清单;财务主管提交项目财务预算报告。2)内部验收测试。内部验收测试的测试内容与方法虽然与系统测试基本相同,但应站在用户验收的角度进行,因为它是试运行的基础,通过这一步,为用户验收作充分的准备。3)内部评审。对提交的所有文档及测试结果进行内部评审,完成项目开发总结报告。
4.5.4项目试运行与验收
试运行与用户验收阶段的主要任务是,使所有的工作产品得到用户的确认。主要工作有:1) 验收前的准备。项目经理负责检查产品的完整性,包括文档、介质和中间产品等,以确保现场实施的成功;负责应用软件的现场安装调试,完成安装调试总结报告;负责制定用户验收计划,并得到客户的确认。2) 用户进行验收测试和系统试运行,进行文档和系统的移交。3) 用户确认。项目经理负责与客户协调,协助用户进行项目验收,形成用户验收报告。
4.5.5项目维护
软件系统的维护分为两大类:一类是纠错性维护,由于前期的测试不可能暴露软件系统中所有潜在的和隐含的错误,诊断和改正这些错误的过程为纠错性维护。另一类是完善性维护,在软件正常使用过程中,用户还会不断地提出新的需求,为了满足用户新的需求而增加软件功能的活动称为完善性维护。如果需求变更很大,那完善性维护将转变为软件新版本的开发。系统维护的宗旨就是提高客户对软件产品的满意度。确保系统的正常运行是系统维护的根本目的。
4.6 软件项目管理的里程碑
项目的考核与评审是软件项目管理流程控制的基础,我们在整个流程中设定五个基线,即确定五个里程碑,它们分别是TM1:立项完成;TM2:合同签订; TM3:产品功能定义完成;TM4:软件开发完成;TM5:验收通过。如图1所示。各阶段的主要的进入条件和相应的工作结果是里程碑是否达到的重要标志。
5 结束语
本文设计的软件项目管理总体流程及相关技术已成功运用在软件项目的研发和管理中。通过将流程管理应用于软件项目管理中,以设定软件项目总体流程为主线,确定每个阶段的主要流程和里程碑,并采用评价指标体系和一系列的模板和表格进行软件项目开发过程的控制和管理,使软件项目的成功率显著提高。
实践证明,针对企业和项目的实际情况,确定软件项目运作流程,定义软件工作产品,明确各阶段的进入条件和退出条件,进行有效的流程控制与管理,大大的提高了软件开发的效率和项目的成功率。
参考文献
[1] 罗铁清,王如龙. 软件项目管理的研究及在项目开发中的应用.项目管理技术2005, 3:66-70
[2] 刘宽宏,殷人尾.基于CMMI的过程和产品质量保证模型.计算机工程, 2004, 30(15):75-77
[3] 甘华鸣.业务流程.第一版.北京:中国国际广播出版社,2002
[4](美)凯西.施瓦尔贝.IT项目管理.王金玉,时郴 译. 北京:机械工业出版社,2002
[5] 刘佰忠.项目管理是IT项目灵魂.湖南制造业信息化,2004,4:9-10
[6] 林锐.软件工程与项目管理解析.第一版.北京:电子工业出版社,2003
[7] 张益林,王如龙.基于WEB的工作流技术在工程项目管理系统中的实现.科学技术与工程.2005,6: 371-374