摘 要:伴随着计算机技术的发展,计算机软件已在诸多行业发挥着重要作用。通信技术和计算机技术的进一步发展,使计算机软件的应用更加普及和深入,计算机软件已经在国民经济和社会生活的各个方面发挥着前所未有的重要作用。然而,随着社会的进步、业务的发展和新技术的出现,人们发现许多软件已越来越不适应生产和生活的需要。于是,人们就试图对这些软件进行修改、完善,以适应新的业务需要,但当系统分析师和软件设计师在改造这些软件时,往往发现其中一些软件改造工作难度相当大,甚至不可能。原因在于有些软件的可维护性相当差,缺乏基本的可理解性、可修改性和可测试性。迫于无奈,最终只得放弃改造,重新设计开发。因此,软件的可维护性相当重要。
关键词:计算机软件;可维护性;问题
计算机软件是用户和硬件之间的接口界面。计算机用户可以通过软件和计算机实行沟通,软件是计算机系统设计的重要根据。为能方便用户,让计算机体系极具较高的整体效用,在计算机系统设计时,要对硬件和软件相结合的全局进行考虑,并满足用户的需求。软件保护技术,即怎样防止破解合法软件,软件保护产品所涉及内容极为宽泛,属于综合技术范畴之内。软件可维护性是指导软件维护工作的一个重要参考依据,是软件维护难易程度评价的标准,是软件产品的一个重要质量特性。软件可维护性即维护人员对该软件进行维护的难易程度,具体包括理解、改正、改动和改进该软件的难易程度。软件的可维护性差是软件维护工作量和费用激增的直接原因,因此在软件工程的各个阶段都要保证软件具有较高可维护性,从而降低软件维护成本,这是软件工程的重要目标之一。
1 计算机软件可维护性概述
概括地说,软件生命周期由软件定义、软件开发和运行维护(也称为软件维护)3个时期组成。 运行维护时期的主要任务是使软件持久地满足用户的需要。具体地说,当软件在使用过程中发现错误时应该加以改正;当环境改变时应该修改软件以适应新的环境;当用户有新要求时应该及时改进软件以满足用户的新需要。
软件维护阶段的关键任务是,通过各种必要的维护活动使系统持久地满足用户的需要。通常有4类维护活动:
1)纠错性维护:在开发过程中要生成100%可靠无误的软件通常是不太现实的,为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用,应当进行的诊断和改正错误的过程就叫做改正性维护。
2)适应性维护:在使用过程中,外部环境(如新的硬、软件配置)、数据环境(如数据库、数据格式、数据输入/输出方式、数据存储介质)可能发生变化。为使软件适应这种变化,而去修改软件的过程就叫做适应性维护。
3)完善性维护或增强:在软件的使用过程中,用户往往会对软件提出新的功能与性能要求。为了满足这些要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。这种情况下进行的维护叫做完善性维护。
4)预防性维护或再工程:即修改软件,为将来的维护活动预先做准备。
除此四类维护活动外,还有一些其它类型的维护活动,如:支援性维护:通过提供最新用户文档或联机用户文档,进行适当的用户培训或设立专门的维护人员等方式来减少此类维护活动。
软件维护具有很大的必要性、长期性和艰巨性。以上几个方面的维护工作中,第二和第三层面维护方面所占的份额最大,占80%左右的总维护工作。可见,软件维护的费用也大得惊人,有些维护费用可能高达软件总开发费用的55%~70%,软件的可维护性居于首位。但软件维护的难度越来越大,并已成为目前所面临的最大问题。
2 提高软件的可维护性方法
软件的可维护性对于延长软件的寿命具有决定性的意义。因此,不仅维护人员应重视软件的可维护性,软件开发人员也要为减少今后的维护工作量而努力。为了提高软件的可维护性,可以从以下几个方面着手:
1)建立明确的软件质量目标。一个可维护的程序应是可理解的、可靠的、可测试的、可修改的、可移植的、效率高的和可使用的。如果要程序满足可维护性七个特性的全部要求,那么要付出很大的代价,甚至是不现实的,但有些可维护性是相互促进的,例如可理解性和可测试性、可理解性和可修改性。但另一些质量特性却是相互抵触的,例如效率和可移植性、效率和可修改性等。因此要明确软件所追求的质量目标。
2)使用先进的软件开发技术和工具。利用先进的软件开发技术能大大提高软件质量和减少软件费用。面向对象的软件开发方法就是一个非常实用而强有力的软件开发方法,用面向对象方法开发出来的软件系统,稳定性好,比较容易修改,比较容易理解,易于测试和调试,因此,可维护性好。
3)建立明确的质量保证。质量保证是指为提高软件质量所做的各种检查工作。质量保证检查是非常有效的方法,不仅在软件开发的各阶段中得到了广泛应用,而且在软件维护中也是一个非常主要的工具。为了保证可维护性,以下四类检查是非常有用的:
① 在检查点进行检查。保证软件质量的最佳方法是在软件开发的最初阶段就把质量要求考虑进去,并在开发过程每一阶段的终点,设置检查点进行检查。检查的目的是要证实已开发的软件是是否符合标准,是否满足规定的质量需求。在不同的检查点,检查的重点不完全相同。
② 验收检查。验收检查是一个特殊的检查点的检查,是交付使用前的最后一次检查,是软件投入运行之前保证可维护性的最后机会。它实际上是验收测试的一部分,只不过它是从维护的角度提出验收的条件和标准。
③ 周期性的维护检查。软件在运行期间,为了纠正新发现的错误或缺陷,为了适应计算环境的变化,为了响应用户新的需求,必须进行修改。因此会导致软件质量有变坏的危险,可能产生新的错误,破坏程序概念的完整性。因此,必须像硬件的定期检查一样,每月一次或二月一次,对软件做周期性的维护审查,以跟踪软件质量的变化。周期性维护审查实际上是开发阶段检查点复查的继续,并且采用的检查方法、检查内容都是相同的。为了便于用户进行运行管理,适时提供维护工具以及有关信息是很重要的。维护审查的结果可以同以前的维护审查的结果、以前的验收检查的结果和检查点检查的结果相比较,任何一种改变都表明在软件质量上或其他类型的问题上可能起了变化。对于改变的原因应当进行分析,例如,如果使用的是复杂性度量标准,则应当随机地选择少量模块,再次测量其复杂性。
④ 对软件包的检查。软件包是一种标准化了的,可为不同单位、不同用户使用的软件。软件包卖主考虑到他的专利权,一般不会提供给用户他的源代码和程序文档。因此,对软件包的维护采取以下方法。使用单位的维护人员首先要仔细分析、研究卖主提供的用户手册、操作手册、培训教程、新版本说明、计算机环境要求书、未来特性表,以及卖方提供的验收测试报告等,在此基础上,深入了解本单位的希望和要求,编制软件包的检验程序。该检验程序检查软件包程序所执行的功能是否与用户的要求和条件相一致。为了建立这个程序,维护人员可以利用卖方提供的验收测试实例,还可以自己重新设计新的测试实例。根据测试结果,检查和验证软件包的参数或控制结构,以完成软件包的维护。
4)选择可维护的语言。程序设计语言的选择对维护影响很大。低级语言很难掌握,很难理解,因而很难维护。一般来说,高级语言比低级语言更容易理解,第四代语言更容易理解,容易编程,程序容易修改,改进了可维护性。
5)改进程序的文档。程序文档是对程序功能、程序各组成部分之间的关系、程序设计策略、程序实现过程的历史数据等的说明和补充。程序文档对提高程序的可阅读性有重要作用。为了维护程序,人们必须阅读和理解程序文档。
结语
总之,当前计算机技术在整个国民经济中具有相当广泛的领域,在人们的日常生活中,计算机技术可以说是无处不在,是人们生活、工作不可缺少的工具之一,以软件技术作为其内在灵魂的计算机信息系统,正在对系统高度集成化、结构广泛分布化、信息多元化和功能智能化等一系列新型发展方向越来越重视,并逐步在实践中得以实现。软件维护是一项综合性很强的工作,随着软件规模和复杂度的日益提高,使软件维护成为软件生存周期中费用最高、难度最大的一个阶段。因此,良好的软件可维护性可以降低维护成本,延长软件生命周期。