问题域

业务领域建模Domain Modeling

风流意气都作罢 提交于 2019-12-05 13:58:27
1.什么是领域建模 领域建模是建造领域模型的过程,而领域模型是对领域内的概念类或现实世界中对象的可视化表示。又称概念模型、领域对象模型、分析对象模型。它专注于分析问题领域本身,发掘重要的业务领域概念,并建立业务领域概念之间的关系。领域模型是说明问题域(现实世界中系统所要解决问题的领域为“问题域”,如“银行业务”属于“银行的问题域”。)里(对建模者来说)有意义的领域类,它是面向对象分序的时候要创建的最重要的工作(必须说明,用例虽然也是一个重要的分析工作,但它并不是面向对象的,它是强调的概念的过程视图)。 2.如何领域建模 ♦ 1) Collect application domain information – focus on the functional requirements – also consider other requirements and documents ♦ 2) Brainstorming – listing important application domain concepts – listing their properties/attributes – listing their relationships to each other ♦ 3) Classifying the domain concepts into: – classes –

业务领域建模Domain Modeling

ε祈祈猫儿з 提交于 2019-12-05 11:24:15
一、什么是业务领域建模    业务对象模型(也叫领域模型 domain model)是描述业务用例实现的对象模型。它是对业务角色和业务实体之间应该如何联系和协作以执行业务的一种抽象。业务对象模型从业务角色内部的观点定义了业务用例。该模型为产生预期效果确定了业务人员以及他们处理和使用的对象(“业务类和对象”)之间应该具有的静态和动态关系。它注重业务中承担的角色及其当前职责。这些模型类的对象组合在一起可以执行所有的业务用例。 二、为什么要进行领域建模   软件的世界里没有银弹,是用事务脚本还是领域模型没有对错之分,关键看是否合适。实际上,CQRS就是对事务脚本和领域模型两种模式的综合,因为对于Query和报表的场景,使用领域模型往往会把简单的事情弄复杂,此时完全可以用奥卡姆剃刀把领域层剃掉,直接访问Infrastructure。我个人也是坚决反对过度设计的,因此对于简单业务场景,我强力建议还是使用事务脚本,其优点是简单、直观、易上手。但对于复杂的业务场景,你再这么玩就不行了,因为一旦业务变得复杂,事务脚本就很难应对,容易造成代码的“一锅粥”,系统的腐化速度和复杂性呈指数级上升。   目前比较有效的治理办法就是领域建模,因为领域模型是面向对象的,在封装业务逻辑的同时,提升了对象的内聚性和重用性,因为使用了通用语言(Ubiquitous Language),使得隐藏的业务逻辑得到显性化表达

金融文本挖掘的业务领域建模

倖福魔咒の 提交于 2019-12-05 11:18:16
金融文本挖掘的业务领域建模 领域模型是对领域内的概念类或现实世界中对象的可视化表示。又称概念模型、领域对象模型、分析对象模型。它专注于分析问题领域本身,发掘重要的业务领域概念,并建立业务领域概念之间的关系 领域模型设计是需求分析的关键步骤。它帮助用户及需求分析人员建立业务概念,确定用户业务的问题域,系统涉及的业务范围等等。 领域模型设计的步骤为: 从业务描述中提取名词; 从提取出来的名词中总结业务实体,区分名词中的属性、角色、实体、>实例,形成问题域中操作实体的集合; 从业务实体集合中抽象业务模型,建立问题域的概念(例如在前面的例子中,我们把容易变质的水果称之为“短期保持水果”,当然也可以是其它说法,只要能跟用户达成共识即可); 用UML提供的方法和图例进行领域模型设计、确定模型之间的关系 领域模型本质上应该是一个分析模型,帮助系统分析人员、用户认识现实业务的工具,描述的是业务中涉及到的实体及其相互之间的关系,它是需求分析的产物,与问题领域相关。领域模型是需求分析人员与用户交流的有力工具,是需求分析人员与用户共同理解的概念,是彼此之间交流的语言。而数据模型是系统设计、实现的一部分,描述的是对用户需求在数据结构上的实现,仅此而已。当然数据模型中的概念模型设计与领域模型类似,缺乏的是实体之间更广泛的关系描述。 通常大家会考虑数据怎么存放的问题

业务领域建模Domain Modeling

拥有回忆 提交于 2019-12-05 06:29:48
一、什么是业务领域建模    这里引用百度百科的解释,业务对象模型(也叫领域模型 domain model)是描述业务用例实现的对象模型。它是对业务角色和业务实体之间应该如何联系和协作以执行业务的一种抽象。业务对象模型从业务角色内部的观点定义了业务用例。该模型为产生预期效果确定了业务人员以及他们处理和使用的对象(“业务类和对象”)之间应该具有的静态和动态关系。它注重业务中承担的角色及其当前职责。这些模型类的对象组合在一起可以执行所有的业务用例。 二、业务领域建模的设计步骤   领域模型设计是需求分析的关键步骤。它帮助用户及需求分析人员建立业务概念,确定用户业务的问题域,系统涉及的业务范围等等。   1. 从业务描述中提取名词;   2. 从提取出来的名词中总结业务实体,区分名词中的属性、角色、实体、实例,形成问题域中操作实体的集合;   3. 从业务实体集合中抽象业务模型,建立问题域的概念;   4. 用UML提供的方法和图例进行领域模型设计、确定模型之间的关系 ; 三、业务领域建模的方法   四色建模法是由 Peter Coad 发明的一种建模方法,将抽象出来的对象分成四种原型: moment-interval:这种对象表示那些在某个时间点存在,或者会存在一段时间的,这样的对象往往表示了一次外界的请求,比如一次询价(Quotation),一次购买(Sale)

面向对象分析与设计—OOD部分

牧云@^-^@ 提交于 2019-12-03 06:16:30
第三部分 面向对象设计 3.1 面向对象设计(OOD)的定义?   在面向对象分析阶段,已经针对用户需求建立起用面向对象概念描述的系统分析模型。在设计阶段,要考虑为实现系统而采用的计算机设备、操作系统、网络、数据库管理系统以及所采用的编程语言等有关因素,进一步运用面向对象的方法对系统进行设计,最后形成一个可以实现的设计模型,即面向对象设计模型。 3.2 面向对象设计(OOD)与面向对象分析(OOA)的关系?   在面向对象分析阶段,针对的是现实世界,把需求转化为面向对象概念所建立的模型,以易于理解问题域和系统责任,最终建立一个映射问题域,满足用户需求,独立于实现的OOA模型,面向对象的设计就是在面向对象分析的基础上运用面向对象方法主要解决与实现有关的问题,,目标是产生一个符合具体实现条件的OOD模型。由于OOD以OOA为基础,且OOA与OOD采用一致的表示法,使得从OOA到OOD不存在转换,只需做必要的修改与调整。OOA与OOD之间不存在传统方法中分析与设计之间的鸿沟,二者能够紧密衔接。OOA与OOD之间不强调阶段划分,但是OOA与OOD有着不同的侧重点和不同的分工,并因此具有不同的开发过程及具体策略。“分析”只针对问题域和系统责任,不考虑实现有关的因素,建立一个独立于实现的OOA模型;设计则考虑与实现有关的问题,如选用的编程语言、数据库系统和图形用户界面等

领域驱动设计资料收集与简单实现(一):什么是领域驱动设计,通用语言

匿名 (未验证) 提交于 2019-12-02 23:32:01
什么是领域驱动设计 领域驱动设计(DDD) :DDD的全称为Domain-driven Design,是一套综合软件系统分析和设计的面向对象建模方法,是针对复杂系统设计的一套软件工程方法,是一种思想。 什么是领域:领域是问题域 + 业务期望 一:问题域:领域中有许多的问题域,领域是有边界的,要注重核心要解决的问题,问题域建模的过程就是业务领域分析的过程 二:业务期望:确定业务的期望与愿景,业务的范围,识别出业务需求的价值,识别出最核心的业务 什么是驱动: 一:领域驱动领域模型设计,需求分析 =>领域模型 ,领域模型驱动代码实现,领域模型 =>代码实现 ,分析领域中的核心问题(核心关注点),然后设计对应的领域模型,再通过领域模型驱动代码实现。 什么是设计: 一:DDD中的设计主要指领域模型的设计,DDD是一种基于模型驱动开发的软件开发思想,强调领域模型是整个系统的核心,领域模型也是整个系统的核心价值所在 二:领域的设计分为2阶段: 1.领域驱动领域模型设计,需求分析 =>领域模型 =>战略设计,根据业务设计领域模型,领域模型是整个系统的核心,领域模型要反映业务需求 2.领域模型驱动代码实现,领域模型 =>代码实现 =>战术设计,代码实现要严格按照领域模型的意图来落地 为什么要使用领域驱动设计 一:不同于传统以数据表为中心的建模方式,它以业务领域为中心来建模,迭代过程中

一、领域、子域、限界上下文

匿名 (未验证) 提交于 2019-12-02 23:05:13
一、简介 领域驱动设计顾名思义是一种设计思想,由领域来驱动设计的进行。这里的领域可以简单理解为我们常说的“业务”。也即是,由对业务的深入分析来驱动软件设计工作。 领域驱动设计从层次上分为战略设计和战术设计,我们可以这么想,战略设计就是从上层进行抽象性设计,而战术设计就是将这些上层抽象作为下层具体实现进行的设计工作。 本文涉及的领域、子域、限界上下文就是属于战略设计。 二、概念 什么是领域? 我们可以把领域当作一个大的问题域来理解,如果对一个企业来说,那么就是这个企业要做的所有事情。 什么是子域? 子域是相对于领域的一个概念,顾名思义就是领域被细化以后分成了不同的子域。这个应该相对比较好理解,因为我们人习惯性的会将大的东西进行分割,然后逐个击破。比如“分层思想”,“模块化思想”等。 那么子域就是将一个大的问题域拆分成了很多小的问题域。 并且根据子域的重要性以及作用范围将子域分成了: 1、核心域:重要性最强 2、支撑子域:重要性较低,辅助核心域 3、通用子域:给所有域提供辅助 什么是限界上下文? 开发软件的目的就是为了解决问题,领域定义了问题域,子域细分了问题域。那么我们需要考虑如何根据这些问题域来设计解决方案。 我们说的解决方案就是“领域模型”,领域驱动设计即根据问题域来进行建模。 可是我们想一下,如果我们对整个领域建立一个模型是不是太可怕了,如果系统过于庞大

面向对象方法与UML的历史与发展

冷暖自知 提交于 2019-12-02 17:21:01
一、 不同的分析与设计方法 1.功能分解法( function decomposition ) 以系统需要提供的功能为中心来组织系统。 首先定义各种功能,然后把功能分解为子功能,对较大的子功能进一步分解,直到可给出明确的定义 设计功能 / 子功能所需要的数据结构 定义功能 / 子功能之间的接口。 (作为一种早期的建模方法,没有明确地区分分析与设计) 建模过程:层层进行功能分解 功能分解法得到的系统模型(由模块及其接口构成) 优点与缺点: 直接地反映用户的需求,所以工作很容易开始; 不能直接地映射问题域,很难检验结果的正确性; 对需求变化的适应能力很差; 局部的错误和修改很容易产生全局性的影响。 2.结构化方法: 结构化分析( structured analysis , SA ) 结构化设计( structured design 。 SD ) 结构化分析又称数据流法,其基本策略是跟踪数据流,即研究问题域中数据如何流动,以及在各个环节上进行何种处理,从而发现数据流和加工。得到的分析模型是数据流图( DFD ),主要模型元素是数据流、加工、文件及端点,外加处理说明和数据字典。 数据流图 结构化设计与功能分解法基本相同,基于模块的概念建立设计模型,分为概要设计和详细设计。 概要设计:确定系统中包含哪些模块以及模块之间的调用关系,得到模块结构图( MSD )。 详细设计

永不服输的Java之路---重学Java (第六章) 上篇

空扰寡人 提交于 2019-12-02 06:39:24
如若文章中出现冲突,或者出现错误,请联系 QQ:2669157689 指出我的问题。谢谢~ 介绍面向对象编程的基本思想,通过本课的学习,我们应该掌握如下知识: 理解什么是类、对象、构造器, 对象在内存中的表现形式及如何使用对象等。 this和static关键字 JAVA编程基础 —— 面向对象基础 1. 面向对象编程思想 面向过程编程 传统的C语言属于面向过程编程。面向过程解决问题的思路:通常是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,最后一个一个依次调用函数来解决。 案例:ATM提款机终端系统(面向过程编程) 步骤1:输入密码,系统判断是否正确,如正确,进入取款界面,如错误,提示重新输入。 步骤2:进入取款界面,输入取款金额,系统判断余额是否足够,如不足,提示;如足够,点钞。 步骤3:吐出钞票,打印票据。 面向过程编程考虑的问题是程序运行的流程,主要是程序的算 法,而数据只是在必要的时候插入到算法中间。 面向对象编程(OOP:Object-Oriented Programming) 从现实世界中客观存在的事物出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式,强调直接以问题域中的事物为中心来思考问题,认识问题,并根据这些事物的本质特点,把它们抽象地表示为系统中的对象,作为系统的基本构成单位。面向对象解决问题的思路

提炼问题域

喜欢而已 提交于 2019-11-30 02:20:40
2.1 知识提炼与协作 知识提炼是从问题域中提炼出相关信息的技术,其目的是构建能够满足业务用例需求的有用模型。 知识提炼是为技术团队在基于一组需求为问题域设计解决方案时弥补所欠缺的知识的关键技术。 知识提炼--对问题深刻理解的人--大家的共同协作。 知识收集过程会出现在与业务专家探讨示例时的白板上,且通常会同时展开头脑风暴。 问题域 == 业务用例 ==有用的模型 == 知识提炼。具体操作一波。 2.1.1 通过通用语言达成共识 通用语言(UL)显示制作,并在描述领域模型和问题域使用,该语言还应用于模型的代码实现,使用用作类名称,属性和方法名称的相同的术语和概念。 2.1.2 领域知识的重要性 领域知识 == 业务知识 技术知识 从业务到技术的翻译是开发人员需要具备的。 2.1.3 业务分析员的角色 不要将开发团队和最理解该部分业务的人之间的沟通完全屏蔽。 2.1.4 一个持续过程 模型驱动设计和领域模型的演化是一个持续过程。知识提炼在整个应用程序构建的生命周期中应该在业务参与的情况下被持续关注。 认识到随着系统的每一次迭代,模型都会有所演化,===模型永远不会尽善尽美,它只是对于当前问题可用而以。 2.2 与领域专家一起获得领域见解 2.2.1 领域专家和业务相关人员的对比 问题空间会给出一组需求,输入和预期输出 ===业务相关人员提供的。 解空间包含一个能满足需求需要的模型 =