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

文章目录



一、软件维护

(一)定义及相关概念

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

(二)软件维护种类

1.完善性维护

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

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

2.适应性维护

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

3.纠错性维护

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

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

改善软件的可维护性

二、软件的可维护性

(一)含义

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

1.可理解性

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

2.可修改性

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

3.可测试性

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

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

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

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

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

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

三、软件重构

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

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

四、软件复用

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

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


总结

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

相关推荐
GEO行业研究员5 天前
AI是否正在重构个体在健康相关场景中的决策路径——基于系统建模与决策链条结构分析的讨论
人工智能·算法·重构·geo优化·医疗geo·医疗geo优化
微学AI5 天前
从云端到指尖:重构 AI 终端生态与实体交互新范式
人工智能·重构·交互
带你看月亮5 天前
第 2 章:重构的原则
重构·模块测试·极限编程
科技云报道5 天前
2025,AI Agent时代的主动防御:安全防御体系的重构之年
人工智能·安全·重构
创客匠人老蒋5 天前
创客匠人:2026知识付费“生死局”,AI智能体如何重构“交付”价值?
大数据·人工智能·重构
holeer5 天前
【V3.0】「酒店 × 视觉AI」项目 | 需求分析说明书(软件工程概论 - 课程作业三)
人工智能·软件工程·需求分析·原型设计·总体设计·结构化设计
xiaoginshuo5 天前
2026 RPA 价值重构:AI 时代从需求到生态深度解读
人工智能·重构·rpa
南_山无梅落5 天前
从传统Web到API驱动:使用Django REST Framework重构智能合同审查系统
重构·django·vue·drf
没有bug.的程序员5 天前
订单系统重构史诗:从单体巨兽到微服务矩阵的演进、数据一致性内核与分布式事务
java·微服务·矩阵·重构·分布式事务·数据一致性·订单系统
雾江流5 天前
Xtra 2.54.1 | Twitch直播第三方客户端,开源纯净无广
软件工程