1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 系统架构师论文-论软件的可维护性设计

系统架构师论文-论软件的可维护性设计

时间:2021-05-16 18:59:11

相关推荐

系统架构师论文-论软件的可维护性设计

论软件的可维护性设计

[摘要]

3月1日至12月20日,我参加了“数据安全访问平台”项目的开发,担任系统分析员的工作。该项目是某行业用户“数据中心二期”建设的主要内容,目标是:建立数据统一访问接口及其使用标准,规范、约束和审计数据应用访问数据库的行为,对数据应用提供强制审计的技术手段。

由于系统交付后,存在较长维护期,同时系统存在升级与扩展的情况,因此本项目对系统的可维护性设计要求较高。本文结合作者实践,讨论了从软件设计上提高可维护性的方法和措施:通过模块化设计方法和提高设计文档质重,改善软件的可理解性;通过提供测试接口和采用测试框架工具,改善软件的可测试性;通过动态库加载和针对接口编程的方法,提高软件的可扩展性。最后分析了采用方法的效果。

[正文]

—、项目概述

3月1日至12月20日,我参加了 “数据安全访问平台”项目的开发,担任系统分析员的工作。“数据安全访问平台”是某行业用户“数据中心二期”建设的主要内容。在一期建设中已建成数据的统一存储和统一分发框架。但主要存在以下问题:无法获得应用用户对数据库的操作日志;开发人员对数据库的使用不规范,查询的结果集过大,导致数据库的性能大幅下降;应用直接使用数据库的登录数据库,存在着一定的安全隐患。“数据安全访问平台”的目标是:建立数据统一访问接口及其使用标准,规范、约束和审计数据应用访问数据库的行为,对数据应用提供强制审计的技术手段。

该项目具有较高的业务需求风险和技术风险。由于没有成熟系统做为参照,该项目需求不是很明确,而且系统涉及甲方多个利益相关方,各方对系统的安全和审计功能、运行维护、可靠性、性能和易用性有者不同的观点,某些观点之间还存在冲突。同时系统作为“数据中心”的基础设施之一,所有的应用系统都要通过本系统完成数据库访问。系统的可靠性和性能直接影响到应用系统的正常运行。整个系统分为6个子系统,包括JDBC驱动封装子系统、ADO. Net驱动封装子系统、WebService接口子系统、管理配置网站、存储子系统(SQLServer 数据库,存储配置信息)和监控子系统(数据库网络协议分析与连接控制)。

二、项目中的可维护性设计工作
1、系统的可维护性需求

本系统有较高的可维护性需求。首先,系统作为数据中心应用的基础平台,数据中心的新建应用系统必须依赖于本系统,系统具有较长生命周期;同时合同中规定系统正式上线后,公司需要提供1年的免费维护。其次,本项目中的接口子系统是基于JDBC5.0和2.0实现的,随着JDBC与ADO. Net的升级,接口子系统也需要升级.然后,监控子系统对Oracle和SQL Server数据库的网络包进行解析,由于商用数据库网络包格式不公开,我们在解析时会有遗漏;用户要求,当发现未能解析的数据包时,需要及时添加到监控子系统中。最后,由于没有成熟系统做为参照,该项目开始时需求不是很明确,在开发过程中用户提出了一些新需求,由于工期的限制,经过与用户协商,这些新需求不在本项目中完成;用户准备视系统的运行情况,设立新的项目完成这些剩余需求。因此可维护性是本系统的一个重要质量指标。

为了増加系统的可维护性,减少维护人员理解和修改系统的难度,我们在本系统的设计上,不仅仅关注系统的功能需求实现,而且重视系统的可维护性需求。决定软件可维护性的因素主要包括:软件的可理解性、可测试性和可修改性。在整个系统设计过程中,我们都注重改善系统的可理解性、可测试性和可修改。2、改善软件的可理解性

本系统涉及的问题域有一定的复杂性,如果将整个问题域的复杂性完全暴露给维护人员,维护人员很难理解整个系统。因此,首先,我们将整个系统划分为功能独立的六个子系统;其次,在各个子系统设计时,我们都采用了模块化的方法,即将内聚性高的业务逻辑合并封装成独立的模块;最后,重视设计文档质重,对设计文档做了内部审核,确保文档清晰准确了描述了设计。

监控子系统是本系统的关键部分之一。公司原有Oracle数据库监控子系统,本项目中需要在原有监控系统中増加SQLServer的监控功能。监控子系统的流程是网络协议包的截获、数据库协议解析、监控审计处理模块。由于原监控子系统只是处理Oracle,其关注功能的实现,三个模块划分的不清晰。例如,使用了过多全局变重在模块间传谖数据;功能分布不合理,导致模块之间相互依赖;一个源代码文件包含两个相关功能代码。本项目中,除了添加SQLServer的监控功能外,我们还改善了子系统的设计,増强各个模块的内聚性,降低模块之间的耦合性。首先,各个功能的相关代码处于不同的代码目录;其次,三个模块都做成了单独的静态库,总控模块负责调度各个库,并且明确了各个模块対外提供的接口,模块之间的调用都通过接口完成。

通过这种方式将系统进行清浙的划分,维护人员可通过对模块接口的学习快速了解子系统的运行流程,当需要时再对某模块做进一歩分析。3、改善软件的可测试性

维护人员对代码进行修改后,必须进行测试,才能保证软件的质重。并且,用户对系统的可靠性要求很高。因此,在软件设计的整个过程中,我们都考虑了测试的问题。首先,各个子系统的内部模块必须是单向依赖,对出现循环依赖的模块,我们采用调整功能分布,抽取公共模块等方面消除循环依赖。其次,对于接口子系统,我们需要对某些模块内部进行深入的测试,而由于模块接口的封装性,无法直接访问内部数据;对于这样的情况,我们在设计这样的模块时,专门提供了测试接口。最后,开发中采用了 CppUnit、NUnit和JUnit测试框架,通过测试框架来组织测试驱动程序。4、改善软件的可扩展性

监控子系统采用网络监听的方式获取数据库访问的信息,这种方案的优点是不给业务系统増加性能负担,缺点是由于商用数据库协议不公开的,虽然我们经过大量的测试,但是肯定是有遗漏的。

为了当发现未能解析的数据包时,及时添加到监控子系统,同时不重新编译系统,我们进行了可扩展性设计。我们采用了动态库加载和针对接口编程的方法。监控子系统启动后,会加载指定目录下的动态库(符合名字规范),这些动态库都实现了规定的接口。子系统当收到一个网络包后,会依次询问所有的动态库是否能解析该网络包。这样只需要将新开发的动态库拷贝到制定目录,并重启动监控子系统就可以完成系统的升级。

三、总结

在系统的维护阶段,发现了较严重缺陷2个与8个一般缺陷,同时,发现了监控子系统不能解析的5种协议包。维护阶段的开发人员与开发阶段有了较大变化。由于在系统设计上重视可维护性,软件进行模块化设计,提供了完备的设计文档,维护人员可以较快的定位与解决问题;由于考虑了系统的可测试性,提供了回归测试集,维护人员可以运行回归测试验证软件质重;由于考虑监控子系统的扩展性,维护人员可以及时増加了新的协议包解析功能。综上所述,由于在设计中考虑了软件的可理解性、可测试性与可扩展性,很大程度上提高了系统的可维护性。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。