分享人:冯立元
分享主题:MDD理论实践-iBizSys
分享提纲:
今天我要分享的就是基于MDD理论实践以及带来的好处。
模型驱动开发Model Driven Development (MDD) 是一种以模型作为主要工件的高级别抽象的开发方法,模型在工具的支持下,被作为核心资产被转换成代码或者可运行配置。
我们公司最开始给给政府、航空、银行等做软件,老板就是做技术,技术很厉害。开始的时候公司的项目不多,几个项目负责人带领各自团队来做好自己的项目。
老板看到了大家的代码质量参差不齐,代码结构不统一,项目搭建困难,重复性工作较多,代码中有很多不要写的增删该查需要手工去写,还总写出低水平bug。
随着项目的增多,需要更多水平参差不齐的开发人员,项目不能够快速进行开发并交付。
老板是一个有技术追求的大牛,他当时有了解MDD的理论,所以他想创造出这样一个平台,改变现有的开发模式,实现项目快速交付,避免写一些重复低水平代码。基于这个想法有了iBizSys。
发展的三个阶段,解决的办法:
平台当于项目的基础架构,在上面自行配置实体、界面等,产品中留出扩展点。业务逻辑直接写数据库函数和存储过程,也可以修改代码,只是比较麻烦...仅仅是公司内部在使用。
基于模型,模板的架构方式,这时已经有客户认可基于平台的开发模式,德勤、安永、毕马威等客户都在使用。
2019年末上线,现已开源,开放平台地址
模型为模型驱动开发Model Driven Development (MDD) 理论中抽象的开发工件,MDD主要围绕模型进行软件工程的开发,iBizSys模型构建于MDD理论之上,并对MDD中在架构、分析、设计、实现等各阶段模型间完善了衔接驱动模型,通过可视化的建模工具使得整个软件开发建模过程变得完整。
iBizSys XTempl模板是以一定的模板引擎为基础编写的一系列文本文档,编写过程中借助iBizSys模型提供的发布对象引擎对模型进行直接的消费,是iBizSys应用MDD理论中Model to code (M2C)过程实现的重要工具。
iBizSys模板产物指的是通过iBizSys软件云工厂(图1)自动化发布体系,结合已有的模型及模板实现M2C过程的最终产物,不仅仅是软件代码,更可以是软件工程中的测试用例、数据库脚本、运行脚本、软件开发文档等。
图1(iBizSys软件云工厂)
iBizSys时序图
详细介绍一下上面图中的内容。业务或开发人员在可视化建模工具上选择相应的产品进行业务建模,业务模型管理中心保存模型数据,自动化车间根据模板(模板是需要提前写好)与模型来生成项目代码、项目文件、项目文档、脚本等并保存到产品配置管理中心。
iBizSys XTempl团队致力于解决项目工程中重复代码的手工编写以及手工代码的运行不确定性,相较于一般的代码发布工具片段性的模板,iBizSys XTempl在iBizSys强大的模型层支撑下,能够实现完整的、规范的代码成果物的发布。iBizSys XTempl注重模板的灵活度,鼓励用户针对具体的业务场景对模板进行二次开发,更可以把用户本身的已有的框架进行相应的模板化。iBizSys XTempl团队认为,模板的开发并非割离于软件工程项目开发过程,相反其应当贯穿于整个项目开发过程当中。使用模型、模板的可控性和稳定性,达成整个项目开发的高质高效。为达成模板开发与项目开发并行的目标我们做了以下工作:
提供完善的发布对象API文档及模型对象运行时。
提供强大的模板管理、开发工具。
iBizSys XTempl模板作为模型与成果物之间的桥梁,使得两者联系变得紧密,产物和设计的同步得到了保障。例如,对于常规项目开发交付的文档来说,常规情况下均在项目进行的最后才进行编写,一旦软件功能发生变化,文档必然要重新调整,iBizSys XTempl的文档模板,解决了这一困境,让文档与项目的开发伴随,模型发生变更文档同步变更,使得开发文档的编写不再成为负担。
本次分享与公司无关,仅代表个人的思考,智慧老师说做软件要站在架构的角度去思考,所以有了今天的这次分享文档,如果有对此方面感兴趣的,欢迎交流!