同構(gòu)與同態(tài):認(rèn)識(shí)同一性
Posted on 2009-02-28 16:57 canonical 閱讀(1648) 評(píng)論(0) 編輯 收藏 所屬分類(lèi): 設(shè)計(jì)理論同構(gòu)關(guān)系對(duì)于認(rèn)知可以起到本質(zhì)上的簡(jiǎn)化作用。如果通過(guò)一個(gè)推理鏈條,確認(rèn)了A == B == C == D,則可以直接從概念上推導(dǎo)出 A == D, 這一關(guān)系有可能被直觀理解,而不需要理會(huì)中間的推理步驟。(注意到以上元素兩兩建立同構(gòu)關(guān)系的時(shí)候可能要采用不同的對(duì)應(yīng)手段,因此上面的等式并不是平凡 的。)另一方面,我們可以確定一個(gè)模型元素M, 將系統(tǒng)簡(jiǎn)化為 A == M, B == M, C == M, D == M。只要理解了元素M就理解了等價(jià)的其他元素。
Witrix平臺(tái)中PDM定義作為基礎(chǔ)的結(jié)構(gòu)模型,它同時(shí)映射成為數(shù)據(jù)庫(kù)表,以及hbm, java, meta等多個(gè)代碼文件,此外還對(duì)應(yīng)于約定的WebObject名稱(chēng)和BizFlow文件名稱(chēng),相應(yīng)的報(bào)表文件目錄等。我們只要理解了pdm模型,即可通 過(guò)推理自然的掌握各個(gè)層面上對(duì)應(yīng)的結(jié)構(gòu)。這意味著只要知道實(shí)體名稱(chēng),就知道如何通過(guò)Web訪問(wèn)這個(gè)對(duì)象,知道數(shù)據(jù)在數(shù)據(jù)庫(kù)中對(duì)應(yīng)的數(shù)據(jù)庫(kù)表,而不需要知道 后臺(tái)是如何讀取前臺(tái)提交的參數(shù)以及如何執(zhí)行保存數(shù)據(jù)指令的。不僅僅是在模型驅(qū)動(dòng)領(lǐng)域,在系統(tǒng)設(shè)計(jì)的各個(gè)方面,我們都應(yīng)該盡量充分的利用當(dāng)前的信息通過(guò)推理 得到系統(tǒng)其他部分的結(jié)構(gòu),而不是通過(guò)手工關(guān)聯(lián)或者判斷在程序中動(dòng)態(tài)維持這種對(duì)應(yīng)關(guān)系。例如在flow-cp機(jī)制中,biz的id, action的id等都根據(jù)step配置的id推導(dǎo)得到,這樣在工作列表跳轉(zhuǎn)的時(shí)候就可以根據(jù)規(guī)則推導(dǎo)出跳轉(zhuǎn)頁(yè)面對(duì)應(yīng)的鏈接,而不需要手工編寫(xiě)頁(yè)面重定向 代碼。
同態(tài)(homomorphism)關(guān)系相對(duì)于同構(gòu)關(guān)系,只強(qiáng)調(diào)單向映射的可行性,它是一個(gè)舍棄屬性的過(guò)程。同態(tài)作為最基礎(chǔ)的認(rèn)知手段之一,它不僅僅是用一
個(gè)符號(hào)來(lái)置換一組元素,而是同時(shí)保留了某種全局的運(yùn)算關(guān)系,因此同態(tài)映像可以構(gòu)成某種獨(dú)立的完整的研究對(duì)象。通過(guò)同態(tài)映射,我們可以在不同的抽象層面上研
究原系統(tǒng)的一個(gè)簡(jiǎn)化版本。例如meta中的layout是一種典型的領(lǐng)域特定語(yǔ)言(DSL)。
userName userTitle
emailAddress
每一個(gè)字段表示了一個(gè)可能任意復(fù)雜的inputor或者viewer,
字段之間的前后關(guān)系描述了最終顯示頁(yè)面上顯示內(nèi)容的相對(duì)關(guān)系。當(dāng)viewer根據(jù)需求發(fā)生改變的時(shí)候,并不影響到layout層面上的關(guān)系,因此
layout可以保持不變。如果我們?cè)谙到y(tǒng)中把問(wèn)題分解為多個(gè)抽象層面上,多個(gè)觀察視角上的同態(tài)模型,則可能實(shí)現(xiàn)更高的軟件復(fù)用程度。
在Witrix平臺(tái)的設(shè)計(jì)中,很多細(xì)粒度的標(biāo)簽都定義為tpl文本段,這樣平臺(tái)只要理解某一層面上的交互關(guān)系,實(shí)際應(yīng)用中可能出現(xiàn)的細(xì)節(jié)在標(biāo)簽內(nèi)部進(jìn)行局
部處理,不會(huì)突破原始設(shè)計(jì)的形式邊界,不會(huì)影響到原先設(shè)定的主體系統(tǒng)結(jié)構(gòu)。例如BizFlow中的tpls段,action的source段等。
上世紀(jì)50年代以前,生物學(xué)家做夢(mèng)也想象不到具有無(wú)限復(fù)雜性的生物遺傳過(guò)程,竟然可以被抽象為ATGC四個(gè)抽象符號(hào)的串聯(lián)。生命竟然不理會(huì)各種已知的或是
未知的物理化學(xué)作用,被抽象的三聯(lián)碼所驅(qū)動(dòng)。一種抽象的本質(zhì)似乎成了生命世界的本原。在軟件的世界中,可以被識(shí)別的抽象元素絕不只是語(yǔ)言本身所提供的那些
機(jī)制。