首页 / 专利库 / 电脑编程 / 计算机程序 / 绘图软件 / 一种业务领域模型建立系统及方法

一种业务领域模型建立系统及方法

阅读:276发布:2020-05-11

专利汇可以提供一种业务领域模型建立系统及方法专利检索,专利查询,专利分析的服务。并且本 发明 涉及 软件 分析建模领域,具体涉及一种业务领域模型建立系统及方法,包括用于与用户进行交互的UI模 块 ,用于负责DOM的序列化、反序列化、持久化(存储)、反持久化(从外部存储读入内存)、有效性验证、更新、刷新相关逻辑处理的DOM处理模块,用于将表示业务领域模型的核心数据结构DOM绘制成UI模块或图片文件中 可视化 图形图案的绘图引擎,用于对用户创建的模型文档是否合法有效进行验证的文档验证模块,用于业务领域模型输出为特定的通用编程语言源代码文件以及软件开发需要的其他文本文件的代码生成模块;本发明所提供的技术方案能够有效克服上述内容所提到的只使用图形化的表示方式、各建模工具之间集成困难的 缺陷 。,下面是一种业务领域模型建立系统及方法专利的具体信息内容。

1.一种业务领域模型建立系统,其特征在于:包括用于与用户进行交互的UI模,用于负责DOM的序列化、反序列化、持久化(存储)、反持久化(从外部存储读入内存)、有效性验证、更新、刷新相关逻辑处理的DOM处理模块,用于将表示业务领域模型的核心数据结构DOM绘制成所述UI模块或图片文件中可视化图形图案的绘图引擎,用于对用户创建的模型文档是否合法有效进行验证的文档验证模块,用于业务领域模型输出为特定的通用编程语言源代码文件以及软件开发需要的其他文本文件的代码生成模块,还包括不属于上述模块的其他程序逻辑的其他杂项模块。
2.根据权利要求1所述的业务领域模型建立系统,其特征在于:所述UI模块包括UI组件库和UI控制器,所述UI组件库用于在其他系统中充当用户界面,所述UI控制器用于将UI组件库与系统中其他部分进行连接。
3.根据权利要求1所述的业务领域模型建立系统,其特征在于:所述DOM处理模块包括DOM和DOM序列化工具,所述DOM为普通的状态对象,不依赖于特定标记语言,所述DOM序列化工具将DOM序列化为特定标记语言的文档,并且能够从所述特定标记语言的文档中反序列化得到内存DOM实例。
4.根据权利要求3所述的业务领域模型建立系统,其特征在于:所述特定标记语言包括YAML、XML、JSON。
5.根据权利要求1所述的业务领域模型建立系统,其特征在于:所述文档验证模块使用JSON Schema的文档结构定义信息。
6.根据权利要求1所述的业务领域模型建立系统,其特征在于:所述特定的通用编程语言包括C#、Java、PHP、JavaScript,所述其他文本文件包括配置文件、数据库、Schema文件。
7.根据权利要求1所述的业务领域模型建立系统,其特征在于:所述代码生成模块包括代码模板和代码模板引擎,所述代码模板针对不同的编程语言及不同的输出结果需要编写相应可重用的模板,所述代码模板引擎用于结合可重用的模板与DOM生成目标源代码文件或其他文本文件。
8.根据权利要求1所述的业务领域模型建立系统的方法,其特征在于:包括以下步骤:
S1、当用户打开或装载一个已有的YAML模型文档时,UI模块请求DOM处理模块将模型文档反序列化为DOM实例,DOM处理模块在反序列化时,调用文档验证模块使用JSON Schema定义初步判断文档是否合法有效,DOM的反序列化操作完成后,UI模块将当前UI组件画布与当前DOM实例传给绘图引擎,绘图引擎在UI组件画布上绘制领域模型图;
S2、当用户在系统的图形化编辑中,使用鼠标键盘对模型进行编辑或修改时,DOM处理模块会接收到从UI模块传递过来的模型编辑事件信息,DOM处理模块根据编辑事件信息更新当前DOM实例,然后UI模块将当前UI组件画布与当前DOM实例传给绘图引擎,绘图引擎在UI组件画布上绘制领域模型图后,UI组件库刷新绘图区域,将更新后的领域模型图呈现在屏幕上;
S3、当用户选择保存修改后的模型,UI模块调用DOM处理模块,DOM处理模块内部调用DOM序列化工具,将DOM序列化为YAML文档,并保存到文件系统中;
S4、当用户选择将系统当前界面呈现的领域模型图导出为图片文件时,UI模块会生成特定图片格式的内存画布,将此画布与当前DOM实例传给绘图引擎,绘图引擎在画布上绘制领域模型图后,UI模块将图片存储到文件系统中;
S5、当用户选择将系统当前界面呈现的领域模型图生成某种语言软件的实现源代码时,UI模块会调用代码模板引擎,代码模板引擎装载用户所选语言的代码模板,将代码模板与当前DOM实例结合,即可生成目标源代码文件。

说明书全文

一种业务领域模型建立系统及方法

技术领域

[0001] 本发明涉及软件分析建模领域,具体涉及一种业务领域模型建立系统及方法。

背景技术

[0002] 软件系统是为业务领域服务的,在软件开发活动中,人们首先要做的工作就是对业务领域进行软件分析建模。软件分析建模旨在建立软件系统需求与软件系统实现之间的沟通桥梁,即描述什么是业务领域所需要的“正确的软件”。
[0003] 业务领域模型可简称为领域模型,它是软件分析建模的产物。它描述重要的业务领域概念以及它们之间的关系,是对业务领域的一种抽象。
[0004] 领域模型对软件开发活动如此重要:软件工程师按照设计人员建立的领域模型,开发出符合设计目标的软件系统,且软件的维护和改进也需基于领域模型。
[0005] 需要指出的是:本专利所指的领域模型是面向对象分析(OOA)以及面向对象设计(OOD)的产物,又称领域对象模型。它既包含了对业务领域问题域(Problem domain)的记录和理解,也包含了软件设计——解决方案域(Solution domain)方面的考量,可以直观地被软件所表达,甚至直接生成软件实现代码。领域模型的建模过程一般需要开发人员(Developers)的参与。本专利所指的领域模型不是所谓的分析模型,分析模型是单纯的业务领域分析的结果,不包括对软件实现的考量,仅用于帮助人们理解业务领域,这样的分析模型与软件的代码设计相分离,属于问题域范畴。它的建模一般可以由开发人员之外的其他人独立进行。
[0006] 目前在信息技术行业,当需要表示业务领域模型的时候,人们通常选择使用UML(统一建模语言)。
[0007] 人们在交流中可以用各种方法来表达领域模型,UML选择的是图形化的方式。虽然图形化的建模语言对人类而言比较直观,但是如果建模工具产品只满足于图形化的表示方式,会存在各种缺陷和不足。
[0008] 首先就是各种产品之间的集成困难。事实上,现在市面上各种UML工具均使用自己专有的文档格式进行模型的存储,这不能不说和UML只关注图形化的模型表示标准不无关系。想要让各种建模工具之间能有效集成、对接,工具之间仅仅依靠输出图片文件是远远不够的。各个工具产品只有理解、共享同样的领域模型数据格式,才能发挥领域模型的最大价值。包括对模型以各种可视化的方式呈现,生成使用各种通用编程语言实现的软件源代码(程序设计自动化)等等。
[0009] 基于图形化的方式表示领域模型的另外一个不足就是建模人员的作业效率问题。大家都知道,对专业人员来说,用键盘操作计算机肯定比用鼠标要快,而且快很多。
[0010] 要把一个相对复杂的业务领域模型描述清楚,仅仅使用UML图往往是不够的,软件开发团队往往还会使用其他文本型文档(TXT、Word、PDF等)记录模型信息。记录领域模型的图形化表示文档与其他文本型文档的分离还容易导致它们之间描述信息的不一致(即所谓的“脱节“)。当UML图和这些文本出现不一致的时候,到底哪个是正确的?
[0011] 另外,UML正式诞生于1997年,但其实它是Booch、Rumbaugh和Jacobson等人之前创建的图形化语言的集成,可以说UML核心设计思想早在上世纪七八十年代就已经基本定型。而自UML诞生之后,OOA和OOD领域的方法论已经大大向前发展了。虽然UML支持衍型和扩展机制,具有一定的“补丁”能,但是“补丁”显然很难称之为最佳解决方案。比如,UML就没有内置表达Domain-Driven Design(领域驱动设计)建模方法的那些关键概念的能力。如果我们想要直接从领域模型直接生成DDD设计格的软件实现源代码,使用已有的UML工具肯定是很困难的。
[0012] 且UML以“通用”为设计目标,甚至连电子、建筑、机械行业都可以使用UML建模。这样的设计存在贪大求全的嫌疑。对于软件分析建模领域,可能一种更专业、更专注的模型表达方式,会更适合这个行业领域的需要。
[0013] 本专利描述了一种以文本化(而非图形化)的方式为核心的业务领域模型的建立系统及方法。
[0014] 本系统及方法使用结构化的文本文档,特别是主张以开放标准的标记语言(即Markup Language,比如YAML、XML等)表示领域模型,便于实现各种建模工具之间的集成。本专利设计了一种可以精确描述模型,且可以使用对机器友好的标记语言或DSL(领域专语言)来表述的数据结构,各种工具产品可以在此基础上对领域模型进行可视化呈现、可视化编辑、生成各种编程语言实现的软件源代码。
[0015] 本系统及方法默认使用YAML这种既对机器友好、也对人类很友好(具备高可读性)的标记语言描述模型,方便专业人员仅通过键盘输入就可以快速建模。
[0016] 因为本系统及方法是以文本化的表示方式为核心,要求软件开发团队的建模成果尽可能写在同一个文档中,那么自然可以减少模型文档之间的不一致性。
[0017] 本系统及方法紧跟信息技术行业特别是OOA与OOD领域的最新进展与发展趋势,尤其适合于表示以领域驱动设计(英文简称DDD)方法构建的领域模型。
[0018] 本系统及方法专注于解决信息技术行业、软件分析建模领域、业务领域模型表示相关的问题,不贪大求全。

发明内容

[0019] (一)解决的技术问题
[0020] 针对现有技术所存在的上述缺点,本发明提供了一种业务领域模型建立系统及方法,能够有效克服上述内容所提到的只使用图形化的表示方式、各建模工具之间集成困难的缺陷。
[0021] (二)技术方案
[0022] 为实现以上目的,本发明通过以下技术方案予以实现:
[0023] 一种业务领域模型建立系统,包括用于与用户进行交互的UI模,用于负责DOM的序列化、反序列化、持久化(存储)、反持久化(从外部存储读入内存)、有效性验证、更新、刷新相关逻辑处理的DOM处理模块,用于将表示业务领域模型的核心数据结构DOM绘制成所述UI模块或图片文件中可视化图形图案的绘图引擎,用于对用户创建的模型文档是否合法有效进行验证的文档验证模块,用于业务领域模型输出为特定的通用编程语言源代码文件以及软件开发需要的其他文本文件的代码生成模块,还包括不属于上述模块的其他程序逻辑的其他杂项模块。
[0024] 优选地,所述UI模块包括UI组件库和UI控制器,所述UI组件库用于在其他系统中充当用户界面,所述UI控制器用于将UI组件库与系统中其他部分进行连接。
[0025] 优选地,所述DOM处理模块包括DOM和DOM序列化工具,所述DOM为普通的状态对象,不依赖于特定标记语言,所述DOM序列化工具将DOM序列化为特定标记语言的文档,并且能够从所述特定标记语言的文档中反序列化得到内存DOM实例。
[0026] 优选地,所述特定标记语言包括YAML、XML、JSON。
[0027] 优选地,所述文档验证模块使用JSON Schema的文档结构定义信息。
[0028] 优选地,所述特定的通用编程语言包括C#、Java、PHP、JavaScript,所述其他文本文件包括配置文件、数据库、Schema文件。
[0029] 优选地,所述代码生成模块包括代码模板和代码模板引擎,所述代码模板针对不同的编程语言及不同的输出结果需要编写相应可重用的模板,所述代码模板引擎用于结合可重用的模板与DOM生成目标源代码文件或其他文本文件。
[0030] 一种业务领域模型建立系统的方法,包括以下步骤:
[0031] S1、当用户打开或装载一个已有的YAML模型文档时,UI模块请求DOM处理模块将模型文档反序列化为DOM实例,DOM处理模块在反序列化时,调用文档验证模块使用JSON Schema定义初步判断文档是否合法有效,DOM的反序列化操作完成后,UI模块将当前UI组件画布与当前DOM实例传给绘图引擎,绘图引擎在UI组件画布上绘制领域模型图;
[0032] S2、当用户在系统的图形化编辑中,使用鼠标或键盘对模型进行编辑或修改时,DOM处理模块会接收到从UI模块传递过来的模型编辑事件信息,DOM处理模块根据编辑事件信息更新当前DOM实例,然后UI模块将当前UI组件画布与当前DOM实例传给绘图引擎,绘图引擎在UI组件画布上绘制领域模型图后,UI组件库刷新绘图区域,将更新后的领域模型图呈现在屏幕上;
[0033] S3、当用户选择保存修改后的模型,UI模块调用DOM处理模块,DOM处理模块内部调用DOM序列化工具,将DOM序列化为YAML文档,并保存到文件系统中;
[0034] S4、当用户选择将系统当前界面呈现的领域模型图导出为图片文件时,UI模块会生成特定图片格式的内存画布,将此画布与当前DOM实例传给绘图引擎,绘图引擎在画布上绘制领域模型图后,UI模块将图片存储到文件系统中;
[0035] S5、当用户选择将系统当前界面呈现的领域模型图生成某种语言软件的实现源代码时,UI模块会调用代码模板引擎,代码模板引擎装载用户所选语言的代码模板,将代码模板与当前DOM实例结合,即可生成目标源代码文件。
[0036] (三)有益效果
[0037] 与现有技术相比,本发明所提供的一种业务领域模型建立系统及方法以结构化文本表示领域模型,使得各建模工具之间具有较高的集成性,可以提高专业人员的工作效率,尽可能把所有模型信息集中在一个结构化文本文档中,更好地保证一致性,根据OOA与OOD领域最新成果设计特性功能,支持生成更先进的软件设计方法的源代码,专注于信息技术行业软件分析建模领域的建模语言,更具针对性。附图说明
[0038] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0039] 图1为本发明系统结构示意图;
[0040] 图2为本发明方法流程示意图;
[0041] 图3为本发明订单管理系统实例的领域模型图。

具体实施方式

[0042] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0043] 一种应用于实例化需求的管理系统,如图1所示,包括用于与用户进行交互的UI模块,用于负责DOM的序列化、反序列化、持久化(存储)、反持久化(从外部存储读入内存)、有效性验证、更新、刷新相关逻辑处理的DOM处理模块,用于将表示业务领域模型的核心数据结构DOM绘制成UI模块或图片文件中可视化图形图案的绘图引擎,用于对用户创建的模型文档是否合法有效进行验证的文档验证模块,用于业务领域模型输出为特定的通用编程语言源代码文件以及软件开发需要的其他文本文件的代码生成模块,还包括不属于上述模块的其他程序逻辑的其他杂项模块。
[0044] UI模块包括UI组件库和UI控制器,UI组件库用于在其他系统中充当用户界面,UI控制器用于将UI组件库与系统中其他部分进行连接。
[0045] DOM处理模块包括DOM和DOM序列化工具,DOM为普通的状态对象,不依赖于特定标记语言,DOM序列化工具将DOM序列化为特定标记语言的文档,并且能够从特定标记语言的文档中反序列化得到内存DOM实例。
[0046] 特定标记语言包括YAML、XML、JSON。
[0047] 文档验证模块使用JSON Schema的文档结构定义信息。
[0048] 特定的通用编程语言包括C#、Java、PHP、JavaScript,其他文本文件包括配置文件、数据库、Schema文件。
[0049] 代码生成模块包括代码模板和代码模板引擎,代码模板针对不同的编程语言及不同的输出结果需要编写相应可重用的模板,代码模板引擎用于结合可重用的模板与DOM生成目标源代码文件或其他文本文件。
[0050] 一种业务领域模型建立系统的方法,如图2所示,包括以下步骤:
[0051] S1、当用户打开或装载一个已有的YAML模型文档时,UI模块请求DOM处理模块将模型文档反序列化为DOM实例,DOM处理模块在反序列化时,调用文档验证模块使用JSON Schema定义初步判断文档是否合法有效,DOM的反序列化操作完成后,UI模块将当前UI组件画布与当前DOM实例传给绘图引擎,绘图引擎在UI组件画布上绘制领域模型图;
[0052] S2、当用户在系统的图形化编辑中,使用鼠标或键盘对模型进行编辑或修改时,DOM处理模块会接收到从UI模块传递过来的模型编辑事件信息,DOM处理模块根据编辑事件信息更新当前DOM实例,然后UI模块将当前UI组件画布与当前DOM实例传给绘图引擎,绘图引擎在UI组件画布上绘制领域模型图后,UI组件库刷新绘图区域,将更新后的领域模型图呈现在屏幕上;
[0053] S3、当用户选择保存修改后的模型,UI模块调用DOM处理模块,DOM处理模块内部调用DOM序列化工具,将DOM序列化为YAML文档,并保存到文件系统中;
[0054] S4、当用户选择将系统当前界面呈现的领域模型图导出为图片文件时,UI模块会生成特定图片格式的内存画布,将此画布与当前DOM实例传给绘图引擎,绘图引擎在画布上绘制领域模型图后,UI模块将图片存储到文件系统中;
[0055] S5、当用户选择将系统当前界面呈现的领域模型图生成某种语言软件的实现源代码时,UI模块会调用代码模板引擎,代码模板引擎装载用户所选语言的代码模板,将代码模板与当前DOM实例结合,即可生成目标源代码文件。
[0056] 在对某订单管理系统软件需求进行分析建模之后,该软件项目的开发团队就订单相关领域模型达成了共识,他们可能会使用这样的自然语言描述他们获得的领域模型:
[0057] 订单(Order)是一个聚合。
[0058] 订单(Order)聚合包含订单头(OrderHead)和订单行(OrderLine)两个实体。
[0059] 订单头(OrderHead)是订单(Order)聚合的聚合根。在这里,聚合与聚合根的名称并不相同;
[0060] 产品标识(ProductId)是订单行的局部ID。因为在同一个订单内,对相同产品的订购可以合并到同一行。
[0061] 在这个例子里,该软件开发团队使用了一些DDD方法的术语(行话)来描述领域模型,这是不可避免的,因为使用定义明确、广为接受的分析建模领域术语可以简洁而准确地表达分析结果与软件的设计思想,提高团队沟通效率。
[0062] 这里对所涉及建模术语作出简要说明:聚合(Aggregate)、实体(Entity)、聚合根(Aggregate root),均为构建DDD风格(以DDD词汇描述)的领域模型的关键概念。聚合是领域对象的一个聚集(Cluster),它被视为一个整体的单元。一个聚合可以包含一个或者多个实体,其中有一个特殊的实体,称为这个聚合的聚合根。外部代码对聚合内任意对象的访问,都必须通过这个聚合根。
[0063] 本方法期望用户以YAML这一标记语言(而非自然语言)录入以上建模结果(领域模型信息),如下:
[0064]
[0065]
[0066] YAML标记语言除了对机器(计算机)友好之外,兼具良好的人眼可读性。具备一定软件设计经验的开发人员,在理解DDD相关概念以及YAML规范的基础上,均可以使用通用的文本编辑器(比如Windows的记事本程序、Linux或UNIX的Vim等)手工编写出以上标记式代码;或者通过阅读他人编写的类似代码,理解其意图表达的系统分析结果以及软件设计思路。
[0067] 对以上YAML代码的几点补充说明:
[0068] 对代码的部分说明已经以YAML注释(以“#”开头直到行尾)的方式,包含在上面的标记语言代码中。注释仅起说明作用,删除它对机器(程序)处理没有影响;
[0069] YAML的特点是通过文本行之间的缩紧关系,直观地表示树形数据结构节点(Node)之间的父子(包含)关系。在大多数支持YAML格式的现代化的文本编辑器下,这些节点是可以点击折叠或展开的。以技术人员非常熟悉的树形结构,可以直观地展示领域模型中各个关键概念——聚合与实体、实体与下一级实体、实体与属性、实体与方法、值对象与属性等之间的层级关系。
[0070] 这样的一份YAML文档是很容易被计算机处理的。文档的结构可使用开放的JSON Schema规范定义,从而使系统可以对用户输入的文档的正确性执行基本的验证。
[0071] 技术人员完成以上YAML代码录入后,可以使用本发明的系统读取该YAML文档,然后输出如图3的领域模型类型图(Type Diagram)。
[0072] 更重要的是,本方法还可以根据YAML模型文档,直接生成业务领域所需要的软件系统的源代码,大大减轻开发人员的编码工作量,提高了软件开发效率及软件代码质量
[0073] 本发明所提供的一种业务领域模型建立系统及方法以结构化文本表示领域模型,使得各建模工具之间具有较高的集成性,可以提高专业人员的工作效率,尽可能把所有模型信息集中在一个结构化文本文档中,更好地保证一致性,根据OOA与OOD领域最新成果设计特性功能,支持生成更先进的软件设计方法的源代码,专注于信息技术行业软件分析建模领域的建模语言,更具针对性。
[0074] 以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不会使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈