维护的定义
所谓软件维护就是在软件已经交付使用之后,为了改正错误或者满足新的需要而修改软件的过程。维护过程本质上是修改和压缩了的软件定义和开发过程
维护的基本任务
在软件产品被开发出来并交付用户使用之后,就进人了软件的运行维护阶段。这个阶段是软件生命周期的最后一个阶段,其基本任务是保证软件在一个相当长的时期能够正常运行。
软件工程的目的
软件工程的主要目的就是要提高软件的可维护性,减少软件维护所需要的工作量,降低软件系统的总成本。
件维护有哪些内容?(维护的分类)
(1)校正性维护:软件测试不可能暴露出一个大型软件系统中所有潜藏的错误。在任何大型程序的使用期间,用户必然会发现程序错误,并把他们遇到的问题报告给维护人员。维护人员诊断和改正错误的过程就称为校正性维护。
(2)适应性维护:为了使软件适应计算机硬件、软件及数据环境的不断变化而修改软件的过程称为适应性维护。
(3)完善性维护:在使用软件的过程中,用户往往会提出增加新功能或修改已有功能的建议,还可能提出一般性的改进意见,为了满足这类要求,需要进行完善性维护。
(4)预防性维护:为了提高软件未来的的可维护性和可靠性而对软件进行的修改称为预防性维护。预防性维护实质上是软件再工程。
补充:
(1)顺口溜:校、适、完、防
(2)在全部维护活动中,一半以上是完善性维护
软件维护的特点
结构化维护与非结构化维护:
- 非结构化维护是没有使用良好定义的方法学开发出软件的必然结果,由于程序内部文档不足使得维护更加困难,非结构化维护往往需要付出很大的代价,浪费精力和遭受挫折与打击。没有测试方面的文档,也不可能进行回归测试。
- 结构化维护是在软件开发的早期应用软件工程方法学的结果。在软件配置完整的情况下,能减少精力的浪费并且能提高维护的总体质量。(与软件维护有关的绝大多数问题,都可归因于软件定义和软件开发的方法有缺点。)
- 可能会出现填空题:软件维护可以分为有文档的结构化维护和无文档的非结构化维护
维护报告
- 软件问题报告表(维护要求表)
- 软件修改报告
软件问题报告表是一个外部产生的文件,它是维护人员给用户提供的,是计划维护活动的基础。软件组织内部应该制定出一个软件修改报告,它给出下述信息:
(1)满足维护要求表中提出的要求所需要的工作量。
(2)维护要求的性质。
(3)这项要求的优先次序。
(4)与修改有关的事后数据。
软件的可维护性
决定软件可维护性的因素:
记忆方法:顺口溜:“理、测、修、移、重”
- 可理解性:软件的可理解性表现为外来读者理解软件结构、功能、接口和内部处理过程的难易程度。
- 可测试性:诊断和测试的容易程度取决于软件容易理解的程度,当然,良好的文档对诊断和测试是至关重要的。模块的环形复杂度越大,可执行的路径就越多,全面测试他的难度就越高。
- 可修改性:耦合、内聚、信息隐藏、局部化、控制域和作用域的关系等,都会影响软件的可修改性。
- 可移植性:软件的可移植性是指把程序从一种计算环境(硬件配置和操作系统)转移到另一种计算环境的难易程度。把与硬件,操作系统以及其他外部设备有关的程序代码集中放到特定的程序模块中,可以把因环境变化而必须修改的程序局限在少数程序模块中,从而降低修改的难度。
- 可重用性:所谓重用是指同一事物不做修改或稍加改动就在不同的环境中多次重复使用。
(1)通常,可重用的软件构件在开发时都经过很严格的测试,可靠性比较高,且在每次重用过程中都会发现并清除一些错误,随着时间推移,这样的构件将变成实质上无错误的。因此,软件中使用的可重用构件越多,软件的可靠性越高,校正性维护需求就越少。(选择)
(2)软件中使用的可重用构件越多,适应性和完善性维护也就越容易。
软件维护与文档
- 文档对软件的可维护性起决定因素
- 软件系统的文档可分为用户文档和系统文档两类
- 用户文档主要描述系统功能和使用方法,并不关心这些功能是怎样实现的;系统文档描述系统设计、实现和测试等各方面的内容
- 只有和程序代码完全一致的文档才是真正有价值的文档。(不要看见完全一致,就认为这句话是错误的)
逆向工程
软件的逆向工程是分析程序以便在比源代码更高的抽象层次上创建出程序的某种表示,也就是说逆向工程是一个恢复设计结果的过程。
习题
1、软件维护是软件生命周期的最后一个阶段。(✅)
2、事实上,远在提出一项维护要求之前,与软件维护有关的工作已经开始了。(✅)
3、由于长期使用的大型软件系统在使用过程中必然会经受多次修改,所以文档比程序代码更重要。(✅)
4、软件重用技术是能从根本上提高软件可维护性的重要技术,面向对象的软件技术是目前最成功的软件重用技术。(✅)
5、维护应该针对整个软件配置,不应该只修改源程序代码。也就是说对源程序代码的修改还要反映在设计文档或用户手册中。(✅)