业务领域建模Domain Modeling
一 领域模型是什么?
领域模型(domain model)是对领域内的概念类或现实世界中对象的可视化表示。领域模型也成为概念模型、领域对象模型和分析对象模型
此领域模型的定义源于《UML和模式应用》一书,个人认为这本书中对领域建模的概述是最完整、可操作性最强的。
领域模型是一种概念模型,也叫问题域模型。它表述的是某个领域的现实概念。
二 领域模型有什么特点?
将书中提到的观点总结,有如下三点内容:
第一,领域模型是业务概念的可视化描述,是需求分析的产物;
第二,领域模型用于指导程序设计,但领域模型与实现方式无关,领域建模时不应该考虑如何实现;
第三,领域模型需要同项目所有成员(客户、项目经理、开发、测试…)达成共识。
三 为什么要做领域建模?
首先,建模的重要性在所有工程实践中都已经得到了广泛的认同。
建模是一种抽象和分解的方法,它可以将复杂的问题拆解成一个个抽象,代表了特定的一块密集而内聚的信息。
从上世纪80年代开始,人们对于面向对象建模产生了许多思考和方法,其中最流行的就是面向对象分析与设计。面向对象分析,强调的是在问题域发现并描述概念,解决的问题是做正确的事情。面向对象设计,强调的是定义软件对象,解决的问题是正确的做事情。
领域模型就是面向对象分析的主要产物,它表达了对现实问题的描述和抽象。
大多数人可能可能会有质疑:不做分析和设计,我也可以直接去做代码实现(甚至使用面向过程的编程语言),一样可以完成软件的功能需求,何必花心思去做建模呢?
但实际上,这样做会有以下弊端:
首先,如果不做设计直接实现,俗称走一步看一步。很大可能在开发过程中发现思维局限,开发进度推倒重来。
其次,如果不做分析直接设计,看起来没什么问题。遗憾的是,通过这种方式构造的代码,并没有和现实世界连接起来,当我们的软件和需求稍加修改,这份代码就可能变得异常混乱和难以维护。而通过领域建模的,自上而下的设计,可以保证代码实现的层次结构和模块划分是科学的、稳定的。
总的来说:
领域建模可以降低软件和现实世界之间的差异,用真实的业务概念划分职责,目的是实现一个可以高效低成本维护的可持续发展的软件系统。
从领域模型推导到系统实现是一套引导思考的方式,也是一套科学的开发流程。其核心目的在于提供了系统设计的“指导方针”。领域模型必须站在用户需求和业务发展的角度上,既可以用来同客户沟通验证需求,又可以避免模型因实现的考量而带偏(实现成本、遗留系统)。
四 工程实践的业务领域建模
我的工程实践选题是物联网组网智能分析引擎。
本文将按照以下几个步骤完成建模的过程:
4.1 Collect application domain information
第一步是收集应用领域的信息,其核心在于了解业务中所涉及的功能需求是什么,也就是说本系统区别与其他系统最显著的特点,比如在电商系统中其最主要的功能需求就是浏览商品详情、购物车、订单等功能。
在核心功能需求之后所需要考虑的,是用户其他的非功能性需求,再以电商系统为例,个人中心可能不是功能需求,但对于用户而言这样的功能不能缺少,所以再建模的时候也需要考量。
那么,针对于我的工程实践选题,分析出的业务需求有以下几点:
一是提供合适的组网方案;
二是按照用户要求从数据库中筛选信息;
三是对于筛选的数据进行可视化展示;
四是组网方案的反馈;
五是将两个不同的组网方案进行比对并呈现结果。
4.2 Listing important application domain concepts
第二步是对于之前所提取出的功能性需求,列举出这些功能性方法中所涉及到的属性,以及这些属性之间的关系,比如电商系统的购物车功能模块中就涉及到商品名称、商品价格等信息,而这些属性是属于商品模块中的,这种就是属性之间跨域的联系。
那么,按照第一步中所做的业务功能需求,将其中所涉及的属性列举:
一,组网方案,这是本项目的核心,所牵涉到的属性也是最多的,有:组网方案ID、成本、典型组网方式、开发周期、测试标准、交付周期、功能(充电、唤醒、WIFI、ZIGBEE组网、协议支持、远程配置等)。
二,组网反馈信息,其中的属性有:用户ID、用户名、反馈的组网方案ID、反馈的详细信息、反馈时间。
三,用户的信息,包含:用户ID、用户名、密码、电话号码、邮箱。
四,管理员的信息,包含:管理员ID、管理员姓名、密码、电话号码、负责的业务。
4.3 Classifying the domain concepts into classes
第三步,将之前所提取出的功能需求方法以及属性整合成类。
按照前两部的分析结果,可以得出以下类:
一,用户类;二,管理员类;三,组网信息类;四,组网方案类;五,反馈信息类。
4.4 Document result using UML class diagram
最后,绘制业务类图,其结果如下。
五 参考链接
https://www.jianshu.com/p/2828874af134
http://www.fanyilun.me/2018/04/08/%E8%B0%88%E8%B0%88%E9%A2%86%E5%9F%9F%E5%BB%BA%E6%A8%A1/
https://blog.csdn.net/significantfrank/article/details/79614915