软件流程和管理(六):Project Scheduling
目录
1. Understand the role of a project schedule
2. Understand how to develop a project schedule
2.1 Developing Project Schedule - Steps
2.1.1 Work Breakdown Structure – Step 1
2.1.2 确定分解的任务之间的相互依赖关系,并开发一个任务网络
2.1.3 估计每项任务的工作量和时间分配
2.1.4 为任务分配资源并验证努力程度
2.1.5 了解如何使用项目进度表来监测和跟踪项目进度
2.1.6 理解敏捷计划原则
1. Understand the role of a project schedule
项目时间表:
- 在项目规划阶段产生的重要人工制品之一
- 在整个项目中使用和维护,以监测和跟踪项目进展——是一个活的文件
项目时间表包含什么?
- 每项任务的持续时间和依赖性
- 每项任务所需的人员和物质资源
- 里程碑和可交付成果
- 项目时间表
本专题介绍的项目计划和时间安排适用于正式的SDLC流程——计划驱动
Waterfall是由Scope决定项目的Cost和Time。
Agile是由Cost和Time决定项目的Scope。
2. Understand how to develop a project schedule
2.1 Developing Project Schedule - Steps
- 将任务分解成你能处理的小块——工作分解结构(WBS)。
- 确定分解的任务之间的相互依赖关系,并开发一个任务网络。
- 估计每项任务的工作量和时间分配。
- 为任务分配资源并验证努力程度。
- 制定项目时间表。
2.1.1 Work Breakdown Structure – Step 1
规划和执行大型任务是一项挑战:
- 估算时间和资源
- 确定中期目标和可交付成果
- 进展监测
解决方案是将任务分解为可管理的单元:
- 每个任务都应该有一个具体的结果或可交付的成果
- 形成一个工作分解结构(WBS)
Non-software project
Software Project
2.1.2 确定分解的任务之间的相互依赖关系,并开发一个任务网络
识别任务的依赖性:
- 不受限制:任务可以在任何时候开始(购买油漆,拆除可拆卸的装饰物)
- 受限:取决于另一个任务(在拆除装饰物之前不能拆除墙纸)
- 如果任务B依赖于任务A(A->B)
- B是一个后继任务(S)
- A是一个前置任务(P)
- 移除可拆卸的装饰物(P)->移除墙纸(S)
依赖性是由以下原因造成的:
- 一项任务需要另一项任务的工作成果
- 一项任务需要另一项任务使用的资源
任务依赖类型
最常见的依赖关系类型是完成——开始的依赖关系。
Task Network
任务网络——软件项目
2.1.3 估计每项任务的工作量和时间分配
Effort-time Estimation
估算软件工作量的一个常见措施是man-months(更普遍的是person-months)。
- 第7周将介绍工作估算。
Person-months
- 一个人全职工作完成任务所需的时间,以月为单位。
The Mythical Man-Months
- man-months是估算软件的一个误导性措施
- 在一个进度落后的项目上增加人手,可能会造成更大的损失,而不是帮助它。
Effort vs Time
Time Estimation
Terminology
- optimistic time -
- pessimistic time -
- most likely time -
- expected time -
2.1.4 为任务分配资源并验证努力程度
资源分配
如果工作(person-months)和时间是已知的,人员的数量可以计算为:
为任务分配人员
- 尽管计算每项任务所需的人员数量看似简单,但资源分配是一项复杂的任务
- 项目经理必须仔细考虑人员的专业知识,以及他们是否能完成任务,这可能需要验证和调整时间表。
Develop a project schedule
项目时间表将回答两个迄今为止尚未回答的重要问题
- 该系统需要多长时间来开发?
- 它将花费多少钱?
两种广泛使用的表示项目进度的图形符号
- 甘特图
- 一种条形图,对照日历显示时间表
- PERT(计划评估和审查技术)图
- 显示任务之间的依赖关系和关键路径的活动网络
Milestones vs Deliverables
Milestones 里程碑
- 标记项目时间表上的特定点
- 这些点可能是锚的信号,例如:
- 项目的开始和结束日期
- 需要进行外部审查
- 一个阶段的开始和结束
- 某项可交付成果的完成
Deliverable 可交付成果
- 有意义的具体人工制品
- 可交付成果的例子包括:
- Project documents such as the Project Management Plan, Requirements Specification, Design Document, Test Plan etc.
- Prototypes
- Final application
甘特图
- 是由亨利-甘特在1910年提出的
- 甘特图是一个水平条形图,显示任务与时间线的关系——项目进度
- 可用于查看计划活动与进展情况,因此是监测项目进展的一个有用工具
链接甘特图:
- 包含表明任务之间依赖关系的线条
进度甘特图:
- 任务的阴影与完成的程度成正比
- 用于进度跟踪——提供进度的可视化表示
PERT Chart
PERT(计划评估和审查技术)图:
- 一个任务网络,它显示了与时间有关的信息和关键路径的依赖关系。
PERT分析有助于:
- 了解项目的特点,让项目经理进行时间安排的权衡
- 进行关键路径分析
- 监测项目进展和重新规划
涉及到计算以下估算:
- 最早开始时间(ES)
- 最晚开始时间(LS)
- 最早结束时间(EF)
- 最晚结束时间(LF)
- 松弛时间
关键路径方法
关键路径
- 持续时间最长的路径。
- 关键路径上的活动的总自由松弛度为0。
- 关键路径上的任何活动的延迟都会导致项目的延迟。
使项目进度崩溃
- 通过缩短关键路径来缩短项目的总工期。
- 通过消除关键路径中的活动之间的依赖关系;或。
- 缩短关键路径中活动的工期。
工具
2.1.5 了解如何使用项目进度表来监测和跟踪项目进度
项目跟踪和控制
项目日程安排很重要,但跟踪和控制更重要!
如何跟踪和控制项目进度?
- 定期会议,团队成员报告进度
- 评估作为软件工程过程一部分进行的评审和审计的结果
- 跟踪正式项目里程碑
- 比较实际开始日期和计划开始日期
- 与工程师会面并进行非正式讨论
- 使用挣值分析等正式方法
挣值分析(EVA)
EVA可以用来
- 报告当前/过去的项目绩效
- 根据当前/过去的绩效预测未来的项目绩效
结果可以用美元和/或百分比表示
计算挣值分析
计划价值(PV)
- 在特定时期内,计划用于特定活动的已批准的成本估算部分。
挣值(EV)
- 实际完成的工作的价值
实际成本(AC)
- 在特定时期内,为完成该活动的工作而产生的成本总额。
2.1.6 理解敏捷计划原则
敏捷开发中的规划
- 采取与传统方法明显不同的风味
- 详细计划被推迟到迭代开始时进行
- 为处理变化而设计
- 一个迭代包括所有阶段(需求、设计和测试)
- 规划是基于轻量级的清单
- 甘特图和PERT图被认为不太有用
- 计划短期迭代
- 交付可用的软件
- 使用 "及时(JIT)计划"--下一次迭代
- 使用团队
Scrum中的计划
发布计划
正规规划中的假设。
- 范围固定——需求是稳定的
- 预算固定——成本估算是准确的
- 时间表固定——基于范围和预算得出
敏捷规划
- 认识到所有三个因素:范围、预算和时间在现实中都不能固定--不推荐
- 我们可以固定范围和日期而使预算灵活吗?
- 并非如此,因为增加预算,也就是增加资源,并不总是有助于提高速度--不推荐
- 那么我们有什么选择呢?
- 固定日期和预算,使范围灵活。固定日期的发布计划
- 固定范围并使日期和预算具有灵活性--固定范围发布计划
固定日期的发布计划