国产 UML & MDA 工具开发实践

Preview:

DESCRIPTION

国产 UML & MDA 工具开发实践. Trufun software. 欢迎访问 http://www.trufun.net. 议题. 技术实践 UML建模工具开发实践 MDA 工具开发实践 管理和运营实践 Trufun 的实践之路 提问. UML 建模工具开发实践. 不打无准备的仗 系统架构 UML 建模工具开发三步曲 UML 建模工具开发高阶探讨 未来的 UML 建模工具. 不打无准备的仗. 心理准备 竞争对手是谁? IBM 、 Borland 投入不一定产出 资金准备 周期长 没有终点 投入巨大. 不打无准备的仗 ( 续 ). - PowerPoint PPT Presentation

Citation preview

国产 UML & MDA 工具开发实践

Trufun software

欢迎访问 http://www.trufun.net

议题 技术实践

UML 建模工具开发实践 MDA 工具开发实践

管理和运营实践 Trufun 的实践之路 提问

UML 建模工具开发实践 不打无准备的仗 系统架构 UML 建模工具开发三步曲 UML 建模工具开发高阶探讨 未来的 UML 建模工具

不打无准备的仗 心理准备

竞争对手是谁? IBM 、 Borland 投入不一定产出

资金准备 周期长 没有终点 投入巨大

不打无准备的仗 ( 续 )

技术准备 前沿领域: UML,MDA,XMI,CWM,MOF… 大型工具软件开发的软件工程技术

项目组织软件过程质量控制成本控制

其他相关技术:语言的正反向工程……

不打无准备的仗 ( 续 )

人才准备 项目组织 系统架构 系统设计 系统开发 测试 管理和营销

系统架构

PPI

(Plato PlugIn Interface)

OpenAPIOpenAPI

OpenIDEOpenIDE

Plato PlugIns

Kant MDA Engineer

Java MDA

C# MDA

Document Builder

Web Publisher

……

Plato Platform

Workbench

Window Manager

View Manager

Graph Framework

UML Foundation

Plato Core Compnent

建模工具开发三步曲 构建完备的图形系统 (Graph Framework) 构建 UML 对象类库 (UML Foundation) 基于二者,构建 UML IDE

第一步:构建图形系统 什么是图形系统?即矢量绘图系统。这是 UML 建

模的基础的基础。 成功范例: Visio. 这是目前公认做的最好的图形系

统。 参考开源代码: JGraph(Java) 。 JGraph 是一个强

力的,轻量级的,具有丰富特色的,而且彻底开放源码的图形构件。 建议:如果要使用开源代码,建议使用 BSD 协议、 LGP

L 协议或 Apache 相关协议代码。

第一步:构建图形系统 ( 续 ) 要实现的功能:

图形绘制:基本图形 : Text, Rect, Circle, Line…可连接的图形: Node, Edge.外部图像:如 bmp,wmf, emf….

图形交互Undo/RedoCut,Copy,PasteMove,Resize, Rotate…Text, Font, BgColor,ForeColor…Format: Nudge, Ordering, Align, Distribute…Group, UnGroup

第一步:构建图形系统 ( 续 ) 要实现的功能:

视图:Zoom out, Zoom In.OverView….

图形输入输出复制图像到 Clipboard保存到文件:最好是 XML 文件,或 SVG 。读取文件打印

其他 UI 支持:ToolBoxProperty Editor

第二步:构建 UML 对象类库 本质: MOF 在编程语言上的映射。 JMI : MOF 在 JAVA 语言上的映射。 建议使用 JMI 接口。并使用已经有的 JMI 实

现 ( 如 NetBeans 的实现 ) 。例如 poseidon就将原来 ArgoUML 采用的 nsuml 类库改为NetBeans 的实现。

第二步:构建 UML 对象类库( 续 )

特别提出的功能 要具备高度的扩展性:因为 UML 从 1.3 , 1.4 一

直到 2.0 ,对象及对象关系变化非常大。 要充分支持 UML Profile : Tag, Stereotype 。 和其他建模工具的模型共享:要支持 XMI 的导入

导出。 支持 UML 对象操作的还原: undo/redo

第三步:构建 UML IDE

将图形系统和 UML 对象类库完美的融合,构建一个完整的 UML 应用环境。

二者的结合架构: MVC 将图形看作是 UML 对象的视图 (View) 。 将 UML 对象看作是图形的 Model( 模型)。 一个 UML 对象可以有多个视图表示。

第三步:构建 UML IDE ( 续 )

针对 UML 定制图形环境 实现所有框图类型: Class Diagram, UseCase

Diagram, StateChart Diagram… 实现所有可见的 UML 对象视图:类、接口、依

赖、关联、用例、角色、状态、对象… 定制工具箱和工具生成规则:如类和类之间不可

以用实现关系连接、状态图不可以绘制类…

第三步:构建 UML IDE ( 续 )

创建 UI 作个漂亮的 Splash 创建主菜单:最好是可以 merge 的菜单。 创建快捷菜单 (Context Menu) :不同的元素显示不同的快捷菜单。

创建工具栏 创建工具箱 创建属性编辑器 创建其他窗口:如 Output Window, Model Browser…

UML 建模工具开发高阶探讨 高阶话题 1 :开放性。

必须有高度的开放性的原因:EclipseFirefox

UML 建模工具开发高阶探讨 ( 续 )

高阶话题 1 :开放性。 开放什么?

你的 UI 是否可以由用户随心所欲定制? UI包括主菜单、工具栏、工具箱、窗口、快捷菜单… ..

是否支持脚本:如果对你的应用进行扩展,都要进行编译,会吓退很多人。为什么 BASIC 语言那么受初学者欢迎,就是因为它不用编译。

是否公开 API :是否你系统的所有必须公开的对象都已经公开?如用户通过脚本来修改一个类的名字,或者用户可以通过脚本来打开一个外部文件。

UML 建模工具开发高阶探讨 ( 续 )

高阶话题 1 :开放性。 如何开放?

将所有 UI 的定义都放在外部文件中,文件最好是易读的 XML格式。

整理你的系统类库,公开所有必须公开的类、类的属性、方法以及详细的说明。

支持适合的脚本:如 JavaScript,VBScript等。定义插件结构。

UML 建模工具开发高阶探讨 ( 续 )

高阶话题 2 :强大的插件 现在或者将来必须具备的插件

Web Publish :并非所有的相关人员都安装建模工具,当你向其他人来介绍你的设计时,最好的办法将模型转换为网页。这样,每个人都可以看到你的成果。

Document Builder :如果在建模的同时,就能同时构造好相关文档(如需求分析、系统设计)该多好!

其他建模工具模型文件导入导出:如可以导入 Rose的 MDL 文件格式。

UML 建模工具开发高阶探讨 ( 续 )

高阶话题 2 :强大的插件 现在或者将来必须具备的插件

编程语言插件:现在的编程语言很多,但是起码可以支持常用的如 Java 、 C#等。

反向工程 模型验证 正向工程 其他:如 J2EE 的单元测试、部署等。 内嵌 IDE :如 Together(TCC ,可以直接编辑、编译、调试 ) 。 和其他 IDE 的集成:如和 JBuilder 的代码同步。

UML 建模工具开发高阶探讨 ( 续 )

高阶话题 2 :强大的插件 现在或者将来必须具备的插件

数据库插件:如 Rose 的 DataModeler 。当然,还是PowerDesigner 的数据建模功能最强。

XML插件:如 DTD 和 Schema 的建模支持。CVS…

UML 建模工具开发高阶探讨 ( 续 )

高阶话题 3 :谁集成谁? UML 工具集成编程工具 编程工具集成 UML 工具

未来的 UML 建模工具 手绘建模?

Ideogramic UML允许你用手建模

未来的 UML 建模工具 ( 续 )

集成、集成 集成到编程 IDE 全程建模 ( 和生命周期其他工具集成 ) 和过程集成 和行业集成

可执行的模型?模型虚拟机? MDA!

未来的 UML 建模工具 ( 续 )

简单的过程 交互设计 智能化 模型的重构 工具之间的模型交换 团队建模 向组件迁移注:本节来自作者和 UMLChina 的 think 合写的” U

ML 工具发展趋势”一文

MDA 工具开发实践 基于那个 UML IDE ? 系统架构:通用的语言生成框架 不仅仅生成代码--验证、编译、调试、测

试、部署、运行 谁来开发所有语言的 MDA ?--开放走向未来--真正的 MDA

基于那个 UML IDE ? IDE选择要点

是否支持 UML 扩展 (UML Profile)? 是否足够开放?

UI 扩展性完整的支撑 API

产品是否成熟?

基于那个 UML IDE ? ( 续 )

举例: Arcstyler 基于 Rose. Arcstyler 基于 MagicDraw AndroMDA 基于 MagicDraw Kant 基于 Plato

系统架构:通用的语言生成框架Runtime Model2Runtime Model2 XMIXMI

UML Model FacadeUML Model Facade

Runtime Model1Runtime Model1

MDA Cartridges

Java CartridgeJava Cartridge C# CartridgeC# Cartridge ……

Templates(Source, Build , Unit Test, Run…)Templates(Source, Build , Unit Test, Run…)

Source Code, Build File, Unit Test File, Run FileSource Code, Build File, Unit Test File, Run File

不仅仅生成代码 模型验证 编译调试 测试 部署 运行

谁来开发所有语言的 MDA ? 编程语言非常多每个人都可以开发自己喜欢的编程语言的 M

DA Cartridge脚本 VS 编译

走向未来--真正的 MDA

动作语义 UML 2.0 是否已经足够? 模型虚拟机?商业建模=软件开发的全部?

管理和运营实践潜在用户:谁在或可能使用 UML 建模工具和

MDA 工具? 目标用户:谁有可能购买 UML 建模工具和 M

DA 工具? 和竞争对手相比,你的优势和不足 生存的问题是最大的问题。酒香还怕巷子深距离成功只差一步

潜在用户确定随之 UML 建模工具自身功能的发展, UML

在软件开发中的作用的变化: UML 建模和代码没有关联 UML 模型可以生成代码框架 UML 建模工具可以和编程工具交互并迭代开发 UML 建模工具和编程工具集成 UML 模型虚拟机

可有可无必不可少最重要的

潜在用户确定 ( 续 )

无论采用哪一个软件过程理论,其中的哪个过程不需要 UML ?以 RUP 为例 需求:领域模型、业务模型、用例模型 分析:分析模型 设计:设计模型 实现:实现模型 测试:测试模型

潜在用户确定 ( 续 )

结论: 软件开发行业中技术人员几乎每个人都是 UML 建模工具

的潜在用户 和现在编程工具人手一套一样,不久的将来, UML 建模

工具也必将人手一套。 而 MDA 工具根据 PSM 关联的编程语言的不同,以及工

具自身功能的程度,会为不同阶层、不同需求的开发人员所选用。

在未来,如果模型虚拟机足够的成熟, MDA 工具将取代UML 建模工具和编程工具成为必备工具。

目标用户确定根据市场细分原则,进行自身产品定位和市场定位,

有针对性的调整产品研发策略和市场开发策略。市场细分:

高端用户:高投入高产出。目前不考虑。 IBM,Borland 中小软件企业:高度竞争市场。积极参与。利润所在。 个人:低价产品线。 大学和培训机构:免费赠与和合作。

和竞争对手相比,你的优势和不足优势

本土化 快速反应能力 产品短小精悍

和竞争对手相比,你的优势和不足( 续 )

不足 硬件:资金、人才、管理 品牌知名度 前沿技术的研发投入 产品 VS 解决方案 (全生命周期管理 )

生存的问题是最大的问题 产品是否足够成熟? 产品是否能够带来销售收入? 销售收入能否带来财务平衡? 销售收入能否带来盈利?短线?长线?

酒香还怕巷子深知道你的产品而没有购买,是产品研发不够;不知道你的产品而没有购买,是产品营销不够。

高投入营销 VS 低成本营销 基本的营销策略

口碑 网络 共享软件 免费

距离成功只差一步 产品足够好,但是由于成本的原因无法快速

和有效的推广。 应对策略

融资 改进营销策略

现在是一步,但时间的流逝会让它变成十步、百步、千步、万步……

Trufun 的实践之路 Trufun 的历史 Trufun 的产品 Trufun Plato -- UML 建模工具 Trufun Kant --MDA 工具

Trufun 的历史 04/1/30 :注册国际域名 www.trufun.net 。 04/2/2 : 开通网站 www.trufun.net 。 04/3/15 :在网站发布 Trufun Plato 1.0 试用版。 04/4/17 :开通网站论坛。 04/6/14 :发布 Trufun Plato 2.0 。 04/7/14 :开始建构 MDA 软件 Trufun Kant 。 04/11/7 :发布 Trufun Plato 2.8.5 05/2/27 :发布基于全开放式架构的 Trufun Plato 2005(V3.0) 及 Trufun

Kant 2005( V0.0.1, MDA for Java) 。网站全新改版。 05/5/29 :发布升级版 Trufun Plato 2005(V3.3) 及 Trufun Kant 2005( V0.3, MDA for C#) 。

05/6/1 :发布 Plato免费版。

Trufun 的产品楚凡科技目前拥有两大品牌 CASE 产品: UML 建模产品: Trufun Plato 。 Trufun Plato 是专业的 UML 建模工具,全面支持 OMG标准 UML V1.4 ,是全球第一款中文 UML 建模工具,是微软推出 .Net Framework 以来全球第一款基于 .Net 的大型桌面应用程序,是为中国 UML 用户量身定做的全中文用户界面的优秀产品。

MDA 产品: Trufun Kant 。 Trufun Kant 是基于 Trufun Plato 的 MDA工具,即中国第一个基于 UML 的模型驱动架构开发工具,也是是全球第一款中文 MDA 开发工具。 Trufun Kant覆盖了软件开发的各个环节,使用 Trufun Kant ,不仅可以通过 UML进行需求捕获、系统分析、系统设计,同时可以进行代码生成、编译、调试、运行、打包、部署, 以模型驱动整个软件开发,真正实现了以模型为中心的软件开发新模式,从软件工具层面支持开发者创建“可执行的模型”。

Trufun Plato 功能介绍优秀的 UML 建模支持方便高效的集成环境和易用使用的用户界面 功能强大的插件 设计模式支持 基于 OpenIDE 和 OpenAPI 的全开放式环境 其他:主题、随机附带的大量建模例程、全中文联机帮助和建模指南…

UML 建模支持--框图 Plato 支持 UML1.4 所有框图类型:

Class Diagram UseCase Diagram StateChart Diagram Activity Diagram Sequence Diagram Collaboration Diagram Component Diagram Deployment Diagram

UML 建模支持:类图

UML 建模支持:用例图

UML 建模支持:状态图

UML 建模支持:活动图

UML 建模支持:协作图

UML 建模支持:序列图

UML 建模支持:部署图

强大的元素规格定义对话框

UML 建模支持- UML Profile 支持

Tag 扩展:用户可针对每个模型元素定义自己的 Tag 及 Tag值

构造型 (Stereotype) 扩展: 可针对元素类型定制元素构造型 可以指定构造型的显示图标 可以指定构造型在框图上的显示样式,可以是外

部的 wmf 或 emf 文件

UML 建模支持-构造型扩展

UML 建模支持- XMI 支持 支持 XMI格式的模型文件交互

Trufun 模型可以导出为 XMI Trufun 可以导入 XMI格式的模型文件

优秀的建模环境和用户界面全中文的使用界面 美观的用户界面,类 Visual Studio.net 的 D

ockable界面组件,强大的属性编辑器,灵活的工具箱 ...

支持 Cut, Copy, Paste; 模型元素查找、定位功能。 视图的缩放、鸟瞰。 脚本和代码区支持语法高亮显示。

优秀的建模环境和用户界面 高效的拖放支持:可以通过拖放改变命名空间,也可以将模

型从模型导航器拖放到框图上。 灵活全面的图形编辑功能:各种对齐方式、各种自动图形分布、图形叠放次序、图形微移。另外也包括深受用户欢迎的类图自动布局功能。

支持打印,图像复制及图像文件导出功能; 支持用户工作空间 (Workspace) 的保存和打开。 支持模型文件的自动备份。使得 Trufun Plato更加健壮、更加安全

支持主题,预定义众多配色方案的主题,建模更加色彩缤纷!

优秀的建模环境和用户界面-启动页

功能强大的插件- Rose 模型导入 可以将 Rose 模型转换为 XMI格式 可以读入 XMI格式的模型

功能强大的插件-数据库反向工程通过 ODBC 支持所有数据库类型 可以选择要进行反向工程的表和视图。

功能强大的插件-文档构造通过“文档构造”功能生成各种文档(如需求分析、系统分析或设计)等。

可以直接生成 rtf格式。 提供各种文档模板和报表模板。

功能强大的插件-文档构造

功能强大的插件-Web Publish

将模型发布为网页。

功能强大的插件-实时代码生成 在修改模型的同时,生成选中的编程语言代

码。 支持 14种常用的编程语言。 C#, VB.Net, J#,

JScript.Net,C++.Net,C, Ansi C++, Delphi, Perl, Php, Python, Eiffel, Java, Caml等 14种语言 。

可以直观的帮助初学者理解模型和语言的映射关系。

功能强大的插件-实时代码生成

设计模式支持 支持 24种设计模式。包括所有 GoF 的设计模式。每个模式作为工具箱的一个工具,选中工具,在框

图选择插入位置,会弹出对话框,此时可对模式进行参数设置,“确定”后即可在类图上生成该模式。

模式支持全部采用脚本生成,用户可方便根据自己需求进行定制或添加自己的设计模式。

设计模式支持

全开放式的建模和二次开发环境 Trufun核心由 OpenIDE 和 OpenAPI 组成。 OpenIDE 构成界面和用户环境的基础。所有用户界面和用户环境都通过 OpenIDE 来配置完成。比如主菜单、快捷菜单、窗口、工具箱、工具栏、属性编辑器、资源、程序集。

OpenAPI 构成建模的核心组件。用户可以通过 OpenAPI 来操作系统对象、模型元素对象、并可以对系统行为进行扩展。

OpenIDE 和 OpenAPI由插件统一起来。在 Trufun看来,一切皆是插件。

全开放式的系统- OpenIDE 插件定义:

插件的常规信息:包括插件的显示名,开发者,版本等信息,显示在插件管理器列表中。

是否是语言插件:语言插件如 Java ,非语言插件如 Rose 模型导入。 插件的接口类: Trufun 定义了许多系统事件,如果插件希望可以侦听这

些事件,则必须实现插件接口。如果不需要理会这些事件,则无需实现插件接口。

主菜单:插件可以自行定义要显示在主菜单的菜单项。菜单项可以显示在已有的菜单下,也可以自行创建新菜单。

快捷菜单:菜单可以自行定义自己的快捷菜单。快捷菜单是按照当前选中元素类型区分的,用户可以针对不同的元素类型来定义自己的快捷菜单。比如,在 Java插件中,针对类元素可以添加“新建入口操作”的快捷菜单。

工具栏:插件可以定义的工具栏,也可以在已有工具栏上添加自己的工具。 工具箱:在 Trufun中,工具箱是根据框图类型划分的,当前框图类型不

同,则工具箱也不同。工具箱也可以根据用途的不同,区分为不同的工具类型,比如类图工具箱,就有常规类(画一些简单图形)和类图(绘制类、接口等类图元素)。而插件可以选择在需要的框图工具箱添加自己的工具甚至自己的工具类型。

全开放式的系统- OpenIDE 插件定义:

属性编辑器扩展:插件可以自定义在属性编辑器上显示的属性和属性的编辑。

资源:每个插件都可以定义自己的文本资源和图形资源,而且也可以进行国际化。在 Trufun中,所有资源都是 .resource格式,可以方便的使用一些工具编辑、修改。

程序集:如果你实现了插件接口,则需要将实现程序集 ( 即 dll) 在此指定,以便系统引入此动态库。

UML 属性定义:所谓 UML属性,实际上就是 Tag-标记。你可以在这里定义各种各样的 Tag 。如果你的插件是语言插件,则模型语言设置为此语言时,所有 Tag都会读进来。其实,可以认为是插件自己的某些特定配置。

构造型定义:如果是语言插件,你可以定义自己的构造型。比如 Java插件,你可以定义一个” Http Servlet” 的构造型,以及该构造型在模型导航器中显示的图标,也可以指定在视图中显示的元图像文件 (*.wmf 或 *.emf) 。

数据类型定义:语言插件在这里定义自己的数据类型。除了数据类型之外,还可以定义自己的类库。

全开放式的系统- OpenAPI

用户可以直接在脚本窗口通过 OpenAPI 来操作系统对象和系统行为。比如:在脚本窗口输入” Application.About();” ,然后运行脚本,即可看到打开了“关于”对话框。

最典型的使用 OpenAPI 开发的例子就是设计模式。所有设计模式都是通过脚本来调用 OpenAPI 实现。脚本在 \option\default\scripts 目录下。

OpenAPI 参考包含在 Trufun Plato 联机帮助中。另外, OpenIDE 的开发指南也已经发布,可以在网站下载。

Trufun Kant 功能介绍 需求分析:用例图。继承自 Trufun Plato 。 系统分析:业务流程图、类图、协作图、序列图等。

继承自 Trufun Plato 。 系统设计:类图、对象图、组件图、部署图。继承

自 Trufun Plato 。 生成源码和用户自定义源码 编译 单元测试 运行

用 Kant进行MDA(for Java)-设计

用户可以通过反向工程将已有项目和源码导入到模型中。

Kant 支持如下类型的 Java 反向工程: Java 源文件 Java字节码文件 Jar(Zip)

反向工程可保留方法体

用 Kant进行MDA(for Java)-设计

Kant &Plato 针对 Java 实现了 Java专用的规格定义对话框。下面是 Java 类的规格对话框:

用 Kant进行MDA(for Java)-设计

下面是 Java 类属性的规格对话框

用 Kant进行MDA(for Java)-设计

下面是 Java 类方法的规格对话框

用 Kant进行MDA(for Java)-设计

下面是 Java 接口的规格对话框

用 Kant进行MDA(for Java)-生成源码 使用 MDA 生成源码和用实时代码插件生成源码有太多的不同: 前者完全针对语言定制,考虑到语言的所有特性。而后

者只是简单的映射。 前者生成的源码包括“用户代码保护区”,在此区域内

的代码受到保护,但模型改变时再次生成代码时,保护区内代码不变。而后者不支持。

前者生成的源码可以在 Kant内直接进行编译、测试和运行。后者不可以。

前者可以生成项目文件,如 JBuilder 项目文件,用 JBuilder 可以直接打开。从而和 JBuilder紧密集成。

用 Kant进行MDA(for Java)-生成源码

在 Kant中提供语法高亮显示的编辑器来打开和编辑源码,并提供资源管理器来管理源码文件。

用 Kant进行MDA(for Java)-生成源码

在 Trufun Kant中,是以构造型为识别特征来进行源码生成。比如,一个普通类元素是不会被生成源码,但是,如果指定其构造型为 "JavaClass" ,就可以对它生成 Java 类;而如果将其构造型指定为 "TestSuite" ,就会对它生成一个测试类。

用 Kant进行MDA(for Java)-生成源码类型 构造型 说明 产生文件

Class

JavaClass 普通 Java 类 *.java

ValueObject 值对象 *.java

Enumeration用 Java 类实现枚举类型 *.java

TestSuite 单元测试类 *.java

Applet 小应用程序 *.java

JApplet JFC小应用程序 *.java

Generic Servlet

常规小服务程序 *.java

Http Servlet Http小服务程序 *.java

Interface

JavaInterface

普通 Java 接口 *.java

Model <None> 模型*.jpx , *.library : Jbuilder 项目文

件 *.bat,project.xml,*.properties : Ant

项目文件

用 Kant进行MDA(for Java)-编译 Kant集成了 JDK1.4 ,可以直接对生成的源

码进行编译。 编译结果显示在输出窗口。编译错误信息用红色字体显示。

用户也可以配置自己的项目属性,配置自己编译所使用的 JDK 和类库。

用 Kant进行MDA(for Java)-单元测试

Kant集成了优秀的 Java单元测试工具 JUnit ,并提供工具箱“ TestSuite” 对其进行建模支持。

在 Kant中,可以通过建模直接生成单元测试框架代码。

Kant 还提供“测试”的运行类型,提供直接在 Kant中进行单元测试的运行。

Kant 支持单元测试和集成测试。详情请查看 Kant 开发手册。

用 Kant进行MDA(for Java)-运行 目前 Kant 可支持以下类型的 Java 应用运行:

独立应用 (Application) 小应用程序 (Applet) 单元测试 (Test)

未来版本将支持 J2EE 应用的部署、运行等。

提问

关注楚凡科技!关注中国国产 CASE 软件的未来!

Recommended