第三章软件工程管理管理的目的:是为了按照预定的时间和费用,成功地完成软件的计划、开发和维护任务。包括四个方面管理:费用人员进度质量软件管理的基本含义费用管理:对软件成本进行成本核算。进度管理:对完成任务制定详细的工作计划。人员管理:对各个阶段所需的人力资源进行组织。质量管理:对软件质量制定“质量保证计划”。1软件费用管理-软件估算模型Yourdon-对一个软件开发项目进行管理的唯一有效方法,就是对开发过程中发生的一切进行监控与度量。T.DeMarco-你不能管理你无法度量的事物。不进行度量的事物是控制不住的。用来估算软件在开发中花费的资源,如时间、开发人数、工作量。资源估算模型(1)静态单变量资源模型:资源=c1×(估计的软件特征)资源为开发工作量(E)、开发时间(T)、开发人数(P)。c1、c2-依赖于开发环境和软件应用领域的两个经验常数。(2)Putnam资源模型L=ckTL-代码行T-年K-工作量c-与开发环境有关的常数开发工作量E与开发时间T的4次方成反比。压缩软件项目的开发时间,意味着显著增加项目的开发工作量。3/43/1C2COCOMO模型COnstructiveCostModel构造性成本模型按照软件的应用领域和复杂程度。增加工作量调节因子EAF。按照软件的应用领域和复杂程度软件类别模型方程适用范围组织型E=3.2×LT=2.5×E高级语言应用程序半独立型E=3.0×LT=2.5×E实用程序嵌入型E=2.8×LT=2.5×E与硬件相关的系统软件12.10.3805.10.3520.10.32工作量调节因子EAF属性调节因子调节值范围例题的值产品属性要求的可靠性等级数据库规模产品复杂度0.75-1.400.94-1.160.70-1.651.000.941.30计算机属性对程序执行时间的约束对程序占用存储容量的约束开发环境的变动开发环境的响应时间1.00-1.661.00-1.560.87-1.300.87-1.151.111.061.001.00人员属性分析员水平程序员水平对应用领域的熟悉程度对开发环境的熟悉程度对所用语言的熟悉程度1.46-0.711.42-0.701.29-0.821.21-0.901.14-0.950.860.861.001.101.00项目属性开发方法的现代化软件工具的数质量完成时间的限制1.24-0.821.24-0.831.23-1.100.911.101.00Example在微处理器上开发一个嵌入式的电信处理程序,程序规模为10,000行,计算所需的开发工作量和开发时间。E=2.8×(10)=44.4(人月)T=2.5×(44.4)=8.4(月)EAF=1.00×0.94×…×1.10×1.00=1.17E’=E×1.17=51.9(人月)T’=T×1.17=8.8(月)20.10.32软件成本估计方法R.W.WolvertonB.W.Boehm自顶向下估计由底向上估计相似与差异估计法比率估计法标准值估计法自顶向下估计由底向上估计类比估计专家判断算法模型估计Parkinson法削价取胜法两种方法的比较自顶向下成本估计根据被开发项目的整体特性,首先估算出总的开发成本,然后在项目内部进行成本分配。缺点:对开发中某些局部的问题或特殊困难容易低估。由底向上成本估计从一个个任务单元开始估计,汇合成项目的总成本。缺点:对项目的综合测试、质量管理和项目管理涉及的全局花费估计不足。2人员的分配与组织Rayleigh-Norden曲线用来说明科研和开发项目在实施期间所需要的人力。①过早投入人力②人力不足③投入人力过剩①②③t人力t1两条重要定律人员-时间权衡定律(People-Time-Trade-OffLaw)E=常数/(T或td)软件开发的权衡定律开发工作量与开发时间的4次方成反比。Brooks定律向一个已经延晚的项目追加开发人员,可能使它完成得更晚。开发时间宁可长一点,开发人员宁可少一点。4动力Motivation人类需要的层次HumanneedshierarchyPhysiologicalneedsSafetyneedsSocialneedsEsteemneedsSelf-realizationneeds如何获得满意的需要NeedsatisfactionSocialProvidecommunalfacilitiesAllowinformalcommunicationsEsteemRecognitionofachievementsAppropriaterewardsSelf-realizationTraining-peoplewanttolearnmoreResponsibility专业人员分类PersonalitytypesTask-oriented面向任务型软件开发智力上的挑战激发了他们的工作热情。ThemotivationfordoingtheworkistheworkitselfSelf-oriented面向自我型把软件开发视为达到自己目标的手段。Theworkisameanstoanendwhichistheachievementofindividualgoals-e.g.togetrich,toplaytennis,totraveletc.Interaction-oriented面向交互型来自于同事的存在和行动。Theprincipalmotivationisthepresenceandactionsofco-workers.Peoplegotoworkbecausetheyliketogotowork团队建设TeamBuilding小组构成Groupcomposition小组中的技术、经验和个性是否整体均衡小组凝聚力Groupcohesiveness小组是否把自身视为一个团队而不仅仅是在一起工作的个体的组合小组沟通能力Groupcommunications小组成员彼此间能否有效沟通小组组织结构Grouporganization小组的结构方式是否使得团队中的每个人都觉得受到尊重,并对他们在小组中的角色满意小组在项目开发过程中的时间分配Timedistribution50%Interactionwithotherpeople20%Non-productiveactivities30%Workingalone与其他人沟通独自工作非生产性活动小组构成GroupcompositionTask-oriented-everyonewantstodotheirownthing(one-three)Self-oriented-everyonewantstobetheboss(one)Interaction-oriented-toomuchchatting,notenoughwork(one)人员组织民主开发小组“无我小组”一切问题由集体决定。集思广益、取长补短责任不清、每事要讨论、效率不高。主程序员小组每个组员对主程序员负责。文档员2~5名程序员后援程序员选择和留住职员Choosingandkeepingpeople考虑的因素说明应用领域经验开发人员必须了解应用领域知识平台经验软件开发平台的运用能力计算机语言的熟悉程度计算机语言掌握的熟练程度教育背景表现开发人员具有的基础知识及其学习能力沟通能力软件工程师需要同他人口头或文字方式进行沟通适应性反映开发人员的自我学习能力工作态度应有积极的工作态度,不断学习新技术个性特征能够与他人关系融洽CCCCSSPIN-基本技能CommunicationCooperationCreationCriticalthinkingSelf-learningSelf-managementProblem-solvingInformationtechnologyNumeracy办公室布局OfficelayoutOfficeOfficeOfficeOfficeOfficeOfficeOfficeOfficeCommunalareaMeetingroomWindowShareddocumentation3项目进度安排计划评审技术-工程网络技术(ProgramEvaluationandReviewTechnique)成功应用于北极星导弹的研究与开发。Gantt图计划评审技术PERT技术(1)建立PERT图(2)标出最早起止时间(3)标出最迟起止时间(4)PERT图的使用(1)建立PERT图PERT图组成:圆框表示一项开发活动框内数字表示完成这一活动所需的时间框间的箭头表示活动发生的先后顺序数字数字Example起点分析3测试计划2测试数据2设计4测试软件6编码4产品测试4文档2终点绘制PERT的方法采取从后向前建立PERT图的方法。(1)画出终点;(2)逐步前推,画出每个活动;(3)直至项目的起点。(2)标出最早起止时间起点分析3测试计划2测试数据2设计4测试软件6编码4产品测试4文档2终点(0,0)(0,3)(3,7)(7,9)(15,15)(7,11)(11,15)(3,5)(0,2)(2,8)关键路径(3)标出最迟起止时间起点分析3测试计划2测试数据2设计4测试软件6编码4产品测试4文档2终点(0,0)(0,3)(3,7)(7,9)(15,15)(7,11)(11,15)(3,5)(0,2)(2,8)(0,0)(0,3)(3,5)(5,11)(9,11)(7,11)(11,15)(3,7)(13,15)(15,15)(4)PERT图的使用确定关键路径和项目完成时间;确保关键路径上的各项活动按时完成;通过缩短关键路径上的某些活动时间,达到缩短项目开发时间的目的;对不在关键路径上的活动,可根据需要调整其起止时间。缩短项目开发时间起点分析3测试计划2测试数据2设计3测试软件6编码2产品测试4文档2终点(0,0)(0,3)(3,6)(6,8)(12,12)(6,8)(8,12)(3,5)(0,2)(2,8)(0,0)(0,3)(0,2)(2,8)(6,8)(6,8)(8,12)(3,6)(10,12)(12,12)Gantt图Gantt图组成:(1)图的左上方列出项目的开发活动;(2)上方列出日历时间;(3)每个活动的开始时间和结束时间各画一个小三角形;(4)当活动已经开始或结束时,将小三角形涂黑。Example活动负责人123456789101112123分析SE测试计划VV设计SE编码PG测试软件VV测试数据VV产品测试VV文档SESE系统工程师VV质量保证人员PG程序员小结软件工程管理的目的与内容软件成本估算方法软件开发小组的组织特点软件开发进度管理技术思考题软件成本估算的依据是什么?如何给出较准确的依据呢?如何写CV(个人简历)呢?请运用PERT技术和Gantt技术对自己本学期的学习任务作一个规划。练习题左表列出活动、持续时间和各活动之间的依赖关系。根据这个表画出项目进度的PERT图和Gantt图,依据活动图给出每个活动的最早起止时间、最迟起止时间、项目完成时间、关键路径,并确定最少需要的人员数。任务持续时间(天数)依赖关系A6B8C7A,BD10AE5BF3C,DG2DH4F,GI3E,F下周实验内容校园资源管理系统每组两名学生本周准备工作-分组、分析校园管理的内容。