一、什么是领域建模(Domain Modeling)
1、概念
(1) 领域模型(又称概念模型、领域对象模型、分析对象模型)是对领域内的概念类或现实世界中对象的可视化表示分析方法
a. 专注于分析问题领域本身
b. 发掘重要的业务领域概念
c. 建立业务领域概念之间的关系
(2)领域模型是描述业务用例实现的对象模型
a. 是对业务角色和业务实体之间应该如何联系和协作以执行业务的一种抽象
b. 从业务角色内部的观点定义了业务用例
c. 为产生预期结果确定了业务人员以及他们处理和使用的对象之间应该具有的静态和动态关系
d. 注重业务中承担的角色及其当前职责
2、分析内容
(1)模型(Model)
模型通常由两部分组成:
a. 元素(Element)
b. 关系(Relationship):指的是元素间的关系
(2)领域建模(Domain Modeling)
用领域建模分析的主要是:
a. 寻找业务对象(Business Object)
b. 恰当建立这些对象间的关系
二、项目需求
1、工程实践题目:
智能合约的工具调研
2、项目需求:
对目前流行的智能合约领域的分析、测试、验证等相关工具或者框架展开调研,主要内容包括工具类型、可检测到的漏洞种类、工具开发语言、存在的不足及改进方法,选取其中两个工具进行完善,开发一个系统进行以上内容的整合。
三、针对工程实践项目的业务领域建模
主要分为以下四个步骤进行完成。
1、Collect application domain information 收集应用领域信息
第一步是收集应用领域信息。首先需要关注系统所处理主要业务的功能需求,还要将其他非功能性需求和用户的需求。
在我的工程实践项目中,功能性需求包括:
(1)查询某个工具的相关信息;
(2)比较系统中所包含的任意两个智能合约工具;
(3)对于用户指定的智能合约,能够使用不同的工具进行运行、分析并给出结果。
非功能性需求包括:
可用性、可靠性、系统性能以及其他扩展非功能性需求(包括物理、安全、实施、维护等)
2、Brainstorming
第二步需要充分发挥主观能动性,可分为三个小步骤进行:
(1)列出重要的应用程序域概念
(2)列出它们的属性
(3)列出它们之间的关系
根据第一步列出的所有功能性需求和非功能性需求,可得出如下的几个类:
(1)智能合约工具:
属性:工具ID,工具类型,可检测到的漏洞类型,开发语言,开发时间,开发团队,其他详细信息等。
(2)安全漏洞:
属性:漏洞ID,漏洞类型,可造成的后果等
(3)查询比较信息:
a. 功能:查询某个工具的相关信息,包括工具类型、可检测到的漏洞种类、工具体验、与其他同类工具的比较、工具的改进方案。
b. 属性:查询功能ID,工具ID,漏洞ID等。
(4)分析合约:
a. 功能:对用户上传的智能合约能够展开分析,并且给出分析结果。
b. 属性:分析合约ID,合约ID,合约类型,漏洞ID,分析结果等。
(5)用户:
属性:用户ID,用户名,密码,用户权限等。
(6)管理员:
属性:管理员ID,管理员名,密码,用户权限等。
3、Classifying the domain concepts
第三步将领域概念分为:
(1)类
(2)属性/属性值
(3)关系:association, inheritance, aggregation
根据第二步的分析, 我们可以抽象抽六个类:智能合约工具类、安全漏洞类、查询比较信息类、分析合约类、用户类、管理员类。
4、Document result using UML class diagram
因此工程实践项目的业务类图如下所示: