基于模型驱动的应用软件建模平台探索
计算机技术诞生以来,IT技术和应用迅猛发展,计算机硬件、软件都得到了空前发展和应用。各种应用软件开发公司应运而生,应用软件遍布于各行各业,大到集团公司、民营企业,行业覆盖制造业、医药、食品、快速消费品、能源、化工、材料等,开发的系统包括ERP、CRM客户关系管理系统、SRM供应链管理系统、分销管理系统、酒店管理系统、医药管理系统、各种定制开发的应用系统等,这些应用系统的软件提供商也就是软件企业,主要有三类,一类是个性化开发,一类是提供具有标准功能模块的产品,第三类是提供软件平台。在软件行业,人们常说:一流的企业做平台,二流的企业做产品,三流的企业做开发。因此可以看出,产品平台化发展是必然趋势。这方面国外厂商走在前面,国内软件产品,特别是管理软件,完全平台化的产品很少,而基于业务驱动的建模式平台,可以说几乎没有。
那么平台化、产品化有什么优势呢?为什么说一流企业要做平台化呢?
1 建模平台产生的背景和意义
软件一般如何开发?通常的模式都是需求调研、需求分析、系统设计、编码、测试到实施、维护这样一个全生命周期的过程。有些公司更是采用软件作坊的形式,拿到一个项目,只要三五个人十来条枪,就可以完成项目。而实际项目实施过程中,是不断反复的一个过程。特别是项目需求变化时,不管是简单的界面布局、界面信息量增减的需求,还是复杂的业务处理规则的改变、业务流程的变化,都需要重复从需求分析、设计、编码、测试这样一个过程。可见,传统的以企业需求来驱动,由软件公司来开发的企业信息系统建设模式,存在着没有总体规划、需求变化频繁,迭代周期长,软件公司被动采用人海战术,质量难以保证,无法将项目产品化,扩大其价值范围。因此,企业希望信息系统有序发展、有效集成,以减少重复投入开发、交叉开发、信息不能共享的状况。
笔者做过多年的ERP、MES应用软件产品开发和项目实施,也做过SRM、CRM、分销等管理软件的开发实施,通过总结应用软件产品的开发和实施特点,分析应用系统功能界面展示形式,提炼业务处理类型和业务处理方式,研究实施过程中客户需求变化的类型和规律,设计形成了一套基于模型驱动的智能开发平台,简称建模平台。建模平台可以针对企业的不同业务需求随需而变,实现模型驱动、随需而变,目标是快速实施、保障质量。
2 建模平台的设计思路和实现方案
首先,从应用系统本身来看,应用系统不管有多少模块、有多少功能,都有一个共同点,在前台界面展示结构化数据并与用户交互,把交互命令传到后台,由后台处理前台命令,并进行结构化数据处理。建模平台设计正是以此为基础,改变了传统应用软件的设计方法和运行方式,平台把软件的开发周期划分为两个层面:设计层和运行层。
设计层首先分析企业业务需求形成业务设计模型,并将业务设计模型抽象为系统要求的分层技术模型,即数据模型、业务模型、展现模型。这里所说的分层技术模型的三个模型与目前常说的B/S架构下的三层架构不同。三层架构是站在技术角度,将技术架构划分为三层,即数据层、逻辑层、展示层。另外,目前很多定制类开发项目,也称是在做平台,这个平台其实是开发框架或称为技术框架,是封装了一些通用的底层技术和类,同时提供了有关系统管理方面如用户、角色、权限等基本的非业务的功能,本质上不是本文所讲的平台;而建模平台是站在业务角度,将业务实现过程拆分为三种模型,通过模型间的联动和统一,完成数据存储及ღ逻辑处理,实现业务功能,并可动态调整和配置。
设计层通过建模过程完成,建模就是采用模型化、构件化设计,可以实现在软件使用过程中动态调整业务流程,动态配置业务功能,实现了软件的配置与信息管理的一体化应用。
动态调整业务流程源于业务处理的过程,企业错综复杂的业务流程就像很多条线,纵横交错。每一个业务流程就像一条线,把业务过程点一个个串起来,从而完成一条端到端的业务。是一条条线之间,应用系统中的业务流程主要体现在两个方面:一个是业务流转流程,一个是审批工作流。
对于业务流转流程,一般应用系统通过一个功能与其他功能间的勾稽关系实现,表现形式有拉式和推式。功能间的勾稽关系也体现在分层技术模型的三个层面:数据层面、业务逻辑关系、界面展示,这三者本身不可分割,展示层提供勾稽关系处理的形式,后台逻辑处理和数据层面完成真正的关联关系。不论是展示层还是业务处理,都是基于数据层面即结构化数据的支撑,通过对结构化数据表之间业务关联关系的分析,可以从中发现关联关系的共性特点,从而抽象形成关于业务流转流程的数据模型、业务模型、展现模型,完成了业务流转的建模过程。
对于审批工作流,可以实现表单和数据的发送、处理、审批,支持自动流转,并以图形化方式进行业务流程的设计、运行、监控和管理,让用户根据需要配置、修改流程。
动态配置业务功能源于业务处理☭过程中的每一个功能点,主要体现在实现功能的数据层、界面和后台三个方面。首先,系统内置了多个展现模型,不仅满足一般系统需要的多种输入、显示模式,甚至满足复杂的多页面展示需要;其次,当实际业务功能发生变化,甚至是新增业务功能时,在界面展示层,系统可以新增或修改界面信息,界面元素可以根据需要裁减或增加,新增数据库表或新增字段信息可以输入字段名称、类型等属性,系统自动在数据库表和模型层面建立,保持二者的统一;第三,在后台业务实现方面,系统提供了标准参数和类库,可以在此基础上根据业务实际需要进行开发,开发出的程序可以嵌入到平台中运行。这里,系统通过内置的标准展现模型、标准参数和类库,展现模型的修改模式,实现了动态配置业务功能的建模过程。
综上,可以看出无论是业务功能本身,还是业务流转,都体现了分层技术模型的三个模型,通过对三个模型的分解、分析,在技术上实现了建模过程的模型化、系统化,最终形成一个建模平台。
那么这些建模过程怎么运转运行,转化成一个个具体业务,展示给用户使用呢?这任务交给运行层完成。
运行层把分层技术模型通过模型引擎解析成业务运行模型,拆分/组装后发布到应用支撑环境运行。模型引擎具有高度的通用性、灵活性和可扩展性,实现跨技术(net、Java等)、跨业务(生产管理、经营管理、办公自动化等)的应用,动态适应行业需求。
3 建模平台的技术特点和应用特性
建模平台的技术特征、技术参数或指标,主要体现如下:
(1)基于模型驱动;(2)改变了传统软件的设计方法和运行方式;(3)模型驱动、随需而变;(4)业务设计模型抽象为分层技术模型;(5)分层技术模型通过模型引擎解析成业务运行模型;(6)业务运行模型可拆分/组装发布;(7)软件使用过程中动态调整流程,动态配置业务。
但是,建模平台的应用注定不是一帆风顺。首先,平台设计难度大,开发周期长。完成一个功能,一个页面容易,但要把无数个功能页面的特征和共性抽象分 ت析出来,把功能间流程关系归类归纳起来,并形成模型,再通过技术手段实现,对需求分析、设计人员ศ的能力和经验要求都很高;同时应用中遇到的问题通常都具有共性,在一个点上发现,但要在所有点上解决,解决的难度加大。其次,对开发人员挑战大。平台化软件的底层技术、框架、驱动方式等相对复杂,对开发人员的技术要求高。第三,对平台应用者要求高。对初用者来说是黑匣子,而且要求实施者具备模型设计能力,要按照系统内在的模型方式来完成,相关的规则、限制、要求多而复杂。
4 建模平台的快速实施之路
国外有些软件实现了第三方实施,主要是提供成熟的产品和开发框架。这些软件产品构建了深厚的架构基础,经历了多年的积累和完善,但投入很大,除了产品本身昂贵外,实施过程复杂、周期长,而且实施费用更是惊人。如何超越这种模式,规避其中的高费用、高复杂度等风险,是一个挑战。
完整的建模平台分为三个上下关联的层级:平台层,产品层和应用层。其应用需要分两步走:一是产品化,即在平台上搭建应用软件产品;二是在产品上实现第三方快速实施。
在平台基础上,对专业业务分析后,可以搭建形成产品,关键在于对业务需求的深入理解和分析,并把业务需求转化为产品化、标准化的业务模型。
当产品应用到项目中时,以标准的产品模型为基准,根据企业业务实际变化需求,对模型进行修改后,快速建立起适用的企业模型,直接满足项目需求。通过项目实施形成平台的应用层或应用包,同时也是对产品本身和平台的完善过程。因此,平台、产品、实施这三个环节环环紧扣,缺一不可。
总之,建模平台是应用软件平台化的一种探索,可以使用不同的技术开发工具实现,但关键在于实施建模平台的深入应用和发展,虽然已经完成多个项目的实施,但还需要进一步的创新,不仅是技术和产品创新,更是实施模式的创新,是第三方快速实施模式的推广和规模化的应用。国产平台化应用软件产品的路还很长,需要不断探索,勇于实践,通过项目实施的实践检验,逐步开发出真正适合市场需要的、可持续发展的好平台、™好产品,推动国产软件不断发展。