基于模型驱动的代码自动生成产品设想
1. 引言
1. 编写目的
当前,软件开发企业面临越来越激烈的竞争。从销售、售前、研发、售后等等各个环节,用户对软件企业的响应速度要求越来越高。对于那些没有软件产品,靠售前人员PPT就搞定的项目越来越少。在招投标中,用户对企业是否曾经已经有产品或者能看到的系统越来越看中。然而,同一个行业不同用户的需求,难免存在这样或者那样的差别,软件企业现有的产品难以适应各种不同的需求。面对这个问题,如何快速的拿出符合用户需求的原型,就成为摆在企业面前的一个问题。
现代软件研发企业竞争越来越是快速响应能力的竞争。用户期望能在项目上线之前看到系统原型,只有有了原型用户才能相对容易的提出需求,有了原型系统售前才能方便的引导用户需求。在系统运行维护过程中,用户期望软件企业能够需求变更提出之后很快就能看到变更后的软件系统,遗憾的是现有的软件研发过程,不论是瀑布模型、螺旋模型还是极限编程,对于频繁的需求变更都无能为力。所以,如何快速的响应用户需求就成为一个摆在软件企业面前的问题。
通过面向模型驱动的代码自动生成方法可以有效地解决上述问题。 利用常见的Excel工具对系统需要管理的对象进行描述,通过该工具就可以方便的生成对该对象的增删该查的代码、自动创建数据库中相关的表、自动生成适应各种框架的前台呈现界面。利用该系统可以极大的提高软件研发的响应效率、降低软件研发的成本。
1. 名词定义
* CodeFactory:代码工厂。本文描述的基于模型驱动的代码自动生成工具简称。
* 模型驱动:基于模型为核心的代码自动生成工程。通过定义模型自动生成软件的一种方法。
* Hibernate:一种非常流行的OR Mapping工具。提供面向对象的数据持久化能力。
* Hibernate Mapping:Hibernate用来描述数据持久的时候需要用到的对象和数据之间的对应关系。
*
2. 流程
1. 程序生成流程
2. 流程说明
上述流程中灰色的是可以选择的,就是说不定义上述流程也可以生成代码。
其他流程都是可以通过Excel模板来定义的,就是说,没有只有会用Excel就可以完成代码自动生成,不需要特殊的培训。
3. 功能
1. 模型定义能力
系统提供通过Excel建立模型,并且利用这些模型自动生成呈现界面、数据存储、流程定制等等功能的所有代码。
1. 产品模型定义能力
提供对于一个产品(项目)级别的信息描述能力。比如描述项目的名称、界面呈现的标题、厂家LOGO,呈现风格等等能力。
可以定义界面的呈现方式,比如B/S还是C/S、Java Swing还是DotNet WinForm、Struts、WebWork、JSF、Flex等等。
2. 存储模型定义能力
利用一个Excel来描述一个对象在数据库内的存储方式。 不需要了解SQL和数据库,用户就可以方便定义出适合各种数据库的数据存储用到的数据对象、存储结构。
可以方便的定义这个对象的主键。可以方便的定义对象在包含的所有的属性,可以定义属性的英文名称、中文名称、在数据库中对应的字段名称、数据存储类型等等。
一个属性可以是包含其他对象的列表,方便的描述主从关系。访问的时候可以通过面向对象的方式方便访问这些对象,无须了解存储到具体的那张表中。
系统内置了通用对象包含关系,对于那些在需求调研阶段无法准确描述的包含关系也能很好的支持。
3. 呈现模型定义能力
用户可以定义任意一个对象的任意属性的呈现方式。包括增加该对象的时候该属性的名称、提示信息、是否必须填写,查询的时候是否做为查询条件,修改的时候是否可以修改。
在表格呈现的时候可以根据字段的内容来定义该列、改行呈现方式。比如字体、颜色、背景颜色等等。
可以方便的定义每页呈现条数,奇偶行呈现的风格等等。可以定义表头表尾信息等等。
4. 流程模型定义能力
可以自定义流程,流程的每一步都可以定义前进、回退功能。可以自定义前进回退功能的按钮的标签。每一个流程都是采用一个Excel来定义。
5. 完善的权限管理功能
内置基于角色的权限系统,可以方便的完成用户、角色、权限的定制功能。内置用户、角色、权限的维护页面。
权限控制可以细化到URL、功能点等。也可以通过API进行行级别控制。
流程定义中可以引用这里定义的各种角色,流程管理中不同的角色执行流程中不同的步骤。
6. 丰富报表定制能力
通过定义报表需要呈现的各个字段数据来源、呈现风格就可以自动生成报表。 可以生成表格型、柱状图、饼状图等等。
对于那些需要关联多个数据表的报表,系统提供物化视图能力。 通过定时刷新物化视图来大幅度提高报表的性能。
4. 优势
1. 快速的原型开发
可以通过Excel简单定义快速的生成系统原型。对于售前来说可以方便的得到一个能够方便的和用户交流的系统原型。对于招投标来说,这是很有意义的。
和用户交流得到用户认可的系统原型之后,基于原型完成系统功能的开发可以比较容易得到用户的认可。
2. 需求的快速响应能力
通过代码生成可以方便的给用户新增功能。对于需要新增的功能模块,可以方便的通过模型定义功能来实现。
内置通用关系类型可以方便的支持需求变更。需求分析中对象之间的关系往往很难完全分析清楚,或者实际生活中往往存在“例外”情况。通过以往项目中的经验,引入通用对象之间的关系模型,可以方便的支持这种需求难以够确定的地方。
3. 极大的节约研发成本
1. 自动生成代码
可以通过定义存储模型方便的生成代码。对于一个对象可以方便的定义一个或者多个呈现界面。
只要会使用Excel就能够编程可以极大的提高程序开发的效率。
2. 内置树形菜单模型
系统内置了树形结构的模型、呈现组件,可以通过定义就完成树形才数据的存储和呈现功能。树形存储和呈现在大多数项目或者产品中都有应用。通过内置树形数据可以节省设计树形菜单的存储以及呈现的工作量。
3. 内置数据字典
对于常用的数据字典,比如省市的数据字典,系统已经内置无须用户定义。对于数据字典的应用无须设计、开发,就可以直接采用。
5. 目标客户群
* 以项目为主的企业
o 售前人员:招投标中快速的提供原型供招投标使用
o 需求分析人员:方便的和用户沟通交流交流,提高交流效果。
o 研发人员:快速的响应用户需求。采用成熟的研发方式和流程,吸取以前成功项目中的成功经验。提高项目的成攻率。
===============================================
联系作者:
Mail: leemingjun2006#gmail.com
QQ: 472 31 381
分享到:
相关推荐
8. **Roo工具**:压缩包中的“Roo”可能指的是Spring Roo,这是一个简化Java开发的工具,能够快速生成代码,包括领域模型。它支持DDD的概念,并且能够帮助开发者按照充血模型的方式构建应用。 综上所述,"充血模型...
谷歌 Waymo 将 AIGC 应用于仿真场景生成,特斯拉基于 Transformer 进行 BEV 特征提取。Transformer 在自动驾驶中的应用向视觉+语言感知及全栈任务发展,例如特斯拉设想以 LLMs 赋予系统运用自然语言与代理互动的能力...
它与影响重大的另外一些核心新技术发展如新能源、自动化、基因生物和外太空探索等构成可资关联的实际协同,并在引导大众认知的话语导向方面持续地实现自身作为驱动力技术的观念传播,既为自我演化改进的技术迭代进行...
Bickford提出了移动平行带电极板的设想,通过电荷极板的相对运动产生变化电场,以此生成低频电磁波。 在中国,虽然机械天线领域的研究相对较少,但已有相关专利如“旋转驻极体式机械天线低频通信系统”和“基于声学...
VB采用事件驱动编程模型,即当用户交互(如点击按钮)或系统事件(如计时器触发)发生时,对应的事件处理程序被执行。在VB代码中,`Command_Start_Stop_Click`事件处理程序控制抽奖的开始和停止。 9. **变量与数据...
Simulink允许用户通过图形化界面构建系统模型,并基于时间或事件驱动进行仿真。尽管AFG3252的直接控制不涉及Simulink,但可以设想一个更复杂的系统,其中AFG3252产生的信号被用作其他物理系统模型的输入,而这些系统...
计算机图形学是一门涵盖广泛且深具创新性的学科,它主要关注...随着技术的不断进步,计算机图形学将继续拓展其前沿领域,如实时渲染、高级光照模型、物理模拟、人工智能驱动的内容生成等,持续推动着科技与艺术的交融。
VB基于Basic语言,采用事件驱动编程模型,通过拖拽控件和编写简单的代码即可构建用户界面,大大简化了软件开发的过程。 该人口登记管理系统的核心功能可能包括以下几个部分: 1. 用户登录:系统首先需要一个用户...
舵机(Servo)是一种常用在机器人、模型飞机或自动化控制系统中的组件,用于实现精确的角度控制。20ms的工作周期表示舵机的刷新频率,舵机能够在这个周期内响应输入信号进行相应的转动。在这个测试程序中,用户可以...
在VB(Visual Basic)平台上构建人事资源管理系统,主要利用了VB的事件驱动编程模型和直观的用户界面设计工具。VB支持ADO(ActiveX Data Objects),可以方便地连接到各种数据库,如Microsoft Access、SQL Server等...
机器翻译(Machine Translation,简称MT)是计算机科学领域早期的研究之一,旨在将一种自然语言的文本自动转化为另一种自然语言。尽管机器翻译一直以来都是一个颇具挑战性的目标,但如今已有多个系统能够生成虽非...
由于LLM在理解和生成自然语言上的出色表现,人们设想它们可以成为新型的搜索工具。然而,这种转变的经济成本是一个重要因素。据提到,一个自称是谷歌员工的网友指出,LLM驱动的搜索需将成本降低10倍才可能实现。这...
开发者可以通过事件驱动模型来控制页面行为,使用服务器控件和用户控件来构建交互式的用户界面。另外,ASP.NET 还提供了数据绑定机制,简化了与数据库的交互,以及模型-视图-控制器(MVC)架构,以提高应用程序的可...
- **事件驱动编程**:VB采用事件驱动编程模型,用户与界面交互时触发不同的事件,系统根据事件执行相应的代码。 - **控件库**:VB提供了丰富的控件库,如按钮、文本框、列表框等,便于构建图形用户界面(GUI)。 ...
JavaBean是Java的一种组件模型,它遵循特定的命名和编程规范,可以作为可重用的代码模块在Java应用程序中使用。在Web开发中,JavaBean常被用来封装数据和业务逻辑,然后在JSP或Servlet中调用。JavaBean可以看作是...
首先,机器人的聊天功能基于自然语言处理(NLP)技术,这涵盖了语音识别和对话生成。这种技术允许机器人理解并回应人类的语言,包括情感和语境,这在与老人进行互动时至关重要。机器学习,尤其是深度学习,如循环...
4. **事件驱动编程**:vc6.0中的事件驱动编程模型是基于消息队列的,当用户在界面上进行操作时,如点击按钮,操作系统会生成相应的消息并放入消息队列,程序通过消息循环来处理这些消息,执行相应的功能。...
- **动态代理与代码生成**:自J2SE 1.3引入动态代理以来,EJB规范中设想的容器代码生成机制变得过时,实现每个EJB所需的多个源文件也显得不再必要。 - **远程访问与Web服务**:随着Web服务的兴起,EJB与RMI远程...
- **事件驱动机制**:利用VFP的事件驱动模型来处理用户与提醒窗口之间的交互,如鼠标点击事件、键盘输入事件等。 - **跨平台兼容性**:通过编写COM组件,可以将其打包成一个独立的EXE文件,便于在不同版本的VFP以及...