• 1. UML建模工具开发实践Trufun software
  • 2. 议题你准备好了吗? UML建模工具开发三步曲 UML建模工具开发高阶探讨 我们的实践:Trufun Plato 提问
  • 3. 你准备好了吗?-必备条件个人 你真的了解UML吗? 从OMG下载所有相关的UML白皮书和参考手册,能读多少遍,就读多少遍. 将相关UML & MDA普及网站的所有UML技术文章通读一遍,如UMLChina.MDAChina,www.trufun.net。 你知道你未来的产品是什么样子吗? 熟练操作IBM Rational Rose、Borland Together,或Trufun Plato。知己知彼。
  • 4. 你准备好了吗?-必备条件个人 你有足够的软件开发经验吗? 精通架构设计、对常用设计模式烂熟于心。 最起码精通一门语言。具体什么语言都无所谓。推荐Java,C#. 你有足够的时间吗? 如果是全职开发,有一个成型的DEMO要1-2年。 如果是兼职,要3-5年。每天要坚持2个小时。 你有足够的资金养家糊了口吗? 因为你的这项投入5年之内赚钱的可能几乎为零,甚至永远为零。
  • 5. 你准备好了吗?-必备条件公司 你有足够的资金吗? 想一想IBM收购Rational的出价, Borland收购Together的价码,掂量一下你的钱袋! 你有胆量和软件巨人直面较量吗? 如果你的对手是Microsoft, IBM, Borland,你还能睡着觉吗? 你有顶尖的人才吗? 精通UML的人才:类似Rational的三剑客。 顶尖的系统架构师:没有的话,还是不要做了。 丰富经验的高级软件工程师。
  • 6. 建模工具开发三步曲构建完备的图形系统 构建UML对象类库 基于二者,构建UML IDE
  • 7. 第一步:构建图形系统什么是图形系统?即矢量绘图系统。这是UML建模的基础的基础。 成功范例:Visio.这是目前公认做的最好的图形系统。 参考开源代码:JGraph(Java)。JGraph是一个强力的,轻量级的,具有丰富特色的,而且彻底开放源码的图形构件。 建议:如果要使用开源代码,建议使用BSD协议、LGPL协议或Apache相关协议代码。
  • 8. 第一步:构建图形系统要实现的功能: 图形绘制: 基本图形: Text, Rect, Circle, Line… 可连接的图形:Node, Edge. 外部图像:如bmp,wmf, emf…. 图形交互 Undo/Redo Cut,Copy,Paste Move,Resize, Rotate… Text, Font, BgColor,ForeColor… Format: Nudge, Ordering, Align, Distribute… Group, UnGroup
  • 9. 第一步:构建图形系统要实现的功能: 视图: Zoom out, Zoom In. OverView…. 图形输入输出 复制图像到Clipboard 保存到文件:最好是XML文件,或SVG。 读取文件 打印 其他UI支持: ToolBox Property Editor
  • 10. 第二步:构建UML对象类库如果使用面向对象语言就要采用OOA和OOD。 UML对象很多,关系也很复杂。 建议使用JMI接口。并使用已经有的JMI实现(如NetBeans的实现)。例如poseidon就将原来ArgoUML采用的nsuml类库改为NetBeans的实现。
  • 11. 第二步:构建UML对象类库特别提出的功能 要具备高度的扩展性:因为UML从1.3,1.4一直到2.0,对象及对象关系变化非常大。 要充分支持UML Profile :Tag, Stereotype。 和其他建模工具的模型共享:要支持XMI的导入导出。 支持UML对象操作的还原:undo/redo
  • 12. 第三步:构建UML IDE将图形系统和UML对象类库完美的融合,构建一个完整的UML应用环境。 二者的结合架构:MVC 将图形看作是UML对象的视图(View)。 将UML对象看作是图形的Model(模型)。 一个UML对象可以有多个视图表示。
  • 13. 第三步:构建UML IDE针对UML定制图形环境 实现所有框图类型:Class Diagram, UseCase Diagram, StateChart Diagram… 实现所有可见的UML对象视图:类、接口、依赖、关联、用例、角色、状态、对象… 定制工具箱和工具生成规则:如类和类之间不可以用实现关系连接、状态图不可以绘制类…
  • 14. 第三步:构建UML IDE创建UI 作个漂亮的Splash 创建主菜单:最好是可以merge的菜单。 创建快捷菜单(Context Menu):不同的元素显示不同的快捷菜单。 创建工具栏 创建工具箱 创建属性编辑器 创建其他窗口:如Output Window, Model Browser…
  • 15. 建模工具开发三步曲好了,现在已经有了功能基本完备的UML建模工具了。 下面要做的是: 进行严格的单元测试和系统测试。 制作安装程序 如果是个人,可以提交到各下载网站。同时也可以创建自己的网站,来宣传。 如果是公司,可以做测试版,进行公测。之后,就可以进行媒体宣传了。
  • 16. UML建模工具开发高阶探讨如果只是开发一个UML工具来玩一玩的话,前面做的已经足够! 如果,你要做的是一个商业的,可以拿来和Rose、together相提并论,最重要的是,可以让用户心甘情愿的购买的话,那么,你要做的还有很多!
  • 17. UML建模工具开发高阶探讨高阶话题1:开放性。 必须有高度的开放性的原因:为什么现在eclipse现在成为最有人气,最有前景的IDE工具?就是因为它的开放性,全世界有那么多人来为它写插件,来丰富它的应用!更有Mozilla的firefox,更是眼前的成功范例!
  • 18. UML建模工具开发高阶探讨高阶话题1:开放性。 开放什么? 你的UI是否可以由用户随心所欲定制?UI包括主菜单、工具栏、工具箱、窗口、快捷菜单….. 是否支持脚本:如果对你的应用进行扩展,都要进行编译,会吓退很多人。为什么BASIC语言那么受初学者欢迎,就是因为它不用编译。 是否公开API:是否你系统的所有必须公开的对象都已经公开?如用户通过脚本来修改一个类的名字,或者用户可以通过脚本来打开一个外部文件。
  • 19. UML建模工具开发高阶探讨高阶话题1:开放性。 如何开放? 将所有UI的定义都放在外部文件中,文件最好是易读的XML格式。 整理你的系统类库,公开所有必须公开的类、类的属性、方法以及详细的说明。 支持适合的脚本:如JavaScript,VBScript等。 定义插件结构。
  • 20. UML建模工具开发高阶探讨高阶话题2:强大的插件 现在或者将来必须具备的插件 Web Publish:并非所有的相关人员都安装建模工具,当你向其他人来介绍你的设计时,最好的办法将模型转换为网页。这样,每个人都可以看到你的成果。 Document Builder:如果在建模的同时,就能同时构造好相关文档(如需求分析、系统设计)该多好! 其他建模工具模型文件导入导出:如可以导入Rose的MDL文件格式。
  • 21. UML建模工具开发高阶探讨高阶话题2:强大的插件 现在或者将来必须具备的插件 编程语言插件:现在的编程语言很多,但是起码可以支持常用的如Java、C#等。 反向工程 模型验证 正向工程 其他:如J2EE的单元测试、部署等。 内嵌IDE:如Together(TCC,可以直接编辑、编译、调试)。 和其他IDE的集成:如和JBuilder的代码同步。
  • 22. UML建模工具开发高阶探讨高阶话题2:强大的插件 现在或者将来必须具备的插件 数据库插件:如Rose的DataModeler。当然,还是PowerDesigner的数据建模功能最强。 XML插件:如DTD和Schema的建模支持。 CVS …
  • 23. UML建模工具开发高阶探讨高阶话题3:未来的UML工具 支持UML 2.0 MDA 可执行的模型 MDA距离我们还有多远? 是期盼?还是恐惧?
  • 24. 我们的实践:Trufun PlatoTrufun Plato就是我们实践的产物。 历时3年,才有了初步为大家认可的Trufun Plato 2005. Trufun Plato的路还很长。
  • 25. 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/3/24:发布升级版Trufun Plato 2005(V3.1)及Trufun Kant 2005(V0.1)。
  • 26. 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进行需求捕获、系统分析、系统设计,同时可以进行代码生成、编译、调试、运行、打包、部署, 以模型驱动整个软件开发,真正实现了以模型为中心的软件开发新模式,从软件工具层面支持开发者创建“可执行的模型”。
  • 27. Trufun Plato 功能介绍优秀的UML建模支持 方便高效的集成环境和易用使用的用户界面 功能强大的插件 设计模式支持 基于OpenIDE和OpenAPI的全开放式环境 其他:主题、随机附带的大量建模例程、全中文联机帮助和建模指南…
  • 28. UML建模支持--框图Plato支持UML1.4所有框图类型: Class Diagram UseCase Diagram StateChart Diagram Activity Diagram Sequence Diagram Collaboration Diagram Component Diagram Deployment Diagram
  • 29. UML建模支持:类图
  • 30. UML建模支持:用例图
  • 31. UML建模支持:状态图
  • 32. UML建模支持:活动图
  • 33. UML建模支持:协作图
  • 34. UML建模支持:序列图
  • 35. UML建模支持:部署图
  • 36. 强大的元素规格定义对话框
  • 37. UML建模支持-UML Profile支持Tag扩展:用户可针对每个模型元素定义自己的Tag及Tag值 构造型(Stereotype)扩展: 可针对元素类型定制元素构造型 可以指定构造型的显示图标 可以指定构造型在框图上的显示样式,可以是外部的wmf或emf文件
  • 38. UML建模支持-构造型扩展
  • 39. UML建模支持-XMI支持支持XMI格式的模型文件交互 Trufun模型可以导出为XMI Trufun可以导入XMI格式的模型文件
  • 40. 优秀的建模环境和用户界面全中文的使用界面 美观的用户界面,类Visual Studio.net 的Dockable界面组件,强大的属性编辑器,灵活的工具箱... 支持Cut, Copy, Paste; 模型元素查找、定位功能。 视图的缩放、鸟瞰。 脚本和代码区支持语法高亮显示。
  • 41. 优秀的建模环境和用户界面高效的拖放支持:可以通过拖放改变命名空间,也可以将模型从模型导航器拖放到框图上。 灵活全面的图形编辑功能:各种对齐方式、各种自动图形分布、图形叠放次序、图形微移。另外也包括深受用户欢迎的类图自动布局功能。 支持打印,图像复制及图像文件导出功能; 支持用户工作空间(Workspace)的保存和打开。 支持模型文件的自动备份。使得Trufun Plato更加健壮、更加安全 支持主题,预定义众多配色方案的主题,建模更加色彩缤纷!
  • 42. 优秀的建模环境和用户界面-启动页
  • 43. 功能强大的插件-Rose模型导入可以将Rose模型转换为XMI格式 可以读入XMI格式的模型
  • 44. 功能强大的插件-数据库反向工程通过ODBC支持所有数据库类型 可以选择要进行反向工程的表和视图。
  • 45. 功能强大的插件-文档构造通过“文档构造”功能生成各种文档(如需求分析、系统分析或设计)等。 可以直接生成rtf格式。 提供各种文档模板和报表模板。
  • 46. 功能强大的插件-文档构造
  • 47. 功能强大的插件-Web Publish将模型发布为网页。
  • 48. 功能强大的插件-实时代码生成在修改模型的同时,生成选中的编程语言代码。 支持14种常用的编程语言。C#, VB.Net, J#, JScript.Net,C++.Net,C, Ansi C++, Delphi, Perl, Php, Python, Eiffel, Java, Caml等14种语言 。 可以直观的帮助初学者理解模型和语言的映射关系。
  • 49. 功能强大的插件-实时代码生成
  • 50. 设计模式支持支持24种设计模式。包括所有GoF的设计模式。 每个模式作为工具箱的一个工具,选中工具,在框图选择插入位置,会弹出对话框,此时可对模式进行参数设置,“确定”后即可在类图上生成该模式。 模式支持全部采用脚本生成,用户可方便根据自己需求进行定制或添加自己的设计模式。
  • 51. 设计模式支持
  • 52. 全开放式的建模和二次开发环境Trufun核心由OpenIDE和OpenAPI组成。 OpenIDE构成界面和用户环境的基础。所有用户界面和用户环境都通过OpenIDE来配置完成。比如主菜单、快捷菜单、窗口、工具箱、工具栏、属性编辑器、资源、程序集。 OpenAPI构成建模的核心组件。用户可以通过OpenAPI来操作系统对象、模型元素对象、并可以对系统行为进行扩展。 OpenIDE和OpenAPI由插件统一起来。在Trufun看来,一切皆是插件。
  • 53. 全开放式的系统-OpenIDE插件定义: 插件的常规信息:包括插件的显示名,开发者,版本等信息,显示在插件管理器列表中。 是否是语言插件:语言插件如Java,非语言插件如Rose模型导入。 插件的接口类:Trufun定义了许多系统事件,如果插件希望可以侦听这些事件,则必须实现插件接口。如果不需要理会这些事件,则无需实现插件接口。 主菜单:插件可以自行定义要显示在主菜单的菜单项。菜单项可以显示在已有的菜单下,也可以自行创建新菜单。 快捷菜单:菜单可以自行定义自己的快捷菜单。快捷菜单是按照当前选中元素类型区分的,用户可以针对不同的元素类型来定义自己的快捷菜单。比如,在Java插件中,针对类元素可以添加“新建入口操作”的快捷菜单。 工具栏:插件可以定义的工具栏,也可以在已有工具栏上添加自己的工具。 工具箱:在Trufun中,工具箱是根据框图类型划分的,当前框图类型不同,则工具箱也不同。工具箱也可以根据用途的不同,区分为不同的工具类型,比如类图工具箱,就有常规类(画一些简单图形)和类图(绘制类、接口等类图元素)。而插件可以选择在需要的框图工具箱添加自己的工具甚至自己的工具类型。
  • 54. 全开放式的系统-OpenIDE插件定义: 属性编辑器扩展:插件可以自定义在属性编辑器上显示的属性和属性的编辑。 资源:每个插件都可以定义自己的文本资源和图形资源,而且也可以进行国际化。在Trufun中,所有资源都是.resource格式,可以方便的使用一些工具编辑、修改。 程序集:如果你实现了插件接口,则需要将实现程序集(即dll)在此指定,以便系统引入此动态库。 UML属性定义:所谓UML属性,实际上就是Tag-标记。你可以在这里定义各种各样的Tag。如果你的插件是语言插件,则模型语言设置为此语言时,所有Tag都会读进来。其实,可以认为是插件自己的某些特定配置。 构造型定义:如果是语言插件,你可以定义自己的构造型。比如Java插件,你可以定义一个”Http Servlet”的构造型,以及该构造型在模型导航器中显示的图标,也可以指定在视图中显示的元图像文件(*.wmf或*.emf)。 数据类型定义:语言插件在这里定义自己的数据类型。除了数据类型之外,还可以定义自己的类库。
  • 55. 全开放式的系统-OpenAPI用户可以直接在脚本窗口通过OpenAPI来操作系统对象和系统行为。比如:在脚本窗口输入” Application.About();”,然后运行脚本,即可看到打开了“关于”对话框。 最典型的使用OpenAPI开发的例子就是设计模式。所有设计模式都是通过脚本来调用OpenAPI实现。脚本在\option\default\scripts目录下。 OpenAPI参考包含在Trufun Plato联机帮助中。 另外,OpenIDE的开发指南也已经发布,可以在网站下载。
  • 56. Trufun Kant 功能介绍需求分析:用例图。继承自Trufun Plato。 系统分析:业务流程图、类图、协作图、序列图等。继承自Trufun Plato。 系统设计:类图、对象图、组件图、部署图。继承自Trufun Plato。 生成源码和用户自定义源码 编译 单元测试 运行
  • 57. 用Kant进行MDA(for Java)-设计用户可以通过反向工程将已有项目和源码导入到模型中。 Kant支持如下类型的Java反向工程: Java源文件 Java字节码文件 Jar(Zip) 反向工程可保留方法体
  • 58. 用Kant进行MDA(for Java)-设计Kant &Plato针对Java实现了Java专用的规格定义对话框。下面是Java类的规格对话框:
  • 59. 用Kant进行MDA(for Java)-设计下面是Java类属性的规格对话框
  • 60. 用Kant进行MDA(for Java)-设计下面是Java类方法的规格对话框
  • 61. 用Kant进行MDA(for Java)-设计下面是Java接口的规格对话框
  • 62. 用Kant进行MDA(for Java)-生成源码使用MDA生成源码和用实时代码插件生成源码有太多的不同: 前者完全针对语言定制,考虑到语言的所有特性。而后者只是简单的映射。 前者生成的源码包括“用户代码保护区”,在此区域内的代码受到保护,但模型改变时再次生成代码时,保护区内代码不变。而后者不支持。 前者生成的源码可以在Kant内直接进行编译、测试和运行。后者不可以。 前者可以生成项目文件,如JBuilder项目文件,用JBuilder可以直接打开。从而和JBuilder紧密集成。
  • 63. 用Kant进行MDA(for Java)-生成源码在Kant中提供语法高亮显示的编辑器来打开和编辑源码,并提供资源管理器来管理源码文件。
  • 64. 用Kant进行MDA(for Java)-生成源码在Trufun Kant中,是以构造型为识别特征来进行源码生成。比如,一个普通类元素是不会被生成源码,但是,如果指定其构造型为"JavaClass",就可以对它生成Java类;而如果将其构造型指定为"TestSuite",就会对它生成一个测试类。
  • 65. 用Kant进行MDA(for Java)-生成源码类型构造型说明产生文件ClassJavaClass普通Java类*.javaValueObject值对象*.javaEnumeration用Java类实现枚举类型*.javaTestSuite单元测试类*.javaApplet小应用程序*.javaJAppletJFC小应用程序*.javaGeneric Servlet常规小服务程序*.javaHttp ServletHttp小服务程序*.javaInterfaceJavaInterface普通Java接口*.javaModel模型*.jpx, *.library: Jbuilder项目文件 *.bat,project.xml,*.properties: Ant项目文件
  • 66. 用Kant进行MDA(for Java)-编译Kant集成了JDK1.4,可以直接对生成的源码进行编译。 编译结果显示在输出窗口。编译错误信息用红色字体显示。 用户也可以配置自己的项目属性,配置自己编译所使用的JDK和类库。
  • 67. 用Kant进行MDA(for Java)-单元测试Kant集成了优秀的Java单元测试工具JUnit,并提供工具箱“TestSuite”对其进行建模支持。 在Kant中,可以通过建模直接生成单元测试框架代码。 Kant还提供“测试”的运行类型,提供直接在Kant中进行单元测试的运行。 Kant支持单元测试和集成测试。 详情请查看Kant开发手册。
  • 68. 用Kant进行MDA(for Java)-运行目前Kant可支持以下类型的Java应用运行: 独立应用(Application) 小应用程序(Applet) 单元测试(Test) 未来版本将支持J2EE应用的部署、运行等。
  • 69. 提问关注楚凡科技! 关注中国国产软件的未来!