MDD理论实践-iBizSys
2020年9月24日 更新
开启更多功能,提升办公效能

分享人:冯立元


分享主题:MDD理论实践-iBizSys


分享提纲:


  • MDD介绍
  • 没有iBizSys时开发遇到的难点
  • iBizSys的诞生及发展阶段
  • iBizSys架构
  • iBizSys模板理念及优势
  • iBizSys带来的好处


今天我要分享的就是基于MDD理论实践以及带来的好处。


MDD介绍


模型驱动开发Model Driven Development  (MDD) 是一种以模型作为主要工件的高级别抽象的开发方法,模型在工具的支持下,被作为核心资产被转换成代码或者可运行配置。


没有iBizSys时遇到的难点

我们公司最开始给给政府、航空、银行等做软件,老板就是做技术,技术很厉害。开始的时候公司的项目不多,几个项目负责人带领各自团队来做好自己的项目。

老板看到了大家的代码质量参差不齐代码结构不统一项目搭建困难重复性工作较多,代码中有很多不要写的增删该查需要手工去写,还总写出低水平bug

随着项目的增多,需要更多水平参差不齐的开发人员,项目不能够快速进行开发并交付。

iBizSys的诞生及发展阶段

老板是一个有技术追求的大牛,他当时有了解MDD的理论,所以他想创造出这样一个平台,改变现有的开发模式,实现项目快速交付,避免写一些重复低水平代码。基于这个想法有了iBizSys。

发展的三个阶段,解决的办法:


  • ibiz3.0

平台当于项目的基础架构,在上面自行配置实体、界面等,产品中留出扩展点。业务逻辑直接写数据库函数和存储过程,也可以修改代码,只是比较麻烦...仅仅是公司内部在使用。

  • 优点:
  • 提升了代码的复用性
  • 降低了低端代码bug的概率
  • 保证了代码的质量
  • 不懂代码的人也可以配置出想要的界面
  • 缺点
  • 可扩展性比较差。


  • ibiz5.0

基于模型,模板的架构方式,这时已经有客户认可基于平台的开发模式,德勤、安永、毕马威等客户都在使用。

  • 优点:
  • 固化领域内的模型资产
  • 模型资产自动转化前后端代码
  • 可扩展性较高,代码生成后,可自行扩展
  • 平台自动化发布和部署
  • 缺点
  • 生成的代码抽象层次较高,不熟悉项目结构的人,开发起来较困难。
  • 模板不开源,无法自行扩展模板


  • ibiz6.0

2019年末上线,现已开源,开放平台地址

  • 优点:
  • 实现完整的、规范的代码成果物的发布
  • 提供开放完善的模型API
  • 提供基础模板,前后端技术栈是流行的微服务框架
  • 模板可自行扩展或按照现有项目结构创建新模板
  • 在线预览代码与实际页面效果
  • 在线预览业务模型数据、模板和生成代码效果
  • 可视化建模工具参考VSCode的界面,更容易上手使用
  • 缺点
  • 可视化建模工具文档还在完善中...


iBizSys架构

  • iBizSys模型

模型为模型驱动开发Model Driven Development (MDD) 理论中抽象的开发工件,MDD主要围绕模型进行软件工程的开发,iBizSys模型构建于MDD理论之上,并对MDD中在架构、分析、设计、实现等各阶段模型间完善了衔接驱动模型,通过可视化的建模工具使得整个软件开发建模过程变得完整。

  • iBizSys模板

iBizSys XTempl模板是以一定的模板引擎为基础编写的一系列文本文档,编写过程中借助iBizSys模型提供的发布对象引擎对模型进行直接的消费,是iBizSys应用MDD理论中Model to code (M2C)过程实现的重要工具。

  • iBizSys模板产物

iBizSys模板产物指的是通过iBizSys软件云工厂(图1)自动化发布体系,结合已有的模型及模板实现M2C过程的最终产物,不仅仅是软件代码,更可以是软件工程中的测试用例、数据库脚本、运行脚本、软件开发文档等。

  • 架构图

图1(iBizSys软件云工厂)


iBizSys时序图

详细介绍一下上面图中的内容。业务或开发人员在可视化建模工具上选择相应的产品进行业务建模,业务模型管理中心保存模型数据,自动化车间根据模板(模板是需要提前写好)与模型来生成项目代码、项目文件、项目文档、脚本等并保存到产品配置管理中心。

  • 可视化建模工具
  • 产品配置:数据库信息、部署服务器信息等。
  • 后端建模:实体、实体关系、实体属性、实体行为、数据查询、代码表等
  • 前端建模:各种组件、视图。如:表单、表格、表单视图、表格视图、工具栏、首页等
  • 业务模型管理中心
  • 在可视化建模工具中建好模型后,业务模型数据会保存在业务模型管理中心,模型API开放,也可视化建模工具中可实时查看。
  • 怎么理解模型?模型如何使用?模型可以理解为数据,例如下图中的实体中存储模式,选择SQL,表中对应字段存储的值就是1,模板中可以通过模型API获取到这个值。通过这个值判断输出的代码不一样。
  • 组件模板管理中心
  • 模板是通过Freemarker语法模型API提供业务模型数据结合我们想要项目结构自行书写,样例如下图:
  • 组件模板管理中心管理模板,只需要在可视化建模工具中选择模板,自动化车间就会根据模型与模板构建出项目代码
  • 自动化车间
  • 结合模型与选择的模板自动生成前后端代码
  • 一键启动,可使用Jenkins自动部署到服务器
  • 模版与代码可在线预览
  • 前端模板与代码样例
  • 后端模板与代码样例
  • 产品配置管理中心
  • 产品配置管理中心会保存产品配置数据、自动化车间生成的代码等信息。

iBizSys模板理念及优势

iBizSys XTempl团队致力于解决项目工程中重复代码的手工编写以及手工代码的运行不确定性,相较于一般的代码发布工具片段性的模板,iBizSys XTempl在iBizSys强大的模型层支撑下,能够实现完整的、规范的代码成果物的发布。iBizSys XTempl注重模板的灵活度,鼓励用户针对具体的业务场景对模板进行二次开发,更可以把用户本身的已有的框架进行相应的模板化。iBizSys XTempl团队认为,模板的开发并非割离于软件工程项目开发过程,相反其应当贯穿于整个项目开发过程当中。使用模型、模板的可控性和稳定性,达成整个项目开发的高质高效。为达成模板开发与项目开发并行的目标我们做了以下工作:
提供完善的发布对象API文档及模型对象运行时。
提供强大的模板管理、开发工具。
iBizSys XTempl模板作为模型与成果物之间的桥梁,使得两者联系变得紧密,产物和设计的同步得到了保障。例如,对于常规项目开发交付的文档来说,常规情况下均在项目进行的最后才进行编写,一旦软件功能发生变化,文档必然要重新调整,iBizSys XTempl的文档模板,解决了这一困境,让文档与项目的开发伴随,模型发生变更文档同步变更,使得开发文档的编写不再成为负担。

iBizSys带来的好处

  • 业务人员直接参与业务领域模型的过程
  • 模型、模板形成固化资产
  • 项目管理可交由iBizSys6.0统一管理,可自动生成文档、脚本、测试用例等。
  • 极大的增加了开发效率,提前了项目交付时间
  • 从根本上避免了低端bug的产生
  • 最大程度减少了增删该查等重复性代码的编写
  • 模板只需要编写一次,就可以在不同的业务领域模型中使用
  • 业务领域模型也需要构建一次,就可以灵活替换成自己想要的技术栈(不同的模板)

写在最后

本次分享与公司无关,仅代表个人的思考,智慧老师说做软件要站在架构的角度去思考,所以有了今天的这次分享文档,如果有对此方面感兴趣的,欢迎交流!