软件工程讲义项目进度安排

上传人:宝路 文档编号:47995822 上传时间:2018-07-08 格式:PPT 页数:38 大小:411.15KB
返回 下载 相关 举报
软件工程讲义项目进度安排_第1页
第1页 / 共38页
软件工程讲义项目进度安排_第2页
第2页 / 共38页
软件工程讲义项目进度安排_第3页
第3页 / 共38页
软件工程讲义项目进度安排_第4页
第4页 / 共38页
软件工程讲义项目进度安排_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《软件工程讲义项目进度安排》由会员分享,可在线阅读,更多相关《软件工程讲义项目进度安排(38页珍藏版)》请在金锄头文库上搜索。

1、现代软件工程第24章 项目进度安排主要内容v基本概念v项目进度安排v为软件项目定义任务集v定义任务网络v进度安排v获得值分析v小结项目进度安排v应该创建一个软件工程任务网络,该网 络将使你能够按时完成工作。网络创建完 成之后,必须为每一个任务确定责任,还 要确保完成这些责任,并在风险到来时调 整该网络。简单地说,这就是软件项目进 度安排和跟踪。v在项目级,是那些使用从软件工程师处 获得的信息的软件项目管理者们。在个体 级,是软件工程师自己。项目进度安排v为了建造复杂的系统,很多软件工程任 务会并行地进行,而且在一个任务中得到 的工作结果可能对在另一个任务中将要进 行的工作具有深远的影响。没有进

2、度安排 ,任务之间的这种相互依赖性是非常难以 理解的。实际上,没有一个详细的进度安 排,要评估中等程度或大型的软件项目的 进展情况也是不可能的。项目进度安排v 软件过程模型规定的软件工程任务要根据具体 实现的功能进行细化;工作量和工期应分配到每 个任务;任务网络的创建,使得软件团队能够在 最后期限之前完成项目。v工作产品是项目进度安排和相关的信息。v正确的进度安排需要:(1)网络中包含所有的 任务;(2)给每个任务合理分配工作量和时间; (3)明确指出任务间的依赖关系;(4)资源应分配 给具体要完成的工作;(5)提供短时间间隔的里 程碑,以便于过程跟踪。基本概念v虽然软件延期交付的原因很多,但

3、是大多数都 可以追溯到下面列出的一个或多个根本原因上:v不切实际的项目结束期限,由软件工程小组以外的某个人所制 定,并强加给软件工程小组内的管理者和开发者。v客户需求发生变更,而这种变更没有在项目变更进度表上预先 安排。v对完成该工作所需的工作量和/或资源数量估计不足。v在项目开始时,没有考虑可预测的和/或不可预测的风险。v出现了事先无法预计的技术难题。v出现了事先无法预计的人力问题。v由于项目团队成员之间的交流不畅而导致的延期。v项目管理者未能发现项目进度拖后,也未能采取措施来解决这 一问题。实例v假定一个软件工程团队受命开发一个实 时控制器软件,将在9个月内推向市场, 在进行了仔细的估算和

4、风险分析之后,软 件项目管理者得到的结论是:在现有人员 条件下,需要14个月的时间才能完成这一 软件。这位项目管理者下一步该怎么办呢 ?实例v1.按照以往项目的历史数据进行详细的估算,确 定项目的估算工作量和工期。v2.采用增量过程模型制定一个软件工程策略,以 保证能够在规定的交付日期提供主要功能,而将其 他功能的实现推到以后。然后将这一计划做成文档 。v3.与客户交流,并说明为什么规定的交付日期是 不现实的。一定要指出所有这些估算都是基于以往 的项目实践,而且为了在目前规定的交付期限完成 该项目,与以往相比在工作效率上必须提高的百分 比。v4.将增量开发策略作为可选计划提交给客户。项目进度安

5、排v技术性项目的现实情况是,在实现一个 大目标之前必须完成数以百计的小任务。 这些任务中有些是处于主流之外的,其进 度不会影响到整个项目的完成时间。而有 些任务则是位于“关键路径”之上的,如果 这些“关键”任务的进度拖后,则整个项目 的完成日期就会受到威胁。项目进度安排v项目管理者的职责是定义所有的项 目任务,建立相应的网络来描述它们 之间的依赖关系,明确网络中的关键 任务,然后跟踪关键任务的进展,以 确保能够在“某天某时”发现进度延迟 情况。为了做到这一点,管理者必须 建立相当详细的进度表,使得项目管 理者能够监督进度,并控制整个项目 。项目进度安排v软件项目进度安排是一种活动,它通过 将工

6、作量分配给特定的软件工程任务,从 而将所估算的工作量分配到计划的项目工 期内。进度是随时间而不断演化的。在项 目计划早期,是建立一个宏观进度表,该 进度表标识出所有主要的过程框架活动和 这些活动所影响的产品功能。随着项目的 进展,宏观进度表中的每个条目都会被细 化成详细的进度表,这样就标识了特定的 软件任务,同时也进行了进度安排。基本原则v划分。必须将项目划分成多个可以管理 的活动、动作和任务。为了实现项目的划 分,产品和过程都需要进行分解。v相互依赖性。划分后的各个活动、动作 或任务之间的相互依赖关系必须是明确的 。有些任务必须按顺序再现,而有些任务 则可以并发进行。有些活动或动作只有在 其

7、他活动产生的工作产品完成后才能够开 始,而有些则可以独立进行。基本原则v时间分配。每个安排了进度计划的任务 必须分配一定数量的工作单位。此外,还 必须为每个任务指定开始日期和完成日期 ,任务的开始时期和完成日期取决于任务 之间的相互依赖性以及工作方式是全职还 是兼职。v工作量确认。每个项目都有预定数量的 人员参与。在进行时间分配时,项目管理 者必须确保在任意时段中分配的人员数量 不会超过项目团队中的总人员数量。基本原则v确定责任。安排了进度计划的每个任务都应该 指定特定的团队成员来负责。v明确结果。安排了进度计划的每个任务都应该 有一个明确的输出结果。对于软件项目而言,输 出结果通常是一个工作

8、产品或某个工作产品的一 部分。通常可将多个工作产品组合成“可交付产 品”。v确定里程碑。每个任务或任务组都应该与一个 项目里程碑相关联。当一个或多个工作产品经过 质量评审并且得到认可时,标志着一个里程碑的 完成。人员与工作量之间的关系v对于小型软件开发项目,只需一个人就可以完 成需求分析、设计、编码和测试。随着项目规模 的增长,必然会有更多的人员参与。v许多负责软件开发工作的管理者仍然普遍坚信 这样一个神话:“即使进度拖后,我们也总是可 以增加更多的程序员,并在后期跟随上进度。” 不幸的是,在项目后期增加人手通常会对项目产 生破坏性的影响,其结果是使进度进一步拖延。 后期增加的人员必须学习这一

9、系统,而培训他们 的人员正是一直在工作着的那些人,当他们进行 教学时,就不能完成任何工作,从而使项目进一 步拖延。人员与工作量之间的关系v除去学习系统所需的时间之外,新加入人员将 会增加人员之间交流的路径数量和整个项目中交 流的复杂度。虽然交流对于一个成功的软件开发 项目而言绝对是必不可少的,但是每增加一条新 的交流路径就会增加额外的工作量,从而需要更 多的时间。v多年以来的经验数据和理论分析都表明项目进 度是具有弹性的。即在一定程度上可以缩短项目 交付日期,也可以拖延项目交付日期。人员与工作量之间的关系vPNR曲线表明了一个软件项目中所投入的 工作量与交付时间的关系。项目工作量和交 付时间的

10、函数关系曲线如图18-1所示。图中 的t0表示项目交付所需的最少时间,而t0左 边的曲线是非线性上升的。人员与工作量之间的关系图18-1 工作量和交付时间的关系工作量分配v在第17章中讨论的各种软件项目估算技术最终都 归结为对完成软件开发所需工作单位的估算。软件 过程中的工作量分配通常采用40-20-40法则。总 体工作量的40%分配给前期的分析和设计,40% 用于后期测试。v这种工作量分配方法只能作为指导原则。各个项 目的特点决定了其工作量如何分配。用于项目计划 的工作量很少超过2%-3%,除非提交给组织的项 目计划费用极高而且具有高风险。需求分析大约占 用10%-25%的工作量,用于分析或

11、原型开发的工 作量应该与项目规模和复杂度成正比地增长。通常 有20%-25%的工作量用于软件设计,用于设计评 审和随之而来的迭代开发也必须考虑。工作量分配v因为在软件设计时投入了相当的工作量 ,随后的编码工作就变得相对简单。总体 工作量的15%-20%就可以完成这一工作 。测试和随之而来的调试工作将占用 30%-40%的软件开发工作量。软件的重 要性决定了所需测试工作的分量,如果软 件系统是人命相关的,就应该考虑分配更 高的测试工作量比例。为软件项目定义任务集v无论一个软件团队选择的是线性顺序模 型、增量模型、演化模型,或它们的某种 变型,过程模型都是由任务集组成的,这 些任务集使得软件团队能

12、够定义、开发和 最终维护计算机软件。为软件项目定义任务集v没有能普遍适用于所有软件项目的任务 集。适用于大型复杂系统的任务集可能对 于小型相对简单的软件项目而言就过于复 杂。因此一个有效的软件过程应该定义一 组任务集来满足不同类型项目的要求。为软件项目定义任务集v在进行项目进度安排时,必须将任务集 分布在项目时序图上。任务集应该根据软 件团队所决定的项目类型和严格程度而有 所不同。尽管很难建立一个全面详尽的软 件项目分类方法,但大多数软件组织遇到 的项目一般属于下述类型。为软件项目定义任务集v1、概念开发项目。v2、新应用开发项目。v3、应用增强项目。v4、应用维护项目。v5、再工程项目。为软

13、件项目定义任务集v即使在单一的项目类型中,也会有许多 因素影响任务集的选择。PRE99中描述 了很多因素:项目的规模、潜在的用户数 量、任务的关键性、应用程序的寿命、需 求的稳定性、客户/开发者进行沟通的容 易程度、可应用技术的成熟度、性能约束 、嵌入式和非嵌入式特性、项目人员配置 、再工程因素等。任务集举例v每种项目类型都可以通过线性顺序、迭 代或者演化等过程模型来实现。在某些情 况下,项目类型可以从一种形式平滑地转 换为另一种形式。例如,成功的概念开发 项目通常会演化成为新应用开发项目,而 新应用开发项目结束之后,可能又开始了 一个应用增强项目。这个进程是自然的和 可预测的,不论组织是采用

14、何种过程模型 都将会发生。下面将介绍概念开发项目的 主要软件工程任务。任务集举例v概念开发项目是在探索某些新技术是否 可行时发起的。这种技术是否可行尚不可 知,但是某个客户相信其具有潜在的利益 。概念开发项目的完成需要应用以下主要 任务:v确定概念范围。v初步的概念策划。v技术风险评估。v概念证明。v概念实现。v客户对概念的反应。主要任务的求精v上一小节中所描述的主要任务可以用来 制定项目的宏观进度表。但是,必须将宏 观进度表进行细化,以创建一个详细的项 目进度表。细化工作始于将每个主要任务 分解为一组子任务。定义任务网络v单个任务和子任务之间存在顺序上的相 互依赖关系。而且,当有多人参与软件

15、工 程项目时,多个开发活动和任务并行进行 的可能性很大。在这种情况下,必须协调 多个并发任务,以保证它们能够在后继任 务需要其工作产品之前完成。定义任务网络v任务网络,也称为活动网络,是一个项 目任务流程的图形表示。有时将任务网络 作为在自动项目进度安排工具中输入任务 序列和依赖关系的机制。最简单的任务网 络形式只描述了主要的软件工程任务。图 18-2显示了概念开发项目的任务网络示意 图。定义任务网络图18-2 概念开发项目的任务网络进度安排v软件项目的进度安排与任何其他多任务工程工 作的进度安排几乎没有差别。因此,通用的项目 进度安排工具和技术不必做太多修改就可以应用 于软件项目。v程序评估

16、及评审技术和关键路径方法就是两种 可以用于软件开发的项目进度安排方法。这两种 技术都是由早期项目计划活动中已经产生的信息 来驱动的,这些信息包括:v工作量的估算。v产品功能的分解。v适当过程模型和任务集的选择。v任务的分解。v任务之间的依赖关系可以通过任务网络来确定 。时序图v在创建软件项目进度表时,计划者将从一组任 务入手。如果使用自动工具,就可以采用任务网 络或者任务大纲的形式输入工作分解结构,然后 再为每一项任务输入工作量、工期和开始日期。 此外,还可以将某些任务分配给特定的人员。v输入信息之后,就可以产生时序图,也叫甘特 图。可以为整个项目建立一个时序图,或者,也 可以为各个项目功能或各个项目参与者分别建立 各自的时序图。图18-3给出了时序图的格式。时序图图18-3 一个时序图的例子跟踪进度v项目进度表为软件项目管理者提供了一 张进度路线图。如果制定正确,项目进度 表中应该能够确定在项目进展过程中必须 进行跟踪和控制的任务及里程碑。跟踪OO项目的进展v虽然迭代模型是最好的针对OO项目的框 架,但是,任务的并行性使得OO项目很 难跟踪。困难在于项目管理者很难为OO 项目建立

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号