软件工程第九章、第十章:软件维护、软件重构、软件复用

文章目录



一、软件维护

(一)定义及相关概念

  • 定义: 软件维护是指软件系统交付使用之后,为了改正或满足新的需要而修改软件的过程。
  • GB定义:在一个软件产品交付使用后对其进行修改,以纠正故障、改进其性能和其他属性,或使产品适应改变了的环境。
  • 目的及意义:满足用户对已开发产品的性能与运行环境不断提高的需要,进而延长软件的寿命。

(二)软件维护种类

1.完善性维护

对于应用软件和系统软件,在使用期间不断改善和加强产品的性能和功能,满足对用户日益增长的需要。

工作量50-60%,居于第一位

2.适应性维护

使软件适应运行环境的改变而进行的一类维护。其中包括因硬件或支撑软件改变(如操作系统改变、增加数据库或者通信协议等)引起的变化。将软件移植到新的机型上运行,大概占25%

3.纠错性维护

目的在于纠正开发期间未能发现的遗留错误。由于软件测试的不彻底性,任何大型软件交付使用后,都会继续发现潜藏的错误。对他们进行诊断和改正。(20%)

4.防御性维护及其他维护

改善软件的可维护性

二、软件的可维护性

(一)含义

衡量软件维护容易程度的一种软件属性,可维护性取决于软件的可理解性、可修改性和可测试性。

1.可理解性

基于软件,是否有清晰易读的程序和文档,便于运维人员理解

2.可修改性

考虑到软件在维护的过程中也可能出现错误,所以尽可能保证可修改性好的程序在维护出错的概率也小。例如:模块的独立性愈高,开发时采用的技术越先进(面向对象技术+复用技术)。

3.可测试性

可测试性代表一个软件容易被测试的程度,源程序良好的可理解性,齐全的测试文档,都能提高软件的可测试性。

(二)提高软件可维护性的途径

1.提供完整和一致的文档

  • 文档的作用1:帮助维护人员理解程序。
  • 文档的作用2:方便被维护软件的测试

2.使用现代化的开发方法

除了采用面向对象技术和复用技术外,还可以引入数据库技术来管理软件中的数据

三、软件重构

软件重构可以分为代码重构和数据重构,目的是应用最新的设计和实现技术对老系统的源代码和数据进行修改,以达到提高可维护性,适应未来变化的目的。

重构不改变系统的整体体系结构,一般只局限于单个模块的设计和模块内部的局部数据结构。

四、软件复用

在构建新的软件系统的过程中,对已经存在的软件人工制品的使用技术。

包含两方面内容:一是制造软件构件的技术,二是使用软件构件的技术。


总结

本文介绍了软件维护的相关概念,包括四种维护类型:完善性维护(占比50-60%)、适应性维护(25%)、纠错性维护(20%)和防御性维护。阐述了软件可维护性的三个关键属性:可理解性、可修改性和可测试性,并提出通过完整文档和现代化开发方法来提高可维护性。此外,还简要说明了软件重构和软件复用技术。文章旨在帮助读者理解软件维护的基础知识,提升软件系统的可持续性和适应能力。

相关推荐
雾江流1 天前
小米堆叠桌面6.01.05.1991 | 提前享受丝滑堆叠桌面,仅限小米手机
智能手机·软件工程
一枕眠秋雨>o<1 天前
算子即战略:CANN ops-nn 如何重构大模型推理的内存与计算边界
人工智能·重构
敲键盘的生活1 天前
MoneyPrinter重构之一:用nicegui调用大模型生成视频文案
python·重构·aigc·ai编程·ai写作
爱思德学术2 天前
中国计算机学会(CCF)推荐学术会议-C(软件工程/系统软件/程序设计语言):SPIN 2026
软件工程·软件开发
禁默2 天前
不仅是 FlashAttention:揭秘 CANN ops-transformer 如何重构大模型推理
深度学习·重构·aigc·transformer·cann
汇智信科2 天前
打破信息孤岛,重构企业效率:汇智信科企业信息系统一体化运营平台
数据库·重构
赫尔·普莱蒂科萨·帕塔2 天前
智能体工程
人工智能·机器人·软件工程·agi
逍遥德2 天前
如何学编程之01.理论篇.如何通过阅读代码来提高自己的编程能力?
前端·后端·程序人生·重构·软件构建·代码规范
哈__2 天前
CANN加速VAE变分自编码器推理:潜在空间重构与编码解码优化
人工智能·深度学习·重构
禁默2 天前
打破集群通信“内存墙”:手把手教你用 CANN SHMEM 重构 AIGC 分布式算子
分布式·重构·aigc