不间断的系统维护是系统稳定运行的基石
从系统上线运行起,系统维护人员就必须对系统展开维护行动,直到系统停止运行,系统维护费用大约占系统运行全寿命期总成本的60%。
为了清除系统运行中发生的故障和错误,维护人员要对系统进行必要的修改与完善;为了使系统适应用户环境的变化,满足新提出的需要,也要对原系统做些局部的更新,这些工作称为系统维护,其目的是维护软件系统的"正常运作"。以保证系统中的各个要素随着环境的变化始终处于最新的、正确的工作状态。
特殊系统维护,主要包括对原有系统功能、报表格式进行修改、删除,调整系统运行规则,增加新的系统功能。这种类型的系统维护活动需要双方签订新的定制开发合同,让企业新的需求得到及时满足,获得更大的商业价值。
系统维护工作在整个系统生命周期中常常被忽视。人们往往热衷于系统开发,当开发工作完成以后,多数情况下开发队伍被解散或撤走,而在系统开始运行后并没有配置适当的系统维护人员。
这样,一旦系统发生问题或环境发生变化,最终用户将无从下手,这就是为什么有些信息系统在运行环境中长期与旧系统并行运行不能转换,甚至最后被废弃的原因。随着信息系统应用的深入,以及使用寿命的延长,系统维护的工作量将越来越大。
系统维护的费用往往占整个系统生命周期总费用的60%以上,因此有人曾以浮在海面的冰山来比喻系统开发与维护的关系,系统开发工作如同冰山露出水面的部分,容易被人看到而得到重视,而系统维护工作如同冰山浸在水下部分,体积远比露出水面的部分大得多,但由于不易被人看到而常被忽视。但系统维护是信息系统可靠运行的重要技术保障,必须给予足够的重视。
系统维护的内容
(1)系统应用程序维护。应用软件维护是系统维护的最主要内容。它是指对相应的应用程序及有关文档进行的修改和完善。
系统的业务处理过程是通过应用程序的运行而实现的,一旦程序发生问题或业务发生变化,就必然地引起程序的修改和调整,因此系统维护的主要活动是对程序进行维护。
(2)数据维护。数据库是支撑业务运作的基础平台,需要定期检查运行状态。业务处理对数据的需求是不断发生变化的,除了系统中主体业务数据的定期正常更新外,还有许多数据需要进行不定期的更新,或随环境或业务的变化而进行调整,以及数据内容的增加、数据结构的调整。此外,数据的备份与恢复等,都是数据维护的工作内容。
(3)代码维护。代码维护是指对原有的代码进行的扩充、添加或删除等维护工作。
随着系统应用范围的扩大,应用环境的变化,如服务器环境、支付接口等发生改变,系统中的各种代码都需要进行一定程度的增加、修改、删除,以及设置新的代码。
4)硬件设备维护。主要就是指对服务器的日常维护和管理,这些工作都应由专人负责,定期进行,以保证系统正常有效地工作。
系统维护的类型
(1)纠错性维护。由于系统测试不可能揭露系统存在的所有错误,因此在系统投入运行后频繁的实际应用过程中,就有可能暴露出系统内隐藏的错误。诊断和修正系统中遗留的错误,就是纠错性维护。
纠错性维护时在系统运行中发生异常或故障时进行的,这种错误往往是遇到了从未用过的输入数据组合或是在与其他部分接口处产生的,因此只是在某些特定的情况下发生。有些系统运行多年以后才暴露出在系统开发中遗留的问题,这是不足为奇的。
(2)适应性维护。适应性维护时为了使系统适应环境的变化而进行的维护工作。
一方面计算机科学技术迅速发展,硬件的更新周期越来越短,新的操作系统和原来操作系统的新版本不断推出,外部设备和其他系统部件经常有所增加和修改,这就是必然要求信息系统能够适应新的软硬件环境,以提高系统的性能和运行效率;
另一方面,信息系统的使用寿命在延长,超过了最初开发这个系统时应用环境的寿命,即应用对象也在不断发生变化,机构的调整,管理体制的改变、数据与信息需求的变更等都将导致系统不能适应新的应用环境。
如代码改变、数据结构变化、数据格式以及输入/ 输出方式的变化、数据存储介质的变化等,都将直接影响系统的正常工作。因此有必要对系统进行调整,使之适应应用对象的变化,满足用户的需求。
(3)完善性维护。在系统的使用过程中,用户往往要求扩充原有系统的功能,增加一些在软件需求规范书中没有规定的功能与性能特征,以及对处理效率和编写程序的改进。
例如,有时可将几个小程序合并成一个单一的运行良好的程序,从而提高处理效率;增加数据输出的图形方式;增加联机在线帮助功能;调整用户界面等。
尽管这些要求在原来系统开发的需求规格说明书中并没有,但用户要求在原有系统基础上进一步改善和提高;并且随着用户对系统的使用和熟悉,这种要求可能不断提出。为了满足这些要求而进行的系统维护工作就是完善性维护。
(4)预防性维护。系统维护工作不应总是被动地等待用户提出要求后才进行,应进行主动的预防性维护,即选择那些还有较长使用寿命,目前尚能正常运行,但可能将要发生变化或调整的系统进行维护,目的是通过预防性维护为未来的修改与调整奠定更好的基础。
例如,将目前能应用的报表功能改成通用报表生成功能,以应付今后报表内容和格式可能的变化,根据对各种维护工作分布情况的统计结果,一般纠错性维护占21%,适应性维护工作占25%,完善性维护达到50%,而预防性维护以及其他类型的维护仅占4%,可见系统维护工作中,一半以上的工作室完善性维护。
系统维护要付出很高的代价
首先,有形的代价直接来自维护工作本身,维护工作可分为两部分:
一部分为非生产性活动,主要是理解源程序代码的功能,解释数据结构、接口特点和性质限度等。这部分工作量和费用与系统的复杂程度、维护人员的经验水平以及对系统的熟悉程度密切相关;另一部分为生产性活动,主要是分析评价、修改设计和编写程序代码等。其工作量与系统开发的方式、方法、采用的开发环境有直接的关系因此,如果系统开发途径不好,且原来的开发人员不能参加维护工作,则维护工作量和费用呈指数上升。例如,据1976年的报道,美国空军的飞行控制软件每条指令的开发成本是75美元,而维护成本大约是每条指令4000美元。统计表明,60%-70%的软件费用花在维护方面。