2024年5月1日发(作者:)

龙源期刊网

领域模型在订单管理系统开发中的应用研究

作者:周梦姝 杨杏 王小刚 殷振华

来源:《电子技术与软件工程》2016年第01期

面向特定领域模型的数据处理方法对于软件重用、软件可升级和软件开发效率的提高都有

重要的指导意义。论文首先分析领域模型内涵,提出了构造基于领域模型软件系统架构的一般

方法,进而结合订单管理系统的开发,介绍了领域模型的应用方法和处理流程。实践表明,基

于领域模型的系统开发方法能极大提高实际软件系统的开发效率。

【关键词】领域模型 事务脚本 表模块 表数据模型

1 前言

面向对象编程技术的出现改变了以数据为中心的传统软件开发方式。在数据模型的设计与

实践应用中,基于领域模型的数据设计方式逐渐成为主流。传统的数据处理模型主要采用行入

口、表入口数据层叠方式,即为数据表中的每一行设计一个对象,后续再采用对象方式进行数

据处理,对业务处理却没有特别关注。基于领域的设计模型,主要采用可视化方式表示领域内

的概念类或现实世界中的对象。领域模型又称为概念模型、领域对象模型或者分析对象模型,

它专注于分析问题领域本身,注重发掘重要的业务领域概念,并建立业务领域概念之间的关

系,可让软件开发人员和系统设计人员更加注重处理业务的表达,而不是重点关注数据的层叠

处理,从而极大地提高业务处理的效率。

2 领域模型

领域模型采用面向对象的开发方式处理数据,侧重业务模型的建立,使得系统的开发主要

围绕业务而非数据表,可使开发人员主要聚焦领域而非数据。基于领域模型开发软件系统时,

通常采用三层次的系统架构,这三个层次分别是数据访问层、领域层(业务逻辑层,系统真正

的核心)和表现层,其中,数据访问层负责与数据源进行通信,为上层应用提供数据支撑;领

域层(业务逻辑层)完成系统业务的组织、实现,是系统真正的核心;表现层负责实现用户界

面,提供更好的人机交互。

系统三层次架构如图1所示,层与层之间存在相互依赖的关系,表现层依赖领域层,领域

层依赖数据访问层。

系统三层次架构中领域层(业务逻辑层)是系统的核心,其逻辑组织方式主要采用事务脚

本、表模块和表数据模型这三种模式。

2.1 事务脚本

龙源期刊网

事务脚本模式将应用界面获取的数据直接存储到数据库中,或者直接从数据库中获取所需

数据并在用户界面中进行展示,这种数据访问模式可使软件开发人员快速掌握基于某种语言的

数据库访问技术和过程,因此,非常适合初学者学习和使用。

事务脚本模式处理领域业务时常用两种领域组织方式,一是将领域逻辑的设计放入存储过

程中,调用者通过执行存储过程即可获取或者维护数据;另一种方式是将领域逻辑的设计放入

应用界面中,再编写对应的结构化查询语句(SQL)实现数据的存取处理。使用存储过程方式

的缺点在于业务逻辑发生变化后,对应的存储过程必须相应地变化。此外,由于不同数据库产

品对SQL语句实现的差异会导致存储过程的语法不能通用。将业务逻辑包含在页面中也有其

固有的缺点,一旦业务发生变化,必须重新定义用户界面;此外,相同的业务逻辑可能应用于

多个界面,这样业务发生变化后则需要多次修改用户界面。尽管如此,事务脚本模式由于其简

单、直观,仍是初学者常用的领域层逻辑组织方式。

2.2 表模块

表模块模式以数据表为基础,每次以表为单位存取数据,以表为中心组织业务逻辑。目

前,大多数开发者都采用表模块模式,如在.NET平台中,DataSet,DataTable都采用以表为组

织结构的表模块实现方式;在大型的管理信息系统(MIS)中,借助于代码生成器(如

CodeSmith)可以快速生成一个应用系统的代码,开发效率非常高。

使用表模块模式开发系统时,主要围绕数据的增、删、改、查处理数据,业务逻辑组织往

往比较单一,业务被分派到不同的功能函数中,借助于事务调用不同的功能函数来完成整体的

业务逻辑。表模块模式的实现过程通常包括定义数据模型、定义数据访问类、定义业务逻辑类

和组织表现层数据等步骤。表模块的开发方式是过去几年的主流开发方式,并且有很多优秀的

开源库和工具可供使用。

2.3 表数据模型

表数据模型主要通过直观的可视化数据表,设计表间联系,实现业务逻辑,可让软件开发

人员和系统设计人员更加注重处理业务的表达,而不是重点关注数据的层叠处理,业务处理效

率非常高。以下订单管理系统分析领域模型的应用方法,实现领域模型驱动的数据处理。

3 订单管理系统

订单管理系统首先接受顾客提交的订单信息,然后查询商品库存,以获取商品的详细信

息,最后确定商品送货方案。订单管理系统的开发主要涉及数据库表的设计和基于领域模型的

业务逻辑处理。

3.1 数据库表

龙源期刊网

订单管理系统使用的数据库包括用户、订单、商品和订单详情四张表,表的结构和表间的

逻辑关系如图2所示。

3.2 领域模型

基于领域模型开发应用系统时通常分为业务建模、数据抽象、转换为实体、定义业务规范

和实现业务规范步骤。

3.2.1 业务建模

业务建模要求将系统的业务采用建模方式确定下来,以后的开发工作都围绕所建模型进

行,这样能有效控制需求和开发人员变化导致的开发风险。例如在订单管理系统中,为获取订

单中商品列表,相应的业务过程如图3所示。

3.2.2 数据抽象

数据抽象指根据业务流程,抽象出业务流程所涉及的业务实体,并将实体及其相互关系标

注出来。如在获取客户订单中商品明细处理中,经数据抽象得到的业务实体间逻辑关系如图4

所示。

在抽象出来的逻辑关系中,订单和订单详情是一对多的关系,订单详情和商品是多对多的

关系,顾客和订单是一对多的关系。

3.2.3 转换为实体

在抽取业务模型的基础上,还需将业务模型中的对象转换为实体。在转换过程中,需要使

用面向对象的方式组织对象之间的关系。获取客户订单中订单模型转换为实体的代码如下:

public class Order{

public string Id { get; set; }

public DateTime OrderDate { get; set; }

public decimal Total { get; set; }

/// 订单所属的用户

public virtual Customer Customer {get;set;}

/// 订单对应的明细列表

龙源期刊网

public virtual ICollection DetailList { get; set; }

}

3.2.4 定义业务规范

业务规范是领域模型中的核心,定义业务规范就是明确业务对象之间的关系和使用方式。

在定义业务规范的过程中,常借助于构建规约完成规范的创建。如在获取客户订单中商品明细

处理模块中,相应业务规范的定义如下:

public interface IOrderContract {

///根据登录用户获取跟用户的商品列表

IEnumerable GetOrderProductList(string customerId);}

public class OrderComponent: IOrderContract {IEnumerable

erProductList(string customerId){

//1.构建规约,按用户编号获取用户信息

//2.获取Customer的订单列表OrderList

//3.遍历OrderList中的DetailList

//4.遍历DetailList中的产品列表

//TODO:根据上述注释填写代码

}

}

从定义的业务规范中可以看出,获取ProductList的过程变成了几个相关对象的业务合并,

也就是说一个领域模块的完成是由多个子模块组合而成,而这些子模块又满足事务约定。

3.2.5 实现业务规范

在定义业务规范基础上,最后要实现业务规范。如在获取客户订单中商品明细处理模块

中,相应的业务规范实现如下:

龙源期刊网

public class OrderComponent : IOrderContract{IEnumerable

erProductList(string customerId){

//1.构建规约,按用户编号获取用户信息

//2.获取Customer的OrderList

//3.遍历OrderList中的DetailList

//4.遍历DetailList中的产品列表

//TODO:根据上述注释填写代码

var orders = (customerId).OrderList;

var details = ailList(orders);

return ductList(details);}

}

4 总结

本文在阐述领域模型设计原理与方法的基础上,结合订单管理系统的开发,介绍了领域模

型的应用方法和处理流程。应用实践表明,面向特定领域模型的数据处理方法对于软件重用、

软件可升级性和提高开发系列软件系统的效率都有重要的指导意义。

参考文献

[1] 吕有界.基于Modelica多领域建模仿真研究现状与思考[J].广州航海学院学报,2014

(02).

[2] 叶新,潘清,董正宏.多领域建模仿真方法综述[J].软件,2014(03).

[3] 丁宝宝,沈立炜,彭鑫,赵文耘.软件产品线领域模型与应用模型的通用同步演化方法

[J].小型微型计算机系统,2015(02).

[4] 黄洋,沈立炜,彭鑫.通用的软件产品线领域与应用特征模型演化同步框架[J]. 计算机

科学,2013(11).

龙源期刊网

[5] 余敦辉,何克清,李兵.基于模型聚类算法的领域问题本体构建[J].小型微型计算机系

统,2013(01).

作者简介

周梦姝(1995-),女,重庆市合川区人。现为常州信息职业技术学院软件学院助教。研

究方向为软件技术。

作者单位

1.常州信息职业技术学院软件学院 江苏省常州市 213164

2.苏州科大讯飞教育科技有限公司 江苏省苏州市 215002