关于REST,我会去看Roy Thomas Fielding的论文,http、html、uri的RFC文档,顺便了解css/javascript的设计思想。至于那些讨论,我浏览了一下,于我而言基本上没有任何价值。

这个跟我了解REST的目标没啥关系呀,我是想知道Roy Thomas Fielding是怎么思考的?提炼一些使用我这套建模原语的思路。除了直接去看他的博士论文、他参与撰写的RFC文档,我别无选择。

2011年07月29日 14:00 "@jdon007"的内容
建模如果一定要统一语言,是否会造成大家都钻在一个角度里出不来呢? ...

建模不能“统一”语言,只能提供“一统”的原语,建模语言应该贴上具体领域的色彩,而建模原语不是,从某种意义上讲,建模原语的意义就是“领域语言”的“元语言”,而且具有一定“原子性”。
[该贴被jdon007于2011-07-29 14:34修改过]

你们讨论好高深啊,我都看不懂了,回去慢慢消化。

2011年07月29日 19:08 "@tangxuehua"的内容
关于REST,我会去看Roy Thomas Fielding的论文,http、html、uri的RFC文档,顺便了解css/javascript的设计思想。至于那些讨论,我浏览了一下,于我而言基本上没有任何价值 ...

这个比较赞同,REST的很多意义在今天才被很多人真正认识到,没有人真正理解REST,到今天,REST已经到了unREST,可能扩展出其自身创建的原始意图。

所以,需要思考他们是如何思考的,而不是跟在他们后面人云也云,而且只会把简单事情复杂化,当然这样浅入深出搞一下,会显得当事人很有学问,很高深。

领域原语很重要,我在想DDD提出统一语言,让分析人员和软件人员降低沟通门槛,防止拷贝不走样,对待复杂系统时能够深入浅出,这也算不算一种领域原语呢?

2011年07月29日 20:40 "@banq"的内容
这也算不算一种领域原语呢 ...

算,Eric Evans提出的那套DDD术语,目标也在于提供通用的设计词汇,不失深刻,但似乎不够直白。值对象、聚合根等术语,对于多数人而言,是颇为费解的。

我尝试提出的这套原语意图在“分析、设计、实现”三个阶段通用,分析人员、设计人员、实现人员可以很自然地理解它,使用它。

这里解释一下定义这套术术语背后的思考过程。

1、模型,是事物的含义。但事物这个概念太广泛了,不宜直接拿来用,就像在REST中,使用资源这个词去代替事物,事物可作为别名。

那么为什么不选择DDD的Entity、四色原型的PPT或者DCI的Data呢?因为我们是在创建一套建模原语,最核心的概念自然要与模型有关,除了“模型”,我实在想不出更贴切的词汇了。模型,是建模的根本。

2、特征,描述事物(模型)具有怎么样的特点。特征既具有生活化的气息,也是一个在被各种学科广泛使用的术语,浅显而深刻。

比如矩阵轮、系统论上,特征向量、特征值、特征向量空间是出现频率极高的词语,常用于描述各种系统。我们使用特征来刻画、描述我们的模型。这里DDD的Value Object, 四色原型的Description,在直观上,在深刻性上,都远不如这个词汇。

3、场景,这也是一个生活化的语言,需求分析时,经常会有这个说法,有哪些业务场景。场景是一种活动,但活动与事物一样,太广泛了,只能作为别名。

这三个词汇,我个人觉得很好,因为它们既直观,又具有深刻性。

4、特征,分为状态特征和行为特征,代表从“状态”和“行为”两个维度去观察“模型”,它们是从“模型”身上剥离出来的,除了它们本身具有独立性和可复用性,更为重要的是使“模型”更为精炼。

5、在场景中,“模型”凝聚与此时此景有关的“状态特征”和“行为特征”,成为一个活生生的对象,与其他对象进行交互,完成任务。

这套原语的数学描述。
1)模型,表示为一组时间函数,包含状态特征和行为特征。
model = {f1(t),f2(t),...};
2) 特征,从模型的一组时间函数中,提取相对独立的状态特征和行为特征。
state = {f1(t),f2(t),...};
behavior = {f1(t),f2(t),...};
3) 场景,在场景模型凝聚特征持续一段时间(如从t0时刻到t1时刻)。
context => model-state-behavior = {f1(t0->t1),f2(t0->t1),...}。

借鉴四色原型的形象思维,使用四个原语。
在一张纸上画一个四象图,一横一竖的笛卡尔坐标平面。
1)把领域中的核心事物映射到四象中,放在第三象限,作为模型;(可以涂上绿色)
2)把领域中的业务场景映射到四象中,放在第一象限,作为场景;(可以涂上红色)
3)考虑所有场景,将模型的行为特征剥离出来,放在第四象限;(可以涂上黄色)
4)考虑所有场景,将模型的状态特征剥离出来,放在第二象限。(可以涂上蓝色)
[该贴被jdon007于2011-07-29 23:15修改过]

你这么一概括,我能理解了,有过UML建模的人会发现都有你这样几种概念。

比如你的模型是不是UML的类?可以落实为四色原型的四色或DDD的实体值对象等;

状态特征可以用状态图来表达;行为特征可以用Use case表达,Usecase中有场景一说,表达的是在当前场景下行为特征。

UML使用图来表达你说的几种原语,而你使用数学来表达,前者是象思维,因为象形思维比较直接,所谓看图辨识;而你的数学公式很严谨,准确,能否快速取决于当事人的数学知识和数学自觉。

2011年07月30日 08:19 "@banq"的内容
状态特征可以用状态图来表达;行为特征可以用Use case表达,Usecase中有场景一说,表达的是在当前场景下行为特征。 ...

不太一样,我的出发点是以“模型”为中心,以“特征”与“场景”为两个基本点。拿那个花木兰的例子分析一下。

大家熟悉的画面:
1)花木兰从战场凯旋归来,辞去将军之职,脱下戎装,现出女儿身。
2)花木兰战场上英勇作战,披上戎装,行将军之职,无人知晓是女儿身。

分析过程,设计过程,实现过程将呈现高度一致。
1)很容易识别出“花木兰”是“模型”,放在“四象图”的第三象限,涂以绿色;
2)很容易识别识别在战场“作战”是“场景”,放在“四象图”的第一现象,涂以红色;
3)从“花木兰”这个模型身上剥离出“状态特征”,即“戎装”,放在第二象限,涂以蓝色;
4)从“花木兰”这个模型身上玻璃出“行为特征”,即“将军”,放在第四象限,涂以黄色。

再分析一下图书馆这个领域中的借阅场景,读者是不在这个图书馆领域中的,读者是图书馆领域的使用者和观察者,是图书馆领域模型的用户。

1)图书馆、图书卡、图书,是“模型”,放在“四象图”的第三象限,涂以绿色;
2)卡的类型,表征“状态特征”,放在“四象图”的第二象限,涂以蓝色;
3)被借阅的书,表征“行为特征”,放在“四象图”的第四象限,涂以黄色;
4)借阅场景、借阅规则,是场景,放在“四象图”的第一想象,涂以红色。


“四象图”不同于四色原型的画图方式,与UML的画图的角度差别更大。这是这套原语的“象”;如果具备一定数学常识,可以理解这套原语的数学描述,即“数”;实际上也可以从“理”即纯粹逻辑的角度来剖析这套术语,这个我着墨较少,毕竟“理”隐藏在“象数之中”,要解析出来,需要借助一些逻辑观并探讨世界观,这可能会使这套原语失去“亲和力”,所以暂时先不多说。

这套原语对分析人员、设计人员、开发人员都具有“亲和力”,甚至对于外行都具有亲和力,容易理解,“四象图”,这个工具,可以让他们几乎不用思考(不思考是不可能的,只能说解放了一部分脑力)就可以进行分析、设计和实现。如果能理解其数学描述,理解其背后的逻辑观,那当然更好,但不会太影响“四象图”的使用。

所以,“模型、状态和行为特征、场景”和“四象图”,可以视为对建模观的命名与立象,浑然一体而泾渭分明,强调了模型的整体观和动态性,不像UML将模型割裂为类、状态图、交互图、用例等等,而且UML的状态图与交互图不能直接落实为代码,而状态特征与行为特征可以。不过,对于复杂的场景,可借助UML的状态图与交互图来进一步形象描述。
[该贴被jdon007于2011-07-30 11:56修改过]

2011年07月30日 08:19 "@banq"的内容
状态特征可以用状态图来表达;行为特征可以用Use case表达,Usecase中有场景一说,表达的是在当前场景下行为特征。 ...

不太一样,我的出发点是以“模型”为中心,以“特征”与“场景”为两个基本点。拿那个花木兰的例子分析一下。

大家熟悉的画面:
1)花木兰从战场凯旋归来,辞去将军之职,脱下戎装,现出女儿身。
2)花木兰战场上英勇作战,披上戎装,行将军之职,无人知晓是女儿身。

分析过程,设计过程,实现过程将呈现高度一致。
1)很容易识别出“花木兰”是“模型”,放在“四象图”的第三象限,涂以绿色;
2)很容易识别识别在战场“作战”是“场景”,放在“四象图”的第一现象,涂以红色;
3)从“花木兰”这个模型身上剥离出“状态特征”,即“戎装”,放在第二象限,涂以蓝色;
4)从“花木兰”这个模型身上玻璃出“行为特征”,即“将军”,放在第四象限,涂以黄色。

再分析一下图书馆这个领域中的借阅场景,读者是不在这个图书馆领域中的,读者是图书馆领域的使用者和观察者,是图书馆领域模型的用户。

1)图书馆、图书卡、图书,是“模型”,放在“四象图”的第三象限,涂以绿色;
2)卡的类型,表征“状态特征”,放在“四象图”的第二象限,涂以蓝色;
3)被借阅的书,表征“行为特征”,放在“四象图”的第四象限,涂以黄色;
4)借阅场景、借阅规则,是场景,放在“四象图”的第一想象,涂以红色。


“四象图”不同于四色原型的画图方式,与UML的画图的角度差别更大。这是这套原语的“象”;如果具备一定数学常识,可以理解这套原语的数学描述,即“数”;实际上也可以从“理”即纯粹逻辑的角度来剖析这套术语,这个我着墨较少,毕竟“理”隐藏在“象数之中”,要解析出来,需要借助一些逻辑观并探讨世界观,这可能会使这套原语失去“亲和力”,所以暂时先不多说。

这套原语对分析人员、设计人员、开发人员都具有“亲和力”,甚至对于外行都具有亲和力,容易理解,“四象图”,这个工具,可以让他们几乎不用思考(不思考是不可能的,只能说解放了一部分脑力)就可以进行分析、设计和实现。如果能理解其数学描述,理解其背后的逻辑观,那当然更好,但不会太影响“四象图”的使用。

所以,“模型、状态和行为特征、场景”和“四象图”,可以视为对建模观的命名与立象,浑然一体而泾渭分明,强调了模型的整体观和动态性,不像UML将模型割裂为类、状态图、交互图、用例等等,而且UML的状态图与交互图不能直接落实为代码,而状态特征与行为特征可以,两者实际上是不能等价视之的。

四象图的整体性和动态性,体现在用一张图形象描述了领域中可能出现的所有静态或动态的画面;模型、状态特征、行为特征,横跨整个领域;场景根据业务规则(规约)选取模型,模型在此时此景内,凝聚了相关的状态特正、行为特征,进行协作,完成任务。
[该贴被jdon007于2011-07-30 12:24修改过]

2011年07月30日 10:25 "@jdon007"的内容
分析过程,设计过程,实现过程将呈现高度一致。
1)很容易识别出“花木兰”是“模型”,放在“四象图”的第三象限,涂以绿色;
2)很容易识别识别在战场“作战”是“场景”,放在“四象图”的第一现象,涂以红色;
3)从“花木兰”这个模型身上剥离出“ ...

你说的模型、状态特征、行为特征,还有场景我可以理解,其实和四色原型一致,只不过换一种叫法吧:PPT、DESC、ROLE、MI。相比之下,我觉得还是四色原型比较好理解点,生活化。

比如按照四色原型来理解你的花木兰将军作战的例子就是:
花木兰穿上戎装从而扮演将军的角色参与到作战的活动中去。其中的四色就是:花木兰(PPT)、将军(角色,由花木兰扮演)、戎装(对将军角色的一个DESC,也就是说将军会穿上荣转,是一种你说的特征)、作战(MI,该作战活动的参与者之一是将军)

这样的理解与分析也很直接啊。

当我看到你用“剥离”的单词时,把我搞混了。
“3)从“花木兰”这个模型身上剥离出“状态特征”,即“戎装”,放在第二象限,涂以蓝色;”,从你这句话中,给我的感觉是“戎装”是花木兰的“状态特征”,只不过是被剥离了的,但实际上戎装应该是属于“将军”这一角色的,我们只有想到将军时,才会想到戎装。所以我觉得戎装是将军的“状态特征”。

还有另外一点就是“3)被借阅的书,表征“行为特征”,放在“四象图”的第四象限,涂以黄色;”,你说“被借的书”是行为特征,这个如何理解呢?当我看到行为特征时,我首先想到的是行为,但是“被借的书”也是书,本质上是物体,或者说是一个角色,怎么就变成行为了呢?虽然你解释过,说“被借的书”不是行为过程,而是行为结果,这点我赞同,但为什么行为结果就可以看成是“行为特征”呢?我实在无法把“行为结果”这样的东西理解为“行为特征”。但是相反,如果我用四色原型的分析方法去理解,把被借的书看作是一个角色,该角色由书本扮演,该角色有一些状态特征比如“被借时间”、“被借人”。

因此你能再给出一些更系统详细的解释来说明“状态特征”、“行为特征”当某个当前场景中是属于哪个模型的吗?或者清楚的告知当你用你这套属于来描述某个领域例子时,与四色的对应关系吗?或者说们一下当前的“行为特征”是一个角色,这样也好很多。

行为特征我认为还是理解为角色的一种特征比较好理解,而角色本质上也是一个模型,只不过是人为主观意识产生的一个模型而已,客观模型中不存在角色这一概念。如果把客观的模型和角色都理解为模型,那么事情就变得简单并好理解了。比如任何状态特征或行为特征就是属于模型的,状态特征就是通常所说的属性,行为特征就是通常说说的方法。而场景就是在一定的时间空间中模型之间相互交互的一个人类主观意识的叫法或命名而已。所以,这里的关键还是只要把模型和角色进行区分,要做到心中能辨识,然后将“状态特征”和“行为特征”按照事物的共性与特性(依赖场景的部分)的原则进行按号入座即可。

我记得这点还是你教我们的。呵呵。

2011年07月30日 12:21 "@tangxuehua"的内容
“状态特征”、“行为特征”当某个当前场景中是属于哪个模型的吗?或者清楚的告知当你用你这套属于来描述某个领域例子时,与四色的对应关系吗? ...

与四色原型看起来很像,但背后的思考却已经发生变化了。

1)这套原语的核心是以“模型”为中心,不同四色原型或DCI以“角色”或“场景”为中心,是把“角色”以及“描述”看作模型的附属物。

2)状态特征和行为特征,是因为具有独立性,从“模型”身上剥离。战场上的花木兰身上的“戎装”(状态特征)和“将军之职”(行为特征),是可以剥离出来复用的。戎装可以别人穿,将军可以别人当。

3)行为结果可以用来反映行为特征,行为过程也可以用来反映行为特征。角色是一个名词呀,能表示行为特征?实际上角色这个概念也是行为结果呀。行为特征的刻画方式,可以通过“角色”(行为结果),也可以通过“(时间)函数”(行为过程)来刻画。

4)场景是在一段时间内,模型根据业务规则凝聚相关的特征(披上戎装(戎装不一定是当将军的人才可以穿的),行将军之职)进行作战。

5)例子只是为了形象说明,便于大家理解。如果你看看数学描述,理解起来应该就不会有什么困惑了。

6)忘记四色原型、DCI、DDD等琳琅满目、层出不穷的词汇吧,提出这几个原语的一个目标就是希望消除这些buzzword,为大家腾出更多的时间和精力思考更优雅的技术实现。

[该贴被jdon007于2011-07-30 12:58修改过]

你说的大部分我都能理解,只是完全吸收学好还需要一段时间。关于你说角色是行为结果,这点我觉得不太准确,我觉得角色就是你说的:“模型根据业务规则凝聚相关的特征(披上戎装(戎装不一定是当将军的人才可以穿的),行将军之职)”之后的一个产物。也就是说,它是在模型的基础之上融合了某些状态特征和行为特征后的产物。你觉得呢?

2011年07月30日 13:27 "@tangxuehua"的内容
它是在模型的基础之上融合了某些状态特征和行为特征后的产物。 ...

这个不是角色,是一个活生生的对象,角色是行为特征的抽象。

模型(花木兰)凝聚了状态特征(批上戎装)和行为(扮演了将军),成为一个活生生的对象(真正的对象),在战场上进行战斗。
不是将军(角色)在战斗,完整的描述是一个披上戎装身为将军的花木兰在战斗。

如果你把模型凝聚特征后的对象,理解为角色,实际上还是以角色为中心,还是停留在一个“抽象”的层次,在场景中,模型凝聚特征后成为一个活生生的对象,一个活生生的生命。

你能理解我很高兴,这是我的目标呀,让这套原语理解起来尽可能简单,多数人花一点点时间就可以了解个大概。你还一部分不理解,可能是原有关于四色原型、DCI、DDD的知识和经验在作怪,呵呵。经验是垫脚石,也是绊脚石呀。

你说的大部分我都能理解,只是完全吸收学好还需要一段时间,需要从大量的例子中反复思考和实践我想才能深刻理解。

在你的方法论中,
我能总结出以下等式:
1)行为特征=行为结果+行为过程,结果和过程是从两个不同的角度来反映行为,对吧?
2)行为结果=角色,之前理解起来有点困难,并且理解错了,现在基本理解了,呵呵。但是行为过程在花木兰以及借书的的例子中如何体现呢?
3)状态特征=描述
4)模型+状态特征+行为特征=真正的对象
5)模型、状态特征、行为特征这三样东西相互独立,可以被重用,这点看了你的描述后我也赞同了,确实是这样。
6)不要再理解为是角色在参与活动,角色只是行为特征在某个角度(结果)的一个抽象,这样想来角色和类差不多,都是一种抽象和泛化;
7)建模时不要再认为是模型扮演角色参与活动了,因为这样很容易觉得是角色在参与活动;而应该理解为模型被凝聚了某些行为特征,比如角色(属行为特征范畴),然后模型成为真正的对象,然后去参与活动;
8)真正的对象+对象之间的协作消息传递+时间+空间=场景,即活动,是这样吗?

由此可见,你的理论不仅包含了四色原型,并且还进行了扩充,实属难得之人才啊。我真为我们国人能有这样思考力的人才而感到骄傲。

提出一套理论只是第一步,要让大家懂得这套理论,接受这套理论,然后大家一起来用这套理论分析设计实现大量现实例子,这整个过程我觉得您还有很多路还要走。
之前我们一个产品经理跟我们说,我们要培养系统思考的能力,就是凡事要从系统的角度多方面全方位去考虑问题,在做任何一个产品时不仅要想功能,还要想各种使用场景,思考用户在使用产品时可能会遇到什么问题,我怎么做才能让他们避免遇到这些问题,即站在用户的角度上来审视产品。这样做出来的产品用户用起来才会爽。

其实我觉得理论提出者也是一样,理论的客户就是开发设计人员,你要考虑我们会如何看待这个理论,如何理解这个理论,你要思考如何才能让我们更好的理解您的理论。光有一个花木兰或图书馆的例子还是远远不够的。比如我问一个论坛如果也想建模,能用你的理论分析吗?当然,首先先通过一两个简单的例子验证这套理论的正确性也可以,但之后肯定还需要通过各种场景的应用才能证明他是经受的住考验的经典的理论。所以,你将来要耐得住考验接受大家的很多业务场景的建模需求的疑问,并给出正确的按照您的理论而得出的始终一致的解决思路,这样大家才会慢慢接受这套理论,呵呵。说的多了点。

[该贴被tangxuehua于2011-07-30 13:58修改过]
[该贴被tangxuehua于2011-07-30 14:01修改过]
[该贴被tangxuehua于2011-07-30 14:04修改过]
[该贴被tangxuehua于2011-07-30 14:33修改过]
[该贴被tangxuehua于2011-07-30 14:42修改过]
[该贴被tangxuehua于2011-07-30 15:54修改过]

自从上了jdon网站后,我思维慢慢开始提升了,因为我能有幸遇到很多思维能力很强的人。从而有机会成为第一批知道某个理论的讨论过程及最终结果的人,真是感到高兴。在博客园都是我把在这里所学到的知识分享给别人,但是总是不会得到实质性的有意义的回复,和这里的气氛完全不一样。而在这里我基本上始终是出于学习状态。要是我在CSDN上分享这里的一些相关讨论,他们肯定会疯的,说你只会空谈理论,没几个人能觉得有意义。这样想来,人的差距真的好大啊。
我今天在学习你们之前讨论的一个帖子,我每次遇到你们得好的讨论,总会把它打印出来,自己慢慢看,反复看,我自知理解力创新力不是很强,但我多看几遍,多想几遍,多实践实践,也总能达到一些效果吧,呵呵。关键是要有想学习这种看似“无用”的知识的欲望。那个帖子就是由uda1341参与讨论的“一点纯哲学”的讨论,感觉非常棒,其实多看看这些东西,整个人的思维能力,看问题的角度都会大大提高和开阔。开心!

谢谢你们!
[该贴被tangxuehua于2011-07-30 14:19修改过]