2010年12月13日 11:28 "banq"的内容
为什么一般人认为Forum是论坛系统的核心领域模型呢?其实论坛的核心不是论坛本身,而是可以发贴,如果一个不懂什么是论坛,你要解释:论坛就是大家可以发贴 ...

深有同感,最近在思考电子商务系统中的商品模型,让我觉察到事物是否就是一个大容器套小容器,小容器套核心的一个结构。这个核心的分析就是针对领域模型。
论坛领域,jivejdon是Forum套ForumMessage,以后可能会发展到Category套Forum再套ForumMessage,就像这个帖子提出的需求,http://www.jdon.com/jivejdon/thread/39639,由于这个套套结构在jivejdon中不太重要,所以Forum没有DDD影子。
电子商务领域呢?举个例子,男装套衬衫再套商务衬衫,可能接下去套品牌,套型号,这都不是核心,核心是最后被套住的商品。但是电子商务系统中这个套套结构非常重要,所以肯定要单独开发一个模块,这个模块也许不会是DDD,不会是OO,也许是算法,也许是数据结构。
[该贴被oojdon于2010-12-14 12:49修改过]

    banq,这不是开玩笑,而是我所面临的业务场景。我的企业里已经横七竖八的列了很多系统,而用户们说“既然数据都有了,那就应该可以让我随意集成啊”。可是做开发的都知道,这根本不可能,因为在基础业务模型的集成上根本走不通,这也是我根本不相信在中国的企业里“SOA治理”能走得通的原因。
    为什么我加入到道友的行列里,一是我相信DDD是解决我的问题的正确道路,尤其是在业务分析上,但是我的项目经验也让我看到目前DDD的不足。
    再次感谢banq和大家,这里让我学习了很多,我们一起努力让DDD不断完善进步。呵呵,不好意思,我仍然还是一个java新手。
[该贴被flyzb于2010-12-14 12:57修改过]

需求是变化的,但不是将灵魂变了,需求变化有一个相对边界

这个边界是什么?

2010年12月14日 13:15 "xuzhh"的内容
需求是变化的,但不是将灵魂变了,需求变化有一个相对边界

这个边界是什么? ...

这个边界就是领域两个字,Domain,Domain就是领域边界,超过这个边界就不是这个领域的。儿科和内科都看发烧,但是他们是两个领域,所以有两种医生。

领域建模就是划定一个边界进行需求分析,边界是自然界最重要的标志,狗和动物撒泡尿来标识边界,上帝通过动物已经告诉自以为聪明的人类,别忘记“边界”。


[该贴被banq于2010-12-14 13:40修改过]

banq所说的领域就是“边界”很对,而我所说的“相对稳定的”是一个补充,也就是很多基本的东西都已经确定下来了,不稳定的东西,我们很难去系统地开发。

其实banq单单说的“边界”是不足的,就是没有体现“稳定”,边界只体现出领域,但什么样的领域却没有表述。很多时候我们都能说出什么什么领域,但是就不能确定是做什么,于是就出现一个人一个理解(企业上有个东西,它叫做“运营模式”,“运营模式”是多种多样的)。从我们实际开发当中,明显的是必须要基本了解这个领域,而且这个领域是必须是大家约定好的——相对稳定的。所以,DDD当中需要的不单单是“边界”,而且是“相对稳定的”。

TO flyzb
>>用户们说“既然数据都有了,那就应该可以让我随意集成啊”。
<<这个随意也是有必要的前提,如banq所言,是“边界”,而且如我所说的“相对稳定的”——若果儿科和内科有各自的理解(就是不稳定了),这样的随意,不是乱套了?

2010年12月14日 14:47 "SpeedVan"的内容
边界只体现出领域,但什么样的领域却没有表述。很多时候我们都能说出什么什么领域,但是就不能确定是做什么,于是就出现一个人一个理解 ...

这时需要领域专家,儿科和内科是两个不同领域,就有两个不同的领域专家,也就是我们俗称医生。

领域专家不是计算机人员,计算机专家是软件领域的领域专家,但不一定是业务领域的专家,人家做这个行业几十年悟出的相对稳定的本质东西,靠你再聪明的计算机脑袋也不一定知道,所以, 越厨代庖事情当然不行。

名可名,非常名,大家还是好好琢磨Domain Model几个字的含义,大道至简。

儿科和内科是两个不同领域,

也可以是一个领域

2010年12月14日 16:21 "xuzhh"的内容
儿科和内科是两个不同领域,

也可以是一个领域 ...

呵呵,这就是人自以为聪明的地方

2010年12月14日 15:37 "banq"的内容
人家做这个行业几十年悟出的相对稳定的本质东西,靠你再聪明的计算机脑袋也不一定知道,所以, 越厨代庖事情当然不行。 ...

的确,若果是以程序员的身份去了解,就有越厨代庖之嫌了。

但回过头来,这个相对稳定是必须的,这是抛开领域人员和其他人员而言。相对稳定是对领域的描述,不是对程序员理解的要求。

如jivejdon是论坛,就是发帖,若果我不断加入游戏,视频发布,聊天室,金钱成就奖励,相册···从开始到现在,论坛依然是论坛,但这个是不稳定的,在这种情况下是危险的。当然没可能绝对稳定,但相对稳定还是需要的。也只有相对稳定时,我们才能扑捉一个有效的整体。

2010年12月14日 17:39 "SpeedVan"的内容
相对稳定是必须的,这是抛开领域人员和其他人员而言。相对稳定是对领域的描述,不是对程序员理解的要求。 ...

不是和你咬文嚼字啊,之所以能称为领域,就是相对稳定,有边界,打个比喻,电风扇转动时它还是电风扇,但是电风扇的叶子如果以光速转动,它就是铁板一块,就不是电风扇。

可以干脆干个公式吧:领域=外部边界+内部相对稳定。
所以,谈到领域,就有边界和相对稳定两个概念,这个命题就不用我证明了吧,之前虽然我谈的边界,另外一层意思就是内部相对稳定,如果内部不相对稳定,怎么会有边界呢?这是阴阳之道而已。

2010年12月14日 18:03 "banq"的内容
所以,谈到领域,就有边界和相对稳定两个概念,这个命题就不用我证明了吧,之前虽然我谈的边界,另外一层意思就是内部相对稳定,如果内部不相对稳定,怎么会有边界呢?这是阴阳之道而已。 ...

如果不稳定就没有边界,那么是不是就要包含。。。。。。

边界不会是稳定和不稳定的墙。边界不是绝对的。阴阳也是相互包含的,没有边界。
[该贴被xuzhh于2010-12-14 18:12修改过]

哈哈,我来继续延伸谈谈:

水有边界吗?没有,但是只有在容器里面才有,相对稳定了,大道无边,我们常把道比为水,实际就是想说到大道无边界,但是现实中怎么可能没有边界的事物呢?所以,为了表示我们这个道之大,就说它无边,那么有辩证思维的人就知道,这是一个特殊事物,或者说凌驾于事物之外的东东吧。

越是强调大道无边,反着道之动,越是说明我们要对边界的深刻认识。可惜现在几乎大多数国人这个基本关都没有过......。

就谈真理科学吧,没有跨越边界的真理,只有在一定边界内正确的真理,没有绝对的真理,只有相对的真理,所以,真理不是无边的,因为这世界上只有道是无边的,不可能再有其他东西是无边的。

之所以你能称为领域,就是因为你已经有相对稳定的东西,有形的边际了,剩余的就是你去发现领域中相对稳定的东西,DDD称为旋律,如果你软件合乎客观世界的旋律,你的软件就相当稳定了。

不要以你我的能力为借口说,没有稳定的东西,这与领域的逻辑是矛盾的,所以,国人最重要的是要过逻辑关啊,哈哈。
[该贴被banq于2010-12-14 18:15修改过]

2010年12月14日 18:13 "banq"的内容
之所以你能称为领域,就是因为你已经有相对稳定的东西,有形的边际了, ...

领域是否稳定和边界有关系么?我认为是不相关的

2010年12月14日 18:19 "xuzhh"的内容
领域是否稳定和边界有关系么?我认为是不相关的 ...

呵呵,不是相关不相关,而是一个事物两种叫法而已,你把水放在冰格里,然后放到冰箱中冰冻,出来后不是变成方块了吗?方块有边吗?无边吗?有边吗?无边吗?哈哈。

方冰块之所以成为一个有形事物,形成一个自己的领域,因为它有稳定的内部,自然形成方形边界。边界和稳定内部是从不同角度对方块进行界定而已。

成也萧何,败也萧何,成者为王,败者为寇,都是对同一个事物两种称谓;说你认真,那是夸你,其实你可能钻牛角尖,死脑筋呢;说你勤劳,那是夸你,其实你就是劳碌苦命。 鲁迅说:剔除去糟粕,吸取其精华,糟粕和精华其实一个事物的两个方面,剔除了糟粕,那个事物还能成事物吗?这些都是人自以为聪明的地方。

再打个最最简单比喻:搞Java的人经常看些国外英文原文吧,可是你经常无法打开,为什么,因为我们把精华和糟粕一起屏蔽了。长此以往。,这个民族科技能进步吗?


[该贴被banq于2010-12-14 19:08修改过]

2010年12月14日 18:03 "banq"的内容
不是和你咬文嚼字啊,之所以能称为领域, ...

哈哈,其实我也有点咬文嚼字,banq的冰块理解很有趣,其实,主要是想法不同而已。

>>之所以你能称为领域,就是因为你已经有相对稳定的东西。

这其中又涉及到认识论了,谈谈我的观点吧,上面这种是“描边论”,也就是一早就知晓一切的,但也有另一种:先圈出范围,再发现东西。

后者类似我们一般说的开发,我们一开始是不清楚精细的,需要确定边界,然后发现内部,这种是以客户为根本出发点的开发。而描边论也是一种开发,但内容定义是软件说了算,不是由客户说了算,也就是不是量身定做,这种开发也是存在的,如财务软件(高成本批量那种)。

我其实也不是无边的意思,我只是针对修改扩展前后领域两种状态,若果这两个状态变化过剧,则会带来过高的成本(领域变化大,不稳定)。相对稳定的意思,就是这两个状态变化不能过剧的意思而已(稳定修饰变化),这种相对稳定必须保持着。至于边界和内部确实由相互牵连,若果人能对内部完全的认识话,边界和内部确实已经无从划分了。但我们对客观领域所认识出来的领域有很多版本,所以才会重构,扩展等。

我认为的领域是从脑中出来的,若果客观世界中真存在领域的话,那么在我们脑中的领域就是其次品,次品是有残缺的。客观世界的领域是稳定的,但经过人脑理解,语言传递,编程后,就会缺失不少,认识和重构就会形成循环(内部的不稳定)。而内容的增加也对原领域进行扩张(边界的不稳定)。这些都会给我们认识的领域带来不稳定,所以我们尽可能认识、扑捉一个相对稳定的领域(由领域专家,根据实际情况获取较好),而扩展的时候也不要使领域变得不稳定。

冰,在水槽中,构成领域,但后来发现溶解成水,还是那个领域,但内部出现变化了。又发现水太少了,换个槽加点水,水的领域大了。

个人理解:已经存在,却不知道(没有了解清楚,或者误解),就构成内部不稳定;原来不存在的,额外增加的,则构成边界不稳定了。内部不稳定,我们已经有不少办法解决得很好。而论坛重构成一个大型的SNS的话,就是一种边界不稳定。原来的设计是根据原来的领域,所以过大的边界改动,会引起领域变质,而重构的成本就可能很大了(干脆重新弄个)。

可能banq的想法是,扩展前后是两个领域,所以领域一直是相对稳定的;而我的想法是,从原领域扩展为新领域,这种变化就导致不稳定的领域了(这就是我认为领域一词不带有稳定的原因)。感觉这两种想法也是可行的吧。

哈哈,感觉又走到名可名,非常名了。我试从banq的方向,想想先。


[该贴被SpeedVan于2010-12-15 02:33修改过]
[该贴被SpeedVan于2010-12-15 02:34修改过]