`
izuoyan
  • 浏览: 9148747 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

[需求]需求分析能力之二:引入领域模型

阅读更多

许多人或许会对我的这种做法提出质疑,不错,很多的流行书籍都告诉我们,在整理完需求以后,可以提取领域模型。但不管怎么说,我仍然坚持我自己的做法,原因有N:

  1. 书上的知识是教我们思考,不是教我们教条主义的。
    说白了,一句话,书可能是对的,也可能是错的,流行的未必就是对的代名词。有个笑话曰:“感冒也是流行的。”很多方法,在实际中工作得很好,但是,在理论上,就是行不通。也有很多方法,在理论上是可行的,不过,放到现实中,就是行不通。
  2. 人的思维过程,不是一个线性的过程。有时候,我们就是先想到一个简单的领域模型,而这个领域模型,就可能是我们开发过程中最重要的突破。我们没有必要去强调先后:“这样是不行的,你必须先整理出需求文档,然后我再提炼领域模型。”,那么,当遇到工期紧张而要需要你仿制一个已有系统的时候,你不用这种需求逆工程,还能用什么办法?
  3. 领域模型是和需求同时存在的,也如同需求一样,散落在许多人的头脑中,但需求文档在书写的过程中,极容易让人陷于细节,而领域模型,比较适合抓大放小。
  4. 在需求分析过程中,我们已经在不自觉的使用领域模型了。例如,我们在描述一个需求文档时,会说到“actor打开一个订单,系统显示其所有可编辑的订单行”,这里面就隐含了“订单”,“订单行”和它们之间的关联关系,这是在我们写需求之间就已经在脑子里形成的简单模型。有了这个模型,可以在描写需求的时候,将领域模型元素做为通用的词汇表,这样就不会出现前面写“订单”,后面写“销售订单”的现象了。
  5. 在实际的应用过程中,这种方法是有效的。我个人的理解,我们在需求分析做了如此多的工作,对于设计和实现人员来讲,主要就是为了传递一个统一的领域模型。(当然,对测试人员和界面设计、文档编写人员来讲也是如此,不过除了这个领域模型外,还要传递其他的东西)。也就是说,如果一个需求分析人员,在提交需求文档的同时,把自己书写文档时,脑中形成的领域模型一起提交,会取得事半功倍的效果。

闲话不多说,让我们切入正题:

领域模型,当然不只类,关联和图这么简单,但这确实也是构成领域模型的最基本元素。同时,也要注意,领域模型是系统的抽象,而不是全部,我们要在此刻建立的领域模型,只是属于架构视图的那部分。这也就是28原则中的那20%。

将系统中有价值的类,关联等提取出来,只是完成了领域建模的50%,剩下的50%,就是基于需求,对领域模型构造块的重新归类、和组织。

常采用的做法有:

  • 基于业务加入关联关系的导航箭头
  • 使用限定符,减少多重性。
  • 清除不必要的关联
  • 分类:实体,值对象和服务
  • 增进职责层规划
  • 区分核心领域和通用子域
  • 书写领域前景文档
  • 显式化隐藏概念
  • 套用分析模式

    等等。。。。

在项目交流和需求调研过程中,你可以根据领域模型,特化出一个对象图,这样非常有助于跟业务专家的交流,并且极容易在领域模型中发现矛盾甚至错误的需求。

分享到:
评论

相关推荐

    数据库模型:概念模型、逻辑模型、物理模型

    在数据库领域,主要存在三种模型:概念模型、逻辑模型和物理模型,每种模型都有其独特的用途和特点。 1. 概念模型(Conceptual Model): 概念模型,也称为信息模型,是数据库设计的起点,它以用户或业务的角度来...

    项目管理艺术:项目经理能力模型

    波士顿大学企业教育中心(BUCEC)针对这一需求,开发了一套项目经理能力模型,旨在帮助企业评估现有项目经理的能力,并为未来的培训和发展规划提供指导。 #### 二、项目管理的双重属性 项目管理通常被看作是技术和...

    中文LLaMA模型和指令精调的Alpaca大模型:中文数据进行二次预训练,进一步提升了中文基础语义理解能力

    《中文LLaMA模型与指令精调的Alpaca大模型:深化中文语义理解的探索》 在当今快速发展的信息技术领域,人工智能(AI)尤其是自然语言处理(NLP)正逐渐成为研究的焦点。近期,一个名为"中文LLaMA模型"的创新成果...

    基于体系结构的软件分析设计过程模型

    该模型通过引入软件体系结构技术,并将其细分为需求分析、体系结构设计和系统设计三个阶段,有效地提升了软件分析设计的质量和效率。 #### 二、背景及意义 软件体系结构的设计在整个软件生命周期中扮演着至关重要...

    引入运费险参数的电商利润优化模型分析.pdf

    本文将运费险参数引入经典报童模型中,建立了一个考虑退货运费成本的电商利润预测模型,并对电商是否应该购买运费险进行决策分析。 报童模型(Newsboy Model)是一种用于解决随机需求下的库存管理问题的经典模型,...

    金融行业研究方法-2资产配臵方法论系列之二:状态切换模型的三个引申.pdf

    ### 金融行业研究方法-2资产配置方法论系列之二:状态切换模型的三个引申 #### 模型回顾:初衷、方法和回测 在金融行业研究领域,特别是资产配置方面,状态切换模型(State Switching Models)作为一种重要的工具...

    一份智慧社区需求分析及评估模型方案.docx

    本文将深入探讨智慧社区的需求分析、内涵界定以及评估模型构建。 首先,智慧社区需求分析显示,当前存在的问题主要包括:物联网技术在社区应用不足,仍处于初级阶段,如智慧家居、智慧物业等应用多处于方案或试运行...

    基于分数阶灰色神经网络组合模型的四川省天然气需求预测分析.pdf

    基于分数阶灰色神经网络组合模型的四川省天然气需求预测分析 本文提出了一种基于分数阶灰色神经网络组合模型的四川省天然气需求预测方法。该方法将分数阶灰色模型和BP神经网络模型组合,以提高预测精度。通过对四川...

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

    总之,领域模型设计的目的是为了更好地理解和表达业务,通过分析给定的文件名,我们可以推测出这是一个涉及数据包解析和处理的系统,领域模型应关注于如何有效地处理和解析这些数据包,以及如何执行相关的业务逻辑。...

    常用软件开发模型比较分析

    本文将对比分析三种常见的软件开发模型:瀑布模型、螺旋模型和变换模型。 1. 瀑布模型(Waterfall Model) 瀑布模型是最传统的软件开发模型,它按照固定的顺序依次进行软件计划、需求分析、设计、编码、测试和维护...

    华为:模型改变测试研究

    总结起来,华为的模型改变测试研究证明了MBT在提高测试效率、保证测试质量、优化需求分析以及增强测试自动化方面的巨大潜力。通过构建模型,测试活动变得更加系统化、透明化和科学化,这对于大型企业尤其是IT行业的...

    MLOps机器学习运维参考能力模型

    MLOps,即Machine Learning Operations,是将DevOps理念应用于机器学习领域的实践,旨在提高模型的开发、部署和维护效率。MLOps的主要目标是通过自动化工具和流程,促进数据科学家与运维团队之间的协作,确保模型...

    CMMI需求管理规范

    CMMI(Capability Maturity Model Integration,能力成熟度模型集成)是一种被广泛应用于软件工程、系统工程和其他领域的能力成熟度评估标准。它提供了一套系统化的方法来评估组织在特定过程域的能力水平,并指导...

    软件系统分析与设计-知识点2(开发过程模型:嵌入华为敏捷模型)1

    首先,瀑布模型是一种线性的开发模型,它按照固定的顺序进行,如需求分析、设计、编码、测试和维护等,每个阶段都依赖于前一个阶段的完成。这种模型强调文档完整性和阶段间的顺序性,但在面对需求频繁变更时显得较为...

    软件需求分析课件:Chap 7-GRASP.ppt

    在软件需求分析中,GRASP原则帮助开发者在创建领域模型后,确定方法归属、定义对象间的消息交互,从而更好地满足需求。 在Elaboration Iteration 1中,GRASP原则被引入,它包括多个核心的设计模式,如Controller、...

    案例分析诺兰模型.doc

    北京第二机床厂的案例展示了诺兰模型的实践情况。 在诺兰模型的六个阶段中,我们可以看到北京第二机床厂的发展历程: 1. 起步阶段(1985年):北京第二机床厂开始引入286 PC机,开发简单应用,释放了工作人员的...

    第4、5讲 需求分析1

    需求分析的作用在于定义软件的范围、确定功能和性能要求,构建数据、功能和行为模型,并为后续的评估和质量控制提供基础。 软件需求的重要性不容忽视。根据历史数据显示,软件项目失败的原因中,与需求相关的问题...

    ChatGPT技术的用户个性化需求分析与建模研究.docx

    ChatGPT技术的用户个性化需求分析与建模研究 ChatGPT 技术作为自然语言处理技术的代表性成果之一,已经广泛应用于对话生成领域。然而,不同的用户对 ChatGPT 的期望和需求存在差异,因而需要进行用户个性化需求分析...

Global site tag (gtag.js) - Google Analytics