这个跟我了解REST的目标没啥关系呀,我是想知道Roy Thomas Fielding是怎么思考的?提炼一些使用我这套建模原语的思路。除了直接去看他的博士论文、他参与撰写的RFC文档,我别无选择。
建模不能“统一”语言,只能提供“一统”的原语,建模语言应该贴上具体领域的色彩,而建模原语不是,从某种意义上讲,建模原语的意义就是“领域语言”的“元语言”,而且具有一定“原子性”。
[该贴被jdon007于2011-07-29 14:34修改过]
这个比较赞同,REST的很多意义在今天才被很多人真正认识到,没有人真正理解REST,到今天,REST已经到了unREST,可能扩展出其自身创建的原始意图。
所以,需要思考他们是如何思考的,而不是跟在他们后面人云也云,而且只会把简单事情复杂化,当然这样浅入深出搞一下,会显得当事人很有学问,很高深。
领域原语很重要,我在想DDD提出统一语言,让分析人员和软件人员降低沟通门槛,防止拷贝不走样,对待复杂系统时能够深入浅出,这也算不算一种领域原语呢?
算,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修改过]