基于领域驱动的专利申报系统设计

2017-05-31 08:56赵悦杜俏俏
软件导刊 2017年5期

赵悦 杜俏俏

摘要摘要:领域驱动设计是一种基于模型驱动开发思想的崭新的开发方式,其核心是领域模型,相较之前基于数据库驱动的开发方法,更强调领域的概念,且架构清晰、对象职责明确、可复用性好。基于领域驱动设计对专利申报系统进行架构设计,让申报系统在实现时对专利申报系统业务过程准确建模并根据其业务过程而调整,使得整个系统层次分明,具有良好的可扩展性、可移植性。

关键词关键词:领域驱动设计;领域模型;专利申报系统

DOIDOI:10.11907/rjdk.162881

中图分类号:TP319

文献标识码:A文章编号文章编号:16727800(2017)005006303

0引言

随着计算机科学技术的飞速发展,软件开发质量和后期维护越来越受到各行各业的重视,传统的 Web 平台开发工作趋向于一种以技术为先导的开发方式,这些软件开发的指导原则依然是基于数据库设计,然而传统以数据库为核心的开发方式并不能很好地满足要求。 目前,很多系统都存在过分依赖数据库的现象,无形中给数据库造成了相当大的压力,随着系统负载的不断增加,数据库的压力将越来越大,最终数据库因不堪重负而宕掉[1]。

领域驱动设计方法抛弃了分裂分析模型与设计的做法,它强调以业务逻辑为核心,进行领域模型的构建,并将注意力放在领域的模型构建与代码匹配上。领域驱动设计思想旨在通过使用统一协作的编程语言,来消除领域专家与开发人员之间的隔阂,从而使用领域模型来满足两者的要求,完成软件开发工作。同时,领域模型的研究又为软件复用提供了良好的支持,通过领域分析,确定需求中的共性与变化性,从而构造出可复用的业务语义及构件,不仅能够实现代码的复用,也能实现功能模块和领域模型的复用[2]。

专利申报报系统具有业务过程复杂,以及开发过程的规范性、集成性等特点,若采用传统数据库驱动的设计方式,很难将需求信息完整地表达,同时也会陷入过程化编程的困境中。为了避免这些问题,将领域驱动设计这一思想引入到专利申报系统中,根据专利申报系统的业务进行

领域模型的建立,搭建系统分析与设计的良好沟通桥梁,实现系统开发目的的同时实现软件复用。基于领域驱动设计对专利申报系统进行架构设计,使系统分层架构更清晰,提高了软件开发的可维护性和可扩展性,促进了专利申报系统平台的构建。

1系统功能架构

1.1功能架构设计

专利业务管理系统功能主要包括:基础信息、案件管理、专利申请管理、专利托管管理、财务管理、个人工作台六大模块。功能模块如图1所示。

1.2系统建设特点

(1)技术先进。采用业界先进的J2EE架构开发,采用主流的框架Spring、Mybatis、Srping MVC,通过领域建模的方式对系统进行分析和设计,以实现最大的适应性和单元选择的自由度,以及在企业发展时具有改变和增加系统的能力,提高系统的可扩展性。

(2)易用性。系统为B/S结构,客户端不需要安装任何软件。界面通过Bootstrap前台框架能对各类设备的屏幕进行自适应调整,方便用户操作。系统将避免代理部通过国家专利局申报系统编辑CPC包时速度过慢的问题,专利撰写人员可以像正常使用Word文档一样进行专利文档编辑,极大提高了编辑速度。

(3)灵活的权限控制。通过角色设置,用户可以拥有不同的操作权限。

(4)高集成度。所有功能模块在设计时通盘考虑,无缝联接,数据交换无障碍。

(5)柔性化系统设计。本系统采用柔性化设计,对可能变化的功能和需求部分,比如国家专利模板管理和CPC压缩包生成模块,以后如果需要修改,只需要根据接口重新开发特定的类或更新配置文件即可,不影响其它模块的功能。

(6)信息安全。对于关键敏感数据,比如密码、金额,采用国际标准加密算法对数据进行加密,数据库中存放密文或检验码,防止从数据库直接查看或修改。

2领域驱动架构设计

2.1领域驱动设计优势

领域驱动设计(DomainDriven Design,DDD)是领域驱动设计大师 Eric Evans[3]在2004提出的软件开发概念,是一种基于模型驱动开发(MDD)思想的崭新的开发方式,目的是让软件系统在实现时准确地基于对真实业务过程的建模并根据真实业务过程的调整而调整。

本文采用業内领先的领域模型驱动设计方法,基于领域模型的设计思想,业务逻辑不再集中在几个大型的类上,而是由大量相对小的领域对象(类)组成,这些类具备自己的状态和行为,每个类是相对完整的独立体,并与现实领域的业务对象映射。领域模型就是由许多细粒度的类组成。基于领域驱动设计,保证了系统的可维护性、扩展性和复用性。

领域驱动设计的专注点在于领域模型的研究,它是以模型驱动设计为根基,以软件领域为着眼点,专注于领域模型的构建与代码匹配,并将模型作为领域专家和软件开发人员交流的一种开发方式[4]。

领域驱动的核心应用场景就是解决复杂业务的设计问题,其特点与这一核心主题息息相关。

(1)分层架构与职责划分。领域驱动设计很好地遵循了关注点分离的原则,提出了成熟、清晰的分层架构。同时对领域对象进行了明确的策略和职责划分,让领域对象和现实世界中的业务形成良好的映射关系,为领域专家与开发人员搭建了沟通的桥梁[5]。

(2)复用。在领域驱动设计中,领域对象是核心,每个领域对象都是一个相对完整的内聚的业务对象描述,所以可以形成直接的复用。同时设计过程是基于领域对象而不是基于数据库的映射,因而整个设计是可以复用的。

(3)使用场景。适合具备复杂业务逻辑的软件系统,对软件的可维护性和扩展性要求比较高。

领域驱动设计将系统整个架构分为4层,其核心就是领域层,所有业务逻辑都应在领域层实现,具体描述如下:①用户界面/展现层。负责向用户展现信息以及解释用户命令;

②应用层。很薄的一层,用来协调应用的活动。它不包含业务逻辑,不保留业务对象的状态,但保有应用任务的进度状态;

③领域层。本层包含关于领域的信息,这是业务软件的核心所在,保留业务对象的状态,业务对象及其状态的持久化被委托给基础设施层;

④基础设施层。本层作为其它层的支撑库存在,提供层间的通信,实现对业务对象的持久化,包含对用户界面层的支撑库等作用。

2.2专利申报系统领域驱动架构设计

本系统中对领域模型驱动进行了具体设计,其框架如图2所示。

基于专利申报系统的业务需求,对每层的设计进行详细说明如下:①存储层:采用SQL Server2003以上版本为数据库管理软件,数据库独立使用,不与其它系统共享;②数据层:按领域模型对专利申报业务进行建模,保证业务的独立性,当某一个业务模块因为需求改变而修改时,尽量不会引起其它业务模块的变动,从而提高软件的可维护性;③应用层:系统将各模块统一功能独立出来,采用统一的模块或框架进行开发,分为定时任务、报表服务、邮件服务、短信服务、工作流服务等,各业务模块接口可以在此基础上按模块进行装配和升级;④表示层:本次系统只开发Web客户端程序,页面将采用Bootstrap技术,可根据不同的浏览器和机器的屏幕,自动调整页面的布局和样式,提高用户的浏览体验。

系统服务层将采用目前主流的开发框架(Spring+Spring Mvc+Mybatis)开发,以提高项目的质量和可维护性。为了适应管理对软件功能的变更,系统服务层采用柔性设计,业务模块可通过组装的方式搭建,通过高内聚、低耦合的方式进行迭代式开发。

2.3专利申报系统领域模型设计

专利业务管理系统功能主要分为六大功能模块,下面以案件管理模块为例进行领域模型设计。

案件管理模塊主要业务是先登记新案件,案件类型分为:专利(发明专利、实用新型专利、外观设计专利)、软件著作权、高新技术企业认证、知识产权贯标。案件启动后,案件分配人指定案件代理人,代理人联系客户,登记案件进展和客户联系信息。对于专利类申请,代理人直接利用Word对专利等文档进行编辑,编辑完成后,上传所有文档,系统自动生成CPC压缩文件并导出。代理人办理

3结语

本文基于领域驱动设计,针对专利申报系统完成了整个系统的架构设计,并根据案件管理模块具体的业务逻辑进行领域模型设计。运用领域驱动设计可以解决复杂的业务逻辑问题,让领域对象和现实世界中的业务形成良好的映射关系,对领域对象进行明确的策略和职责划分。后续会对其它模块进行领域模型设计,以完成整个系统设计。

参考文献参考文献:

[1]丁涛.基于领域驱动设计的物流平台系统实现[D].成都:电子科技大学,2010.

[2]张金松.领域驱动设计在航务海事系统中的应用研究[D].大连:大连海事大学,2010.

[3]郑家茂.开放-创新-实验教学新模式[M].北京:高等教育出版社,2009.

[4]梁慧军,张新刚.计算机网络实验教学的改革与创新型人才的培养[J].南阳师范学院学报,2010(12):107108.

[5]黄光芳,金义富.基于领域驱动设计构建企业级Web平台的应用[D].湛江:湛江师范学院,2013.

责任编辑(责任编辑:孙娟)