组件,接口和数据模型在体系结构中的应用
Jan Gerben Wijnstra
飞利浦公司研究实验室教授--普夫..埃因霍温,荷兰
JanGerben.Wijnstra@philips.com
?http://91mail.51.net提供翻译,仅供学习和参考使用
http://91mail.51.net/wz/cim.pdf
摘录: 在这里,我们将叙述我们在医学图像平台领域的发展经验。 这个平台组成平台的三个重要因素是组成,接口和数据模型. 我们将会这个平台的需求进行解释,为什么选择这三种因素, 和我们在用这种方法时的经验。
关键字: 组成,接口,数据模型,多样性,平台,产品家族,产品总和
1. 介 绍
医学图像市场的产品正在变得越来越复杂和多变, 它必须支持简单的延展新特性 ( 特性通过产品来传播) , 对于用户将有类似的表现, 而且有更高的质量。用很短的时间进入市场和有限的发展费用也是重要的因素。 这些必要条件应该被一个包括广阔市场的产品家族所讨论。 产品家族的发展和它的个别成员 (即:单一产品)可以被一个共享家族结构支持。
相似处能在各种不同的产品家族之间存在, 当他们是在一个单一产品家族里的时候 , 这些相似处可以以类似的方式被开发利用.。如此一群相关的产品家族有时被称为产品总和 [2]。一个共享结构也可以被这样的产品总和所定义。 基于这种结构,我们能定义并且提供可能被重复使用的属于产品家族的产品总和资产。
在这篇文章中,我们将描述我们在产品总和的平台中如何运用组件,接口和数据模型的方法。 这方法适用于这样一个工程── 针对通过许多的不同产品家族的普通成份的传送。这些产品家族具有获得-并处理人体内的数字图像的特性。 平台能直接被这种产品所使用;而不需要间接的通过这个产品家族来使用。在第 2 节中将介绍平台的需求和设置。在第 3 节中,我们详述平台的成分,例如, 组成、接口和数据模型。在第 4 节中将描述使用这些成分来建立一个平台的方式。 最后,在第 5 节中介绍使用这种方法的实际经验,接着是在第六节中的评论。
2. 产品总和平台
在以前的章节中,我们介绍了关于在医学领域支持产品开发平台方法的争议。这种平台必须支持许多的特性。 最重要的一些是:
打开系统
在医院中平台必须已经被所有系统所使用。这些系统一定是可相互连接的而且一定能够合并出新的功能。
和以前兼容
有关新旧产品在平台中能够一起工作的描述是可取的。那年长的和新的产品已制成的有平台能工作共同。也在一种产品里面,联合不同的版本功能一定是可能的。
独立的生命周期
平台包含功能相关联的不同的组. 每一组应该有一个独立的生存周期,所以它能在不影响其余的平台的情况下被更新.
结构性,延展性
平台的特殊部分的单个特殊产品的组成/结构是很重要的. 它也应该非常容易的扩展产品的新特性。
?? 复杂性管理
?? 当定义一个必须能应用在很多产品家族,并且能发展过去的平台时,最重要的是复杂性的可管理性。
输出源和三部分程序
按照软件生长的大小和软件的复杂, 我们想要得到某些确切部分或得到明确定义输出源的功能。
可移植性(技术独立)
平台使用在不同的产品中,这些产品可能有不同的操作系统或组成技术。 在这些系统和技术中平台必须是可用的。
为了要支持这些属性,产品总和平台将会由许多的成份所组成. 这些成份已经清楚地定义接口.并为一些接口定义了数据模型, 描述了一些在接口上交换的数据的语义 (在区段中被解释成份,接口和数据模型 3). 特定产品能重复使用组件,并计算接口和数据模型。.
??? 根据它所应用的上下文,术语‘平台'有不同的意义。举例来说, 当看着操作系统或 诸如COM的中间软件层时,平台是建立在你自己产品的基本功能之上的,平台是一项令人振奋的功能。另外一个方法在平台术语中的使用是能够被扩展的特殊功能性的框架集合。在这一页的上下文中,我们定义了被一套一般的可重复使用组件的平台。 这个平台的使用者对决定使用哪一部分是自由的的。如图1所示, 在这里,基于平台上的两个产品家族和一个产品被描述.。他们每一个都由在平台结构中的。
组件,接口和数据模型在体系结构中的应用。
??????
图1
3. 组成,接口和数据模型
三种平台中主要的结构元素是组成,接口和数据模型。他们将会在这一个部分中被讨论。
在我们的平台中,组件是重复使用外部功能的接口单元,它提供:
?一个快速传递持续功能的稳定接口
???在组件中产品被一组产品的可组性
???组件和产品的独立生命周期,允许增长刷新
???刷新(新功能)的简单分配(安装)
????一个重用三部分的和遗留软件的 机会
????外部数据源控制的提高
???不同种类的集成技术(操作系统,编程语言)
除组件之外,接口是这种方法的实质。这些接口的重要特征是:
???入口点被清楚的定义为被其他组件应用的功能性
???在组件的创建者和使用者之间建立联系
????组件通常实现一套逻辑关系接口
????相同的接口可以被多重组件实现
????接口应当是稳定的,可灵活的实现
接口是组件的封闭联系。这个关系如图2所示,一个组件有两个类型的接口,即:
?????提供接口,组件保证功能联合接口的实现
?????请求接口,组件入口功能通过这个接口 并依赖于实现外部组件的功能
?????????????????
???????????????????????????? ?????????图2
接口和组件是在所有被定义的体系结构的上下文的较小部份。除了这些接口和组件外,这里有一些相关的概念在体系结构的一些地方。例如这样一个在医学领域的概念的例子是一个医学图像。图像的概念是关于在屏幕上显示一个图像,当印刷图像在薄膜上的时候, 或将一个图像存储在一个光碟上。图像概念适宜复杂的结构,且包括例如像素矩阵和提到的获得图像的标志。设想就像是包含所谓的‘数据摸板’。一个数据模型在这个领域获得的相关的概念 许多的数据模型已经被定义. 一个数据模型在另外一个之上建立是可能的 (扩充它).
如图3所示的例子,显示图形数据模型的一部分,基于DICOM(在医学界)标准。每个实体在结构中都有一些标志。这可能代表精确产品家族的细节。这也可能是被加的 结构的每一个物体有许多的属性. 可能有对特定的产品家庭是特定的属性. 它也可能是个别被加的产品家族的准确实体情况。
?????????????????????????? 图 3
一个数据模型的观念在体系结构的一些地方扮演一个角色,在各种不同的组件之间。例如,一个请求组件要求到一个印刷图像的印刷服务。 实现这个功能方法之一是让打印请求提供一些规则,这些参数中像请求组件能通过所有属于图象和控制打印图象的个别标志。 然而,代替这一种可能性,请求是通过一种方法——像调用数据结构实体或定义信息模型那样。 如结果,组件,接口和数据模型属于体系结构平台
有较少和简单接口方法,而且语义学被移到数据模型。如图2所示,如何让数据模型和接口相连。一个数据模型定义了在组件通过一个确切类型接口的及结构和语义实体结构的转变。一个如此接口能黏附在相关的数据模型中经过的数据物体能够被传送。 二个互相影响组件为了处理被交换的数据,都必须认识数据模型。
发生在一个数据模块中的变化,如观念在领域里面可能进展.。这意谓一个数据模型的一些说明能存在.。一个确定组件因此和一个特殊的数据关系的说明一起提供一个接口组合。之后这两个元素一起,事实上确定了被组件提供的功能,它们构成组件提供的完整接口。
每一个产品家族支持基于定义为一个特别的数据模型的观念组合。然而,那也可能是对一个产品家族的特定延长。这意谓着当数据从一个系统到另外一个系统被转移的时候,接收系统将至少了解基础数据。接收信息可能或不可能忽视附加元素,发送和接收系统依赖数据模型的应用。
在组件接口中运用数据模型的主要利益是下列各项:
在个别接口中的重新应用
一个数据模型的吸引人的思想是充当广大系统中的组件之间相互影响的角色。例如一幅图能打印,存储,或显示,希望在不同的组件中相互影响。这些概念能简单的在不同的文章中重用,只要它们被定义为能传递接口的数据实体。接口可能也可以被一些数据信息重用。这就像是当数据模型是另一个数据模型的延伸。
稳定接口的方法
自从合成部分(方法和他们的特征) 的接口变成小后, 他们比传统的接口将保持更多的稳定性。这意谓很少的新接口将会在系统的进化期间被介绍胜于当申请的 'COM-规则',也就是说,当一个接口需要被修正的时候,一个新的接口必须被介绍。
处理认为是特殊权利
同样地在事物倾向, 我们直觉地对待溉念在真正世界作为实体在数据模型中。 这些实体可能被更换如在接口上的实体, 也可能从一个组件到另一个组件。
一个对象属性所提出的参数被一个方法调用时的形式是不同的。这将导致方法的复杂性描述,尤其是关于多层模型组成的对象结构。甚至 当一个数据对象被组件所传递,而中间媒体并不了解数据对象语义都是有可能的。
Jan Gerben Wijnstra允许基本语义的介绍,能够处理数据对象而只产生很小的语义和结构上的变化。例如一个打印队列的服务请求。数据对象可以被存储。由于数据在组件中的传递是在数据对象的形式中,它能被很容易的存储。比方说,打印一幅图片的请求的所有数据都可以被一个打印服务所处理,并且当打印机空闲时可以被传递过去。相同的数据结构也可以被用来存储这些对象。在相互交换信息的联机系统中,这些数据对象也可以被应用。
?支持早期和后期的兼容性。
由于接口的方法保持稳定,每一个组件都能够接受到属于较早或是较新数据模型版本的数据对象。如果这个数据模型版本需要使用的组件较早,由于接受的足见不能理解其中的意思,一些新的数据属性可能就会被遗漏。这个机制当然应该小心来使用,这是因为虽然提供的方法和需要的接口是兼容的,但不同数据模型版本的结合产物可能会导致不期望的结果。
?能够宣布工作的方法
在人口平台中的组件不得不使用特殊的组件产品。这就以为着一个稳定的交互水平会被这些组件接口所选择。通过应用数据对象,一个已被宣布的工作方法被使用在那些功能被请求在最终结果的界限中并且不是一个有顺序的步骤中, 因此,执行操作的请求被数据结构所采用并且传递给了操作的执行者。这种类型的交互操作比那些对每一个单独的步骤都要分配方法的依赖与接口的交互操作要稳定的多。
?数据驱动工具
数据模型的应用提高了加工数据结构的作用。象早些时期所提到的,数据对象能够被很容易的存储在数据库中,另外一个更普遍的例子是测试数据,基于数据模型来定义语序的数据对象的结构和值。
? 这个数据模型跟随着分离语法和语义学的趋势,我们也可以在可扩展表示语言中看到。这个数据模型并不是能应用到所有的接口中去。通常这些截面处理相关的大型系统内容时会采用相关的数据模型。在组件中有一些特殊的为本地交互作用的实现而采用的接口,由于上面所提到的优点最主要的还是应用在大型系统中的接口中去。
??? ??采用数据模型除了它的优点外,还有一些缺点。这些缺点之一就是想要看到使用哪一种接口会比较复杂,由于接口方法的普遍性。它同样需要一种不同的工作方法来对比那些使用接口的一般性方法。??
4. 方? 法
在这一个区段中,我们给我们的平台方式 (第 4.1 节) 的一般描述,主要的建筑风格 (第 4.2 节),各式各样更详细地被平台 (第 4.3 节), 查看组件,接口数据模型是如何被定义的更多细节(第4.4节)。
4.1 平台定义
当做更早地提到,被分享的方式第一种目标要达成被分享过各种不同的医生体系结构图像系统. 一个如此被分享的体系结构是很重要的能够定义分享成份,接口和数据模型. 积极参与的所有宴会,月台团体和产品团体 , 都对一个定义被分享的月台体系结构的体系结构团体有助益. 下一个步骤是依下列各项:
首要事物因为这方式是数据模型而且接口被明确地定义而且处理. 达成这,有二个工作的团体, 一为数据模型和他为接口,每个包含来自各种不同的月台成员和产品团体. 焦点在多样的系统中已经存在的功能性的标准化上. 如一个经验法则,当它被至少二种产品需要的时候 , 一个成份是月台的部份.
平台集合为平台定义并且觉悟可以再度使用的成份. 这些成份彼此可能被相当独立地建造. 当他们被完成, 和将会进入一个下个步骤的平台台之内被整合的时候 , 他们将会被释放. 产品总和在带平台台的一个版本而且建立他们的产品之上它. 任何的产品可能使用可以再度使用的资产它自己的选择.
产品也聚集使用他们已经为他们自己的目的建造成份. 如果这些成份遵从被分享的体系结构的接口而且对其他的产品团体是有用的,他们也可能进入被分享的平台之内被整合. 注意这一个整合步骤将会时常一个重新设计,两个成份都它本身和那些仍然不的成份接口可得的. 这是成份提供的功能性可能必须被些微地适应的理由使它可以再度使用在其他的产品里面.
4.2 平台结构
能被分享的平台结构定义了许多的层。层是:(从底部到顶端) 底层 (包含系统内各部分功能) ,服务层 (医学服务成份) 和应用层 (医学中的应用成份)。应用成份以应用形式提供一个完整的功能。 应用被整合形成产品。应用成份的功能性是藉由使用在下面的服务成份的功能性实现的。每一个服务成分能被重复使用在不同的应用中。如图4所示。 在下面,数据模块在应用和服务之间的交互作用成份中扮演重要角色。这些数据模块形成一个稳定因素,允许服务和应用的交换. 此外,数据物体能在应用和服务之间被交换能够被坚持完成可能在藉由储存他们在容器中。 既然这些容器每一个支持相同的接口和数据模型,这些容器可能被交换。当一种产品家族想要合并平台服务和应用的时候,它必须提供它的实现功能,举例来说,一个特定容器应用,经由被定义的接口和数据模块因此平台应用和服务可能被重复使用。数据对象的使用也支持服务和应用对分配系统的合作。
???????????????????????????????? 图4
4.3 不同种类的处理
产品人口平台被用于不同的医学上下文图像产品中,每一个有它自己的结构。这些产品中的每一种从平台中提供它自己的功能和特定功能的需求。这些产品每个将会随平台的发展而进展。这意味着平台一定有极大地程度来支持传送和发展。
平台的结构包含三个通过产品和产品家族支持传送需要的主要概念。下面将对这些观念进行解释:成分中的结构数据;需要的接口概念;信息模板概念。 ?
每个成份为结构数据在平台里面有一个必需的接口。 在启动结构数据的时候它从结构数据库被读并且用来设定每一个成份初值。我们将不在这一个机制上做更进一步地详细地说明。
不同的平台需要的接口形成月台结构的外部点. 他们允许能提供相同接口的成分被交换。但是要求特定的要求被不同处理。一个简单的例子是联机接口。这是平台里的联机成分提供的接口,负责储存联机数据。联机接口也是平台所有的其他成份的一个必需的接口。一个特定的产品家族然而是不强制使用由平台提供的联机工具的。如果有特定的联机工具需求,
产品家族能实现特殊化黏附在联机接口的联机成份。这在图中被举例说明。这在图5中说明。所有的平台成份经过联机必需的接口运行联机操作,因此,没有其他的成份被改变。
平台成份应该在他们的 (实行) 环境中应该尽可能很少的被假定.作为一个设计规则必需的接口应该为在一个或较多的产品中可能需要变化的每一个功能而被定义。
?????????
图5
第三个易变机制是抽象的使用, 一般的接口在数据模型中的组合。为了保证接口的简单化和固定化,大部分语义被当作黏附在一个特定的数据模块当作数据结构体被传送,形成一种清晰的风格。 这允许一个单独的类成分的含义能提供不同产品的需求(见图6所示)。然而,清晰的风格实现了完全不同的含义,从个别步骤到不能在接口中被定义。
?????????
?????????????????????????? 图6
4.4 定义成份,接口和数据模型
接口和他们的相关数据模型在平台的发展中扮演重要角色. 我们可以说接口中心结构描述,而不是我们有接口- 在组件中心部分,要将注意放在描述不同组件上,而不能放在这些组建相互之间怎样联系的。在接口中心部分,注意力放在两个组件的连接方式上,这样方注意力在组件上。当为平台定义接口和组件时,下列步骤要说明:
决定哪个功能必须提供,那种组件在解决问题中扮演角色,他们在联合中扮演什么角色。这是主要知识的基础。
基于这些不同组件之间的连接,为信息交换定义接口和信息模型。这些接口定义了那个角色组件能扮演。
使用接口说明,列数功能需求,定义不同组件。例如一个组件的定义大大的依赖于借口说明,例:他们可以被看作借口说明的组成部分。功能都在这些组件内实现。
5. 经? 验
在早先的介绍中,我们描述了使用成份,接口和数据模型的方式. 一些经验教我们:
清楚的平台内部和外部接口分离是重要的。
当你从原有组件移动到更原始的接口中时,不要忘记好好定义组件。
接口和的打印是重要的意味着在早期进行设计选择。
小规模的开始给了处理过程一个很好的机会,并且为下一步发展提供了经验。
在关于接口,数据模型和组件的相关描述中,最重要的就是将所有部分联系起来。(平台和产品组)
数据目标支持声明方式,使他更早从在不同队伍中发展的组件中建立系统。
设计不应该有基因性,这会导致不必要的贯彻复杂性和费事。
所选的接口和信息模型支持所需的在特定组件中的转化。
6. 总结评论
在这一部分文章中,我们已经通过对在产品总合平台的发展中的成份、接口、数据模型的描述和经验为医学图像产品作了描述。在以下方式中,接口,数据模型和成份支持所需平台的多样化。通过对接口的仔细的注意,他们会通常更加稳定。所需接口的详细说明意味着每个接口都能够被不同的组件所实施,每个组件都有他们自己的行为。这能够转化。
人们希望每个接口稳定。在特定时刻的及时和超时变化,能被信息模型使用。一个信息模型能有基因部分,该部分是对于所有的产品来说,除了产品家族特定附件。.
通过分离平台的组件,可能从平台中选择相关组件,添加在你自己的组件里,并且建立产品。如果平台没有被组成,这是可能的。
?
参考
1.????? Len Bass, Paul Clements, Rick Kazman, 编著 软件体系结构 ,大众出版社., 1998年1月.
2.????? Rob van Ommering 编著,现代产品家族:体系结构产品总和,网路世界大会-SAPF-3 ,Las Palmas de Gran Canaria,进行, 2000年3月.
3.????? Clemens Szyperski 编著,成份软件–超过物体定向的规画,Addison Wesley,阅读, 1997年1月.
Jan Gerben Wijnstra 编著,组件支持的平台体系结构,ICSE 2000 ,Limerick,六月 2000.