软件工程知识梳理6-运行和维护

软件维护需要的工作量很大,大型软件的维护成本高达开发成本的4倍左右。所以,软件工程的主要目的就是要提高软件的可维护性,减少软件维护所需要的工作量,降低软件系统的总成本。

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

维护活动:

  1. 改正性维护:诊断和改正错误的过程
  2. 适应性维护:为了和变化了的环境适当地配合而进行地修改软件地活动
  3. 完善性维护:新增功能或修改已有功能
  4. 预防性维护:改进未来的可维护性或可靠性,或为了给未来的改进奠定更好的基础而修改软件

非结构化维护:软件配置的唯一成分是程序代码,也就是没有软件配套文档。

结构化维护:维护工作从评价设计文档开始,确定软件重要的结构特点、性能特点以及接口特点;估量要求的改动将带来的影响,并且计划实施途径。

维护工作量模型:

M是维护用的总工作量,P是生产性工作量,K是经验常数,c是复杂程度(非结构化设计或缺少文档都会增加软件的复杂程度),d是维护人员对软件的熟练程度

——————————————————————————————————

软件维护过程:

  1. 维护组织
  2. 维护报告
  3. 维护的事件流
  4. 保存维护记录
  5. 评价维护活动

——————————————————————————————————

软件的可维护性:

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

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

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

文档:影响软件可维护性的决定因素,由于长期使用的大型软件系统在使用过程中必然会经受多次修改,所以文档比程序代码更重要。

  1. 用户文档:描述系统功能和使用方法,并不关心这些功能是怎样实现的
  2. 系统文档:描述系统设计、实现和测试等各方面的内容

——————————————————————————————————

预防性维护

  1. 反复多次地做修改程序的尝试,与不可见的设计及源代码“顽强战斗”,以实现所要求的修改。
  2. 通过仔细分析程序尽可能多地掌握程序的内部工作细节,以便更有效地修改它。
  3. 在深入理解原有设计的基础上,用软件工程方法重新设计﹑重新编码和测试那些需要变更的软件部分。
  4. 以软件工程方法学为指导,对程序全部重新设计.重新编码和测试,为此可以使用CASE工具(逆向工程和再工程工具)来帮助理解原有的设计。

——————————————————————————————————

软件再工程过程

  1. 库存目录分析
  2. 文档重构
  3. 逆向工程
  4. 代码重构
  5. 数据重构
  6. 正向工程

——————————————————————————————————

小结:

维护是软件生命周期的最后一个阶段,也是持续时间最长,代价最大的一个阶段。软件工程学的主要目的就是提高软件的可维护性,降低维护的代价。

软件维护通常包括4类活动:为了纠正在使用过程中暴露出来的错误而进行的改正性维护;为了适应外部环境的变化而进行的适应性维护;为了改进原有的软件而进行的完善性维护;以及为了改进将来的可维护性和可靠性而进行的预防性维护。

软件的可理解性、可测试性、可修改性,可移植性和可重用性,是决定软件可维护性的基本因素,软件重用技术是能从根本上提高软件可维护性的重要技术,而本书第9章至第12章将要讲述的面向对象的软件技术是目前最成功的软件重用技术。

软件生命周期每个阶段的工作都和软件可维护性有密切关系。良好的设计,完整准确易读易理解的文档资料,以及一系列严格的复审和测试,使得一旦发现错误时比较容易诊断和纠正,当用户有新要求或外部环境变化时软件能较容易地适应﹐并且能够减少维护引人的错误。因此,在软件生命周期的每个阶段都必须充分考虑维护问题,并且为软件维护预做准备。

文档是影响软件可维护性的决定因素,因此,文档甚至比可执行的程序代码更重要。文档可分为用户文档和系统文档两大类。不管是哪一类文档都必须和程序代码同时维护,只有和程序代码完全一致的文档才是真正有价值的文档。

虽然由于维护资源有限﹐目前预防性维护在全部维护活动中仅占很小比例,但是不应该忽视这类维护活动,在条件具备时应该主动地进行预防性维护。

预防性维护实质上是软件再工程。典型的软件再工程过程模型定义了库存目录分析、文档重构、逆向工程、代码重构﹑数据重构和正向工程6类活动。在某些情况下,以线性顺序完成这些活动,但也并不总是这样。上述模型是一个循环模型,这意味着每项活动都可能被重复﹐而且对于任意一个特定的循环来说,再工程过程可以在完成任意一个活动之后终止。

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

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

相关文章

真机调试,微信小程序,uniapp项目在微信开发者工具中真机调试,手机和电脑要连同一个wifi,先清空缓存,页面从登录页进入,再点真机调试,这样就不会报错了

微信小程序如何本地进行真机调试?_unity生成的微信小程序怎么在电脑上真机测试-CSDN博客 微信小程序 真机调试 注意事项 uniapp项目在微信开发者工具中真机调试,手机和电脑要连同一个wifi,先清空缓存,页面从登录页进入&#xf…

Flask 入门2:路由

1. 前言 在上一节中&#xff0c;我们使用到了静态路由&#xff0c;即一个路由规则对应一个 URL。而在实际应用中&#xff0c;更多使用的则是动态路由&#xff0c;它的 URL是可变的。 2. 定义一个很常见的路由地址 app.route(/user/<username>) def user(username):ret…

安装 vant-ui 实现底部导航栏 Tabbar

本例子使用vue3 介绍 vant-ui 地址&#xff1a;介绍 - Vant 4 (vant-ui.github.io) Vant 是一个轻量、可定制的移动端组件库 安装 通过 npm 安装&#xff1a; # Vue 3 项目&#xff0c;安装最新版 Vant npm i vant # Vue 2 项目&#xff0c;安装 Vant 2 npm i vantlatest-v…

选型 之 工业相机篇

一、概述 23年24年行情不会好&#xff0c;公司各种想办法裁员&#xff0c;在大陆这个大熔炉中只能不断地提炼。我个人主要是在工业领域做2D图像算法和3D算法&#xff0c;但是现在出去都需要全能人才 方案、算法、运动控制等&#xff0c;我目前最大的短板就是方案&#xff0c;在…

【Javaweb程序设计】【C00165】基于SSM的高考志愿辅助填报系统(论文+PPT)

基于SSM的高考志愿辅助填报系统&#xff08;论文PPT&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于ssm的高考志愿辅助填报系统 本系统分为前台系统模块、后台管理员模块以及后台学生模块 前台系统模块&#xff1a;当游客打开系统的网址后&…

跟着cherno手搓游戏引擎【11】静态库、警告消除(渲染预热)

premake修改&#xff1a; SRC下的premake workspace "YOTOEngine" -- sln文件名architecture "x64" configurations{"Debug","Release","Dist"} startproject "Sandbox" -- https://github.com/premake/premak…

wrappedComponentRef和ref的区别

wrappedComponentRef 是在使用高阶组件 (Higher-Order Component) 包装组件时的一个 prop&#xff0c;它用于引用被包装的组件实例。 ref 是 React 提供的用于访问 DOM 元素或者组件实例的属性。在创建组件时&#xff0c;可以给组件添加一个 ref 属性&#xff0c;然后通过该属…

springboot(ssm拍卖管理系统 在线竞拍拍卖系统Java系统

springboot(ssm拍卖管理系统 在线竞拍拍卖系统Java系统 开发语言&#xff1a;Java 框架&#xff1a;springboot&#xff08;可改ssm&#xff09; vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服务器&#xff1a;tomcat 数据库&#xff1a;mysql 5.7&#…

springboot中获取配置文件中属性值的几种方式

目录 第一章、使用Value注解第二章、使用PropertySource注解第三章、使用Configurationproperties注解第四章、使用Java Properties类第五章、使用Environment接口 友情提醒: 先看文章目录&#xff0c;大致了解文章知识点结构&#xff0c;点击文章目录可直接跳转到文章指定位置…

DC-磁盘管理(23国赛真题)

2023全国职业院校技能大赛网络系统管理赛项–模块B:服务部署(WindowServer2022) 文章目录 题目配置步骤组成RAID 5,磁盘分区命名为卷标H盘:Raid5。手动测试破坏一块磁盘,做RAID磁盘修复,确认RAID 5配置完毕。验证查看Raid5(打开磁盘管理器,查看raid信息)Raid5磁盘修复…

JavaEE学习笔记 2024-1-25 --VUE的入门使用

上一篇 个人整理非商业用途&#xff0c;欢迎探讨与指正&#xff01;&#xff01; 文章目录 14.VUE基础14.1VUE的入门使用14.2条件判断14.3循环渲染14.4v-bind绑定标签属性14.5v-model表单标签的双向绑定14.6事件处理14.7axios 14.VUE基础 前端框架 UI框架:页面渲染Bootstrap,L…

Android 车联网——CarMediaService介绍(十九)

一、简介 CarMediaService 是安卓汽车平台中的一个服务,用于管理和控制车辆媒体系统的播放和音频功能。该服务允许车主和乘客通过车辆媒体系统访问音乐、广播、播客等媒体内容,并提供了一系列功能来控制和管理这些媒体资源。 主要功能 媒体播放控制:该服务允许车主和乘客通…

判断是否是IE浏览器

在我们开发页面中总会遇到解决兼容问题&#xff0c;一般通过css hack根据不同浏览器写不同的css,或者判断浏览器加载不同的模块。在这里我们将分享判断ie的方法 一、IE条件注释&#xff08;h5方法&#xff09; IE的判断写法只兼容到IE9&#xff0c;IE10及其以上只能显示非IE的…

Python中如何使用urllib3进行http请求 (一)

Urllib3是什么以及为什么使用它&#xff1f; Urllib3是一个强大且用户友好的Python HTTP客户端。它被设计用来替代默认的Python库进行HTTP请求的urllib2。相比于urllib2&#xff0c;Urllib3具有许多优势&#xff0c;包括连接池、线程安全和对HTTP/1.1的支持。此外&#xff0c;…

Coremail启动鸿蒙原生应用开发,打造全场景邮件办公新体验

1月18日&#xff0c;华为在深圳举行鸿蒙生态千帆启航仪式&#xff0c;Coremail出席仪式并与华为签署鸿蒙合作协议&#xff0c;宣布正式启动鸿蒙原生应用开发。作为首批拥抱鸿蒙的邮件领域伙伴&#xff0c;Coremail的加入标志着鸿蒙生态版图进一步完善。 Coremail是国内自建邮件…

编程笔记 html5cssjs 068 JavaScrip Boolean数据类型

编程笔记 html5&css&js 068 JavaScrip Boolean数据类型 一、Boolean数据类型二、运算符三、代码示例小结 JavaScript中的Boolean数据类型详解及示例。在JavaScript中&#xff0c;Boolean&#xff08;布尔&#xff09;数据类型是一种基本数据类型&#xff0c;它有两个可…

使用golang发送邮件

目前大多应用都是手机登录&#xff0c;但是作为开源的一个软件&#xff0c;或者是私有的一个应用&#xff0c;那么使用手机短信接收验证码成本比较高&#xff0c;使用邮箱相对更容易&#xff0c; 这里从tinode中取出发邮件的部分做一个测试&#xff0c; 其中邮箱一般需要设置…

Unity异步加载场景

前言 Unity中常见的加载场景就是异步加载场景&#xff0c;此博客对异步加载场景进行详细介绍 简单易懂好用。含有加载进度&#xff0c;加载动画等。&#xff08;文末附工程&#xff09; 代码分析 主要脚本MaskPanel &#xff0c;作为单例存在于场景中&#xff0c;下面对此脚…

Angular组件(二) 分割面板ShrinkSplitter

Angular组件(二) 分割面板ShrinkSplitter 前言 在Angular组件(一) 分割面板ShrinkSplitter文章中我们实现了Splitter组件&#xff0c;后来在业务场景中发现在开关右侧容器和底部容器时&#xff0c;使用起来不方便&#xff0c;ngModel绑定的值始终是左侧容器和顶部容器的大小&…

Flutter App 生命周期观察监听

前言 本文主要讲解两种 Flutter生命周期观察监听 方式一&#xff1a;Flutter SDK 3.13 之前的方式&#xff0c;WidgetsBindingObserver&#xff1b; 方式二&#xff1a;Flutter SDK 3.13 开始的新方式&#xff0c;AppLifecycleListener&#xff1b; 测试平台&#xff1a;IO…