课程内容概述:
传统项目开发
敏捷模式开发
第一部分:
引言:从传统项目开发说开去……
软件开项目管理成功的关键
1、将商业远景正确转换为产品的开发战略
2、奉行项目管理的最基本的原则和指南
3、尊重软件开发的特性、做好开发运作流程的管理
4、做好完善的需求分析和使用方案的总结
5、制定完整的计划规范,包括使用界面、控制行为、错误信息等等的详细设计
6、制定符合实际的时间表、开发里程碑、即发行通过标准
将功能的开发与支持使用方案连接起来
将开发时间表用里程碑来代表
7、采用多次重复、循环渐进的方式推动开发周期的进展
8、执行严格的质量、更改控制和发行的管理
项目管理的十大工作在软件开发项目中的运用
1、决定项目的启动
2、制定项目的范围
3、制定项目的任务的重要性和优先顺序
4、确定具体的项目工作任务和工作单元
5、分配项目资源
6、估算完成工作任务单元的时间
7、制定项目时间表
8、计算并管理项目的费用
9、项目执行的管理
质量管理----测试
追踪进度
项目状态通报
执行更改控制
执行风险控制
执行发行管理
10、项目的结束和收尾
完善的软件开发项目管理的执行顺序和工作总结
软件开发项目的工作和管理流程的总结:
确定软件开发的目标——确定项目范围——进行软件功能需求分析总结——确定功能的优先顺序——进行软件功能设计——确定工作任务——进行工作任务分解——菲裴项目开发资源——估算工作任务单元的时间——进行时间表的初步排列——计算项目的关键性——软件开发的开支预算—开发的执行—程序编写——测试——文档编辑——更改控制——软件——风险管理——外包管理——发行管理——项目结束工作
做好项目管理执行的关键
制定清晰的开发目的,并定出相应的优先顺序
开发团队成员的工作目的和努力方向与项目的总体目的保持一致和吻合
根据开发目的的重要性和优先权妥善的分配各项资源
确定对每项具体的开发工作的个人责任以及检验标准
对开发中可能出现的风险和依赖因素有清晰的分析和认识,并制定相应的对应策略和计划
定期沟通汇报项目的进展、保持项目进度状态的透明度
使用一致的实践规章和统一的项目管理工具
实践规章的一致性体现在:组织、方法和工具
统一工具的使用需要从规章开始,逐渐成为企业文化
软件开发的工程层面流向:
软件的开发可以分为三个独立的工作流向层面:
产品:整个软件产品或系统的总体远景目标、所需提供的功能或服务
项目:为达到产品的总体远景所进行的各个局部功能或局部开发阶段所作的开发工作任务
功能:为完成产品或系统的开发所进行的局部的功能组件或分部系统的开发任务
三个开发层面和流向的工作细节
产品层面:产品需求总结 产品设计规范书
项目层面:确定项目的目的和速度时间表的里程碑——确定项目的依赖因素——设定风险管理计划——项目速度的里程碑时间表——调整项目速度时间表通报项目速度状态——进行项目里程碑时间表的审核
功能层面:对功能进行优先排列——作功能开发时间的估算——将功能开发时间表于项目里程碑对应——功能开发时间表(Feature Schedule)——审核工作任务分配开发资源——功能开发工作的完成——进行工作进度的通报清楚工作进度的阻碍
产品的远景目标和开发里程碑:
产品远景目标、市场战略、客户利益
将远景划分为更细小的局部:
主题(Themes)
使用方案(Scenarios)——M 1 M2 M3小里程碑(Mini MileStone)
具体功能(Feature)——F 11 F 12 F 13 F 21 F 22 F 23 F 31F 32F 33功能
审核和循环往复:
在每个项目的里程碑末端进行阶段性审核
同时在功能开发的层面进行短期性的不断审核
对完成的工作对照项目的目标进行评估
进行必要的时间表的调节
第二部分:
敏捷模式的出现:
敏捷模式最早是由美国的17个人喊出来的,他们号称:开发实践中那些循环往复的工作流程搞的人们疲劳和讨厌,而实际上是没有什么效率的,也就是低效的,建立在繁复的程序化的步骤中,使这个工作丧失了人的主动性,强调事务和秩序,使人的能动性大大缩减,于是他们试验以人来高效的开发,而不依附于复杂的制度规定。就像是橄榄球中十几个人肩并肩抱成一团,齐心协力抢球,在软件中引进了Scrum这个词,意义是:一段时间内,整个团队发挥能动性,齐心协力围绕一个目标而努力。因此又引入了Sprint这个词,意义是“突击”,整个团队要短时间内达到目标,完成任务。
软件开发中应用敏捷模式:
在三个流程层面的最后一个层面:功能层面应用敏捷模式是最适用的,不仅可以提高效率,且使管理这个过程更简易,减少了像以前的开发模式的流程化,反复循环等步骤。强调团队协作和短时间(一个时间盒,比如:30天)内突击取胜,已被证实是比较有效的开发方式。
如何利用敏捷模式的实践
功能层面Sprint:30天的时间盒周期
对功能进行优先级排列作功能开发时间的估算——将功能开发时间表与项目里程碑对应——产品开发记录(Product BackLog)——阶段工作的记录——审核工作任务分配开发资源——功能开发工作的完成——进行工作进度的通报清楚工作进度的阻碍——阶段工作的总结
功能层面Scrum:每天的时间盒周期
审核工作任务分配开发资源——功能开发工作的完成——进行工作进度的通报清楚工作进度的阻碍
敏捷模式开发适合小团队
组成人员可以是:项目经理,开发人员,测试人员,会议记录者。其中会议记录者需要是公正的记录会议内容,做好焚烧图的标记。最好是小组外的人来担当。
开发过程如下:制定时间盒(比如:30天)来完成一项功能Feature,在开始这个Sprint时,做好估计,虽不能估计每天的进度,但起码要有一个整体的估计。就像是“滚动的波浪”,当他向你涌来的时候,你看到的只是最前面的波浪,而当他靠近你时,你会注意到它的走势,高低起伏的形状。到你眼前的时候,就可以完全看到全貌,浪花的细节。估计这个时间盒内的进度就像是看滚动的波浪,随着功能的开展,进度越来越明晰。估算应是可行的、可完成的。将整个功能划分为30个任务点,并在每天早晨召开约15分钟的会议,开发人员报告进度,会议记录者记下来,并在焚烧图上标记为完成的任务点的个数。
焚烧图:
横纵坐标用来表示时间盒的长度,比如30天的时间盒,它的横纵坐标长度为30。将Sprint功能分为30个Scrum任务单元,在会议中根据报告的完成情况标记尚未完成的任务单元的个数。将这些点连接起来会是一条折线,会有个大体的斜率。从这个斜率可以看到照此进度下去需要多少天能完成。根据某个时间段内的变化情况可以分析进度是否正常,需要做什么调整。
称其为焚烧图,是因为这条折线很像一个火被风吹着燃烧的走迹
除了这条折线,还可以每天标示已完成的任务单元个数,标示每天进行中的任务单元个数,帮助了解进度,分析问题,调整进度