信息化应用 营销管理 企业管理 业界消息 站内搜索 标签
首页 » 文档中心 » » 软件开发的流程改进—软件复用技术

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

2003-12-10

摘要:本文继《软件构造艺术》一文,介绍软件复用的概念和价值,并以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中的实现,仅仅是小试牛刀,越是大型系统,软件复用越能够为企业带来更多的效益。

相关链接
系统需求分析方法-JRP法_1 2003-11-04 如何在存储管理中最大限度发挥ROI?2003-09-28
网络安全警句2003-09-21 系统需求分析方法-JRP法_2 2004-03-05
行业分析: 国内信息服务业的现状、前...2003-09-03 企业信息化生命周期2004-04-06
企业信息化四步曲2003-07-19 未来信息社会解构2003-07-07
行业物流_4 钢铁物流-将物流进行到底2003-06-10 选择企业管理信息化软件五要诀2003-06-03
信息化软件应用目录
OA 办公自动化系统 CRM 客户关系管理系统 PM 项目管理系统 SCM 供应链管理系统 CC 协同商务系统 BPM 业务流程管理 BI 商务智能 CMS 内容管理系统 KM/KBS 知识管理系统 电子商务系统 HRM 人力资源管理系统 ERP 企业资源计划 EAM 企业资产管理系统
升蓝首页 | 文档首页 | 产品首页 | 服务首页 | English Version | Big5 Version | 联系我们
Copyright © 1999-2008 深圳市升蓝软件开发有限公司  URL: http://www.hi-blue.com