软件工程原理与实践(硕士)课件 3 软件项目规划_第1页
软件工程原理与实践(硕士)课件 3 软件项目规划_第2页
软件工程原理与实践(硕士)课件 3 软件项目规划_第3页
软件工程原理与实践(硕士)课件 3 软件项目规划_第4页
软件工程原理与实践(硕士)课件 3 软件项目规划_第5页
已阅读5页,还剩100页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

高级软件工程

SoftwareEngineering软件项目规划从华罗庚的喝茶故事开始……目标:华罗庚想喝茶环境:没有开水、水壶要洗、茶壶茶杯要洗、火生了、茶叶也有了问:怎么才能最快地喝到茶?最快是多少时间能喝到茶?2软件项目规划的重要性体现了对客户需求的理解为项目管理和运作提供可行的计划是有条不紊地开展软件项目活动的基础跟踪、监督和评审计划执行情况的依据是项目相关个人和组织的明确承诺3常见错误过于乐观的计划在压力下放弃计划在项目过程中不细化计划、不及时更新计划,不监控计划的执行遗漏必要的任务缺乏足够的风险管理缺乏质量计划项目估算时“毛估估”前期活动不合要求“我们没有时间做设计”,或为了“加快进度”而鲁莽编码402-软件估算01-项目计划概述03-进度安排504-人员分配05-项目预算06-项目跟踪与监控项目生命周期6项目规划定义WBS定义活动定义资源活动排序活动工期估算质量计划沟通计划风险计划配置计划采购计划支持计划需求基线成本估算进度安排人员分配项目计划项目预算7项目规划定义WBS定义活动定义资源活动排序活动工期估算质量计划沟通计划风险计划配置计划采购计划支持计划需求基线成本估算进度安排人员分配项目计划项目预算定义软件过程软件估算8项目计划的生命周期项目计划计划评审计划基线计划变更细化计划核准计划分发在项目实施过程中计划制订9软件项目计划大纲1.引言 包括本文档的目的、背景和参考文献2.项目概述包括项目目标、范围和交付成果3.项目团队组织包括组织结构、角色和职责、和外界接口4.项目开发计划包括软件迭代过程、进度安排和人员分配、预算5.标准和方法包括开发方法,分析、设计、测试和文档采用的标准和指南,开发用的工具、技术和可重用组件等6.支持计划(即子管理计划)包括质量管理计划、配置管理计划、采购管理计划、测试计划、培训计划、安装计划、沟通管理计划、风险管理计划、度量计划等10项目规划和管理工具AtlassianJiraMicrosoftAzureDevOpsMicrosoftProjectIBMRationalTeamConcertThoughtWorksMingle腾讯的Coding(云平台)华为的ProjectMan(云平台)Redmine(开源)禅道

(开源)……1102-软件估算01-项目计划概述03-进度安排1204-人员分配05-项目预算06-项目跟踪与监控项目规划定义WBS定义活动定义资源活动排序活动工期估算质量计划沟通计划风险计划配置计划采购计划支持计划需求基线成本估算进度安排人员分配项目计划项目预算定义软件过程软件估算13软件估算的难度软件复杂性高、具有不可见性软件规模越来越大软件需求经常变化开发者的个体差异大软件模块划分(分解)比较难软件开发的历史信息比较少软件开发项目之间的相似性比较少,即低重复性(需求、架构、技术、开发环境、人员等等多核心因素存在差异)14估算精确度带来的影响对项目进度和费用等的损害程度LinearimpactduetoParkinson’sLawNon-linearimpactduetoplanningerrors,upstreamdefects,high-riskpractices100%>100%<100%TargetasaPercentageofNominalEstimate

OverestimationUnderestimationCostEffortSchedule15好的软件估算估算不仅仅是预测,还是一个管理目标如果软件开发成本估算误差在该项工作理想估算的20%以内,那么优秀的经理就能将其变成自我实现的诺言好的估算既能保证项目按期保质保量完成又不致使项目人员感觉筋疲力尽16估算准确性的影响因素项目复杂性项目规模结构不确定性,即需求被确定的程度,功能被分解的容易程度等历史信息的可用性17(Basedon120projectsinBoeingInformationSystems)Ref:ScottGriffin,CIO,BoeingCorp.,keynotetalkatSEPG‘2000.历史数据对估算准确度的影响0%140%-140%...................................................................................无历史数据有历史数据(工作量=人时)(+20%

-145%,CMML1&L2)(-20%

+20%,CMML3)......................................................................................................................................................................................................18估算原则分解估算和的误差大于误差的和双点估算和三点估算双点估算:最乐观的估算、最悲观的估算三点估算:最乐观的估算、最可能的估算、最悲观的估算

期望值=(乐观值+4×可能值+悲观值)/6多阶段估算随着项目的进展,必须不断地调整估算值,重新估算。19估算精确性的收敛图4x2xX0.5x0.25xTimeProjectcost(effortandsize)20估算收敛举例初始产品概念阶段 25-400人月vs.100人月已批准的产品概念阶段

50-200人月vs.100人月需求说明书阶段 90-200人月vs.135人月产品设计说明书阶段 145-180人月vs.145人月结束阶段 170人月注意:不要采用单点估算应采用双点(乐观的、悲观的)或三点(乐观的、悲观的、最可能的)21估算方法分类工程方法Delphi估算专家调查法,由多位专家一起来进行软件估算,达成一致的结果类比估算找到类似项目,比较估算规模、工作量和进度参数估算使用经验模型

d=f(Vi),根据规模和调整因子,估算工作量和进度非工程方法Parkinson法则从价格出发22Delphi估算专家调查法,目前主流的是宽带Delphi方法步骤:采用主题专家会完成多轮估算,在会上那些提出了最高和最低估算的人会解释自己的理由,然后每个人又都重新估算。该过程会不断重复,直到接近一致。示例:敏捷过程中的计划扑克牌(PlanningPoker)估算法。23优点当仅有的可用信息只能依赖专家意见而非确切的经验数据时,Delphi方法无疑是解决成本估算问题的最直接的选择。缺点专家的个人偏好、经验差异与专业局限性都可能为估算的准确性带来风险。类比估算类比(analogy)估算通过对一个或多个已完成的项目与新的类似项目的对比来预测当前项目的成本与进度。相似度的常用特征:领域、编程语言、软件规模、团队大小、复杂性等相似度的计算加权或不加权的欧式距离24优点比较直观,而且能够基于过去实际的项目经验来确定与新的类似项目的具体差异以及可能对成本产生的影响。缺点应用一般集中于已有经验的狭窄领域,不能跨领域应用;难以适应新的项目中约束条件、技术、人员等发生重大变化的情况。参数估算参数估算使用估算模型进行估算,模型是采用机器学习技术从历史项目数据中训练出来的回归模型Putnam经验模型COCOMO经验模型……建议采用自己的历史数据训练或精调出自己的估算模型估算模型软件规模成本时间工作量如E=2.94×(KLOC)b×EAFE=a+b*KLOC/Productivity调整因子25COCOMO模型由BarryBoehm博士提出1981年,COCOMO811996年,COCOMOII使用三个螺旋式的生命周期模型应用组合模型(早期原型)早期设计模型后期架构模型26COCOMOII—应用组合模型应用组合模型使用对象点方法估算对象点数NOP参照平均生产率PROD工作量E=NOP/PROD27COCOMOII—早期设计模型和后期架构模型PM=2.94×

(Size)b×EAFTDEV=[3.67×PM(0.28+0.2×(b-1.01))]×SCED%/100PM工作量(人月)TDEV进度(月)b规模调整因素EAF工作量调整因素早期设计模型:7个EMiRCPX、RUSE、PDIF、PERS、PREX、FCIL、SCED后期架构模型:17个EMi28规模度量因子Wi2917个工作量度量因子EMi30规模估算LOC代码行,即语句数简单但需要预测受编程语言、应用领域、过程、工程师等影响FP功能点不需预测不受编程语言、应用领域、过程、工程师等影响但复杂对象点、用例点、故事点优缺点同FP,比FP简单些31LOC代码行的估算方法Delphi估算类比估算基于代理(proxy)的LOC估算方法——PROBE32PROBE方法PROBE(PROxyBasedEstimating)ConceptualdesignIdentifyandsizetheproxiesNumberofitemsPartTypeRelativesizeReusecategoriesEstimateprogramsize模块分解(和的误差大于误差的和)Proxy识别和大小估算软件规模估算33Example:BuildingCostsProblemThebuilderneedstoknowthefloorarea(insq.ft.)toestimatethecostofconstruction.Clientsnormallycannotdescribetheirneedsinsquarefeet.Theyusuallycandescribethetypeandnumberofroomstheywant.SolutionUseroomsasaproxyforsize.Usehistorical(typical)datatotranslatefromroomstosquarefeet.34Example:CustomerRequirementsBedrooms: 1large,2medium,and1smallBathrooms: 1largeand2mediumKitchen: 1mediumLivingroom: 1largeDiningroom: 1mediumFamilyroom: 1largeUtility: 1medium35HistoricalBuildingDataSmallMediumLargeBedrooms90140200Bathrooms2560120Kitchens100130160Livingrooms150250400Diningrooms100140200Familyrooms150240340Utility25508036ProxyCalculationBedroom1large=1x200=200Bedroom2medium=2x140=280Bedroom1small=1x90=90Bathroom1large=1x120=120Bathroom2medium=2x60=120Kitchen1medium=1x130=130Livingroom1large=1x400=400Diningroom1medium=1x140=140Familyroom1large=1x340=340Utility1medium=1x50=50Total(sq.ft.)=187037估算整个规模PROBEuseshistoricaldata,linearregression,andthepredictionintervaltoproduceestimatesofknownaccuracy.Eistheestimatedproxysize.Size=β0+β1*E38Proxy示例Classes,functions,andproceduresProductelementsdatabaseelementsscreens,reports,scripts,filesbookchapters39ExampleC++ClassSizeRangesTypeVSVLMSLCalculationDataI/OLogicSet-upText2.345.1311.2524.6654.042.604.798.8416.3130.099.0112.0616.1521.6228.937.5510.9815.9823.2533.833.885.046.568.5311.093.758.0017.0736.4177.66LOCperitem40LOC估算举例(1)项目:小型的CRM系统,已有SRS文档Proxy:Class1)概念设计对CRM系统进行分析建模,针对每个用例,识别出三种分析类:控制类、边界类、实体类2)Proxy识别和大小估算

大中小boundaryClass203010controlClass101510entityClass82010Proxy个数(单位:个)

大中小boundaryClass1005010controlClass1508030entityClass20010040Benchmark(单位:LOC)Size’(Proxy的总LOC)=1060041LOC估算举例(2)3)软件总规模

size=a+b*size’

注:本公式从历史数据中拟合出CRM系统总行数

=1000+125%*10600

=1425042FP估算的国际标准IFPUG国际功能点用户协会ISO/IEC20926:2009Nesma荷兰软件度量协会www.nesma.nlISO/IEC24570:2005MarkII-FPA英国软件度量协会www.uksma.co.ukISO/IEC20968:2002COSMIC-FFP通用软件度量国际协会ISO/IEC19761:2011芬兰软件度量行业协会ISO/IEC29881:2010FiSMA43IFPUG方法EIEOEQILFELF1.计算未调整的功能点UFP44举例45计算FPDFP=UFP×(0.65+0.01×SUM(Fi))

Fi(i=1..14)是复杂性校正值,Fi的取值

0..5:

0

没有影响

1

偶然的

2

适中的

3

普通的

4

重要的

5

极重要的2.计算调整的功能点DFP46计算复杂性校正值Fi1.系统是否需要可靠的备份和恢复?2.是否需要数据通信?3.是否有分布处理的功能?4.是否性能成为关键?5.系统是否运行在既存的高度实用化的操作环境中?6.系统是否需要联机数据项?7.联机数据项是否需要建立多重窗口显示和操作,以处理输入处理?8.主文件是否联机更新?9.输入、输出、文件、查询是否复杂?10.内部处理过程是否复杂?11.程序代码是否可复用?12.设计中是否包括了转移和安装?13.系统是否设计成可以重复安装在不同机构中?14.系统是否设计成易修改和易使用?47DFP=UFP*VAF=11*0.91=10.01UFP=11VAF=0.65+0.01*SUM(Fi)=0.91SUM(Fi)=26EI、EO、EQ、ILF、EIF的复杂度总和调整因子总和调整系数FP计算结果举例:48对象点估算并非OO中的对象,而是指三类考察对象用户界面屏幕数、报表数、所需底层模块数49用例点估算Rational公司提出,适合于使用用例作为需求分析和描述规范的项目,该方法在印度Infosys公司得到广泛应用方法步骤1.分别统计简单、中等和复杂用例数量2.考虑复杂性因子求每类用例数量的加权和UUCP3.计算技术复杂性因子TCF4.计算团队能力经验以及环境因子EF5.计算最终用例点UCP=UUCPxTCFxEF一般为每个用例点分配20~28个人时50用例复杂性因子UUCP51技术复杂性因子TCF对于每项评定0~5加权求和得到TFactorTCF=0.6+(0.01xTFactor)52团队能力经验及环境因子EF对于每项评定0~5加权求和得到EFactorEF=1.4-0.03xEFactor53故事点估算故事点估算依据用户故事(userstory),采用计划扑克牌(PlanningPoker)方法进行软件规模估算。每位估算者各拿一叠扑克牌,牌上有不同故事点数。项目经理挑选一个用户故事,并简单解释其功能,以供大家讨论。每位估算者按自己的理解来估计完成这个用户故事所需的工作量,从自己手里的牌中选一张合适数字的牌,同时亮牌。估算者各自解释自己选择这个数字的原因,数字最大和最小的人必须发言。根据每位估算者的解释,大家重新估计时间并再次出牌,直到估计值比较平均为止。54工作量和进度的估算在估算软件规模后,再结合工作量因子和进度因子,通过Delphi估算、类比估算或参数估算等方法,估算出项目的工作量和进度。影响因子:开发人员的能力和经验、复用要求、进度要求、可靠性、复杂度、软件工具、需求稳定性、开发类型、编程语言、开发平台等有时也可以不进行规模估算,采用Delphi和类比估算等方法,根据软件需求直接来估算工作量和进度。如果没有项目历史数据或专家经验,建议采用SteveMcConnell提出的大致估算方法。可能的最短进度有效进度普通进度55可能的最短进度(1)假定:最拔尖的开发者(前10%)理想的管理先进的工具支持,理想的办公环境最具时效的开发方法和开发工具尽可能地压缩进度,直至不可能再进一步压缩可能的最短进度(2)可能的最短进度(3)有效的进度(1)假定:优秀的开发者(前25%),在编程语言和环境上有一年的工作经验团队对项目有共同的看法,没有严重的冲突有效使用编程工具使用现代编程思想和技术,进行主动的风险管理采用快速开发实践,使用沟通工具,良好的工作环境有效的进度(2)有效的进度(3)普通进度(1)假定:中等的开发者,熟悉编程语言和环境在解决冲突上有一定经验一定程度上使用编程工具和现代编程思想工作环境有些不理想,但足够了

对一个一般的项目达到普通进度有50%的把握普通进度(2)普通进度(3)02-软件估算01-项目计划概述03-进度安排6504-人员分配05-项目预算06-项目跟踪与监控项目规划定义WBS定义活动定义资源活动排序活动工期估算质量计划沟通计划风险计划配置计划采购计划支持计划需求基线成本估算进度安排人员分配项目计划项目预算定义软件过程软件估算66进度安排建立PERT图或网络图,确定关键路径,即决定项目开发时间的任务链。根据每个活动的工期估算值设置时间窗口(将节假日等非工作日除外)。考虑时间缓冲,按工期的百分比或固定时间。对活动时序关系设定Lead和Lag。备注:进度安排和人员分配同时进行,相互影响67PERT图例子测试数据2编码4产品测试4测试工具6测试计划2起点分析3终点文档2设计468关键路径编码4产品测试4测试工具6测试数据2测试计划2起点终点文档2设计4分析3(0,0)(0,3)(0,2)(3,5)(2,8)(3,7)(7,9)(7,11)(15,15)(11,15)69项目计划网络图70项目计划Gantt图71如何面对交付期限的巨大压力进度压力是软件项目的通病理想与事实的差距理想情况下,按估算方法科学地进行估算事实上,你的上司、客户、市场人员可能按照主观意愿迫使你压缩计划进度半数左右的项目在需求调查与分析完成之前便制定了进度计划,并且不留出足够的备用时间72进度压力与计划偏离的恶性循环更大的进度压力更重的负担更多的错误更加偏离进度计划73战胜进度压力的方法赶工(Crashing),通过加班和增加资源

,加快关键路径上的活动适当的自愿加班(20%左右),避免长期或强迫加班并行开发,即快速跟进(Fasttracking)可能造成返工和风险增加基于风险的迭代开发,优先级高的需求先实现设计合适的项目软件过程,如敏捷过程,提高团队的开发效率通过培训和实战,持续提高开发人员个体的开发质量和效率;进行软件复用、购买和分包采用软件开发、测试、运维和管理工具,提高工作效率做好充分的需求分析和设计,保证用户充分介入,避免大量返工与项目干系人进行有原则的谈判,建立现实的项目进度目标74有原则的谈判站在他人立场上加以考虑关注共同利益,不要过分坚持立场真正提高开发速度增加成功的机会援引以前类似项目的失败教训提出对双方均有利的备选方案坚持客观标准和原则坚持由专业组织进行进度估算坚持科学的估算过程75进度风险开发计划工期延期风险一般进度进度压缩后76可能的最短进度两个事实:存在一个可能的最短进度,而且不可能突破它当把进度缩短得比普通进度短时,费用将迅速上涨按进度日期完成的可能性预定完成日期费用预定完成日期7702-软件估算01-项目计划概述03-进度安排7804-人员分配05-项目预算06-项目跟踪与监控项目规划定义WBS定义活动定义资源活动排序活动工期估算质量计划沟通计划风险计划配置计划采购计划支持计划需求基线成本估算进度安排人员分配项目计划项目预算定义软件过程软件估算79人力资源需求分布图80两条重要的定律人员-时间权衡定律Brooks定律向一个已经延晚的项目追加开发人员,可能使它完成得更晚E=a/(Td)b81人力资源分配原则考虑人员的技术水平、专业、人数考虑在开发过程各阶段中对各种人员的需要尽早落实责任减少接口责权均衡82资源负荷和资源平衡资源负荷是指在项目特定时间段现有计划中个体资源的负荷资源平衡是指通过资源调配、延迟任务等方式来解决资源冲突问题100%天负荷8302-软件估算01-项目计划概述03-进度安排8404-人员分配05-项目预算06-项目跟踪与监控项目规划定义WBS定义活动定义资源活动排序活动工期估算质量计划沟通计划风险计划配置计划采购计划支持计划需求基线成本估算进度安排人员分配项目计划项目预算定义软件过程软件估算85成本的概念成本:为达到一个特定的目标而牺牲或放弃的资源可变成本:随生产量或工作量而变。如物料、供应品、工资等。固定成本:不随生产的变化而变化的非重复成本。如设置费、租赁费等。直接成本:直接可以归属于项目工作的成本。如差旅费、工资、项目使用的物料等。间接成本:一般管理费用科目或几个项目共同分担的成本。如税金、额外福利和保卫费用等。86软件开发项目的成本直接材料成本项目外购的直接用于项目并将最终交付给用户的硬件、网络、第三方软件和服务等直接人力资源成本工作量(软件项目的主要成本)项目的实施费用成本差旅费、交通费、通信费、出差补贴等其他直接成本设备和场地的租借、项目组专用设备的折旧费、合同的税费、项目的销售和广告费等间接成本(分摊成本)办公场地租金、公司管理费用、公司整体运作的市场和广告费、水电费、办公通信费等项目经理应该关注的是项目的可控成本工作量成本占总成本最大的比例,也是最难估算和控制的87影响软件项目成本的主要因素工期质量管理水平人力资源复用价格881)工期对成本的影响项目费用由直接费用和间接费用组成。一般工期越长,项目的直接费用越低,而间接费用越高。反之,缩短工期,需要更多的、技术水平越高的工程师,直接成本费用就会增加。项目总成本项目工期总成本间接费用成本直接费用成本892)质量对成本的影响质量对成本的影响,可以通过质量成本构成示意图表示。质量成本是由质量故障成本和质量保证成本构成的。质量故障成本与质量保证成本是相互矛盾的。质量保证成本高,故障就少,质量故障成本就低。反之亦然。因此,需要建立一个动态平衡。质量总成本质量保证成本质量故障成本质量成本90管理水平和人力资源对成本的影响3)管理水平对成本的影响高的管理水平可以提高项目预算的准确度,加强对项目预算的执行和监管。同时,对工期的控制严格限制在计划许可的范围内,对由于设计方案和项目计划的变更所造成的成本增加/减少和工期的变动,可以较为有效地控制。因此,管理水平对项目成本有关键影响。4)人力资源对成本的影响对于高技术能力、高技术素质的人才,其人力资源成本比较高,但可以产生高的生产率、高质量的产品、较短的工期等间接效果,从整体上会降低成本。91复用和价格对成本的影响5)软件复用对成本的影响需求、架构、构件、测试等资产复用,以及模型和代码生成的生成复用,能大幅度减低成本。6)价格对成本的影响中间产品和服务、市场人力资源、硬件、软件的价格也对成本产生直接的影响。92制定预算成本估算汇总储备分析专家判断历史关系利用项目特征(参数)建立数学模型,预测项目总成本资金限制平衡根据对项目资金的限制,来平衡资金支出93成本、支出与资金需求9402-软件估算01-项目计划概述03-进度安排9504-人员分配05-项目预算06-项目跟踪与监控谁来跟踪监控?组织的高层管理者定期审核项目的状态报告项目经理负责跟踪和监督并定期报告项目软件项目组实施《项目计

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论