领域模型
求助编辑百科名片
领域模型是对领域内的概念类或现实世界中对象的可视化表示。又称概念模型、领域对象模型、分析对象模型。它专注于分析问题领域本身,发掘重要的业务领域概念,并建立业务领域概念之间的关系。
编辑本段概念
业务对象模型(也叫领域模型 domain model)是描述业务用例实现的对象模型。它是对业务角色和业务实体之间应该如何联系和协作以执行业务的一种抽象。 业务对象模型从业务角色内部的观点定义了业务用例。该模型为产生预期效果确定了业务人员以及他们处理和使用的对象(“业务类和对象”)之间应该具有的静态和动态关系。它注重业务中承担的角色及其当前职责。这些模型类的对象组合在一起可以执行所有的业务用例。
编辑本段核心元素
业务角色显示了一个人承担的一系列职责。业务实体表示使用或产生的可交付工件、资源和事件。业务用例实现显示了协作的业务角色和业务实体如何执行某个工作流程。使用以下几种图来记录业务用例实现: 图显示参与的业务角色和业务实体。活动图,其中泳道显示业务角色的职责,而对象流显示如何在工作流程中使用业务实体。 序列图描述业务角色和业务主角之间交互的详细情况,并显示如何在业务用例执行过程中访问业务实体。
业务对象模型将结构的概念和行为的概念结合了起来。
它是一个纽带工件,用于对业务关系进行清晰的表述,表述方式与软件开发人员的思考方式类似,同时仍保留一些纯粹的业务内容。将我们所知道的有关业务的信息按照对象、属性和职责进行了合并。
它探索业务领域知识的本质,所采用的方式使我们能够从对业务问题的思考转变到对软件应用程序的思考上来。
它是一种确定需求的方法,使需求能够为待建信息系统使用,并得到该系统的支持。
编辑本段命名
对每个业务角色和实体进行命名,要求名称能够表示对象的职责。
一个好的名称通常是名词或动词的名词形式, 每个名称都必须是唯一的。避免使用发音或拼写类似的词以及同义词作为名称,可能需要用好几个单词来组成一个明确的、无需额外说明的名称。
编辑本段对象
当您研究参与业务中不同用例的业务角色和业务实体时,可能会发现某些对象如此相似,以致于实际上是一个类。即使不同的业务用例没有相同的要求,类是之间也可能相似到足以被视为一个相同现象的程度。如果是这种情况,您应该将相似的类合并在一起。这就产生了一个业务角色或业务实体,它拥有足以满足不同业务用例要求的关系、属性和操作。
因此,多个业务用例可以对同一个类有不同的要求。对于业务角色来说,如果有些雇员有能力担当所描述的一组角色,那么同样还要有一些比较灵活可以胜任多个职位的雇员。这会使您的业务更加灵活。
编辑本段模型
在业务对象模型中,业务角色代表雇员将担当的角色,而业务实体则代表雇员将处理的对象。一方面,可以使用业务对象模型来确定业务雇员将如何进行交互,以产生业务主角所期望的结果。另一方面,系统用例模型和设计模型指定了业务的信息系统。
业务建模和系统建模解决不同的问题,其抽象程度也不一样。所以一般而言,信息系统不应该直接出现在业务模型中。
另一方面,雇员作为业务角色来使用信息系统,实现相互之间的通信、与主角的通信以及对业务实体信息进行访问。所有的链接、关联关系或属性都有某个潜在的信息系统对其进行支持。
这两类建模环境有以下关系:
作为特定业务角色的雇员与信息系统的一个系统主角相对应。如果建立的信息系统使该雇员在业务用例中的所有工作都得到一个系统用例的支持,则他最有可能得到最好的支持。 另外,如果业务用例规模大、生存期长或者合并了多个独立领域中的工作,信息系统用例将可以支持业务角色的操作。 雇员工作的对象(建模为业务实体)常在信息系统中得到表现。在信息系统的对象模型中,这些业务实体作为实体类出现。业务实体之间的关联关系和聚合关系常常使设计模型中实体类之间产生对应的关联关系和聚合关系。 因此,系统用例访问并操作设计模型中的实体类,这些实体类代表由被支持业务用例访问的业务实体。最后,直接使用业务信息系统的业务主角也成为信息系统的系统主角。 当确定对支持业务的信息系统的需求时,这些关系十分关键。
编辑本段主角
有时候,一个业务的雇员与另一个业务的雇员使用其他业务的信息系统进行联系。从建模后业务的角度来看,这个信息系统就是一个业务主角。
示例: 某个软件开发人员努力去理解他所负责的产品中出现的问题。为了了解问题是否源于他所使用的编程工具,他与供应商的万维网服务器联系,并仔细研究编程工具当前版本中已知问题的列表。通过这种方式,业务角色“软件开发人员”与业务角色“提供商的万维网服务器”进行交互。
编辑本段定位
通常的做法是不在业务对象模型中对信息系统进行明确建模,因为信息系统只是业务角色所使用的工具而已。但当业务的信息系统被客户直接使用时,这种做法就不合适了。如果这个交互是业务服务的主要部分,您可能会出于商业上重要性的考虑而希望在业务对象模型中将其展示出来。电话银行业务就是此类信息系统的一个很好的例子。
从业务建模的观点来看,建议使用以下方法:
将信息系统看做一个和主角交互的完全自动化的业务角色。如果信息系统和任何其他业务角色或业务实体相关,则考虑使用链接或关联关系来说明这种关系。系统可能会向某个业务角色通知其进度,或者使用与某个业务实体相关的信息。 简单地说明业务角色,同时列出代表业务对象模型中信息系统的服务。在信息系统模型中对信息系统和其环境的所有细节和特征进行建模。引入一个命名约定,这样可以容易地在业务角色中确定那些完全自动化的业务角色,例如,一个前缀或后缀,如“自动<业务角色名称>”或“<业务角色名称>(IT 系统)”。您甚至可以使用一个特殊的图标来定义构造型。
编辑本段特征
总的来看,业务角色和业务实体执行业务用例中描述的所有活动,绝不多一点,也绝不少一点。业务对象模型有效、全面地对组织进行了展示。
编辑本段设计
举一个简单的例子来说明如何进行领域模型设计。
假如我们要为一个小卖店设计一套进销存系统,她为我们提供的业务描述是这样的:每天凌晨从布吉农批市场买苹果、梨、葡萄、橘子、香蕉、荔枝、核桃等等,反正哪些好卖她就买回来卖。葡萄、荔枝不能长久保留,一般要当天卖出去…。
针对上面这段业务描述,我们怎么进行领域模型设计?我给出以下几个步骤来完成领域模型设计。
总结业务描述中的名词
首先建一个名词表,把涉及到的名词列出来:
序号名词备注;
1. 布吉农批市场
2. 买东西的人是一个隐含的名词,每天凌晨从农批市场拿货
3. 苹果
4. 梨
5. 葡萄
6. 橘子
7. 香蕉
8. 荔枝
9. 核桃
10. 顾客是一个隐含的名词,买回来卖的对象
11. 凌晨、当天时间名词,与实体及角色无关
这个名词列表包括了业务的行为主体:角色,以及业务过程中的操作实体:模型,对我们接下来的用例描述、领域模型分析、需求分析很有帮助。当然这个名词列表需要经过进一步分析提炼,成为领域模型
确定业务实体
序号名词描述;
1. 布吉农批市场不是本业务的一个实体
2. 买东西的人是本业务的一个角色
3. 苹果是一个实体
4. 梨是一个实体
5. 葡萄是一个实体
6.橘子是一个实体
7. 香蕉是一个实体
8. 荔枝是一个实体
9. 核桃是一个实体
10. 顾客是本业务的一个角色
11. 凌晨、当天时间名词,与实体及角色无关
编辑本段抽象业务模型
经过分析,我们得出的实体是苹果、梨、葡萄、橘子、香蕉、荔枝、核桃,这些是不是模型呢?应该说还不是,还要经过进一步分析:在我们分析的业务领域内,它们有没有共性?苹果、梨、葡萄、橘子、香蕉、荔枝属于水果,核桃属于干果,它们都是果品的一个具体实例。而在水果中葡萄和荔枝属于不宜保存水果,通过这样进一步的分析得出如下的领域模型图例:
果品进销存领域模型
这个领域模型不但能反映目前的经营实体,同时给我们需求分析人员和系统功能提供了一定的扩展视野:将来会不会经营食品,短期保持水果采取什么利润空间来促销,长期保存的水果会不会因为保存成本而导致利润下降。
编辑本段关系
认为领域模型它是一个分析模型,帮助系统分析人员、用户认识现实业务的工具,描述的是业务中涉及到的实体及其相互之间的关系,它是需求分析的产物,与问题领域相关。领域模型是需求分析人员与用户交流的有力工具,是需求分析人员与用户共同理解的概念,是彼此之间交流的语言。而数据模型是系统设计、实现的一部分,描述的是对用户需求在数据结构上的实现,仅此而已。当然数据模型中的概念模型设计与领域模型类似,缺乏的是实体之间更广泛的关系描述。
通常大家会考虑数据怎么存放的问题,我的理解是领域模型设计期间不用考虑数据的存放问题,只考虑业务描述中涉及的实体以及实体之间的关系。
实体之间的关系,很多书都讲了,无非是泛化、依赖和关联,关联又分了一般关联、聚合、组合等等,我这里就不列了。
编辑本段总结
领域模型设计是需求分析的关键步骤。它帮助用户及需求分析人员建立业务概念,确定用户业务的问题域,系统涉及的业务范围等等。
领域模型设计的步骤为:
2. 从提取出来的名词中总结业务实体,区分名词中的属性、角色、实体、实例,形成问题域中操作实体的集合;
3. 从业务实体集合中抽象业务模型,建立问题域的概念(例如在前面的例子中,我们把容易变质的水果称之为“短期保持水果”,当然也可以是其它说法,只要能跟用户达成共识即可);
4. 用UML提供的方法和图例进行领域模型设计、确定模型之间的关系;
相关推荐
- **软件需求分析任务**:与用户交流,认清系统需要解决的问题,得出目标系统的逻辑模型,并编写相关文档。 #### 六、需求获取与分析建模 - **需求获取**:从分析当前系统包含的数据开始,通过与用户的交流,理解...
《软件工程需求分析--需求分析》 需求分析是软件开发过程中的关键环节,它为整个项目的成功奠定了坚实的基础。本章详细阐述了需求分析的概念、方法、挑战以及相关活动,旨在帮助读者理解如何有效地进行需求分析。 ...
- **领域元模型建立**:建立领域元模型,即领域模型的模型,用于描述领域模型的结构和语义。 #### 3. 面向对象视角下的领域分析 - 领域分析与面向对象方法紧密结合,强调从对象的角度理解和表示领域。通过识别和...
在软件工程领域,全程建模是一种系统性的方法,旨在利用模型而非传统的文字描述来贯穿软件开发的整个生命周期,从需求分析到最终产品的实现。这种方法强调模型之间的紧密联系,使得模型成为软件开发各阶段的核心表现...
《软件需求分析》习题集涵盖了软件需求分析领域的多个重要知识点,包括需求问题的原因、需求分析的目的、系统需求的文档化、功能需求的层次、涉众的识别、原型的概念及其分类、需求获取的方法、情景性的性质、需求...
从上述所列举的应用可知,机器学习正在成为各行各业都会经常使用到的分析工具,尤其是在各领域数据量爆炸的今天,各行业都希望通过数据处理与分析手段,得到数据中有价值的信息,以便明确客户的需求和指引企业的发展...
《软件需求分析与设计》是软件工程领域中的关键环节,对于山大软件工程硕士课程而言,这门课无疑是培养学生核心技能的重要组成部分。本课件集合了多个实际项目案例,涵盖了从需求获取到系统测试的全过程,旨在提升...
在本文档中,作者提出了一个基于领域模型的系统需求获取方法。这种新方法的目的是为了更准确和完整地获取应用系统的需求。该方法的核心在于使用领域工程的思想,识别出应用系统中的共同特征,并将这些特征进行抽象化...
领域模型是软件设计中的一种重要概念,它旨在理解系统如何工作,包括内部行为和外部行为。领域模型的目的是为了确定系统中各个元素之间的交互关系,以便产生外部行为。 领域模型为什么重要?因为它可以帮助我们理解...
#### 4.3 需求分析-概念模型和规范化 - **概念模型**:是一种抽象模型,用于表示系统的整体结构和行为。它通常包括实体、属性和关系等元素。 - **规范化**:指的是对数据结构进行优化的过程,目的是减少数据冗余并...
在探讨数据模型与概念模型设计时,PowerDesigner是一款常用于数据模型设计的工具,特别是在需求分析和概念模型设计方面提供了强大的支持。从提供的文件内容来看,有关于一个名为“KGN样例”的数据仓库建模指南,其中...
瀑布模型的基本流程包括需求分析、软件设计、软件实现、软件测试、软件安装和软件维护六个阶段。每个阶段都有明确的开始和结束点,前一个阶段完成的质量直接影响到后一个阶段的工作效率和质量。这种线性顺序的工作...
软件需求分析和需求管理是软件工程领域的重要组成部分,旨在确保软件开发过程中能够准确地捕捉到用户的需求,并有效地管理这些需求直至项目完成。该培训讲义主要围绕软件需求分析的基本概念、流程、方法以及需求管理...
课程的受众广泛,从软件需求经理到资深软件需求工程师,每个角色在需求分析过程中的作用都是不可忽视的。徐锋老师的课程注重实用,采用项目模拟的教学方式,让学员通过具体案例,例如健康体检机构管理系统或连锁酒店...
需求分析则进一步细化这些需求,构建数据模型、功能模型和行为模型,形成需求规格说明书,作为评估软件质量的基础。 在传统的软件工程生命周期中,需求分析阶段不仅要确定软件的范围、功能、性能和接口,还要建立...
《软件需求分析实践:构建高效客户关系管理系统》 在软件开发过程中,需求分析是至关重要的第一步,它决定了软件的功能设计和用户体验。本文将以“第1组2019-2020-1软件需求分析实践作业修11”为例,深入探讨一个...
### 基于本体的领域需求分析方法与模型研究 #### 一、引言 在软件工程领域,领域需求分析是一项重要的工作内容,它旨在为特定领域内的一系列相似或相关系统收集、分类和分析需求。这项工作不仅涉及技术层面的挑战...
该模型通过引入软件体系结构技术,并将其细分为需求分析、体系结构设计和系统设计三个阶段,有效地提升了软件分析设计的质量和效率。 #### 二、背景及意义 软件体系结构的设计在整个软件生命周期中扮演着至关重要...
总结来说,软件需求分析与建模是软件工程中不可或缺的部分,它帮助我们理解和表达用户需求,构建系统的逻辑模型,并为设计和实现提供指导。通过用例分析和概念类分析,我们可以细化需求,确保系统的逻辑一致性,从而...
在软件工程领域,需求分析是开发过程中的关键步骤,它为后续的设计、编码和测试奠定了基础。本资料主要探讨了三个核心概念:数据字典、数据流图和需求分析。 1. 数据字典 (Data Dictionary) 数据字典是系统设计中的...