7-软件维护

2023-11-02

软件维护基本概念

  • 软件维护:软件交付使用后,为了修改软件运行的错误,或者按照新需求添加新功能的过程。

前言:软件维护工作处于软件生命期的最后阶段,维护阶段是软件生存期中最长的一个阶段,所花费的人力、物力最多,其花费约为整个软件生命期花费的60%-70%。因为计算机程序总是发生变化的,对隐含错误的修改、新功能的加入、环境变化造成的程序变动等,因此应该充分认识到维护工作的重要性和迫切性,提高软件的可维护性,减少维护的工作量和费用,延长已经开发软件的生命期,以发挥其应有的效益。

软件维护的目的

  • 在运行阶段发现软件测试过程中未发现的错误

  • 添加新增加的功能,提高软件的性能

  • 适应新的运行环境,或适应已变动的数据或文件

  • 扩充软件的运行范围

软件维护的类型:

  • 完善性维护:满足用户新需求,对原来的软件功能进行修改或扩充。
  • 纠错性维护:使软件适应外部新的硬件和软件环境或数据环境。
  • 预防性维护:纠正修改测试阶段未发现的错误。
  • 适应性维护:为了提高软件的可维护性和可靠性,采用先进的软件工程方法对需要维护的软件或软件中的某一部分重新进行设计、编制和测试,为以后进一步维护和运行打好基础。

软件维护的特性:

  • 非结构化维护

    • 是指只有源程序,缺乏必要文档说明,对于确定数据结构、系统接口等特性
  • 结构化维护

    • 指软件开发过程按照软件工程方法进行,开发各个阶段文档齐全,软件的维护过程,有一整套完整的方案、技术以及评审过程
  • 维护的副作用,指由于修改程序而导致新的错误或者新增加一些不必要的活动。(代码、数据、文档);

  • 软件维护的困难,主要是由软件需求分析和开发方法的缺陷造成的

    • 读懂别人的编码很困难
    • 文档不一致性
    • 软件开发人员和软件维护人员在时间上的差异

软件维护过程:

  1. 建立一个维护的组织;
  2. 建立维护活动的登记、申请制度,
  3. 对维护方案的审批制度;
  4. 规定复审的评价标准。

软件维护技术:

  • 面向维护的技术
    • 涉及软件开发的所有阶段
  • 维护支援技术;
    • 支持软件维护阶段的技术
  • 维护档案记录;
    • 为维护评价提供有效数据
  • 维护工作评价。
    • 确定维护的质量和成本

提高可维护性方法:

建立明确的软件质量目标;

使用先进的开发技术和工具;

建立明确的质量保证工作;

原则可维护的程序设计语言;

改进程序的文档。

软件的可维护性

软件可维护性:指软件能够被理解,并能纠正软件系统出现的错误和缺陷,以及满足新的要求进行修改、扩充或压缩的容易程度。

软件质量的7个特性:

可理解性:表明人们通过阅读源代码和相关文档,了解软件功能和运行状况的容易程度。

可靠性:表明一个软件按照用户的要求和设计目标,在给定的一段时间内正确执行的概率。

可测试性:用来论证软件正确性的容易程度。

可修改性:表明软件容易修改的程度。

可移植性:表明一个软件能执行预定功能而又不浪费机器资源的程度。

效率:表明一个软件能执行预定功能而又不浪费机器资源的程度。

可使用性:从用户的角度出发,指软件方便、实用及易于使用的程度。

提高可维护性的方法

  1. 建立明确的软件质量目标
  2. 使用先进的软件开发技术和工具
  3. 建立明确的质量保证工具
  4. 选择可维护的程序设计语言
  5. 改进程序的文档

软件再工程技术

软件再工程:对旧的软件进行重新处理、调整,提高软件的可维护性。

原因:随着维护次数增加,可能会造成软件结构的混乱,使软件可维护性降低,束缚了新软件的开发,对于关键业务又不可能废弃或者重新开发,因此采用软件再工程技术,对旧有的软件进行重新处理、调整,提高其可维护性

意义:不仅能够从已有程序中重新获取到设计信息,而且可用这些信息重构系统,以改善综合质量。

逆向工程

逆向工程:是一个设计恢复的过程,从现有系统的源代码中抽取数据结构、体系结构和程序设计信息,力图在比源代码程序更抽象层次上建立程序的表示过程。

  • 过程
    1. 输入无结构的源代码–重构
    2. 结构化源代码–抽取(过程、界面、数据)
    3. 初始规格–简化和求精
    4. 输出最终规格
  • 过程处理抽取
    • 使用逆向工程工具在不同层次(语句段、模块、子系统、系统)抽取数据结构、体系结构和程序设计信息
  • 界面抽取
    • 当准备对旧的软甲进行用户界面的逆向工程时,必须先理解旧软件的用户界面,并且刻画出界面的结构与行为
  • 数据抽取
    • 抽取程序内不同类型的数据结构

软件再工程过程

  1. 对象选择–再工程对象
  2. 逆向工程–逐步抽象建立系统设计模型
  3. 文档重构–使用则建立原则
  4. 代码重构–生成可提供功能相同而质量更高的程序,分析程序,标注重构代码部分,复审和测试重构代码
  5. 数据重构-- 发生在较低的抽象层次上,是一种全局的再工程活动,对程序内数据结构重新设计
  6. 正向工程–利用现有程序恢复的设计信息来修改或者重构系统

软件重构:对源代码和数据进行修改,使其易于修改维护,以适应将来的变更。

软件重构意义:提高软件质量和生产率,减少维护工作量,提高软件可维护性。

再工程风险

再工程风险:

  • 过程风险–对再工程活动中,缺乏投入人员管理以及方案实施管理,未做成本效益分析

  • 应用领域风险–对再工程项目业务不熟悉,缺少专业领域专家支持

  • 技术风险–缺乏再工程技术支持,恢复设计得到无用信息

  • 人员风险

  • 工具风险

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

7-软件维护 的相关文章

  • 系统开发与运行

    系统开发与运行 系统分析与设计 需求分析 需求工程 结构化分析与设计 测试基础知识 系统运行与维护 软件架构介绍 系统分析概述 系统分析是一种问题求解技术 它将一个系统分解成各个组成部分 目的是研究各个部分如何工作 交互 以实现其系统目标
  • 代码圈复杂度cogC、ev、iv、v分别是什么含义

    代码圈复杂度cogC ev iv v分别是什么含义 前言 cogC ev iv v分别是什么含义 优化这四个指标的好处 优化方法 过度优化的坏处 书本推荐 文章推荐 工具推荐 前言 你好 在工作中看项目的代码有时明明代码很长却觉得容易阅读
  • 【软件工程期末复习内容】

    前言 时不可以苟遇 道不可以虚行 一 软件工程的概念 软件是计算机系统运行的 指令 数据 和 相关文档 的集合 即软件等于程序 数据 加上文档 程序 是事先按照预定功能性能等要求设计和编写的指令序列 数据 是使程序正常处理信息的数据结构及信
  • [管理与领导-69]:IT基层管理者 - 辅助技能 - 4- 职业发展规划 - 评估自己、下属、老板的职业性格

    目录 前言 一 心理学上性格 1 1 心理学 1 2 知情意行 1 3 心理学性格 1 4 四大生理人格特征 1 4 1 外向型 1 4 2 内向型 1 5 大五人格特质理论 二 霍兰德社会职业兴趣类型 2 1 霍兰德六型的简要描述 2 2
  • idea插件生成用例图、时序图、类图、活动图

    给大家推荐一个idea生成用例图 时序图等的神器 PlantUML 最近软件工程要结课了 结课报告要附加用例图 时序图 类图 活动图等 类图我首先就想到可以用idea生成 嘿嘿 可惜忘了怎么用 搜着搜着 突然发现 idea生成时序图 用例图
  • Open Source Game Clones

    Open Source Game Clones This site tries to gather open source reimplementations of great old games in one place If you t
  • 【论文阅读-ICSE-2021】CodeShovel: 构造方法级别上的源代码历史信息 Constructing Method-Level Source Code Histories

    CodeShovel Constructing Method Level Source Code Histories Conference ICSE 2021 Github https github com ataraxie codesho
  • 【软件工程】详细设计说明书

    详细设计说明书 1引言 1 1编写目的 说明编写这份详细设计说明书的目的 指出预期的读者 该文档实在概要设计的基础上 进一步的细化系统结构 展示了软件啊结构的图标 物理设计 数据结构设计 及算法设计 详细的介绍了系统各个模块是如何实现的 包
  • 软考:中级软件设计师:多媒体基础,音频,图像,颜色,多媒体技术的种类,图像音频视频的容量计算,常见的多媒体标准

    软考 中级软件设计师 多媒体基础 提示 系列被面试官问的问题 我自己当时不会 所以下来自己复盘一下 认真学习和总结 以应对未来更多的可能性 关于互联网大厂的笔试面试 都是需要细心准备的 1 自己的科研经历 科研内容 学习的相关领域知识 要熟
  • 什么是项目管理?项目经理应该如何进行管理?

    项目管理 一是指一种管理活动 一种有意识地按照项目的特点和规律 对项目进行组织管理的活动 二是指一种管理学科 以项目管理活动为研究对象的一门学科 它是探求项目活动科学组织管理的理论与方法 就是把各种知识 技能 手段和技术应用于项目活动之中
  • 软件工程期末试题及答案(史上最全)

    软件工程期末试题及答案 文章目录 软件工程期末试题及答案 一 填空题 二 选择题 三 判断题 四 简答题 五 分析题 六 画图题 一 填空题 在信息处理和计算机领域内 一般认为软件是 文库 程序 文档 和 数据 数据流图的基本组成部分有 数
  • 软件工程——软件实现

    在我们做好对软件的需求分析 设计之后 就是软件的实施部分了 主要包括软件实现 软件测试 测试方法 黑盒测试 主要是检查功能 数据 以及接口的问题 具体方法有等价划分 边界值分析 错误推断法 白盒测试 对程序所有逻辑路径进行测试 测试方法按覆
  • 软件工程期末复习+数据仓库ETL

    一 软件工程 请用基本路径测试方法为下列程序设计测试用例 并写明中间过程 第1步 画出流程图 1 菱形用于条件判断 用在有分支的地方 2 矩形表示一个基本操作 3 圆形是连接点 第2步 计算程序环路复杂性 流图G的环路复杂度V G 定义为
  • DEVOPS 持续部署的例子:IMVU

    持续部署的例子 IMVU IMVU是一家社交娱乐公司 它的产品允许用户以一种3D阿凡达式的体验互相连接起来 本节内容改编自一位IMVU工程师所写的博客 IMVU采用了持续集成 开发人员尽早提交并经常提交 每次提交都触发测试套件的执行 IMV
  • thinkphp+vue教学互动课程资源网站

    软件工程课程建设通篇文章的撰写基础是实际的应用需要 然后在架构系统之前全面复习大学所修习的相关知识以及网络提供的技术应用教程 以软件工程课程建设的实际应用需要出发 架构系统来改善现软件工程课程建设工作流程繁琐等问题 不仅如此以操作者的角度来
  • git 的碎步浪荡,添加仓库子项目,迁移仓库

    1 git仓库迁移 将他人的代码仓库 xxxx 移为自己的 yyyy 仓库 先创建自己的yyyy空仓库 假设url为 yyyy git 将 xxxx 的全部数据 包括分支和 tag 都 download 到本地 git clone recu
  • 【软件测试】学习笔记-高效提交Bug

    本篇文章介绍如何才能写出一份高效的软件缺陷报告 测试工程师需要利用对需求的理解 高效的执行力以及严密的逻辑推理能力 迅速找出软件中的潜在缺陷 并以缺陷报告的形式递交给开发团队 缺陷报告是测试工程师与开发工程师交流沟通的重要桥梁 也是测试工程
  • C 语言文件读取全指南:打开、读取、逐行输出

    C 语言中的文件读取 要从文件读取 可以使用 r 模式 FILE fptr 以读取模式打开文件 fptr fopen filename txt r 这将使 filename txt 打开以进行读取 在 C 中读取文件需要一点工作 坚持住 我
  • Docker CLI 实战指南:从基础命令到 Dockerfile 构建和 Docker Compose

    Docker CLI 命令行界面 是一个强大的工具 可让您与 Docker 容器 映像 卷和网络进行交互和管理 它为用户提供了广泛的命令 用于在其开发和生产工作流中创建 运行和管理 Docker 容器和其他 Docker 资源 安装 要开始
  • Python 中多态性的示例和类的继承多态性

    单词 多态 意味着 多种形式 在编程中 它指的是具有相同名称的方法 函数 操作符 可以在许多不同的对象或类上执行 函数多态性 一个示例是 Python 中的 len 函数 它可以用于不同的对象 字符串 对于字符串 len 返回字符的数量 示

随机推荐

  • 【linux】进程和线程的几种状态及状态切换

    文章目录 一 进程的状态 1 1 进程的三种状态 1 2 三种状态转换图 1 3 三种状态之间的转换 1 4 linux下的进程进程状态 二 线程的状态 三 总结 一 进程的状态 1 1 进程的三种状态 进程状态 一个进程的生命周期可以划分
  • 关于打包成APK

    1 可以观看网站 https my oschina net Jacedy blog 350226 里面有具体的步骤 具体的需要下载的如图所示 2 将jdk安装好 然后根据网址一次安装好环境 1 系统变量里新建JAVA HOME变量 变量值为
  • Linux实时查看文件/var/log/messages以及这个文件的问题

    耐心看完说不定有你遇到的问题 1 var log messages 首先说一下这个文件的存在 在Ubuntu系统中 这个文件你访问可能提示找不到这个文件 使用tail命令访问 name name sudo tail var log mess
  • 进程(二)—— fork()创建子进程

    假设进程A在运行过程中遇到非法请求 但是进程A手里有活 要忙手上的事 所以进程A创建一个子进程a 让子进程a去处理非法请求 目录 一 子进程创建代码实现 1 fork 函数 2 使用fork 函数创建子进程 二 子进程的创建过程 1 创建子
  • unity3d收集金币

    unitysd中 对象有一个碰撞检测的方法 可以应用于收集金币 void OnTriggerEnter Collider col if col gameObject tag Player 如果碰撞的对象是玩家 money 金钱加一 Dest
  • 深度解析:印度软件产业为何如此发达

    在全球范围内 无论是发达国家 还是发展中国家 都形成了若干规模不等 各具特色的软件产业聚集地 如美国的硅谷 日本九州的硅岛 印度班加罗尔的软件园等等 这些产业聚集地已经成为全球经济格局的重要组成部分 其中 印度的软件业聚集情况颇具借鉴意义
  • 关于tomcat中startup.bat启动闪退问题

    关于tomcat中startup bat启动闪退问题 这个首先我们想到的是系统环境变量的配置问题 所以可以进行一下环境变量检测 配置系统变量 CATALINA HOME 如下图所示 如果这个配置没有问题 且仍然后出现闪退问题 配置setcl
  • python关闭浏览器窗口_Selenium3 + Python3自动化测试系列十二——窗口截图与关闭浏览器...

    窗口截图 自动化用例是由程序去执行的 因此有时候打印的错误信息并不十分明确 如果在脚本执行出错的时候能对当前窗口截图保存 那么通过图片就可以非常直观地看出出错的原因 WebDriver提供了截图函数get screenshot as fil
  • js中的变量

    js中的变量分为局部变量和全局变量 成员变量 局部变量 只有在局部中能狗被访问 全局变量 在哪里都能被访问 局部变量定义在函数体内的生命周期一般跟随函数 当函数执行后 定义该局部变量 当函数不在使用时 被系统回收机制回收 function
  • JTAG与SWD连接方式

    先上图 图中可以看出SWD所需的连接口明显小于JTAG 接下来简要介绍下连接方式 SWD 只需连接SWDIO SWCLK GND VCC 有的时候也不需要连 JTAG 必须连接VCC GND TMS TCLK TDI TDO 可选连接TRS
  • 话谈实际工作中的数据分析

    篇始 不知不觉 到新的公司任数据分析师一职已有大半年的时光 在段时光中 无可避免的犯了很多错误 亦得到了许多收获 今天 对于在职中的一些过错与收获进行总结 以期在日后的工作与成长过程中 能够更加的顺利 谈谈数据分析工作需具备能力 pytho
  • React16.8的新增特性,Hook讲解

    Hook 是 React 16 8 的新增特性 它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性 1 useState 用来声明state变量 类似于class里的this state 使用方法如下 e
  • mysql+显示表ddl_MySQL_DDL_数据库和表的操作

    一 创建表 语法 CREATE TABLE IF NOT EXISTS 表名 字段名 字段类型 字段约束 字段名 字段类型 字段约束 字段名 字段类型 字段约束 案例 没有添加约束 CREATE TABLE IF NOT EXISTS ta
  • MySQL 全表扫描

    Server层 db1 t有200GB mysql h host P port u user p pwd e select from db1 t gt target file 查询数据 InnoDB的数据是保存在主键索引上 全表扫描实际上是
  • 第二次面试 9.15

    首先就是自我介绍 项目拷打 总体介绍一下项目 谈一下对socket的理解 在数据接收阶段 如何实现一个异步的数据处理 谈一谈对qt信号槽的理解 有想过如何去编写一个信号槽吗 你是如何使用CMAKE编译文件的 C 11特性了解些啥 share
  • NB-IoT天线座和连接器SMA、U.FL、IPX、IPEX

    NB IoT常用的天线座有SMA U FL U FL也叫IPX或IPEX SMA连接头包括四种 内螺内针 外螺内孔 内螺内孔 外螺内针 mingdu zheng at gmail dot com https blog csdn net zo
  • Docker安装ELK环境步骤

    本次安装版本 elasticsearch 6 2 4 kibana7 6 2 logstash 6 3 0 kafka 2 10 0 10 2 1 所需环境下载地址 https pan baidu com s 1LNJuF0kEXkG2Fy
  • 怎么避免写出慢 SQL

    在大多数实际的系统中 慢 SQL 消耗掉的数据库资源 往往是正常 SQL 的几倍 几十倍甚至几百倍 怎样才能在开发阶段尽量避免写出慢 SQL 呢 估算数据量 慢 SQL 对数据库的影响 是一个量变到质变的过程 对 量 的把握 就很重要 编写
  • 2021黑马程序员java面试宝典笔记四(框架篇)

    2021黑马程序员java面试宝典笔记四 框架篇 哔哩哔哩链接 https www bilibili com video BV15b4y117RJ p 134 vd source 7c5f1f4c039688f19024d50ef51aae
  • 7-软件维护

    软件维护基本概念 软件维护 软件交付使用后 为了修改软件运行的错误 或者按照新需求添加新功能的过程 前言 软件维护工作处于软件生命期的最后阶段 维护阶段是软件生存期中最长的一个阶段 所花费的人力 物力最多 其花费约为整个软件生命期花费的60