當(dāng)前位置:機(jī)電之家首頁 >> 工程造價(jià)>> 工程論文 >> 軟件工程論文 >> 軟件工程中的數(shù)學(xué)思想——站在軟件之外看軟件
軟件工程中的數(shù)學(xué)思想——站在軟件之外看軟件

何為站在軟件之外看軟件?在最近的程序人生的講座、報(bào)道,談及最多的問題就是站在軟件之外看軟件。

 內(nèi)外的概念是一個物理概念,我來講一個物理上的例子來理解如何是站在軟件之外看軟件:凡讀此書之人,都知道愛因斯坦,也都知道愛因斯坦的相對論,如此足矣。大家都能理解我們生活在這個三維的空間,愛因斯坦的相對論補(bǔ)充了三維空間的理論,在此基礎(chǔ)上添加了時(shí)間的第四維,作為常人無法理解時(shí)間一維到底如何被看及。

首先,我們知道復(fù)數(shù)表示論的四個象限,第一象限是正正象限,第二至第四象限都有虛軸;再看在三維空間上建立一個八個相空間,其中也僅有一個相空間是正正正的相空間。其次,我們看一個問題,臺灣島的海岸線有多長?我們根據(jù)地圖,按比例測出一個數(shù)值來可以表示該海岸線的長度;我們也可以事必躬親拿著米尺來量一下,我們會發(fā)現(xiàn),我們測定結(jié)果比我們計(jì)算出來的大許多;為了精確起見,我們拿來厘米尺,再測量,又大了許多;再者我們使用游標(biāo)卡尺來測量,我們會發(fā)現(xiàn),我們測得的結(jié)果是我們根據(jù)地圖測出來的幾千萬倍?為什么?原因很簡單,在刻度的范圍內(nèi),我們把曲線當(dāng)成直線來測量了,再逐漸細(xì)化的過程中,問題被測定更精確,再精確測量結(jié)果的同時(shí),我們發(fā)現(xiàn)真正測量結(jié)果是無窮大。奇怪?回到上面問題:我們?yōu)槭裁床荒芾斫馑木S,有兩個方面,一是我們始終站正的相空間上,二是我們拿我們認(rèn)為最精確的刻度去度量空間。如果我們可以做到在空間之外看空間,那么我們可以把時(shí)間的概念引入,我們甚至可以從長度,寬度加時(shí)間來計(jì)算精確的體積(原始的體積定義是:長*寬*高),但有一點(diǎn),因?yàn)榫_的體積是無窮大?無窮大不能被理解,即真實(shí)空間不能被理解。好了,如此一點(diǎn)說明,你可能對我們理解時(shí)間的概念有所變更了(足矣),回到正題!

何為軟件之外呢?

軟件之外就是軟件構(gòu)架的思想,我們?nèi)绾螛?gòu)架軟件模型,一個問題--為什么軟件人才流動如此讓一個體制完好的公司處處面臨危機(jī)--被提及時(shí)存在如下的問題:一公司的體制并沒有完好,至少人力資源不體制不完好,二項(xiàng)目計(jì)劃時(shí)沒有考慮項(xiàng)目如此類的風(fēng)險(xiǎn),三本質(zhì)而又沒有邊際問題是企業(yè)文化不健康。在一個健康的體制上才容易構(gòu)建系統(tǒng)的整體模型并易于實(shí)施。

軟件之外是一個站在如何實(shí)施軟件開發(fā)的新高度,如何度量項(xiàng)目的進(jìn)度,我們有無一個標(biāo)準(zhǔn)來衡量?假如完全根據(jù)進(jìn)度來實(shí)施將會如何----機(jī)械化。

一.在軟件之外看軟件什么

軟件的實(shí)施需要工程化,而不是機(jī)械化,人是活動的,無法實(shí)施機(jī)械化,更何況軟件的開發(fā)過程也是一個創(chuàng)造性過程。

再講一個普通的例子,我在從事電力系統(tǒng)自動化項(xiàng)目實(shí)施時(shí),有位自動化資深的客戶給我講了一個道理,他說:在世界上有兩種人是推動社會進(jìn)步的,一是勤勞而聰明的人,他在創(chuàng)造世界;一是愚笨而懶惰的人,他在要求別人創(chuàng)造世界。這樣,自動化就出現(xiàn)了,它第一種人為第二種做的,但到現(xiàn)在也無法滿足第二種人的需求。

這雖然是個笑話,但從其中可以體會到一個道理,在從事工程項(xiàng)目時(shí)有兩個方面一個是客戶的需求,一個項(xiàng)目實(shí)施者。

既然軟件從無到有再到無的過程,被稱為軟件工程(將在第二章詳細(xì)討論),軟件之外的問題也就是工程的實(shí)施者和軟件的需求者。

先來談軟件的需求,在第二節(jié),我們討論了信息系統(tǒng),作為目前的世界被稱為信息的時(shí)代的世界,其信息的重要性是不言而喻的。我們構(gòu)建一個系統(tǒng),系統(tǒng)為之服務(wù),服務(wù)者作為計(jì)算機(jī)所能提供的就是數(shù)據(jù)服務(wù)或數(shù)據(jù)化的服務(wù)。
在日常生活中,我們需要被服務(wù)的事物越來越多,而這些服務(wù)就是我們的需求,這些需求由系統(tǒng)來解決或提供,而這些系統(tǒng)向人們提供數(shù)據(jù)服務(wù)就是我們在工程中實(shí)施的對象。

那么,軟件工程的實(shí)施對象從事什么樣的服務(wù)。

一個事物被實(shí)施后,尤其是軟件,它的目標(biāo)就是人們?yōu)橹亩x的功能,對于對象的本身稱為操作,軟件的操作就是自動地按照一定的邏輯來整理、分析和抽象數(shù)據(jù)。

軟件的需求和軟件的實(shí)施分開來談是沒有意義的,但作為理解上,一個大腦很難對兩個事物進(jìn)行同時(shí)分析。軟件的實(shí)施是軟件工程的整個過程,需求其實(shí)就是一個被服務(wù)的對象的思想或思想過程。

軟件的實(shí)施就是把對軟件的需求包裝成軟件的一個過程。

軟件之外是什么?一是什么將被包裝成軟件,二是如何包裝成軟件。

二.如何看軟件

如何"看"軟件?這個"看"字包含有眾多的含義。

首先,軟件是虛的,是被比特存儲的,不是使用顯微鏡就可以看見的,看軟件分兩個方面,一是看(觀察)軟件執(zhí)行情況,二是看(分析)軟件執(zhí)行過程。

其次,我們還應(yīng)該考察的是軟件被構(gòu)建的過程,也就是軟件之外的第二個問題,在構(gòu)建過程中有什么被記錄,記錄構(gòu)建的過程的標(biāo)識?

最后,軟件被使用于何處,使用過程記錄。

"看"軟件的過程,是一個識別的過程,在識別的同時(shí)也還需要分析、記錄、再分析、再記錄等,若我們在參與軟件的實(shí)施,那么這些分析記錄的文檔是不是軟件的一部分。

當(dāng)然是,但不是軟件的執(zhí)行部分,它是軟件的服務(wù)部分! (其執(zhí)行部分也是服務(wù)部分,軟件的介紹將在第二章詳細(xì)討論。)

如何分析和記錄軟件的實(shí)施過程,UML提出"統(tǒng)一軟件開發(fā)過程",對軟件的實(shí)施過程進(jìn)行了詳細(xì)地定義和描述。

打開UML等圖書,首先有一堆關(guān)于圖的描述被說明,同樣,UML的也是定義在各類圖的基礎(chǔ)上,但什么是圖呢?

對于圖,有兩種解釋,一是名詞,說明一類(實(shí)體的)事物;二是數(shù)學(xué)概念,定義一類(抽象的)事物。名詞是采用點(diǎn)線等方式描繪出的符號(說成符號也不大恰當(dāng));而數(shù)學(xué)概念是采用集合來定義的,描述各個元素之間關(guān)系的描述。
對于軟件工程的實(shí)施,主要的是描述各個對象之間的關(guān)系,在第一節(jié)中,我們已經(jīng)把事物對象描述為一個集合或一個集合中的元素,如此現(xiàn)在采用"圖"來定義各個元素之間的關(guān)系最為切當(dāng)。

三.什么是圖

有序?qū)=(V(G),E(G))稱為一個圖,其中V(G)是一個非空的有限集。V(G)中的元素稱為G的頂點(diǎn),E(G)是V(G)中全體不同元素構(gòu)成的不同無序?qū)系囊粋€子集,E(G)中的元素稱為G的邊。

前面已經(jīng)說過,序?qū)κ且粋€關(guān)系的序,所以圖的定義就變?yōu)椋喊鸭现械脑睾图现懈髟氐年P(guān)系描繪出來的圖形的形式。

在圖中,描述集合元素是對象的定義,而描述元素關(guān)系時(shí)是行為的定義。所以圖也可以定義成:把對象和對象行為描繪出來的圖形的形式。

如此,就明了了,圖就是對象(采用一種符號表示)和對象行為(也采用一種符號表示)按照一定的邏輯關(guān)系組成的符號(組)。

(其實(shí),在數(shù)學(xué)上若想搞清楚圖的定義首先必須搞清楚群的定義,因?yàn)閳D的同構(gòu)在群的基礎(chǔ)說就簡單多了,至于群,在本書上沒有介紹,大系統(tǒng)的系統(tǒng)分析員或研究數(shù)據(jù)結(jié)構(gòu)的讀者可以參考一下其相關(guān)資料。)

對于圖還有如下定義:我們稱

V(G)是圖G的頂點(diǎn)集(元素集),E(G) 是圖G的邊集(元素關(guān)系集);在不至于混淆的情況下,有時(shí)分別用V和E表示G的頂點(diǎn)集和邊集。

G的頂點(diǎn)數(shù)|V(G)|有時(shí)也稱為G的階(對象元素的個數(shù)),通常用p來表示;G的邊的數(shù)目|E(G)|一般用q表示。

為了方便,我們通常用uv來表示邊{u,v}(其中u,v是V(G)的元素)。

邊{u,v}是一個序?qū)?,或我們稱為關(guān)聯(lián)(該詞不是數(shù)學(xué)術(shù)語),該關(guān)聯(lián)的意思是兩的元素間的有關(guān)系。有圖為有向圖時(shí),該關(guān)聯(lián)可以表示元素間的所屬,但該處的有序?qū)H表示兩個元素間的相關(guān)聯(lián)的一一映射,若元素間存在多對一的映射的話,即在面向?qū)ο蟮姆治鲈O(shè)計(jì)中存在一個對象擁有多個子對象。

一個對象是一個類元(class unit)的實(shí)例,一個類被多個子類繼承,每個子都可實(shí)例化時(shí),其分析類元的"圖"在類元(一個元素,就是圖的一個頂點(diǎn))上將有多邊,這個邊就是我們描述圖時(shí)稱之為的度。

如果e=uv∈E(G),則說e關(guān)聯(lián)(該詞是數(shù)學(xué)術(shù)語)u和v,稱u,v分別為e的端點(diǎn),并且稱這兩個頂點(diǎn)是相鄰的。在這種情況下,我們亦稱v是u(或者u是v)的一個相鄰者。

描述相鄰者時(shí),其不一定有關(guān)系,若稱為相鄰關(guān)系也為關(guān)系的話,那么,這個相鄰關(guān)系可能會體現(xiàn)的在時(shí)間順序上。事件或觸發(fā)過程將依此關(guān)系為依據(jù)。

對相鄰關(guān)系元素的取值,在數(shù)學(xué)上具體定義如:

設(shè)u∈V(G),u的鄰域,記作Ng(u)(在不至于混淆的情況下記為N(u)),它是G中全體相鄰于頂點(diǎn)構(gòu)成的V(G)一個子集合,即
 
 與G的同一個頂點(diǎn)相關(guān)聯(lián)的兩條邊稱為相鄰邊。

和同一個元素發(fā)生關(guān)系,作為元素本身肯定是被觸發(fā)的,無論關(guān)系的緊密與否,這和描述對象無關(guān)。

在圖的定義中,如果我們刪去"邊必須相同的"的限制,則導(dǎo)致的結(jié)果稱為多重圖;連接同一對頂點(diǎn)的兩條或者更多條邊(但是有限的)被稱為多重邊。

如果我們再在多重圖中刪去"邊必須連接不同的頂點(diǎn)"的限制,即允許有自環(huán)的存在,則由此導(dǎo)出的結(jié)果稱為偽圖。

圖的定義在日益被描述清楚,如何對圖的具體定義,對圖的定義,我認(rèn)為無須具體了解,在系統(tǒng)分析中由于人們對UML認(rèn)識和使用的日益廣泛,于是圖示來描述問題被廣泛采用,其實(shí)在對事物(系統(tǒng))分析最被人接收的還是圖。
對圖的定義和實(shí)質(zhì)地認(rèn)識,我認(rèn)為還是必要的,如果我們先來描述UML語言,再來描述圖(即便是UML圖)我們還有許多疑問,這些疑問在那里?對圖能描述什么?如何來描述?圖元間的關(guān)系如何?當(dāng)然,對于那些簡單的圖來說,自然沒有研究如此之深的必要,但對于大系統(tǒng)必要使之。

 從簡單圖到多重圖是一個拓?fù)涞倪^程,但對于系統(tǒng)來說是一個拓展的過程,從建立簡單的模型到大系統(tǒng)的模型的建立的過程。

若系統(tǒng)內(nèi)模塊存在同構(gòu)或同胚(概念將在下面敘述)等情況,其模塊的構(gòu)建就存在封裝性,就有必要對其基礎(chǔ)的模塊進(jìn)行封裝以便重用。

在圖的定義里,如果我們把"無序"兩個字改為"有序",便得到所謂的有向圖的概念。更確切的講,所謂的有向圖D是一個有序?qū)Γ╒(D),A(D)),其中V(D)是一個非空有限集, V(D)的元素稱為頂點(diǎn),A(D)是由V(D)中的元素組成的一些有序?qū)?gòu)成,并且要求:
 ?、贅?gòu)成有序?qū)Φ膬蓚€元素不同;
 ?、谌魏蝺蓚€有序?qū)Σ煌?BR>
 顯然,A(D)是一個有限集。A(D)中的元素稱為弧。

在不至于混淆的情況下,我們通常將?。╱,v)(u,v是D的頂點(diǎn))用uv來表示。如果e=uv是D的一條弧,則稱u和v是相鄰的且稱e是從u關(guān)聯(lián)到v;我們也稱頂點(diǎn)u控制頂點(diǎn)v。形如uv和vu的一條弧稱為對稱弧。

 設(shè)D是一個有向圖,它的逆仍是一個有向圖,記為D',D'的頂點(diǎn)集為V(D')=V(D),弧集為A(D')={vu;uv∈A(D)};有向圖D的基礎(chǔ)圖是指向無向邊來代替D中每一條弧而得到的圖或多重圖。 一個圖的頂點(diǎn)為位置無關(guān),圖中兩個頂點(diǎn)之間的連線與它的長度,曲直或者形狀也是無關(guān)的,這要考慮的是兩個頂點(diǎn)之間是否有線相連,這正是所謂兩個頂點(diǎn)之間的拓?fù)湫再|(zhì)。正如此,有些表面上似乎完全不同的圖,卻是相同的。于是我們稱這兩個圖是同構(gòu)的。

在這里,我們將需要認(rèn)識到,建立模型時(shí)由于各個人的知識范圍,認(rèn)知渠道極其經(jīng)驗(yàn)等方面的影響,所建的模型可能在表面上完全不同,但表達(dá)的內(nèi)容和表述的形式卻是完全相同的,關(guān)于圖的特性,比如說同構(gòu)等,將是對模型的基礎(chǔ)。

圖同構(gòu)的定義

設(shè)G1,G2是兩個簡單圖,圖G1與G2被稱為是同構(gòu)的,寫著G1≌G2,如果存在一個從V(G1)到V(G2)之間保持相鄰性的1-1映射σ。就是說,在V(G1)到V(G2)之間存在一個1-1映射σ,使得對于Ⅴu,v∈V(G1),uv∈E(G1),當(dāng)且僅當(dāng) σ(u)σ(v)∈E(G2)。

我們把從V(G1)到V(G2)之間的保持相鄰性的這個1-1映射σ叫做圖G1到圖G2間的一個同構(gòu)映射。

判斷兩個圖是否具有良好的實(shí)際應(yīng)用的背景。最直接的應(yīng)用就是應(yīng)用于系統(tǒng)工程中,判斷兩個系統(tǒng)是否同構(gòu),在這個系統(tǒng)上建模中具有非常使用的價(jià)值。另一個直接的應(yīng)用是在計(jì)算機(jī)(主要是軟件工程)中構(gòu)造某種類型的圖(比如UML的各類圖)時(shí),排除同構(gòu)圖。當(dāng)然判斷兩個圖的同構(gòu)是非常困難的事,但UML的各類圖中,一般都較為簡單,當(dāng)然我們不能阻止你構(gòu)建一個龐雜的系統(tǒng)模型。

當(dāng)然對于圖應(yīng)用并不僅僅,在判斷兩個圖的是否同構(gòu)上,另外,我們通過對圖的認(rèn)識,建立一個合理的模型,比如一個基圖就可以表述完整的,你卻采用了多重圖來描述,在某些方面會給系統(tǒng)帶來額外的負(fù)擔(dān)。[NextPage]

設(shè)v是圖G的一個頂點(diǎn),我們把關(guān)聯(lián)的頂點(diǎn)v的邊數(shù)目稱為v的度數(shù),簡稱度,記為d(v)。何謂度,度即是集合中關(guān)系(數(shù)),在前面我們說過,關(guān)系是笛卡兒積的一個子集,這個子集就是邊,其元素的個數(shù)就是度。圖G的最大度和最小度是指圖G中度數(shù)構(gòu)成的集合的中的最大值和最小值,分別用Δ(G)和δ(G)表示。

四.圖研究什么

在面前圖的研究領(lǐng)域上存在一個問題:在使用計(jì)算機(jī)構(gòu)造圖時(shí)會出現(xiàn)同構(gòu)現(xiàn)象。

一般情況下,以何種方式?構(gòu)造什么樣的圖?圖本身就是一種可以能被描繪成圖一個集合,在軟件領(lǐng)域,我們關(guān)心的基本上是序列(集合),這個問題在建模表現(xiàn)得很突出。

圖有兩個方面,一個是邊,一個是頂點(diǎn)。

頂點(diǎn)是沒有序列的概念的,那么的邊的序列如何定義?是方向?

在圖上,我們一般是采用研究圖的(某個頂點(diǎn)的)度數(shù)來研究圖的構(gòu)造的。以下看一下度的序列。

設(shè)圖G為簡單圖,則:
 ?、?0≤di≤p-1,I=1,…,p;
 ?、?在d1,d2,…,dp中至少存在兩個值相等。
  關(guān)于①的證明由圖的定義易知,關(guān)于②證明由①易證。

設(shè)π=(d1,d2,d3,…,dp)是一個非負(fù)整數(shù)的單調(diào)遞減(或單調(diào)遞增)序列,如果存在一個p階簡單圖G,滿足π(G)= π,則稱π是可圖序列的,或簡稱π是一個圖序列,并稱G是π的一個實(shí)現(xiàn)。

在圖的序列領(lǐng)域中主要研究如下問題:
 
 第一:圖序列的基本特征是什么?即一個非負(fù)單調(diào)遞整數(shù)序列π=( d1,d2,d3,…,dp)是圖序列的充要條件是什么?

第二:π=(d1,d2,d3,…,dp)是一個圖序列,那么π對應(yīng)的實(shí)現(xiàn)有多少?

第三:如何把圖序列π=(d1,d2,d3,…,dp)對應(yīng)的實(shí)現(xiàn)全部構(gòu)造出來。

對于研究的問題,第一個問題是圖論實(shí)施的基礎(chǔ),我們來考察系列的隊(duì)列,是研究有向的關(guān)系(可以看成采用序列表示的事件觸發(fā)的關(guān)系),設(shè)一個序列是圖序列,但該序列不是用來表示我們要研究的圖,而研究我們圖的元素關(guān)系的圖。

對于第二個問題,則是我們開始關(guān)心的問題,對于一個圖序列實(shí)現(xiàn)什么是至關(guān)重要的,建立一個關(guān)系,其關(guān)系到幾個元素,關(guān)系是什么?比如一個人結(jié)婚,我們找到一個關(guān)系:請親戚朋友吃酒,關(guān)系幾個元素(來那些人),各個關(guān)系什么,有的是親戚有的是朋友。

對于第三問題是實(shí)質(zhì)性問題,就是我們需要解決的問題,如何把序列(對應(yīng)的元素或關(guān)系全部構(gòu)造出來!)的實(shí)現(xiàn)(關(guān)系的構(gòu)造圖)全部構(gòu)造出來。

下面來研究一下圖系列的基本性質(zhì):


五.圖的同構(gòu)與拓?fù)?/P>



 六.樹

樹和數(shù)據(jù)結(jié)構(gòu),樹是簡單的圖,學(xué)過數(shù)據(jù)結(jié)構(gòu)的就知道類似"兩叉樹"的理論,簡單地講樹就是在圖的所有結(jié)點(diǎn)中,任意兩個結(jié)點(diǎn)之間只有唯一的一條簡單路徑的圖。

在自然界中,樹是一中根在下的有枝的植物,至于植物它的枝是梯形結(jié)構(gòu)的,我們在圖論中描述樹時(shí),我們常常把根畫在上面,而把"枝"畫在下面。

樹的術(shù)語和特征(采用語言的描述時(shí)稱為語義)

作者:未知 點(diǎn)擊:544次 [打印] [關(guān)閉] [返回頂部]
本文標(biāo)簽:軟件工程中的數(shù)學(xué)思想——站在軟件之外看軟件
* 由于無法獲得聯(lián)系方式等原因,本網(wǎng)使用的文字及圖片的作品報(bào)酬未能及時(shí)支付,在此深表歉意,請《軟件工程中的數(shù)學(xué)思想——站在軟件之外看軟件》相關(guān)權(quán)利人與機(jī)電之家網(wǎng)取得聯(lián)系。
關(guān)于“軟件工程中的數(shù)學(xué)思想——站在軟件之外看軟件”的更多資訊

電子樣本

SN系列樣冊
:鞏經(jīng)理
:13915946763
:南京塞姆泵業(yè)有限公司
個人求購

楊異乾 【求購】  電涌保護(hù)器  2025-11-28
趙焱 【求購】  電氣溫控閥  2025-11-28
張揚(yáng)瓊 【求購】  ABB火檢...  2025-11-27
張雪根 【求購】  固體除垢劑  2025-11-26
趙經(jīng)理 【求購】  變壓器  2025-11-26
羅經(jīng)理 【求購】  巡邏車跟蹤...  2025-11-26
趙經(jīng)理 【求購】  柴油發(fā)電機(jī)  2025-11-26
沈雙 【求購】  柴油過濾紙  2025-11-26
VIP公司推薦