管理信息系统在完成切换过程的各项任务之后,投入正常运行,支持日常的各项事务处理、管理控制和管理决策。就进入了系统运行和维护阶段。在系统的整个使用中,都伴随着系统维护工作的进行。为改正潜藏错误,扩充功能,完善功能,结构翻新,延长系统寿命而进行的各项修改和维修活动称作系统维护。系统维护的目的是保证管理信息系统正常而可靠地运行,并能使系统在运行中不断得到改善和提高,以充分发挥作用。因此,系统维护的目的就是保证系统中的各个因素随着环境的变化始终处于良好的、正确的工作状态。系统维护是系统支持阶段的一项常见的工作,也是系统支持阶段主要的工作。甚至有些人把系统支持简单地称为系统维护。
大量实践表明,无论如何设计系统,无论系统的分析、设计、实施测试如何完善,管理信息系统都不可避免地会存在一些缺陷、错误等。其原因很多,大致可以归纳为下列几类:
1.需求有效性不足;
2.与用户的通信不足;
3.误解需求;
4.采用了错误的方法设计或实现需求;
5.使用错误的程序。
采取系统维护操作时,应该达到下面的基本目标:
1.知道如何修改程序,就可以解决出现的错误;
2.尽可能地修改少量的程序,避免因为修改程序而引发其他的问题;
3.尽可能地避免系统性能的下降,即修改后的系统响应时间和数据吞吐量不下降;
4.尽可能快地完成修改任务,而不影响系统的质量和可靠性。
为了达到这些目标,一定要非常了解将要修改的程序。如果不了解程序的结构,胡乱地修改,有可能引起系统更多的毛病。
1.系统维护的对象
系统维护面向系统中的各种构成因素,按照维护对象的不同,系统维护的内容可分为以下几类:
(1)应用系统的维护:系统的业务处理过程是通过程序的运行而实现的,一旦程序发生问题或业务发生变化,就必然引起程序的修改和调整,因此系统维护的主要活动是对程序进行维护。
(2)数据的维护:业务处理对数据的需求是不断发生变化的,除系统中主体业务数据的定期更新外,还有许多数据需要进行不定期的更新,或随环境、业务的变化而进行调整。此外,数据内容的增加、数据结构的调整和数据的备份与恢复等,都是数据维护的工作内容。
(3)代码的维护:当系统应用范围扩大和应用环境变化时,系统中的各种代码需要进行一定程度的增加、修改、删除以及设置新的代码。
(4)文档的维护:根据应用系统、数据、代码及其他维护的变化,对相应文档进行修改,并对所进行的维护进行记载。
(5)硬件设备的维护:主要指对主机及外设的日常管理和维护,都应由专人负责,定期进行,以保证系统正常有效的运行。硬件的维护应有专职的硬件维护人员来负责。主要有两种类型的维护活动,一种是定期的设备保养性维护,保养周期可以是一周或一个月不等,维护的主要内容是进行例行的设备检查与保养;另一种是突发性的故障维修,即当设备出现突发性故障时,由专职的维修人员或请厂商来排除故障,这种维修活动所花时间不能过长,以免影响系统的正常运行。为了提高硬件系统的可靠性,一般可采取双机备份的形式,当一组设备出现故障时立即启动另一组备用设备投入运行,故障排除后再一次进入双机备份状态。
2.系统维护的类型
按照软件维护的不同性质,系统维护可划分为正确性维护、适应性维护、完善性维护和预防性维护四种类型。
正确性维护用来改正在系统开发阶段已发生的而系统测试阶段未发现的错误。适应性维护是为适应软件的外界环境变化而进行的修改。完善性维护是为扩充功能和改善性能而进行的修改,指对已有的软件系统增加一些在软件需求规范书中没有规定的功能与性能特征,还包括对处理效率和编写程序的改进。预防性维护是为减少或避免以后可能需要的前三类维护而对软件配置进行的修改,从而减少以后的维护工作量、维护时间和维护费用。
根据对多种维护工作的分布情况统计,一般正确性维护占21%,适应性维护占25%,完善性维护达到50%,而预防性维护及其他类型的维护仅占4%。可见系统维护工作中,一半以上的工作是完善性维护。
3.系统维护方法
系统的可维护性对于延长系统的生存期具有决定的意义,因此必须考虑如何才能提高系统的可维护性。为此,需从五个方面入手。
(1)建立明确的软件质量目标和优先级:一个可维护的程序应是可理解的、可靠的、可测试的、可修改的、可移植的、高效率的、可使用的。要实现这所有的目标,需要付出很大的代价。对管理信息系统,更强调可使用性、可靠性和可修改性等目标,同时规定其优先级。这样有助于提高软件的质量,并对软件生存期的费用产生很大的影响。
(2)使用提高软件质量的技术和工具:模块化是系统开发过程中提高软件质量,降低成本的有效方法之一,也是提高可维护性的有效技术。它的优点是如果需要改变某个模块的功能,只要改变这个模块,而对其他模块影响很小。如果需要增加某些功能,仅增加完成这些功能的新的模块或模块层,同时程序错误也容易定位和纠正。结构化程序设计则把模块化又向前推进了一步,不仅使得模块结构标准化,而且将模块间的相互作用也标准化了。采用结构化程序设计可以获得良好的程序结构,提高现有系统的可维护性。
(3)进行明确的质量保证审查:质量保证审查对于获得和维持系统各阶段的质量,是一个很有用的技术。审查还可以检测系统在开发和维护阶段内发生的质量变化,可对问题及时采取措施加以纠正,以控制不断增长的维护成本,延长系统的有效生命期。
(4)选择可维护的程序设计语言:程序是维护的对象,要做到程序代码本身正确无误,同时要充分重视代码和文档资料的易读性和易理解性。因此,要注意编码规则、编码风格,尽量采用结构化程序设计和通用性高的程序设计语言,把与机器和系统相关的部分减少到最低限度。
(5)改进系统的文档:系统文档是对程序总目标、程序各组成部分之间的关系、程序设计策略、程序实现过程的历史数据等的说明和补充。因此,在开发过程中各阶段产生的文档资料要尽可能采用形式描述语言和自动的文件编辑功能。文档是维护工作的依据,文档的质量对维护有着直接的影响。一个好的文档资料应能正确地描述程序的规格,描述的内容局部化,并且易读、易理解。
完成各项系统维护工作后,应及时提交系统维护报告,就所做的系统维护的具体内容进行总结,加入到系统维护的有关文档中。
4.工作过程
系统维护工作的过程包括了4项任务,即确认问题、建立程序的评价基准、研究和修复问题、测试程序。下面分别详细介绍这些任务。(www.xing528.com)
(1)确认问题
可以把系统维护工作看作一个小型的项目。这个小型项目是由系统出现的缺陷触发的,这些缺陷往往是由用户发现的。会出现这样的情况,用户报告说管理信息系统出现了缺陷,但是技术人员来之后,却没有发现这些缺陷。因此,系统维护工作的第一步是确认问题。
管理信息系统项目小组同终端用户一起通过重新使用系统,尽可能地发现问题。如果系统的缺陷不再出现,那么应该由用户解释出现问题的使用环境。确认问题时,会出现3种情况,即没有问题、使用错误、问题确实存在。
即使系统不再出现错误,系统开发小组也不能埋怨用户。因为既可能是用户自己出现了错误,也可能是错误没有被发现。这时应该告诉用户,下一次出现错误时及时通知管理信息系统技术人员。如果发现系统出现的问题是由于用户使用错误造成的,那么应该向用户解释清楚,并且教会用户如何正确地使用系统。
如果用户汇报的错误确实存在,那么系统分析人员应该做两件事情。第一,研究相关的文档即系统知识,研究造成错误的上下文。换句话说,在明白产生错误的原因之前,不要修复错误。第二,所有的维护工作都在程序的拷贝上进行。在程序修复之前,所有的原程序都保存在程序库中且可以正常使用。
(2)建立程序的评价基准
在给定的程序拷贝上,系统分析人员应该建立程序的评价基准。一个程序出现了缺陷,那么可能只是其中的一部分出现了错误,整个程序不可能都是错误的。但是,系统维护工作有可能会带来意想不到的副作用,这些副作用有可能影响到整个程序的功能和性能。因此,在修改程序之前,应该为该程序的执行和测试建立一个基准。这个基准是程序维护之后的评价基准。
这项工作由系统分析人员和系统编程人员来完成。用户也应该参加到该工作中,确保系统的测试在一个正常的工作环境下进行。
可以使用两种方式定义测试用例。第一,如果过去的测试数据依然作为系统知识存在于仓储库中,那么使用这些测试数据来验证系统。经常碰到的情况是,过去的测试数据不能直接使用,那么可以修改这些数据,以便测试使用。第二,可以使用测试工具自动捕捉测试数据。借助于一些工具,用户可以输入测试数据,这些测试数据则被自动地记录下来。这些数据就是测试的基准。
(3)研究和修复问题
系统维护的主要任务是修改程序。修改程序的工作应该由程序编程人员来完成。经常应该是这样,修改后的程序不能直接使用在生产管理信息系统中,而是作为管理信息系统的一个新版本使用。
虽然说编写程序的编程人员可以方便地修改自己程序中的错误。但是,由于技术人员的流动性,或者工作的安排,常常是自己编写的程序由其他编程人员来修改。因此,单靠记忆是不行的,必须依靠过去产生的知识。
应用程序的知识通常来自源代码的研究。理解别人编写的程序需要花费相当多的时间。这项工作常常因为下面一些原因会更加缓慢:
a.不合理的程序结构;
b.非结构化的逻辑,例如不合理的代码样式等;
c.以前的修改;
d.缺乏文档或文档不完整、不全面。
理解程序的目的是了解当前程序在整个系统中的地位和影响,理解系统为什么不工作或不能正常工作。只有理解了程序,才能确定修改这些错误需要耗费的资源和时间。
(4)测试程序
错误修复之后,还必须通过测试。这里的测试包括单元测试和系统测试。测试成功的程序应该作为新版本发布。
系统维护的成本主要在于修改仓储库中的系统知识和修改程序库中源程序代码的程序文档上。
系统知识是由系统分析人员使用的支持系统的文档,程序文档是由系统编程人员使用的支持程序的文档。
(5)软件复用
复用也称为再用或重用,是指同一事物不做修改或稍加改动就多次重复使用。广义的软件复用可分为三个层次:知识的复用;方法和标准的复用;软件成分的复用。其中,前两个层次属于知识工程研究的范畴,这里讨论软件成分的复用问题。
可复用的软件成分必然具有下列属性:
a.良好模块化,即具有单一、完整的功能,且已经经过反复测试被确认是正确的。
b.结构清晰,即具有很好的可读性、可理解性,且规模适当。
c.高度可适应,即能适应各种不同的使用环境。
利用可复用的软件成分来开发软件的技术,称为软件复用技术,它也指开发可复用软件的技术。目前主要有三种软件复用技术。
(1)软件构件技术:按照一定的规则把可再用的软件成分组合在一起,构成软件系统或新的可再用的软件成分。这种技术的特点是可再用的软件成分在整个组合过程中保持不变。这一技术用在数学或工程方面的应用软件中效益明显,在系统软件的输入/输出或存储管理等方面应用也较成功。使用这种技术需要公用数据库和可再用软件库的支持,前者提供按照公用标准数据模式建立的数据模块,后者提供用于组合的可再用的软件成分。
(2)软件生成技术:根据形式化的软件功能描述,在已有的可复用的软件成分基础上,生成功能相似的软件成分或软件系统。使用这种技术需要可再用软件库和知识库的支持,其中知识库用来存储软件生成机理和规则。
(3)面向对象的程序设计技术:传统的面向数据/过程的软件设计方法,把数据和过程作为相互独立的实体,数据用于表达实际问题中的信息,程序用于处理这些数据。程序员在编程时必须时刻考虑所要处理的数据格式,对于不同的数据格式要做同样的处理,或者对于相同的数据格式要做不同的处理,都必须编写不同的程序。显然,使用传统的软件设计方法,可复用的软件成分比较少。
传统的软件设计方法忽略了数据和程序之间的内在联系。事实上,用计算机解决的问题都是现实世界中的问题,这些问题无非由一些相互存在一定联系的事物所组成。这些事物称为对象,每个具体的对象都可以用下列两个特征来描述:描述对象所需要使用的数据结构以及可以对这些数据进行的有限操作。也就是说,数据结构和对数据的操作。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。