《软件工程》第12章软件项目计划与管理》-精选课件(公开PPT)

上传人:zhuma****mei1 文档编号:137211103 上传时间:2020-07-06 格式:PPT 页数:85 大小:2.10MB
返回 下载 相关 举报
《软件工程》第12章软件项目计划与管理》-精选课件(公开PPT)_第1页
第1页 / 共85页
《软件工程》第12章软件项目计划与管理》-精选课件(公开PPT)_第2页
第2页 / 共85页
《软件工程》第12章软件项目计划与管理》-精选课件(公开PPT)_第3页
第3页 / 共85页
《软件工程》第12章软件项目计划与管理》-精选课件(公开PPT)_第4页
第4页 / 共85页
《软件工程》第12章软件项目计划与管理》-精选课件(公开PPT)_第5页
第5页 / 共85页
点击查看更多>>
资源描述

《《软件工程》第12章软件项目计划与管理》-精选课件(公开PPT)》由会员分享,可在线阅读,更多相关《《软件工程》第12章软件项目计划与管理》-精选课件(公开PPT)(85页珍藏版)》请在金锄头文库上搜索。

1、第十二章软件项目计划与管理,第十二章软件项目计划与管理,【本章重点】软件项目的计划与组织软件成本估算及控制方法软件工程标准与软件文档【学习目标】掌握软件项目计划与组织方法理解软件成本估算及控制方法了解软件工程标准与软件文档,12.1软件项目的计划与组织12.2软件成本估算及控制12.3软件工程标准与软件文档12.4小结12.5习题,【教学内容】,12.1软件项目的计划与组织,12.1.1软件开发的进度计划12.1.2软件开发的组织机构12.1.3软件人员配备,12.1.1软件开发的进度计划,不论从事何种技术性项目,实际情况都是在实现一个大目标之前往往必须完成数以百计的小任务(也成为作业)。这些

2、任务中有一些是处于“关键路径”之外的,其完成时间如果没有严重拖后,则不会影响整个项目的完成时间;其他任务则处于关键路径之中,如果这些“关键任务”的进度拖后,则整个项目的完成日期就会拖后。没有一个普遍适用于所有软件项目的任务集合,因此,一个有效的软件过程应该定义一组适合于所从事的项目的“任务集合”。一个任务集合包括一组软件工程工作任务、里程碑和可交付的产品。为一个项目所定义的任务集合,必须包括为最终获得高质量的软件产品而应该完成的所有工作,但是同时又不能让项目组负担不必要的工作。软件项目的进度安排是一项活动,它通过把工作量分配给特定的软件工程任务,并规定完成各项任务的起、止日期,从而将估算的工作

3、量分布于计划好的项目持续期内。,1交付日期的确定交付日期的确定对软件开发项目的进度安排至关重要。一般有以下两种考虑方式:系统最终交付使用的日期已经确定。只确定了大致的期限,最后交付使用的日期由软件开发机构根据具体情况确定。这种方式能够对软件开发任务进行细微的分析,并能够最好地利用资源和合理地分配工作量。在实际工作中,多为第一种情况。而这种情况大多是由软件开发机构以外的某些人决定,并强加给软件开发机构的项目开发者和管理者。在软件行业中,这种过于不现实的项目完成期限已司空见惯。有时决策者还认为这样的交付日期是十分合理的。但是,常识告诉我们合理与否必须由完成工作的人们来判断。,12.1.1软件开发的

4、进度计划,2进度安排的基本原则对软件工程项目的进度安排,上面已经讨论过,可以从两个不同的视角来观察。一个是基于计算机系统的最终发布日期已经确定,而且不能改变。软件开发机构在这个约束下把工作量分布在预先确定的时间框架内;另一个是,假定大致的时间界限已经讨论过,但是最终的发布日期由软件开发机构来设定。通常第一种情况发生的频率远远高于第二种情况。与软件工程的其他领域一样,有如下一些基本原则可以指导软件项目的进度安排:划分必须把项目划分成若干个可以管理的活动和任务,这些活动和任务由所采用软件过程模型定义。为了完成项目划分,对产品和过程都需要进行分解。相互依赖性必须确定划分出的各个活动或任务之间的相互依

5、赖性。某些任务必须顺序完成,而其他的任务可以并发进行。有些活动只有在其他活动产生的工作产品完成之后才能够开始,而其他的活动可以独立地进行。,12.1.1软件开发的进度计划,时间分配必须给每个任务都分配一定数量的工作单位(例如,若干人天的工作量)。此外,必须为每个任务都指定开始日期和结束日期,在确定这些日期时既要考虑各个任务之间的相互依赖性,又要考虑开发人员每日工作时间的长短(全职还是兼职)。工作量确认每个项目都是指定数量的人员参与工作。在制定进度计划时,项目管理者必须确保在任意时段中分配给任务的人员数量,不超过项目组中的人员数量。例如,为一个项目分配了3名人员(即每天可分配的工作量伟3人/天)

6、,如果在某一天中需要完成7项并发任务,每个任务需要0.5人/天的工作量,则在这种情况下所分配的工作量就大于可供分配的工作量。定义责任每个任务都应该指定具体的责任人。定义结果每个任务都应该有一个定义好的输出结果。对于软件项目而言,输出通常是一个工作产品(例如,一个模块的设计结果)或工作产品的一部分。通常把多个工作产品组合成一个“可交付产品”。定义里程碑应该为每个任务或每组任务指定一个项目里程碑。当一个或多个工作产品经过质量评审且得到确认时,就标志着一个里程碑的完成。,12.1.1软件开发的进度计划,3工作量分配估算出总的工作量以后,就需要一个进行各个阶段工作量模型。R.S.Pressman提出了

7、一种称做40/20/40的工作量分配规则,即前期工作(计划、需求分析、总体设计和详细设计阶段)和后期工作(测试阶段)各占40%,编码阶段占20%。这里强调要重视前期和后期工作。前期工作容易被忽视,主要原因是:管理人员认为不开始编码工作就算没有进行,他们不了解前期工作的重要性;技术人员往往也急于编码,认为写出代码任务就算完成了。后期工作也容易被忽视,认为编码出来就完事了,对测试工作要占这么大的工作量没有思想准备。所以要制定好进度计划,就要研究软件工作的规律,前期基础工作没做好,将会给后期工作带来很大困难,往往使工程进度一拖再拖,难以坚持,有的不得不中途夭折。,12.1.1软件开发的进度计划,这种

8、工作量分配规则只能作为一般的指导原则,每个项目的具体工作量分配,要由各个项目的特点来决定。大量的统计数据表明:用于项目计划的工作量很少超过2%3%,除非提交给开发机构的项目计划费用极大,并具有高风险。需求分析占项目工作量的10%25%,用于分析或原型开发的工作量应与项目的规模和复杂性成正比例地增长。通常有20%25%的工作量用于软件设计。用于设计评审和其后选代的工作量也必须考虑在内。由于软件设计已投入了不少的工作量,其后的编码工作一般困难很少,有15%20%的工作量就能够完成。测试和随后的纠错要占用软件开发工作量的3040%。软件的重要性决定了所需的测试工作量。如果软件的质量非常重要,且人命关

9、天,其工作量一般要占用更大的百分比。,12.1.1软件开发的进度计划,4进度安排软件项目的进度安排与其他任何多任务工作的进度安排几乎没有什么不同。所以,一般的项目安排技术和工具不需做大的修改就可用于软件项目的进度安排。Pressman在2001年出版的实践者的研究方法一书中提出:程序评价与评审技术(ProgramEvaluationandReviewTechnique,PERT)和关键路径方法(CriticalPathMethod,CPM)是两种用于软件开发项目进度安排的方法。这两种方法都由早期的项目计划活动中已经差生的信息来驱动的。这些信息包括对工作量的估算。产品功能的分解。恰当的过程模型和

10、任务集合选择。任务的分解。,12.1.1软件开发的进度计划,任务间的相互依赖性可以使用任务网络来定义。任务有时也称为项目工作分解结构(WorkBreakdownStructure,WBS),其定义可以是产品的整体,也可以是单个功能。PERT和CPM方法都为软件计划者提供定量工具,其中包括:确定关键路径,决定项目持续时间的任务链。通过使用静态模型为单个任务进行最有可能的时间估算。为特定的任务定义一个时间“窗口”计算其边界时间在软件项目进度安排中,边界时间计算很有用。例如,一个功能设计推迟,可能进一步使其他功能设计延迟。,12.1.1软件开发的进度计划,Rigge描述了一些可以从PERT或CPM网

11、络中得到的边界时间:一个任务的最早开始时间是在其所有的前置任务在最短可能的时间完成时。一个任务的最晚开始时间是不延期项目的最小完成时间。最早结束时间为最早开始时间与任务持续时间之和。最晚结束时间为最晚开始时间与任务持续时间之和。总浮动量是在任务保证进度的前提下,安排任务时所允许的富余时间的总和。这是网络关键路径在进度安排中的运用。边界时间计算导致关键路径的确定,并为管理者提供任务完成时评价进展的量化方法。PERT和CPM方法已经在个人计算机的自动工具中实现。这样的工具使用容易。,12.1.1软件开发的进度计划,5时间表和项目表当建立软件项目进度时间表时,计划者可从一组任务(工作分解结构)开始。

12、如果使用自动工具,可以用任务网络或任务大纲输入工作分解结构。然后,为一个任务输入工作量、持续时间和开始时间。另外,每一个项目都可以分配给特定的个人。作为这些输入的结果,产生一个时间表(timelinechart),也叫甘特图(Ganttchart)。可以为整个项目开发一个时间表,也可以为各个项目功能或各个项目工作者分别开发时间表。表12-1给出了时间表的格式。该图部分地描述了一个新的字处理软件产品中强调概念范围任务的软件项目进度安排。所有项目任务概念范围都列在左边任务栏中,水平条说明了每个任务的持续时间。当多个时间条在同一个时间段出现时,则蕴含着任务之间存在并发。菱形表示里程碑。一旦输入了为生

13、成时间表所需的信息,大多数的软件项目进度安排工具都会生成项目表(projectchart)(见表12-2)。项目管理者如果要跟踪项目进度,可同时使用时间表和项目表。,12.1.1软件开发的进度计划,表12-1一个时间表的例子,表12-2一个项目表的例子,12.1.1软件开发的进度计划,12.1.2软件开发的组织机构,软件项目成功的关键是具有高素质的软件开发人员。然而大多数软件产品规模都很大,以至单个软件开发人员无法在给定期限内完成开发工作,因此,必须把多名软件开发人员组织起来,使他们分工协作共同完成开发工作。如何组织参加软件项目的人员,使他们发挥最大的工作效率,对成功地完成软件项目至关重要。开

14、发组织采用什么形式,要针对软件项目的特点来决定,同时也与参与人员的素质有关。人的因素是不容忽视的参数。对于国情、体制、人员的工作习惯等都应作具体分析。了解并参考国外的做法是必要的,但无论如何不应简单地搬用。,12.1.2软件开发的组织机构,1组织原则在建立项目组织时应注意到以下原则:尽早落实责任:在软件项目工作的开始,要尽早指定专人负责。使他有权进行管理,并对任务的完成负全责。减少接口:在开发过程中,人与人之间的联系是必不可少的,存在着通信路径。一个组织的生产率是和完成任务中存在的通信路径数目是互相矛盾的。因此,要有合理的人员分工、好的组织结构、有效的通信,减少不必要的生产率的损失。责权均衡:

15、软件经理人员所负的责任不应比委任给他的权力还大。,12.1.2软件开发的组织机构,2组织结构的模式通常有三种组织结构的模式可供选择:按课题划分的模式(ProjectFormat)把软件人员按课题组成小组,小组成员自始至终参加所承担课题的各项任务。他们应负责完成软件产品的定义、设计、实现、测试、复查、文档编制、甚至包括维护在内的全过程。按职能划分的模式(FunctionalFormat)把参加开发项目的软件人员按任务的工作阶段划分成若干个专业小组。要开发的软件产品在每个专业小组完成阶段加工(即工序)以后,沿工序流水线向下传递。例如,分别建立计划组、需求分析组、设计组、实现组、系统测试组、质量保证

16、组、维护组等。各种文档资料按工序在各组之间传递。这种模式在小组之间的联系形成的接口较多,但便于软件人员熟悉小组的工作,进而变成这方面的专家。,12.1.2软件开发的组织机构,矩阵行模式(MatrixFormat)这种模式实际上是以上两种模式的复合。一方面,按工作性质,成立一些专门组,如开发组、业务组、测试组等;另一方面,每一个项目又有它的经理人员负责管理。每个软件人员属于某一个专门组,又参加某一项目的工作。例如,属于测试组的一个成员,他参加了某一项目的研制工作,因此他要接受双重领导(一是测试组,一是该软件项目的经理)。如图12-1所示。矩阵形结构组织的优点是:参加专门组的成员可在组内交流在各项目中取得的经验,这更有利于发挥专业人员的作用。而且各个项目有专人负责,有利于软件项目的完成。,12.1.2软件开发的组织机构,3程序设计小组的组织形式通常任为程序设计工作是按独立方式进行的,程序人员独立地完成任务。但这并不意味着互相之间没有联系。人员之间联系的多少和联系的方式与生产率直接相关。程序设计小组内人数少,如23人,则人员之间的联系比较简单。但在增加人员数目时,相互之间的联系复杂起来,并

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

最新文档


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

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