当前位置: 首页 > news >正文

软件工程知识梳理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.lryc.cn/news/293343.html

相关文章:

  • docker- php7.4
  • 开发一个Android App,在项目中完成添加联系人的功能,通过ContentResolver向系统中添加联系人信息。
  • Flume搭建
  • Web APIs 1 DOM操作
  • dvwa,xss反射型lowmedium
  • 从云计算到物联网:虚拟化技术的演变与嵌入式系统的融合
  • linux 文件查看 head 、 cat 、 less 、tail 、grep
  • 13.2 Web与Servlet进阶(❤❤)
  • 记录解决报错--vue前后端分离,接口401(Unauthorized)
  • 【笔记】Android 常用编译模块和输出产物路径
  • 部署私有知识库项目FastGPT
  • 【2024-02-02】华为秋招笔试三道编程题解
  • 银行数据仓库体系实践(8)--主数据模型设计
  • vue在main.js中引入三方插件不生效的原因
  • chatgpt搭建
  • vue基本理解
  • NLP入门系列—Attention 机制
  • 实习记录——第十天
  • Java实现学生信息管理系统:从Excel中提取数据的实用方法
  • 幻兽帕鲁服务器怎么一键删除游戏存档?(阿里云服务器)
  • Cambalache in Ubuntu
  • 洛谷P1540 机器翻译
  • python-自动化篇-运维-可视化-绘图库-matplotlib
  • 【译】在 Mac 上加速 PyTorch 训练
  • 如何在Windows部署GoLand并通过SSH远程连接Linux服务器
  • Netty源码三:NioEventLoop创建与run方法
  • 【讲座分享】| 复旦大学张奇教授——《自然语言发表论文如何打怪升级?NLP顶会论文发表》
  • 面试八股文(3)
  • Kubernetes WebHook 入门 -- 入门案例: apiserver 接入 github
  • 办公软件巨头CCED、WPS面临新考验,新款办公软件异军突起