基于MSC的构件及组装模式形式化描述研究

2013-06-08  by:广州有限元分析、培训中心-1CAE.COM  来源:仿真在线

在基于构件的软件开发方法基础上,本文提出使用组装模式的方法进行构件的组装,并应用扩展的MSC对构件及构件组装模式进行描迷。最后介绍用Java语言实现一种构件及组装模式描述工具。

作者: 杨成伟*李长英*曹宝香 来源: 万方数据
关键字: 构件 MSC 构件组装

0引言
   
近年来人们从传统工业和计算机硬件的飞速发展的成功模式中获得启发,逐渐认识到要真正解决软件危机,实现软件的工业化生产是唯一可行的途径。它们的成功均是采用了标准化的构件(Component )生产以及基于标准构件的产品生产模式。这种构件复用的思想应用到软件开发中,被称为软件重用(Software Reuse)。
   
软件重用是指在两次或多次不同的软件开发过程中重复使用相同或相近软件元素的过程。软件元素包括程序代码、测试用例、设计文档、设计过程、需求分析文档甚至领域知识。或将这些可重用元素称为软构件(Software Component ),或简称为构件。由于软构件大都经过了质量认证,并且经过实际运行环境的检验,所以使用软构件元素开发的软件具有良好的软件质量。由于大量软构件的存在以及能够方便快捷地通过查询得到所需的构件,所以软件开发的速度大大提升,开发成本得到了有效控制。开发人员在获得所需构件后,所要做的工作只是根据需求分析和设计阶段得到的软件架构模式(也可认为是一种软构件),将构件按需要组装在一起.并在必要时添加少量胶合代码(Glue Code)使各个构件联合在一起工作。同时组装后的构件又可以作为一个粒度更大的软构件被保存或者重用。于是产生了基于构件的软件开发方法CBSD ( Component Based Software Devel-opment )。
   
不难看出在CBSD中,构件是基础.重用是手段,组装是核心。目前软件构件的获取相对比较容易。一方面目前Internet上存在大量免费的可重用构件,另外还可以通过购买中间件开发商的构件库得到构件。也正是由于这种获取的方便性以及目前构件标准的不完整性,给构件组装方法的研究以及组装工具(环境)的开发带来了困难。
   
我们在对该问题进行分析后认为,为了有效解决该组装难题,关键是要从更高的层次对构件进行描述。必须选择一种通用的、直观的、准确的描述语言,该语言描述应该类似自然语言(易于理解),有较严格的形式化语法(不能出现二义性),还要有丰富的语意。因此选择消息序列图MSC ( Message Sequence Chat)作为载体。从名字看,MSC是一种图描述语言,实际上它具有文本描述(Textual Description)和图形描述(Graphical Description)两种形式。另外为T更好地完成构件组装,提出了组装模式(Composition Pattern)的概念,它可以被看作是一种用MSC描述的可复用的设计模式。它的描述方式与构件描述方式兼容,这是为了使构件的组装按照模式匹配的思想完成。这似乎限制了构件复用的任意性,但另一方面任意性带来了组装的不兼容性。因此牺牲部分任意性来换取组装兼容性是一种必要的手段。随着构件数目以及组装模式的增加,这种牺牲是可以忽略的。
   
    1基本MSC
   
    1 MSC优点

   
MSC是一种描述语言,它主要用于描述系统构件之间、系统构件与环境之间的行为交互事件。MSC不仅提供了一种直观、透明的方式,还提供了两种描述方式:图形描述和文本描述。其中图形描述提供了清晰易懂的图形元素作为系统中实例交互以及事件发生的描述手段。文本方式以一种类似自然语言的方式进行描述,与多数架构描述语言(SDL)描述形式类似,采用层次化描述方式,使系统结构的描述更加清晰。文本描述符主要有三类:关键词、终结符和非终结符。MSC已被作为国际电话电报联合会(International Telecommunication Union)的一种推荐使用标准。
   
基于MSC提供的这些特性使其可以用于需求描述、接口描述、仿真与检查、测试用例描述等多个方面。另外MSC也可以连接其它描述语言,如SQL等。MSC直观的图形表示方式以及丰富的语法表示形式使其具有对构件及构件组装(交互)描述的先天优势。具体表现在如下几个方面:
   
(1)MSC是一种图语言。因此可以通过二维图描述构件内部实例之间的行为交互。MSC文本描述主要目的是为了完成自动化形式分析与实现工具之间的转换。在构件组装环境中可以利用文本描述提供构件间胶合代码自动生成工作。
   
( 2 ) MSC支持结构化设计。一个简单的MSC描述利用高层消息序列图(HMSC)可以被组合成一个更复杂的系统描述。依靠这种分解和复用机制可以很容易地实现对遗留系统的构件提取和构件组装的再工程。
   
( 3 ) MSC支持工程的全过程。形式化的描述和直观的表示方式是它支持包括从领域分析到测试的整个工程领域。因此MSC可以很好地描述软构件元素,并且适合于整个CBSD开发生命周期。
   
( 4 ) MSC可以被用来关联其它描述语言如SDL和TTCN等。这使其具有灵活的可扩展性和兼容性。另外MSC可以等价地转换为有限(非有限)自动机模型DFA(NDFA)。可以利用自动机模型的多种性质(如有限自动机匹配、有限自动机合并等)实现构件与构件模式匹配的方法。
   
    1.2 MSC实例
   
一个MSC图由一些交互实例组成,实例之间通过方法调用或消息传递交互。实例头部主要由实例名(Instance Name )、实例类型( Instance)及分解(decomposition)组成。其具体语法为:
在MSC的实例描述中<instance head symbol>用白色矩形表示。< instance axis symbol>有两种表示形式单线和双线形式,两种表示没有区别,可选择其一。< instance end symbol>用黑色矩形表示。三种图形连接在一起表示一个实例的生存期。加粗部分为MSC保留关键词。A is followed by B表示B跟随A发生的关系。A is attached to B表示A依附于B,这种关系是可逆的,也就是说B也同时依附于A。大括号后加关键词set表示一个集合,集合中使用的*表示可以出现0次或多次,类似于通配符概念。
   

基于MSC的构件及组装模式形式化描述研究+有限元项目服务资料图图片1

1. 3 MSC消息
   
消息是MSC中另一个重要概念。在MSC中消息表示输人和输出之间的关系。输出可以来自于环境(通过门)、实例或者被found表示输出丢失或不能确定输人点)。输人来自于环境(通过门)、实例或者被lost(表示输人丢失或者不能确定输出点)。实例间消息的交换被分成两个部分:消息的输出和消息的输人。MSC文本描述使用关键词before和after表示消息事件发生的顺序。MSC图形描述中,事件使用带方向箭头的直线表示。
   

基于MSC的构件及组装模式形式化描述研究+有限元项目服务资料图图片2


在MSC中实际上<message out area>和<message in area>实际上是依附在实例线上的点(描述中的<void symbol>)。< message symbol>表示为一个带方向的直线。is associated with为MSC保留关键词,它扩展了一个文本字符串<msg identification>加人<message symbol>中。
   
    1.4 MSC事件次序
   
一个MSC中假设了一个全局时钟,规定两个规则:①不同实例MSC中假设输出消息(产生消息)必须先于输人消息(接收消息)产生;②沿着每个实例线事件从上到下依次发生。另外还规定消息图中事件表示具有偏序关系(传递性、反对称性、不可逆性)。消息次序示例如图1所示。
   
MSC中将一个消息的输人和输出分开表示,为了加以区分将输人消息表示成in(mi)形式,输出消息表示成out ( mi )形式。图1中根据规则①得到顺序为out( m2 )<in(m2),in(m3)<out(m3),out(m4)<in(m4);根据规则②得到顺序in ( ml ) < out ( m2 )<in(m3) <out(m4),in(m2)<out( m3)。

基于MSC的构件及组装模式形式化描述研究+有限元项目服务资料图图片3


    
    2构件及其组装模式
   
构件可以看做组成一个系统的独立的功能实体。它应该具有下面几点性质:
   
(1)具有独立(相对独立)的功能。通过封装一些方法为外界使用者提供服务,完成某种任务。构件与构件间应保持低祸合性。
    (2)具有封装性。在构件使用者眼中,构件是一个内部不可见的黑盒。使用者通过构件向外界公开的接口调用服务(方法)。
(3)具有清晰的接口。这些接口是使用者调用服务(方法)的唯一途径,必须是公开的。
(4)与实现方法无关性。理想情况下,构件内部实现应该与具体的编程语言无关。使用者只需要了解构件提供的服务接口,不需要了解内部实现方式。在调用中可以先对构件接口使用包装器进行包装,使接口调用与实现无关。目前各种主流编程语言(C++,Java)都提供类似包装方法。
   
根据构件特点,不难发现,要使构件复用效率提高,使用者必须对构件接口以及完成服务情况有相当的了解。对于一个从外界获取的构件,这种理解是困难和不准确的。使用者可能对构件理解发生偏差与不完整,造成构件复用失败。
   
MSC具有直观的图形表示和丰富的语意。所以提出使用MSC来描述构件和组装模式,以直观的图形化方式描述接口之间的交互。
   
    2.1构件描述
   
基于MSC的构件描述,主要描述中心构件及其与作用环境之间的交互。作用环境可以是构件或包装器、代理等与所描述构件发生交互关系的实体。构件与作用环境可能发生两种交互关系:一种为构件从作用环境请求消息,另一种则为相反情况即作用环境从构件请求消息。第一种典型的情况是使用代理,构件与其代理之间产生祸合,必须从构件中调用代理内部函数。第二种典型的情况是使用包装器,包装器是对构件接口进行进一步封装,其实际类或函数在构件中。为了使描述方便和无歧义性,构件描述中的构件用C表示,作用环境用Ei表示,调用方法用mi表示。构件描述中C为中心描述对象,所以C请求消息用out( m)表示,反之用in(m)表示。图2是一个基于MSC的构件图形表示及描述。
   

基于MSC的构件及组装模式形式化描述研究+应用技术图片图片4

基于MSC的构件及组装模式形式化描述研究+应用技术图片图片5

  2.2组装模式描述
   
基于构件软件开发CSSD可以分为两大部分:一是获取构件;二是组装构件。构件的获取可以通过自行开发或商业购买得到。通过对已有构件应用MSC进行描述后,使用者可以快速与准确地理解构件。之后的问题是如何进行合理有效的组装。我们认为构件组装是可行的,但需要满足一定前提条件:
   
(1)获得足够可复用的构件。
(2)对构件有充分理解,特别是接口调用。
(3)能够正确选取所需构件进行组装。
(4)组装后功能、性能方面的检查。
   
前两个前提条件通过MSC构件描述能够解决。而对于构件选择以及组装后系统功能性能检查,只有在组装后才能进行。这样如果组装完成后系统出现问题,解决起来将相当困难,往往造成改一处而动全身的连锁反映。因此提出组装模式的概念,它是沿用目前流行的设计模式的思想。将构件组装结构在组装之前通过描述语言进行描述。这种方式不仅可以使构件组装检查在组装之前进行,更重要的是它也可以作为一种可复用资源而存在。组装模式沿用MSC语法,并加以扩展完成描述过程。图3是组装模式的描述示例。
   

基于MSC的构件及组装模式形式化描述研究+应用技术图片图片6

基于MSC的构件及组装模式形式化描述研究+应用技术图片图片7


    2. 3区别与联系
   
利用MSC直观的形式化描述方式描述构件与构件的组装模式。两者共同的特点是均使用了MSC语法,但是由于描述对象、目的的不同,均对基本MSC做了扩展来满足具体需要。具体表现在几个方面:
   
(1)描述对象。
   
构件描述主要描述的是中心构件与可能和它发生作用的构件之间的交互关系。目的主要是两方面:帮助构件使用者了解构件接口方法和为在下一步工作中检验构件交互的情况(主要是接口交互)能否适用于组装模式。
   
组装模式的描述对象是系统中具体需要的构件之间交互和作用情况,可以被认为是一种系统设计描述。
   
(2)描述语法复杂度。
   
虽然构件描述和组装模式的描述语法来自于MSC.但是相比较来看,构件描述注重接口交互描述,组装模式描述则侧重于描述组装而成的系统或更大粒度的构件,因此后者的描述几乎可以使用MSC所有语法(包括如异常、定时器等)。而前者则关心的是中心构件和作用环境交互的描述,其主要是消息以及交互的方向。
   
(3)与外部交互。
   
构件描述是以中心构件为核心描述交互情况,也就是说在构件描述中都应该是与中心构件发生交互的消息。其它不与其发生关系的消息实际上是不能确定的消息。
   
组装模式中描述组装构件之间实际交互情况,没有中心构件概念,因此需要描述两两构件之间的每个交互消息。另外因为MSC支持部分图组装,也就是利用更高层的MSC抽象图(实际上是部分图作为描述对象的更高级别抽象图),实现一个大系统描述的分步骤描述。因此在大系统组装模式图中出现了消息与env的交互箭头。它的含义实际上是发出消息到另一个MSC图(或接收来自其它MSC图的消息)。
   
    3应用与实现
   
基于MSC的组装描述工具是基于Java语言实现,同时应用XML作为MSC描述的存储载体。XML语法简单,并能很好地描述MSC的文本语法。在前台用Java图形建模的MSC图形被转换为文本描述存储在XML文件中。
   
为了更好地管理构件接口方法(消息),将构件接口(方法)集中管理,形成树形结构,每个节点的所有叶子节点表示该构件的所有接口描述,各个层次的节点为构件路径。如此该命名空间对不同构件中的同名接口可以区别管理。
   
    图4和图5是构件组装的概念模型描述和MSC构件及组装模式描述工具的实现。
   

基于MSC的构件及组装模式形式化描述研究+应用技术图片图片8

基于MSC的构件及组装模式形式化描述研究+应用技术图片图片9


    4结束语
   
本文提出了模式化方法组装系统的思想,与传统的CBSD开发方法不同。应用组装模式组装构件或系统,可以在组装前设计并检查系统可行性。这样就大大减少了组装的风险性,同时在描述工具的支持下,组装模式的设计被作为可复用资源保存。
   
目前在MSC描述工具的支持下,构件的组装和选取工作均是基于手工选择和组装完成的。下一步研究工作,将放在MSC构件描述与组装模式中构件匹配上,完成构件自动选择、匹配和组装的全部过程。


开放分享:优质有限元技术文章,助你自学成才

相关标签搜索:基于MSC的构件及组装模式形式化描述研究 Fluent、CFX流体分析 HFSS电磁分析 Ansys培训 Abaqus培训 Autoform培训 有限元培训 Solidworks培训 UG模具培训 PROE培训 运动仿真 

编辑
在线报名:
  • 客服在线请直接联系我们的客服,您也可以通过下面的方式进行在线报名,我们会及时给您回复电话,谢谢!
验证码

全国服务热线

1358-032-9919

广州公司:
广州市环市中路306号金鹰大厦3800
电话:13580329919
          135-8032-9919
培训QQ咨询:点击咨询 点击咨询
项目QQ咨询:点击咨询
email:kf@1cae.com