模型驱动的服务构件开发工具
补充1-1 统一建模语言UML

2.对象图(Object diagram)
35
3.包图(Package diagram)
包图: 一种组合机制,由关系密切的一组模型元素构 成,还可以由其他包嵌套构成。即主要由包或类组成, 主要表示包与包、包与类之间的关系。 作用:主要用来描述系统的分层结构;引入包是为了 降低系统的复杂性,包是维护和控制系统总体结构的 重要建模工具。
2.2 UML系统模型与建模
2.2.1 用例模型及组成成分 2.2.2 静态模型与系统体系结构建模 2.2.3 动态模型与行为控制流建模
26
2.2 UML系统模型与建模
UML分析和设计模型由3大类10种图表示。
用例模型图:由用例图组成。 静态模型图:由类图、对象图、包图、构件图和 配臵图组成。 动态模型图:由活动图、顺序图、状态图和合作图 组成。
13
2.1.2 UML的特点和作用
二. UML的主要作用
2. 为软件系统建立构件 UML不是面向对象的编程语言,但它的模型可以直 接对应到各种各样的编程语言。 例如:它可以使用代码生成器工具将UML模型转换 为多种程序设计语言代码,如:可生成C++、XML DTD、JAVA、Visual Basic等语言的代码,或使用 反向生成器工具将程序源代码转换为UML;甚至还 可以生成关系数据库中的表。
8
2.1.1 UML的诞生与发展
UML的简要发展历程如图所示:
9
10
2.1.2 UML的特点和主要作用
一. UML的特点
统一标准:UML统一了Booch、OMT和OOSE等方法中的
基本概念,已成为OMG的正式标准,提供了标准的面向对象 的模型元素的定义和表示。
软件开发模型

增量模型:
增量模型存在以下缺陷: 1、 由于各个构件是逐渐并入已有的软件体系结构 中的,所以加入构件必须不破坏已构造好的系统部 分,这需要软件具备开放式的体系结构。 2、在开发过程中,需求的变化是不可避免的。增量 模型的灵活性可以使其适应这种变化的能力大大优 于瀑布模型和快速原型模型,但也很容易退化为边 做边改模型,从而是软件过程的控制失去整体性。 3、如果增量包之间存在相交的情况且未很好处理, 则必须做全盘系统分析,这种模型将功能细化后分 别开发的方法较适应于需求经常改变的软件开发过 程。
WINWIN模型图:
需求分析和定义
风险标识
风险评估和决策
软件设计与实现
软件产品及评审
WINWIN模型 :
抛锚点表示了项目遍历螺旋时的3个差别的进展视 图: 1、第1个抛锚点称为“保存周期方针”,定义了 一组针对每个首要软件工程过程的方针; 2、第二个抛锚点称为“保存周期系统布局”,建 立了当系统以及软件系统布局被定义时必须满 足的方针; 3、第3个抛锚点称为“初始操作能力”,它表示 一组方针,这些方针以及将要安装/销售软件 的安装前场地筹办以及将施用该软件的各方所 需的帮助相接洽关系。
XP模型图:
用户 故事
体系 结构
发布 计划
交 互
接受 测试
如下 : 1、 采用简单计划策略,不需要长期计划和 复杂模型,开发周期短。 2、在全过程采用迭代增量开发、反馈修正 和反复测试的方法,软件质量有保证。 3、 能够适应用户经常变化的需求,提供用 户满意的高质量软件。
二、增量模型(Incremental Model):
定义:又称演化模型。增量模型融合了瀑布模 型的基本成分(重复应用)和原型实现的迭代 特征,该模型采用随着日程时间的进展而交错 的线性序列,每一个线性序列产生软件的一个 可发布的“增量”。 特点:当使用增量模型时,第1个增量往往是核 心的产品,即第1个增量实现了基本的需求,但 很多补充的特征还没有发布。客户对每一个增 量的使用和评估都作为下一个增量发布的新特 征和功能,这个过程在每一个增量发布后不断 重复,直到产生了最终的完善产品。增量模型 强调每一个增量均发布一个可操作的产品。
MCGS 高级开发指南

MCGS高级开发指南 1目录第一章MCGS的可扩充性 (4)1.1 概述 (4)1.2 可扩充的设备驱动构件 (6)1.3 可扩充的功能构件 (7)1.4 MCGS实时数据库对象 (8)1.5 MCGS存盘服务对象 (10)1.6 通过OLE自动化和其它应用程序交互 (12)1.7 通过DDE和其它应用程序交互 (14)1.8 直接操作MCGS的存盘数据库 (16)第二章开发MCGS功能构件 (17)2.1 功能构件的实现方法 (17)2.2 功能构件接口规范 (18)2.3 利用开发向导生成框架 (19)2.4 利用样例程序移植 (22)2.5 测试和挂接功能构件 (25)第三章开发MCGS设备驱动 (27)3.1 设备驱动构件的实现方法 (27)3.2 设备驱动构件接口规范 (28)3.3 利用开发向导生成框架 (32)3.4 利用样例程序移植 (35)3.5 测试和挂接设备驱动构件 (37)3.6 IO端口的操作 (40)3.7 串行口的操作 (43)3.8 设备驱动构件的运行机制 (44)3.9 增加设备构件的属性 (45)MCGS高级开发指南 23.10 定制设备属性设置对话框 (47)3.11 编制简单的设备驱动构件 (48)第四章MCGS系统内部数据对象 (52)4.1 $Year (53)4.2 $Month (53)4.3 $Day (53)4.4 $Hour (53)4.5 $Minute (54)4.6 $Second (54)4.7 $Week (54)4.8 $Date (54)4.9 $Time (55)4.10 $Timer (55)4.11 $RunTime (55)4.12 $PageNum (55)4.13 $UserName (56)第五章MCGS系统内部函数 (57)5.1 数学函数 (57)5.2 字符操作函数 (59)5.3 窗口操作函数 (61)5.4 设备操作函数 (62)5.5 策略操作函数 (63)5.6 事件操作函数 (64)5.7 报警操作函数 (64)5.8 存盘操作函数 (67)5.9 用户权限操作函数 (70)5.10 系统操作函数 (71)第六章MCGS中提供的对象 (205)MCGS高级开发指南 36.1 实时数据库对象 (205)6.2 存盘服务对象 (223)MCGS高级开发指南 4 第一章MCGS的可扩充性1.1 概述MCGS组态软件是一套功能丰富、简单易用的组态软件,大部分工程师都可以很容易的使用这套组态软件来完成一个完整的工程项目。
第5章 JavaBean构件模型

JavaBean
通信
主要内容
JavaBean构件概述 MVC中的JavaBean JSP访问JavaBean JavaBean的初始化
14
JavaBeans在MVC设计模式中的角色
中 的
MVC JavaBean
15
JSP及JavaBeans在MVC中的使用场景
中 的
MVC JavaBean
8
俱乐部管理 JavaBean AddMember 成员方法
构 件 概 述
前台 JSP文件
JavaBean构件模型
定义
描述Java的软件组件模型 可以进行独立分离、易于重复使用的软件部分 独立于平台和结构的应用程序编程接口 无限扩充Java程序功能 JavaBean的组合可以快速的生成新的应用程序 可以实现代码的重复利用 增强程序的易维护性 有公共无参数的构造函数 每一个属性都要有set,get方法 实现Serializable接口
构 件 概 述
JavaBean
3
构件基本属性
构 件 概 述
构件是可独立配置的单元,因此构件必须自包容 构件强调与环境和其他构件的分离,因此构件的实 现是严格封装的,外界没机会或没必要知道构件内 部的实现细节 构件可以在适当的环境中被复合使用,因此构件需 要提供清楚的接口规范,可以与环境交互 构件不应当是持续的,即构件没有个体特有的属性, 理解为构件不应当与自身副本区别,在任何环境中, 最多仅有特定构件的一份副本
public class myBeanInfo implements BeanInfo
JavaBean的特征
定制
Bean通过发布其属性使其可以在设计时被定制 有两种方法支持定制 通过使用Beans的属性编辑器 使用更复杂Bean定制器
电力信息化:电力GIS基础软件平台EPGIS——基于泛MDA架构、灵活插件体系的BASK业务构件平台

电力GIS基础软件平台EPGIS——基于泛MDA架构、灵活插件体系的BASK业务构件平台李功新1刘升1刘金长2杨成月2陈雄华2(1福建省电力有限公司,中国福州 350003)(2厦门亿力吉奥信息科技有限公司,中国厦门 361009)摘要:业务基础软件平台是解决软件行业基本矛盾的有效方法,BASK业务构件平台规避了目前大多数同质产品在架构设计、模型建模等方面存在的不足,提出了基于泛MDA架构,灵活插件体系的平台建设思路,详细介绍了BASK业务构件平台的架构、体系、模型、功能等内容。
关键词:EPGIS;BASK;MDA;可插拔插件;Spring1 概述现阶段软件产业的主要矛盾是“不断增长、日益复杂的社会需求与落后的软件生产力之间的矛盾”,其表现出来的主要矛盾是“用户需求的个性化与软件产品的通用性之间的矛盾”。
为解决软件产业的基本矛盾,人们一直在进行着持续不断的努力。
概括起来,有两个方向,一是软件工程、软件项目管理的方向,一是软件技术革新的方向。
对于软件技术革新的问题,《人月神话》的作者Brooks将其分为根本任务与次要任务,其中根本任务是指打造构成抽象软件实体的复杂概念结构;次要任务是指使用编程语言表达这些抽象实体,在时间和空间的限制内将他们映射成机器语言。
对根本任务的研究是近几年才开始的,目前已经取得了一些成果,国内多家软件公司开发出了自己的业务基础软件平台,如Justep的BIT,普元的EOS,金蝶的BOS等,并且已经将平台成果应用到实际的项目中。
目前针对电力行业的GIS基础软件平台并不多见,与电力GIS紧密结合的业务构件平台也未见报道。
2 当前基础软件平台面临的问题随着软件行业的发展,在操作系统平台、软件基础架构平台之上发展出来的业务基础软件平台,无疑是软件行业的大势所趋。
但是这个过程不可能是一蹴而就,在理论研究、实现方法上还很长的路要走。
目前模型化平台的实现存在两种倾向:过分拘泥于经典MDA理论:很多业务平台过分禁锢于MDA经典理论,盲目追求完全模型驱动、零代码实现的目标。
EMP平台简介(转载)

EMP平台简介(转载)1、什么是EMPEMP平台是⼀个基于J2EE体系的、WEB应⽤的、基础框架平台;表现逻辑框架(MVCFrameWork)与业务逻辑框架(EMPBizLogic)分离;组件化、配置化设计技术;可视化开发⼯具EMP IDE;提供了丰富的基础组件。
2、使⽤MVC的⽬的是将模型和视图实现松耦合,从⽽使同⼀个程序和数据表现为不同的展现形式模型(model)模型表⽰业务数据和业务规则。
在MVC中,模型拥有最多的处理任务。
视图(view)视图是⽤户看到并与之交互的界⾯控制器(controller)控制器接收⽤户的输⼊并调⽤模型和视图去完成互⽤的需求。
控制器本⾝不输出任何东西和做任何处理。
他只是接收请求并决定调⽤哪个模型构建去处理请求,然后确定⽤哪个视图来显⽰模型处理返回的数据3、EMP是⼀个包含开发、运⾏、监控管理的满⾜SOA体系架构的轻量级J2EE应⽤平台是⼀个基于J2EE的多渠道整合平台开放式的⽤户可扩展的应⽤框架实现构件化的业务处理逻辑组装,基于基础组件的组装,完成业务构件的定义、提供了⼤量的基础组件及构件实现构件化的前端架构、AJAX技术,⽀持未来互联⽹技术、提供前端框架,实现丰富的⽤户交互提供基于JMX标准的监控管理能⼒提供基于模型维护的可是开发⼯具IDE4、 EMP适⽤于企业级电⼦商务应⽤的基础平台,该平台的特点是易于构建和基于模型5、控制器:连接输⼊、输出页⾯与业务处理逻辑的纽带根据请求决定:直接返回输⼊页⾯还是将输⼊页⾯更新到业务处理逻辑的数据模型然后执⾏逻辑处理流程,根据执⾏结果,返回相应的输出页⾯提供实现接⼝,让⽤户客户化实现⾃⼰的Controller系统提供的Controller:⼀般的Controller,具有输⼊、输出页⾯wizzard(向导)式Controller,允许多个页⾯之间来回切换,实现某个业务逻辑的处理多次请求式的controller,如某个业务逻辑在完成业务逻辑处理后,返回的页⾯中允许⽤户点击查看更多的信息,或者还有图表的请求6、MVC---数据校验与转换(1)服务器端数据的校验与转换:校验,提供相应的数据类型定义以及数据校验接⼝输⼊数据的转换:如带分隔符的全额输⼊域到后台需要的⽆分隔符及⼩数点的数据输出数据的转换,实现后台数据到显⽰数据的转换在Controller更新数据模型时实施校验与转换(2)客户端数据输⼊的校验与转换提供基础的javascript代码和标准接⼝,实现输⼊数据的校验包括:必输、格式和范围校验提供输⼊数据的转换功能(3)所有这些都是集中管理,使⽤中只需要设定⼀个参数:数据类型即可7、EMP业务逻辑处理容器---⾏业应⽤上的特性(1)⾦融⾏业应⽤⼤多有连接性需求与典型的信息管理类不同,⾦融应⽤不但要管理数据库,还要与外围系统完成数据交换有报⽂处理、通信协议处理的需求(2)业务处理的复杂度很⾼:相对于传统的信息管理类的处理,流程复杂很多硬编码⽅式的实现弊病:质量低,难维护(3)业务处理流程具有相似性:以单纯的接⼝定义+服务实现的⽅式来完成流程处理并不完全合适;重复性代码、流程的随需变动带来的硬代码的改造采⽤流程的抽象+配置化产⽣流程实例的⽅式更能满⾜真正的业务需要,流程的改变只是意味着配置的改变8、EMP访问控制模型:(1)框架在访问⼊⼝,包括渠道/表现逻辑访问⼊⼝,和业务逻辑访问⼊⼝提供访问控制模块插件的插⼊框架在这些⼊⼝处会⾸先调⽤插件检查访问权限,只有通过检查的才允许访问(2)平台提供的访问控制插件基于⽤户⾓⾊的访问控制插件基于访问处理时间的并发访问控制插件,允许⽤户根据业务分类进⾏分组控制,也可以单独控制9、访问控制器(1)实现的接⼝:com.ecc.emp.accesscontrol.AccessController(2)⽅法介绍:checkAccess--⼊⼝⽅法,检查请求是否合法,以及该请求是否符合该控制器的管辖范围beginAccess--控制对象的开始控制⽅法,如果checkAccess返回结果不为空,则进⼊endAccess--请求对象处理完毕10、EMP数据库能⼒---声明式事务处理(1)在业务逻辑的处理过程中往往涉及多次的数据库访问,⽽这些数据库访问要求在⼀个事务内完成,甚⾄在⼀个业务处理逻辑中还有嵌套的事务处理需求,基于这种需求 EMP提供了独⽴于应⽤逻辑的,独⽴事务管理模块通过EMP事务管理模块,提供声明式事务处理,同时应⽤也可⼲预事务的处理(2)EMP提供两种事物处理能⼒基于数据源的事务管理模块,实现基于单⼀数据源的事务统⼀管理基于JTA的多数据源的事务管理模块,实现多个数据源情况下的事务处理(需要JTA驱动程序⽀持)(3)EMP中每⼀个数据库访问相关的操作均可以声明事务11、EMP数据库能⼒----数据库服务组件(1)与EMP事务处理结合的数据库访问服务(2)使⽤应⽤服务器数据库连接池(3)也可以使⽤EMP平台⾃⾏提供的数据库连接池管理(4)数据库访问(数据处理)数据库表与平台数据的映射;数据库存储过程访问;数据库SQL访问(5)数据访问IDE向导功能12、EMP数据库能⼒----访问效率优化(1)运⾏时,全部⽣成预处理SQL语句对象(2)提供对所有查询的⾃动分页能⼒(3)提供动态查询SQL⽀持提供模板⼯具定制动态查询SQL;根据运⾏时数据信息,动态⽣成查询条件。
IBM+Rational+软件开发平台
UML 0.8 UML 1.0 UML 1.4
UML 1.5 UML 2.0
3
IBM Software Group | Rational software
IBM 软件开发平台
RWD (IBM Rational Web Developer for WebSphere Software v6 ) RAD (IBM Rational Application Developer for WebSphere Software v6) RSM (IBM Rational Software Modeler for WebSphere Software v6) RSA (IBM Rational Software Architect for WebSphere Software v6)
生命周期集成 可重用资产浏览器 创建模式与转换
报告生成" "报告生成 基于HTML和XML的数据抽 取与报告 丰富的打印功能 模型追踪性报告与定制查询
报告生成 UML 2.0 建模 ClearCase LT
创建模式与转换" "创建模式与转换" 内置UML到代码(EJB, Java,C++) 的转换示例 Selective language to UML harvesting 模式浏览器 提供创建模式与转换的框架与服务
IBM Software Group
IBM Rational 软件开发平台
2004 IBM Corporation
IBM Software Group | Rational software
议程
IBM Rational 软件开发平台概述 Eclipse平台概述 Rational Application Developer介绍& 演示 Rational Software Architect介绍& RSA 演示 开发TXSeries(CICS)应用程序
【计算机科学】_建模结构_期刊发文热词逐年推荐_20140724
科研热词 面向服务的架构 遗传规划 适应性设计 进化泛函网络 软件体系结构 转换规则 贝叶斯分类 谓词/变迁petri-net 蚁群系统 色度 自动机 肤色建模 系统演化 粒子滤波 移动机器人 神经元函数 硬件 直线变形模型 混合基函数 测试床 模型 概念模型 查找表 构件 智能体 方法学 操作系统 探索性建模 探索性分析模型 形式化描述 建模 应用集成 嵌套关系模式 多无人机系统 复杂适应系统 可见性图 动态模型 函数逼近 全局路径规划 元模型 信任基 似然概率 企业服务总线 仿真 亮度 交互行为 主动导航车辆 业务过程管理 不确定需求 wf-net pnml hla
推荐指数 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
2009年 序号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
2008年 序号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
科研热词 面向服务体系结构 软件质量 软件维护 软件工程 路由级internet拓扑 谱密度-特征值分布 谱密度 虚拟企业 节点 网构软件 移动agent 模型驱动 柔性 构件 服务逻辑 服务矩阵 无符号拉普拉斯谱分布 支持向量机 抽象质量类型 建模 层次化 复杂网络 合成服务建模 可存活性的实现 可存活性的分析 可存活性 信息融合 使能环 企业资源计划 uml(统一建模语言) uml profile jena internet拓扑建模
【微计算机信息】_模型驱动_期刊发文热词逐年推荐_20140723
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
推荐指数 3 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
2010年 序号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
科研热词 模型驱动 虚拟现实 管理信息系统 电网调度 可重构 动态建模 opc 驱动 领域分析 长距输送 通配符 运动捕捉 过滤驱动 软面板 软件项目 视频采集 视频口驱动 虚拟人 节能 网络化控制系统 组态 组件 管理模式 神经网络 模型驱动体系 模型描述 模型参考自适应控制 服务器 服务 显示 时间-事件-事件驱动方式 文件系统 数控系统 数据传输 接口 循环缓冲区存储 异步动态系统 开放 开关磁阻电机 建模方法 建模 平台模型 嵌入式虚拟仪器 导弹 客户端 多包传输 基础开发平台 可视化 变频调速 力学模型 内核 仿真系统
107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
oop mib模型 mdd matlab linux lcd控制器 ivi技术 i/o端口访问 guild gui evc dspace driverstudio dma聚拢/分散 controldesk ce can总线
科研热词 软件构件 虚拟现实 构件 平台独立模型 驱动程序 驱动控制器 飞行控制 面向服务体系结构 需求独立模型 转速测量 视景仿真 自适应 统一建模语言扩展 统一建模语言 移植性 硬件构件 直流电机 电视跟踪 电动轮椅 模型驱动框架 模型驱动构架 构件开发 机械式自动变速器 机器学习 服务组件架构 服务数据对象 数据驱动 数据服务总线 故障诊断 快速原型开发 底层构件 平台特定模型 差速转向 实时仿真系统 原理图 业务服务总线 vega rtw hla
【计算机应用研究】_软件过程_期刊发文热词逐年推荐_20140723
回归自动测试 合作慎思循环 合作 变换规则 变形监测 协同模型 动态规划 动态性 分析与决策 分布式调价 农业特定领域体系结构 内核 关系模式 共享交换 六西格玛设计 入侵攻击 免疫遗传算法 元学习 儿童讲故事 信息资源 信息管理系统 信息技术服务管理 信息技术基础设施库 体系结构 伪肯定率 伪否定率 优化 企业资源计划 企业应用集成 仿人机器人 人机交互 人工免疫学 人力资源调度 产品数据管理 云模型 个体软件过程 业务过程模型 业务模型 业务基础平台 专家系统 下一代互联网协议(ipv6) 三维角色建模 meta-种群 iddov流程 gt4 cocomo 3apl
科研热词 软件体系结构 模型 需求工程 软件过程改进 软件过程 网格 构件 工作流 决策支持系统 web服务 驱动程序 马尔可夫 领域应用系统 非线性 问题现象 问题对象 问题主体 错误管理 错误检测 遗传算法 通用串行总线 适应性 过程追踪 过程改进 过程建模 过程工程 过程优化 过程 软件项目绩效 软件项目管理 软件集成 软件过程工程元模型 软件缺陷 软件构件 软件开发方法 软件工具 软件复用 软件复杂性 软件升级 资源调度 资源描述框架 质量功能展开 评价模型 设计 记忆b细胞 计算机辅助集成技术 计算机取证 角色模型 角色建模语言 角色 视点集成 视点
组织符号学 组合服务 管理信息系统 策略 程序逆向流 程序断言 程序切片 程序分析 硬件透明编程模型 硬件方法 知识重用 知识表示 知识管理模型 知识管理 知识发现 知识共享 目标驱动软件度量 理想容错构件 瀑布模型 混合推理 活动图 模糊认知图分类器 模糊认知图 模糊概念图 模板化 模型驱动架构 模型驱动 模型 框架 格蕴涵代数 树匹配 标准软件过程 柔性业务对象模型 条件查询 机器学习 未确知理论 服务选择 服务质量 服务发现 普适环境 日志本体 无限隐马尔可夫模型 数据挖掘 数据一致性 敏捷实施 政策 接口矩阵 扩展标记语言解析器 扩展标记语言 归纳逻辑程序设计 引擎 开发平台 应急联动 工艺参数
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第 35 卷 Vol.35第 21 期 No.21计 算 机 工 程 Computer Engineering文章编号:1000—3428(2009)21—0042—03 文献标识码:A2009 年 11 月 November 2009中图分类号:TP311.52·软件技术与数据库·模型驱动的服务构件开发工具钱建平 1,沈备军 1,陈德来 2,3(1. 上海交通大学软件学院,上海 200240;2. 中国电信股份有限公司上海分公司,上海 200030; 3. 上海市网络化制造与企业信息化重点实验室,上海 200030) 摘 要:研究并开发一种模型驱动的服务构件开发工具,提出相应的服务构件开发流程。
该工具基于服务构件架构定义构件模型,验证模型的正确性,采用模型驱动开发技术自动生成代码框架,支持构件开发的 3 个关键步骤,即构件制作、构件组装和构件管理。
应用结果证 明,该工具能提高软件开发效率。
关键词:模型驱动架构;服务构件架构;基于构件的软件开发Development Tool for Service Component of Model DriveQIAN Jian-ping1, SHEN Bei-jun1, CHEN De-lai2,3(1. School of Software, Shanghai Jiaotong University, Shanghai 200240; 2. Shanghai Branch, China Telecom Corporation Limited, Shanghai 200030; 3. Shanghai Key Lab of Advanced Manufacturing Environment, Shanghai 200030) 【Abstract】This paper studies and develops a development tool for service component of model drive, and presents the relevent development flow of these service components. Based on Service Component Architecture(SCA), this tool defines the component model, validates the correctness of the model, and generates the code skeleton by using model drive development technology. The tool supports the three key procedures of component development——components making, components composition and components management. Practice results show that this tool can increase the software development efficiency. 【Key words】Model Drive Architecture(MDA); Service Component Architecture(SCA); Component-Based Software Development(CBSD)1随着计算机技术的飞速发展,软件开发人员面临着越来 越多的挑战,需要解决如何提高开发效率、降低维护费用的 问题。
因此, 基于构件的软件开发(Component-Based Software Development, CBSD)方法被提出并成为研究热点,它是软件 开发的发展方向。
对象管理组织于 2001 年提出模型驱动架构(Model Drive Architecture, MDA)[1],其核心思想如下:先抽象出与实现技 术 无 关、完整 描 述 业务 功 能 的 核 心平 台 无 关 模 型(Platform Independent Model, PIM), 然后针对不同实现技术制定多个转 换规则,通过此类转换规则和辅助工具将 PIM 转换成与具体 实 现 技 术 相 关 的 平 台 相 关 模 型 (Platform Specific Model, PSM),最后将经过充实的 PSM 转换成代码。
MDA 的目的是 分离业务建模与底层平台技术,以保护建模成果不受技术变 迁的影响。
目前,支持构件开发的工具很多,但多数没有融入 MDA 思想,如普元的 EOS Studio、复旦大学软件工程实验室的 JBCA-Tool[2]。
有些工具只支持构件开发中的构件组装部分, 对于构件制作、构件管理没有很好的支持,如文献[3]提出的 构件开发 MDA 工具。
很多构件开发工具拥有自己的构件模 型,支持异构构件的组装,但其制作的构件很难与其他标准 构件协作,如 JBCA-Tool。
本文实现一个完整的构件开发工具,并在该工具中融入 MDA 思想,使其能根据构件模型自动生成代码框架。
为了生 成具有良好互操作性的构件,本文使用构件模型国际标 准——服务构件架构(Service Component Architecture, SCA)。
—42—概述22.1构件模型及其验证基于 SCA 架构的构件模型 SCA 是一种面向服务构件的框架 [4], SOA 概念和传统 是 CBSD 方法相结合的产物。
SCA 规约的目标是提供一种在分 布式异构环境中组合多种实现技术不同构件的方法。
服务构件是 SCA 的基本组成元素和基本构建单位, 用于 实现业务逻辑,可以视为构建应用的积木。
用户能方便地把 传统 POJO、 无状态会话 BEAN 等包装成 SCA 中的服务构件。
本文构件模型完全基于 SCA 的服务构件模型。
该模型包 括 Service(服务)、 Reference(引用)和 Property(属性)3 个部分。
服务构件提供给别人的服务调用入口称为服务。
服务构 件本身可能需要调用别的服务,此类调用出口称为引用。
服 务和引用的调用规范都是 WSDL 或 Java 接口。
属性定义构件 所需的配置项,此类配置项的值可以在配置文件中指定。
本文定义了符合 SCA 规范的原子构件和复合构件。
原子 构件由一系列服务、引用和属性组成,它不会引用其他构件。
复合构件由一系列原子构件、服务、引用和属性构成,并在 这些原子构件之间进行一些连接。
如下代码给出了构件描述 文件的一个例子,composite 标记间的代码表示复合构件, component 标记间的代码表述原子构件。
<composite …> <component name="ComponentA"> 基金项目:国家“863”计划基金资助项目(2007AA01Z139) 作者简介:钱建平(1983-),男,硕士研究生,主研方向:模型驱动 开发,构件组装;沈备军,副教授、博士;陈德来,研究员、博士 收稿日期:2009-05-11 E-mail:qjianping02@<implementation.java class="cn.sjtu.ATMServiceImpl"/> <service name="ATMService"> <interface.java interface="cn.sjtu.ATMService"/> </service> <reference name="SecurityService"> <interface.java interface="cn.sjtu.SecurityService"/> </reference> <property type="ng.String" name="sn">true</property> </component> <component name="ComponentB"> <implementation.java class="cn.sjtu.SecurityServiceImpl"/> <service name="SecurityService"> <interface.java interface="cn.sjtu.SecurityService"/> </service> <reference name="Foo"/> </component> <component name="ComponentC"> <implementation.java class="cn.sjtu.Foo"/> </component> <wire source="ComponentA/SecurityService" target="Com ponentB/SecurityService"/> <wire source="ComponentB/Foo" target="ComponentC"/> </composite>构件模型的验证 构件模型验证的目的在于保证原子构件与复合构件模型 的有效性和完备性。
只有通过验证的构件才能生成有效和完 备的代码框架。
模型验证内容包括: (1)单个构件的验证。
主要是原子构件的验证,先验证描 述 文 件 是 否 为 合 法 的 XML 文 件 , 然 后 通 过 相 应 的 XML Schema 验证描述文件是否符合 Schema 定义要求的完备的 XML 文件,再验证定义的有实体的元素是否真实存在,例如 引用的 Java 类或 Spring bean 是否存在。
(2)构件间关系的验证。
主要是复合构件的验证,它需要 判断被组装的原子构件是否存在,2 个被组装的原子构件之 间的接口是否匹配。