精华内容
下载资源
问答
  • 软件可维护性2

    千次阅读 热门讨论 2019-09-24 09:48:00
    可以把软件的可维护性... 8.4.1 决定软件可维护性因素 维护就是在软件交付使用后进行的修改,修改之前必须理解待修改的对象,修改之后应该进行必要的测试,以保证所做的修改是正确的。如果是改正性维护,还必须预...

            可以把软件的可维护性定性地定义为:维护人员理解、改正、改动或改进这个软件的难易程度。在前面的章节中曾经多次强调,提高可维护性是支配软件工程方法学所有步骤的关键目标。

            8.4.1 决定软件可维护性的因素

            维护就是在软件交付使用后进行的修改,修改之前必须理解待修改的对象,修改之后应该进行必要的测试,以保证所做的修改是正确的。如果是改正性维护,还必须预先进行调试以确定错误的具体位置。因此,决定软件可维护性的因素主要有下述5个。

    1.可理解性

            软件可理解性表现为外来读者理解软件的结构、功能、接口和内部处理过程的难易程度,模块化(模块结构良好,高内聚,松耦合)、详细的设计文档、结构化设计、程序内部的文档和良好的高级程序设计语言等,都对提高软件的可理解性有重要贡献

    2,可测试性

            诊断和测试的容易程度取决于软件容易理解的程度。良好的文档对诊新和测试是至关重要的,此外,软件结构、可用的测试工具和调试工具,以及以前设计的测试过程也都是非常重要的。维护人员应该能够得到在开发阶段用过的测试方案,以便进行回归测试。在设计阶段应该尽力把软件设计成容易测试和容易诊断的。

            对于程序模块来说,可以用程序复杂度来度量它的可测试性,模块的环形复杂度越大,可执行的路径就越多,因此,全面测试它的难度就高。

    3.可修改性

            软件容易修改的程度和本书第5章讲过的设计原理和启发规划直接有关。耦合、内聚、信息稳藏,局部化、控制域与作用域的关系等,都影响软件的可修改性

    4.可移植性

            软件可移植性指的是,把程序从一种计算环境(硬件配置和操作系统)转移到另一种计算环境的难易程度,把与硬件,操作系以及其他外部设备有关的程序代码集中放到特定的程序模块中,可以把因环境变化而必须修改的程序局限在少数程序模块中,从而降低修改的难度

    5.可重用性

            所谓重用( reuse)是指同一事物不做修改或稍加改动就在不同环境中多次重复使用。大量使用可重用的软件构件来开发软件,可以从下述两个方面提高款件的可维护性:

    (1)通常,可重用的软件构件在开发时都经过很严格的测试,可靠性比较高,且在每次重用过程中都会发现并清除一些错误,随着时间推移,这样的构件将变成实质上无误的,因此,软件中使用的可重用构件越多,软件的可靠性越高,改正性维护需求就越少

    (2)很容易修改可重用的软件构件使之再次应用在新环境中,因此,软件中使用的可重用构件越多,适应性和完善性维护也就越容易。

    8.4.2 文档

            文档是影响软作可维护性的决定因素,由于长期使用的大型软件系统在使用过程中必然会经受多次修改,所以文档比程序代码更重要。软件系统的文档可以分为用户文档和系统文档两类。用户文档主要描述系统功能和使用方法,并不关心这些功能是怎样实现的;系统文档描述系统设计、实现和测试等各方面的内容。总地说来,软件文档应该满足下述要求

    (1)必须描述如何使用这个系统,没有这种描述时即使是最简单的系统也无法使用

    (2)必须描述怎样安装和管理这个系统。

    (3)必须描述系统需求和设计

    (4)必须描述系统的实现和测试,以便使系统成为可维护的

    下面分别讨论用户文档和系统文档

    1.用户文档

            用户文档是用户了解系统的第一步,它应该能使用户获得对系统的准确的初步印象。文档的结构方式应该使用户能够方便地根据需要阅读有关的内容。用户文档至少应该包括下述5方面的内容

    (1)功能描述,说明系统能做什么。

    (2)安装文档,说明怎样安装这个系统以及怎样使系统适应特定的硬件配置

    (3)使用手册,简要说明如何着手使用这个系统(应该通过丰富例子说明怎样使用常用的系统功能,还应该说明用户操作错误时怎样恢复和重新启动)

    (4)参考手册,详尽描述用户可以使用的所有系统设施以及它们的使用方法,还应该解释系统可能产生的各种出错信息的含义(对参考手册最主要的要求是完整,因此通常使用形式化的描述技术)

    (5)操作员指南(如果需要有系统操作员的话),说明操作员应该如何处理使用中出现的各种情况

            上述内容可以分别作为独立的文档,也可以作为一个文档的不同分册,具体做法应该由系统规模决定

    2.系统文档

            所谓系统文档指从问题定义、需求说明到验收测试计划这样一系列和系统实现有关的文档。描述系统设计,实现和测试的文档对于理解程序和维护程序来说是极端重要的。和用户文档类似,系统文档的结构也应该能把读者从对系统概貌的了解,引导到对系统每个方面每个特点的更形式化更具体的认识。本系列前面各章已经较详细地介绍了各个阶段应该产生的文档,此处不再重复

    展开全文
  • 软件可维护性理论简介

    基本定义和说明

    我们将一个软件系统可被修改的难易程度称为它的可维护性。
    一个软件系统的可维护性由其源代码的多个属性决定。
    可维护性(一个软件系统可被修改的难易程度)与性能(一个软件系统执行的时空开销,这里往往指得到输出的快慢)是软件质量的两个重要特征。(根据国际标准,软件质量可以划分为八个特征:可维护性功能可适性性能效率兼容性可使用性可靠性安全性可移植性。)

    软件维护的四种方式

    • 纠正性维护:发现并修复Bug。
    • 适应性维护:系统需要去适应操作环境的改变——例如,操作系统或者技术的升级。
    • 完善性维护:系统用户(或者其他能够影响到系统的人,例如股东)有新的需求,或者对之前的需求有变化。
    • 预防性维护:确定可以改进质量或者预防将来产生Bug的方法。

    Why is important?

    • 低可维护性会对业务造成严重影响。
    • 可维护性是其他质量特征的推动者。

    十条指导性原则——可维护性软件概述

    • 编写短小的代码单元。
      短小的代码单元(方法和构造函数)更易于分析、测试和重用。
    • 编写简单的代码单元。
      拥有更少决策点的代码更易于分析和测试
    • 不写重复代码。
      任何时候都应该避免源代码重复使用,因为修改时就需要对每处代码进行修改。重复代码也是产生回归bug(regression bug)的一个来源。
    • 保持代码单元的接口简单。
      含有更少参数的代码单元(方法和构造函数)更易于测试和重用。
    • 分离模块之间的关注点。
      松耦合的模块(类)更易于修改,也利于构建模块化的系统。
    • 架构组件松耦合。
      系统顶层组件之间越是松耦合,越易于修改,也利于构建更加模块化的系统。
    • 保持架构组件之间的平衡。
      一个平衡度很好地架构拥有不多不少的组件、统一的代码规模以及最大程度的模块化,并通过有隔离关注点使得修改变得很容易。
    • 保持小规模代码库。
      大型系统之所以难以维护,是因为需要分析、修改并测试更多的代码。同样,大型系统中维护每一行代码的效率也比小型系统要低。
    • 自动化开发部署和测试。
      自动化测试(即测试不需要人工干预即可执行)可以得到对修改的有效性的及时反馈。手动测试难以形成规模。
    • 编写简洁的代码。
      代码库中存在越多的TODO、无用代码等遗留产物,新的团队成员就越难以高效工作,从而影响维护工作的效率。

    可维护性的三条基本理论

    • 坚持简单的原则最有助于提高可维护性。
    • 可维护性不是开发完才去考虑的,而应该是在项目开发的一开始就加以考虑。每个人的贡献都应该计算在内。
    • 对各个原则违背会带来不同的影响,有些严重程度甚于其他。一个软件系统越遵守原则,可维护性越高。

    对可维护性的常见误解

    • 可维护性与使用的语言有关。
    • 可维护性与行业有关。
    • 可维护性等价于Bug数量的多少。
    • 可维护性是一个“非此即彼”的是非问题。

    推荐阅读

    • 《重构:改善既有的代码设计》
    • 《代码整洁之道》
    • 《代码质量》
    • 《设计模式:可复用面向对象软件的基础》
    展开全文
  • 软件可维护性综述

    千次阅读 2019-10-10 16:04:13
    1.软件维护的目标、任务、分类与特点 1、软件维护目标: 定义:在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。 目的:通过必要的维护工作使得系统持久的满足用户的需要 2、软件维护的任务:...

    1.软件维护的目标、任务、分类与特点

    1、软件维护目标:
    定义:在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。
    目的:通过必要的维护工作使得系统持久的满足用户的需要
    2、软件维护的任务:
    在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。
    3、软件维护的分类:
    1)改正性维护;
    2)适应性维护;
    3)完善性维护;
    4)预防性维护。
    4、软件维护的特点:
    1)改正性维护:
    A、在软件交付使用后,因开发时测试的不彻底、不完全,必然会有部分隐藏的错误遗留到运行阶段。
    B、这些隐藏下来的错误在某些特定的使用环境下就会暴露出来。
    C、为了识别和纠正软件错误、改正软件 性能上的缺陷、排除实施中的误使用, 应当进行的诊断和改正错误的过程就 叫做改正性维护。
    2)适应性维护:
    在使用过程中, 
    外部环境(新的硬、软件配置) 
    数据环境(数据库、数据格式、数据输入/输出方式、数据存储介质)可能发生变化。
    为使软件适应这种变化,而去修改软 件的过程就叫做适应性维护
    3)完善性维护:
    在软件的使用过程中,用户往往会对软件提出新的功能与性能要求。 
    为了满足这些要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。 
    这种情况下进行的维护活动叫做完善性维护。
    4)预防性维护:
    预防性维护是为了提高软件的可维护性、可靠性等,为以后进一步改进软件打下良好基础。
    预防性维护定义为:采用先进的软件工程方法对需要维护的软件或软件中的某一部分(重新)进行设计、编制 和测试。

    2.影响软件可维护性的因素

    决定软件可维护性的因素有:
    A、可理解性
    软件可理解性表现为外来读者理解软件的结构、接口、功能和内部过程的难易程度。模块化、详细的设计文档、结构化设计、源代码内部文档和良好的高级程序设计语言等等,都对改进软件的可理解性有重要贡献。
    B、可测试性
    诊断和测试的难易程度主要取决于软件容易理解的程度。良好的文档对诊断和测试是至关重要的。此外,软件结构、可用的测试工具和调试工具,以及以前设计的测试过程也都是非常重要的。维护人员应该能够得到在开发阶段用过的测试方案,以便进行回归测试。在设计阶段应该尽力把软件设计成容易测试和容易诊断的。
    C、可修改性
    软件容易修改的程度和软件设计原理和规则直接相关。耦合,内聚,局部化,控制域的关系等等,都影响软件的可修改性。
    D、可移植性
    可移植性表明程序转移到一个新的计算环境的可能性的大小。或者它表明程序可以容易地、有效地在各种各样的计算环境中运行的容易程度。
    E、可重用性
    可重用性定义为程序不修改或者稍加改动就在不同环境中可以重新使用的容易程度。
    文档:可维护性的决定因素

    3.结合自己开发的软件项目,分析通过哪些环节可以提升软件的可维护性

    软件可维护性的因素,软件可维护性可以定性地定义为:维护人员理解、改正、改动和改进这个软件的难易程度。提高可维护性是支配软件工程方法论所有步骤的关键目标。
    维护就是在软件交付使用后进行的修改,修改之前必须理解修改的对象,修改之后应该进行必要的测试,以保证所做的修改是正确的。如果是改正性维护,还必须预先进行调试以确定故障。因此,影响软件可维护性的因素主要有下述三个。
    1.可理解性
    软件可理解性表现为外来读者理解软件的结构、接口、功能和内部过程的难易程度。模块化、详细的设计文档、结构化设计、源代码内部的文档和良好的高级程序设计语言等等,都对改进软件的可理解性有重要贡献。
    2.可测试性
    诊断和测试的难易程度主要取决于软件容易理解的程度。良好的文档对诊断和测试是至关重要的。此外,软件结构、可用的测试工具和调试工具,以及以前设计的测试过程也都是非常重要的。维护人员应该能够得到在开发阶段用过的测试方案,以便进行回归测试。在设计阶段应该尽力把软件设计成容易测试和容易诊断的。
    3.可修改性
    软件容易修改的程度和软件设计原理和规则直接有关。耦合、内聚、局部化、控制域与作用域的关系等等,都影响软件的可修改性。
    上述三个可维护性因素是紧密相关的。维护人员在正确理解一个程序之前根本不可能修改它;如果不能进行完善的诊断和测试,则表面正确的修改可能引进其他故障。
    其他方法:
    1).适用先进的软件开发技术和工具
    为了改善软件的可维护性,应该及时学习并尽量去适用能提高软件质量的技术和开发工具。
    例如,模块化技术、结构化程序设计技术、面向对象等一些先进的软件开发技术。
    2).明确软件的质量目标和优先级
    如果要程序满足可维护性的七种特性的全部要求,那是不现实的。因为,有些特性是相互促进的,而有些特性则是相互矛盾的。
    每一种质量特性的相对重要性不但因维护类型而不同,而且因程序的用途和计算机环境不同。因此,在提出软件质量目标的同时还必须规定它们的优先级,这样有助于提高软件的质量,减少软件生存周期的费用。
    3).质量保证审查
    要提高软件可维护性,必须要进行质量保证审查。质量保证审查可分为四种类型:在检查点进行检查、验收检查、周期性维护检查、对软件包检查。
    4).选择可维护的程序设计语言
    编码所使用的程序设计语言对软件的可维护性影响很大。低级语言很难理解,因此也很难维护。高级语言比低级语言容易理解,有更好的可维护性。
    某些高级语言可能比另一些更容易理解。尤其是第四代语言更容易理解,更容易编程,因此更容易维护。
    5).改进程序的文档
    程序文档对提高程序的可理解性有着重要的作用。规范、完整、一致的文档是建立可维护性的基本条件。
    在软件生命周期的每个阶段的技术复审和管理复审中,都应对文档进行检查,对可维护性进行评审。

    展开全文
  • 软件工程-软件可维护性

    千次阅读 2013-12-17 22:00:53
    决定软件可维护性因素: 可理解性: 定义:表现为外来读者理解软件的结构、功能、接口和内部处理过程的难易程度。如何提高可理解性: 模块化结构(高内聚、低耦合)详细的设计文档 可测试性: 模块的环形...

    本文参考自张海藩老师和永敏的《软件工程导论》

    软件可维护性的定义:

    维护人员理解、改正、改动或改进这个软件的难易程度。

    决定软件可维护性的因素:

    1. 可理解性:
      • 定义:表现为外来读者理解软件的结构、功能、接口和内部处理过程的难易程度。
      • 如何提高可理解性:
        • 模块化结构(高内聚、低耦合)
        • 详细的设计文档
    2. 可测试性:
      • 模块的环形复杂度越大,可执行的路径就越多,全面测试的难度就越高。
    3.  可修改性:
      • 影响因素:
        • 耦合
        • 内聚
        • 信息隐藏
        • 局部化
        • 作用域的关系
    4. 可移植性:
      • 衡量的方法:因环境变化,而必须修改的程序局限在少数程序模块中,从而降低修改的难度。
    5. 可重用性:
      • 定义:同一事物,不做修改或稍加改动,就可以在不同的环境中多次重复使用。
      • 可重用性软件的特点:
        • 经过了很严格的测试。
        • 可靠性比较高
        • 软件中使用的可重用构建越多,软件的可靠性越高。

    展开全文
  • 软件工程(软件维护之易维护性)

    千次阅读 2009-04-09 00:15:00
    软件易维护性是指理解、改正、改动、改进软件...提高可维护性决定软件工程方法论所有步骤的关键目标。1.易理解性易理解性被定义为人们通过阅读源代码和相关文档了解软件系统的结构、接口、功能、内部过程以及如何运行
  • 软件质量因素 6个The different elements, which impact the product, are named as software factors. They can be extensively partitioned into two software quality management process. The principal class ...
  • 软件维护技术

    千次阅读 2018-10-01 23:29:49
    (一) 软件维护的基本概念和基本活动 1、软件维护的定义 ①改正新维护:诊断和改正用户使用软件时所发现的软件错误过程 ②适应性维护:为了使软件和改变...④预防性维护:为了提高未来的可维护性或可靠性而主动...
  • 软件工程维护阶段

    千次阅读 2015-12-07 14:15:12
    ​ 软件维护的定义:在软件已经交付之后,为了改正错误或满足新需求而修改软件的过程 ...软件的可理解性,可测试性,可修改性,可移植性和可重用性,是决定软件可维护性的基本因素。 软件重用技
  • 软件工程(软件维护

    千次阅读 热门讨论 2014-01-23 20:24:27
    我们知道,软件工程的目的是提高软件可维护性,减少软件维护所需要的工作量,降低系统的总成本。软件维护的基本任务是为了保证软件在一个相当长的时期能够正常运行。  定义:在软件已经交付使用之后,为了改正...
  • 软件工程之软件维护

    千次阅读 热门讨论 2015-10-13 12:11:54
    软件维护:  软件维护是指软件产品发布后,因修正错误,提升性能或其他属性而进行软件修改的过程。软件维护主要是指根据需求变化或硬件环境的变化,对应用程序进行部分或全部...分别为改正性维护、适应性维护、完善
  • 软件工程——第七章 软件维护

    千次阅读 2010-09-16 20:43:00
    软件维护的概念 软件维护活动 程序修改的步骤及修改的副作用 可维护性 提高可维护性的方法 软件维护的概念 软件维护的定义 影响维护工作量的因素 软件维护的策略...
  • 维护软件工程总结】

    千次阅读 2018-05-30 18:05:37
    后者维护的对象是完整的软件配置,需要从设计文档评价开始,经过分析软件特点,估量修改带来的影响,再经过一系列修改步骤才开始编写相应源代码,这使得软件维护减少了精力的浪费,提高维护的总体质量...
  • 软件工程——软件维护总结

    万次阅读 2018-07-19 17:01:04
    (1)改正性维护:在软件交付使用后,因开发时测试的不彻底、不完全,必然会有部分隐藏的错误遗留到运行阶段。这些隐藏下来的错误在某些特定的使用环境下就会暴露出来。为了识别和纠正软件错误、改正软件性能上的...
  • 软件工程 第八章 软件维护

    千次阅读 2011-09-20 15:41:18
    软件维护 软件修改报告: 1 满足维护需求表中提出的要求所需要的工作量 2 维护要求的性质 3 这项要求的优先次序 4 与修改有关的事后数据 软件维护工作: 1 修改软件设计 2 复查 3 必要的代码修改 4 单元...
  • 软件项目生命周期管理与维护

    千次阅读 2019-06-18 16:44:07
    软件生存周期包括可行分析和项目开发计划,需求分析,概要设计,详细设计,编码,测试,维护等活动。 1.可行分析和项目开发计划 参与人员:产品经理、业务人员 必须要回答的问题是“要解决的问题是什么...
  • 影响MySQL Server性能的相关因素

    千次阅读 2010-07-30 21:29:00
    影响MySQL Server性能的相关因素
  • 1.项目进度本身不合理 项目管理者联盟文章,深入...对于估算是否准确是对项目进度计划安排影响最大的一个因素,估算不准确的原因很多,主要的两 个方面是确实有经验的估算专家和项目缺少历史数据的收集,对于这两点
  • 软件测试易用研究

    千次阅读 2012-03-14 11:16:54
    长期以来,IT行业一直有着重视技术创新而忽视人类因素的倾向,这导致多数产品存在程度不同的可用问题。据研究机构近期对发达国家的统计:商用计算机用户的有效生产率仅有30%~40%;48%的软件缺陷属于可用问题;...
  • 那些因素影响数据库查询速度

    千次阅读 2019-01-16 11:00:56
    一:影响数据库查询速度的几个因素 二:风险分析 三:网卡流量:如何避免无法连接数据库的情况 四:大表带来的问题 五:大事务带来的问题 1 影响数据库查询速度的几个因素 sql查询速度,服务器硬件,网卡流量...
  • 软件工程的设计意义

    千次阅读 2013-11-07 00:14:28
    良好的软件工程设计具有不比拟的意义,它胜于执行软件需求、软件编码、软件维护等任何一个环节,这就是设计的优越。秉承设计优先这一原则,会让软件开发变得简单而高效,可以尽量避免掉因设计失误而导致的缺陷。...
  • 软件工程—软件可靠测试

    千次阅读 热门讨论 2014-01-22 11:38:21
    软件系统规模越做越大越复杂,其可靠... 特别是软件可靠比硬件可靠更难保证,会严重影响整个系统的可靠。在许多项目开发过程中,对可靠没有提出明确的要求,开发商(部门)也不在可靠方面花更多的精力,往
  • 本文介绍了嵌入式软件开发需要考虑的诸多因素中的一些,包括1)操作系统(高级通用OS还是RTOS,是商业的WinCE还是免费的Linux、Android);2)图形处理和图形用户界面开发,OpenGL、Qt,X-11, GTK,DirectFB等HMI/GUI...
  • 软件可靠

    千次阅读 2011-09-14 00:37:32
    软件可靠的定义   1983年美国IEEE计算机学会对“软件可靠”作出了明确定义,此后该定义被美国标准化研究所接受为国家标准,1989年我国也接受该定义为国家标准。 该定义包括两方面的含义:  (1)在...
  • 软件测试

    千次阅读 2010-06-16 18:29:00
    软件测试就是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。执行测试用例后,需要跟踪故障,以确保开发...
  • 如何衡量软件设计的质量

    千次阅读 2015-06-05 15:32:48
    当然除了功能需求以外,还有很多衡量软件设计质量的标准,如可读性、可复用性、可扩展性、可维护性等。一个好的软件设计一般具有以下几个特点:可读性:软件的设计文档是否轻易被其他程序员理解。可读性差的设计会给...
  • 试论软件的可靠及其保证

    万次阅读 2013-11-27 11:23:00
    试论软件的可靠及其保证 来源:ChinaItLab  用软件系统规模越做越大越复杂,其可靠越来越难保证。... 特别是软件可靠比硬件可靠更难保证,会严重影响整个系统的可靠。在许多项目开发过程中,对
  • 软件架构风格汇总

    千次阅读 热门讨论 2016-10-16 21:09:00
    软件体系结构设计的一个核心问题是能否使用重复的体系结构模式,即能否达到体系结构级的软件重用。也就是说,能否在不同的软件系统中,使用同一体系结构。  体系结构风格定义了一个系统家族,即一个体系结构定义一...
  • 【最全】软件测试基础理论选择题(含答案)

    万次阅读 多人点赞 2020-03-05 19:17:40
    A、试验运行软件 B、发现软件错误 C、证明软件正确 D、找出软件中全部错误 【答案】B 2、下面说法正确的是( ) A、经过测试没有发现错误说明程序正确 B、测试的目标是为了证明程序没有错误 C、成功的测试是发现了...
  • 2017嵌入式软件行业现状及概述

    万次阅读 多人点赞 2017-11-05 16:41:38
    本文章介绍了截止2017年为止的嵌入式软件行业现状,包括就业方向,行业产品类型,待遇等等。另外还简单概述了下嵌入式软件所需的知识技能以及未来可能的技能发展走向。本文章远不如专业的行业报告一般精准、专业,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 52,267
精华内容 20,906
关键字:

影响软件可维护性的决定因素