扫描二维码

订阅畅享网微信

软件开发的流程改进——软件复用技术(茹海燕)

  作者:茹海燕
2003/6/30 14:16:59
本文关键字: 理论探讨

摘要:本文继《软件构造艺术》一文,介绍软件复用的概念和价值,并以EMS系统为例,详细介绍了以太网交换机设备管理系统中的软件复用的实现,分析其在成本、进度、质量上的效益。

软件开发的流程改进——软件复用技术

茹海燕

关键字:

EMS:ElementManagementSystem 网元管理系统
ES:EthernetSwitcher以太网交换机
RFC:Request for Comments需求描述
RMON:RemoteMonitoring远程监控
SNMP:SimpleNetworkManagementProtocol简单网络管理协议

石宏峰先生在《软件构造艺术》一文中,阐述的软件企业应该由“开发软件”走向“构造软件”,正是目前越来越受到软件业界青睐的软件复用技术。

软件复用是一种由预先构建好的、为复用目的而设计的软件结构来建立或者组装软件系统的过程。软件复用分为生产者复用和应用者复用,前者是复用构件的创造者,后者是复用构件的使用者。它能够为复用者带来以下好处:

1. 提高生产效率,缩短软件开发周期,降低人力资源需求,从而降低软件成本;

2. 加速和增加技术、方法、工具在不同项目的转移,提高组织的知识管理水平;

3. 提高项目的质量和稳定性,提供更高的竞争优势。

因此,软件复用在软件公司中得到越来越多的重视,系统开发人员也不断研究怎样将软件复用更多地应用到自己的项目中来,以下以EMS(网元管理系统)为例,介绍一下我们应用软件复用技术,改进软件开发流程的经验。

EMS系统一般是电信设备生产商提供的网元层管理软件,用于管理本企业生产的设备。EMS的生命周期一般与设备相同,老设备版本的升级需要EMS不断完善,新设备的推出又需要EMS及时发布;同时为了便于运营商的综合网络管理,EMS需要提供与NMS和OSS的接口,技术、质量、进度需求不断增加。

随着中国加入WTO,促进了国内宽带网络的发展,也带来了电信设备市场的更加激烈的竞争,提高质量、降低成本、保持技术领先性,以及网络综合管理水平亟待提高,这些因素对企业的压力越来越大,实施复用技术来改善EMS正符合企业的这些目标。而且一个企业的设备软件一般具备系统平台的统一性、系统架构的兼容性、开发技术的连续性,为复用提供了很多机会。

以常见的接入设备以太网交换机为例,它的EMS多是采用SNMP协议与设备进行通讯。多数以太网交换机设备厂家的设备管理,基本上都遵循一些公开的RFC,如RFC1213的系统组和接口组,RFC1493的桥组,RFC1757的RMON中采集组和告警组等等。这些共同点提供了很好的复用机会。

面向对象的设计对于实现复用提供了方便,如拓扑模块的数据建模如图1所示,其中SnmpNe是所有通过SNMP协议管理的设备的拓扑对象基类,EsNe是所有以太网交换机设备的拓扑对象基类;EsTypeiNe是具体一种型号的ES设备的拓扑对象类定义。

图1 ES网管拓扑数据结构建模

依据这样的继承关系,所有基本的SNMP属性和方法可以在SnmpNe中实现,如Snmp的读写团体名属性和相关方法,系统组标量的属性和相关方法;设备上报的冷启动、热启动和认证失败等TRAP的处理。对于基本上所有的ES设备都会实现的接口组,RMON采集组和告警组,桥接组都放在EsNe类中定义;而其他各个型号设备的独特管理内容,则可以放在EsTypeiNe中实现。

以支持面向对象的语言JAVA为例,可以按照如下方法定义拓扑类:

package com.ems.topo;
public class SnmpNe
{
private String sysOID = “”;
public String getSysOID() {return this.sysOID;}
public void setSysOID(String s) {this.sysyOID = s;}
……
}

package com.ems.es.topo;
import com.ems.topo.*;
public class EsNe extends SnmpNe
{
private int ifNumber = “”;
public int getIfNumber () {return this.ifNumber;}
public void setIfNumber (int i) {this.ifNumber = i;}
……
}

package com.ems.es.estype1topo;
import com.ems.topo.*;
import com.ems.es.topo.*;
public class EsType1Ne extends EsNe
{
private int switchNumber = “”;
public int getSwitchNumber () {return this.switchNumber;}
public void setSwitchNumber (int i) {this.switchNumber = i;}
……
}

注意其包结构的设计也体现了继承的关系。

告警模块也同样区分处理,如表1所示。

表1 告警模块的处理设计

告警类型

使用对象

类所在包的定义

ColdStart/ WarmStart

com.ems.topo.SnmpNe

com.ems.fault

LinkUp/LinkDown

com.ems.es.topo.EsNe

com.ems.es.fault

AuthencationFailure

com.ems.topo.SnmpNe

com.ems.fault

RisingEvent/FallingEvent

com.ems.es.topo.EsNe

com.ems.es.fault

其他

com.ems.es.estypei.topo.EsTypei

com.ems.es.estypei.fault

冷启动、热启动与认证失败,与SNMP设备相关,所以他们的处理类可以放置在com.ems.fault包中,需要的参数是com.ems.topo包中的SnmpNe类。LinkUp/LinkDown与RisingEvent/FallingEvent虽然其他设备,如BAS也会实现,但是具体处理的方式不同,所以放置在es的包中,传递的参数也是ES设备对象的基类EsNe。依此类推,仅与具体设备相关的告警,就放置在具体设备对应的包com.ems.es.estypei.fault中。

同样,配置模块和性能模块的设计如表2所示。

模块名称

功能

使用对象

类所在包的定义

配置模块

系统组配置

com.ems.topo.SnmpNe

com.ems.config

配置模块

RMON告警配置

com.ems.topo.SnmpNe

com.ems.config

性能模块

接口组、RMON数据采集

com.ems.es.topo.EsNe

com.ems.es.perf

不过对于配置来说,不同设备的少量参数有差异,如对于系统名称的定义,有些设备限制了字符串中特殊符号的使用;RMON中阈值的设置虽然在MIB中都是integer,但是实际上也有部分设备的限制不同。这样的情况下,数据校验具有设备敏感性,需要利用面向对象语言中类的继承和重载。父类定义的是常用的数据校验方法,而子类的要求如果不同,可以重载同一个方法,而对外接口需要的参数仍然定义为父类拓扑对象即可。

这种方式在性能模块中同样适用,大多数设备支持ifTable,ifXTable,etherStatsTable,dot3StatsTable, 也有设备支持其中的部分数据。于是在性能采集的父类中提供设置选择数据表的接口,让子类来决定这种设备支持哪些数据,同样父类对外提供的接口定义为父类拓扑对象即可。
这些设计工作为今后的复用提供了便利,可以称为“生产者复用”。

对于新增类型的ES设备而增加的EMS模块,为了应用上述的复用构件,仅需分析它的特殊管理之处,选择复用构件,并针对相应的接口做少量的适配即可。复用还有一个好处:如果需要更新设计或者修改故障,仅需修改一处代码,不需要多处拷贝,从而减少出错机会,减少工作量,提高软件质量和稳定性。这就是“应用者复用”。

经过多个ES设备的EMS网管研发周期,这种软件复用的有效性得到多方面的认可,表3的数据显示了在减少人力和时间成本,以及保证研发进度和质量方面的效果。

表3 ES的EMS研发数据统计

交换机型号

研发周期

研发人员

总人力成本

难度

测试次数

1

4.5

8

36人月

第一次做,有技术风险

3

2

2

5

10人月

无技术风险

2

3

2.5

4

10人月

有技术风险

2.5

4

2

3

6人月

有技术风险

2

5

2

2

4人月

有技术风险

2

6

2

1.5

3人月

无技术风险

2

表3的数据也显示,前期的设计和开发复用组件的工作对于软件复用的效率很重要。发现正确的复用机会,优良的复用设计,将成功的复用引入软件系统。

软件复用在EMS中的实现,仅仅是小试牛刀,越是大型系统,软件复用越能够为企业带来更多的效益。

本文由作者向AMT提供
作者联系方式:
ru.haiyan@mail.zte.com.cn

责编:茹海燕
vsharing微信扫一扫实时了解行业动态
portalart微信扫一扫分享本文给好友

著作权声明:畅享网文章著作权分属畅享网、网友和合作伙伴,部分非原创文章作者信息可能有所缺失,如需补充或修改请与我们联系,工作人员会在1个工作日内配合处理。
相关文章
    畅享
    首页
    返回
    顶部
    ×
      信息化规划
      IT总包
      供应商选型
      IT监理
      开发维护外包
      评估维权
    客服电话
    400-698-9918