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

文章目录



一、软件维护

(一)定义及相关概念

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

(二)软件维护种类

1.完善性维护

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

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

2.适应性维护

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

3.纠错性维护

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

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

改善软件的可维护性

二、软件的可维护性

(一)含义

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

1.可理解性

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

2.可修改性

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

3.可测试性

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

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

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

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

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

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

三、软件重构

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

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

四、软件复用

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

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


总结

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

相关推荐
wxl78122715 小时前
2026年人工智能发展趋势:效率重构、生态协同与规范前行
大数据·人工智能·重构
林籁泉韵716 小时前
GEO服务商深度评测:在AI重构的信息世界中,谁能为品牌奠定“数据基石”?
人工智能·重构
数据猿16 小时前
数据猿张艳飞:启动“出海和视频”双战略 重构产业媒体价值
重构·媒体
技术与健康16 小时前
什么是ADSE?逻辑驱动的软件工程新范式
软件工程
雾江流18 小时前
HDx播放器1.0.184 | 支持多种格式和4K/8K高清视频播放,内置推特~脸书下载器
音视频·软件工程
会周易的程序员19 小时前
openPLC REST API 参考(英译中)
c++·物联网·架构·软件工程·iot
量子炒饭大师19 小时前
【C++入门】数字算子重构的共鸣矩阵 ——【运算符重载】怎样让两个自定义对象直接相加、比较或输出? 运算符重载的完整实现指南助你破局!
c++·矩阵·重构·运算符重载
Andy Dennis19 小时前
一文漫谈面向对象编程中的SOLID编程
java·软件工程·设计规范
PPPPPaPeR.20 小时前
Linux进程概念
linux·软件工程
前端不太难21 小时前
HarmonyOS 走向 PC,应用模型正在重构
重构·状态模式·harmonyos