`
pany
  • 浏览: 90319 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

领域模型

阅读更多
领域模型  领域模型是对领域内的概念类或现实世界中对象的可视化表示。又称概念模型、领域对象模型、分析对象模型。它专注于分析问题领域本身,发掘重要的业务领域概念,并建立业务领域概念之间的关系。
  领域模型的概念
  什么是领域模型?这个很关键,弄清楚什么是领域模型,才能进行领域模型设计,否则领域模型设计的结果就没有相互讨论的基础。
  首先,我想谈谈我的理解。
  业务系统一般包括三部分内容:(1)操作者(角色)、(2)系统为操作者提供的行为、(3)操作对象。其中的操作对象就是领域模型的来源。在进行需求分析时,领域模型来自于业务描述中的名词以及对名词的抽象。
  当然描述业务的名词不都是模型,有可能是模型的一个属性,也有可能是角色、或者是跟业务无关紧要描述。在业务描述中有些关联名词描述的则是模型之间的关系。例如,在一个业务描述中出现了部门、用户、用户部门、部门用户这些名词,那么领域模型可能只是部门和用户,用户部门则是模型的一个属性,而部门用户表明了部门和用户这两个模型的关系。
  一个描述业务的名词成为领域模型,至少具备两点:要么是业务中确实存在的实体、要么是业务实体的提炼(抽象)。
  领域模型设计
  举一个简单的例子来说明如何进行领域模型设计。
  假如我们要为一个小卖店设计一套进销存系统,她为我们提供的业务描述是这样的:每天凌晨从布吉农批市场买苹果、梨、葡萄、橘子、香蕉、荔枝、核桃等等,反正哪些好卖她就买回来卖。葡萄、荔枝不能长久保留,一般要当天卖出去…。
  针对上面这段业务描述,我们怎么进行领域模型设计?我给出以下几个步骤来完成领域模型设计。
  总结业务描述中的名词
  首先建一个名词表,把涉及到的名词列出来:
  序号
  名词
  备注
  1.
  布吉农批市场
  2.
  买东西的人
  是一个隐含的名词,每天凌晨从农批市场拿货
  3.
  苹果
  4.
  梨
  5.
  葡萄
  6.
  橘子
  7.
  香蕉
  8.
  荔枝
  9.
  核桃
  10.
  顾客
  是一个隐含的名词,买回来卖的对象
  11.
  凌晨、当天
  时间名词,与实体及角色无关
  这个名词列表包括了业务的行为主体:角色,以及业务过程中的操作实体:模型,对我们接下来的用例描述、领域模型分析、需求分析很有帮助。当然这个名词列表需要经过进一步分析提炼,成为领域模型
  确定业务实体
  序号
  名词
  描述
  1.
  布吉农批市场
  不是本业务的一个实体
  2.
  买东西的人
  是本业务的一个角色
  3.
  苹果
  是一个实体
  4.
  梨
  是一个实体
  5.
  葡萄
  是一个实体
  6.
  橘子
  是一个实体
  7.
  香蕉
  是一个实体
  8.
  荔枝
  是一个实体
  9.
  核桃
  是一个实体
  10.
  顾客
  是本业务的一个角色
  11.
  凌晨、当天
  时间名词,与实体及角色无关
  抽象业务模型
  经过分析,我们得出的实体是苹果、梨、葡萄、橘子、香蕉、荔枝、核桃,这些是不是模型呢?应该说还不是,还要经过进一步分析:在我们分析的业务领域内,它们有没有共性?苹果、梨、葡萄、橘子、香蕉、荔枝属于水果,核桃属于干果,它们都是果品的一个具体实例。而在水果中葡萄和荔枝属于不宜保存水果,通过这样进一步的分析得出如下的领域模型图例:
  果品进销存领域模型
  这个领域模型不但能反映目前的经营实体,同时给我们需求分析人员和系统功能提供了一定的扩展视野:将来会不会经营食品,短期保持水果采取什么利润空间来促销,长期保存的水果会不会因为保存成本而导致利润下降。
  领域模型与数据模型的关系
  我认为领域模型它是一个分析模型,帮助系统分析人员、用户认识现实业务的工具,描述的是业务中涉及到的实体及其相互之间的关系,它是需求分析的产物,与问题域相关。领域模型是需求分析人员与用户交流的有力工具,是需求分析人员与用户共同理解的概念,是彼此之间交流的语言。而数据模型是系统设计、实现的一部分,描述的是对用户需求在数据结构上的实现,仅此而已。当然数据模型中的概念模型设计与领域模型类似,缺乏的是实体之间更广泛的关系描述。
  通常大家会考虑数据怎么存放的问题,我的理解是领域模型设计期间不用考虑数据的存放问题,只考虑业务描述中涉及的实体以及实体之间的关系。
  实体之间的关系,很多书都讲了,无非是泛化、依赖和关联,关联又分了一般关联、聚合、组合等等,我这里就不列了。
  总结
  领域模型设计是需求分析的关键步骤。它帮助用户及需求分析人员建立业务概念,确定用户业务的问题域,系统涉及的业务范围等等。
  领域模型设计的步骤为:
  1. 从业务描述中提取名词;
  2. 从提取出来的名词中总结业务实体,区分名词中的属性、角色、实体、实例,形成问题域中操作实体的集合;
  3. 从业务实体集合中抽象业务模型,建立问题域的概念(例如在前面的例子中,我们把容易变质的水果称之为“短期保持水果”,当然也可以是其它说法,只要能跟用户达成共识即可);
  4. 用UML提供的方法和图例进行领域模型设计、确定模型之间的关系;
分享到:
评论

相关推荐

    领域驱动模型(DDD).zip_ddd_领域模型_领域驱动_领域驱动设计

    "领域模型"则是对这个领域的抽象表示,它包含了业务规则、业务实体、值对象、聚合、领域事件等关键元素。领域模型不仅仅是数据结构,更是业务行为的载体,它能够表达领域专家的思维,并在代码中实现这些业务规则。 ...

    使用领域模型构建UML类模型

    "使用领域模型构建UML类模型" 领域模型是软件开发中的一种重要技术,它能够捕获系统语境中最重要的对象类型,使用户、客户、开发人员和其他项目相关人员能够更好地理解系统。领域模型可以为开发人员提供重要的信息...

    领域模型说明及范例代码.zip

    领域模型(Domain Model)和贫血模型(Anemic Domain Model)是两种常见的模型设计模式,它们各有特点,适用于不同的场景。本资料包旨在通过实例对比,帮助初学者理解这两种模型的区别和概念,并提供实际的Java代码...

    lec-5 领域模型 DomainModel.ppt

    领域模型 DomainModel 领域模型是软件设计中的一种重要概念,它旨在理解系统如何工作,包括内部行为和外部行为。领域模型的目的是为了确定系统中各个元素之间的交互关系,以便产生外部行为。 领域模型为什么重要?...

    领域模型最近代码实现

    领域模型是软件开发中的一个重要概念,特别是在面向对象设计和领域驱动设计(DDD)中。它是一种将业务领域的概念、规则和行为转化为计算机程序的方式。在本文中,我们将深入探讨领域模型的理论基础,以及如何在实际...

    领域模型项目示例

    在IT行业中,领域模型(Domain Model)是一种重要的软件设计概念,尤其在企业级应用开发中占据核心地位。领域模型是对业务领域的抽象和简化,它包含了业务规则、业务实体以及它们之间的关系。本项目示例旨在提供一个...

    领域模型管理与AOP

    ### 领域模型管理与AOP:深入理解与实践 #### 一、引言与背景 在现代软件开发过程中,领域驱动设计(Domain-Driven Design, DDD)已经成为构建复杂业务系统的有效方法之一。通过定义清晰的领域模型,开发者能够更...

    领域模型代码示例

    在本示例中,"领域模型代码示例"是一个用于展示DDD实践的演示项目,帮助开发者理解和应用DDD原则。 领域模型是DDD的核心部分,它是对特定业务领域的概念、规则和行为的抽象表示。一个领域模型通常包含实体...

    UML 领域模型介绍

    ### UML领域模型介绍 #### 一、领域模型概述 UML(Unified Modeling Language,统一建模语言)是一种广泛应用于软件工程领域的图形化语言,用于描述系统的结构和行为。领域模型是UML中的一个重要概念,它主要关注...

    DDD领域模型设计方案

    DDD的核心理念是将复杂的业务逻辑转化为清晰的领域模型,以此来提高软件的可维护性和可扩展性。下面将详细阐述DDD领域的模型设计方案及其关键概念。 1. **领域模型**:领域模型是DDD的核心,它代表了业务领域的核心...

    论文研究-基于领域模型的需求获取方法.pdf

    在本文档中,作者提出了一个基于领域模型的系统需求获取方法。这种新方法的目的是为了更准确和完整地获取应用系统的需求。该方法的核心在于使用领域工程的思想,识别出应用系统中的共同特征,并将这些特征进行抽象化...

    贫血模型or领域模型

    贫血模型or领域模型的举例对比,让你初步了解贫血模型与领域模型的区别和概念

    领域模型驱动设计1553265830.pdf

    领域模型是领域驱动设计的核心概念,它代表了业务领域的概念和规则的抽象。设计一个好的领域模型是理解复杂业务逻辑的关键。领域模型分为贫血模型和充血模型两种。 - 贫血模型指的是领域对象只包含了数据访问方法...

    java领域模型代码示例

    在软件开发中,领域模型(Domain Model)是根据业务领域中的概念、规则和逻辑构建的抽象模型,它是领域驱动设计(Domain-Driven Design,简称DDD)的核心组成部分。领域模型能够帮助我们更好地理解和表达复杂的业务...

    架构设计中领域模型设计思路

    在架构设计中,领域模型(Domain Model)是一个关键的概念,它是业务逻辑的核心表现,用于抽象和建模实际业务过程中的实体、属性和行为。本文将深入探讨领域模型设计的思路,结合给定的文件名,我们可以推测这是一个...

    如何设计架构-分层和组织领域模型

    如何设计架构-分层和组织领域模型 层(layer)这个概念在计算机领域是非常了不得的一个概念。计算机本身就体现了一种层的概念:系统调用层、设备驱动层、操作系统层、CPU指令集。每个层都负责自己的职责。 要组织...

    教务系统的设计 顺序图 状态机图 类图 领域模型图

    本文将深入探讨标题和描述中提到的"顺序图"、"状态机图"、"类图"以及"领域模型图",并结合教务系统的实际功能来阐述它们在系统设计中的应用。 首先,顺序图(Sequence Diagram)是UML(统一建模语言)中的一种动态...

    DDD-领域模型

    DDD则不同:它像是更小粒度的迭代设计,它的最小单元是领域模型(Domain Model),所谓领域模型就是能够精确反映领域中某一知识元素的载体,这种知识的获取需要通过与领域专家(Domain Expert)进行频繁的沟通才能将专业...

    UML——BBS领域模型

    UML——BBS领域模型 domain model

    领域特定语言 中文 领域模型

    领域语言则是将领域模型转化为可读性强、表达力丰富的语法结构,它可以是形式化的(如XML、JSON等数据格式),也可以是非形式化的(如自然语言描述)。领域语言的设计需要考虑易用性、灵活性和可扩展性,以便于用户...

Global site tag (gtag.js) - Google Analytics