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

news/2024/7/5 21:20:26
2006年07月10日 16:09:00

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

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

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

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

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

常采用的做法有:

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

    等等。。。。

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



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=899906



http://www.niftyadmin.cn/n/3661338.html

相关文章

nuxt build 变量_7个Nuxt技巧:构建安全高效的Vue.js Web应用程序

作者 | Jonas Galve 译者 | 王强 Nuxt.js是一种创建Vue.js通用应用的开源框架,与传统的Vue SPA相比,该框架SSR(服务端渲染)将带来大量的SEO提升,提供更好的用户体验和。随着Nuxt2.7版本的发布,作者带大家回顾下以前给出的技巧&…

[需求]需求分析能力之一:用流程图说话

2006年07月06日 16:08:00 从江西项目上回来,就有一堆的事情,总算可以告一段落了。那是阮阮还在泰安基地工作的时候,有一次,我跟她聊天,说起需求能力。我说,我并不是比别人聪明,而是掌握了需求的…

python个数计算公式_Python 程序计算每个元音的数目

Python 程序计算每个元音的数目 在此程序中,您将学习使用字典和列表理解来计算字符串中每个元音的数量。 要理解此示例,您应该了解以下Python编程主题: 源代码:使用字典 示例#Python 程序计算每个元音的数目 #元音字符串 vowels …

[软工]近距离接触RUP plug-in

2006年06月08日 17:16:00 Derek 在给我们讲SOA的时候,告诉我们,Rational 有一个新的RUP Plug_In,叫做RUP4SOA。我是一个看好SOA并且喜欢RUP的人,这样的有创意的东东,当然不会逃出我的手掌心。PRJ270的Module5&#xff…

volatile关键字的作用_你真的会用Volatile了吗?

你真的会用Volatile了吗? 作者:大方 前言 在Java面试时,很多面试官都喜欢考察面试者对Java并发的了解程度。你面试的时候被并发编程的问题难住了吗?是不是也挂在并发问题上? 在面试中,volatile关键字是出镜…

[软工]此EUP非彼EUP

2006年06月07日 13:46:00 去北京前,跟阿阮家的David 聊起RUP,David是IBM SCM的认证专家,常常会被邀请了去客户那里解决他们的配置管理问题,英文特帮,跟Ivar 非常熟悉。他忽然问我,是否有EUP的资料&#xff…

R中高效安装包,以ComplexHeatmap包为例

包安装问题解决方案 1. Biocmanager安装 [2. 手动安装](正在更新……) 目录 包安装问题解决方案前言1. install.packages()的介绍1.1 install.packages()的工作原理1.2 install.packages()安装失败的原因1.3 解决方案 2. BiocManage安装ComplexHeatmap总…

cmd编译可以通过执行没有结果_QT发布程序没有那么难——WINamp;MAC OS系统release操作指南...

【目标】将代码程序打包成.exe(windows系统下可执行程序)或.app(mac os系统下可执行程序),不要求系统安装QT工具即可执行。【准备工作】(很重要!很重要!很重要!&#xff…