软件质量管理-项目管理线
概念
三大目标
成本、质量、工期
团队动力学
知识工作特点
复杂又富有创造性
知识工作管理
管理者无法管理工作者,知识工作者必须实现并且学会自我管理。
要自我管理,知识工作者必须:
- 有积极性
- 能做出准确的估算和计划
- 懂得协商承诺
- 有效跟踪他们的计划
- 持续地按计划交付高质量产物
领导者和特点
知识工作的管理者是领导者,而不是经理。
知识工作的领导者特点:
- 引导能力强
- 定义清晰的目标
- 营造信任的环境
- 关注产出
不同激励方式
三种:
- 威逼
- 利诱
- 鼓励和承诺
交易型领导方式(威逼和利诱):
-
承诺奖励激励
-
人们通常能找到新的方式来获得奖励,同时少做工作。
转变型领导方式(鼓励承诺):
- 用成就激励
由于交易型领导方式很少能产生成功的并且有创造性的团队,因此转变型领导方式是首选(即鼓励和承诺)
马斯洛需求层次理论

期望理论
人们在下列情况下能够受到激励并且出大量成果
- 相信他们的努力很可能会产生成功的结果()
- 他们也相信自己会因为成功得到相应的回报()
自主团队
定义:一个团队必须包括至少两个成员, 他们为了共同的目标和愿景而努力工作,他们每个人都有明确的角色和相应的职责定义,任务的完成需要团队成员互相依赖和支持。
内外部环境
外部环境:
- 项目启动阶段得到管理层支持
- 项目进展阶段得到管理层支持
内部环境:TSP对自主团队的支持
TSP角色和职责
- 项目组长:建设高效率团队、激励团队成员、处理成员矛盾、向管理层汇报项目进度、充当合格的组织者和协调者
- 计划经理:开发完整准确的团队和个人计划,每周准确报告项目小组状态
- 开发经理:开发优秀的软件产品,充分利用团队成员的技能
- 质量经理:使团队严格按照质量计划开展工作,开发高质量产品;开展小组评审工作并形成评审报告
- 过程经理:做成员记录、会议记录、报告等,跟踪过程数据
- 支持经理:保证所有成员有合适的工具和环境,追踪风险和问题,使开发满足复用目标
- 开发人员:开发
TSP启动过程

SCRUM角色和职责
Scrum团队是跨职能的自组织团队
- 产品负责人PO:将团队开发的产品价值最大化;也是管理产品待办列表的唯一负责人
- 开发团队:在每个Sprint结束时交付潜在可发布的且已完成的产品增量
- Scrum Master:促进和支持Scrum;帮助每个人理解Scrum理论、实践、规则和价值;SM是一位服务型领导(服务于PO、开发团队、组织)
估算和计划
估算要点
估算的对象是规模、时间和日程
估算的目的
给各类计划提供决策依据
抽象的、相对的估算
- 估算是主观猜测
- 估算那里很难提升
- 没人知道准确值是多少
- 估算模型没啥用
PROBE估算方法
以LOC为例,我们为什么不采用精确度量:
- 精确度量不便于早期规划
- 有助于早期规划的度量往往难以产生精确的结果
PROBE的作用:精确度量和早期规划之间的桥梁
PROBE的工具:相对大小矩阵;示例(C++, LOC)

流程:

概要设计做什么?个人感觉主要是识别任务(或者程序组件/模块等等),然后分配任务大小,方便后面直接用相对大小矩阵加和计算
估算任务时分割的部件越多,可以认为结果越准确(误差相抵),示例:

如下计算得到:
$1000 \times 0.5=500 \ 500 \times \sqrt{\frac{1}{25}}=100 \ [1000-100, 1000+100] $
SCRUM故事点
度量一个故事需要付出的工作量(抽象且相对的,抽象是因为考虑了各种东西,相对是因为没有明确标准)
通用计划框架

各类计划
任务计划、日程计划
典型计划流程回顾:
- 估算规模
- 估算资源
- 规划日程
质量
质量计划?
风险
风险计划?
跟踪
挣值管理体系
项目的挣值管理方法(EVM)是用来客观度量项目进度的一种项目管理方法;EVM采用与进度计划、成本预算和实际成本相联系的三个独立变量进行项目绩效测量。
简单、中级和高级
- 简单实现:仅关注进度信息。实现时需要建立WBS。定义一些名词:
- 每项工作的价值:PV
- 挣值:EV(有多种赋值方式,比如项目完全完成时PV→EV,或者项目刚开始就50%PV→EV)
- 中级实现:在简单实现的基础上,加入日程偏差的计算。典型方式有:
- 日程偏差 SV = EV PV
- 日程偏差指数 SPI = EV PV
- 高级实现:在中级实现的基础上,还要考察项目的实际成本
燃尽图
示例:
适应软件项目
EVM的局限性如下:
- EVM一般不能应用软件项目的质量管理。
- EVM需要定量化的管理机制,这就使其在一些探索型项目以及部分敏捷开发方法中的应用受到限制。
- EVM完全依赖项目的准确估算(价值体系),然而在项目早期,很难对项目进行非常准确的估算。