软件开发技术(鲁维 周长浩)
摘 要 网管软件开发必须采用多人团队协作的方法,充分应用面向对象的设计和编程技
术,以开发具有可扩充性、可伸展性和分布式特点的系统为目标。文章介绍国信朗讯科
技网络技术有限公司在网管软件开发中采用的技术和取得的经验。
关键词 电信网络管理 软件架构 面向对象设计 面向对象编程
随着互联网用户逐渐增加、承载业务逐步扩大,可扩充性、可伸展性和分布式已成
为网管系统的设计要求。
可扩展性,即要求在已有系统上能够根据客户要求,快速增加新管理功能。在设计
软件架构时,应充分考虑可扩展性,在中心服务器上的服务器端,软件通常包括应用服
务器、数据库服务器和接口服务器,应用服务器的设计包含会活服务器(负责客户端用
户登录)、事件服务器(负责消息、事件分发,保证客户端和各个服务器的信息同步更
新)、配置服务器(负责配置数据存取)和故障服务器(负责实时告警信息的收集)。
这些服务模块均被设计成可分布式,即可以将某几个服务模块放在不同的机器上,分布
于网络中。这样的软件架构可以很方便地增加服务模块,同样可以方便地调整负荷分布
。可伸展性则要求系统可在不同价格、不同运算能力的硬件和网络上运行。Java语言的
平台无关特性能够保证系统选择合适的操作系统,从而设计不同的硬件方案。
1 面向对象设计
由于电信网络系统日益庞杂,所管理的实体类数量和类型越来越多、关联和操作越
来越复杂,且经常变化,因此面向对象的设计方法被证明是有效的解决方法。面向对象
方法具有继承、封装和多态等特点,在软件的设计和编程阶段均能有效降低系统复杂度
。在一个多人团队内,分工协作,进行开发。数据库工程师在较早阶段负责对象模型设
计,描述所有管理实体的属性、操作及其相互间关联关系;应用服务器工程师、接口服
务器工程师和客户端软件工程师则在软件架构和对象模型设计的基础上,应用面向对象
设计原则、方法和工具,作模块详细设计。当进人编码阶段后,仍可回归修改详细设计
,使设计和编码迭代螺旋前进,逐步求精。详细设计文档包含类图、序列图等各类静态
和动态描述,它不仅可以指导整个编码阶段,使逐步深入的编码不至于陷入混沌,而且
在维护和交接时都起到重要作用。通过一些面向对象工具,还可以实现设计与代码之间
的自动转换。
2 应用框架(framework)和模式(pattern)完善设计方法
pattern在设计阶段十分重要,许多有意思的pattern被研究,乃至应用在网管系统
中,如Proxy、factory和command等。pattern的应用有助于加强动态设计,对某些
pattern的研究,最终对应用的稳定性、可维护性都起到重要作用。framewo为各类常用
的架构设计了一层较薄的基础,如各类不同类型厂商EMS的接口软件,包含主要线程以
及Socket通讯等,使相关数据协议转换到一个稳定的框架上开发,把线程和Socket通讯
等与性能、稳定性密切相关的那部分作为核心独立,可使将来的移植工作降低难度(通
常接口层使用C++实现)。
3 面向对象编程
Java语言因其平台无关特性受到网管软件商的重视。受运营商、应用和软硬件平台
供应商的影响,大中型项目可能采用不同平台(如HP-UX、Sun Solaris和Microsoft
Windows NT等),Java语言则能使软件开发商的投资得到保护,从而提高软件的质量。
对于客户来说,意味着能够获得更稳定的软件。Java语言通常被应用于客户端、JDBC数
据库访问和应用服务器软件等。
Java语言不仅保护投资,而且面向对象技术能在Java语言上得到充分实现。Java十
分干净,接口定义、类定义以及许多相关面向对象的特性十分理想。Sun以及其它各类
软件公司在编译、软件包等各方面不断投入,使Java应用得到有效保护。Java语言的“
垃圾收集”功能使对象的释放得到保证,系统不易引起内存泄漏。当然,除了对象的释
放,其它软件资源(如句柄的释放)还需软件工程师在编码和代码重审时保证释放,否
则仍然会引起内存泄漏。
性能是Java语言的一个重要问题,由于硬件平台的性能提高,软件的稳定性、可靠
性、可移植性比平台价格更重要。因此,在网管软件中尽量采用Java语言是被认可的方
案。同时,一些Java编译工具可以将Java Byte Code编译成机器内码,提高运行速度;
通常系统的性能瓶颈在大量复杂的数据库出现,Java的性能消耗不是系统最大的性能问
题。
4 对象数据库技术
面向对象的数据库中间件填补了对象模型与关系型数据库之间的鸿沟,是网管软件
在面向对象设计和实现的重要内容,可使整个系统在模型和功能的设计上都采用面向对
象思维。目前对象数据库中间件已有不少成熟的应用,优点是:(1)免除了Java类与
关系型数据库表程序映射的编码,这些映射往往是机械的,而且工作量很大,人力投入
不菲;(2)数据库模型在开发深入过程中,因需求变化和查询性能的要求,需要不断
调整冗余字段和关联关系等,基于Java的对象数据库中间件可以通过类与表、属性与字
段之间的映射,用极少的人力便可提供对象模型支持(包括持续的数据库调整需要)。
5 C++
由于底层通信的性能和电信协议的要求,如Q3协议以及Q3开发工具和平台通常都是
C++,C++被应用在底层接口,与电信设备或其子网管理软件通信和进行控制。
6 代码重用
代码重用是软件开发的重要内容,同样涉及多人、跨项目。可以通过建立重用库的
方法支持,但更重要的是在设计,甚至需求分析阶段就要强调设计重用和需求重用,才
能保证有效的代码重用。代码重用的优点是,基础库的支持越来越厚,软件开发人员将
更多的注意力集中到新的功能开发中,保证了新开发代码的质量,从而提高软件生产质
量。更重要的是,可充分研究新的网管,不断满足运营商的新需求,为运营商提高新业
务开通能力、资源管理能力和网络监控能力提供强有力的支持。
7 测试
完整的单元测试、整合测试、接口测试和数据测试是系统开发的重要组成部分,每
项测试工作均需要完成测试计划、测试用例和修改请求的控制等。软件开发阶段的测试
可以保证独立的测试部门在系统测试、回归测试、性能测试和现场测试时提高效率。软
件开发部门的测试是由了解软件架构和软件代码的工程师完成,许多接口测试、边界测
试和强度测试都是为了编历路径,达到白盒测试能力,可以保证许多黑盒测试难以发现
的问题得以解决,并且白盒测试也是在受控中进行的。
网管软件将随着软件技术的不断发展而进步,国信朗讯采用先进的软件技术,力求
为客户提供最优秀的网管软件。
摘自《电信快报》
|