基于組件的開放式CAD系統模型
發表于:2008-02-20來源:作者:點擊數:
標簽:開放式CAD
當今計算機輔助設計(CAD)軟件的規模與復雜性,使得其體系結構成為CAD軟件 開發 及應用能否成功的決定因素.CAD系統模塊的劃分、模塊間的聯系方法、CAD系統的組成部件等正成為CAD領域中倍受關注的問題。 CAD系統模型取決于其建模目標.進入90年代以后,CAD技
當今計算機輔助設計(CAD)軟件的規模與復雜性,使得其體系結構成為CAD軟件開發及應用能否成功的決定因素.CAD系統模塊的劃分、模塊間的聯系方法、CAD系統的組成部件等正成為CAD領域中倍受關注的問題。
CAD系統模型取決于其建模目標.進入90年代以后,CAD技術和應用需求都發生了很大的變化.在技術上,“并行工程”要求某一領域的方法能夠和其他專業技術在同一環境中有機結合;在需求上,隨著CAD應用領域的擴大和專業深度的縱深發展,人們更傾向于選擇有針對性的專業應用軟件,傳統的大而全的CAD系統逐漸被支持二次開發的CAD支撐系統所取代.在CAD系統再次開發成為必然的今天,CAD系統的開放性成為各開發層次用戶的主要關注點。
針對CAD系統的開放性,曾先后出現了許多類系統模型,代表了CAD技術與產業發展的不同階段.面向對象軟件工程(Object-Oriented Software Engineering)技術的興起,使CAD系統模型的發展達到一個新的階段.此后,組件技術的逐漸成熟又為CAD系統的建模引入了新的思想。
本文系統地分析了以數據為中心、以執行為中心和面向對象的CAD系統模型的構成及其優缺點.在此基礎上,運用基于組件的軟件工程技術,提出了一種結構層次清晰,各模塊接口規范,聯系簡潔,易于擴充的兩級總線模型,并詳細地分析了該模型中各組成部件的功能和聯系方法,最后給出模型的應用實例和結論。
1 幾類CAD系統模型
1.1 CAD系統模型的設計目標
當前,CAD系統模型的設計目標是提高實際應用的CAD系統的開放性和集成性,同時,作為一種典型的交互系統,效率也是一個重要目標。
CAD系統的開放性包括數據的開放性、功能的開放性及系統的可擴充性.是否具備良好的開放性基本取決于系統模型.CAD系統的集成性是指通過一致的信息描述手段和處理機制將各功能子系統統一到同一個集成環境.集成性的好壞也基本取決于系統模型.CAD系統的效率通常包括系統運行的效率和應用開發的效率.運行效率是系統運行時的時空復雜度,而應用開發的效率指開發的難易程度和執行效率.效率大部分取決于系統模型,也與系統的具體實現有關。
開放的系統模型使得子功能部件的集成易于實現,同時也必然提高應用開發的效率;集成和高效反過來又有利于更好地達到開放的目的.這三者相輔相成,其中又以開放性作為集成和效率的基礎,只有開放才有集成,只有開放才有效率。
1.2 以數據為中心的系統模型
以數據為中心的系統模型如圖1所示.這類模型將數據庫放在系統的核心層次共享,各功能部件采用統一的數據描述,各子系統的開發過程完全獨立;子系統間有統一的數據交換接口;整體的可擴充性好(可任意增加符合數據交換標準的應用程序).同時,這種模型整體結構松散,集成性不夠良好;只能做到數據復用,不能做到功能復用,造成大量的代碼冗余;由于應用相關數據的存在,難于定義符合所有應用需求的數據接口標準,因此會出現數據語義失真.從開放性的角度來講,這類系統只具有數據開放性,不具有功能開放性,但其可擴充性很好。
1.3 以執行為中心的系統模型
以執行為中心的系統模型如圖2所示.這類模型著眼于將不同的應用系統通過統一的執行中心來實現關于數據模型和用戶界面的共享和一致.它將共有的計算和執行功能從應用程序中分離出來,放在執行中心,避免了代碼冗余;用戶與系統的交互與應用程序相分離,便于實現統一風格的用戶界面;和數據庫的任何數據交換都要通過執行中心進行,有利于數據的嚴格管理,保證了數據的一致性.這類模型解決了以數據為中心的系統模型的代碼冗余及界面風格不統一等問題,但仍存在一些缺陷:執行中心的功能設計復雜,很難確切定義符合所有應用要求的功能集合,而且實現起來也相當困難;執行中心同時與用戶界面和所有應用程序保持通訊,又管理著CAD數據庫,負擔過重,極易形成瓶頸.這類模型既具有數據的開放性,又具有功能的開放性,可擴充性也好,整體上優于以數據為中心的系統模型。
1.4 面向對象的系統模型
隨著面向對象技術的成熟,出現了更為簡煉的面向對象的系統模型,如圖3所示.該模型與前兩類模型的設計思想有較大差別.在該模型中,CAD內核對象中封裝的是能為用戶界面對象和所有應用對象共享的數據及相應的操作;用戶界面對象中封裝的是用戶界面數據及相應的操作;應用對象中封裝的是應用數據及相應的操作.所有這些對象通過相互間的通訊協調來完成指定的功能.從系統構成的角度來說,該模型的結構是無中心的,系統由各對象實體構成,各對象實體具有平等的地位,這與以數據為中心和以執行為中心的模型不同.面向對象的系統模型的主要優點在于,數據和功能的合理封裝降低了由于數據和功能的集中管理所帶來的通訊上的開銷和操作上的復雜性.另外,系統的無中心結構也使系統的構成變得更加靈活.從整體上看,面向對象的系統模型無論其開放性還是其有效性都要優于前兩類模型。
2 組件技術的引入
面向對象模型比以往的模型有了很大的進步,但仍有不足:對象之間的聯系是一種點對點的直接聯系,當系統中對象數目增加時,通訊鏈接數將以平方級激增;同時,為支持通訊,每個對象實體都要維護一個包含所有對象實體功能服務信息的功能服務信息庫,這部分信息不但重復,而且還要保證其一致性.這些開銷都損害了系統的效率.更大的問題還在于:對象的接口沒有一致的標準,造成向系統中擴充對象時的隨意與不規范,不利于系統的維護以及對象的復用.為此,我們引入組件技術(Component Technology),引入該技術后,系統的整體模型如圖4所示。
組件技術是繼面向對象技術之后發展起來的一種新的軟件工程技術,是面向對象技術的延伸.基于組件的系統模型仍然是一種面向對象的結構,但系統中的對象是按照規范設計的模塊,這些定義良好的軟件模塊(稱為組件Component)在系統中共存,并且充分地相互作用.按照這種結構,可以將若干組件組合起來,以建立更大和更復雜的系統。
這種模型的關鍵在于一種高效的總線結構,使組件之間能以一個公共的接口互相連接,做到組件的即插即用,無縫集成.這種模型的系統中,組件間的通訊鏈接數是線性的,并且由于各組件接口規范的一致性,通訊的復雜度大大下降,也提高了組件的互操作性。
根據組件在系統中地位的差異,CAD系統中的組件可以分為兩個層次:核心組件和應用組件.核心組件是CAD系統必不可少的組成部分,如用戶交互組件和幾何造型組件,它們和系統總線一起構成了CAD系統核心.應用組件是根據不同應用領域需求開發的外圍模塊,如機械設計組件、建筑設計組件,可任意插拔,與CAD系統核心一起組成專業領域內的應用CAD軟件。
相對于核心組件來說,應用組件所要求的系統服務要少得多,請求服務的頻度也較低,根據這些特點,我們設計了一種雙總線結構,辟出一條應用總線來專門支持應用組件,應用總線和核心總線相通,核心組件和應用組件之間仍然保持良好的互操作性,但應用總線屏蔽了應用組件的一部分服務請求,減少了核心總線上的流量,從而提高了CAD系統核心的效率.引入應用總線后的詳細系統模型如圖5所示。
3 系統模型內部結構
3.1 總 線
總線提供組件之間通訊的透明機制.總線對外提供一致的接口規范,每個新加入的組件都要向總線注冊其功能服務信息,并在退出時注銷其功能服務信息.當一個組件要請求另一個組件的服務時,總線負責查詢功能服務信息庫,定位提供此服務的組件,并傳送此服務請求。
3.2 核心組件
該模型框架中有如下核心組件:對象庫、執行自動機、交互服務器、數據庫管理器和數據轉換器。
*對象庫 (Object Library)
對象庫作為系統的幾何引擎,由一組對象類組成,其中包括幾何實體類、造型算法類、圖形實體顯示類和幾何實體選擇類.這些類封裝了CAD系統最基本的幾何造型和圖形顯示功能。
*執行自動機FSEA(finite state execution automat)
執行自動機是系統的執行引擎,它是一個有限狀態自動機,在交互服務傳送來的事件的驅動下,從系統狀態空間的一個結點轉移到狀態空間的另一個結點,自動機狀態轉換的過程也就是CAD系統運行的過程。
*交互服務器(Interactive Services)
交互服務器是系統的對話引擎,包含了所有實現用戶界面的資源,包括系統運行的圖形交互環境、界面資源庫、界面定義宏語言解釋器.圖形交互環境負責人機交互,用戶可以通過界面定義宏語言控制圖形界面的布局,并定制界面元素的外觀和功能。
*數據庫管理器(Database Management)
這是系統的數據管理和訪問引擎,提供對CAD數據庫中的永久性數據的存取和訪問操作支持,包括數據的一致性保護、共享、并發訪問控制。
*數據轉換器(Data Translation)
作為開放的系統模型,提供對數據開放性的支持是必須的.模型中的數據轉換器提供了本系統內部數據格式與其他CAD系統數據格式的轉換功能.該轉換器對外有兩個接口:一個是工業標準接口,通過此接口,將內部數據轉換成符合工業標準的數據格式;另一種是直接轉換接口,通過此接口,內部數據被轉換成某一特定CAD系統的數據格式。
3.3 應用組件
CAD系統核心提供了一個應用CAD系統的原型和系統集成框架,是一個通用的支撐平臺,但還遠不是一個實用的CAD系統,僅當將根據某特定應用領域需求設計開發的應用組件集成到此支撐平臺上時,才構成一個實用系統.應用組件可以針對任何CAD應用領域,如機械、建筑,它們插入到支撐平臺上就相應構成了機械設計CAD系統、建筑設計CAD系統。
應用組件與CAD核心系統的集成方式如圖6所示。
應用組件不是直接連結到應用總線(也稱Broker)上,而是通過一個軟件代理(Agent)間接地連在總線上.Agent的作用在于,一方面,代理應用組件的復雜通訊過程,使應用組件更專注于功能的實現;另一方面,它將適應不同應用需求的組件內部的異構數據轉換成同構數據,以保證Broker上通訊語言的統一。
3.4 組件結構對系統開放性的支持
組件結構是面向對象結構的繼承和延伸,它具有面向對象結構的所有優點.同時,在這種模型中,組件是一種封裝良好的功能部件,對外具有一致的接口,組件間的通訊由總線統一代理,降低了組件之間的相互依賴.軟件開發者可以方便地定義和建構新的即插即用組件來擴充系統.以命令為例,如果想在系統現有命令組件的基礎上增加新的命令組件,只要按照命令組件的既定接口規范定義其各個狀態,插入系統,執行自動機就會象執行內部命令一樣自動執行.應用組件的增加更為容易,甚至可以在系統運行期間動態載入和卸載.CAD系統模型中引入組件結構,大大增加了系統功能的開放性和可擴充性。
4 結 論
GHCAD系列軟件是我國CAD應用工程主推產品,曾獲“八五”國家科技攻關重大成果獎.GHCAD系列軟件的發展過程在一定程度上也體現了CAD系統模型的發展過程.GHCAD早期產品采用的是以數據為中心的系統模型,而GHCAD3.0則是成功地以執行為中心的開放的CAD支撐系統,到GHMDS1.0,其系統模型已較為接近面向對象的系統模型的設計中已經使用了Broker的概念,正在開發的GHMDS 4.0則采用的是本文提出的基于組件的兩級總線結構。
實踐證明,CAD的系統模型在CAD系統的建構中起了至關重要的作用.本文提出的基于組件的CAD系統模型,增加了系統結構的靈活性,提高了模塊內聚度,降低了模塊間的耦合度,使應用開發的難度下降,系統的可維護性和可重用性上升,進一步增強了系統的開放性、集成性和效率。
原文轉自:http://www.anti-gravitydesign.com