完整word版软件项目进度跟踪管理经验谈word文档良心出品Word文档下载推荐.docx
《完整word版软件项目进度跟踪管理经验谈word文档良心出品Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《完整word版软件项目进度跟踪管理经验谈word文档良心出品Word文档下载推荐.docx(11页珍藏版)》请在冰豆网上搜索。
完成
设计
完成,有的提前编码
100%
任务紧,急于编码,设计不全面
70%
第二个月
编码
进展很快
55%
代码完成量很多
25%
第三个月
进展放缓
90%
中间件使用出麻烦
45%
第四个月
修改完善无明显成绩,
97%
由于设计问题而调整,修改代码
60%
第五个月
修改代码造成其它部分出问题
99%
需求小变而修改代码,数据库速度慢
75%
接下两月
工期紧急,无法测试,现场写了很多代码
为了保证系统运行,写了应敷代码
98%
从此表很容易看出,该项目开发进度从第三个月就开始失控,在第三个月,项目经理报的项目完成情况达到了90%,但实际上,项目经理所报的仅是代码完成的行数而非项目完成情况,项目实际进度与其所报进度相差甚远。
而且,对于项目进度评价忽视或者故意避开了工作质量因素,而工作质量恰恰是影响项目进度的关键因素之一。
这是个很有代表性的案例。
我在进行项目管理经验总结的基础上,参考相关资料,建立起来的一套软件项目开发阶段的进度模型。
二、影响项目开发进度的因素
通常,软件开发公司用来衡量项目开发进度的标准和方法,是完成代码或文档的工作量和完成功能点数量,适当考虑项目难易度修正,加以调整。
这种方法不足的地方是过于简单,对影响项目进度的工作质量、项目复杂度、难易程度、项目开发风险、沟通和变更控制等诸多因素估计不足。
往往是代码已经写完,所有功能已经实现,但还不能达到项目的预期目标。
所以,用完成代码或文档的工作量和完成功能点数量衡量项目进度是不科学的。
如上所述影响项目进度的因素很多,本文仅从项目复杂度变化、难易度变化、工作质量等主要方面分析其对项目进度的影响。
1、项目复杂度变化对项目的影响
在项目初期,程序代码较少,目标也很明确,故复杂度基本按线性曲线,缓慢增加,但当项目进展到一定程度上时,复杂度会快速增大。
如下图1所示项目进展时的复杂度曲线。
例如:
项目开始时只有用户需求,随着项目开展,需求分析说明书、设计说明书等文档增加,文档版本控制就变得很复杂。
图1
2、项目开发难易度变化对项目的影响
在软件项目刚开始时,虽有不少困难,但多是表面的、浅层次的问题,随着工作逐步开展,这些问题会逐步解决,难度不太大,当工作全面深入展开后,开发中的深层次问题就会逐步被发现,越积累越多,项目开发难度就会快速增大。
如下图2所示项目进展时的难易度曲线。
开发中使用中间件技术,在项目初期,开发人员会研究如何使用中间件,但其高级使用技术和限制条件不会被掌握,这样中间件初级使用技术很快被掌握和使用,开发工作快速展开,但当工作逐步深入后,高级技术就被发现,被迫投入时间和人力进行研究,难度反而增大。
图2
3、项目开发工作质量的影响
工作质量是影响项目进度的首要因素,工作质量主要包括:
文档质量、代码质量。
“失之毫厘,差之千里”,项目初期的微小差错,就会给后期排除差错带来很大的困难,花费很大的精力。
图3
如图3所示,开始时差错很少,当工作量、复杂度增加后,错误可能会快速增加。
虽然出现差错是在所难免的,但为了保证项目的进度和质量,必须建立和健全相应的管理制度,加强督导。
软件项目管理是“知识转移型”管理,有别于“资源消耗型”的管理,在制定管理制度时,要以人为本,充分调动员工主观能动性。
在项目开发过程中,经过上述各种因素的影响,最后,项目工作量完成曲线实际就如图4所示。
图4
即项目完成工作量(代码行数与文档的字数)开始非常快,然后逐渐趋于平缓,给人以停滞的感觉。
这是软件开发项目必然规律,所以在项目管理中,不能简单的追求项目进度,要充分考虑以上诸多因素,才能正确指导整个项目按期完成,满足用户要求。
三、建立软件开发进度模型
如上图4所示,开发进度模型是在数理统计基础上的,建立完成工作量和时间花费成指数曲线关系的模型,用完成工作量表示项目进度(本文中使用的项目进度曲线,都是用完成工作量表示项目进度的)。
在实际工作中,需要对完成的工作量、时间花费等不确定变量建立样本,然后对样本进行数理统计分析。
以数理统计理论中的多元非线性回归方法,建立数学模型,例如:
根据实践经验可以采用灰色模型——GM(1,1)模型,这是因为完成的工作量是随着时间逐渐增加的,是增量型的,其样本满足光滑离散原始数列,符合灰色模型的使用范围。
总之,通过多种数理统计方式,建立软件项目开发工作完成量随时间变化的模型,也就是软件开发进度模型(本文重点不是研究开发进度模型,数学模型描述可参照相关数理统计方面的资料)。
此数学模型是随着项目进度跟踪管理而逐步修正完善的。
同理,也可以对项目复杂度变化、难易度变化建立线性或非线性模型,在此不作探讨。
四、工作完成量线性化
参照软件开发CMM模型的要求,一个项目的开发一定要有章可循,而且要做到有章必循,同时项目进度跟踪与监控是KPA的一项。
所以,建立在经验上的时间与进度曲线模型(在图4中的进度曲线),可以看作时间是衡量工作进度的一种尺度,并且时间和工作量是非线性关系,虽然模型不精确,但是可以在实践中逐步对该模型进行完善。
工作量具体体现在开发周期上(标准级别开发人员需要的工作日),工作量一般通过常用的功能点分析法核定,设总的开发周期为Tz,单个阶段的开发周期为Tn。
而实际上工作量完成情况是很难考核的,特别是正在进行中的项目,主要是靠经验模型主观判断得出大约数值。
如图5所示,每个阶段都有开发周期Tn,占总工作量的百分比Wn,阶段的进度曲线指标是Sn0,实际进度曲线是Sn。
其中,进度曲线指标就是开发进度模型。
图5节点的进度指标曲线
把非线性进度线性化,形成时间可比进度,例如:
假设10周的工作量,符合指标曲线Sn0的每周就是10%,然后用实际曲线Sn比对指标Sn0曲线,得出线性化后的进度Pn%。
设按模型完成开发工作量所需要的时间为tn0,实际发生时间是tx,f(x)是开发进度模型,其中,x是时间变量,f(x)结果是理论完成的工作量,则:
tx=f-1(Wx)
其中,Wx是当前完成工作量。
则当前某个阶段工作进度为:
Px=tx/Tn
则当前项目某个阶段完成总的工作量的百分比为:
Pn%×
Wn%=Pzn%
五、软件开发各个阶段的工作量划分和开发进度计算
从软件开发角度划分项目各个阶段,软件项目可划分为建设方案、需求调研、需求分析、设计、编码、测试、试点、推广、维护等阶段。
由于建设方案、试点、推广、维护阶段与用户关系密切,可控性差,先不做考虑。
对于其它阶段,一般说来,在现代软件项目管理中各种资源的理论分配比例(按实际情况可以调整)是:
项目需求分析阶段15%,系统总体/详细设计阶段40%,编码阶段25%,系统测试阶段20%。
对于一个大、中型项目,又可以在设计和编码环节拆分成几个小的子项目。
为此,我们可以把项目各个阶段的任务画成树状结构。
如图6所示。
图6
对应各个阶段定义如表2所示。
表2
项目的各个阶段
占总体工作量定义
备注
需求分析
A%
总体设计
B%
开发(详细设计与编码)
C%
此部分经常拆分成若干子系统
测试
D%
其中,对开发阶段进行拆分,首先是分块拆分成若干个子系统,子系统再分成设计、编码、单元测试等阶段,所以各个子系统的工作量C1%+C2%+……+Cn%=1。
开发阶段每个子系统又由设计、编码、测试各个阶段组成,其各个阶段工作量百分比累加,Cn1%+Cn2%+Cn3%=1。
总体各个阶段:
A%+B%+C%+D%=1
如上所示拆分工作方式,则开发阶段工作进度,一般是取各个子系统开发最慢的进度,公式如下:
Pc=Min(Pcn)
其中,Pc是开发阶段的进度,n∈{1,2,…N},N是最大分块拆分数。
总体项目进度为:
P=Pa+Pb+Pc+Pd
六、与实际工作结合的进度跟踪管理
软件开发进度跟踪管理,需要配套的工作,主要是做好计划(软件开发进度模型)、统计当前进度(工作完成量线性化)、监控工作质量管理,目的是保证计划和进度的有效性的。
形成闭环管理的主要内容如下:
⑴项目计划任务书
⑵项目里程碑(定期检查点)
⑶周工作计划与工作计划完成情况
⑷中间工作质量检查
⑸月工作计划及总结
⑹测试及测试评分标准
⑺审管理
项目计划任务书、周工作计划管理、中间工作质量检查管理、月工作计划总结、评审和测试等环节构成项目闭环管理,周工作计划管理贯穿整个项目周期,定期或随机的中间工作质量检查保证周工作计划的真实性、准确性,使项目进度跟踪管理能得到有效的实施。
使用数据库技术积累周工作计划、月工作计划及其完成情况的数据,逐步完善中间工作质量检查标准、方法,最终有效地实现软件过程改进、项目进度跟踪管理。
通常,一个项目开始于《项目计划任务书》,对于项目计划任务书来说,在软件工程和项目管理等资料中已经介绍了很多,这里不再描述。
1、工作计划和工作总结管理
项目一般有任务计划书,规定各个阶段的时间和工作内容,但其周期比较长,属于粗粒度管理,很难有效的控制项目开发进度。
夸张的说,全天8小时监控项目的开发进度是最理想的。
比较现实的方案是按周做工作计划,按日检查完成情况,再在周末汇总周工作计划完成情况。
“周工作计划和工作完成情况管理”和“月工作计划和月工作总结”的管理制度,是项目进度跟踪管理的有效管理载体。
⑴周工作计划和工作完成情况管理需要填写的表格形式如下
项目周工作计划和完成情况
项目名称
开发周期
项目负责人
进度
完成工作量
工作质量检查人
进度修正
花费工时
计划/完成
内容
审核人:
审核时间:
其中,时间:
以周为单位;
内容:
本周要完成的工作内容;
进度:
以百分数形式书写,按项目进度模型线性化的结果;
完成工作量:
完成工作量占计划工作量的百分比;
花费工时:
标准级别员工完成此工作所花费的时间。
⑵日工作完成情况管理需要填写的表格形式如下
项目日工作完成情况
工作名称
工时
工作负责人
工时:
完成此项工作实际发生的工时。
⑶月工作完成情况需要填写的表格形式如下
员工月总结报告
姓名:
肖永威年月:
2003年5月
项目名称
工作内容
完成率
有效工时
质量自评
备注项填写‘是’或‘否’,是否采用构件库,是否充实了构件库?
问题分析
1.未完成工作
2.质量分析
建议意见
1.管理
2.技术
3.团队建设
4.其他
此周工作计划管理方案操作起来比较繁琐,但缩小的时间单位,更能有效的跟踪项目的进展。
最好是按照软件开发进度模型的理论,开发一个工作计划和工作完成情况的管理软件,提高管理效率,积累数据,进行软件过程改进,建立更有效的软件开发进度模型,如下图样式所示的工作计划管理软件系统:
图5
每个月的工作计划和工作总结内容包括项目当前的进度和计划、完成情况、存在的问题、变更情况等等,能及时反馈到项目组和公司领导层,及早发现开发中的问题,并尽快解决问题。
2、工作质量中间检查
通过建立软件开发标准、程序代码检查和考评标准,以及配套中间检查制度,使开发及其过程标准化,主动地监管工作质量,督促提高工作质量。
如下表是“程序代码检查和考评标准”的简单例子。
程序代码检查和考评标准
1、代码书写规范检查
1.1、注释
1.1.1、序言性注释(每个模块起始部分)
5
3
说明模块的用途和功能
优
一般
无
接口描述(包括参数、从属关系)
有关数据信息(重要变量用途、约束等)
开发历史(设计者、评审者、时间、变更等)
1.1.2、功能性注释(用在不易理解的的代码块、计算公式、函数调用等)
叙述详尽,意思表达贴切5分
基本描述,也表达意思3分
无0分
1.2、变量定义规范
满分5分,有一个变量不符合规范,则扣1分,2个不符合扣2分,以此类推,5分扣完为止。
2、技术检查
由资深程序员对已经完成的部分执行检查,并出具检查报告。
2.1、程序设计缺陷检查
缺陷数
6
10
得分
4
2
……
例如工作质量中间检查管理,是通过程序代码检查与考评来勉励程序员提高工作质量,检查范围包括:
1、代码书写规范检查,2、技术检查,3、界面设计规范及用词标准检查,4、缺陷率统计等。
经过检查得出评分,此评分再对当前进度进行加权处理,简单的说就是给当前进度打点儿折扣。
建立在数理统计上的抽样检查理论,是此项工作理论基础,通过检查制度化、规范化积累采样数据,逐渐分析出易出现问题的点,及早发现问题,并解决问题,减少对进度的负面影响,同时也能对工作质量起到督促作用。
3、沟通管理
沟通的方式很多,正式的、非正式的都可以完成此项工作,如果要做到有效并且有据可查的沟通,最好方式就是常用的会议方式。
与用户沟通可以与用户协商,确定例会制,每周定时召开项目工作会议,形成会议纪要,最好能让用户确认签字。
项目组内部沟通除了定期会议外,还可以通过技术讨论、公告等方式沟通。
使用软件完成项目组内部沟通记录,例如局域网QQ软件,其用户间交流信息(图片、文件、文字)都可以记录,随时查询历史记录。
别忘了把你的软件开发进度情况告诉市场、商务人员,在项目开发过程中,随时与市场商务人员沟通是个非常重要环节,随时告诉市场商务人员项目的当前进度,是一步妙棋。
从商务人员掌握项目进度的角度来看,为了维护公司利益,市场商务人员会尽量与用户协商,把项目开发进度与用户期望保持一致。
另外,商务人员掌握了项目进度,或许还有些经济效益。
4、积极进行技术积累和资源共享
在软件项目开发过程中,积极进行技术积累和资源共享可能对当前项目进度有负面影响,但对其它类似项目却提供了快速开发的工具和经验,从近期看对当前项目组成员的技术提高可以起到强有力的促进作用,从长远看也为公司的代码库和构件库积累了资源。
5、测试及测试评测标准管理
在质量保证体系当中,测试是验证软件开发工作质量的重要环节。
与项目进度跟踪管理密切的是随机检查测试、单元测试。
总之,要实现有效的软件项目进度跟踪管理,需要有一套与之相匹配的管理制度、形成周密的流程控制与严格的质量保证体系。
七、后记
此套项目进度跟踪管理方案在工作实践中,不能顺利得到员工拥护和执行的,有的方面员工能接受并有效的执行,有的地方却受到强烈的抵制而不能顺利执行。
例如对工作质量检查,很少有人敢于面对问题,承认自己的工作质量有问题,同时由于检查人员的业务水平不胜任和检查尺度宽严标准不一等原因而使检查结果遭到质疑,再者检查人员怕得罪人、做老好人,不认真进行检查工作等等。
实践中虽然受到一些挫折,但它也受到了广大员工特别是公司中高层管理人员的欢迎与支持,他们可以用较少的时间了解与掌握一个大而复杂项目真实的进展情况。
“失败是成功之母”,世上不会生来就有现存的管理办法,任何一个成功的管理方法,都是人们逐步摸索出来的,软件过程改进也离不开这个事物发展的认识规律。