




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SOFTWAREENGINEERING
Chapter3PlanningandManaging
theProject
项目的计划和管理SOFTWAREENGINEERING
Chapter3内容概要项目管理概述软件项目进度计划软件项目中的人员与组织结构软件项目的成本与工作量估算软件项目的风险软件项目配置管理内容概要项目管理概述3.1projectandprojectmanagement一、Whatisaproject?定义一:项目是完成某些特定指标的一次性任务。定义二:项目是一项有待完成的专门任务,是在一定的组织机构内,在限定的资源条件下,在计划的时间里,按满足一定性能、质量与数量的要求去完成的一次性任务。定义三:项目是为了创造一种独特的产品、实现一种独特的服务或达成一项独特的结果而做出的暂时性努力。项目的特征:唯一性、一次性、整体性、多目标性、寿命周期阶段性;成功的项目需要满足甚至超过项目干系人的期望。3.1projectandprojectmanage项目干系人(Stakeholder)项目干系人指的是那些在项目上有既得利益的人,项目的结果对他们而言意味着某种得失。关键项目干系人能够促成或破坏项目的成功。即使项目实现了所有的可交付成果并且达成了所有的目标,如果关键项目干系人不满意,全都白费。项目干系人(Stakeholder)项目干系人(Stakeholder)典型项目中涉及到的项目干系人类型项目干系人(Stakeholder)典型项目中涉及到的项目干一定要在项目的最初阶段会见所有的关键项目干系人,理解他们的需求和约束;项目干系人之间往往存在利益冲突;解决项目干系人冲突的时候永远要以对客户有利为出发点。一定要在项目的最初阶段会见所有的关键项目干系人,理解他们的需
二、WhatisprojectmanagementTheapplicationofknowledge,skills,tools,andtechniquestoprojectactivitiesinordertomeetorexceedstakeholderneedsandexpectations.
将知识、技能、工具、技术应用于项目活动以满足或超过预期的需求。二、WhatisprojectmanagementT两种含义-管理活动:一种有意识地按照项目管理的特点和规律,对项目进行组织管理的活动-管理学科:以项目管理活动为研究对象的一门学科,它是探索项目活动科学组织管理的理论与方法。两种含义三、什么是软件项目管理?软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对成本、人员、进度、质量、风险等进行分析和管理的活动。
软件项目管理的对象是软件工程项目,包括进度、系统规模及工作量估算、经费、组织机构和人员、风险、环境配置等,所涉及的范围覆盖了整个软件工程过程。三、什么是软件项目管理?软件项目管理是为了使软件项目能够按照为使软件项目开发获得成功,一个关键问题是必须对软件开发项目的工作范围、可能遇到的风险、需要的资源(人、硬/软件)、要实现的任务、经历的里程碑、花费工作量(成本),以及进度的安排等等做到心中有数。而软件项目管理可以提供这些信息。通常,这种管理在技术工作开始之前就应开始,而在软件从概念到实现的过程中继续进行,并且只有当软件开发工作最后结束时才终止。
为使软件项目开发获得成功,一个关键问题是必须对软件开发项目的四、管理的范围有效的项目管理集中于三个P
上People项目参与者-项目负责人-软件项目组-协调和通讯Problem-软件范围-问题分解Process-合并问题和过程-过程分解四、管理的范围有效的项目管理集中于三个P上People项目五、为何需要软件项目管理?是否需要管理是专业软件开发和业余编程之间的重要区别之一:专业的软件开发活动总是要受预算和工程进度等的制约;有多方面的参与者需要协调或管理;软件项目管理者要确保项目符合预算和进度要求,还要确保交付的软件能达到既定的目标;再好的管理也不能保证项目绝对成功,但糟糕的管理常常造成项目失败;五、为何需要软件项目管理?是否需要管理是专业软件开发和业六、软件项目中的管理活动软件管理并没有一定的标准,开发组织和被开发的软件产品决定着管理工作的内容基本上,软件项目管理工作要包含以下活动:提出书面建议项目规划和进度项目成本项目监督和评审人员选择和评价写作并陈述工作报告六、软件项目中的管理活动软件管理并没有一定的标准,开发3.2Trackingprojectprogress
跟踪项目进展
Softwareisusefulonlyifitperformsadesiredfunctionorprovidesaneededservice.软件只有在执行了人们需要的功能或提供了需要的服务时,才是有用的。3.2Trackingprojectprogress
通常你必须回答以下的问题Doyouunderstandcustomerproblemandneeds?你能理解客户的问题和需要吗?Canyoudesignasystemtosolvecustomerproblemorsatisfycustomerneeds?你能设计一个系统来解决客户问题或满足客户需要吗?Howlongwillittakeyoutodevelopthesystem?开发这样的系统需要花多长时间?Howmuchwillitcosttodevelopthesystem?开发这样的系统成本是多少?通常你必须回答以下的问题DoyouunderstandAnsweringthelasttwoquestionsrequiresawell-thought-outprojectschedule.后两个问题要在慎重考虑项目的进度之后才能回答:
ProjectScheduledescribesthesoftwaredevelopmentcycleforaparticularprojectbyenumeratingthephasesorstagesofaprojectandbreakingeachintodiscretetasksoractivitiestobedone.项目进度描述了针对特定项目的软件开发周期,列举了项目的各个阶段,把每个阶段划分成要完成的离散任务或活动.Answeringthelasttwoquestio项目进度计划(ProjectSchedule):列举了项目的各阶段把每个阶段划分成需要完成的活动描述活动间的关系估算活动所需的时间项目进度计划(ProjectSchedule):项目进度计划的出发点了解项目干系人的期望和以及客户的需要,与他们沟通直到他们满意;列出所有的可交付成果;可交付成果以量化的方式描述了项目目标的组成部分。判定必须进行哪些活动以建立这些可交付成果;项目进度计划的出发点Theschedulealsoportraystheinteractionsamongtheseactivitiesandestimatesthetimethateachtaskoractivitywilltake.进度描绘了活动之间的交互,并估算每一任务或活动需要的时间。Thescheduleisatimelinethatshowswhenactivitieswillbeginandend,andwhentherelateddevelopmentproductswillbeready.
进度是一个时间的限期,它表明活动将于何时开始何时结束、相关的开发产品何时准备就绪。TheschedulealsoportraystheProjectdeliverables项目可交付品Documents文档Demonstrationsoffunction功能演示Demonstrationsofsubsystems子系统演示Demonstrationsofaccuracy正确性演示Demonstrationsofreliability,performanceorsecurity可靠性、安全性或性能演示Projectdeliverables项目可交付品Docu一、WorkBreakdownandActivityGraphs
工作分解和活动图Milestonesandactivities活动和里程碑Activity(活动
):Apartofaprojectthattakesplaceoveraperiodoftime。项目的一个部分,发生在一段时间内。Milestone(里程碑
):completionofanactivity--aparticularpointintime。一个活动的完成。是某一特定时刻。一、WorkBreakdownandActivity描述活动的4个参数Precursor(前驱):eventorsetofeventsthatmustoccurinorderforanactivitytostart。在活动开始之前必须发生的一个或一组事件,它描述了活动开始的一组条件。Duration(持续时间):lengthoftimeneededtocompleteanactivity。完成一个活动需要的时间长度Duedate(截至日期):datebywhichanactivitymustbecompleted。活动必须完成的日期Endpoint(终点):Milestones
ordeliverables。里程碑或交付品描述活动的4个参数Precursor(前驱):event活动图:项目中的阶段、步骤和活动阶段步骤活动活动图:项目中的阶段、步骤和活动阶段步骤活动阶段、步骤和活动例阶段、步骤和活动例里程碑例里程碑例活动和估计时间例活动和估计时间例活动图例活动图例二、EstimatingCompletion
估算完成时间Slacktime(空闲时间)=availabletime–realtime
(可用时间-实际时间)=lateststarttime-earlieststarttime(最晚开始时间-最早开始时间)Realtime实际时间
:istheestimatedamountoftimerequiredfortheactivitytobecompleted.完成这个活动估计所需的时间量。
availabletime可用时间::istheamountoftimeavailableintheschedulefortheactivity’scompletion.进度中完成这个活动可用的时间量。
二、EstimatingCompletion
估算完成时间CriticalPathMethod(CPM)
关键路径法
TheCriticalPathcanshowustheminimumamountoftimeitwilltaketocompletetheproject.关键路径能告诉我们完成这个项目的最短时间Thecriticalpathistheoneforwhichtheslacktimeateverynodeiszero.关键路径中的每个结点的空闲时间都是零CriticalPathMethod(CPM)
关键路项目活动的空闲时间项目活动的空闲时间CPM条形图CPM条形图三、Toolstotrackprogress
跟踪进展的工具工作分解结构(WBS)示例三、Toolstotrackprogress
跟踪进展是以可交付成果为导向的对项目成分的分组,从而组织并定义整个项目范围。WBS不包括的工作就不在项目的范围之内。WBS是自顶向下逐层构建的,表现形式可以是图表也可以是文字大纲。最高层,是项目本身。接下来是项目的可交付成果以及进一步分解的、更小的可交付成果。然后就是创建这些成果的活动。工作分解结构(WorkBreakdownStructure)depictstheprojectasasetofdiscretepiecesofwork.把项目描绘成一组分离的工作块。是以可交付成果为导向的对项目成分的分组,从而组织并定义整个项工作分解结构
(WorkBreakdownStructure)图表形式的WBS工作分解结构
(WorkBreakdownStruct工作分解结构
(WorkBreakdownStructure)文字大纲形式的WBS1需求定义
……2设计规格
2-1软件设计
2-2硬件设计3程序模块
……工作分解结构
(WorkBreakdownStructu工作分解结构
(WorkBreakdownStructure)任务责任矩阵在WBS的基础上,把各项活动落实到相关人员。用一个矩阵表格表示分工与责任:工作分解结构
(WorkBreakdownStructu任务责任矩阵任务责任矩阵工作分解结构
(WorkBreakdownStructure)明确了项目范围确定了项目包含的活动指明活动对应的里程碑没有指明活动间的相互依赖关联无法表示项目中可以并行的部分还需要其他手段才能产生现实可行的项目进度计划工作分解结构
(WorkBreakdownStructuGantt(甘特)图是历史悠久、应用广泛的制定进度计划的工具Gantt图Gantt(甘特)图是历史悠久、应用广泛的制定进度计划的工具Gantt图举例Gantt图举例垂直的虚线表示今天;水平长条表示每个活动的进展;长条的颜色表示完成情况、持续时间或关键性;菱形图标表示何处出现延迟;三角表示活动的开始和结束。Gantt图垂直的虚线表示今天;Gantt图AnotherGanttchartAnotherGanttchart假设有一座陈旧的矩形木板房需要重新油漆。这项工作必须分3步完成:首先刮掉旧漆,然后刷上新漆,最后清除溅在窗户上的油漆。假设一共分配了15名工人去完成这项工作,然而工具却很有限:只有5把刮旧漆用的刮板,5把刷漆用的刷子,5把清除溅在窗户上的油漆用的小刮刀。首先刮掉四面墙壁上的旧漆,然后给每面墙壁都刷上新漆,最后清除溅在每个窗户上的油漆。显然这是效率最低的做法,因为总共有15名工人,然而每种工具却只有5件,这样安排工作在任何时候都有10名工人闲着没活干。Gantt图例假设有一座陈旧的矩形木板房需要重新油漆。这项工作必须分3步完首先由5名工人用刮板刮掉第1面墙上的旧漆(这时其余10名工人休息),当第1面墙刮净后,另外5名工人立即用刷子给这面墙刷新漆(与此同时拿刮板的5名工人转去刮第2面墙上的旧漆),一旦刮旧漆的工人转到第3面墙而且刷新漆的工人转到第2面墙以后,余下的5名工人立即拿起刮刀去清除溅在第1面墙窗户上的油漆,……Gantt图例首先由5名工人用刮板刮掉第1面墙上的旧漆(这时其余10名工人Gantt图例Gantt图例旧木板房刷漆工程的Gantt图Gantt图例Gantt图例旧木板房刷漆工程改进的Gantt图旧木板房刷漆工程改进的Gantt图
Gantt图能很形象地描绘任务分解情况,以及每个子任务(作业)的开始时间和结束时间,因此是进度计划和进度管理的有力工具。它具有直观简明和容易掌握、容易绘制的优点,但是Gantt图也有3个主要缺点:(1)不能显式地描绘各项作业彼此间的依赖关系;(2)进度计划的关键部分不明确,难于判定哪些部分应当是主攻和主控的对象;(3)计划中有潜力的部分及潜力的大小不明确,往往造成潜力的浪费。Gantt图Gantt图能很形象地描绘任务分解情况,以及每个子任务(工程网络是制定进度计划时另一种常用的图形工具;它能描绘任务分解情况以及每项活动/作业的开始时间和结束时间,此外,它还显式地描绘各个作业彼此间的依赖关系;工程网络图要求绘制者理解项目中哪些部分可以并行;活动的并行执行还取决于其执行者是否是一个人/单位;工程网络工程网络是制定进度计划时另一种常用的图形工具;工程网络注意区分活动与里程碑:活动(Activity):一个活动是项目的一部分,它要耗费一段时间,有开始和结束里程碑(Milestone):一个里程碑是某个活动完成的标志,它是一个特定的时间点用箭头表示活动/作业;用圆圈表示里程碑/事件。工程网络注意区分活动与里程碑:工程网络活动的四个参数:Precursor(前驱):eventorsetofeventsthatmustoccurinorderforanactivitytostart。在活动开始之前必须发生的一个或一组事件,它描述了活动开始的一组条件。Duration(持续时间):lengthoftimeneededtocompleteanactivity。完成一个活动需要的时间长度Duedate(截至日期):datebywhichanactivitymustbecompleted。活动必须完成的日期Endpoint(终点):Milestones
ordeliverables。里程碑或交付品工程网络活动的四个参数:工程网络工程网络工程网络首先,把每个作业估计需要使用的时间写在表示该项作业的箭头上方其次,为每个事件计算下述两个统计数字:最早时刻EET和最迟时刻LET估算工程进度首先,把每个作业估计需要使用的时间写在表示该项作业的箭头上方事件的最早时刻(EET)是该事件可以发生的最早时间:第一个事件的最早时刻定义为零.其他事件的最早时刻在工程网络上从左至右按事件发生顺序计算:(1)考虑进入该事件的所有作业,(2)对于其中每个作业都计算它的持续时间与其起始事件的EET之和,(3)选取上述和数中的最大值作为该事件的最早时刻EET
估算工程进度事件的最早时刻(EET)是该事件可以发生的最早时间:估算工程事件的最迟时刻(LET)是在不影响工程竣工时间的前提下,该事件最晚可以发生的时间:最后一个事件(工程结束)的最迟时刻就是它的最早时刻,其他事件的最迟时刻在工程网络上从右至左按逆作业流的方向计算(1)考虑离开该事件的所有作业,(2)从其中每个作业的结束事件的LET中减去该作业的持续时间,(3)选取上述差数中的最小值作为该事件的最迟时刻LET估算工程进度事件的最迟时刻(LET)是在不影响工程竣工时间的前提下,该事旧木板房刷漆工程的完整的工程网络旧木板房刷漆工程的完整的工程网络关键路径:由最早时刻和最迟时刻相同的事件组成的路径。在工程网络图中关键路径用粗线箭头表示。关键路径上的事件(关键事件)必须准时发生,组成关键路径的作业(关键作业)的实际持续时间不能超过估计的持续时间,否则工程就不能准时结束。使用关键路径法可以得出完成项目所需的最少时间。关键路径(CriticalPath)关键路径:由最早时刻和最迟时刻相同的事件组成的路径。在工程网关键路径是一个工程网络图中最长(指持续时间最长,而非经过的活动最多)的路径。关键路径可能有多条。关键路径:其上的每个活动对应的机动时间(SlackTime)都为零。关键路径(CriticalPath)关键路径是一个工程网络图中最长(指持续时间最长,而非经过的活一个作业可以有的全部机动时间等于它的结束事件的最迟时刻减去它的开始事件的最早时刻,再减去这个作业的持续时间:机动(空闲)时间=(LET)结束-(EET)开始-持续时间或者表述为:机动(空闲)时间=可用时间-持续时间机动(空闲)时间=作业最晚开始时间-最早开始时间机动(空闲)时间=作业最晚结束时间-最早结束时间机动(空闲)时间(SlackTime)一个作业可以有的全部机动时间等于它的结束事件的最迟时刻减去它课堂练习P133-Q2课堂练习P133-Q2Wehaveonlyanestimateddurationforanactivity.各活动所需时间通常仅仅是一个估计值;CPMorPERT(ProgramEvaluationandReviewTechnique)arevaluableonlyforstableprojectsinwhichseveralactivitiestakeplaceconcurrently.关键路径或程序评估和评审技术只对稳定的、其中有几个活动同时发生的项目有价值。Iftheprojectrequiresredesignorrework,theactivitygraphandcriticalpatharelikelytochangeduringdevelopment.如果项目需要重新设计或返工,则开发中的活动图和关键路径都可能改变。几点说明Wehaveonlyanestimateddura软件工程项目虽然比这个简单例子复杂得多,但是计划和管理的基本方法仍然是自顶向下分解,也就是把项目分解为若干个阶段,每个阶段再分解成许多更小的任务,每个任务又可进一步分解为若干个步骤等等。这些阶段、任务和步骤之间有复杂的依赖关系,因此,工程网络和Gantt图同样是安排进度和管理工程进展情况的强有力的工具。软件工程项目虽然比这个简单例子复杂得多,但是计划和管理的基本四、项目的进度管理Activitydefinition(WBSanddictionary)确定项目的工作任务Activitysequencing确定活动之间的依赖关系,并形成文档Activitydurationestimating根据所需的资源、具体的条件,估计各项活动的持续时间Scheduledevelopment分析活动顺序、活动历时和资源需求,以编制项目进度计划Schedulecontrol控制项目进度计划的变化四、项目的进度管理Activitydefinition(3.2Projectpersonnel
项目人员一、Staffroles人员职责
requirementsanalysis
需求分析systemdesign系统设计programdesign程序设计programimplementation程序实现testing测试training培训maintenance维
护qualityassurance质量保证3.2Projectpersonnel
项目人员一、St二、人员的差别abilitytoperformwork开展工作的能力interestinwork对工作的兴趣experiencewith经验方面similarapplications参与类似应用程序similartoolsorlanguages使用类似工具和语言similartechniques使用类似技术similardevelopmentenvironments使用类似开发环境Training培训abilitytocommunicatewithothers和他人的交流能力abilitytoshareresponsibility承担责任能力managementskills管理技能二、人员的差别abilitytoperformwork三、Communicationpaths交流渠道三、Communicationpaths交流渠道软件项目中的沟通成本沟通与交流需要耗费时间:--会议开销不当的沟通与交流方式造成误解,从而把错误引入到开发工作中;随着开发小组规模扩大,沟通开销激增,个人生产率将下降,以致开发时间与从事开发工作的人数并不成反比关系。软件工程的Brooks定律:--向已经延期的软件项目中添加人手只会使进度更加落后。软件项目中的沟通成本沟通与交流需要耗费时间:软件项目中的沟通成本我们不可能用“人力换时间”的办法无限缩短一个软件的开发时间。Boehm根据经验指出,软件项目的开发时间最多可以减少到正常开发时间的75%。如果要求一个软件系统的开发时间过短,则开发成功的概率几乎为零。软件项目中的沟通成本我们不可能用“人力换时间”的办法无限缩短四、Workstyles工作方式Extroverts外向Introverts内向Intuitives直觉感性的Rationals理性的telltheirthoughts告诉别人他们的想法askforsuggestions征求他人意见basedecisionsonfeelings根据感觉做决定basedecisionsonfacts,options根据事实、考虑所有选择四、Workstyles工作方式ExtrovertsteWorkstyles工作方式Workstyles工作方式Rationalextroverts理性的外向者Tendtoasserttheirideasandnotlet“gutfeeling”affecttheirdecisionmaking.theytelltheircolleagueswhattheywantthemtoknow,buttheyrarelyaskformoreinformationbeforedoingso.Whenreason,theyrelyonlogic,notemotion.倾向于宣扬他们的主意,不让”内心直觉”影响他们的决策。他们告诉同事希望同事们知道什么,但他们在这样做之前很少寻求更多的信息。当推理时,依靠逻辑而不是感觉。擅长于快速作出好的决策。Therationalintroverts理性的内向者Tendtoasserttheirideasandnotlet“gutfeeling”affecttheirdecisionmaking.theytelltheircolleagueswhattheywantthemtoknow,buttheyrarelyaskformoreinformationbeforedoingso.Whenreason,theyrelyonlogic,notemotion.也避免作出感性的决策,但他们愿意花时间来考虑所有可能的活动。他们是信息收集者,在确信掌握了所有信息之前,不会进行决策。全心投入工作的好员工,并在意该评价。Rationalextroverts理性的外向者直觉的外向者Basemanydecisionsonemotionalreaction,tendingtowanttotellothersaboutthem,ratherthanaskingforinput.Theyusetheirintuitiontobecreative,andtheyoftensuggestunusualapproachestosolvingaproblem.做决策时根据感性的反应,倾向于告诉他人这些决策,而不是寻求输入。他们用直觉创造性地工作,在解决问题是他们通常会提出一种不寻常的方法。擅长在职员有大量交互的环境中工作。直觉的内向者Iscreative,too,butappliescreativityonlyafterhavinggatheredsufficientinformationonwhichtobaseadecision.也富有创造性,但他们只有在收集了决策所依据的足够信息之后才应用他们的创造性。他们处理问题时,比较敏感并会考虑依赖关系和情感因素。直觉的外向者五、Projectorganization
项目组织Dependsonbackgroundsandworkstylesofteammembers成员的背景和工作方式numberofpeopleonteam成员数managementstylesofcustomersanddevelopers顾客和开发人员的管理方式ExamplesChiefprogrammerteam核心程序员组Egolessapproach无私编程五、Projectorganization
项目组织Dep为了成功地完成软件开发工作,项目组成员必须以一种有意义且有效的方式彼此交互和通信。如何组织项目组是一个重要的管理问题,管理者应该合理地组织项目组,使项目组有较高生产率,能够按预定的进度计划完成所承担的工作。经验表明,项目组组织得越好,其生产率越高,而且产品质量也越好。为了成功地完成软件开发工作,项目组成员必须以一种有意义且有效ChiefProgrammerTeam
核心程序员组Onachiefprogrammerteam,onepersonistotallyresponsibleforasystem’sdesignanddevelopment.核心程序员组由一个人总体负责系统的设计和开发Chiefprogrammer主程序员Assistantchiefprogrammer助理程序员Seniorprogrammers高级程序员Juniorprogrammers初级程序员Librarian库管理员(编程秘书)Administration管理机构Testteam测试小组ChiefProgrammerTeam
核心程序员组On主程序员:既是成功的管理员,又是高度熟练的程序员,要负责体系结构和其他关键复杂部分的设计,协调其他成员,复查其他成员的工作,对每行代码负责。后备程序员:主程序员的“替补”。要和主程序员一样能干。编程秘书:负责完成与项目有关的全部事务性工作,例如,维护项目资料库、文档,甚至源码的编译、链接、运行等。主程序员:既是成功的管理员,又是高度熟练的程序员,要负责体系核心程序员小组存在的问题主程序员很难找到:成功的管理员、高度熟练的程序员的结合体;后备(助理)程序员更难找到:高能力、高素质却要甘居“全场替补板凳队员”;编程秘书也不容易找到;走查与审查工作的危险:--主程序员必然要出现在走查和审查工作中,同时其又是各程序员工作的绩效评价人。技术负责人与管理负责人的双重身份形成的权力垄断往往会对程序员造成影响。核心程序员小组存在的问题主程序员很难找到:成功的管理员、高度主程序员小组的变化形式技术组长行政组长程序员程序员程序员技术管理非技术管理现代程序员组主程序员小组的变化形式技术组长行政组长程序员程序员程序员技术大型项目的技术管理组织结构项目领导人小组领导人小组领导人小组领导人程序员程序员程序员程序员程序员程序员程序员程序员大型项目的技术管理组织结构项目领导人小组领导人小组领导人小组项目领导人小组领导人小组领导人小组领导人程序员程序员程序员程序员程序员程序员程序员程序员大型项目的技术管理组织结构包含分散决策的组织方式项目领导人小组领导人小组领导人小组领导人程序员程序员程序员程Egolessapproach无私编程
Insteadofasinglepointofresponsibility,anegolessapproachholdseveryoneequallyresponsible.不是把责任放在单个人身上,而是让每个人平等地担负责任。Egolessapproach无私编程Insteado怎样选择合适的组织结构
Howdoesprojectteamstructureaffecttheresultingproductandhowdoprojectteamchoosethemostappropriateorganizationinagivensituation?小组结构怎样影响最终产品?在给定的情况下怎样选择合适的结构?Projectswithahighdegreeofcertainty,stability,uniformity,andrepetitioncanbeaccomplishedmoreeffectivelybyahierarchicalorganizationalstructuresuchasthechiefprogrammerteam.在有着高确定性、稳定性、均匀性和重复性的项目中,核心程序员组这样的等级组织结构会更有效。Whenthereismuchuncertaintyinvolvedinaproject,amoredemocraticapproachmaybebetter.当项目涉及大量的不确定性时,更为民主的方法可能更好。怎样选择合适的组织结构Howdoesprojectt软件工程-第3章课件3.3工作量和成本估计一、影响估计的因素工作量和成本是紧密相关的,正确地估计成本是成功的项目管理的一个重要组成部分。正确地估算成本比较困难,不能正确估计的原因有:1、Frequentrequestsforchangesbyusers用户频繁的变动请求2、Overlookedtasks忽视了任务的艰巨性3、Users’lackofunderstandingoftheirownrequirements用户对自己的需求缺乏了解4、Insufficientanalysiswhendevelopingasestimate进行估计时没有充分的分析5、Lackofcoordinationofsystemsdevelopment,technicalservices,operations,dataadministration,andotherfunctionsduringdevelopment系统开发、技术服务、操作、数据管理和开发中其他职责之间缺乏协调6、Lackofanadequatemethodorguidelinesforestimating缺乏一种适当的估计方法或指南3.3工作量和成本估计一、影响估计的因素
Severalaspectsoftheprojectwerenotedaskeyinfluencesontheestimate(项目中对估计有重要影响的几个方面):1、Complexityoftheproposedapplicationsystem应用系统的复杂性2、Requiredintegrationwithexistingsystem要求与当前系统的集成3、Complexityoftheprogramsinthesystem系统中程序的复杂性4、Sizeofthesystemexpressedasnumberoffunctionsorprograms.系统的规模(表现为功能或程序数)5、Capabilitiesoftheprojectteammembers项目小组成员的能力6、Projectteam’sexperiencewiththeapplication项目小组对应用程序的经验7、Anticipatedfrequencyonextentofpotentialchangesinuserrequirements预期可能改动用户需求的频度或范围8、Projectteam’sexperiencewiththeprogramminglanguage项目小组对编程语言的经验9、Databasemanagementsystem数据库管理系统10、Numberofprojectteammembers项目小组成员人数11、Extentofprogrammingordocumentationstandards编程或文档标准的范围12、Availabilityoftoolssuchasapplicationgenerators应用程序生成器等工具的使用13、Team’sexperiencewiththehardware开发小组对硬件的经验Severalaspectsoftheproj软件成本注意:与其他管理活动一样,软件成本估算随着项目的进行需要定期修正。软件成本包括:--包括维护在内的硬件和软件费用;--工作成本(支付给软件开发人员的费用);--应用的方法、过程所形成的一部分成本;--使用的工具;--差旅费;软件成本注意:与其他管理活动一样,软件成本估算随着项目的进行软件成本计算软件成本还要考虑使开发机构运作的经常性管理费用:-办公场所、水、电、供热等费用;-会计、文秘、硬件技师等辅助人员的费用;-网络和通信费用;-资料室、娱乐设施等共用设施的费用;-退休金、医疗保险等社会保障和员工福利费用;对于多数项目,工作量是软件成本最大的一块,并且也是最不确定的一块。软件成本计算软件成本还要考虑使开发机构运作的经常性管理费用:软件工作量估算软件工作量估算是预测构造一个软件系统所需的总工作量的过程。工作量估算要贯穿整个软件开发过程:-需要用初步估算来确定一个项目的可行性;-需要详细估算来协助制定项目计划;-要将每个任务的实际工作量与计划工作量反复做对比,以便项目经理在必要的时候重新分配项目资源;工作量估算从软件规模的估算入手。软件工作量估算软件工作量估算是预测构造一个软件系统所需的总工代码行:这种方法依据以往开发类似产品的经验和历史数据,估计实现一个功能所需要的源程序行数。
功能点:看交付的软件的总功能有多少。依赖对软件信息域特性和软件复杂性的评估结果估算软件规模。功能点(FP)和对象点是这种估算中常用的指标。
软件规模估算的两种对象代码行:这种方法依据以往开发类似产品的经验和历史数据,估计实生产率=KLOC/PM(人月)成本=元/LOC质量=错误数/KLOC文档=文档页数/KLOC衡量软件规模的代码行指标生产率=KLOC/PM(人月)衡量软件规模的代码行指标代码行方法存在的问题严重依赖项目所使用的开发语言。对使用不同语言开发相同项目的情况,单独比较代码行数值没有意义。不同开发组织可以制定不同的代码行计数标准,所以依据代码行指标在组织间类比生产率一般是不可能的。代码行方法主要度量编码阶段的工作量,源程序仅是软件配置的一个成分,用它的规模代表整个软件的规模似乎不太合理。若采用的编码方法和语言在表达和解决问题方面效率高,用这种方法计算的生产率反而会低。代码行方法存在的问题严重依赖项目所使用的开发语言。对使用不同用功能点衡量的软件规模功能点用系统的功能数量来衡量其规模。对系统中以下几类部分计数(信息域特性):输入项数(Inp);输出项数(Out);查询数(Inq);主文件数(Maf);外部接口数(Inf);用功能点衡量的软件规模功能点用系统的功能数量来衡量其规模。输入项数用户向软件输入的项数。这些输入给软件提供面向应用的数据。输入不同于查询,后者单独计数,不计入输入项数中。输出项数软件向用户输出的项数。它们向用户提供面向应用的信息,例如,报表和出错信息等。报表内的数据项不单独计数。用功能点衡量的软件规模查询数查询即是一次联机输入,它导致软件以联机输出方式产生某种即时响应,即一对“请求-响应”。主文件数逻辑主文件(即数据的一个逻辑组合,它可能是大型数据库的一部分或是一个独立的文件)的数目。外部接口数机器可读的全部接口(例如,磁盘或磁带上的数据文件)的数量,用这些接口把信息传送给另一个系统。输入项数用户向软件输入的项数。这些输入给软件提供面向应用的数生产率=FP/PM(人月)成本=元/FP质量=错误数/FP文档=文档页数/FP衡量软件规模的功能点指标生产率=FP/PM(人月)衡量软件规模的功能点指标二、Effortestimationtechniques工作量估计技术1.Expertjudgment专家判断2.Algorithmicmethods
算法方法3.Machine-LearningMethod机器学习方法二、EffortestimationtechniquesExpertjudgment专家判断
Analogy类推DelphitechniqueDelphi技术WolvertonmodelWolverton模型Expertjudgment专家判断
AnalogyExpertjudgment专家判断
Analogy(类推):Usethesimilarityasthebasisforestimates.用相似性作为估计的基础。Theanalogyprocesscanbeformalizedbyaskingseveralexpertstomakethreepredictions:apessimisticone(x)、anoptimisticone(y),andamostlikelyguess(z).Thenourestimateisthemeanofthebetaprobabilitydistributiondeterminedbythesenumbers(x+4y+z)/6.byusingthistechnique,weproduceanestimatethat“normalizes”theindividualestimates.通过请专家来进行三种形式的预测,可以将类比过程形式化:一个悲观的预测(x)、一个乐观的预测(y)和最可能的预测(z)。然后,估计由这些数决定的beta概率分布的平均值:(x+4y+z)/6。用这种技术可以得到对个人估计“标准化”的一个估计。Expertjudgment专家判断
Analogy(类推使用生产率的历史数据(KLOC/PM、FP/PM),得出估算的工作量;这种方法使用的历史数据应注意更新调整,以适应当前时期与当前的工作环境。使用生产率的历史数据(KLOC/PM、FP/PM),得出估算成本估计的例子e=(x+4y+z)/6成本估计的例子e=(x+4y+z)/6Expertjudgment专家判断
DelphitechniqueDelphi技术:
Expertsareaskedtomakeindividualpredictionssecretly,basedontheirexpertiseandusingwhateverprocesstheychoose.Then,theaverageestimateiscalculatedandpresentedtogroup.专家被要求根据专业技能、使用自己选择的方法,秘密地进行个人预测。然后计算平均估计,将结果提交给专家小组。Expertjudgment专家判断
Delphitec邀请N位专家,在小组会议上讨论项目估算;每位专家得出一个期望值Si,并无记名提交;会议组织者计算S=SUM(Si)/N;每位专家根据S,可以考虑修改自己的Si,并再次无记名提交;重复以上两步骤,直到各位专家不愿再修改自己的Si。邀请N位专家,在小组会议上讨论项目估算;成本估计的例子成本估计的例子
Wolverton模型
Wolverton模型
Expertjudgmentsuffersnotonlyfromvariabilityandsubjectivity,butalsofromdependenceoncurrentdata.Thedataonwhichanexpertjudgmentmodelisbasedmustreflectcurrentpractices,soitmustbeupdatedoften.专家的判断不仅受到变化和主观性的影响,还受到当前数据相关性的影响。专家判断模型根据的数据必须反映当前的实际情况,因此必须经常更新它。
Algorithmicmethods(算法方法)
E=(a+bS^c)m(X)-a、b、c是由经验导出的常数-E是以人月为单位的工作量-S
是估算变量
-x
是成本因素向量-m
是基于成本因素的调整因子Algorithmicmethods(算法方法)
算法方法大多是经验估算模型,利用从过去的软件项目收集得到的数据进行统计分析而导出的。软件规模通常是估算模型的主要因素,由它得出初步估计后,再根据许多次要调节因素进行调整。估算模型种类:静态单变量模型动态多变量模型(考虑了时间的因素)算法方法大多是经验估算模型,利用从过去的软件项目收集得到的数一些静态单变量的面向LOC的估算模型E=5.2*(KLOC)^0.91 Walston-Felix模型E=5.5+0.73*(KLOC)^1.16 Bailey-Basili模型E=3.2*(KLOC)^1.05 Boehm模型E=5.288*(KLOC)^1.047 Doty模型一些静态单变量的面向LOC的估算模型软件工程-第3章课件Walston和Felix模型的生产率因素1.顾客接口复杂性2.用户参与需求定义3.顾客导致的程序设计变动4.顾客对应用领域的经验
5.总的职员经验
6.开发程序员中参与功能性说明的设计的人员百分比
7.以前对操作计算机的经验
8.以前对编程语言的经验
9.以前对类似规模和复杂性的应用程序的经验
10.平均职员规模与项目持续时间的比率(人/月)
11.并行开发中的硬件
12.在专订请求下可以访问开发计算机
13.不可以访问开发计算机Walston和Felix模型的生产率因素14.对计算机和至少20%的程序和数据进行安全分类的环境
15.使用结构化编程
16.使用设计评审和代码评审
17.使用自顶向下开发
18.使用核心程序员组
19.总的代码复杂度
20.应用程序处理的复杂度
21.程序流的复杂性
22.对项目设计的总约束
23.对程序主存的设计约束
24.对程序计时的设计约束
25.处理实时或交互式操作的代码或在严格的时间约束下执行的代码
26.交付代码的百分比
27.分类为非数学应用和输入/输出格式程序的代码
28.数据库中每1000行代码中类的数量
29.每1000行代码交付的文档的页数14.对计算机和至少20%的程序和数据进行安全分类的Eachofthe29factorswasweightedby1,ifthefactorincreasesproductivity,0ifithasnoeffectonproductivity,and-1ifitdecreaseproductivity.Aweightedsumofthe29factorswasthenusedtogenerateaneffortestimatefromthebasicequation.对这29个因素中的每个因素,如果提高了生产率则其权重为1,如果对生产率没有影响则为0,如果降低了生产率则为-1。然后根据基本方程式用这29个因素的加权和来产生一个工作量估计。Eachofthe29factorswaswei软件工程-第3章课件Bailey-Basrli工作量修正总的方法思路(METH)
1.树状图
2.自顶向下设计
3.正式的文档
4.核心程序员组
5.正式的培训
6.正式的测试计划
7.设计形式化
8.代码阅读
9.单元开发文件夹Bailey-Basrli工作量修正总的方法思路(METBailey-Basrli工作量修正
累计的复杂性(CPLX)
1.顾客接口复杂性
2.应用程序复杂性
3.程序流复杂性
4.内部通信复杂性
5.数据库复杂性
6.外部通信复杂性
7.顾客引发的程序设计变动Bailey-Basrli工作量修正累计的复杂性(CPLBailey-Basrli工作量修正
累积的经验(EXP)
1.程序员水平
2.程序员对机器的经验
3.程序员对语言的经验
4.程序员对应用程序的经验
5.小组经验
Bailey-Basrli工作量修正Bailey-Basrli工作量修正
Foreachentryinthetable,theprojectisscoredfrom0(notpresent)to5(veryimportant),dependingonthejudgmentoftheprojectmanager.Thus,thetotalscoreforMETHcanbeashighas45,forCPLXashighas35,andforEXPashighas25.Theirmodeldescribesaprocedure,baseonmultilinearleast-squareregression,forusingthesescorestofurthermodifytheeffortestimate.对表中的每一项,根据项目经理的判断,项目评分从0(不存在)到5(非常重要)。所以METH最高可到45,CPLX最高可到35,EXP最高可达25。该模型根据多线性最小二乘回归描述了一个过程,利用这些评分进一步修正工作量估计。(详见文献Ameta-modelforsoftwaredevelopmentresourceexpenditure)Bailey-Basrli工作量修正面向FP的一些静态单变量估算模型E=-13.39+0.0545FP Albrecht和GaffneyE=60.62*7.728*10^(-8)*FP^3 KemererE=585.7+5.12FPMaston、Barnett和Mellichamp面向FP的一些静态单变量估算模型功能点的复杂度权重由各项的计数同与其对应的复杂度权重计算加权和,此为未经调整的功能点计数(UFP)。功能点的复杂度权重由各项的计数同与其对应的复杂度权重计算加权技术复杂度因子(TCF)的组成F1-可靠的备份和恢复F2-数据通信F3-分布式处理功能F4-性能F5-大量使用的配置F6-联机数据输入F7-操作简便性F8-在线升级F9-复杂界面F10-复杂数据处理F11-重复使用性F12-安装简便性F13-多工作点安装F14-易于修改技术复杂度因子(TCF)的组成F1-可靠的备份和恢复F8-在功能点的计算前面根据计数和复杂度权重得出的加权和是未经调整的功能点计数(UFC);TCF的每一部分取值为0到5,0表示该部分对系统没有影响,5表示该部分对系统很重要;TCF=0.65+0.01(SUM(Fi));TCF的取值在0.65到1.35之间;最后,功能点计算公式为:FP=UFC×TCF功能点的计算前面根据计数和复杂度权重得出的加权和是未经调整的此种模型把工作量看作是软件规模和开发时间这两个变量的函数。例如Putnam等人提出的软件方程式:其中:E是以人月或人年为单位的工作量;t是以月或年为单位的项目持续时间;B是特殊技术因子,随着对集成、测试、质量保证、文档及管理技能的需求的增长而缓慢增加。对较小程序B=0.16,对较大程序B=0.39;动态多变量模型此种模型把工作量看作是软件规模和开发时间这两个变量的函数。动P是生产率参数,它反映了下述因素对工作量的影响:总体过程成熟度及管理水平;使用良好的软件工程实践的程度;使用的程序设计语言的级别;软件环境的状态;软件项目组的技术及经验;应用系统的复杂程度。P是生产率参数,它反映了下述因素对工作量的影响:工作量估计模型(ConstructiveCostModel)软件估算模型的层次体系模型1:基本COCOMO模型,将软件开发工作量及成本作为程序规模的函数进行计算,程序规模用已交付的代码行来表示。模型2:中级COCOMO模型,将软件开发工作量及成本作为程序规模及一组“成本驱动因子”的函数来进行计算,其中“成本驱动因子”包括对产品、硬件、人员、及项目属性的主管评估。模型3:高级COCOMO模型,包含了中级模型的所有特性,并结合了成本驱动因子对软件工程过程中每一个步骤(分析、设计等)的影响的评估。COCOMO模型工作量估计模型(Con基本COCOMO模型(Boehm1981)基本COCOMO模型是静态、单变量模型E=a(kLOC)bD=cEd其中E表示工作量,单位是人月(PM)D表示开发时间,单位是月kLOC是项目的代码行估计值,单位是千行代码a,b,c,d是常数,取值如下:基本COCOMO模型(Boehm1981)基本COCOMO中间COCOMO模型E=a*(LOC)b*
EAF(EAF:EffortAdjustmentFactor)工作量调节因子EAF与软件产品属性、计算机属性、人员属性、项目属性有关软件产品属性:软件可靠性、软件复杂性、数据库规模计算机属性:程序执行时间、程序占用内存大小、软件开发环境的变化、软件开发环境的响应速度人员属性:分析员能力、程序员能力、有关应用领域的经验、开发环境的经验、程序设计语言的经验项目属性:软件开发方法的能力(也称现代程序设计技术、现代程序设计实践)、软件工具的质量和数量、软件开发的进度要求EAF=∏FiFi(i=1..15)的值分为:很低、低、正常、高、很高、极高6级,正常取1,Boehm推荐取值从0.70-1.66中间COCOMO模型E=a*(LOC)b*EAF(E详细COCOMO模型详细COCOMO模型的名义工作量公式和进度公式与中间COCOMO模型相同,但调节因子(也称工作量因素)分级表则分层、分阶段给出。针对每一个影响因素,按模块层、子系统层、系统层,有三张工作量分级表,每一张表中工作量因素又按开发各个不同阶段给出。详细COCOMO模型详细COCOMO模型的名义工作量公式和进COCOMOⅡ模型COCOMOⅡ给出了3个层次的软件开发工作量估算模型:应用系统组成模型(应用程序分解阶段)、早期设计模型(早期设计阶段)、后体系结构模型(后体系结构阶段)。应用程序分解模型:用于估算构件原形的工作量,使用应用点技术早期设计模型:适用于体系结构设计阶段,使用功能点技术后体系结构模型:适用于完成体系结构设计后的软件开发阶段,使用功能点或代码行技术新增加了4个调节因子:要求的可重用性、需要的文档量、人员连续性和多地点开发。略去了2个调节因子:开发环境的响应速度(也译计算机切换时间)和软件开发方法的能力(也译现代程序设计技术、现代程序设计实践)COCOMOⅡ采用了更加精细得多的b值分级模型,使用5个分级因素W1-W5,每个因素6个取值0-5,通过b=1.01+0.01*∑Wi来计算,因此取1.01-1.26COCOMOⅡ模型COCOMOⅡ给出了3个层次的软件开/research/COCOMOII/index.htmlCOCOMO模型参考网址/researchMachine-LearningMethod
机器学习方法Neuralnetwork(神经网络)Regressiontree(回归树)Treeinduction(树归纳)Decisiontree(决策树)CBR(Case-BasedReasoning,基于实例的推理)Machine-LearningMethod
机器学习方尽可能采用分解问题的策略来进行估算:自顶向下:从系统级开始自底向上:从组件级开始不要只依赖一种估算方法,应使用多种方法进行估算并做交叉检验。估计方法与数据收集要一致。估算软件工作量的几个基本原则尽可能采用分解问题的策略来进行估算:估算软件工作量的几个基本Evaluatingmodels
评价模型
goal:shouldbe.75orgreaterforx=.25Meanmagnitudeofrelativeerror(MMRE)相对误差平均值Pred(x/100):percentageofprojectsforwhichestimateiswithinx%oftheactual估计在实际值x%范围内的项目的百分比absolutevalueofmeanof[(actual-estimate)/actual]goal:shouldbe.25orlessEvaluatingmodels
评价模型goal:软件工程-第3章课件货币的时间价值i—年利率;P—现在存入的钱数;n—年数;n年后可以获得的钱数为F=P(1+i)n;反之,如果n年后能收入F元,这些钱的现在价值为P=F/(1+i)n三、成本/效益分析的方法货币的时间价值三、成本/效益分析的方法软件工程-第3章课件投资回收期是使累计的经济效益等于最初投资所需要的时间。显然投资回收期越短,就能越快地获得利润,因此这项工程也就越值得投资。纯收入是指在整个生存周期之内系统的累计经济效益(折合成现在值)与投资之差。成本/效益分析的方法投资回收期成本/效益分析的方法投资回收率把资金存入银行或贷给其他企业能够获得利息,通常用年利率衡量利息多少。类似的也可
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 玫瑰花购销合同
- 工业设备维修保养服务合同
- 出售房屋委托代理合同书
- 固体废物处理处置服务合同
- 水电接入合同协议书
- 承包建造船舶合同
- 电子政务系统合同
- 内蒙古北方职业技术学院《美容外科学医学美容》2023-2024学年第二学期期末试卷
- 辽宁税务高等专科学校《电气传动自动控制系统综合课程设计》2023-2024学年第二学期期末试卷
- 大连装备制造职业技术学院《智慧教学与微课制作》2023-2024学年第二学期期末试卷
- 心肺复苏课件
- 2024-2030年“一带一路”背景下中国铁块矿产业未来发展趋势及投资策略分析报告
- 钢包热修工安全技术操作规程(3篇)
- 风力发电厂土建工程施工组织设计
- 2024年云南省公务员录用考试《行测》真题卷及答案解析
- 成人缺氧缺血性脑病护理
- 期末提优测试卷(试题)-2024-2025学年四年级上册数学青岛版
- 常用数学公式大全
- 风机基础监理实施细则
- GB/T 24503-2024矿用圆环链驱动链轮
- 人教版(2024)英语七年级上册单词表
评论
0/150
提交评论