Posted on 2009-10-07 17:10
canonical 閱讀(2408)
評論(0) 編輯 收藏 所屬分類:
設(shè)計理論
說到軟件建模,一個常見的論調(diào)是模型應(yīng)該符合實(shí)際需求,反映問題的本質(zhì)。但是何謂本質(zhì),卻是沒有先驗(yàn)定義的。在成功的建立一個模型之前,無論在內(nèi)涵上還是在外延上我們都很難說清楚一個問題的本質(zhì)是什么。如果將模型看作是對領(lǐng)域結(jié)構(gòu)的一種顯式描述和表達(dá),我們可以首先考察一下一個“合適”的結(jié)構(gòu)應(yīng)該具備哪些特征。
按照結(jié)構(gòu)主義哲學(xué)的觀點(diǎn),結(jié)構(gòu)具有三個要素:整體性,具有轉(zhuǎn)換規(guī)律或法則(轉(zhuǎn)換性),自身調(diào)整性(自律性)。整體性意味著結(jié)構(gòu)不能被簡單的切分,其構(gòu)成要素通過內(nèi)在的關(guān)系運(yùn)算實(shí)現(xiàn)大范圍的關(guān)聯(lián)與轉(zhuǎn)換,整體之所以成為整體正是以轉(zhuǎn)換/運(yùn)算的第一性為保證的。這種轉(zhuǎn)換可以是共時的(同時存在的各元素),也可以是歷時的(歷史的轉(zhuǎn)換構(gòu)造過程),這意味著結(jié)構(gòu)總要求一個內(nèi)在的構(gòu)造過程,在獨(dú)立于外部環(huán)境的情況下結(jié)構(gòu)具有某種自給自足的特性,不依賴于外部條件即可獨(dú)立的存在并保持內(nèi)在的活動。自律性意味著結(jié)構(gòu)內(nèi)在的轉(zhuǎn)換總是維持著某種封閉性和守恒性,確保新的成分在無限地構(gòu)成而結(jié)構(gòu)邊界卻保持穩(wěn)定。注意到這里對結(jié)構(gòu)的評判并不是來自外在規(guī)范和約束,而是基于結(jié)構(gòu)內(nèi)在的規(guī)律性,所強(qiáng)調(diào)的不是結(jié)構(gòu)對外部條件的適應(yīng)性,而是自身概念體系的完備性。實(shí)際上,一個無法直接對應(yīng)于當(dāng)前實(shí)際環(huán)境的結(jié)構(gòu)仍然可能具有重要的價值,并在解決問題的過程中扮演不可或缺的角色。在合理性這個視角下,我們所關(guān)注的不僅僅是當(dāng)前的現(xiàn)實(shí)世界,而是所有可能的世界。一個“合理”的結(jié)構(gòu)的價值必能在它所適應(yīng)的世界中凸現(xiàn)出來。
在信息系統(tǒng)中,我們可能經(jīng)常會問這個模型是否是對業(yè)務(wù)的準(zhǔn)確描述,是否可以適應(yīng)需求的變更,是否允許未來的各種擴(kuò)展等等。但是如果換一個思維方向,我們會發(fā)現(xiàn)這些問題都是針對最終確立的模型而發(fā)問的,而在模型構(gòu)建的過程中,那些可被利用的已存在的或者可以存在的模型又是哪些呢。每一個信息模型都對應(yīng)著某種自動推理機(jī),可以接收信息并做一定的推導(dǎo)綜合工作。一個可行的問題是,如何才能更有效的利用已有的信息進(jìn)行推導(dǎo),如何消除冗余并減少各種轉(zhuǎn)換成本。我們經(jīng)常可以觀察到,某一信息組織方式更充分的發(fā)掘了信息之間的內(nèi)在關(guān)聯(lián)(一個表象是它對信息的使用不是簡單的局域化的,而是在多處呈現(xiàn)為互相糾纏的方式,難以被分解),這種內(nèi)在關(guān)聯(lián)足夠豐富,以至于我們不依賴于外部因素就可以獨(dú)立的理解。這種糾纏在一起的信息塊自然會成為我們建模的對象。
如果模型的“覆蓋能力”不再是我們關(guān)注的重點(diǎn),那么建模的思維圖式將會發(fā)生如下的轉(zhuǎn)化
最終的模型可以由一系列微模型交織構(gòu)成。模型的遞進(jìn)構(gòu)造過程并不同于組件(Component)的實(shí)物組裝接口,也不是CAD圖紙堆疊式的架構(gòu)概念所能容納的。在Witrix平臺中,模型分解和構(gòu)造表達(dá)為如下形式
http://canonical.javaeye.com/blog/333167
Biz[n] = Biz[n+1] aop-extends CodeGenerator<DSLx, DSLy>。
在軟件發(fā)展的早期,所有的程序都是特殊構(gòu)造的,其必然的假設(shè)是【在此情況下】,重用不在考慮范圍之內(nèi),開發(fā)可以說是一個盲目試錯的過程。隨著我們逐步積累了一些經(jīng)驗(yàn),開始自覺的應(yīng)用理論分析手段,【在所有情況下】都成立的一些普適的原理被揭示出來,它們成為我們在廣闊的未知世界中跋涉時的向?qū)?。?dāng)我們的足跡漸漸接近領(lǐng)域的邊界,對領(lǐng)域的全貌有一個總體的認(rèn)知之后,一種對自身成熟性的自信很自然的將我們導(dǎo)向更加領(lǐng)域特定的分析。很多時候,我們會發(fā)現(xiàn)一個特化假設(shè)可以大大提高信息的利用率,推導(dǎo)出眾多未被顯式設(shè)定的知識。我們需要那些【在某些情況下】有效的規(guī)則來構(gòu)成一個完備的模型庫。這就如同有大量備選的數(shù)學(xué)定理,面對不同的物理現(xiàn)象,我們會從一系列的數(shù)學(xué)工具中選擇一個進(jìn)行使用一樣。