摘要:综合电子设备管理系统是我单位自主研发的基于.net平台的分布式应用程序,系统一期建设已经完成,其二期建设的主要内容是数据安全访问的问题,目标是建立数据统一访问接口及其使用规范,约束和审计数据应用访问数据库的行为,对数据应用提供强制审计的技术手段,结合作者实践,讨论从注重可维护性的开发过程和注重软件管理两方面提高系统的可维护性,最后分析采用方法的效果。 关键词:可维护性;模块化;可测试性0引言随着软件大型化,复杂化的发展,软件维护所耗费的资源越来越多,软件可维护性设计日益得到重视。我单位自行研制的综合电子设备管理系统的一期建设已经完成,在一期建设中已建成数据的统一存储和统一分发框架。但主要存在以下问题:无法获得应用用户对数据库的操作日志;开发人员对数据库的使用不规范,查询的结果集过大,导致数据库的性能大幅下降;应用直接使用数据的登录数据库,存在着一定的安全隐患。这些问题出现的原因,一是在软件开发过程中对可维护性设计考虑欠缺,导致软件从根本上忽视了可维护性的重要性,二是软件文档不规范,内容不一致。在维护阶段出现问题,根据文档不易得到有帮助的信息,难以定位错误的类型和根源。因此,系统二期建设的主要目标是注重软件可维护性的开发过程,规范文档管理,建立数据统一访问接口及其使用规范,约束和审计数据应用访问数据库的行为,对数据应用提供强制审计的技术手段。1注重可维护性的开发过程综合电子设备管理系统分为五个子系统,包括ado.net驱动封装子系统[1]、webservice接口子系统、管理配置网站、存储子系统(sqlserver2008数据库)和监控子系统(数据库网络协议分析与连接控制)。由于系统交付后,存在较长维护期,同时系统存在升级与扩展的情况,因此对系统的可维护性设计要求较高。1.1系统的可维护性需求系统具有较高的可维护性需求。首先,系统作为数据中心应用的基础平台,数据中心的新建应用系统必须依赖于本系统,系统的可靠性和性能直接影响到应用系统的正常运行,系统具有较长的生命周期。其次,本项目中的接口子系统是基于ado.net2.0实现的,随着ado.net的升级,接口子系统也需要升级。监控子系统对sqlserver数据库的网络包进行解析,由于网络包格式不公开,解析时会有遗漏,而且用户需求是当发现未能解析的数据包时,应及时添加到监控子系统中。为了增加系统的可维护性,减少维护人员理解和修改系统的难度,我们在系统的设计上,不仅仅关注系统的功能需求实现,而且重视系统的可维护性需求。在系统开发过程中,从软件易于理解、易于测试和易于修改的角度出发,提高系统的可维护性。1.2改善软件的可理解性本系统涉及的问题域有一定的复杂性,如果将整个问题域的复杂性完全暴露给维护人员,维护人员很难理解整个系统。因此,首先,我们将整个系统分为功能独立的五个子系统;其次,在各个子系统设计时,我们都采用了模块化的方法,即内聚性高的业务逻辑合并封装成独立的模块;最后,重视设计文档质量,对设计文档做了内部审核,确保文档清晰准确的描述了设计。一期系统中,各模块之间相互依赖;一个源代码包含多个相关功能代码。在二期系统中,我们改善了子系统的设计,增强各个模块的内聚性,降低模块之间的耦合性。首先,各个功能的相关代码处于不同的代码目录;其次,各模块都做成了单独的静态库,总控模块负责调度各个库,并且明确各个模块对外提供的接口,模块之间的调用都通过接口完成。通过这种方式将系统进行清晰的划分,维护人员可通过对模块接口的学习快速了解子系统的运行流程,当需要时再对某模块进一步分析。1.3改善软件的可测试性维护人员对代码进行修改后,必须进行测试,才能保证软件的质量[4]。并且,用户对系统的可靠性要求很高。因此,在软件设计的整个过程中,我们都考虑了测试的问题。首先,各个子系统的内部模块必须是单向依赖,对出现循环依赖的模块,我们采用调整功能分布,抽取公共模块等方面消除循环依赖。其次,对于接口子系统,我们需要对某些模块内部进行深入的测试,而由于模块接口的封装性,无法直接访问内部数据;对于这样的情况,我们在设计这样的模块时,专门提供了测试接口。最后,开发中采用了cppunit、nunit和junit测试框架,通过测试框架来组织测试程序。在测试阶段,我们根据测试报告,对照测试大纲和用例设计,对当前的测试进行总结,比如,何种测试用例发现何种错误,最常见的错误,如何从测试结果判断是哪种错误,该错误所在的模块是什么。在相关人员修改错误时,记录排错时的思路和过程。根据这些总结,编写了相应文档备查,事实证明,这些文档在系统维护阶段发挥了很大作用。1.4改善软件的可扩展性监控子系统采用网络监听的方式获取数据库访问的信息,这种方式的优点是不给业务系统增加性能负担,缺点是由于数据库协议不公开,虽然我们进行了大量测试,但肯定仍有遗漏之处。为了当发现未能解析的数据包时,及时添加监控子系统,同时不重新编译系统,我们进行了可扩展性设计。我们采用了动态库加载和针对接口编程的方法。监控子系统启动后,会加载指定目录下的动态库,这些动态库都实现了规定的接口。2注重软件管理2.1规范文档系统交付使用后,除了在培训时所了解的内容之外,为了让用户对系统更好的理解和使用,向用户提供了多种随机文档,包括功能说明,用户使用手册,参考手册,管理员指南等。在文档编写的过程中,我们编写了综合电子设备管理系统编写规范,对文档格式和一些必要内容进行了规范,保证各文档的风格一致,内容一致。对于一些用户使用中容易出错的地方,在用户使用手册中示例说明。在具体编写文档时,根据设计人员的反馈信息,也及时调整了文档编写规范。在设计开发过程中,对某个问题进行修改,或者功能增删,要充分考虑到问题所涉及的不同文档,保证前后文档在该问题的一致性。对于所修改的部分,要填写更改单,写明更改人,更改理由,更改所影响的程序和文档,更改日期,批准人。采用case工具在这方面起到了事半功倍的作用。2.2使用case工具管理软件版本在软件的设计编码过程中,尤其在调试阶段,会不断的生成新的程序版本。为了有效的管理版本问题,采用ration公司的clearcase工具[5],由专人负责进行管理,从而保证软件版本的一致性。3结束语在整个系统的开发过程中,采用不同的设计和措施对系统的可维护性影响是很大的。由于在系统设计上重视可维护性,软件进行模块化设计,提供了完备的软件文档,维护人员可以较快的定位与解决问题;回归测试集的提供使维护人员可以运行回归测试验证软件质量;监控子系统的扩展性设计使得维护人员可以及时增加新的协议包解析功能;这些设计在很大程度上提高了系统的可维护性。然而,由于初次在软件开发过程中进行可维护性设计,因此,还有许多需要改进的地方,软件可维护性设计领域还有很多知识点需要研究,在后续的开发过程中将对此继续学习和实践,开发具有高可维护性的软件系统。参考文献:[1]soumyasch,file:dotnet.svg,:dotnet.svg.2009.3.28.[2]jamesmartin、carmamcclure,软件维护-问题解答[m].北京:机械工业出版社,1990:34-36.作者简介:杨薇(1975-),女,硕士,高级工程师,91550部队,研究方向:指挥自动化;吴小欣(1976-),女,本科,高级工程师,91550部队,研究方向:指挥控制;袁野(1982-),女,硕士,工程师,91550部队,研究方向:指挥自动化。
信息发布:广州名易软件有限公司 http://www.myidp.net
|