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

文章目录



一、软件维护

(一)定义及相关概念

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

(二)软件维护种类

1.完善性维护

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

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

2.适应性维护

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

3.纠错性维护

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

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

改善软件的可维护性

二、软件的可维护性

(一)含义

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

1.可理解性

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

2.可修改性

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

3.可测试性

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

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

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

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

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

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

三、软件重构

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

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

四、软件复用

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

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


总结

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

相关推荐
童园管理札记5 分钟前
【回归儿童本位,重构专业底色】学前教育行业的深度思辨与价值坚守(二)
经验分享·重构·生活·学习方法·微信公众平台
AI服务老曹1 小时前
源码交付与低代码重构:企业级 AI 视频管理平台的二次开发实战
人工智能·低代码·重构
北京软秦科技有限公司2 小时前
AI报告文档审核助力食品飞检常态化应对:IACheck下的风险防控与质量管控重构
大数据·人工智能·重构
二等饼干~za8986684 小时前
豆包GEO优化源码开发全解析:技术架构、实现逻辑与实操指南
数据库·sql·重构·架构·mybatis·音视频
ai产品老杨5 小时前
源码级重构与低代码交付:企业级 AI 视频管理平台的二次开发实战
人工智能·低代码·重构
老陈测评5 小时前
AI医院定义:《国际AI医院智联体共识》发布,推动AI医院认知体系重构
人工智能·重构·健康医疗
帮我吧智能服务平台5 小时前
从云端到边缘,智能机器人如何重构企业客服成本结构
人工智能·重构·机器人
OpenCSG6 小时前
AgenticOps全景解读:CSGHub + OpenClaw x AgenticHub 如何重构企业AI基础设施
人工智能·重构
无籽西瓜a6 小时前
【西瓜带你学设计模式 | 第四期 - 抽象工厂模式】抽象工厂模式 —— 定义、核心结构、实战示例、优缺点与适用场景及模式区别
java·后端·设计模式·软件工程·抽象工厂模式
AIArchivist7 小时前
AI医院智联中枢:智慧医疗的核心大脑,重构医疗服务底层逻辑
人工智能·百度·重构