連載19:軟件體系設計新方向:數學抽象、設計模式、系統架構與方案設計(簡化版)(袁曉河著)

幾何和代數特性

 

對於置換幾何來說,集合S是一個有限的集合,而且其描述爲點集形成的平面,每一個置換點和點集中的小圓點一一對應,如圖2-1所示。

     2-1

 

其在點集中的圖形則就是將不同的置換點進行連接,例如圖2-1所示,我們任意兩點AB之間的連接我們稱爲關係,此關係就是在此幾何中置換點之間的關係信息,例如在變換羣G1(值-地址置換、地址-值置換、賦值置換)形成的值和地址轉換關係,或者G2(抽象置換、繼承置換、類自反置換)抽象繼承關係,或者G3(泛化置換、特化置換、模板自反置換)泛化和特化關係,以及其不同變換羣對應的關係。於是我們使用數學中的準確定義來表示:

笛卡兒積D1x D2x…x Dn的子集叫做在域 D1,D2,…, Dn上的n元關係(Relation)。用R(D1,D2,…, Dn)表示,R是關係名。關係中的每個元素是關係中的元組,通常用t表示。

定義:設X是一個集合,R是設計兩個元素的一個規則,如果對於X中的任兩個元素a,b均可確定它們是適合R,記做(aRb),或不適合R,就稱R是集X的一個二元關係。

如果把aRb用序偶(a,b)表示,那麼集X中的所有適合關係R的元素組組成的集合是X*X的一個子集。因此,我們也可把X*X的一個子集R定義爲集X中的一個二元關係。更一般,我們把X*Y的一個子集定義爲集X於Y間的一個二元關係。

下面討論二元關係的一些基本性質:

1、對任意的a∈X,均有aRa,則稱R是自反的(或稱反身的);

2、對任意的a,b∈X,若有aRb,就有bRa,則稱R是對稱的;

3、對任意的a,b∈X,由aRb和bRa,可推出a=b,則稱R是反對稱的;

4、對任意的a,b,c∈X,若有aRb和bRc,就有aRc,則稱R是傳遞的。

關係R是自反的,對稱的,反對稱的和傳遞的,也常說成R具有自反性,對稱性,反對稱性和傳遞性。

這裏需要注意,我們所涉及的可置換點並非是一個數域上的點集,其實可置換點是不同置換映射(函數集)形成的定義域(用泛函數學表示的觀點:泛函就是定義域是一個函數集,而值域是實數集或者實數集的一個子集,推廣開來, 泛函就是從任意的向量空間到標量的映射。也就是說,它是從函數空間到數域的映射。),所以這裏需要關注到選擇哪種置換而形成的置換映射(即選擇什麼樣的函數)。

軟件設計中的結構對象其實均是按照不同的關係構建而成,所以關係是結構對象最爲基本的相互關係,由於呈現不同的關係而形成了不同的結構形態。同時需要理解這些結構對象所依賴於在統一的置換點之上的比較才具有意義,不同層面抽象的置換點上的結構只是形態的不同,而其所表達的物理意義則不一致。

但是,由於在不同的變換羣中都具有各自的幾何,如果我們需要全部表示出來,那麼我們就需要使用不同層次來表示這樣的多個不同層次的幾何,如圖2-2所示。

 

2-2

 

圖中在不同平面上代表作不同的幾何,其關係用實線來表示,圖中的虛線可與在不同幾何中的對應關係,例如UML中的繼承圖示所對應的關係。

如果我們將這些幾何描述綜合在一起,那麼我們就可以使用多維(大於2個維度)的空間圖形來表示,這都根據具體分析和討論的方便和需要來進行劃分。但是這需要注意,其這些置換點不能具有包含關係,例如繼承關係所涉及的類的置換體就和值置換就有包含關係,那麼這種關係所涉及的是新的幾何處理,在下面如果沒有單獨說明,均不涉及這樣的情形。

另外針對多維下的空間描述的圖形來說,如果我們只是關注其點與點之間的關係,那麼我們可以將一個n維空間的關係轉換爲一個平面上圖的關係(雖然這裏沒有進行詳細的證明,但是其一定是成立的)。例如圖2-2的空間關係可以轉換爲平面的關係圖,如圖2-3所示。通過這樣的方式,我們可以將不同維度的置換進行統一,其在第一章中所談到的置換的統一化具有確切的理論依據,因此我們可以在針對圖中的權重來表達這些置換中的關係程度,也即能夠通過量來確定這些關係。

 

 

2-3

 

在一個點集形成的關係連接以後,其圖形就是我們所認識的的常用數據結構:例如線性表、樹、圖等(如圖2-4所示):

 

 

2-4

 

而這種關係組成的圖形就是線性代數中的偏序結構,所以我們也可以通過將這些有限偏序集合結構轉換爲哈斯圖。

偏序關係:

R是集合A上的一個二元關係,若R滿足:

自反性:對任意x∈A,有xRx;

反對稱性(即反對稱關係):對任意x,y∈A,若xRy,且yRx,則x=y;

傳遞性:對任意x, y,z∈A,若xRy,且yRz,則xRz。

則稱R爲A上的偏序關係,通常記作≤。注意這裏的≤不必是指一般意義上的「小於或等於」。

哈斯圖:

在數學分支序理論中,是用來表示有限偏序集的一種數學圖表,它是一種圖形形式的對偏序集的傳遞簡約。具體的說,對於偏序集合(S, ≤),把S的每個元素表示爲平面上的頂點,並繪製從x到y向上的線段或弧線,只要y 覆蓋x(就是說,只要x < y並且沒有z使得x < z < y)。這些弧線可以相互交叉但不能觸及任何非其端點的頂點。帶有標註的頂點的這種圖唯一確定這個集合的偏序。

目前我們所涉及到的關係在面向對象的領域中有繼承、抽象、包含(include)、擴展(extend)等關係,其中繼承和抽象關係是成對出現的,所以可以看着一對偶的關係,而包含和擴展的關係則是單向的關係,需要關注其箭頭表示的方式。如圖2-5簡單的描述,其中左圖中A include B A include BA include B 而右圖中A extend BA extend CA extend D

 

 

2-5

 

這種關係我們在UML的用例圖中也可以看到,雖然我目前不能講所有關係列舉出來,但是,通過這些關係的進一步分類,可以讓不同的置換點之間可以使用關係來進行衡量,而在數學的形式化中,雖然不需要關注其實際內容,但是,我們可以使用這樣的關係來檢測我們進行的可置換點是否準確,這對於我們在軟件設計中進行合法性驗證是非常重要的。同時我們也可以將用例圖中的關係進行進一步擴展,讓之不僅僅適用於用例之間的關係,而擴展到軟件設計和置換相關的關係表達中。同時,我們也可以看出,用例圖的抽象過程和置換也是有各種相同的抽象過程,其用例圖是否也可作爲置換的某階段的體現也值得我們去研究一下,這裏雖然無法給出其正確的論斷,但是的確存在可研究的意義。