软件工程
电子教案
王树林
第 7章 项目进度安排及跟踪
一个软件开发项目的进度为什么总是比计划晚?
这是一个被千千万万的软件开发者所重复的过
程。
7.1 基本概念
虽然软件延期交付的原因很多,但多数原因
如下:
? 一个不现实的截止期限;
? 对工作量或完成该工作所需的资源数量估计
不足;
? 在项目开始时,没有将可以预测的或不可预
测的风险考虑在内。
第 7章 项目进度安排及跟踪
? 事先无法预计的技术困难;
? 事先无法预计的人力困难;
? 由于项目组成员之间的交流不畅而导致的延
期;
? 项目管理者未能发现进度拖后,也未能采取
行动解决这个问题;
7.1.1 关于延迟的评注
拿破伦曾经说过:“任何同意一个他本人都认为是有缺
陷的计划的指挥官都应该受到指责,他必须提出自己
的反对理由,坚持修改这一计划,最终甚至提出辞职
而不是使自己的军队遭受惨败。
第 7章 项目进度安排及跟踪
例如,一个软件开发小组的任务是开发一
个医疗诊断仪器的实时控制系统,该控
制系统需要在 9个月之内推向市场,在
仔细的估算和风险分析之后,软件项目
管理者得到的结论是在现有的人员条件
下,需要 14个月的时间才能完成。外部
市场压力决定了交付日期。
怎么办呢?
第 7章 项目进度安排及跟踪
( 1)进行详细估算
( 2)使用增量模型
( 3)与客户会谈并解释为什么规定的交
付日期是不现实的。
( 4)将增量开发策略作为可选计划提交
给客户。
第 7章 项目进度安排及跟踪
技术性项目的特点:在实现一个大目标之
前必须完成许多小目标和小任务。一些
任务处在主流之外,一些任务处在关键
路径上。如果关键路径上的任务被拖后,
则整个项目的完成日期就会受到威胁。
项目管理者的任务就是定义所有的项目任
务,识别关键任务,然后跟踪关键任务
的进展,及时监控项目的进度。
第 7章 项目进度安排及跟踪
在项目进展的早期,首先建立一个宏观的进度
表。该进度表标识所有主要的软件工程活动。
随着项目的进展,宏观进度表中的每个条目
都被精化为一个详细进度表。
进度安排:
( 1)基于软件系统的最终发布日期。
( 2)最终发布日期由自己决定。
活动安排:
第 7章 项目进度安排及跟踪
( 1)项目划分,任务分解,对产品和过程都需
要分解。
( 2)相互依赖性。有些活动必须顺序发生,有
些活动可以并发执行,有些活动可以独立进
行。
( 3)时间分配。必须为每个被调度的任务分配
一定数量的工作单位,必须为每个任务指定
开始和结束日期。
( 4)每个项目都有预定数量的人员参与。
( 5)定义责任,每个任务都必须由一个专人负
责。
第 7章 项目进度安排及跟踪
( 6)定义结果:每个任务都必须有一个定义好
的结果。
( 7)定义里程碑:每个任务都必须与一个项目
里程碑相连。
7.2 人员与工作量之间的关系
对于小型项目而言,一个人就可以完成需
求分析、设计、编码和测试。但对于大项目
来说,则往往需要花数十人年时间。进度拖
后,仅靠增加更多的程序员是不足以解决这
个问题的。人员之间的依赖与通信需要花费
较多的时间。
第 7章 项目进度安排及跟踪
7.2.1 一个例子
一个需要 4名程序员的项目。每个工程师
的工作能力都是每年生产 5000LOC。 有 6条通
信途径。每条通信途径都增加了通信成本。
当然,通信也可以增加软件的质量。
7.2.2 一个经验关系
在完成项目的时间与投入项目中的人员的
工作量之间存在着高度非线性关系。交付的
代码行数 L与工作量和开发时间之间的关系可
以用下面的的公式表示:
第 7章 项目进度安排及跟踪
L=P*(E/B)1/3 t 4/3
其中,L是代码行数,E是以人月为单位的开发
工作量,P是一个生产率参数(取值在 2000到
28000之间),B是特殊技术因子,在 0.16和
0.39之间,t是以月为单位的项目持续时间。
把上式变换以下得,E=L3/( P3t4)
有趣结论:一个 LOC为 33000、需要 12人
年工作量的软件开发项目。如果分配 8个人,
需要 1.3年时间完成。如果将交付日期的时间
延长到 1.75年,则工作量为 3.8人年。这意味
着将工作日期推迟 6个月,人员数可以从 8人
下降到 4人。
第 7章 项目进度安排及跟踪
7.2.3 工作量分布
在整个软件开发生命周期,工作量的分布
通常为,40-20-40规则。
40%工作量分配在前端分析和设计任务。
后端测试的工作量为 40%,编码为 20%。这只
能当作指导原则。各个项目的特点决定了工
作量的分布。
项目计划大约占用 2— 3%;
需求分析大约占用 10— 25%;
软件设计占用 20— 25%;
编码 15— 20%;
第 7章 项目进度安排及跟踪
测试和调试占用 30-40%的软件开发工作
量。
7.3为软件项目定义任务集合
如果不考虑软件项目组所选择的开发范型,
则过程模型都是一个任务集合组成的,他使
得软件项目组能够定义、开发和最终维护计
算机软件。
一个有效的软件过程应该定义一组任务集
合。不同的软件项目有不同的任务集合。
第 7章 项目进度安排及跟踪
项目类型:
( 1)概念开发项目,探索某些新技术的应用
或商业概念。
( 2)新应用开发项目 根据特定的用户需求
而承担的项目。
( 3)应用增强项目 对现有软件进行最终用
户可察觉的功能、界面和性能的修改
( 4)应用维护项目 对现有软件进行最终用户
不会立即察觉方式进行纠错,或是功能、界
面和性能的适应性修改。
第 7章 项目进度安排及跟踪
( 5)再工程项目 为了全部或部分重建一个现
有系统而承担的项目。
7.3.1 Degree of Rigor(严格度 )
Even for a project of a particular type,the degree
of rigor with which the software process is
applied may vary significantly.
Four different degrees of rigor can be defined.
(1) Casual All process framework activities are
applied,but only a minimum task set is required.
(2) Structured The process framework will be
applied.
第 7章 项目进度安排及跟踪
(3) Strict
(4)Quick Reaction
7.3.2 Defining Adaptation Criteria
7.7 进度安排
7.7.1 时间表
7.7.2 跟踪进度
7.8 项目计划
Summary
Scheduling is the culmination of a planning
activity that is a primary component of software
project management,When combined with
estimation methods and risk analysis,scheduling
establishes a road map for the project manager.
Scheduling begins with process decomposition,The
characteristics of the project are used to adapt an
appropriate task set for the work to be done,A
task network depicts each engineering task,its
dependency on other tasks,and its projected
duration,The task network is used to compute the
Summary
Critical project path,a timeline chart,and a
variety of project information,Using the
schedule as a guide,the project manager
can track and control each step in the
software engineering process.