第8章 维护

news2025/2/12 23:40:50

文章目录

  • 第8章 维护
      • 一、软件交付使用的工作
      • 二、软件交付使用的方式
        • 1) 直接方式
        • 2) 并行方式
        • 3) 逐步方式
    • 8.1 软件维护的定义
      • 1、软件维护的定义
      • 2、软件维护的原因
      • 3、软件维护的类型
        • 1、改正性维护
        • 2、适应性维护
        • 3、完善性维护
        • 4、预防性维护
    • 8.2 软件维护的特点
      • 8.2.1结构化维护和非结构化维护差别巨大
      • 8.2.2 维护的代价高昂
      • 8.2.3 维护的问题很多
    • 8.3 软件维护的过程
      • 8.3.1 维护组织
      • 8.3.2 维护报告
      • 8.3.3 维护的时间流
    • 8.4 软件的可靠性维护
      • 8.4.1 决定软件可维护性的因素
      • 8.4.2 文档
      • 8.4.3 可维护性复查
    • 8.5 预防性维护
    • 8.6 软件再工程过程
    • 小结
      • 软件维护手册
      • 软件问题报告
      • 软件修改报告

第8章 维护

软件维护所需的工作量非常大,一般说来,大型软件的维护成本高达开发总成本的四倍左右。目前,软件开发组织把60%以上的工作量用于维护自己的软件上。

一、软件交付使用的工作

  1. 将旧系统的数据转换到新系统(如数据库数据);
  2. 新系统调试完成并加载入机器,准备运行;
  3. 将有关资料(如使用说明)转交给用户;
  4. 对用户做适当的培训

二、软件交付使用的方式

1) 直接方式

直接方式是用新系统直接替换旧系统,没有过渡。
优点:转换简单,费用最省。
缺点:风险大。

2) 并行方式

优点:
A.可以对系统进行全面测试,减少了新系统失灵带
来的风险,因为旧系统也仍然存在;
B.用户也能够有一段熟悉新系统的时间。
缺点:
所需费用较高,双系统要投入更多的人力财力。

3) 逐步方式

逐步方式是将软件分期,部分地交付使用。这种方式克服了上面两种方式的缺点,既能防止直接转换产生的危险性,又能减少并行方式的费用。

8.1 软件维护的定义

1、软件维护的定义

在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。

2、软件维护的原因

1)改正在特定使用条件下暴露出来的一些潜在程序错误或设计缺陷;
2)因在软件使用过程中数据环境发生变化(如所要处理的数据发生变化)或处理环境发生变化(如硬件或软件操作系统等发生变化),需要修改软件,以适应这种变化;
3)用户和数据处理人员在使用时常提出改进现有功能、增加新功能、以及改善总体性能的要求,为满足这些要求,需要修改软件。

3、软件维护的类型

1、改正性维护

诊断和改正错误的过程称为改正性维护。

2、适应性维护

随着计算机的飞速发展,新的硬件系统和外部设备时常更新和升级,一些数据库环境、数据输入输出方式、数据存储介质等也可能发生变换。为了使软件适应这些环境变化而修改软件的过程叫做适应性维护

3、完善性维护

在软件投入使用过程中,用户可能还会有新的功能和性能要求,可能会提出增加新功能、修改现有功能等要求。为了满足这类要求而进行的维护称为完善性维护。

4、预防性维护

为了改进软件未来的可维护性或可靠性,或者为了给未来的改进奠定更好的基础而进行的修改,称为预防性维护。

8.2 软件维护的特点

8.2.1结构化维护和非结构化维护差别巨大

在这里插入图片描述

8.2.2 维护的代价高昂

软件维护的代价表现为有形代价和无形代价。

  1. 有形代价指软件维护的费用开支。
  2. 无形代价可用的资源必须供维护任务使用,以致耽误甚至丧失了开发的良机。

8.2.3 维护的问题很多

8.3 软件维护的过程

8.3.1 维护组织

在这里插入图片描述
① 维护申请提交给维护管理员,他把申请交给某个系统监督员去评价。
② 一旦做出评价,由修改负责人(变化授权人)确定如何进行修改。
③ 在修改程序的过程中,由配置管理员严格把关,控制修改的范围,对软件配置进行审计。

8.3.2 维护报告

  1. 维护申请报告或称软件问题报告,由申请维护的用户填写。
  2. 维护申请报告是由软件组织外部提交的文档,它是计划维护活动的基础。
  3. 根据软件问题报告(维护要求),作出的软件修改报告包含的信息主要有:
  1. 满足维护要求表中提出的要求所需要的工作量;
  2. 维护要求的性质;
  3. 这项要求的优先次序;
  4. 与修改有关的事后数据(如测试数据等)。

8.3.3 维护的时间流

在这里插入图片描述

8.4 软件的可靠性维护

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

  1. 可理解性
  2. 可测试性
  3. 可修改性
  4. 可移植性
  5. 可重用性

8.4.2 文档

①文档是开发、使用和维护程序所需要的图文资料。
②文档是影响软件可维护性的决定因素。
③文档比程序代码更重要。

  1. 用户文档
    用户文档是用户了解系统的第一步,它应该能使用户获得对系统的准确的初步印象。
  2. 系统文档
    所谓系统文档指从问题定义、需求说明到验收测试计划这样一系列和系统实现有关的文档。

8.4.3 可维护性复查

  1. 系统大小
  2. 程序设计语言
  3. 系统年龄
  4. 数据库技术的应用
  5. 先进的软件开发技术

8.5 预防性维护

1)反复多次做修改程序的尝试;
2)先通过仔细分析程序,尽可能多地掌握程序内部工作细节,再有效地修改;
3)用软件工程方法重新设计、编码和测试需要变更的软件部分; —局部再工程
4)以软件工程方法为指导,对程序全部重新设计、编码和测试。—软件再工程

8.6 软件再工程过程

在这里插入图片描述

  1. 库存目录分析
    包含每个应用系统的基本信息,如:名称、构建日期、修改次数、过去18个月报告的错误、用户数量文档质量、预期寿命等。从中选出再工程的候选者。
  2. 文档重构
    (1)如果一个程序走向生命终点,不再经历变化,则保持现状;
    (2)重构只针对当前正在修改的软件部分。
  3. 逆向工程
    逆向工程是一个恢复设计结果的过程,从程序代码中抽取数据结构、体系结构和处理过程的设计信息。
  4. 代码重构
    用重构工具分析源代码,标注出与结构化程序设计概念不符的部分,重构它的代码,测试
    重构代码并更新代码。
  5. 数据重构
    当数据结构较差时,进行再工程。如以文件方式保存数据变为以数据库方式存储。
  6. 正向工程
    也称革新或改造,即应用软件工程的原理、概念、技术和方法来重新开发现有系统。

小结

软件维护手册

主要包括软件系统说明、程序模块说明、操作环境、支持软件的说明、维护过程的说明,便于软
件的维护。

软件问题报告

指出软件问题的登记情况,如日期、发现人、状态、问题所属模块等,为软件修改提供准备文档。

软件修改报告

软件产品投入运行以后,发现了需对其进行修正、更改等问题,应将存在的问题、修改的考虑以
及修改的影响作出详细的描述,提交审批。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/639665.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

12.异常-Exception|Java学习笔记

文章目录 异常介绍异常体系图一览运行时异常编译异常异常处理异常处理的方式try-catch 异常处理throws 异常处理注意事项和使用细节 自定义异常自定义异常的步骤 throw和throws的区别 异常介绍 基本概念:Java语言中,将程序执行中发生的不正常情况称为“…

【TCP/IP】多进程服务器的实现(进阶) - 多进程服务器模型及代码实现

经过前面的铺垫,我们已经具备实现并发服务器的基础了,接下来让我们尝试将之前的单任务回声服务器改装成多任务并发模式吧! 多任务回声服务器模型 在编写代码前,先让我们大致将多任务(回声)服务器的模型抽象…

mac下部署和访问 Kubernetes 仪表板(Dashboard)

简介 Dashboard 是基于网页的 Kubernetes 用户界面。 你可以使用 Dashboard 将容器应用部署到 Kubernetes 集群中,也可以对容器应用排错,还能管理集群资源。 你可以使用 Dashboard 获取运行在集群中的应用的概览信息,也可以创建或者修改 Kub…

技术分享——隐私计算简介

随着数据规模的不断扩大和网络技术的快速发展,数据安全和隐私保护成为了热门的话题。隐私计算作为一种新兴的数据安全和隐私保护技术,为数据安全和隐私泄露问题提供了新的思路和方法。 2020年10月19日,Gartner发布2021年前沿战略科技趋势&am…

VTK源码编译安装记录与教程(VS2019+QT5.15.2+PCL1.12.1+VTK9.1.0配置,超详细)

因为PCL库(傻瓜式安装)中自动安装的VTK库并不完整,不支持QT环境的UI界面开发,于是,想用QT在VS2019上开发图形界面程序,需要单独自己通过VTK源码编译安装,再进行配置。本人安装时开发环境已经装好…

2023拒绝行业内卷!八年软件测试月薪30K*16薪行业心得 想入行必看

目前工作做软件测试工作8年,属于高级测试员那个级别吧!现在看到各行各业的人都在转行学习软件测试,想给大家一些学习建议和忠告。 很多粉丝都跟我说今年行情很差,找不到工资,真的找不到工作了吗? 我们常在网…

simhash原理以及用python3实现simhash算法详解(附python3源码)

1. 为什么需要Simhash? 传统相似度算法:文本相似度的计算,一般使用向量空间模型(VSM),先对文本分词,提取特征,根据特征建立文本向量,把文本之间相似度的计算转化为特征向量距离的计算,如欧式距离、余弦夹角等。 缺点:大数据情况下复杂度会很高。 Simhash应用场景:…

Graph Learning笔记 - 长尾分布问题

Graph Learning笔记 - 长尾分布问题 分享四篇论文入门图神经网络时的学习笔记。 SL-DSGCN 论文:Investigating and Mitigating Degree-Related Biases in Graph Convolutional Networks 来源:2020CIKM 概要 GCN在图的半监督学习上能取得良好表现&a…

lora,固定模特+固定衣服,怎么实现?

在电商行业,经常会有一个需求,就是把固定的衣服让模型穿上,然后拍很多的图片,放在商品主图、详情页、买家秀...... 人工智能发展到现在,最近aigc也挺热门的,有没有办法用“人工智能”算法就实现这个功能&a…

逆向汇编反汇编——函数分析

add esp,8就是把esp调整到函数调用之前的状态,用以平衡堆栈 默认采用的是cdcall:外平栈 stdcall:内平栈 什么是堆栈平衡? 》原来的堆栈是什么样的,函数调用之后堆栈还是什么样的(即,esp和ebp的值保持不变)&#xf…

掌握Scala数据结构(2)MAP、TUPLE、SET

一、映射 (Map) (一)不可变映射 1、创建不可变映射 创建不可变映射mp,用键->值的形式 创建不可变映射mp,用(键, 值)的形式 注意:Map是特质(Scala里的trait,相当于Java里的interface&#…

git选择指定分支中的指定目录进行合并

指定路径合并 先进入branch A : git checkout branchA 将dir2中的变更转移至branchA: git checkout branchB dir2 所有变更将出现在branchA中的dir2中,检查后提交即可。 git commit -m "sync branchB dir2 to branchA" 也可以…

读财报丨第二增长曲线渐显,但涂鸦智能的未来还看PaaS业务?

2022年以来,全球物联网行业持续低迷,赛道内不少玩家出现业绩下滑,而且陆续传出巨头企业关停相关业务板块的消息。这背后是消费电子行业库存积压,客户需求难以释放等宏观因素,导致IoT领域面临一定的经营困境。 近日&am…

STM32——07-STM32定时器Timer

定时器介绍 软件定时 缺点:不精确、占用 CPU 资源 void Delay500ms () //11.0592MHz { unsigned char i , j , k ; _nop_ (); i 4 ; j 129 ; k 119 ; do { do { while ( -- k ); } while ( -- j ); } while ( -- i ); } 定时器工…

108-Spring的底层原理(下篇)

这里续写上一章博客(107章博客): Spring 声明式事务的支持: 编程式事务:在业务代码中添加事务控制代码,这样的事务控制机制就叫做编程式事务 声明式事务:通过xml或者注解配置的方式达到事务…

【Linux】进程间通信(管道)

文章目录 进程通信的目的进程间通信发展进程间通信分类管道System V IPCPOSIX IPC 管道什么是管道管道的读写规则管道的特点:匿名管道处理退出问题命名管道创建一个命名管道匿名管道与命名管道的区别命名管道的打开规则 进程通信的目的 数据传输:一个进程…

应用层协议 —— websocket

websocket介绍 websocket是从HTML5开始支持的一种网页端和服务端保持长连接的消息推送机制。 传统的web程序都是属于“一问一答”的形式,即客户端给服务器发送了一个HTTP请求,服务器给客户端返回一个HTTP响应。这种情况下服务器属于被动的一方&#xff…

前端食堂技术周刊第 86 期:Remix 拥抱 RSC、2023 React 生态系统、从 0 实现 RSC、字节跳动 Mobile DevOps 工程实践

美味值:🌟🌟🌟🌟🌟 口味:椰子水 食堂技术周刊仓库地址:https://github.com/Geekhyt/weekly 本期摘要 Remix 拥抱 RSCWebContainers 原生支持 npm、yarn 和 pnpm2023 React 生态系…

MySQL InnoDB集群部署及管理全教程

MySQL InnoDB 集群提供完整的高可用性 MySQL 的解决方案。通过使用MySQL Shell附带的AdminAPI,您可以轻松 配置和管理至少三个MySQL服务器的组 实例以充当 InnoDB 集群。 InnoDB 集群中的每个 MySQL 服务器实例都运行 MySQL 组复制,提供复制机制 InnoDB…

LoadRunner 2023 下载和安装

下载 LoadRunner目前最新的版本是2023版,需要到Micro Focus公司的官网注册账号然后申请下载,比较麻烦,这里我把大家常用的社区版本,搬运到阿里云盘上,供下载: https://www.aliyundrive.com/s/WtHSzD4MrXw …