UML软件工程组织

面向对象框架技术及应用
作者:韩秀蓉、李立峰  选自:赛迪网

  面向对象框架技术是软件重用的一种重要方式。本文以面向对象开发方法为基础,结合防空C I通信网仿真系统,介绍了开发特定领域应用框架的方法。

  引言
  在现代软件工程中,软件重用已经成为其中一个主要目标。代码重用通过面向对象语言的继承机制和编译技术已成为现实。随着面向对象技术的日趋成熟,像这样低层次的复用已经不适合于特定领域大型软件生产的需求。为了提高软件生产过程的重用力度,软件领域的先驱者们开始进行一种新的尝试来提高软件生产力,他们不仅要重用旧的代码,而且要重用相似的分析设计结果和体系结构,来减少构造新软件系统的代价并提高软件的可靠性。基于框架的方式就是这样一种面向特定领域的重用技术。

  框架由于提供了大力度的重用而被认为是一种最有前途的面向对象技术。单独的类的重用,尽管有用,但由于重用力度小而不具备有意义的生产力的飞跃,只有把特定领域的体系结构作为一个整体进行重用才能取得引人注目的成就。

  在仿真领域中,面向对象使得映射问题域到方案域变得很容易。方法和数据可以绑定到面向对象风格的程序中。仿真领域中的一个具体的实体都可以作为一个主动或被动对象,因此采用面向对象技术来解决仿真问题是明智的。本文将结合建立C3I通讯子网仿真来讨论建立面向对象框架的方法和步骤。
  ■面向对象框架
  1.什么是面向对象框架

  一个面向对象框架是指在特定领域中的应用软件的半成品。框架是对于那些试图在他们所关心的领域构造一个复杂软件系统的用户而言的。因为它是处于特定领域中,所以应用系统的体系结构在许多不同的方面具有一定的相似性。框架利用一系列的对象和它们之间的接口来对应静态和恒定结构的端口,并保留友好界面使用户能够很容易完成变化的、不稳定的剩余部分而得到一个新应用程序。任何框架都是特定领域的框架,一个框架可以包含一个或多个模式。

  一般来说,如图1所示,框架定义了一个应用程序的骨架并提供可以放置于该骨架中的标准用户界面实现。作为一个程序员,你的工作只是在骨架中填入你的应用程序中特定的部分。目前有关面向对象框架尚未形成一个严格而精确的定义,国外著名的软件设计大师Ralph Johnson 教授对面向对象技术进行了长期而深入的研究,在他写的许多关于面向对象的论文中对框架进行了如下定义:


  图1 特定领域的框架

  框架是一种软件重用技术,它是一个应用软件系统的部分或整体的可重用设计。框架的具体表现为一组抽象类以及其实例(对象)之间的相互作用方式。它是对于一个软件系统的全部或部分的可复用设计。如一个用户界面框架只提供系统对用户界面的设计,而MacAPP的“Macintosh应用框架”提供了整个应用系统的设计。由定义可知,一个框架是一种面向对象的设计,尽管通常我们看到的框架都是由某种面向对象语言实现的,但从理论上讲它可以不提供面向对象语言的实现。面向对象类库大力度的复用需要框架,框架提供了类库中被复用组件的上下文关系。

  在一个专用领域内构造框架时,把握框架的共同点是关键因素。框架一旦被建立,其适应性和可扩展性就被提到了首要地位。框架的直接目的是被复用,以减少建立一个新应用系统的工作量。只有当理解一个框架的代价少于建立一个新系统的代价时,框架的复用才成为可能。构造框架是一个逐渐积累的过程,就是说不断有新发现的共同点和新的构件被加入,同时那些老的、不必要的部件被删除,以此来保证整个应用系统的性能,这样新旧构件之间的接口直接影响框架的适应性和可扩展性。任何框架都不能被直接复用,除非要建立的应用系统非常简单或者与框架极为相似,除此之外,都要对框架进行或多或少的修改和扩展才能被复用。

  2.框架和类库的不同

  我们首先要给类库一个明确的定义,对类库的广义描述为:类库以库文件的形式存在,库文件中包含了事先定义好的类。从广义的角度看,面向对象框架的存在形式可以看作一个类库,它是建立在对多态性和动态绑定的系统化的广泛使用基础之上,这些说起来很简单,但现在已建立的开发方法很少有支持对框架设计的。不过一些新的方法原理,例如模式和抽取,表现了对面向对象方法有意义的支持。但在传统意义上,框架是不同于类库的,框架包含更多的内容。框架是对协作完成一系列相关责任的类集合的抽象设计。框架和类库的一些主要区别与联系如下:

  ①在类库中是由用户实例化抽象类,类库构件被单独使用;而在框架中要有抽象类的一些具体子类,应用软件开发者通过修改现存的类或定义新的子类以扩展现存的类来使用框架。

  ②在类库中是用户在需要的时候调用函数,不预定义控制流;而框架使用了与用户之间的反向控制流,使用框架时,通常只是实现一些回调函数或者使一些类适用于上下文,然后调用一个单一的方法或过程,框架将完成其余的工作,在适当的时候和地点调用必要的函数或方法。这就是框架的Hollywood法则(“Don't call us, we'll call you”)。

  ③使用类库只需要了解类的外部接口,但必须要定义应用软件的整体结构;而框架的使用者要了解框架的抽象设计和类的内部结构来进行修改和扩展,因此学习框架要比类库更加困难,同时有被错误使用的危险,但框架被复用的潜力大大超过了类库。

  ④在类库中没有定义缺省行为,而在框架中提供缺省行为。

  ■框架技术应用示例
  下面,笔者将结合建立C3I通讯子网仿真来讨论建立面向对象框架的方法和步骤
  1.防空C3I通信网仿真系统
  C3I系统由指挥、控制、通信和情报四个方面的技术系统组成,是一个庞大复杂的系统。防空C 3 I通信网仿真作为C 3 I系统仿真的一部分,其主要功能是通过共享传输设备进行信息传输,所含部件包括工作站、路由器和通信链路等等,所传送报文分为三种类型,由处于不同位置的用户或用户群随机产生,要求系统根据报文的不同属性、优先级和长度进行适当处理。由于防空C 3 I通信网仿真系统涉及分布式理论及时间同步原理,作为简单示例,在此我们只讨论单机环境下的军师级防空作战指挥系统的面向对象仿真框架。
  防空C3I通信网包括军指挥中心(见图2)和若干(如3个)师属防空指挥系统(见图3)。该中心由军防空情报方舱、军防空指挥方舱和军防空通信方舱组成,每舱中若干终端连成LAN,方舱间由无线LAN互连,军情报方舱通过电台与情报采集融合网络连接。军通信方舱通过电台与军直属防空群相连,地域网接口与各个师防空指挥部交换信息。类似于军防空指挥中心,各师由二个方舱,即师防空指挥方舱和师防空通信方舱通过LAN将若干终端连成网,组成师指挥通信系统。类似的,我们可以再向下拓展至团、连、营等。由此我们可分析得知,军防空指挥中心和师防空指挥系统在结构上具有一定的相似性,它们有相同类型的方舱,有相似的内部结构。

  图2 军防空指挥中心示意图

  2. 防空C3I通信网仿真框架
  框架应该是在对现存应用领域内的软件系统作了深入了解分析后才得到的。经过对军级防空作战指挥系统进行分析研究,我们认为此系统主要包括如下结构成分(组件):局域网、工作站、路由器、报文及报文队列,而这些成分在师级的系统中也是必要的。

  为了建造防空C3I通信网仿真系统框架,我们在对其军级作战指挥系统进行分析后得出五个基本类,其对象关系如图4所示。
  基于软件框架的软件开发过程,把软件的开发看作一个组装过程,在软件框架的指导下寻找可复用构件(及开发一些新构件)并进行系统组装,这种开发过程是目前很受重视的研究方向。
  ①局域网类HLan

  局域网类HLan是构成系统的主要成分,同时也是独立运行和独立仿真的基本单位,它可以包含三个子类:军防空情报方舱、军防空指挥方舱和军防空通信方舱。局域网由工作站和路由器通过总线连接而成,其中工作站可以有多个,但不能少于一个,路由器有且只能有一个。局域网对总线采用多址接入方式进行访问。


  图3 师防空指挥中心示意图

  ②工作站类HStation

  工作站类HStation主要完成对报文的产生、存储、处理、转发和接收。 工作站利用接收队列存放自己产生的以及来自其他队列的报文,利用发送队列存放自己需要发送到其他工作站的报文。工作站可以根据报文的类型分为多种类型,如普通终端、指挥报文计算终端、地域网出口及存储转发站等等。通常工作站的属性信息是来描述工作站具体类型和所具有的特殊功能。

  ③路由器类HNetBridge

  路由器类HNetBridge作为局域网和外界的通信接口,其主要功能是完成局域网和外界之间的报文交换。路由器分别用接收队列和发送队列来保存报文。

  我们可以以军防空指挥中心仿真系统为基础,抽象出其框架,再复用到师防空指挥系统中,这样就减少了开发整个防空C 3I通信网的代价,也为以后对系统的扩展提供了条件。
  ④报文类HMsg

  报文类HMsg是此系统中的动态实体,也是系统内各部件之间进行联络的惟一表现形式。根据要求系统内的报文分为三种形式:指挥报文、战况报文和业务报文。指挥报文的优先级较高,是由特定源工作站每隔固定时间间隔产生一次,按特定路由传递、处理,最终到达特定目标工作站。战况报文按泊松分布产生,其产生期望值作为工作站参数,优先级较低。业务报文由所有工作站产生,其产生规则及优先权约定与战况报文相同。


  图4 仿真框架对象关系图

  ⑤报文队列类HMsgQue

  报文队列类HMsgQue用于存储报文,分为接收队列和发送队列两类。

  当然在对该仿真系统进行详细的面向对象框架设计时,只有这五个基本类是远远不够的,但由于篇幅的限制,在此我们只给出这五个基本类的说明。

  由军级防空指挥中心抽象出的仿真框架,复用到师级防空指挥系统中,控制线程为MEC中的GUI应用框架,将各子框架进行组合就可以得到整个军师级防空C3I通信网仿真系统。
  ■结束语
  采用基于面向对象框架的方法开发应用软件,其意义在于可以以框架为重用部件的基本构造单元来实现软件工业化生产,有效地降低软件开发的成本,提高生产效率和软件可靠性,尤其对特定领域复杂系统的高可靠性专用软件更具有实用价值,为这些特定领域的软件开发提供了一种强有力的技术。

 


版权所有:UML软件工程组织