結構的自足性

   說到軟件建模,一個常見的論調是模型應該符合實際需求,反映問題的本質。但是何謂本質,卻是沒有先驗定義的。在成功的建立一個模型之前,無論在內涵上還是在外延上我們都很難說清楚一個問題的本質是什麼。如果將模型看作是對領域結構的一種顯式描述和表達,我們可以首先考察一下一個“合適”的結構應該具備哪些特徵。
   按照結構主義哲學的觀點,結構具有三個要素:整體性,具有轉換規律或法則(轉換性),自身調整性(自律性)。整體性意味着結構不能被簡單的切分,其構成要素通過內在的關係運算實現大範圍的關聯與轉換,整體之所以成爲整體正是以轉換/運算的第一性爲保證的。這種轉換可以是共時的(同時存在的各元素),也可以是歷時的(歷史的轉換構造過程),這意味着結構總要求一個內在的構造過程,在獨立於外部環境的情況下結構具有某種自給自足的特性,不依賴於外部條件即可獨立的存在並保持內在的活動。自律性意味着結構內在的轉換總是維持着某種封閉性和守恆性,確保新的成分在無限地構成而結構邊界卻保持穩定。注意到這裏對結構的評判並不是來自外在規範和約束,而是基於結構內在的規律性,所強調的不是結構對外部條件的適應性,而是自身概念體系的完備性。實際上,一個無法直接對應於當前實際環境的結構仍然可能具有重要的價值,並在解決問題的過程中扮演不可或缺的角色。在合理性這個視角下,我們所關注的不僅僅是當前的現實世界,而是所有可能的世界。一個“合理”的結構的價值必能在它所適應的世界中凸現出來。
   在信息系統中,我們可能經常會問這個模型是否是對業務的準確描述,是否可以適應需求的變更,是否允許未來的各種擴展等等。但是如果換一個思維方向,我們會發現這些問題都是針對最終確立的模型而發問的,而在模型構建的過程中,那些可被利用的已存在的或者可以存在的模型又是哪些呢。每一個信息模型都對應着某種自動推理機,可以接收信息並做一定的推導綜合工作。一個可行的問題是,如何才能更有效的利用已有的信息進行推導,如何消除冗餘並減少各種轉換成本。我們經常可以觀察到,某一信息組織方式更充分的發掘了信息之間的內在關聯(一個表象是它對信息的使用不是簡單的局域化的,而是在多處呈現爲互相糾纏的方式,難以被分解),這種內在關聯足夠豐富,以至於我們不依賴於外部因素就可以獨立的理解。這種糾纏在一起的信息塊自然會成爲我們建模的對象。
   如果模型的“覆蓋能力”不再是我們關注的重點,那麼建模的思維圖式將會發生如下的轉化



 
最終的模型可以由一系列微模型交織構成。模型的遞進構造過程並不同於組件(Component)的實物組裝接口,也不是CAD圖紙堆疊式的架構概念所能容納的。在Witrix平臺中,模型分解和構造表達爲如下形式 http://canonical.iteye.com/blog/333167

     Biz[n] = Biz[n+1] aop-extends CodeGenerator<DSLx, DSLy>
   在軟件發展的早期,所有的程序都是特殊構造的,其必然的假設是【在此情況下】,重用不在考慮範圍之內,開發可以說是一個盲目試錯的過程。隨着我們逐步積累了一些經驗,開始自覺的應用理論分析手段,【在所有情況下】都成立的一些普適的原理被揭示出來,它們成爲我們在廣闊的未知世界中跋涉時的嚮導。當我們的足跡漸漸接近領域的邊界,對領域的全貌有一個總體的認知之後,一種對自身成熟性的自信很自然的將我們導向更加領域特定的分析。很多時候,我們會發現一個特化假設可以大大提高信息的利用率,推導出衆多未被顯式設定的知識。我們需要那些【在某些情況下】有效的規則來構成一個完備的模型庫。這就如同有大量備選的數學定理,面對不同的物理現象,我們會從一系列的數學工具中選擇一個進行使用一樣。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章