iModel 模型驱动软件开发平台 -开启信息管理软件DIY之旅(转)

一,    软件开发历史、现状和探索。

自从有了计算机,人类的工作就变的轻松了,生活就变的丰富多彩了,这种神奇的机器在各行各业中发挥着巨大的作用,计算机极大的扩展了人类大脑的能力,甚至可以说计算机的出现加速了人类社会的发展进程。 计算机之所以不同与一般的机械设备,就是因为它有“灵魂”的,如果说硬件是计算机“身体”,而控制计算机的软件就是计算机的“灵魂”。 软件是在为了满足工作和生活需求而模拟现实世界的运作方式而运行,其目的就是更好的服务于人们的工作和生活, 用户主要就是通过软件来与计算机进行交流。现在的人们希望把越来越复杂的工作交给计算机来进行处理,这就对软件提出来更多、更复杂的需求。

编程人员一直希望找到一种终级的软件开发方法,如同搭积木一样,随心所欲的组合成自己想要的软件,但到现在为止,能做到的还是在编程语言级别,也就是代码级别的复用。如何在给定成本、进度的前提下,开发出具有可修改性、有效性、可靠性、可理解性、可维护性、可重用、可适应性、可移植性、可追踪性和可互操作性并且满足用户需求的软件产品,一直都是编程人员追求的目标。为了实现这些宏伟的目标,编程语言和编程方法一直都在不停的进化,从最早时期面向机器的二进制指令、汇编语言,到面向过程时期的C 语言、pascal 、fortran 、COBOL 、basic 等,从面向上世纪60 年代末面向对象的,到后来面向接口、面向模型等等的编程方法,越来越简化了编程人员的工作,提高了编程的效率,当然,再怎么发展也少不了编程语言,因为编程语言是程序的原子,我们现在缺少的就一种粗粒度的像搭积木一样的开发方法。在DIY 的概念形成之后,越来越多的编程人员开始思考如何让软件开发也如同积木DIY 一样轻松快乐,如何将DIY 精神融入我们的编程世界。

其实从搭积木中找启示,不如从计算机硬件中找答案,目前,DIY 这个词用得最多的地方就是电脑市场,一进电脑城,你听得最多的词就是DIY !电脑城所说的DIY 是自己攒机,就是购买电脑的一些主要的配件,如主机里的CPU 、主板、内存、硬盘等等,将他们经过自己或者是电脑技术人员组装起来,成为一台完整的电脑。电脑DIY 讲究的是适合自己的搭配以及性价比,只要购买者给出一个价位和主要用途,然后通过配件的选择和搭配,装出一台适合他的电脑。DIY 的电脑从一定程度上节省了用户的开支,并且还提高了其灵活度。

计算机都已经可以DIY 了,这肯定不能说是因为计算机如同积木一样简单,计算机硬件一点也不比软件简单,只是硬件可变化的部分太少,但至少可以给我们一些启示,比如标准的接口规范,一块母版(主板)来连接各种外接或内置设备,其实依照这种办法,现在已有各种插件式编程框架,可以快速的少量的编程来实现软件的开发和功能扩展,这种插件式编程是一种不错的办法,不过插件的粒度还是太细,复用还是在代码级别,开发工作还是得大量的编码,就如同diy 电脑时还需要攒机的人去用焊机焊结一些连线一样,这种插件式编程还不是我们想要的软件DIY 终级方法。

还有一种的开发方法就是模型驱动开发。自从2001 年被OMG (Object Management Group 国际对象管组织)提出以后,“随风潜入夜,润物细无声”,未见轰轰烈烈宣传,各大厂商却惊人一致地争相跟进,关于模型驱动开发的话题转眼之间在网络上也如火如荼地繁荣起来了。模型驱动开发,将软件的构成要素分别建模定义,再将模型生成对应代码,最后编译代码为目标软件,这是一种理想状态的开发方法。为软件建模再转换成目标语言的代码,再编译,不过模型有改变的时候这个过程逆向就有点困难了,也就是说必须全部从模型到代码,如果代码的修改也能反映到模型中那也不错,可惜每种编程语言都很复杂,从代码生成模型不比二种开发语言的转换来的简单,而一般的模型的粒度又比较大,生成代码也是部分,不可能全面,如果能全部生成,那这也不叫模型了,可以叫另一种语言,进一步说是可视化语言或符号化语言,其主要目的之一可能就是便于开发团队、用户沟通之用,或辅助编程之用,这种开发方法步骤太多,操作也复杂,离软件DIY 的最终方法还有一些差距。

我感觉插件式编程和转换编译型模型驱动开发方法都走了极端,插件式编程虽然灵活,也可以实现功能复杂的操作,但缺少与操作的对象的内聚性,插件的组装还是使用代码形式,使用不够方便,模型驱动开发对业务的静态结构建模可以精确描述,但确少对操作业务数据的功能进行精确建模,而且模型需要多次转换和编译才能形成目标软件系统,这种方法是一种理想状态的方法,可操作性不强,过程复杂,不易实现。

如果将这二者的开发方法有机的结合起来,也许会有意想不到的结果,我们知道编程语言中的类是对现实事物和抽象概念建模的一种代码组织形式,是编程历史上的重要发明,它将面向过程编程时代的数据和方法有机的组合在一起,实现了以类为边界的高内聚低耦合的复用能力,再加上类的继承技术和事件技术,可以用类来精确的对现实世界的事物和抽象概念进行建模,事实也是如此,自从面向对象编程技术出现以来,这种方法就一直是主流编程方法,我们可以把类的组织方法再提高一个抽象层次,将软件的静态结构分为几个元素部件,分别为这些部件对象精确建模,再为操作这些部件的插件也建模定义,当然插件的建模只是定义其调用结构和参数结构,再将哪些插件配置在哪些部件上也建模定义,最后使用一套统一的方法驱动这套模型和插件,使之成为一个相互作用的有机整体,如此便可以将插件式编程和模型驱动式方法统一到一起了,而且配合可视化建模工具,将会使开发效率成倍提升,

此种方法尤其在信息管理类软件中更能容易实现,二维表形式组成的数据库是业务数据主要的存储形式,而为了更方便的操作和控制数据库表,对其精确建模也是可行的,因为其数据结构一般都是可精确定义的,而另一部分就是操作这些数据的业务逻辑程序了,经过多年对信息管理系统的开发经验发现,此类程序的编码也大同小意,共同点很多,基本上可以总结为客户端向服务端请求数据读取或数据的操作,服务端依据客户端请求对数据库数据进行SQL 操作,并将操作结果或返回数据返回给客户端,客户端再表现到界面上供用户下一步操作。如果依照这样的方法建立一套开发平台,而这套平台可以让设计人员为业务的数据结构和业务逻辑建模,将模型存储到数据库中,并能通过用户在客户端的操作请求将模型展现到客户端主控界面上。将数据库表的增删改查功能以插件形式建模调用,用一套统一的方法来控制插件对模型对象的控制,主控件平台协调插件与模型对象通信,并控制客户端、服务端端构造以及在这二者和数据库之间传递数据,这套平台实现了这些功能,软件开发才实现了由设计人员在该平台上设计整个模型,由由编程人员开发的插件。

  一切都为了软件DIY 而努力,赛斐软件的工程师本着对一种软件开发可以更简单,更快速的信念,向着这个方向努力,三年来全身心的投入到这一事业中来,最终完成了可以DIY 软件开发平台-iModel 平台。


二,    iModel 平台 简介

iModel 平台是一种基于模型驱动架构的软件软件快速开发平台,其特点是通过业务基础建模和业务插件的选择组装与集成来实现复杂软件系统的快速开发与即时维护,该平台包括业务模型设计工具与模型服务引擎,业务模型设计工具用于设计与维护业务的软件模型,模型服务引擎用于加载业务的软件模型定义及其插件配置信息,并自动生成业务系统的计算机内存对象与界面表现,iModel 是一种分布式系统,包括数据库、服务端、客户端,在服务端由iModel 的模型服务引擎提供客户端的访问服务并存取数据库实现业务数据处理,客户端由iModel 的客户端主控平台调用客户端模型引擎加载模型信息并自动生成软件界面,并根据用户的操作来访问服务端服务实现业务处理,该平台的基本模型包括:界面模型(控件定义,菜单定义),实体模型(业务对象定义,功能定义),辅助模型等,iModel 的插件是一种可以增强和扩展iModel 基本模型对象的标准组件,iModel 插件模型是对iModel 插件及其参数的精确定义,iModel 插件可以配置在相应基本模型对象上,并可在运行态进行配置与调试,且能即时看到配置效果,iModel 是一种可演进的原型增量设计系统,软件是在运行过程中进行增量设计与维护的,设计过程中就可以看到运行效果。

iModel 平台内置了丰富的通用插件模型和插件实现,覆盖软件界面、功能,结构,流程等各方面;通过基础建模和大量插件的选择组装与集成可以实现软件系统的复杂逻辑功能和丰富界面表现。用户也可以很容易地在系统中增加插件模型及其实现完成对特殊需求的业务功能。

iModel 提供从建模、模型维护一整套工具及运行平台。供不同角色的开发人员同时在此平台进行分工协作开发。

 

三,    iModel 平台 构成

iModel 平台包括服务管理器(iModel Server ),客户端工作台(iModel Studio )和模型与业务数据库(Model&Business Database )三部分构成,服务管理器一般布署在服务端的服务器中,客户端工作台布署在客户端计算机中,模型和业务数据库一般布署在的数据库服务器中。

1,     服务管理器(iModelServer)

服务管理器为客户端主控平台提供服务端实体模型功能伺服,并根据客户端操作指令向数据库服务器存取数据,服务管理器也会缓存一部分模型在服务端,这样从客户端的请求如果在服务端缓存中能找到则直接使用,否则就创建一份。

2,     客户端工作台(iModel Studio)

客户端工作台既是模型设计环境又是模型运行环境,做为模型设计环境时设计人员可以将客户端主控平台连接到相应模型服务端,在客户端设计的模型数据会自动存储到服务端对应的模型数据库中,而作为最终用户使用的客户端运行环境时,该工作台在启动时将从连接的服务端下载和更新客户端模型、程序组件,缓存需要缓存的基础模型、动态编译需要编译的客户端模型插件,自动生成客户端组件,根据模型的定义调用相关组件生成软客户端界面,根据用户操作向服务端发送业务功能调用和数据传送,和服务端协同完成业务功能。

3,     模型和业务数据库(Model&Business Database )

模型数据库中存储了基本模型信息和业务模型信息,业务数据库存储了用户业务数据,根据服务管理器的命令完成模型数据和业务的增删和变更操作。

 四,    iModel 平台 模型组成

iModel 模型分为软件框架模型、领域元素模型、业务基本模型、程序插件模型、插件适配模型,资源模型五类。

1,     软件框架模型

(1)      模块模型,定义软件的模块构成。

(2)      菜单模型,定义软件的发布菜单。

(3)      权限模型,定义软件的操作权限。

2,     领域元素模型

(1)      业务元素,定义内部数据类型与业务领域概念的映射关系。

(2)      枚举字典,定义枚举类型。

3,     基本业务模型

(1)      业务对象模型,定义业务数据存储结构与领域业务对象的映射关系。

(2)      实体模型,定义组成业务实体的业务对象的可操作的业务逻辑功能。

(3)      界面模型,定义表现与操作一个实体的界面。

4,     程序插件模型

(1)      程序集模型,定义软件中引用到的程序集。

(2)      程序类模型,定义软件中引用到的程序类。

(3)      表达式模型,表达式也是一种特殊的程序类。

5,     插件适配模型

    插件适配模型定义基本业务模型与插件模型的适配关系与参数定义,模型工具会自动为定义动态生成适配类代码并自动注册到程序类模型中,平台框架会在适当时间调用,编译该装载代码来创建插件类对象。

6,     软件资源模型

(1)      图标模型,定义程序引用到的图标资源。

(2)      图像模型,定义程序引用到的图像资源。

(3)      文档模型,定义程序引用到的文档资源。

 五,    iModel 平台 技术原理

iModel 平台基于模型驱动架构,通过关系数据来保存业务对象、实体、用户界面等软件模型。应用软件系统通过运行时框架根据关系数据描述的模型来访问数据、加载用户界面并驱动业务流程。以模型驱动的方式,而不是编程的方式,使软件系统更加易于理解,并且有更好的扩展性和可维护性。

       iModel 由业务对象、实体、界面三大基本业务模型,插件模型,插件适配模型,以及一些辅助模型组成。iModel 利用基本业务模型来定义软件中业务对象的数据组成结构,基本模型相当于软件的骨架,利用插件模型来定义软件中实体的业务逻辑,而插件模型相当于软件的肌肉,利用插件适配模型定义基本模型与插件模型的适配关系与参数,插件适配模型把合适的插件根据功能需求配置在基本模型对象上,而插件通过响应其附着的主体对象事件并执行对应的功能来完成客户的需求,模型引擎加载模型数据后,自动根据定义生成基本模型对象与配置在其上的插件对象,二者协同完成软件功能。

iModel 使用“模型+ 插件”的方法构建可执行的模型方法为复杂软件DIY 带来可能,以往的为软件基本结构建模只能解决最通用的增删改查最基本方法,而复杂的业务逻辑功能则由另一些插件式组件单独操作,iModel 的方法将这二者有机的融合在一起,就像编程领域中以类为中心的编程方法代替了以子程序为中心的编程方法一样,这种进步的功效是可想而知的,这种软件开发方法将会大同幅度提高开发效率和提高软件质量。

六,    iModel Studio 开发方法

基于iModel 框架平台的开发分二部分,一部分就是在搭建好的开发环境中的iModel Studio 客户端平台中建立软件的基本构成模型,第二部分就是为设计的基本模型配置插件完成业务需求。

第一步:需求分析

     充分分析业务流程与业务功能,这是所有开发方式的公用前提,也是保证后续开发成功与否关键一步,基于模型驱动架构开发方式的iModel 也不例外。

第二步:模型设计

     与传统系统设计不同之处在于基于iModel 框架的系统设计产生的不是设计文档而是模型,模型是存储在数据库中的,在iModel Studio 环境下设计的模型都会自动存储到事先配置好的模型数据库。

第三步:设计插件,配置插件

     一般情况上述模型设计出来的模块已经是可以运行的模型,但只是拥有了基本的常见的功能和界面类型,想进一步拥有复杂业务逻辑和复杂界面的应用系统,必须在基础模型上配置插件才可能完成。 平台内置了100 多个常用插件,设计人员可以方便的使用,去完成大部分常见设计模式和一般业务逻辑处理。也可以设计自己专用插件来完成具体功能。设计好插件后就可以将插件配置到基本模型对象上来配合基本业务模型完成目标业务功能。        

第四步:测试,调试

     完成插件配置后有带界面模块可以单独进行测试,在配置插件的时候可以配置断点,在系统运行过程中会在断点处暂停下来,配合Visual Studio 来查看,调试插件。测试分为模块测试和集成测试,模块测试可以单独在界面模型中启动一个模块的界面进行测试和调试,集成测试可以在模块测试完成后集中有关联的模块进行测试。

第五步:发布维护

     测试完成后就可以发布软件了,iModel 平台提供了软件发布工具,利用工具发布也是非常方便和快速。发布后的软件在运行过程发现问题或需要变更系统和升级系统都需要对原有系统进行调整,iModel 的模型是可以分离的,都是可以单独备份和管理,而在原系统上进行维护是模型驱动架构软件的特色,我们花费非常少的时间就可以理清原系统的结构和逻辑,所以在其基础上增加和修改将会异常轻松。

七,    iModel 平台 技术特性

1, 装配式开发

iModel 平台革新软件开发模式,以“模型+ 插件”的构建方式实现软件开发,无需或仅需少量编写代码和脚本;由静态的基础模型和动态的插件模型以及图标、图像、文档资源、权限等模型构成,而且可方便的用插件扩展已有模型的功能。以数量级的幅度提升开发效率、降低软件开发成本;

2, 运行态调试

iModel 核心思想是以模型为中心,支持在运行状态增量式开发和维护,可以方便的在运行时查看和修改相关模型,系统会自动编译更改的模型。

3, 可视化构建

iModel 平台以完全图形化界面的方式实现模型设计,修改、测试、跟踪、维护活动;通过模型工具可以非常方便的查看整个软件的模型组成以及模型之间的引用关系。

4, 低技术需求

一般的设计人员就可以完成80% 以上模型设计和插件配置工作,无需编码,平台内置100 多个常用插件,特殊插件编写可以外包出去或由公司内程序员编写。

5, 个性化界面

iModel 平台客户端界面完全由界面模型定义,且界面布局风格可以按用户偏好设置,可以制作出非常个性化的友好用户界面。

6, 可执行模型

基于iModel 平台构建的模型就是目标软件的组成部分,通过客户端主控平台,服务端服务器和模型与业务数据库配合,软件模型可以直接运行,而且设计人员可以通过在软件运行过程中查看和变更模型配置来实现软件的运行态维护。

7, 可成长模型

iModel 平台模型驱动架构为软件的扩展带来巨大优势,增加一个模块只要增加模块的相关模型定义并发布到菜单中即可,客户端更新后自动加载增加的模型生成相关界面和组件。

8, 可复用模型

         基于imodel 模型是可以在整套系统中复用的,可以通过模型的继承,模型的接口功能来复用模型,这样可以节约大量开发时间和增加软件的稳定性。

9, 云模式架构

iModel 平台内置支持SaaS 架构的模型,可以快速搭建多租户式SaaS 应用系统。

10,  低带宽依赖

iModel 平台利用本地模型缓存技术和业务表缓存技术减少软件运行中对网络带宽的依赖,加快了软件运行速度,增加了用户友好度。

结束语

基于iModel 平台的应用软件是一种可进化的领域模型驱动软件,是最佳的构建网络信息管理软件平台。这种软件架构为网络管理软件的开发提供了新的思路。不是把开发的关注点全部放在领域内一个具体的应用,而是首先关注领域内产品族的共性,这种共性经过抽象体现为业务对象接口,实体接口,业务元素,插件,枚举类型等模型,基于iModel 平台的应用软件可以灵活适应需求的变化,在平台框架的基础上少编码甚至不编码同样可以适应需求的变化,在一般的软件开发过程中,模型是分析、设计的结果,是一种辅助性的成果,iModel Studio 将模型变成最终软件产品的一部分,开发人员不必再像以往一样费力地去维护文档和代码的一致性,简化了开发过程。这种软件架构具有一般性,可以应用于任何基于数据库的信息管理软件开发。

体验自助式的模型驱动开发,让软件DIY 不在遥远。如果您想了解更多关于软件DIY 的信息,请登录我们的网站:http://www.imodeltools.com


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值