一种基于领域模型的软件生成方法及装置的制作方法

文档序号:6471899阅读:137来源:国知局
专利名称:一种基于领域模型的软件生成方法及装置的制作方法
技术领域
本发明涉及计算机技术,特别是指一种基于领域模型的软件生成方法及装置。
背景技术
在现代软件开发过程当中,通过软件复用将各种已有软件成分用于新项目 的建立,已成为提高软件开发生产力和质量的有效方式,完全重新构建一个新 项目的情况几乎是不存在。因此,如何提高软件复用在软件开发过程中所占的 比例,以进一步降低开发成本和提高开发效率成为关键。
从目前来看,能够产生显著效果的软件复用主要是对软件开发过程中各阶 段开发成果的复用。主要包括代码的复用、构件的复用和设计的复用,等等。 但在实际应用中,这些实现方式都存在很多缺陷,复用能力仍然较低。
于是,目前提出了领域驱动设计(DDD, Domain Driven Design )的方法,
以实现更高一层的软件复用。领域是指一组具有相似或相近软件需求的应用系 统所覆盖的功能区域。这一方法的实现基础是领域模型。领域模型是用于收集、 组织和表示与领域相关的信息,包括了相应领域中系统的变化性和共性的知识。 但是,在具体实现时,当不同用户具有相同领域的业务需求时,如何获得 与具体系统实现无关的领域模型复用的能力;如何有效地将领域模型快速转化 为能够实现的具体系统;进一步地,如何有效的对项目过程中不断丰富的领域 模型进行组织和管理等问题均未得到很好的解决,仍然无法提高软件的开发效 率和开发质量。

发明内容
有鉴于此,本发明的主要目的在于提供一种基于领域模型的软件生成方法
5及装置,有效提高软件的开发效率和开发质量。
为达到上述目的,本发明的技术方案是这样实现的 一种基于领域模型的软件生成方法,该方法包含以下步骤
A、 将与领域相关的业务需求转化为存储的业务基础语法、以及业务基础 语法描述的领域模型;
B、 通过模型解析引擎将相应的领域模型转化为组装系统所需的源码和构件。
所述步骤A包括
Al、根据业务需求和领域在业务基础语法资料库中检索到对应的业务基础 语法;
A2、根据所述业务需求和所述业务基础语法在领域模型资料库中检索到对 应的领域模型。
所述步骤A1进一步包括未检索到对应的业务基础语法时,根据业务需 求和领域创建对应的业务基础语法,并将所述业务基础语法及业务需求、领域 与所述业务基础语法三者之间的对应关系存储于业务基础语法资料库。
所述步骤A2进一步包括未检索到对应的领域模型时,根据业务需求和 业务基础语法在领域模型资料库中创建领域模型,并将所述领域模型及业务需 求、业务基础语法与所述领域模型三者之间的对应关系存储于领域模型资料库。
所述步骤B包括
Bl、根据业务需求和领域模型在模型解析引擎资料库中检索到对应的模型 解析引擎;
B2、通过所述模型解析引擎对相应的领域模型进行转化,生成组装系统所 需要的源代码和构件。
所述步骤B1进一步包括未检索到对应的模型解析引擎时,根据业务需 求和领域模型创建对应的模型解析引擎,并将所述模型解析引擎及业务需求、 领域模型与所述模型解析引擎三者之间的对应关系存储于模型解析引擎资料 库。一种基于领域模型的软件生成装置,该装置包括生成单元和存储单元, 其中,所述生成单元用于将与领域相关的业务需求转化为存储的业务基础语法、 以及业务基础语法描述的领域模型,并通过模型解析引擎将所述领域模型转化 为组装系统所需的源码和构件;所述存储单元用于存储业务基础语法、领域模 型及模型解析引擎。
所述存储单元包括业务基础语法资料库、领域模型资料库和模型解析引 擎资料库,其中,所述业务基础语法资料库用于存储业务基础语法及业务需求、
领域与所述业务基础语法三者之间的对应关系;所述领域模型资料库用于存储 领域模型及业务需求、业务基础语法与所述领域模型三者之间的对应关系;所 述模型解析引擎资料库用于存储模型解析引擎及业务需求、领域模型与所述模 型解析引擎三者之间的对应关系。
所述生成单元包括业务基础语法确定单元、领域模型确定单元和模型解 析引擎单元,其中,所述业务基础语法确定单元用于根据业务需求和领域在业 务基础语法资料库中检索对应的业务基础语法;并且在未检索到业务基础语法 时,进一步用于根据业务需求和领域创建对应的业务基础语法,并将所述业务 基础语法及业务需求、领域与所述业务基础语法三者之间的对应关系存储于业 务基础语法资料库;所述领域模型确定单元用于根据所述业务需求和所述业务 基础语法在领域模型资料库中检索对应的领域模型,向模型解析引擎单元提供 检索到的领域模型;并且在未检索到领域模型时,进一步用于根据所述业务需 求和所述业务基础语法在领域模型资料库中创建对应的领域模型,并将所述领 域模型及业务需求、业务基础语法与所述领域模型三者之间的对应关系存储于 领域模型资料库;所述模型解析引擎单元用于根据所述业务需求和所述领域模 型在模型解析引擎资料库中检索对应的模型解析引擎,通过相应的模型解析引 擎对相应的领域模型进行转化,生成组装系统所需要的源代码和构件;并且在 为检索到模型解析引擎时,进一步用于根据所述业务需求和所述领域模型创建 对应的模型解析引擎,并将所述模型解析引擎及业务需求、领域模型与所述模 型解析引擎三者之间的对应关系存储于模型解析引擎资料库。本发明方案中,将需求分析过程中产生的用户对于领域的相关业务需求转 化为存储的业务基础语法、以及业务基础语法描述的领域模型,业务基础语法 和领域模型分别存储在业务基础语法资料库和领域模型资料库中;然后通过模 型解析引擎将相应的领域模型转化为组装系统所需的源码和构件。这样,不同 用户具有相同领域的业务需求时,只需在领域模型资料库中检索对应的领域模 型后再交由模型解析引擎处理即可,以此获得了与具体系统实现无关的领域模 型的复用能力。通过领域模型资料库的方式,可以有效的对项目实现过程中不 断丰富的领域模型进行组织和管理,可以对领域模型资料库进行添加、删除或 修改。通过与编程语言对应的模型解析引擎,获得从领域模型到具体系统实现 的快速转化能力。根据本发明提供的方案,有效提高了软件的开发效率和开发 质量,大大降低了开发成本。


图l为本发明中基于领域模型的软件生成流程图2为本发明实施例中软件开发过程示意图3为本发明中基于领域模型的软件生成装置结构示意图。
具体实施例方式
本发明提供的方案采用DDD的方法,将需求分析过程中产生的用户对于 领域的相关业务需求转化为存储的业务基础语法、以及业务基础语法描述的领 域模型,业务基础语法和领域模型分别存储在业务基础语法资料库和领域模型 资料库中;然后通过模型解析引擎将相应的领域模型转化为组装系统所需的源 码和构件。
图1为本发明中基于领域模型的软件生成流程图,如图1所示,基于领域 模型的软件生成的处理过程包括以下步骤
步骤101:判断是否根据业务需求和领域在业务基础语法资料库中检索到 对应的业务基础语法,如果检索到,则直接执行步骤103;如果未检索到,则继续执行步骤102。
虽然不同领域的业务需求可能相同,但描述却不尽相同,因此就要求不同 的业务基础语法与不同的业务需求及领域相对应。业务基础语法资料库中存储 有业务基础语法的内容及业务需求、领域与业务基础语法三者之间的对应关系, 因此,在业务基础语法资料库中,可以根据业务需求和领域对业务基础语法进 行检索,这样,就得到最终所需要的业务基础语法。
业务基础语法包括的主要内容可以为统一的业务对象定位体系;业务对 象间引用关系的表述;业务与业务对象间组成关系的表述;满足业务对象间通 信的消息传递机制;满足业务对象间通信的业务环境;业务对象管理机制;业 务数据丰富展现的视图组件;以及能够表达与或非的逻辑表达式。业务基础语 法可以采用领域特定语言(Domain Specific Language, DSL)来描述。
步骤102:根据业务需求和领域创建对应的业务基础语法,并将相应的业 务基础语法及业务需求、领域与业务基础语法三者之间的对应关系存储于业务 基础语法资料库。
步骤103:判断是否根据业务需求和业务基础语法在领域模型资料库中检 索到对应的领域模型,如果检索到,则直接执行步骤105;否则,继续执行步 骤104。
每个业务基础语法都有多个领域模型与之相对应,通过业务需求可以确定 出唯一与业务基础语法相对应的领域模型。领域模型资料库中存储有领域模型 的内容及业务需求、业务基础语法与领域模型三者之间的对应关系,因此,在 领域模型资料库中,可以根据业务需求和业务基础语法对领域模型进行检索, 这样,就得到最终所需要的领域模型。
步骤104:根据业务需求和业务基础语法在领域模型资料库中创建对应的 领域模型,并将相应的领域模型及业务需求、业务基础语法与领域模型三者之 间的对应关系存储于领域模型资料库,以此实现对领域模型资料库的添加、删 除或修改。
领域模型的具体实现可以包括系统架构模型和业务架构模型,但领域模型并不仅限于这种实现方式。创建领域模型时,可以首先根据业务需求将业务进 行模块化分层,并根据该模块化分层在业务基础语法的基础上构建层次化的系
统架构模型;然后在该层次化的系统架构模型的基础上构造满足所述业务需求 的业务架构模型;最后,在业务架构模型的基础上构建每层模型的基础语义, 并细化模型对象的属性和行为。
步骤105:判断是否根据业务需求和领域模型在模型解析引擎资料库中检 索到对应的模型解析引擎,如果检索到,则直接执行步骤107;否则,继续执 行步骤106。
模型解析引擎可以包括一个代码自动生成系统,但模型解析引擎并不仅限 于这种实现方式。代码自动生成系统主要包括五层结构的代码自动生成装置、 代码模板和代码生成引擎。
根据领域模型的划分层次,每一个代码自动生成系统至少对应于一个系统 架构模型。模型解析引擎资料库中存储有模型解析引擎的内容及业务需求、领 域模型与模型解析引擎三者之间的对应关系,因此,在模型解析引擎资料库中, 可以根据业务需求和领域模型对模型解析引擎进行检索,这样,就得到最终所 需要的模型解析引擎。
步骤106:根据业务需求和领域模型创建对应的模型解析引擎,并将相应 的模型解析引擎及业务需求、领域模型与模型解析引擎三者之间的对应关系存 储于模型解析引擎资料库。
步骤107:通过相应的模型解析引擎对相应的领域模型进行转化,生成组 装系统所需要的源代码和构件。
模型解析引擎中的代码自动生成系统的生成过程可以包括分别创建数据 模型、组件模型、流程模型、控制模型和页面模型,并根据生成规则生成代码 模板;配置代码生成的运行环境;读入所创建的各模型和生成的代码模板;验
证所创建的模型是否与对应层的元数据格式匹配,并判断代码模板中业务对象 是否均已采用特殊标记语言进行标记,如果不匹配或未进行标记,则结束当前
处理流程;对照代码模板中特殊标记语言标记的名称,在所创建的模型中查找相应名称的值进行替换,自动生成所需要的源代码和构件。
每一个代码模板都存在一个具体的编程语言与之相对应。根据该对应关系, 由代码生成引擎生成组装系统所需要的源代码和构件。
这里,只是对模型解析引擎中的生成方法给出示例性的描述,实际应用中, 并不仅限于上面所描述的实现方式。
实际软件系统的开发, 一般包括对领域内容、即业务类的开发和对非领域 内容、即技术类的开发。代表业务类的领域内容即满足用户的具体业务需求, 如电子商务领域中的产品管理、订单管理和物流管理等。代表技术类的非领域 内容即除用于满足用户的具体业务需求之外,其他需要开发的项目,如用户界 面、软件架构、各种构件和系统集成(遗留系统或第三方系统)等。
因此,从实际的软件系统的开发过程来看,对于本发明或者任何一个软件 生成系统来说,完全将一个系统照搬到另一个系统的情况是不存在的,还需要 进一步的手工修改或定制。
下面以 一个网上书店系统开发过程中的应用为例,对本发明的具体实现作 进一步详细说明,如图2所示。
传统需求分析阶段,主要是对用户的业务活动进行分析,即明确在用户的 业务环境中网上书店系统应该完成什么,并形成需求分析文档、即业务需求。
领域模型分析阶段,如图1中所述的步骤101 步骤102,主要根据需求分 析文档、即业务需求在业务基础语法资料库中检索已有的相关业务基础语法; 或者将需求分析文档、即相应领域的业务需求转化为通过领域特定语言描述的 业务基础语法,并存储在业务基础语法资料库中。
根据该网上书店系统的需求分析文档,其功能包括库存管理、图书发布
管理、物流管理、系统管理、搜索服务、购物车服务和客户服务等,并且网上 书店系统是电子商务领域中的一个典型应用。以"电子商务" 一词作为领域的 关键字,根据该关键字及业务需求在业务基础语法资料库中检索相关的业务基 础语法。如果相应业务基础语法不存在,则将需求分析文档中有关领域的内容 转化为业务基础语法。然后,以"电子商务" 一词作为领域的关键字,将该业务基础语法存储在业务基础语法资料库中。
传统系统设计阶段,主要是设计网上书店系统的模块层次结构、数据库的 结构以及模块之间的控制流程,即明确网上书店系统应该做什么、也就是处理 过程,并形成系统设计文档。在该阶段过程中,除了重新编写一个文档之外, 系统设计人员可以根据需求分析文档的结果在系统设计文档资料库中检索已有 的相关系统设计文档,以实现设计复用。
领域模型设计阶段,如图1中所述的步骤103 步骤104,主要是根据需求 分析文档和系统设计文档在领域模型资料库中检索已有的相关领域模型;或者 将需求分析文档和系统设计文档转化为通过业务基础语法描述的领域模型,并
存储在领域模型资料库中。此处的系统设计文档即为步骤103~步骤104中所述
的业务需求。
以网上书店系统的库存管理的领域模型设计为例,根据系统设计文档确定 库存管理的模块化分层包括数据层、信息层、功能层、流程层和组织层等。 以这五个层次的业务需求和电子商务的业务基础语法作为关键字,在领域模型 资料库中检索已有的相关系统架构的领域模型。如果相应领域模型不存在,则
在五层系统架构模型基础上,通过电子商务的业务基础语法,将需求分析文档 中有关领域的内容转化为领域模型;然后,以五层系统架构模型的业务需求和 电子商务的业务基础语法作为关键字,将相应领域模型存储在领域模型资料库 中。
传统系统实现阶段,主要是将传统系统设计阶段得到的描述处理过程的相 关系统设计文档转换为基于具体计算机语言实现的用于构建网上书店系统的源 代码和构件。在传统系统实现阶段中,除了重新实现一个功能之外,系统实现 人员可以根据系统设计文档在源代码和构件资料库中检索已有的相关源代码或 构件,以实现代码复用和/或构件复用。此处生成的源代码和构件,是网上书店 系统最终所需要的全部源代码和构件的 一 部分。
领域模型实现阶段,如图1中所述的步骤105 步骤107,主要是通过模型 解析引擎将相应的领域模型转化为组装系统所需的源码和构件。由图2可知,网上书店系统的最终所有源代码和构件,是由传统系统实现阶段和本发明方案 得到的源代码和构件共同组成的。
以网上书店系统的库存管理的领域模型实现为例,根据系统设计文档得到
库存管理的系统实现模型包括数据层、组件层、流程层、控制层和界面层等。 此处的系统设计文档即为步骤105 步骤106中所述的业务需求。领域模型的具 体实现可以包括系统架构模型和业务架构模型,这样,以五层系统架构模型和 五层业务架构模型作为关键字在模型解析引擎资料库中检索已有的相关模型解 析引擎。如果相应模型解析引擎不存在,则可以创建包括五层结构的代码自动 生成装置、代码模板和代码生成引擎。然后,以五层系统架构模型和五层业务 架构模型作为关键字将相应模型解析引擎存储在模型解析引擎资料库中。
传统测试实施阶段,主要是将正确的、完整的和可靠的网上书店系统交付 给最终用户使用,并保障系统持久运行。
图3为本发明中基于领域模型的软件生成装置结构示意图,如图3所示, 基于领域模型的软件生成装置包括生成单元和存储单元,其中,生成单元用 于将与领域相关的业务需求转化为存储的业务基础语法、以及业务基础语法描 述的领域模型,并通过模型解析引擎将相应的领域模型转化为组装系统所需的 源码和构件;存储单元用于存储业务基础语法、领域模型及模型解析引擎。
存储单元包括业务基础语法资料库、领域模型资料库和模型解析引擎资 料库,其中,业务基础语法资料库用于存储业务基础语法及业务需求、领域与 业务基础语法三者之间的对应关系;领域模型资料库用于存储领域模型及业务 需求、业务基础语法与领域模型三者之间的对应关系;模型解析引擎资料库用 于存储模型解析引擎及业务需求、领域模型与模型解析引擎三者之间的对应关 系。
生成单元包括业务基础语法确定单元、领域模型确定单元和模型解析引 擎单元。
其中,业务基础语法确定单元用于根据业务需求和领域在业务基础语法资 料库中检索对应的业务基础语法,向领域模型确定单元提供检索到的业务基础语法;并且在未检索到业务基础语法时,进一步用于根据业务需求和领域创建 对应的业务基础语法,并将相应的业务基础语法及业务需求、领域与业务基础 语法三者之间的对应关系存储于业务基础语法资料库。
领域模型确定单元用于根据业务需求和业务基础语法在领域模型资料库中
检索对应的领域模型,向模型解析引擎单元提供检索到的领域模型;并且在未 检索到领域模型时,进一步用于根据业务需求和业务基础语法在领域模型资料 库中创建对应的领域模型,并将相应的领域模型及业务需求、业务基础语法与 领域模型三者之间的对应关系存储于领域模型资料库。
模型解析引擎单元用于根据业务需求和领域模型在模型解析引擎资料库中 检索对应的模型解析引擎,通过相应的模型解析引擎对相应的领域模型进行转 化,生成组装系统所需要的源代码和构件;并且在为检索到模型解析引擎时, 进一步用于根据业务需求和领域模型创建对应的模型解析引擎,并将相应的模 型解析引擎及业务需求、领域模型与模型解析引擎三者之间的对应关系存储于 模型解析引擎资料库。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
权利要求
1、一种基于领域模型的软件生成方法,其特征在于,该方法包含以下步骤A、将与领域相关的业务需求转化为存储的业务基础语法、以及业务基础语法描述的领域模型;B、通过模型解析引擎将相应的领域模型转化为组装系统所需的源码和构件。
2、 根据权利要求l所述的方法,其特征在于,所述步骤A包括Al、根据业务需求和领域在业务基础语法资料库中检索到对应的业务基础语法;A2、根据所述业务需求和所述业务基础语法在领域模型资料库中检索到对应的领域模型。
3、 根据权利要求2所述的方法,其特征在于,所述步骤A1进一步包括未检索到对应的业务基础语法时,根据业务需求和领域创建对应的业务基础语法,并将所述业务基础语法及业务需求、领域与所述业务基础语法三者之间的对应关系存储于业务基础语法资料库。
4、 根据权利要求2所述的方法,其特征在于,所述步骤A2进一步包括未检索到对应的领域模型时,根据业务需求和业务基础语法在领域模型资料库中创建领域模型,并将所述领域模型及业务需求、业务基础语法与所述领域模型三者之间的对应关系存储于领域模型资料库。
5、 根据权利要求l所述的方法,其特征在于,所述步骤B包括Bl、根据业务需求和领域模型在模型解析引擎资料库中检索到对应的模型解析引擎;B2、通过所述模型解析引擎对相应的领域模型进行转化,生成组装系统所需要的源代码和构件。
6、 根据权利要求5所述的方法,其特征在于,所述步骤B1进一步包括未检索到对应的模型解析引擎时,根据业务需求和领域模型创建对应的模型解析引擎,并将所述模型解析引擎及业务需求、领域模型与所述模型解析引擎三 者之间的对应关系存储于模型解析引擎资料库。
7、 一种基于领域模型的软件生成装置,其特征在于,该装置包括生成单 元和存储单元,其中,所述生成单元用于将与领域相关的业务需求转化为存储的业务基础语法、 以及业务基础语法描述的领域模型,并通过模型解析引擎将所述领域模型转化 为组装系统所需的源码和构件;所述存储单元用于存储业务基础语法、领域模型及模型解析引擎。
8、 根据权利要求7所述的装置,其特征在于,所述存储单元包括业务基 础语法资料库、领域模型资料库和模型解析引擎资料库,其中,所述业务基础语法资料库用于存储业务基础语法及业务需求、领域与所述 业务基础语法三者之间的对应关系;所述领域模型资料库用于存储领域模型及业务需求、业务基础语法与所述领域模型三者之间的对应关系;所述模型解析引擎资料库用于存储模型解析引擎及业务需求、领域模型与 所述模型解析引擎三者之间的对应关系。
9、 根据权利要求8所述的装置,其特征在于,所述生成单元包括业务基 础语法确定单元、领域模型确定单元和模型解析引擎单元,其中,所述业务基础语法确定单元用于根据业务需求和领域在业务基础语法资料 库中检索对应的业务基础语法;并且在未检索到业务基础语法时,进一步用于根据业务需求和领域创建对应的业务基础语法,并将所述业务基础语法及业务 需求、领域与所述业务基础语法三者之间的对应关系存储于业务基础语法资料库;所述领域模型确定单元用于根据所述业务需求和所述业务基础语法在领域 模型资料库中检索对应的领域模型,向模型解析引擎单元提供检索到的领域模 型;并且在未检索到领域模型时,进一步用于根据所述业务需求和所述业务基础语法在领域模型资料库中创建对应的领域模型,并将所述领域模型及业务需求、业务基础语法与所述领域模型三者之间的对应关系存储于领域模型资料库;所述模型解析引擎单元用于根据所述业务需求和所述领域模型在模型解析引擎资料库中检索对应的模型解析引擎,通过相应的模型解析引擎对相应的领域模型进行转化,生成组装系统所需要的源代码和构件;并且在为检索到模型解析引擎时,进一步用于根据所述业务需求和所述领域模型创建对应的模型解析引擎,并将所述模型解析引擎及业务需求、领域模型与所述模型解析引擎三者之间的对应关系存储于模型解析引擎资料库。
全文摘要
本发明公开了一种基于领域模型的软件生成方法及装置,将需求分析过程中产生的与领域相关的业务需求转化为存储的业务基础语法、以及业务基础语法描述的领域模型;然后通过模型解析引擎,将相应的领域模型转化为组装系统所需的源码和构件。这样,不同用户具有相同领域的业务需求时,只需在领域模型资料库中检索对应的领域模型后再交由模型解析引擎处理即可,以此获得了与具体系统实现无关的领域模型的复用能力。通过领域模型资料库的方式,可以有效的对项目实现过程中不断丰富的领域模型进行组织和管理。最终通过模型解析引擎,获得从领域模型到具体系统实现的快速转化能力。根据本发明,能够有效提高软件的开发效率和开发质量,大大降低开发成本。
文档编号G06F9/44GK101488086SQ20081024076
公开日2009年7月22日 申请日期2008年12月23日 优先权日2008年12月23日
发明者任允培, 张克鹏, 王洪伟 申请人:北京中企开源信息技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1