软件工程-实践者的研究方法讲义_第二十一章 项目进度安排

上传人:我** 文档编号:116879624 上传时间:2019-11-17 格式:PPT 页数:40 大小:403.50KB
返回 下载 相关 举报
软件工程-实践者的研究方法讲义_第二十一章 项目进度安排_第1页
第1页 / 共40页
软件工程-实践者的研究方法讲义_第二十一章 项目进度安排_第2页
第2页 / 共40页
软件工程-实践者的研究方法讲义_第二十一章 项目进度安排_第3页
第3页 / 共40页
软件工程-实践者的研究方法讲义_第二十一章 项目进度安排_第4页
第4页 / 共40页
软件工程-实践者的研究方法讲义_第二十一章 项目进度安排_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《软件工程-实践者的研究方法讲义_第二十一章 项目进度安排》由会员分享,可在线阅读,更多相关《软件工程-实践者的研究方法讲义_第二十一章 项目进度安排(40页珍藏版)》请在金锄头文库上搜索。

1、软件工程第21章项目进度安排主要内容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个月内推向市场,在进行了仔细的估算和风险分析之后,软件项目管理者得到的结论是:在现有人员条件下,需要14

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

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

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

7、任务指定开始日期和完成日期,任务的开始时期和完成日期取决于任务之间的相互依赖性以及工作方式是全职还是兼职。v工作量确认。每个项目都有预定数量的人员参与。在进行时间分配时,项目管理者必须确保在任意时段中分配的人员数量不会超过项目团队中的总人员数量。基本原则v确定责任。安排了进度计划的每个任务都应该指定特定的团队成员来负责。v明确结果。安排了进度计划的每个任务都应该有一个明确的输出结果。对于软件项目而言,输出结果通常是一个工作产品或某个工作产品的一部分。通常可将多个工作产品组合成“可交付产品”。v确定里程碑。每个任务或任务组都应该与一个项目里程碑相关联。当一个或多个工作产品经过质量评审并且得到认可

8、时,标志着一个里程碑的完成。人员与工作量之间的关系v对于小型软件开发项目,只需一个人就可以完成需求分析、设计、编码和测试。随着项目规模的增长,必然会有更多的人员参与。v许多负责软件开发工作的管理者仍然普遍坚信这样一个神话:“即使进度拖后,我们也总是可以增加更多的程序员,并在后期跟随上进度。”不幸的是,在项目后期增加人手通常会对项目产生破坏性的影响,其结果是使进度进一步拖延。后期增加的人员必须学习这一系统,而培训他们的人员正是一直在工作着的那些人,当他们进行教学时,就不能完成任何工作,从而使项目进一步拖延。人员与工作量之间的关系v除去学习系统所需的时间之外,新加入人员将会增加人员之间交流的路径数

9、量和整个项目中交流的复杂度。虽然交流对于一个成功的软件开发项目而言绝对是必不可少的,但是每增加一条新的交流路径就会增加额外的工作量,从而需要更多的时间。v多年以来的经验数据和理论分析都表明项目进度是具有弹性的。即在一定程度上可以缩短项目交付日期,也可以拖延项目交付日期。人员与工作量之间的关系vPNR曲线表明了一个软件项目中所投入的工作量与交付时间的关系。项目工作量和交付时间的函数关系曲线如图21-1所示。图中的t0表示项目交付所需的最少时间,而t0左边的曲线是非线性上升的。人员与工作量之间的关系图21-1工作量和交付时间的关系工作量分配v在第20章中讨论的各种软件项目估算技术最终都归结为对完成

10、软件开发所需工作单位的估算。软件过程中的工作量分配通常采用40-20-40法则。总体工作量的40%分配给前期的分析和设计,40%用于后期测试。v这种工作量分配方法只能作为指导原则。各个项目的特点决定了其工作量如何分配。用于项目计划的工作量很少超过2%-3%,除非提交给组织的项目计划费用极高而且具有高风险。需求分析大约占用10%-25%的工作量,用于分析或原型开发的工作量应该与项目规模和复杂度成正比地增长。通常有20%-25%的工作量用于软件设计,用于设计评审和随之而来的迭代开发也必须考虑。工作量分配v因为在软件设计时投入了相当的工作量,随后的编码工作就变得相对简单。总体工作量的15%-20%就

11、可以完成这一工作。测试和随之而来的调试工作将占用30%-40%的软件开发工作量。软件的重要性决定了所需测试工作的分量,如果软件系统是人命相关的,就应该考虑分配更高的测试工作量比例。为软件项目定义任务集v无论一个软件团队选择的是线性顺序模型、增量模型、演化模型,或它们的某种变型,过程模型都是由任务集组成的,这些任务集使得软件团队能够定义、开发和最终维护计算机软件。为软件项目定义任务集v没有能普遍适用于所有软件项目的任务集。适用于大型复杂系统的任务集可能对于小型相对简单的软件项目而言就过于复杂。因此一个有效的软件过程应该定义一组任务集来满足不同类型项目的要求。为软件项目定义任务集v在进行项目进度安

12、排时,必须将任务集分布在项目时序图上。任务集应该根据软件团队所决定的项目类型和严格程度而有所不同。尽管很难建立一个全面详尽的软件项目分类方法,但大多数软件组织遇到的项目一般属于下述类型。为软件项目定义任务集v1、概念开发项目。v2、新应用开发项目。v3、应用增强项目。v4、应用维护项目。v5、再工程项目。为软件项目定义任务集v即使在单一的项目类型中,也会有许多因素影响任务集的选择。PRE05中描述了很多因素:项目的规模、潜在的用户数量、任务的关键性、应用程序的寿命、需求的稳定性、客户开发者进行沟通的容易程度、可应用技术的成熟度、性能约束、嵌入式和非嵌入式特性、项目人员配置、再工程因素等。任务集

13、举例v每种项目类型都可以通过线性顺序、迭代或者演化等过程模型来实现。在某些情况下,项目类型可以从一种形式平滑地转换为另一种形式。例如,成功的概念开发项目通常会演化成为新应用开发项目,而新应用开发项目结束之后,可能又开始了一个应用增强项目。这个进程是自然的和可预测的,不论组织是采用何种过程模型都将会发生。下面将介绍概念开发项目的主要软件工程任务。任务集举例v概念开发项目是在探索某些新技术是否可行时发起的。这种技术是否可行尚不可知,但是某个客户相信其具有潜在的利益。概念开发项目的完成需要应用以下主要任务:v确定概念范围。v初步的概念策划。v技术风险评估。v概念证明。v概念实现。v客户对概念的反应。

14、软件工程活动求精v上一小节中所描述的主要任务可以用来制定项目的宏观进度表。但是,必须将宏观进度表进行细化,以创建一个详细的项目进度表。细化工作始于将每个主要任务分解为一组子任务。定义任务网络v单个任务和子任务之间存在顺序上的相互依赖关系。而且,当有多人参与软件工程项目时,多个开发活动和任务并行进行的可能性很大。在这种情况下,必须协调多个并发任务,以保证它们能够在后继任务需要其工作产品之前完成。定义任务网络v任务网络,也称为活动网络,是一个项目任务流程的图形表示。有时将任务网络作为在自动项目进度安排工具中输入任务序列和依赖关系的机制。最简单的任务网络形式只描述了主要的软件工程任务。图21-2显示

15、了概念开发项目的任务网络示意图。定义任务网络图21-2概念开发项目的任务网络进度安排v软件项目的进度安排与任何其他多任务工程工作的进度安排几乎没有差别。因此,通用的项目进度安排工具和技术不必做太多修改就可以应用于软件项目。v程序评估及评审技术和关键路径方法就是两种可以用于软件开发的项目进度安排方法。这两种技术都是由早期项目计划活动中已经产生的信息来驱动的,这些信息包括:v工作量的估算。v产品功能的分解。v适当过程模型和任务集的选择。v任务的分解。v任务之间的依赖关系可以通过任务网络来确定。时序图v在创建软件项目进度表时,计划者将从一组任务入手。如果使用自动工具,就可以采用任务网络或者任务大纲的

16、形式输入工作分解结构,然后再为每一项任务输入工作量、工期和开始日期。此外,还可以将某些任务分配给特定的人员。v输入信息之后,就可以产生时序图,也叫甘特图。可以为整个项目建立一个时序图,或者,也可以为各个项目功能或各个项目参与者分别建立各自的时序图。图21-3给出了时序图的格式。时序图图21-3一个时序图的例子跟踪进度v项目进度表为软件项目管理者提供了一张进度路线图。如果制定正确,项目进度表中应该能够确定在项目进展过程中必须进行跟踪和控制的任务及里程碑。跟踪OO项目的进展v虽然迭代模型是最好的针对OO项目的框架,但是,任务的并行性使得OO项目很难跟踪。困难在于项目管理者很难为OO项目建立有意义的里程碑,因为很多不同事物都是同时发生的。通常,有相应的准则来衡量主要的里程碑是否已经“完成”。挣值分析v已经讨论了一系列项目跟踪的定性方法,为项目管理者提供了项目进展情况的指标。但是,对所提供的信息的评估在某种程度上是主观的。那么当软件小组按项目进度表实施工作任务时,是否存在某种定量的技术来评估项目进展情况呢?事实上,确实存在一种用于项目进展的定量分析技术,称为挣值分析。v挣值分析是对项目进展

展开阅读全文
相关资源
相关搜索

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

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