领域模型设计 领域模型

领域模型是对领域内的概念类或现实世界中对象的可视化表示。又称概念模型、领域对象模型、分析对象模型。它专注于分析问题领域本身,发掘重要的业务领域概念,并建立业务领域概念之间的关系。

中科永联高级技术培训中心(www.itisedu.com)

业务对象模型(也叫领域模型)是描述业务用例实现的对象模型。它是对业务角色和业务实体之间应该如何联系和协作以执行业务的一种抽象。

业务对象模型从业务角色内部的观点定义了业务用例。该模型为产生预期效果确定了业务人员以及他们处理和使用的对象(“业务类和对象”)之间应该具有的静态和动态关系。它注重业务中承担的角色及其当前职责。这些模型类的对象组合在一起可以执行所有的业务用例。

一、业务对象模型(领域模型)的核心元素

业务角色显示了一个人承担的一系列职责。
业务实体表示使用或产生的可交付工件、资源和事件。
业务用例实现显示了协作的业务角色和业务实体如何执行某个工作流程。使用以下几种图来记录业务用例实现:
图显示参与的业务角色和业务实体。
活动图,其中泳道显示业务角色的职责,而对象流显示如何在工作流程中使用业务实体。
序列图描述业务角色和业务主角之间交互的详细情况,并显示如何在业务用例执行过程中访问业务实体。

业务对象模型将结构的概念和行为的概念结合了起来。

它是一个纽带工件,用于对业务关系进行清晰的表述,表述方式与软件开发人员的思考方式类似,同时仍保留一些纯粹的业务内容。将我们所知道的有关业务的信息按照对象、属性和职责进行了合并。

它探索业务领域知识的本质,所采用的方式使我们能够从对业务问题的思考转变到对软件应用程序的思考上来。

它是一种确定需求的方法,使需求能够为待建信息系统使用,并得到该系统的支持。

确定业务对象定义、对象间关系、对象名称和对象间关系名称的流程使我们能够以一种能被业务领域专家理解和验证的精确方式来表达业务领域知识。

二、如何命名业务角色和业务实体

对每个业务角色和实体进行命名,要求名称能够表示对象的职责。

一个好的名称通常是名词或动词的名词形式。
每个名称都必须是唯一的。
避免使用发音或拼写类似的词以及同义词作为名称。
可能需要用好几个单词来组成一个明确的、无需额外说明的名称。

三、涉及业务用例的业务对象

当您研究参与业务中不同用例的业务角色和业务实体时,可能会发现某些对象如此相似,以致于实际上是一个类。即使不同的业务用例没有相同的要求,类之间也可能相似到足以被视为一个相同现象的程度。如果是这种情况,您应该将相似的类合并在一起。这就产生了一个业务角色或业务实体,它拥有足以满足不同业务用例要求的关系、属性和操作。

因此,多个业务用例可以对同一个类有不同的要求。对于业务角色来说,如果有些雇员有能力担当所描述的一组角色,那么同样还要有一些比较灵活可以胜任多个职位的雇员。这会使您的业务更加灵活。

四、业务对象模型和信息系统

在业务对象模型中,业务角色代表雇员将担当的角色,而业务实体则代表雇员将处理的对象。一方面,可以使用业务对象模型来确定业务雇员将如何进行交互,以产生业务主角所期望的结果。另一方面,系统用例模型和设计模型指定了业务的信息系统。

业务建模和系统建模解决不同的问题,其抽象程度也不一样。所以一般而言,信息系统不应该直接出现在业务模型中。

另一方面,雇员作为业务角色来使用信息系统,实现相互之间的通信、与主角的通信以及对业务实体信息进行访问。所有的链接、关联关系或属性都有某个潜在的信息系统对其进行支持。

这两类建模环境有以下关系:

作为特定业务角色的雇员与信息系统的一个系统主角相对应。如果建立的信息系统使该雇员在业务用例中的所有工作都得到一个系统用例的支持,则他最有可能得到最好的支持。
另外,如果业务用例规模大、生存期长或者合并了多个独立领域中的工作,信息系统用例将可以支持业务角色的操作。
雇员工作的对象(建模为业务实体)常在信息系统中得到表现。在信息系统的对象模型中,这些业务实体作为实体类出现。
业务实体之间的关联关系和聚合关系常常使设计模型中实体类之间产生对应的关联关系和聚合关系。
因此,系统用例访问并操作设计模型中的实体类,这些实体类代表由被支持业务用例访问的业务实体。
最后,直接使用业务信息系统的业务主角也成为信息系统的系统主角。

当确定对支持业务的信息系统的需求时,这些关系十分关键。

五、作为业务主角的信息系统

有时候,一个业务的雇员与另一个业务的雇员使用其他业务的信息系统进行联系。从建模后业务的角度来看,这个信息系统就是一个业务主角。

示例:
某个软件开发人员努力去理解他所负责的产品中出现的问题。为了了解问题是否源于他所使用的编程工具,他与供应商的万维网服务器联系,并仔细研究编程工具当前版本中已知问题的列表。通过这种方式,业务角色“软件开发人员”与业务角色“提供商的万维网服务器”进行交互。

六、在业务对象模型中明确建模的信息系统

通常的做法是不在业务对象模型中对信息系统进行明确建模,因为信息系统只是业务角色所使用的工具而已。但当业务的信息系统被客户直接使用时,这种做法就不合适了。如果这个交互是业务服务的主要部分,您可能会出于商业上重要性的考虑而希望在业务对象模型中将其展示出来。电话银行业务就是此类信息系统的一个很好的例子。

从业务建模的观点来看,建议使用以下方法:

将信息系统看做一个和主角交互的完全自动化的业务角色。
如果信息系统和任何其他业务角色或业务实体相关,则考虑使用链接或关联关系来说明这种关系。系统可能会向某个业务角色通知其进度,或者使用与某个业务实体相关的信息。
简单地说明业务角色,同时列出代表业务对象模型中信息系统的服务。
在信息系统模型中对信息系统和其环境的所有细节和特征进行建模。
引入一个命名约定,这样可以容易地在业务角色中确定那些完全自动化的业务角色,例如,一个前缀或后缀,如“自动<业务角色名称>”或“<业务角色名称>(IT 系统)”。您甚至可以使用一个特殊的图标来定义构造型。

七、好的业务对象模型的特征

领域模型设计 领域模型

总的来看,业务角色和业务实体执行业务用例中描述的所有活动,绝不多一点,也绝不少一点。
业务对象模型有效、全面地对组织进行了展示。 (来源:RationalSoftware Corp.)

  

爱华网本文地址 » http://www.413yy.cn/a/8103470103/110181.html

更多阅读

领域模型-谈实体对象和值对象 js 遍历对象属性和值

对于实体Entity和值对象ValueObject是领域驱动设计里面两个重要的模型对象。所以有必要对两者的关系和区别进行理解。以下部分内容直接引用自《领域驱动设计》一书相关内容。首先对于实体Entity,实体核心是用唯一的标识符来定义,而不

基于模型的设计 基于模型的测试

前一阵参加了MathWorks公司一个关于基于模型的设计的讲座,先介绍了基于模型的设计model based design,然后是亲自动手体验;感觉很有意义,特别是其中的自动代码生成,所以在此和大家分享一下。听起来,自动生成代码好像是专门为不想多动手的

领域模型-服务 什么是领域模型

服务Service是领域模型中的一种重要模式。在某些情况下最清楚,最实用的设计会包含一些特殊的操作,这些操作从概念上讲不属于任何对象。如果勉强的把这些操作归属到Entity或ValueObject中,那么不是扭曲了基于模型的对象定义,就是人为的增

声明:《领域模型设计 领域模型》为网友隐世窥红尘分享!如侵犯到您的合法权益请联系我们删除