已阅读5页,还剩126页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第七讲GIS工程质量控制与维护 程承旗北京大学遥感所 一 质量控制 工程质量 是贯穿工程生存期的一个极为重要的问题 GIS工程中 工程质量主要是指系统开发过程中所使用的各种开发技术和验证方法的最终体现 1 软件质量的定义 有多种关于软件质量的定义 例如 ANSI IEEEStd729 1983定义软件质量为 与软件产品满足规定的和隐含的需求的能力有关的特征或特性的全体 M J Fisher定义软件质量为 所有描述计算机软件优秀程度的特性的组合 也就是说 为满足软件的各项精确定义的功能 性能需求 符合文档化的开发标准 需要相应地给出或设计一些质量特性及其组合 作为在软件开发与维护中的重要考虑因素 如果这些质量特性及其组合都能在产品中得到满足 则这个软件产品质量就是高的 软件质量反映了以下三方面的问题 1 软件需求是度量软件质量的基础 不符合需求的软件就不具备质量 2 在各种标准中定义了一些开发准则 用来指导软件人员用工程化的方法来开发软件 如果不遵守这些开发准则 软件质量就得不到保证 3 往往会有一些隐含的需求没有明确地提出来 例如 软件应具备良好的可维护性 如果软件只满足那些精确定义了的需求而没有满足这些隐含的需求 软件质量也不能保证 软件质量是各种特性的复杂组合 它随着应用的不同而不同 随着用户提出的质量要求不同而不同 因此 有必要讨论各种质量特性 以及评价质量的准则 1 2软件质量特性 软件质量特性 反映了软件的本质 讨论一个软件的质量 问题最终要归结到定义软件的质量特性 而定义一个软件的质量 就等价于为该软件定义一系列质量特性 人们通常用软件质量模型来描述影响软件质量的特性 已有多种有关软件质量的模型 它们共同的特点是把软件质量特性定义成分层模型 在这种分层的模型中 最基本的叫做基本质量特性 它可以由一些子质量特性定义和度量 二次特性在必要时又可由它的一些子质量特性定义和度量 下面是几个影响较大的软件质量模型 1 McCall质量模型 这是McCall等人于1979年提出的软件质量模型 其软件质量概念基于11个特性之上 而这11个特性分别面向软件产品的运行 修正 转移 它们与特性的关系如图1 1所示 进一步 McCall等给出了一个三层次式模型的框架 如图1 2所示 McCall等认为 特性是软件质量的反映 软件属性可用做评价准则 定量化地度量软件属性可知软件质量的McCall等人的质量特性定义如下 正确性在预定环境下 软件满足设计规格说明及用户预期目标的程度 它要求软件没有错误 可靠性软件按照设计要求 在规定时间和条件下不出故障 持续运行的程度 效率为了完成预定功能 软件系统所需的计算机资源的多少 完整性为了某一目的而保护数据 避免它受到偶然的 或有意的破坏 改动或遗失的能力 可使用性对于一个软件系统 用户学习 使用软件及为程序准备输入和解释输出所需工作量的大小 可维护性为满足用户新的要求 或当环境发生了变化 或运行中发现了新的错误时 对一个已投入运行的软件进行相应诊断和修改所需工作量的大小 可测试性测试软件以确保其能够执行预定功能所需工作量的大小 灵活性修改或改进一个已投入运行的软件所需工作量的大小 可移植性将一个软件系统从一个计算机系统或环境移植到另一个计算机系统或环境中运行时所需工作量的大小 复用性一个软件 或软件的部件 能再次用于其他应用 该应用的功能与此软件或软件部件的所完成的功能有联系 的程度 互连性连接一个软件和其他系统所需工作量的大小 如果这个软件要联网 或与其他系统通信 或要把其他系统纳入到自己的控制之下 必须有系统间的接口 使之可以联结 互连性很重要 它又称相互操作性 对以上各个质量特性直接进行度量是很困难的 在有些情况下甚至是不可能的 因此 McCall定义了一些评价准则 使用它们对反映质量特性的软件属性分级 以此来估计软件质量特性的值 软件属性一般分级范围从o 最低 到10 最高 各评价准则定义如下 可跟踪性在特定的开发和运行环境下 跟踪设计表示或实际程序部件到原始需求的 可追溯 能力 完备性软件需求充分实现的程度 一致性在整个软件设计与实现的过程中技术与记号的统一程度 安全性防止软件受到意外的或蓄意的存取 使用 修改 毁坏 或防止泄密的程度 容错性系统出错 机器临时发生故障或数据输入不合理 时 能以某种预定方式 做出适当处理 得以继续执行和恢复系统的能力 它又称健壮性 准确性能达到的计算或控制精度 它又称精确性 简单性在不复杂 可理解的方式下 定义和实现软件功能的程度 执行效率为了实现某个功能 提供使用最少处理时间的程度 存储效率为了实现某个功能 提供使用最少存储空间的程度 存取控制软件对用户存取权限的控制方式达到的程度 存取审查软件对用户存取权限的检查程度 操作性操作软件的难易程度 它通常取决于与软件操作有关的操作规程 以及是否提供有用的输入 输出方法 易训练性软件辅助新的用户使用系统的能力 这取决于是否提供帮助用户熟练掌握软件系统的方法 它又称可培训性或培训性 简明性软件易读的程度 这个特性可以帮助人们方便地阅读自己或他人编制的程序和文档 它又称可理解性 模块独立性软件系统内部接口达到的高内聚 低耦合的程度 自描述性对软件功能进行自身说明的程度 亦称自含文档性 结构性软件能达到的结构良好的程度 文档完备性软件文档齐全 描述清楚 满足规范或标准的程度 通用性软件功能覆盖面宽广的程度 可扩充性软件的体系结构 数据设计和过程设计的可扩充的程度 可修改性软件容易修改 而不致于产生副作用的程度 自检性软件监测自身操作效果和发现自身错误的能力 它又称工具性 机器独立性不依赖于某个特定设备及计算机而能工作的程度 它又称硬件独立性 软件系统独立性软件不依赖于非标准程序设计语言特征 操作系统特征 或其他环境约束 仅靠自身能实现其功能的程度 它又称软件独立性或自包含性 通信共享性使用标准的通信协议 接口和带宽的标准化的程度 数据共享性使用标准数据结构和数据类型的程度 通信性提供有效的I O方式的程度 需要特别注意的是 正确性和容错性是相互补充的 正确的程序不一定是可容错的程序 反过来 可容错的程序不一定是完全正确的程序 这就要求一个可靠的软件系统应当在正常的情况下能够正确地工作 而在意外的情况下 也能做出适当的处理 隔离故障 尽快地恢复 这才是一个好的程序 此外 有人在灵活性中加了一个评价准则 叫做 可重配置特性 它是指软件系统本身各部分的配置能按用户要求实现的容易程度 在简明性中也加了一个评价准则 即 清晰性 它是指软件的内部结构 内部接口要清晰 人 机界面要清晰 在表1 1中给出的各个评价准则应取什么值 是由特定产品的性质和它们之间的相互关系来确定的 2 ISO的软件质量评价模型 按照ISO TC97 SC7 WG3 1985 1 30 N382 软件质量度量模型由三层组成 参看图ISO认为 应对高层和中层建立国际标准 在国际范围内推广软件质量管理 SQM 技术 而低层可由各使用单位视实际情况制定 ISO的三层次模型来自McCall等人的模型 高层 中层和低层分别对应于McCall模型中的特性 度量准则和度量 其中 SQRC由8个元素组成 如图1 3所示 由于许多人纷纷提出意见 按1991年ISO发布的ISO IEC9126质量特性国际标准 SQRC已降为6个 在这个标准中 三层次中的第一层为称为质量特性 第二层称为质量子特性 第三层称为度量 该标准定义了6个质量特性 即功能性 可靠性 可维护性 效率 可使用性 可移植性 并推荐了21个子特性 如适合性 准确性 互用性 依从性 安全性 成熟性 容错性 可恢复性 可理解性 易学习性 操作性 时间特性 资源特性 可分析性 可变更性 稳定性 可测试性 适应性 可安装性 一致性 可替换性 但不作为标准 3 上海软件中心 SSC 的软件质量度量模型 在SSC模型中 采用了与ISO IEC9126相同的6个质量特性 它们分别是功能性 iE确性 可靠性 易使用性 效率 可维护性和可移植性 同时设置了22个质量子特性 是参照Mc Call模型定义的 包括精确性 准确性 健壮性 容错性 安全性 完备性 一致性 通信有效性 在执行功能时 使用最少通信资源的的程度 设备有效性 为实现某一功能 提供使用最少设备 包括存储设备和外部设备资源的程度 执行有效性 执行效率 操作性 培训性 易训练性 可追踪性 可见性 自检性 硬件系统无关性 机器独立性 软件系统无关性 软件独立性 可扩充性 产品文档完备性 公用性 提供使用协议 例程 数据结构的接口标准的程度 包括数据共享性和通信共享性 清晰性 提供不复杂 可理解的方式对程序结构做出清晰明了的描述的程度 模块性 简单性 自描述性 结构性 它们之间的关系参看表1 2 1 3软件质量特性之间的竞争 在软件的质量特性与质量特性之间 质量特性与质量子特性之间存在着有利的影响和不利的影响 表1 3给出了质量特性与质量特性之间的有利影响和不利影响 例如 由于效率的要求 应尽可能采用汇编语言 但是用汇编语言编制出的程序 可靠性 可移植性以及可维护性都很差 若用 表示该质量子特性属于某质量特性的组合中 用 表示该质量子特性对质量特性有有利影响 用表示不利影响 则有下面表1 4所示的关系 在进行软件质量设计时 必须考虑利弊 全面权衡 根据质量需求 适当合理地选择 设计质量特性 并进行评价 2软件质量的度量和评价 2 1软件质量的度量软件质量特性度量有两类 预测型和验收型 预测度量是利用定量的或定性的方法 对软件质量的评价值进行估计 以得到软件质量的比较精确的估算值 它是用在软件开发过程中的 而验收度量则是在软件开发各阶段的检查点 对软件的要求质量进行确认性检查的具体评价值 它可以看成是对预测度量的一种确认 是对开发过程中的预测进行评价 预测度量有两种 第一种叫做尺度度量 这是一种定量度量 它适用于一些能够直接度量的特性 例如 出错率定义为 错误数 KIOC 单位时间 一般它作为相对量进行度量 第二种叫做二元度量 这是一种定性度量 它适用于一些只能间接度量的特性 例如 可使用性 灵活性等等 通常 对质量特性制定检查表 通过对照检查项目 确定一种质量特性的有无 例如 在设计和编码阶段的复杂性度量 利用尺度度量方法来做 而对模块复杂性的度量采用Mc Cabe环路度量 基本思想是基于程序的分支 循环 顺序等控制结构来估算模块中的结构上的复杂性 其检查表如图1 4 a 所示 又例如图1 4 b 给出了评价设计文档是否完备的检查表 这是二元度量的例子 我们对检查表中每一项都应给以记分 指定信息存在时记 1 否则记 o 表中所有各项的分数相加 即得度量结果 用尺度度量时 填 值 这一栏 用二元度量时 填 是 否 这一栏 2 2软件质量评价 定量地评价软件的质量 目前还不能精确地做到 一般采取由若干 6 10 位软件专家进行打分来评价 这些软件专家应是富有实际经验的项目带头人 软件质量评价分两步走 1 评分1 肯定为 1 否定为 0 2 分等级A B C 若数量化 最高为 l 最低为 0 中间可用分数或小数标志各个等级 进行打分 评分主要是依据软件实际成果进行的 由于软件使用环境不同 使用目的不同 各人打分会有一定差别 在计算打分的平均值X与标准偏差S时 要考虑各质量指标的权值 例如 表10 5给出了在编码阶段完成时 由A B C D E F等六位专家做质量评价时所打的分数及计算出来的X S 由X可知 可靠性 功能性 可测试性 可修改性 可移植性 效率 可使用性 2 分析结果根据评分的结果 对照评价指标 检查某个质量特性是否达到了要求的质量标准 质量特性的得分低于规定的质量指标有两个可能的原因 1 该质量特性与其他质量特性冲突 而那些质量特性正好很重要 2 这个软件部分有质量问题 对于前一个原因 检查该质量特性是否与其他质量指标高的特性相冲突 若发生冲突 则再权衡它的重要度 决定是否需要修改权值 如果没有发生冲突 或者与它发生冲突的那些质量特性的质量指标都不太高 这时应再检查度量工作表及评分 若分数太低 则说明软件有缺陷 在设计时对某些质量特性注意不够 需要加以改进 3 软件质量保证 进入80年代以来 软件质量问题开始提到重要议事日程上 一些在硬件领域成功地实施了全面质量管理的部门开始了对软件实行相应的质量管理尝试 并取得了成功的经验 3 1质量保证的概念 什么是质量保证 它是为保证产品和服务充分满足消费者要求的质量而进行的有计划 有组织的活动 质量保证是面向消费者的活动 是为了使产品实现用户要求的功能 站在用户立场上来掌握产品质量的 这种观点也适用于软件的质量保证 软件的质量保证就是向用户及社会提供满意的高质量的产品 也就是满足1 1节所述的各项质量特性的产品 进一步地 软件的质量保证活动也和一般的质量保证活动一样 是确保软件产品从诞生到消亡为止的所有阶段的质量的活动 即为了确定 达到和维护需要的软件质 量而进行的所有有计划 有系统的管理活动 它包括的主要功能如 质量方针的制定和展开 质量保证方针和质量保证标准的制定 质量保证体系的建立和管理 明确各阶段的质量保证工作 各阶段的质量评审 确保设计质量 重要质量问题的提出与分析 总结实现阶段的质量保证活动 整理面向用户的文档 说明书等 产品质量鉴定 质量保证系统鉴定 质量信息的收集 分析和使用 3 2软件质量保证的主要任务 为了提高软件的质量和软件的生产率 软件质量保证的主要任务大致可归结为8点 1 用户要求定义 软件质量保证人员必须熟练掌握正确定义用户要求的技术 包括熟练使用和指导他人使用定义软件需求的支持工具 必须十分重视领导全体开发人员收集和积累有关用户业务领域的各种业务的资料和技术技能 2 力争不重复劳动 利用已有软件成果是提高软件质量和软件生产率的重要途径 为此 不要只考虑如何开发新软件 而首先应考虑哪些既有软件可以复用 并在开发过程中 随时考虑所生产软件的复用性 3 掌握开发新软件的方法 对开发新软件的方法已经过长期的探索和积累 最普遍公认的成功方法就是软件工程学方法 标准化 设计方法论 工具化等都属此列 应当在开发新软件的过程中大力使用和推行软件工程学中所介绍的开发方法和工具 4 组织外部力量协作 一个软件自始至终由同一软件开发单位来开发也许是最理想的 但在现实中常常难以做到 因此需要改善对外部协作部门的开发管理 必须明确规定进度管理 质量管理 交接检查 维护体制等各方面的要求 建立跟踪检查的体制 5 排除无效劳动 最大的无效劳动是因需求规格说明有误 设计有误而造成的返工 定量记录返工工作量 收集和分析返工劳动花费的数据非常重要 另一种较大的无效劳动是重复劳动 即相似的软件在几个地方同时开发 这多是因软件开发计划不当 或者开发信息不流畅造成的 为此 要建立互相交流 信息往来通畅 具横向交流特征的信息流通网 6 发挥每个开发者的能力 软件生产是人的智能生产活动 它依赖于人的能力和开发组织团队的能力 开发者必须有学习各专业业务知识 生产技术和管理技术的能动性 管理者或产品服务者要制定技术培训计划 技术水平标准 以及适用于将来需要的中长期技术培训计划 7 提高软件开发的工程能力 要想生产出高质量的软件产品必须有高水平的软件工程能力 即在软件开发环境或软件工具箱的支持下 运用先进的开发技术 工具和管理方法开发软件的能力 8 提高计划和管理质量 对于大型软件项目来说 提高工程项目管理能力极其重要 提高管理能力的方法是重视和强化项目开发初期计划阶段的项目计划评价 计划执行过程中及计划完成报告的评价 将评价 评审工作在工程实施之前就列入整个开发工程的工程计划之中 正确地评价开发计划和实施结果 不仅可以提高软件开发项目管理的精确度 还可以积累项目管理经验资料 提高日后进行项目预算的精确度 所以对 计划 的质量管理非常重要 3 3质量保证与检验 1 检验在质量保证中的作用软件质量必须在设计和实现过程中加以保证 如果工程能力不够 或者由于各种失误导致产生软件差错 其结果就会产生软件失效 为了确保每个开发过程的质量 防止把软件差错传递到下一个过程 必须进行质量检验 2 各个开发阶段中的检验为了切实做好质量保证 要在软件开发工程的各个阶段实施检验 检验的实施有两种形式 实际运行检验 即白盒测试和黑盒测试 和鉴定 可在各开发阶段中结合起来使用 各开发阶段及阶段中的检验如表1 6所示 1 4软件质量保证体系 软件的质量保证活动 是涉及各个部门的部门间的活动 例如 如果在用户处发现了软件故障 产品服务部门就应听取用户的意见 再由检查部门调查该产品的检验结果 进而还要调查软件实现过程的状况 并根据情况检查设计是否有误 对不当之处加以改进 防止再次发生问题 为了顺利开展以上活动 事先明确部门间的质量保证业务 确立部门间的联合与协作的机构十分重要 这个机构就是质量保证体系 图1 5和1 6是软件质量保证体系的图例 在质量保证体系图上 用户 领导 各部门横向安排 而纵向则顺序列出软件质量保证活动的各项工作 制定质量体系保证图应注意以下一些问题 1 必须明确反馈途径 2 必须在体系图的纵向 纵坐标方向 顺序写明开发阶段 在横向 横坐标方向 写明组织机构 明确各部门的职责 3 必须确定保证系统运行的方法 工具 有关文档资料 以及系统管理的规程和标准 4 必须明确决定是否可向下一阶段进展的评价项目和评价准则 5 必须不断地总结系统管理的经验教训 改进系统 仅靠质量保证体系图很难明确具体工作 因此必须制定质量保证计划 在这个计划中确定质量目标 确定在每个阶段为达到总 目标所应达到的要求 对进度做出安排 确定所需的人力 资源和成本等等 质量保证计划的主要条目如下 在这个质量保证计划中包括的软件质量保证规程和技术准则应当 1 指示在何时 何处进行文档检查和程序检查 2 指示应当采集哪些数据 以及如何进行分析处理 例如 在每次评审和测试中发现的错误如何修正 3 描述希望得到的质量度量 4 规定在项目的哪个阶段进行评审及如何评审 5 规定在项目的哪个阶段应当产生哪些报告和计划 6 规定产品各方面测试应达到的水平 1 5质量保证的实施 软件质量保证的实施需要从纵向和横向两个方面展开 一方面要求所有与软件生存期有关的人员都要参加 另一方面要求对产品形成的全过程进行质量管理 这要求整个软件部门齐心协力 不断完善软件的开发环境 此外还需要与用户共同合作 5 1质量目标与度量 为了开发高质量的软件 从计划阶段开始 不但需要明确软件的功能 还要明确软件应达到什么样的质量标准 即制定软件的质量目标 为了达到这些目标 在开发过程的各个阶段进行检查和评价 在做质量评价时 需要有对质量进行度量的准则和方法 但更重要的是 需要有在软件生存期中如何使用这些准则和方法的质量保证步骤及提高该项作业生产率的工具 5 2质量度量方法 软件的质量评价标准分为三级 质量需求评价准则 质量设计评价准则 质量度量准则 参看1 1节ISO质量模型 质量需求准则的着眼点是 是否满足用户的要求 质量设计准则的着眼点是 开发者在设计实现时是否按软件需求保证了质量 而质量度量准则是为定量度量质量而规定的一些检查项目 它们一级比一级具体 一级比一级易于定量评价 每一级质量准则可因用户 开发者 评价者和评价观点的不同而不同 软件质量度量的方法有三种 精密度量 全面度量和简易度量 它们应针对质量目标中给出的评价准则的重要度分别采用 精密度量是使用质量度量评价准则进行详细度量 工作量较大但度量精度也高 全面度量比较简单 可以与简易度量并用对各个质量设计评价准则进行度量 度量工作量可以控制在一定范围之内 质量准则与度量方法的关系如图1 7所示 图1 8给出软件质量度量和保证系统在质量保证活动中的五个实施步骤 1 Target 以用户要求和开发方针为依据 对质量需求准则 质量设计准则的各质量特性设定质量目标 对各准则的重要程度可以设 特别重要 重要 一般 三级 2 Plan 设定适合于待开发软件的评测检查项目 质量评价准则 质量度量表参看l 2节 考虑到评价工作量 检查项目数一般设定20一30个 同时还要研讨实现质量目标的方法 3 Do 在开发标准和质量评价准则的指导下 制作高质量的规格说明书和程序 在接受质量检查之前要先做自我检查 4 Check 以Plan阶段设定的质量评价准则进行评价 算出得分 用质量图的形式表示出来 参看图1 9 比较评价结果的质量得分和质量目标 看其是否合格 5 Action 对评价发现的问题进行改进活动 如果实现并达到了质量目标就转入下一个开发阶段 这样重复 Plan 到 Action 的过程 直到整个开发项目完成 5 3软件质量管理小组 软件质量管理小组 SQWC 是一种软件开发组织形式 它可以是主程序员领导下的结构化小组 也可以是民主制的开发组 在软件工程过程中提倡它是基于以下几个原因 1 最适合提高个人能力和小组力量 美国TRW公司的B W Boehm在IEEE的电子计算机刊物上发表了有关软件生产率影响因素分析的研究成果 参看图1 10 他的结论是 个人和小组的能力对软件生产率的影响最大 好与不好的小组 差别是乙18倍 当然这个数字有其局限性 但无论如何 软件的生产率确实会因个人能力和小组能力而产生4倍的差异 有时还会有更大的差别 高达20 30倍 软件的质量管理小组的活动 是解决这个最大问题的极好方法 计算机语言掌握得怎样 对生产率的影响充其量不过1 2倍 无论使用多么好的软件工具 生产率的提高范围也只能在50 左右 但个人能力和小组活动对软件的生产率影响极大 因此 要提高软件的生产率 最有效的方法是开展利用小组进行自身启发的软件质量管理活动 2 能够在工程上比硬件更好地提高质量 硬件的质量保证活动 主要在制造工程中进行 把 是否准确地按照设计图纸 没有误差地进行制造 的制造质量视为关键 软件质量保证的对象几乎全部是设计质量 所以 通过开展以设计工程的技术人员为中心的质量管理活动 能够从根本上保证质量 3 关系到提高积极性 软件开发活动的实践表明 靠一个人很难完成的工作 若成立小组来做 则轻而易举就能解决问题 生产软件的是人 人有无工作热情和干劲 其结果是很明显的 一个好的软件管理人员 应能给小组带来活力 提高士气 二 软件维护 在软件开发完成交付用户使用后 就进入软件运行 维护阶段 此后的工作就是要保证软件在一个相当长的时期能够正常运行 这样对软件的维护就成为必不少的了 2 1软件维护的概念 2 1 1软件维护的定义人们称在软件运行 维护阶段对软件产品所进行的修改就是维护 要求进行维护的原因多种多样 归结起来有三种类型 1 改正在特定的使用条件下暴露出来的一些潜在程序错误或设计缺陷 2 因在软件使用过程中数据环境发生变化 例如一个事务处理代码发生改变 或处理环境发生变化 例如安装了新的硬件或操作系统 需要修改软件以适应这种变化 3 用户和数据处理人员在使用时常提出改进现有功能 增加新的功能 以及改善总体性能的要求 为满足这些要求 就需要修改软件把这些要求纳入到软件之中 1 改正性维护 Correctivemaintenance 在软件交付使用后 由于开发时测试的不彻底 不完全 必然会有一部分隐藏的错误被带到运行阶段来 这些隐藏下来的错误在某些特定的使用环境下就会暴露 为了识别和纠正软件错误 改正软件性能上的缺陷 排除实施中的误使用 应当进行的诊断和改正错误的过程 就叫做改正性维护 例如 改正性维护可以是改正原来程序中未使开关 off on 复原的错误 解决开发时未能测试各种可能情况带来的问题 解决原来程序中遗漏处理文件中最后一个记录的问题等 2 适应性维护 Adaptivemaintenance 随着计算机的飞速发展 外部环境 新的硬 软件配置 或数据环境 数据库 数据格式 数据输入 输出方式 数据存储介质 可能发生变化 为了使软件适应这种变化 而去修改软件的过程就叫做适应性维护 例如 适应性维护可以是为现有的某个应用问题实现一个数据库 对某个指定的事务编码进行修改 增加字符个数 调整两个程序 使它们可以使用相同的记录结构 修改程序 使其适用于另外一种终端 3 完善性维护 Perfectivemaintenance 在软件的使用过程中 用户往往会对软件提出新的功能与性能要求 为了满足这些要求 需要修改或再开发软件 以扩充软件功能 增强软件性能 改进加工效率 提高软件的可维护性 这种情况下进行的维护活动 叫做完善性维护 例如 完善性维护可能是修改一个计算工资的程序 使其增加新的扣除项目 缩短系统的应答时间 使其达到特定的要求 把现有程序的终端对话方式加以改造 使其具有方便用户使用的界面 改进图形输出 增加联机求助 HELP 功能 为软件的运行增加监控设施 4 预防性维护 Preventivemaintenance 除了以上三类维护之外 还有一类维护活动 叫做预防性维护 这是为了提高软件的可维护性 可靠性等 为以后进一步改进软件打下良好基础 通常 预防性维护定义为 把今天的方法学用于昨天的系统以满足明天的需要 也就是说 采用先进的软件工程方法对需要维护的软件或软件中的某一部分 重新 进行设计 编制和测试 2 1 2影响维护工作量的因素 在软件的维护过程中 需要花费大量的工作量 从而直接影响了软件维护的成本 因此 应当考虑有哪些因素影响软件维护的工作量 相应应该采取什么维护策略 才能有效地维护软件并控制维护的成本 在软件维护中 影响维护工作量的程序特性有以下6种 1 系统大小 2 程序设计语言 3 系统年龄 4 GIS平台和数据库技术的应用 5 先进的软件开发技术 6 其他 例如 应用的类型 数学模型 任务的难度 开关与标记 IF嵌套深度 索引或下 标数等 对维护工作量都有影响 2 1 3软件维护的策略 根据影响软件维护工作量的各种因素 针对三种典型的维护 JamesMartin等提出了些策略 以控制维护成本 1 改正性维护 通常要生成100 可靠的软件并不一定合算 成本太高 但通过使用新技术 可大大提高可靠性 并减少进行改正性维护的需要 这些技术包括 数据库管理系统 软件开发环境 程序自动生成系统 较高级 第四代 的语言 应用以上4种方法可产生更加可靠的代码 此外 1 利用应用软件包 可开发出比由用户完全自己开发的系统可靠性更高的软件 2 结构化技术 用它开发的软件易于理解和测试 3 防错性程序设计 把自检能力引入程序 通过非正常状态的检查 提供审查跟踪 4 通过周期性维护审查 在形成维护问题之前就可确定质量缺陷 2 适应性维护 这一类的维护不可避免 但可以控制 1 在配置管理时 把硬件 操作系统和其他相关环境因素的可能变化考虑在内 可以减少某些适应性维护的工作量 2 把与硬件 操作系统 以及其他外围设备有关的程序归到特定的程序模块中 可把因环境变化而必须修改的程序局部于某些程序模块之中 3 使用内部程序列表 外部文件 以及处理的例行程序包 可为维护时修改程序提供方便 2 1 4维护成本 有形的软件维护成本是花费了多少钱 而其他非直接的维护成本有更大的影响 例如 无形的成本可以是 1 一些看起来是合理的修复 但修改请求不能及时安排 使得客户不满意 2 变更的结果把一些潜在的错误引入正在维护的软件 使得软件整体质量下降 3 当必须把软件人员抽调到维护工作中去时 就使得软件开发工作受到干扰 软件维护的工作有时只有极低的生产率 用LOC 人月或功能点 人月度量 这种情况在做老程序的维护时就会遇到 有报告说 生产率将降到原来的40分之一 例如 为开发每一行源代码要耗资25 oo美元 而维护每一行源代码则需要耗资1000 00美元 维护工作量的模型 M P Kec d其中 M是维护中消耗的总工作量 P是上面描述的生产性工作量 K是一个经验常数 c是因缺乏好的设计和文档而导致复杂性的度量 d是对软件熟悉程度的度量 这个模型指明 如果使用了不好的软件开发方法 未按软件工程要求做 原来参加开发的人员或小组不能参加维护 则工作量 及成本 将按指数级增加 2 2软件维护活动软件如何进行维护 应当如何组织维护活动 以便有效地完成软件维护的任务 这是此节要讨论的问题 为了有效地进行软件维护 应事先就开始做组织工作 首先需要建立维护的机构 申明提出维护申请报告的过程及评价的过程 为每一个维护申请规定标准的处理步骤 还必须建立维护活动的登记制度以及规定评价和评审的标准 2 2 1维护机构 除了较大的软件开发公司外 通常在软件维护工作方面 并不保持一个正式的组织机构 维护往往是在没有计划的情况下进行的 虽然不要求建立一个正式的维护机构 但是在开发部门 确立一个非正式的维护机构则是非常必要的 例如图2 3就是一个维护机构的组织方案 2 2 2软件维护申请报告 所有软件维护申请应按规定的方式提出 软件维护组织通常提供维护申请报告 MRP MaintenanceRequestForm 或称软件问题报告 由申请维护的用户填写 如果遇到一个错误 用户必须完整地说明产生错误的情况 包括输入数据 错误清单以及其他有关材料 如果申请的是适应性维护或完善性维护 用户必须提出一份修改说明书 列出所有希望的修改 维护申请报告将由维护管理员和系统监督员来研究处理 维护申请报告是由软件组织外部提交的文档 它是计划维护工作的基础 软件组织内部应相应地做出软件修改报告 SCR SoftwareChangeReport 指明 1 所需修改变动的性质 2 申请修改的优先级 3 为满足某个维护申请报告 所需的工作量 4 预计修改后的状况 软件修改报告应提交修改负责人 经批准后才能开始进一步安排维护工作 2 2 3软件维护工作流程 软件维护工作流程如图4所示 2 2 4维护档案记录 为了估计软件维护的有效程度 确定软件产品的质量 同时确定维护的实际开销 需要在维护的过程中做好维护档案记录 其内容包括程序名称 源程序语句条数 机器代码指令条数 所用的程序设计语言 程序安装的日期 程序安装后的运行次数 与程序安装后运行次数有关的处理故障次数 程序改变的层次及名称 修改程序所增加的源程序语句条数 修改程序所减少的源程序语句条数 每次修改所付出的 人时 数 修改程序的日期 软件维护人员的姓名 维护申请报告的名称 维护类型 维护开始时间和维护结束时间 花费在维护上的累计 人时 数 维护工作的净收益等 对每项维护任务都应该收集上述数据 2 2 5维护评价 评价维护活动比较困难 因为缺乏可靠的数据 但如果维护的档案记录做得比较好 就可以得出一些维护 性能 方面的度量值 可参考的度量值如 每次程序运行时的平均出错次数 花费在每类维护上的总 人时 数 每个程序 每种语言 每种维护类型的程序平均修改次数 因为维护 增加或删除每个源程序语句所花费的平均 人时 数 用于每种语言的平均 人时 数 维护申请报告的平均处理时间 各类维护申请的百分比 2 8软件配置管理 SoftwareConfigurationManagement 在软件的变更加剧了项目中软件工程师间的混乱 之所以产生混乱 是因为在进行变更前没有仔细分析 或没有进行变更控制 Babich曾经这样说过 协调软件开发使得混乱减小的技术叫做配置管理 配置管理是一种标识 组织和控制修改的技术 目的是使错误达到最小并最有效地提高生产率 软件配置管理 简称SCM 是一种 保护伞 活动 它应用于整个软件工程过程 因为变在任何时刻都可能发生 因此SCM活动的目标就是为了 1 标识变更 2 控制变更 3 确保变更正确地实现 4 向其他有关的人报告变更 软件维护和软件配置管理之间的区别是 维护是一组软件工程活动 它们发生于软件以交付给用户并已投入运行之后 软件配置管理是一组追踪和控制活动 它们开始于软件开发项目始之时 结束于软件被淘汰之时 2 8 1软件配置管理 软件工程过程的输出有三种信息 1 计算机程序 源程序及目标程序 2 描述计算机程序的文档 包括技术文档和用户文档 3 数据结构 在软件工程过程中产生的所有的信息项 文档 报告 程序 表格 数据 就构成了软件配置 软件配置是软件的具体形态在某一时刻的瞬时影像 这样的具体形态取两种形式 1 不可直接执行的材料 如书写的文档 程序清单 测试数据 测试结果等 2 可直接执行的材料 如目标代码 数据库信息等 它们可由计算机处理 存于某种存储介质上 随着软件工程过程的进展 软件配置项 SoftwareConfigurationItem SCI 数目快速增加 系统规格说明可繁衍出软件项目实施计划和软件需求规格说明 还有与硬件相关的文档 它们又依次繁衍出建立信息层次的其他文档 如果每个SCl只是简单地产生其他SCI 造成的混乱可能微乎其微 然而在变更时会引入其他影响因素 使得情况就变得复杂起来 SCM是一组管理整个软件生存期中变更的活动 SCM可以视为一种质量保证活动 它应用于整个软件工程过程的所有阶段 下面将介绍主要的SCM任务 1 基线 Baseline 基线是软件生存期中各开发阶段末尾的特定点 又称里程碑 Milestone 由正式的技术评审而得到的SCI协议和软件配置的正式文本才能成为基线 它的作用是把各阶段工作的划分更加明确化 使本来连续的工作在这些点上断开 以便于检验和肯定阶段成果 例如 明确规定不允许跨越里程碑修改另一阶段的文档 如图11所示 是软件开发各阶段的基线 一旦一个SCI成为基线 就把它存放到项目数据库 亦称项目信息库或软件仓库 中 当一位软件组织成员想要对基线SCI进行修改时 就把它从项目数据库中复制到该工程师的专用工作空间 privateworkspace 中 如图12所示 图中把一个标号为B的SCI从项目数据库复制到工程师的专用工作空间中 这个活动记录在一个记事文件中 工程师可以在B B的副本 上完成要求的变更 然后用B 来更新B 有些系统中把这个基线SCI锁定 在变更完成 评审和批准之前 不许对它做任何操作 2 软件配置项SCI软件配置管理的对象就是SCI一软件配置项 它们是软件工程过程中产生的信息项 在极端情况下 可把一个SCI看成是一个大规格说明中的一节或一个大测试用例组中的一个测试用例 比较通用的情况是把一个文档 一整个测试用例组 一个有名字的程序部件 如PAS CAI 过程或Ada包 看成是一个SCI 以下的SCI是SCM的对象 并可形成基线 系统规格说明软件项目实施计划软件需求说明 可执行的或 书面 的原型初步的用户手册设计规格说明 数据设计 体系结构设计 模块设计 接口设计 对象描述 使用面向对象技术时 源代码清单测试计划和过程 测试用例和测试结果记录操作和安装手册可执行程序 可执行程序模块 连接模块 数据库描述 模式和文件结构 初始内容 正式的用户手册维护文档 软件问题报告 维护请求 工程变更次序 软件工程标准项目开发总结 在实现SCM时 把SCI组织成配置对象 在项目数据库中用一个单一的名字来组织它们 一个配置对象有一个名字和一组属性 并通过某些联系 连接 到其他对象 如图13所示 图中分别对配置对象 设计规格说明 数据模型 模块N 源代码 和 测试规格说明 进行了定义 每个对象与其他对象的联系用箭头表示 这些箭头指明了一种构造关系 即 数据模型 和 模块N 是 设计规格说明 的一部分 双向箭头则表明一种相互关系 如果对 源代码 对象作了一个变更 软件工程师就可以根据这种相互关系确定 其他哪些对象 和SCl 可能受到影响 3 软件配置管理的过程软件配置管理 SCM 除了担负控制变更的责任之外 它还要担负标识单个的SCI和软件各种版本 审查软件配置以保证开发得以正常进行 以及报告所有加在配置上的变更等任务 有关SCM 需要考虑这样一些问题 1 采用什么方式来标识和管理许多已存在程序 和它们的文档 的各种版本 使得变更能够有效地实现 2 在软件交付用户之前和之后如何控制变更 3 谁有权批准和对变更安排优先级 4 如何保证变更得以正确地实施 5 利用什么办法来估计变更可能引起的其他问题 这些问题归结到SCM的5个任务 即标识 版本管理 变更控制 配置审计和配置报告 为了方便对软件配置的各个片段 即SCl进行控制和管理 不致造成混乱 首先应给它们命名 再利用面向对象的方法组织它们 通常需要标识两种类型的对象 基本对象与复合对象基本对象是由软件工程师在分析 设计 编码和测试时所建立的 文本单元 例如 基本对象可能是需求规格说明中的一节 个模块的源程序清单 一组用来测试一个等价类的测试用例 复合对象则是基本对象或其他复合对象的一个收集 如图13所示 设计规格说明 是 个复合对象 它是一些基本对象 如 数据模型 模块N 的收集 每个对象可用一组信息来唯 地标识它 这组信息包括 名字 描述 一组 资源 实现 对象的名字是 个字符串 它明确地标识对象 对象描述是一个表项 它包括 对象所表示的SCI类型 如文档 程序 数据 项目标识 变更和 或版本信息 资源是 由对象所提供的 处理的 引用的或其他所需要的一些实体 例如 数据类型 特定函数 甚至变量名都可以看做是对象资源 而 实现 对于一个基本对象来说 是指向 文本单元 的指针 而对于复合对象来说 则为null 空 整个软件工程过程中所涉及的软件对象都必须加以标识 在对象成为基线以前可能要做多次变更 在成为基线之后也可能需要频繁地变更 这样对于每一配置对象都可以建立一个演变图 这个演变图记叙了对象的变更历史 以图14为例 配置对象1 o经过修改 2 8 3版本控制 版本控制利用工具来管理在软件工程过程中所建立起来的配置对象的不同版本 Clemm描述SCM环境中的版本控制说 配置管理允许用户选择适当的版本来确定软件系统的配置 这可以通过把一些属性结合到各个软件版本上 再通过描述所希望的属性集合来确定 或构造 所想要的配置 2 8 4变更控制 软件生存期内全部的软件配置是软件产品的真正代表 必须使其保持精确 软件工程过程中某一阶段的变更 均要引起软件配置的变更 这种变更必须严格加以控制和管理 保持修改信息 并把精确 清晰的信息传递到软件工程过程的下一步骤 变更控制包括建立控制点和建立报告与审查制度 对于一个大型的软件来说 不加控制的变更很快就会引起混乱 因此变更控制是一项最重要的软件配置任务 图17给出了变更控制的过程 2 8 5配置状态报告 ConfiguratiStatusReport CSR 为了清楚 及时地记载软件配置的变化 不致于到后期造成贻误 需要对开发的过程作出系统的记录 以反映开发活动的历史情况 这就是配置状态登录的任务 2 8 6配置审核 ConfigurationAudit 软件的完整性 是指开发后期的软件产品能够正确地反映用户所提出的对软件的要求 软件配置审核的目的就是要证实整个软件生存期中各项产品在技术上和管理上的完整性 同时 还要确保所有文档的内容变动不超出当初确定的软件要求范围 使得软件配置具有良好的可跟踪性 软件配置审查提出并解答以下问题 1 在工程变更顺序中规定的变更是否已经做了 每个附加修改是否已经纳入 2 正式技术评审是否已经评价了技术正确性 3 是否正确遵循了软件工程标准 4 在SCI中是否强调了变更 是否说明了变更日期和变更者 配置对象的属性是否反映了变更 5 是否遵循了标记变更 记录变更 报告变更的软件配置管理过程 6 所有相关的SCI是否都已正确地做了更新 2 8 7软件配置管理工具PVCS PVCS是美国INTERSOLD公司的产品 是一个贯穿整个软件工程过程的面向开发团队的SCM系统 它适用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年超星尔雅学习通《领导力与决策思维》考试备考题库及答案解析
- 2025年超星尔雅学习通《供应链风险管控》考试备考题库及答案解析
- 2025年冷链管理数字化转型报告
- 2025年超星尔雅学习通《网络舆论监管与言论自由》考试备考题库及答案解析
- 2025年超星尔雅学习通《团队协作与沟通》考试备考题库及答案解析
- 中小学心理健康教育教材分析
- PLC常用操作指令手册
- 汽车美容技术培训考试题库
- 人力资源行政标准操作流程大全
- 基于立体匹配的景深提取与动态场景虚拟视角合成技术的深度算法解析与实践
- 预防流感的中医保健与养生方法
- 作文方格纸400字
- 玉米青贮技术培训资料
- 国家公务员考试申论真题副省级
- 2023-2024学年广西壮族自治区柳州市小学语文二年级期末通关考试题详细参考答案解析
- 审计模拟实训教程第4版马春静课后部分参考答案
- 疾控中心专业试题及答案
- 12123交管学法减分考试题库及答案
- GB/T 16951-1997金刚石绳索取心钻探钻具设备
- GA/T 1466.1-2018智能手机型移动警务终端第1部分:技术要求
- FZ/T 73009-2021山羊绒针织品
评论
0/150
提交评论