一、什么是领域建模(Domain Modeling)
领域模型(又称概念模型、领域对象模型、分析对象模型)是对领域内的概念类或现实世界中对象的可视化表示分析方法:专注于分析问题领域本身、发掘重要的业务领域概念、建立业务领域概念之间的关系。领域模型是描述业务用例实现的对象模型是对业务角色和业务实体之间应该如何联系和协作以执行业务的一种抽象, 从业务角色内部的观点定义了业务用例,为产生预期结果确定了业务人员以及他们处理和使用的对象之间应该具有的静态和动态关系并且注重业务中承担的角色及其当前职责。领域模型设计的步骤为:1. 从业务描述中提取名词;2. 从提取出来的名词中总结业务实体,区分名词中的属性、角色、实体、实例,形成问题域中操作实体的集合;3. 从业务实体集合中抽象业务模型,建立问题域的概念(例如在前面的例子中,我们把容易变质的水果称之为“短期保持水果”,当然也可以是其它说法,只要能跟用户达成共识即可);4. 用UML提供的方法和图例进行领域模型设计、确定模型之间的关系;
二、项目需求
1、工程实践题目:
基于caffe的风格迁移系统
2、项目需求:
基于web的展示系统,能够让用户选择风格、提供自定义风格训练自己的图片、视频。并提供一定的直播功能(速度、质量上存在限制)。
三、针对工程实践项目的业务领域建模
主要分为以下四个步骤进行完成。
1、Collect application domain information 收集应用领域信息
第一步是收集应用领域信息并关注系统所处理主要业务的功能需求,以及其他非功能性需求和用户的需求。
功能性需求包括:
(1)核心的算法模块提供训练模型,神经网络等基本算法功能;
(2)web服务器环境提供基本的后台功能;
(3)前端模块用于收集和响应用户的数据和行为。
非功能性需求包括:
可用性、可靠性、系统性能以及其他扩展非功能性需求(包括物理、安全、实施、维护等)
2、Brainstorming
第二步需要充分发挥主观能动性,可分为三个小步骤进行:
(1)列出重要的应用程序域概念
(2)列出它们的属性
(3)列出它们之间的关系
根据第一步列出的所有功能性需求和非功能性需求,可得出如下的几个类:
(1)算法模块:
属性:算法ID,算法类型,可检测到的漏洞类型,开发语言,开发时间,开发团队,其他详细信息等。
(2)服务器模块:
属性:服务器ID,服务器类型,环境、性能等。
(3)前端模块:
属性:前端模块组成、前端功能、输入数据、配置等。
3、Classifying the domain concepts
第三步将领域概念分为:
(1)类
(2)属性/属性值
(3)关系:association, inheritance, aggregation
根据第二步的分析, 我们可以抽象抽六个类:算法类、配置模块类、前端模块类、服务器类。
4、Document result using UML class diagram
工程实践项目的业务类图如下所示: