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

文章目录



一、软件维护

(一)定义及相关概念

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

(二)软件维护种类

1.完善性维护

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

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

2.适应性维护

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

3.纠错性维护

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

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

改善软件的可维护性

二、软件的可维护性

(一)含义

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

1.可理解性

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

2.可修改性

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

3.可测试性

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

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

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

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

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

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

三、软件重构

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

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

四、软件复用

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

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


总结

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

相关推荐
2601_957190902 小时前
超元力mr无限飞车:虚实融合竞速体验,重构线下娱乐消费新生态
重构·娱乐·mr
萤丰信息2 小时前
AI 重构园区运维|全场景无人化智慧运维:破解传统物业高成本痛点
运维·人工智能·重构
workflower8 小时前
医院核心竞争力的四大重构
人工智能·安全·设计模式·重构·动态规划·scrum
Drgfd8 小时前
长期主义者汪进进:能效电气重构充电桩行业价值逻辑
人工智能·重构
Swift社区11 小时前
异构协同,算力重构:CPU+GPU架构下的AI推理优化
人工智能·重构·架构
故渊at1 天前
系列二:MVVM 深度实战与项目重构 | 第7篇 LiveData & StateFlow 状态管理实战:从“粘包弹”到“丝滑流式”
android·重构
智塑未来1 天前
秩益科技DIMAXER:以高解析度多物理场仿真重构电磁系统设计范式
科技·重构
知行产研1 天前
阳光电源:以光储微网+电控技术 重构零碳无人矿山能源生态
重构·能源
ModelHub XC信创模盒1 天前
压力之下,重构赛道:从中美AI博弈到信创生态的深层跃迁
大数据·人工智能·重构·开源·信创·范式
郝学胜-神的一滴2 天前
Qt 高级开发 025:打造优雅界面的艺术与高效重构之道
开发语言·c++·qt·程序人生·重构·软件构建·用户界面