畢業論文寫作:基於耦合度的分佈問題研究

學識都 人氣:1.53W
畢業論文寫作:基於耦合度的分佈問題研究
【摘要】 本文主要討論分佈式應用系統中基於耦合度的用戶分佈、功能分佈和數據分佈問題。
【關鍵詞】用戶分佈,功能分佈,數據分佈,耦合度,領域知識,自動構造  隨着Client/Server結構應用系統複雜和擴大,其數據、功能和用戶的分佈問題變得日益突出。合理有效地設計MIS系統模型是MIS系統能否有效發揮效率的關鍵。通常處理這些問題都是軟件開發人員根據其以往的開發經驗,設計的好壞受人爲因素影響很大,且方案因人而異。本文提出了基於耦合度的分佈過程解決方案,並在此基礎上實現了一個分佈的自動生成工具。

一、 分佈問題當我們根據系統的需求資訊來設計基於三層Client/Server模型的MIS系統的時候,一個很重要的工作就是需要確定MIS系統由多少個客戶端、應用程序服務器和數據庫服務器組成,用戶、功能和數據是如何分佈在客戶端、應用程序服務器和數據庫服務器上的。對於一個MIS系統來說,我們都可以將它抽象分解爲用戶集 U={u1,u2,..,ul}、功能集F={f1,f2,..,fm}和數據集T={t1,t2,..,tn}。用戶透過調用功能集中的一些功能模組,來存取數據集中的數據表。我們可以用圖1說明它們之間的關係:本文所要討論的分佈問題包括用戶分佈(User Distribution)、功能分佈(Function Distribution)和數據分佈(Data Distribution)。用戶分佈指的是根據系統的需求,決定如何在客戶端各個平臺上分配用戶,即每個客戶端允許哪些用戶使用。功能分佈也稱處理(process)分佈、事務(business)分佈、邏輯(logic)分佈,指的是如何在應用程序服務器各個平臺上分配功能,即決定哪些功能適合在哪些平臺上完成。數據分佈的粒度大小可以是數據庫、數據表、行、列等,我們這裏討論的數據分佈邏輯單元是數據表(以下簡稱數據),數據分佈指的是如何在數據庫服務器各個平臺上分配數據,即如何在服務器上組織這些數據。

二、耦合度的計算在分佈式MIS系統中,之所以有不同的客戶端、應用程序服務器和數據庫服務器,是因爲用戶之間、功能之間和數據之間也存在着一種類似的不同“吸引力”。我們將這種“吸引力”取名爲耦合度(Coupling Degree)。我們將兩個用戶分在同一個客戶端的可能性稱之爲用戶耦合度,兩個功能分在同一個應用程序服務器的可能性稱之爲功能耦合度,兩個數據分在同一個數據庫服務器的可能性稱之爲數據表耦合度。這裏討論耦合度,是因爲耦合度是分佈式MIS系統網絡節點劃分的依據。耦合度是不同種因素的函數。耦合度=f(因素1,因素2,…,因素n)用戶耦合度 用戶之間所屬關係、距離和特殊要求等因素都可能影響用戶耦合度大小。企業的部門和職務之間的所屬關係構成一棵部門職務關係樹或森林,葉結點爲用戶。直接同屬一個部門的兩個用戶肯定比間接同屬一個部門的兩個用戶分在同一個客戶端的可能性要大。我們將兩個用戶到它們最近共同祖先的最大距離定義爲兩個用戶之間的'疏遠度,當兩個用戶分屬於兩棵關係樹時,它們的疏遠度爲¥ 。如圖2所示的部門職務關係樹中,用戶u1(職務1)和u4(職務3)之間的疏遠度爲2,用戶u1和u3(部門6)之間的疏遠度爲3 。疏遠度越大其耦合度越小,我們給不同的疏遠度以不同的權值,這樣就可以折算爲耦合度值。兩個用戶相距400米以內肯定比兩個用戶相距1公里以上分在同一個客戶端可能性要大。兩個用戶相距越近,其耦合度越大,用戶相距遠近給予不同的權值,以折算爲耦合度值。針對企業的一些特殊要求,我們用程度詞來說明兩個用戶分在同一個客戶端的可能性,常見的程度詞如必須、儘可能、不可能、不能等等,我們給不同的程度詞以不同的權值,以折算爲耦合度值。功能耦合度 很明顯,調用功能1的所有用戶和調用功能2的所有用戶之間的關係越緊密,這兩個功能分在同一應用程序服務器的可能性就越大。這種用戶調用功能的關係對功能耦合度影響較大,但其它因素也影響功能耦合度大小。數據耦合度 功能存取數據的關係對數據耦合度影響較大。其它影響數據耦合度大小的因素包括數據庫系統的特殊要求、MIS系統要求等。

三、 分佈過程用戶、功能和數據分佈主要是確立Client/Server系統結構。我們這裏主要討論基於耦合度的用戶、功能和數據劃分過程,用戶、功能和數據耦合度是我們進行網絡節點劃分的依據。用戶、功能、數據分佈需要解決兩個問題:1)MIS系統由多少個網絡節點組成。2)用戶、功能、數據是如何在這些網絡節點上分配的。這兩個問題的解決又是統一的,即如何進行網絡節點的劃分。下面我們以用戶分佈爲例,來說明分佈過程的具體步驟。設企業的用戶集合U={u1,u2,…um},Lu爲客戶端分組劃分的用戶耦合度下限。我們的目標是找出一個最小個數客戶端集合C={C1, C2, C3,…, Ck},客戶端C1, C2, C3,…, Ckí U,滿足(1) C1,+C2+ C3+…+Ck =U。(2)任意Ci∈ C,Cj∈C,i≠j 有Ci∩Cj=φ。(3)若RF(ui,uj)>=Lu,則用戶ui,uj 就在同一客戶端。具體步驟如下:第一步,計算用戶之間耦合度。這裏RFd (ui,uj) 、RFc (ui,uj) 、RFs (ui,uj)分別表示用戶ui和uj之間由於距離、所屬關係、特殊要求等因素影響的耦合度。RF(ui,uj)= RFd (ui,uj) +RFc (ui,uj) +RFs (ui,uj)+…第二步,求用戶二元關係Ru。Ru={ | " ui, uj ? U 且 RF(ui, uj)3 Lu }第三步,求Ru的等價關係Ru挕?Ru? t(Ru)第四步,客戶端劃分C。C=U/ Ru?/P>分佈是一個權衡的過程,不存在唯一正確的方案。必須兼顧目標與限制,綜合考慮所有方面的因素。

四、分佈的自動生成工具我們設計和實現了一個MIS系統輔助開發環境NDTool(Node Distributed Tool),這是一個基於耦合度和領域知識的用戶、功能和數據分佈的自動生成工具。該系統設計過程貫穿了我們所提出的思想和方法。ECSL(Enterprise Concept Structure description Language)是一個企業概念結構描述語言,主要用於獲取最終用戶所提供的企業的需求資訊。採用中文的類自然語言形式,面向最終用戶。DKDL(Domain KnowledgeDescription Language)是一個領域知識描述語言,主要用於獲取領域專家在MIS系統開發上所積累的經驗,並將所得到的領域知識存放於領域知識庫中。該語言面向領域軟件專家。領域知識庫用於存放領域知識。由DKDL獲取的領域專家的開發經驗,經過分析、組織,所得到的結果儲存在領域知識庫中。我們提供一組領域知識庫的操作接口,用於領域知識庫的存取和維護工作。MADL(MIS System Architecture Description Language)是一個分佈式MIS系統體系結構描述語言,主要用於描述MIS系統中的用戶、數據和功能的分佈情況。它是NDTool系統最後生成的結果。該語言面向軟件開發人員。NDTool系統的工作流程。首先,將領域軟件專家所掌握的領域知識,描述成DKDL文字,經過DKDL編譯器的編譯,並調用領域知識庫的接口將所分析的結果存入領域知識庫中。當需要開發MIS系統時,企業最終用戶將他的需求資訊用ECSL語言描述出來。透過ECSL編譯器進行編譯,參考領域知識庫的有關領域知識,計算用戶、功能和數據耦合度,再根據耦合度進行網絡節點的劃分,最後將結果用MADL語言描述出來。提供給開發人員進行數據模型和模組設計。