当前位置首页 > 医药卫生 > 基础医学
搜柄,搜必应! 快速导航 | 使用教程  [会员中心]

第八章软件维护

文档格式:PPT| 34 页|大小 374.53KB|积分 10|2023-12-10 发布|文档ID:237161584
第1页
下载文档到电脑,查找使用更方便 还剩页未读,继续阅读>>
1 / 34
此文档下载收益归作者所有 下载文档
  • 版权提示
  • 文本预览
  • 常见问题
  • 第八章软软件件维护维护 8.1 8.1 软软件件维护维护的的概念概念8.2 8.2 软软件件维护的特点维护的特点8.3 8.3 软软件件维护维护的的过程过程8.4 8.4 软软件件的的可可维护维护性性18.18.1软软件件维护维护的的概概念念 软件维护是软件生存周期的最后一个阶段软件维护是软件生存周期的最后一个阶段,不属于系统开发的过程不属于系统开发的过程问题问题内内 容容维护维护目的目的 维护维护种类种类 满足用户对已开发产品的性能与运行环境不断提高的要求,进而满足用户对已开发产品的性能与运行环境不断提高的要求,进而达到延长软件寿命的目的达到延长软件寿命的目的改正性改正性适应性适应性完善性完善性预防性预防性对程序使用期间发现的程序错误进行诊断和改正的过程;对程序使用期间发现的程序错误进行诊断和改正的过程;配合变化了的环境进行修改软件的活动;配合变化了的环境进行修改软件的活动;满足用户在使用过程中提出增加新的功能或修改已有满足用户在使用过程中提出增加新的功能或修改已有功能的建议而进行的工作;功能的建议而进行的工作;为了改善未来的可维护性或可靠性而修改软件的工作为了改善未来的可维护性或可靠性而修改软件的工作。

    软件维护的工作量非常大,不同应用领软件维护的工作量非常大,不同应用领域的维护成本差别也很大一般大型软件域的维护成本差别也很大一般大型软件的维护成本平均高达开发成本的四倍左右的维护成本平均高达开发成本的四倍左右改正性改正性完善性完善性适应性适应性预防性预防性1721%1721%5066%5066%1825%1825%4%4%左右左右 软件的易维护性是软件开发过程中每个步骤的一个关键目标维护费用占软件总支软件的易维护性是软件开发过程中每个步骤的一个关键目标维护费用占软件总支出的出的20-30%20-30%到到70-80%70-80%而无形的代价更是无法估计的而无形的代价更是无法估计的28.2 8.2 维护的特点维护的特点(1)(1)维护要求维护要求评价代码评价代码评价设计评价设计配置配置复查复查修改程序修改程序修改设计修改设计计划途径计划途径?复查复查修改程序修改程序维护后软维护后软件与记录件与记录软件软件代码代码一一.维护方式维护方式 方式方式配置配置开始开始工作工作 成本成本难度难度结构化维护结构化维护非结构化维护非结构化维护每个阶段文档与程序代码每个阶段文档与程序代码仅有程序代码仅有程序代码评价设计文档开始评价设计文档开始评价代码开始评价代码开始(1)(1)确定软件的结构特征、确定软件的结构特征、性能特性和接口特性,性能特性和接口特性,(2)(2)确定软件修改带来的影确定软件修改带来的影 响,找出一种处理方法;响,找出一种处理方法;(3)(3)修改设计、复审;修改设计、复审;(4)(4)再编写源程序代码,进行再编写源程序代码,进行 回归测试;回归测试;(5)(5)将修改后的软件交付使用将修改后的软件交付使用 软件结构、软件结构、全程数据结构、全程数据结构、系统接口、性系统接口、性能要求、设计能要求、设计约束等具体特约束等具体特点不清楚而很点不清楚而很难确定。

    难确定维护成本较低维护成本较低易于维护易于维护维护困难维护困难38.2 8.2 维护的特点维护的特点(2)(2)二二.与软件维护有关的问题与软件维护有关的问题影响影响维护维护因素因素维护维护困难困难 软件维护工作量模型:软件维护工作量模型:M=P+Kc-d;M:总工作量;总工作量;P P:评价、修改设计和编写代码等评价、修改设计和编写代码等 工作量;工作量;K:经验常数;经验常数;c c:系统复杂程度;系统复杂程度;d d:维护人员对软件的熟悉程度维护人员对软件的熟悉程度1)(1)模块化详细设计文档有助于理解软件的结模块化详细设计文档有助于理解软件的结 构、界面功能和内部流程;构、界面功能和内部流程;(2)(2)开发过程中严格而科学的管理规划及清晰开发过程中严格而科学的管理规划及清晰 可靠的文档资料对发生错误后的理解与纠可靠的文档资料对发生错误后的理解与纠 错无疑是很重要的错无疑是很重要的3)(3)模块的独立程度对软件修改的难易程度、模块的独立程度对软件修改的难易程度、改进和移植影响是很大的改进和移植影响是很大的软件开发及维护人员的水平;软件开发及维护人员的水平;使用标准的程序设计语言;使用标准的程序设计语言;使用标准的操作系统接口;使用标准的操作系统接口;使用规范化的文档资料;使用规范化的文档资料;测试用例的有效性。

    测试用例的有效性别人写的程序在没有说明文档时,理解很困难,不为人喜欢;别人写的程序在没有说明文档时,理解很困难,不为人喜欢;维护持续时间都很长,开发人员一般不在现场,对软件没有人说明维护持续时间都很长,开发人员一般不在现场,对软件没有人说明绝大多数软件在设计时都没有考虑将来的修改除非设计中强调了绝大多数软件在设计时都没有考虑将来的修改除非设计中强调了模块的独立性,否则软件的修改既困难又易发生差错模块的独立性,否则软件的修改既困难又易发生差错开发方法开发方法开发条件开发条件理解理解时间时间设计设计问题问题48.3 8.3 维护的过程维护的过程(1)(1)一一.建立软件维护的建立软件维护的组织组织,在组织中有总负责人、系统管理员和维护管理员等在组织中有总负责人、系统管理员和维护管理员等二二.编写维护的编写维护的报告报告 用标准化的格式表达所有软件维护的要求要求包括下列内容:用标准化的格式表达所有软件维护的要求要求包括下列内容:1.1.满足维护要求表中提出的要求所需要的工作量;满足维护要求表中提出的要求所需要的工作量;2.2.维护要求的性质;维护要求的性质;3.3.该项要求的优先顺序;该项要求的优先顺序;4.4.与修改有关的事后数据。

    与修改有关的事后数据三三.为每一个维护要求规定一个标准化的事件序列为每一个维护要求规定一个标准化的事件序列(见下页图形见下页图形)1.1.明确维护的明确维护的类型类型:纠错性维护纠错性维护,进一步分清是适应性维护还是完善性维护;进一步分清是适应性维护还是完善性维护;2.2.对纠错性维护从对纠错性维护从评价评价错误的严重性开始错误的严重性开始,分别不同程度采取不同的方法;分别不同程度采取不同的方法;3.3.适应性维护和完善性维护沿着同一路径推进,确定适应性维护和完善性维护沿着同一路径推进,确定优先优先顺序后开始工作;顺序后开始工作;4.4.对恶性软件故障,应把所有的资源用来对恶性软件故障,应把所有的资源用来解决问题解决问题;5.5.对任何类型的维护都要进行同样的对任何类型的维护都要进行同样的技术工作技术工作,包括:修改软件设计、设计,包括:修改软件设计、设计 复审、必要的代码修改、单元测试、集成测试、验收测试和复审等复审、必要的代码修改、单元测试、集成测试、验收测试和复审等58.3 8.3 维护的过程维护的过程(2)(2)区分区分类型类型问题问题分析分析严重性严重性评价评价维护维护任务任务配置配置复审复审优先度优先度评价评价问题问题分析分析纠错项目表纠错项目表 纠错纠错 分配的人员分配的人员 已修改配置已修改配置 开发项目表开发项目表 测试测试 已已修改软件修改软件复审后供使用复审后供使用的软件配置的软件配置分配的人员分配的人员 适应适应严重严重完善完善不严重不严重计划改计划改正进度正进度低低高高+维护事件序列图维护事件序列图维护事件序列图维护事件序列图维护要求维护要求68.3 8.3 维护的过程维护的过程(3)(3)维维护护记记录录中中的的数数据据工工作作量量考考虑虑程序标识;程序标识;自从安装以来程序失败的次数;自从安装以来程序失败的次数;自从安装以来程序运行的次数;自从安装以来程序运行的次数;维护每种语言平均花费的人时数;维护每种语言平均花费的人时数;因程序变动而增加的源语句数;因程序变动而增加的源语句数;程序变动的层次和标识;程序变动的层次和标识;每次程序运行平均失效的次数;每次程序运行平均失效的次数;程序安装的日期;程序安装的日期;使用的程序设计语言;使用的程序设计语言;机器指令条数;机器指令条数;源语句数;源语句数;不同维护类型所占的时间比。

    不同维护类型所占的时间比平均每个程序、每种语言、每种维护类型所做的程序变动数;平均每个程序、每种语言、每种维护类型所做的程序变动数;与完成的维护相联系的纯效益与完成的维护相联系的纯效益累计用于维护的人时数;累计用于维护的人时数;维护开始和完成的日期;维护开始和完成的日期;维护类型;维护类型;维护要求表的标识;维护要求表的标识;软件工程师的名字;软件工程师的名字;程序改动的日期;程序改动的日期;每个改动所耗费的人时数;每个改动所耗费的人时数;因程序变动而删除的源语句数;因程序变动而删除的源语句数;用于同一类维护活动的总人时数;用于同一类维护活动的总人时数;一张维护要求表的平均周转时间;一张维护要求表的平均周转时间;增加或删除一个源语句平均花费的人时数增加或删除一个源语句平均花费的人时数78.4 8.4 可维护性可维护性(1)(1)决定软件可维护性的因素决定软件可维护性的因素 因素因素内内 容容可理可理解性解性可测可测试性试性可修可修改性改性软件的结构、接口、功能和内部过程的难易程度;软件的结构、接口、功能和内部过程的难易程度;模块化、详细设计文档、结构化设计、源代码内部的文档;模块化、详细设计文档、结构化设计、源代码内部的文档;程序设计语言。

    程序设计语言诊断和测试的难易程度取决于软件容易理解的程度;诊断和测试的难易程度取决于软件容易理解的程度;良好的文档对诊断和测试是至关重要的诊断和测试;良好的文档对诊断和测试是至关重要的诊断和测试;软件结构、可用的测试工具和调试工具,以往的测试过程是很重要的;软件结构、可用的测试工具和调试工具,以往的测试过程是很重要的;在设计阶段应尽力把软件设计成容易诊断和测试的在设计阶段应尽力把软件设计成容易诊断和测试的与设计原理、规则直接相关;与设计原理、规则直接相关;与藕合、内聚、局部化、控制域、作用域等等都有关系与藕合、内聚、局部化、控制域、作用域等等都有关系88.4 8.4 可维护性可维护性(2)(2)与可维护性相关的文档与可维护性相关的文档 文档文档内内 容容文档文档描述描述要求要求用户用户文档文档系统系统文档文档如何使用这个系统;如何使用这个系统;怎样安装和管理这个系统;怎样安装和管理这个系统;系统需求和设计;系统需求和设计;系统的实现和测试系统的实现和测试功能描述功能描述:说明系统能做什么;说明系统能做什么;安装文档安装文档:说明怎样安装该系统及使系统适应特定的硬件配置;说明怎样安装该系统及使系统适应特定的硬件配置;使用手册使用手册:简要说明如何使用这个系统;简要说明如何使用这个系统;参考手册:详尽描述用户可以使用的系统设施及方法,以及可能产参考手册:详尽描述用户可以使用的系统设施及方法,以及可能产 生的出错信息含义;生的出错信息含义;操作员指南:说明操作员如何处理使用中出现的各种情况。

    操作员指南:说明操作员如何处理使用中出现的各种情况从问题定义、需求说明到验收测试这样一系列和系统实现有关的文档从问题定义、需求说明到验收测试这样一系列和系统实现有关的文档9第八章第八章 小小 结结 一一.软件维护是软件生存周期的最后一个阶段,也是持续时间最长、软件维护是软件生存周期的最后一个阶段,也是持续时间最长、代价最大的一个阶段代价最大的一个阶段二二.软件维护包括四类活动:改正性维护、适应性维护、完善性维软件维护包括四类活动:改正性维护、适应性维护、完善性维 护和预防性维护护和预防性维护三三.软件的可理解性、可测试性和可维修性是决定软件可维护性的软件的可理解性、可测试性和可维修性是决定软件可维护性的 基本因素基本因素四四.软件生存周期的每个阶段和软件可维护性密切相关软件生存周期的每个阶段和软件可维护性密切相关五五.文档是影响软件可维护性的决定因素文档是影响软件可维护性的决定因素六六.文档分为用户文档和系统文档,它们都必须和程序代码同时维文档分为用户文档和系统文档,它们都必须和程序代码同时维 护才有真正的价值护才有真正的价值10第八章第八章 习习 题题 1.1.为什么说软件的维护是不可避免的?为什么说软件的维护是不可避免的?2.2.软件的维护一般分为哪几类?软件的维护一般分为哪几类?3.3.影响软件维护的因素有哪些?影响软件维护的因素有哪些?4.4.软件维护困难主要表现在什么方面?软件维护困难主要表现在什么方面?5.5.决定软件可维护性的因素?决定软件可维护性的因素?6.6.软件价格应该计入维护成本吗?为什么?软件价格应该计入维护成本吗?为什么?7.7.对前面各章中分析的各应用系统,提出改进和扩充功能的要求?对前面各章中分析的各应用系统,提出改进和扩充功能的要求?(1)(1)教材销售采购系统;教材销售采购系统;(2)(2)图书管理系统;图书管理系统;(3)(3)房产管理系统。

    房产管理系统11第九章软软件工程管理件工程管理 9.1 9.1 软件项目的特点和管理的职能软件项目的特点和管理的职能9.2 9.2 成本估算成本估算9.3 9.3 人员的分配和组织人员的分配和组织9.4 9.4 进度安排进度安排9.5 9.5 质量保证质量保证9.6 9.6 项目计划项目计划9.7 9.7 软件管理工具软件管理工具129.1 9.1 软件项目特点和管理的职能软件项目特点和管理的职能(1)(1)软件项目的规模越大,所需要软件项目的规模越大,所需要 的管理支持工作量越大统计资料的管理支持工作量越大统计资料 表明在软件项目的规模达到一定程表明在软件项目的规模达到一定程 度时,所需的软件管理工作量将达度时,所需的软件管理工作量将达 到总工作量的一半如图所示:到总工作量的一半如图所示:技术和管理是软件生产中不可缺少的两个方面,对技术而言,技术和管理是软件生产中不可缺少的两个方面,对技术而言,管理意味着决策和支持只有对生产过程进行科学的估量,作管理意味着决策和支持只有对生产过程进行科学的估量,作到技术落实、组织落实和费用落实,才能达到提高生产率,改到技术落实、组织落实和费用落实,才能达到提高生产率,改善产品质量的目的。

    因此软件工程管理也是软件工程学中研究善产品质量的目的因此软件工程管理也是软件工程学中研究的领域之一的领域之一100%100%50%50%软件规模软件规模工工作作量量技术工作技术工作管理工作管理工作 软件项目的规模软件项目的规模,决定了采用怎样决定了采用怎样的管理水平、开发工具和开发方法的管理水平、开发工具和开发方法139.1 9.1 软件项目特点和管理的职能软件项目特点和管理的职能(2)(2)一一.软件项目的特点软件项目的特点 1.1.软件项目与其他任何产业项目不同,它是算法、思想、概念、软件项目与其他任何产业项目不同,它是算法、思想、概念、组织、流程、效率、优化等的融合体;组织、流程、效率、优化等的融合体;2.2.开发软件项目产品开发软件项目产品,在多数情况下在多数情况下,用户给不出明确的想法和要用户给不出明确的想法和要 求3.3.在开发过程中,程序及其相关的文档资料常常需要修改,在修在开发过程中,程序及其相关的文档资料常常需要修改,在修 改过程中又可能带来新的问题,且这些问题要在很久以后才会改过程中又可能带来新的问题,且这些问题要在很久以后才会 发现4.4.在研制开发过程中,文档资料是不可缺少的,但工作量又是巨在研制开发过程中,文档资料是不可缺少的,但工作量又是巨 大的大的,往往也是人们不愿去作的。

    往往也是人们不愿去作的5.5.参加软件项目的工作人员,要求具有一定的业务水平和实际工参加软件项目的工作人员,要求具有一定的业务水平和实际工 作经验,而很难完全避免的人员流动,对工作的影响是很大的作经验,而很难完全避免的人员流动,对工作的影响是很大的离开的人员不仅带走了重要的信息,而且带走了工作经验离开的人员不仅带走了重要的信息,而且带走了工作经验149.1 9.1 软件项目特点和管理的职能软件项目特点和管理的职能(3)(3)二二.软件项目管理的特殊软件项目管理的特殊困难困难 1.1.智力密集智力密集,可见性差可见性差,对没有软件知识和软件开发实践经验的人对没有软件知识和软件开发实践经验的人 员很难做好管理工作员很难做好管理工作2.2.特定的开发环境特定的开发环境,加上特定的开发方法、工具和语言建立在这加上特定的开发方法、工具和语言建立在这 种内容、形式各异基础上的研制或生产方式,与其他领域大规种内容、形式各异基础上的研制或生产方式,与其他领域大规 模现代化生产的管理区别很大,给管理造成的实际困难也更多模现代化生产的管理区别很大,给管理造成的实际困难也更多3.3.劳动密集、自动化程度低,加之软件本身的复杂性,各种错误劳动密集、自动化程度低,加之软件本身的复杂性,各种错误 难以避免,为确保软件质量,给管理提出了更高的要求。

    难以避免,为确保软件质量,给管理提出了更高的要求4.4.使用方法繁琐,维护困难使用方法繁琐,维护困难5.5.对从事软件项目开发工作的人员对从事软件项目开发工作的人员,不仅需要一定的技术水平和工不仅需要一定的技术水平和工 作经验作经验,而且要求具有良好的心理素质因此对软件人员的管理而且要求具有良好的心理素质因此对软件人员的管理 是一个不可忽视的问题是一个不可忽视的问题159.1 9.1 软件项目特点和管理的职能软件项目特点和管理的职能(4)(4)三三.软件管理的职能软件管理的职能 1.1.管理的目的管理的目的:按照工程预定的时间和费用按照工程预定的时间和费用,成功地完成软件的计划、开成功地完成软件的计划、开 发和维护任务管理贯穿整个软件生存周期发和维护任务管理贯穿整个软件生存周期2.2.管理的内容管理的内容 (1)(1)费用管理费用管理:对软件开发进行成本核算对软件开发进行成本核算,使软件生产按照商品生产的规使软件生产按照商品生产的规 律办事包括律办事包括:以简单、科学方法估算软件开发费用以简单、科学方法估算软件开发费用,作为签定开发作为签定开发 合同的根据;管理开发费用的有效使用合同的根据;管理开发费用的有效使用,即用经济手段来保证产品即用经济手段来保证产品 如期按质完成。

    如期按质完成2)(2)质量管理质量管理:按项目的质量保证计划按项目的质量保证计划,确保各个开发阶段的开发和维护确保各个开发阶段的开发和维护 工作全部按软件工程的规范进行工作全部按软件工程的规范进行,保证软件产品的质量保证软件产品的质量3)(3)配置管理配置管理:通过对于程序、文档和数据的各种版本所进行的管理,通过对于程序、文档和数据的各种版本所进行的管理,保证资料的完整性与一致性保证资料的完整性与一致性4)(4)项目管理项目管理:制定项目实施计划,按照计划的内容组织和实施软:制定项目实施计划,按照计划的内容组织和实施软 件的工程化生产最终目标是以合理的费用和进度,圆满完成计划件的工程化生产最终目标是以合理的费用和进度,圆满完成计划 所规定的软件项目所规定的软件项目169.2 9.2 成本估算成本估算(1)(1)一一.成本估算的方法成本估算的方法方法方法实实 现现不不 足足自顶自顶向下向下估计估计 自底自底向上向上估计估计 一般将上述两种方法结合使用此外可采用系统的一般将上述两种方法结合使用此外可采用系统的“分类活动结构图分类活动结构图”(”(简称简称WBS)WBS)有效地避免在估计中遗漏任务。

    例下页的有效地避免在估计中遗漏任务例下页的CADCAD系统产品的两种系统产品的两种WBSWBS图首先估算出项目总的开发成本,然后在首先估算出项目总的开发成本,然后在项目内部进行成本分配由少数专家参与,项目内部进行成本分配由少数专家参与,依靠他们过去的经验,将要开发的软件与依靠他们过去的经验,将要开发的软件与过去开发过的软件进行过去开发过的软件进行“类比类比”,以估计,以估计新的软件开发所需要的工作量和成本新的软件开发所需要的工作量和成本将开发任务分成若干子任务将开发任务分成若干子任务,子任务又分子任务又分成子子任务成子子任务,直到每一个单元内容足够明确直到每一个单元内容足够明确为止;把各个任务单元的成本估计出来为止;把各个任务单元的成本估计出来,汇汇合成项目的总成本合成项目的总成本该方法得到的结果比较接近实际该方法得到的结果比较接近实际一般对开发中的某些局部问题一般对开发中的某些局部问题或特殊困难容易低估或特殊困难容易低估,甚至没有甚至没有考虑到如果所开发的软件缺乏考虑到如果所开发的软件缺乏可以借鉴的经验可以借鉴的经验,在估计时就可在估计时就可能出现较大的误差能出现较大的误差具体工作人员只主意到自己范具体工作人员只主意到自己范围内的工作围内的工作,对综合测试、质量管对综合测试、质量管理和项目管理等涉及全局的花费理和项目管理等涉及全局的花费可能估计不足,甚至完全忽视。

    可能估计不足,甚至完全忽视因此可能使成本估计偏低因此可能使成本估计偏低179.2 9.2 成本估算成本估算(2)(2)用户接口用户接口控制控制CADCAD系统产品系统产品图形设计图形设计图形输出图形输出系统输入系统输入三维图三维图分析分析设计设计分析分析二维图二维图分析分析数据结构数据结构管理管理图形图形显示显示外部设备外部设备控制控制质量质量保证保证进度进度安排安排CADCAD系统开发过程系统开发过程系统测试系统测试项目管理项目管理项目计划项目计划项目开发项目开发综合综合测试测试确认确认测试测试需求需求分析分析设计设计编码与编码与单元测试单元测试CADCAD系统开发过程的系统开发过程的WBSWBS图图CADCAD系统产品的系统产品的WBSWBS图图189.2 9.2 成本估算成本估算(3)(3)功功 能能生产生产率率估计估计行数行数每每行行成本成本成本成本($)人月人月获获 取取 数数 据据 92 84036302409.1更新数据库更新数据库1021210182178011.8脱脱 机机 分分 析析134 60024144004.4产产 生生 报报 告告145 4501149503.1实实 时时 控控 制制 801100454950013.7 总总 计计12087042.1二二.估算中通常采用的技术估算中通常采用的技术 1.1.任务分解技术任务分解技术:估计完成该项任务需要的人力估计完成该项任务需要的人力(以人月为单位以人月为单位),),再乘以每再乘以每 人每月的平均支付金额确定软件成本。

    人每月的平均支付金额确定软件成本2.2.代码行技术代码行技术:用每行代码的平均成本乘以行数确定软件成本;用每行代码的平均成本乘以行数确定软件成本;任任 务务人力人力(人月人月)$/人人月月成本成本($)需求分析需求分析 5.034001700设设 计计15.0320048000编编 码码 与与单元测试单元测试 8.0265021200综合测试综合测试 16.5290047850 总总 计计44.5134050利用任务分解技术例子利用任务分解技术例子利用代码行技术例子利用代码行技术例子3.3.算法模型算法模型(略略)199.3 9.3 人员的分配和组织人员的分配和组织(1)(1)0 0T Td dT T人力人力一一.RayleighRayleigh-Norden Norden 曲线曲线(右图右图)横坐标:横坐标:T(T(时间时间);纵坐标;纵坐标:人力;人力;1.1.曲线方程曲线方程:人力人力=(=(K/TK/Td d)e eS S(T/T(T/Td d)其中其中 s=s=0.5 0.5(T/T(T/Td d)2 2;T Td d:曲线达到峰点的时间;曲线达到峰点的时间;K K:软件生存周期总工作量;软件生存周期总工作量;一个软件项目在生命周期的各个不同阶段所需要的人员的类型及其数量是不相同的。

    一个软件项目在生命周期的各个不同阶段所需要的人员的类型及其数量是不相同的如:计划与分析阶段只需要很少的人,概要设计需要的人略多一些,详细设计又多一如:计划与分析阶段只需要很少的人,概要设计需要的人略多一些,详细设计又多一 些,到了编码和测试阶段所需人数最多在运行初期,需要较多的人参加维护,但很些,到了编码和测试阶段所需人数最多在运行初期,需要较多的人参加维护,但很 快就可减少下来如何按照实际需要来确定各阶段所需的人力?有无规律可循?如何快就可减少下来如何按照实际需要来确定各阶段所需的人力?有无规律可循?如何 组织?是软件开发中必须解决好的问题组织?是软件开发中必须解决好的问题1)(1)在在T Td d之前,单位时间开发所需的人力逐渐上升;之前,单位时间开发所需的人力逐渐上升;(2)(2)在在T Td d达到峰值,单位时间开发所需的人力达到最大值;达到峰值,单位时间开发所需的人力达到最大值;(3)(3)在在T Td d之后,单位时间所需的人力逐渐下降之后,单位时间所需的人力逐渐下降4)(4)T Td d两侧的比为两侧的比为4 4:6 6,即计划与开发所需的工作量约占生存期总工作量的,即计划与开发所需的工作量约占生存期总工作量的40%40%,而维护工作量约占生存期总工作量的而维护工作量约占生存期总工作量的60%60%。

    209.3 9.3 人员的分配和组织人员的分配和组织(2)(2)时间时间(年年)工作量工作量(人年人年)平均每年需要人数平均每年需要人数2.02.0252512.512.51.841.84353519.019.0 即两年可以完成的工作量即两年可以完成的工作量2525个人年个人年,若将开发时间压缩为若将开发时间压缩为1.841.84人年人年 (时间缩短不到时间缩短不到1/10),1/10),而工作量将增至而工作量将增至3535个人年个人年(增长率达增长率达40%)40%)3.3.BrooksBrooks定律定律(时间与人员不能互换原则时间与人员不能互换原则)大量软件开发实践说明大量软件开发实践说明:向一个已经延迟的项目追加开发人员向一个已经延迟的项目追加开发人员,可能可能 使它完成得更晚当开发人员以算术级数增长时,人员之间的通信将使它完成得更晚当开发人员以算术级数增长时,人员之间的通信将 以几何级数增长,往往以几何级数增长,往往“得不偿失得不偿失”2.2.软件开发的软件开发的权衡定律权衡定律 E=E=常数常数/(/(T T或或T Td d)4 4 即开发工作量与开发时间的即开发工作量与开发时间的4 4次方成反比。

    次方成反比例例.某软件两种开发时间的比较某软件两种开发时间的比较:219.3 9.3 人员的分配和组织人员的分配和组织(3)(3)二二.人员组织人员组织 结构结构职职 能能 负责管理软件开发部门负责管理软件开发部门,在各个项目之间分配和协调各种资源在各个项目之间分配和协调各种资源软件软件经理经理项目项目经理经理开发开发小组小组审查审查小组小组 管理一个具体的的开发项目的各个方面管理一个具体的的开发项目的各个方面(计划、进度、审查、复查、计划、进度、审查、复查、用户界面等用户界面等),领导,领导1616个程序设计小组个程序设计小组任任 务务每个小组每个小组(28(28人人)负责项目的一部分开发工作负责项目的一部分开发工作组织组织形式形式程序设程序设计小组计小组主程序主程序员小组员小组 非正式的组织形式,组长和成员完成同样的任务多非正式的组织形式,组长和成员完成同样的任务多数成员经验丰富、技术熟练的程序员数成员经验丰富、技术熟练的程序员.主程序员:全面负责系统的设计、编码、测试和安装主程序员:全面负责系统的设计、编码、测试和安装辅助程序员辅助程序员:协助主程序员工作主要任务是设计测试协助主程序员工作。

    主要任务是设计测试 方案和分析测试结果,以验证主程序员的工作方案和分析测试结果,以验证主程序员的工作程序管理员程序管理员:完成和项目有关的全部事务工作完成和项目有关的全部事务工作从事质量保证活动,在项目开发的每个阶段从事质量保证活动,在项目开发的每个阶段(软件生存周期软件生存周期)结束之前结束之前,进行技术审查和管理复审进行技术审查和管理复审229.4 9.4 进度安排进度安排(1)(1)测试测试数据数据2 2产品产品测试测试4 4测试测试计划计划2 2测试测试软件软件6 6终点终点文档文档2 2编码编码4 4设计设计4 4分析分析3 3起点起点一一.计划评审技术计划评审技术(Program Evaluation and Review TechniqueProgram Evaluation and Review Technique简称简称PERTPERT技术技术)1.1.建立建立PERTPERT图图 例例.一个简单软件开发项目的一个简单软件开发项目的PERTPERT图图中的每一个圆框代表一项开发活动图中的每一个圆框代表一项开发活动框内的数字表示完成这一活动所需的时间框内的数字表示完成这一活动所需的时间(该例单位该例单位:月月),框间的前头,框间的前头 代表活动发生的先后顺序。

    代表活动发生的先后顺序239.4 9.4 进度安排进度安排(2)(2)起点起点(0,0)(0,0)测试测试计划计划2 2(0,2)(0,2)测试测试软件软件6 6(2,8)(2,8)测试测试数据数据2 2(3,5)(3,5)文档文档2 2(7,9)(7,9)产品产品测试测试4 4(11,15)(11,15)(0,3)(0,3)分析分析3 3终点终点(15,15)(15,15)设计设计4 4(3,7)(3,7)编码编码4 4(7,11)(7,11)2.2.找出关键路径找出关键路径 从起点到终点从起点到终点,在每个活动框的上方标出该项活动的起止时间在每个活动框的上方标出该项活动的起止时间,如图其中需时最长的路径为关键路径此例中需时最长其中需时最长的路径为关键路径此例中需时最长1515个月,关键路径如个月,关键路径如 图紫色双前头表示图紫色双前头表示249.4 9.4 进度安排进度安排(3)(3)测试测试数据数据2 2产品产品测试测试4 4测试测试计划计划2 2测试测试软件软件6 6终点终点文档文档2 2编码编码4 4设计设计4 4分析分析3 3起点起点(0,2)(0,2)(2,8)(2,8)(3,5)(3,5)(7,9)(7,9)(0,0)(0,0)(0,3)(0,3)(7,11)(7,11)(3,7)(3,7)(11,15)(11,15)(15,15)(15,15)(0,0)(0,0)(3,5)(3,5)(0,3)(0,3)(5,11)(5,11)(9,11)(9,11)(7,11)(7,11)(3,7(3,7)(11,15)(11,15)(13,15)(13,15)(15,15)(15,15)3.3.标出每个活动最迟开始时间标出每个活动最迟开始时间 从终动到起点从终动到起点,在每个活动框的下方标出该项活动最迟起止时间。

    在每个活动框的下方标出该项活动最迟起止时间如图所示如图所示259.4 9.4 进度安排进度安排(4)(4)测试测试数据数据2 2产品产品测试测试4 4测试测试计划计划2 2测试测试软件软件6 6终点终点文档文档2 2编码编码设计设计分析分析3 3起点起点(0,0)(0,0)(0,2)(0,2)(0,3)(0,3)(2,8)(2,8)(3,5)(3,5)(6,8)(6,8)(3,6)(3,6)(8,12)(8,12)(6,86,8)(12,12)(12,12)4.4.PERTPERT图的使用图的使用 (1)(1)确保关键路径上的各项活动按时完成确保关键路径上的各项活动按时完成2)(2)通过缩短关键路径上某些活动的时间,达到缩短项目开发的目的通过缩短关键路径上某些活动的时间,达到缩短项目开发的目的如图把设计时间从如图把设计时间从4 4个月缩短为个月缩短为3 3个月个月,编码从编码从4 4个月缩短为个月缩短为2 2个月个月,项目开发时间项目开发时间 从原来的从原来的1515个月缩短为个月缩短为1212个月此时个月此时REPTREPT图中出现两条关键路径对不在关键路图中出现两条关键路径对不在关键路 径上的活动,可根据需要调整起止时机,或者延缓活动的进度。

    径上的活动,可根据需要调整起止时机,或者延缓活动的进度269.4 9.4 进度安排进度安排(5)(5)活活 动动负责人负责人1 12 23 34 45 56 67 78 89 9101011111212分分 析析SESE测试计划测试计划VVVV设设 计计SESE编编 码码PGPG测试软件测试软件VVVV测试数据测试数据VVVV产品测试产品测试VVVV文文 档档SESE注注:活动开始和结束;:活动开始和结束;:活动已开始和结束;:活动已开始和结束;SESE 系统工程师;系统工程师;VVVV 质量保证人员;质量保证人员;PG PG 程序员程序员二二.GanttGantt图图 1.1.GanttGantt图是安排软件进度计划的又一种工具如图:图是安排软件进度计划的又一种工具如图:图的左边列出项目的开发活动图的左边列出项目的开发活动,上方列出日历时间在每一活动的开始和结束时上方列出日历时间在每一活动的开始和结束时 间各画一个三角形,当活动的开始和结束时候,把三角形涂实间各画一个三角形,当活动的开始和结束时候,把三角形涂实2.2.GanttGantt图优点:简单易用,容易修改,比图优点:简单易用,容易修改,比PERTPERT图更加直观方便。

    图更加直观方便3.3.GanttGantt图缺点:不能显示各项活动之间的依赖关系图缺点:不能显示各项活动之间的依赖关系279.5 9.5 质量保证质量保证(1)(1)产品运行产品运行产品产品修改修改产品产品转移转移可理解性可理解性(能理解吗能理解吗?)?)可维护性可维护性(能修复吗能修复吗?)?)灵灵 活活 性性(能改变吗能改变吗?)?)可测试性可测试性(能测试吗能测试吗?)?)可移植性可移植性(能在另外机器上使用吗能在另外机器上使用吗?)?)可重用性可重用性(能再用它的某些部分吗能再用它的某些部分吗?)?)互运行性互运行性(它能和另一系统结合吗它能和另一系统结合吗?)?)正确性正确性(能按需要工作吗能按需要工作吗?)?)风险风险(按计划能完成吗按计划能完成吗?)?)效率效率(完成预定工作需要计算机资源多吗完成预定工作需要计算机资源多吗?)?)完整性完整性(安全吗安全吗?)?)健壮性健壮性(对意外环境能作响应吗对意外环境能作响应吗?)?)可用性可用性(能使用它吗能使用它吗?)?)一一.软件质量软件质量 1.1.软件质量含义软件质量含义 (1)(1)软件与明确指定的软件与明确指定的功能和性能需求功能和性能需求的一致性;的一致性;(2)(2)软件与明确指定的软件与明确指定的文档开发标准文档开发标准的一致性;的一致性;(3)(3)软件与未明确指定的,但为全部软件所期望的软件与未明确指定的,但为全部软件所期望的隐含特性隐含特性的一致性。

    的一致性2.2.影响软件质量的因素影响软件质量的因素:产品运行产品运行、产品修改产品修改、产品转移产品转移289.5 9.5 质量保证质量保证(2)(2)二二.软件质量软件质量保证措施保证措施 1.1.软件质量保证的含义软件质量保证的含义 (1)(1)它是为检验软件产品是否满足需求而采取的一系列有组织、有计划、它是为检验软件产品是否满足需求而采取的一系列有组织、有计划、规范化的活动;规范化的活动;(2)(2)它并不能保证软件的质量它并不能保证软件的质量,而是保证履行一系列检验软件质量的活动;而是保证履行一系列检验软件质量的活动;(3)(3)它只能发现或诊断软件故障它只能发现或诊断软件故障,而纠正错误则是系统维护解决的问题;而纠正错误则是系统维护解决的问题;(4)(4)它工作贯穿软件开发的各个阶段它工作贯穿软件开发的各个阶段5)(5)它需要独立的工作小组它需要独立的工作小组,但与开发人员和用户有关但与开发人员和用户有关2.2.措施措施:评审、测试评审、测试三三.软件评审软件评审 1.1.软件评审的目标软件评审的目标2.2.软件评审的准则软件评审的准则3.3.评审的步骤:计划;概貌介绍;准备;评审会;返工;复查。

    评审的步骤:计划;概貌介绍;准备;评审会;返工;复查四四.测试测试 299.6 9.6 项目计划项目计划(1)(1)一一.项目计划的项目计划的内容内容计划计划内内 容容概述概述阶段阶段组织组织测试测试变动控制变动控制文档文档培训培训复审和报告复审和报告安装和运行安装和运行资源和配置资源和配置索引索引一般性叙述开发的项目一般性叙述开发的项目,描述计划组织描述计划组织,并简述文档其余部分内容并简述文档其余部分内容详细说明开发周期各个阶段应完成的日期及不同阶段的重叠时间详细说明开发周期各个阶段应完成的日期及不同阶段的重叠时间规定从事这个开发项目的每个小组的具体责任规定从事这个开发项目的每个小组的具体责任概述测试所需的工具,及完成系统测试的过程和分工概述测试所需的工具,及完成系统测试的过程和分工确定在系统开发过程中需求变动的管理控制机制确定在系统开发过程中需求变动的管理控制机制定义与管理与项目有关部分的文档定义与管理与项目有关部分的文档培训从事开发的程序员和使用系统的用户计划培训从事开发的程序员和使用系统的用户计划讨论如何报告项目的状况,并确定对项目进展情况进行正式复审的计划讨论如何报告项目的状况,并确定对项目进展情况进行正式复审的计划。

    描述在用户现场安装该系统的过程描述在用户现场安装该系统的过程概述关键的细节计划概述关键的细节计划进度、阶段目标和按合同规定应交付的系统配置成分进度、阶段目标和按合同规定应交付的系统配置成分309.6 9.6 项目计划项目计划(2)(2)二二.项目报告项目报告 1.1.报告报告内容内容:在这段时间内已经完成的工作;下阶段计划要完成的工作;:在这段时间内已经完成的工作;下阶段计划要完成的工作;问题范围;到目前为止已经用掉的成本;预算执行情况及其它有关信息问题范围;到目前为止已经用掉的成本;预算执行情况及其它有关信息2.2.制定项目计划时,应确立一系列制定项目计划时,应确立一系列阶段目标阶段目标在应该完成的每个阶段目标在应该完成的每个阶段目标 时时(或定期时间或定期时间),开发人员应该把正式的进展报告交给管理人员开发人员应该把正式的进展报告交给管理人员三三.变动控制变动控制 1.1.任何软件开发都是迭代过程任何软件开发都是迭代过程,即在设计软件时会发现需求说明的中问题即在设计软件时会发现需求说明的中问题,在实现过程中又会暴露出设计中的错误预先计划控制变动的机制在实现过程中又会暴露出设计中的错误。

    预先计划控制变动的机制,建建 立评价变动的影响和把发生的变动记录下来的过程是十分重要的立评价变动的影响和把发生的变动记录下来的过程是十分重要的2.2.变动通常分为两类:变动通常分为两类:(1)(1)为了改正小错误需要的变动为了改正小错误需要的变动2)(2)为了增加和删除某些功能,或者为了改变某个功能的方法而变动的为了增加和删除某些功能,或者为了改变某个功能的方法而变动的 变动3.3.高级管理人员应该注意防止在工程延期或成本超过预算时高级管理人员应该注意防止在工程延期或成本超过预算时,下级管理人下级管理人 员为勉强按原计划进行而降低质量要求的倾向员为勉强按原计划进行而降低质量要求的倾向319.7 9.7 软件管理工具软件管理工具 一一.软件管理工具软件管理工具种类种类 1.1.计划工具计划工具:主要功能包括完成成本计算主要功能包括完成成本计算,关键路径的分析等关键路径的分析等,以协助管理人员以协助管理人员 制定工程项目计划制定工程项目计划2.2.报告工具报告工具:主要功能是检索文档资料,并产生某种标准形式的报告主要功能是检索文档资料,并产生某种标准形式的报告二二.软件管理工具软件管理工具 1.1.EPRTEPRT(计划评审技术计划评审技术)软件包软件包:通用的项目管理工具通用的项目管理工具,主要用于分析关键路径。

    主要用于分析关键路径2.2.成本估算工具成本估算工具:根据给出的项目详细情况的数据之后根据给出的项目详细情况的数据之后,及历史数据及历史数据,估算出完估算出完 成需要的工作量成需要的工作量,估算出成本一般该类工具是各个软件开发组织专用的估算出成本一般该类工具是各个软件开发组织专用的3.3.项目管理系统项目管理系统:主要完成记录项目复审日期和预算;检索软件规格说明书、:主要完成记录项目复审日期和预算;检索软件规格说明书、软件设计和程序代码,编辑成相关的报告软件设计和程序代码,编辑成相关的报告4.4.故障报告系统故障报告系统:主要完成收集和整理出错情况报告;管理变动报告及其相:主要完成收集和整理出错情况报告;管理变动报告及其相 应的有关文档的修改应的有关文档的修改32第九章第九章 小小 结结 一一.软件工程管理是软件工程的重要组成部分只有进行科学的管理,软件工程管理是软件工程的重要组成部分只有进行科学的管理,才能使先进的技术发挥充分的作用对于大型的软件开发,管理才能使先进的技术发挥充分的作用对于大型的软件开发,管理 工作尤其重要工作尤其重要二二.项目管理是整个管理工作的基础,明确项目管理的智能。

    项目管理是整个管理工作的基础,明确项目管理的智能三三.了解项目管理的特点了解项目管理的特点四四.管理工作离不开度量估计成本的各种方法、计算人力需求的变化管理工作离不开度量估计成本的各种方法、计算人力需求的变化 曲线、计算进度的曲线、计算进度的PERTPERT技术和进度计划表,都是标志对软件管理从技术和进度计划表,都是标志对软件管理从 定性管理向定量管理的发展趋势定性管理向定量管理的发展趋势五五.软件的质量保证是贯穿于整个生存周期的重要的活动软件的质量保证是贯穿于整个生存周期的重要的活动六六.影响软件质量的因素是多方面的,可靠性在质量特性中占有主要的影响软件质量的因素是多方面的,可靠性在质量特性中占有主要的 地位33第九章第九章 习习 题题 1.1.软件工程管理的内容?软件工程管理的内容?2.2.软件项目有哪些特点?软件项目有哪些特点?3.3.软件成本估算的一般方法?软件成本估算的一般方法?4.4.为什么在软件开发中,不能用简单增加人员的方法来缩短开发时间?为什么在软件开发中,不能用简单增加人员的方法来缩短开发时间?5.5.影响软件质量的主要因素有哪些?影响软件质量的主要因素有哪些?6.6.本章第四节的例子是某个软件项目的本章第四节的例子是某个软件项目的PERTPERT图。

    图1)(1)找出关键路径和完成项目的最早时间;找出关键路径和完成项目的最早时间;(2)(2)标出每项活动的最早起止时间与最迟起止时间标出每项活动的最早起止时间与最迟起止时间7.7.将上题的内容改用将上题的内容改用GanttGantt图来表示图来表示。

    点击阅读更多内容
    卖家[上传人]:无极剑圣
    资质:实名认证