初 识 MDA

 
什么是 MDA ?它和其他架构有什么区别?

MDA
是一种新的用于编写规范 (specifications) 和开发应用程序的途径,它基于平台无关的模型 (PIM platform-independent model)

一个完整的 MDA 规范包含:

1
、一个权威的基于 UML 的平台无关模型 PIM
2
、一个或者多个与特定平台相关的模型 PSM
3
、接口定义集合- 每个集合描述了基础模型再不同中间件平台上的实现。

一个完整的 MDA 应用程序包含:

1
、一个权威的 PIM
2
、一个或者多个 PSM
3
、一个或者多个完整的实现- 开发人员决定支持的所有平台上的应用程序实现。

基于 MDA 的开发首先关注于分布式系统或者应用程序的功能和行为,而不是它将采用哪种具体的技术来实现。 MDA 使得业务逻辑和实现细节相分离。因此,每当一种新的技术 ( 例如 XML/SOAP) 到来的时候,我们不必再重复对系统或者应用进行建模的过程,而其他架构往往都和某种特定的技术或者平台捆绑在一起,无法达到这一目的。使用 MDA ,我们对系统的功能和行为的建模只需一次,而且是仅需一次。将 PIM 映射到某个特定平台的 PSM 的工作是由工具自动完成的,当我们需要支持新的技术的时候,这就简化了我们的工作。


为什么 OMG 朝着一个新的方向发展?是什么原因驱使的?

如果你重新审视 OMG 的发展历史你会发现,其实 MDA 并不算是一个新的方向。 1997 年, OMG 将其工作范围进行了扩展,接纳了使用 UML MOF 进行建模的工作。虽然平台无关的 UML 模型可以在任何平台上实现,但是问题在于,随着项目的进展, UML 模型和实现往往会出现脱节,不能很好地同步--树桩仍然固定在地上,但是随时间的推移,它周围的组织结构已经发生了变化。 MDA OMG 组织定义良好的建模标准 ( 不仅仅指 CORBA ,还包括过去的、现在的、将来的其他所有的中间件技术 ) 结合起来,来将你已经创建的、正在创建的,或者将要创建的应用程序集成起来。 MDA 提高了设计工作的门槛,它在建模这一层次上设计轻便的、可户操作的应用程序。


UML
MDA 中扮演什么角色?

UML 是使能 MDA 技术的一把钥匙:使用 MDA 技术创建的所有应用程序都基于标准化的、平台独立的 UML 模型。通过将这一通用的、被普遍接受的建模标准作为杠杆, MDA 使得开发人员可以创建能被轻便地访问、天生具有良好的互操作性的应用程序。而且这些应用程序能被嵌入式系统、桌面应用系统、服务器、大型机等广阔领域的应用程序所访问,也能够被跨 Internet 访问,具有广阔的应用前景。


中间件平台在 MDA 中扮演什么角色?

MDA 中,一个规范的 PIM 被用来定义一个或者多个 PSM 和接口定义集合。每种定义描述了基础模型在不同的中间件平台上是如何实现的。由于 PIM PSMs 和接口定义集合都将被作为 MDA 规范的一部分, OMG 将采用多种中间件平台的规范。 CORBA 技术具有平台和语言的独立性、经过检验的事务和安全的天性。这使得它仍然是从嵌入式系统到桌面系统,再到 Internet 应用的最佳选择。 MDA 的方向是使得它与其他中间件平台更容易交互,而且更加廉价。


CORBA
将何去何从?

OMG 将继续开发 CORBA 并推动其发展, CORBA 的市场将会继续扩展,特别是在实时嵌入式、大型的任务紧急的、高容错性的企业计算环境中。由于 CORBA 是仅有的集成多平台的、多语言的应用程序的解决方案,许多企业将会使用 CORBA 去创建和集成由 MDA 定义的应用程序。 OMG 和它的成员一直都认可与其他标准 ( 例如具有所有权的平台和语言 ) 具有互操作性的价值。 OMG 1995 年创建了 COM/CORBA 互操作标准,并在 1997 年对它进行了扩展,同时也设计和建立了 CORBA Java XML 协同工作的方式。 MDA 将继续定义跨中间件的互操作工作,而且将提供工具以加速和自动化这一过程。这将会给用户带来好处,因为他会发现自己的应用程序可以支持多种中间件平台。


MDA
如何使得跨平台的互操作性成为可能?

每当一个新的 MDA 规范或者应用程序被创建,和其他规范以及服务的互操作性已经包含在设计当中。在 MDA 中,每个服务、工具和应用程序的的基本描述都是一个平台无关的模型。在平台无关的模型环境中,架构师可以指定应用程序到需要的服务、工具以及其他应用程序之间的连接,并且将其作为模型的一部分。根据这些模型, MDA 工具自动生成用于连接不同中间平台的程序实现。


MDA
环境下有哪些服务可用?

OMG
组织成员深知具有可扩展性的服务对于企业或者跨 Internet 的分布式计算的必要性。对于
CORBA
OMG 对同样的问题的回答是 CORBAservices ,这些服务已经被定义且可用。在 MDA 中,已经给其赋予了一个新的名称-普遍深入的服务 (Pervasive Services) 。因为每个服务的实现都忽略它所运行的平台, 通过 MDA 生成的跨平台的一座桥可以为任何需要其能力的应用程序和客户端程序服务。在 MDA 中, OMG 将会迅速定义 4 个服务:

目录服务 (Directory Services) *
事务服务 (Transaction Services) *
安全服务 (Security Services) *
分布式事件通知服务 (Distributed Event and Notification Services)

其他一些服务,如 CORBA services 列表中被建议的服务等,将会在需要的时候被加入,以使得
MDA
环境具备完整性。

领域相关的软件和标准将如何从MDA中获益?

MDA
对于工业软件来说具有许多优点,以至于 OMG 的一些 Domain Task Forces 已经开始使用 MDA 来书写他们的标准,即使 MDA 还并未成为一个官方的标准。为了能使一个工业获益,一个标准必须被一大批的公司所使用。跟特定技术绑定的标准由于平台的不兼容性会给大面积推广工作带来麻烦。有时候问题可能比这个还要严重:在某些工业中,有些架构上非常优秀,且被正式采纳的标准却没有获得应用,就使因为它只是为特定平台所编写的, 而这个平台只有为数很少的公司使用。 MDA 彻底扫清了这种障碍。在 MDA 中,每种标准的功能性描述都使与实现技术无关的,而且它的架构也是能够在多种平台上产生可互操作的代码实现。这就允许一个工业来将他们的业务逻辑功能和行为定义为一个 PIM ,然后生成 PSMs 和多种平台的实现。


MDA和微软.NET以及Sun ONE如何比较?如何竞争?

MDA 工作在与 .NET ONE 不同的层次上。 .NET ONE 是被个体所拥有的平台,瞄准的是特定的应用程序领域。而 MDA 是模型驱动的软件架构,工作在包括 .NET ONE 的任何中间件平台层次之上。中间件平台被合入 MDA 中,作为一个 platform-specific profile .NET ONE 瞄准了相同的市场, OMG 成员将为他们定义 platform-specific profile ,以允许他们和其他平台 ( 例如 Java/EJB XML) 、协议以及工业标准平台 ( 例如 SOAP XP) 协同工作。


对于试图处理企业计算的企业来说,MDA能够带来的最大的三个好处是什么?

使用 MDA 方式能够带来很多的好处,最重要的三个是:基于 MDA 的架构总是能够随时应付昨天的、今天的和未来的下一个主流技术。 MDA 将会使得应用程序和工具能够跨越中间件的边界,从而变得更容易集成。 OMG Domain Task Forces 小组负责在 MDA 中定义领域相关的工具,它将会提供更广阔的互操作性。因为这些工具将会在特定领域的首选平台上可以使用,而且如果需要,也可以在多种平台上被使用。


MDA将在什么时间、什么类型的工具中、以什么样的方式被分发?

MDA 的一些关键部分已经被标准化了,这不仅包括 UML MOF XMI CWM ,还包括第一个中间件的映射 ( 针对 OMG 组织的 CORBA 平台 ) 。一些其他的主要的 MDA 基础规范正迅速地成形,例如为企业系统设计的中间件无关的映射 ( 称为 UML for Enterprise Distributed Object Computing) 。作为产品, MDA 将被一些工具所实现。这些工具可是是单独的,也可以是一整套的,他们将建模功能和开发功能集成到一个独立的环境中,将会带领一个应用程序从最初的 PIM 转换为平台相关的 PSM ,最终针对一系列的语言和配置文件生成实现接口、连接服务以及工具的代码;如果可能,也会生成部分业务逻辑代码。一些软件生产商已经可以提供实现在这一层面上实现集成功能的工具,其包含了代码自动生成功能。由于这些工具开发时, MDA 规范并未完成,所以这些工具并不是完全符合 OMG MDA 规范。即使这样,我们仍然很高兴地看到这些开发环境已经开始支持 MDA 。我们希望第一代工具能够在今年后期产生。其他厂商的产品也会加入进来,因此大多数的 OMG 厂商成员将会在未来的 18 个月中在市场中推出其代表性的产品。 MDA 最大的好处就是可以从 MDA 模型中自动或者半自动地产生应用程序代码。


OMG如何工作?

OMG 比以前更大壮大,且发展良好。拥有数百个公司成员, OMG 继续保持最大的软件标准组织的
地位。现在有越来越多的系统使用 OMG 的标准部署,新的成功的故事正在不断上演。新近的一些故事包括了赢得一个大型的航空预定系统和两个世界上最大的跨国汽车制造厂商的系统的主要设计。 OMG 目前采纳的正在进行的工作是 OMG 标准化组织的 12 年历史中最多的。 OMG 组织的会议会吸引数百名成员和客户的注意力。


MDA会反过来影响我已经安装的或者计划安装的基于CORBA的产品嘛?

绝对不会。首先, OMG 计划至少会继续在当前的层面上对 CORBA 提供支持;实时的、嵌入式的、容错的系统和企业系统的 CORBA 用户所提出的需求将会加快 CORBA 的标准化速度。 CORBA 也将会成为 MDA 中一个最卓越的平台相关的模型。是完全保持现有 CORBA 应用程序,还是利用 MDA 桥接到其他平台,这取决于商业因素,而非技术的压力。
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在pandas中计算MDA8(Moving Average of 8-hour Maximum Ozone Concentration)可以通过以下步骤实现: 1. 首先,确保你已经导入了pandas库,并且已经读取了包含Ozone浓度数据的DataFrame。 2. 接下来,需要对Ozone浓度数据进行预处理,确保数据的格式正确。可以使用pandas的to_datetime函数将日期列转换为日期时间格式,并将其设置为DataFrame的索引。 3. 然后,使用rolling函数计算8小时滑动窗口内的最大值。可以通过指定窗口大小和min_periods参数来实现。例如,使用`df['Ozone'].rolling(window=8, min_periods=1).max()`可以计算出每个时间点的8小时内的最大Ozone浓度。 4. 接下来,使用rolling函数计算8小时滑动窗口内的平均值。同样,可以通过指定窗口大小和min_periods参数来实现。例如,使用`df['Ozone'].rolling(window=8, min_periods=1).mean()`可以计算出每个时间点的8小时内的平均Ozone浓度。 5. 最后,将计算得到的最大值和平均值相乘,得到MDA8值。可以使用pandas的multiply函数实现。例如,使用`df['MDA8'] = df['Max_Ozone'].multiply(df['Mean_Ozone'])`可以将最大值和平均值相乘,并将结果保存在名为MDA8的新列中。 下面是一个示例代码: ```python import pandas as pd # 读取包含Ozone浓度数据的DataFrame df = pd.read_csv('ozone_data.csv') # 将日期列转换为日期时间格式,并设置为索引 df['Date'] = pd.to_datetime(df['Date']) df.set_index('Date', inplace=True) # 计算8小时滑动窗口内的最大值和平均值 df['Max_Ozone'] = df['Ozone'].rolling(window=8, min_periods=1).max() df['Mean_Ozone'] = df['Ozone'].rolling(window=8, min_periods=1).mean() # 计算MDA8值 df['MDA8'] = df['Max_Ozone'].multiply(df['Mean_Ozone']) # 打印结果 print(df['MDA8']) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值