版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、淺談軟件的架構設計作者:張傳波我將以我主持開發(fā)的“工程量自動計算軟件”,談一下我對軟件架構設計的體會。我們公司主要開發(fā)建筑造價領域的軟件,其中工程量自動計算軟件是技術含量最高、難度最大的軟件。我是這個項目的主要開發(fā)者,我參與了這個項目的全過程。這個項目從立項至今已經(jīng)差不多3年的時間了。軟件的第一個版本是2000年11月1日發(fā)布的。這個軟件是和建筑造價行業(yè)緊密相關的,我有必要先介紹一些背景資料。建造一棟建筑物需要多少成本呢?它是如何計算的呢?建筑物除了是由鋼筋混凝土做的外,它還有門、窗,裝飾用料等等。如果細分,建筑物用料可以細分成成千上萬種。國家的建筑造價的部門對許多工程進行了分析,統(tǒng)計出建筑物
2、不同的部分、不同的材料的單價造價。也就是說,如果建筑物的各個部分的工程量算出來的,乘以單價就可以知道建筑物的造價了。比方說,由一棟私人的別墅,要知道它的造價,就要算出它各種型號的混凝土用了多少,其中柱用了多少混凝土,梁用了多少,板用了多少,各種型號和直徑的鋼筋用了多少,各種型號門、窗用了多少等等,就可以算出它的造價了。建筑物的結構是很復雜的,梁、板、柱等等東西是交錯在一起的,如何計算它們的工程量是有規(guī)則的。全國各地的定額站對此作了規(guī)定。我們這個軟件的任務是,按照工程量的計算規(guī)則,算出工程量。如果沒有軟件,用戶原來是怎樣計算工程量的呢?用戶根據(jù)圖紙,用紙加計算器,把計算的過程列出來,最后得出各個
3、部分的結果。人手計算的工作量很大,很繁復,也很容易出錯。我們的這個軟件工作的流程大致是,用戶根據(jù)圖紙,把構件(梁、柱、板等)畫上去,繪圖完成后,軟件計算工程量,計算的結果以報表的形式輸出。軟件把原來繁復的手工計算工程變成形象畫圖的過程,大大的減輕了工作量,增加了工作的樂趣。附圖(軟件概貌):下面談一下這個軟件的設計過程。l 概念設計用戶手算時的情景:用戶要仔細的看圖紙,包括建筑施工圖、結構施工圖,把各種平面、立面、剖面圖在腦中形成立體的模型,在腦中建立各種構件的關系,要計算的內(nèi)容也一一明確。用戶根據(jù)自己的經(jīng)驗和本工程的實際情況,開始計算工程量,計算的過程一般是先算基礎,然后是主體結構,接著是裝
4、飾和腳手架。最后是匯總計算結果。計算的過程中需要不斷的看圖紙,不能算錯,不能多算和漏算,計算要留有中間結果,以備檢查。手算時的工作流程:手算的特點:1. 要分析許多圖紙,掌握許多資料。2. 手算者思維要嚴謹,不過多算、漏算。3. 計算要步步為營,不能有錯,需要反復的檢查和較驗。4. 計算的工作很繁復和枯燥。5. 計算者經(jīng)驗越多,出錯的機會越低。本軟件要滿足以下兩點的基本需求:1. 降低計算者的工作量。2. 保證計算的準確度。用軟件計算的工作流程:用軟件工作時,軟件極大地降低了計算者的的工作強度和工作量,迭代的過程只有一個。計算者只需要熟悉圖紙,然后“依樣畫葫蘆”的輸入數(shù)據(jù),剩下的工作就交給軟件
5、了。l 邏輯設計先看模塊與數(shù)據(jù)關系圖:各模塊簡介如下:A數(shù)據(jù)輸入模塊:用戶采用什么方式輸入圖紙的數(shù)據(jù)。參考方案:1) 表格法輸入:用戶以表格的形式輸入數(shù)據(jù),類似于手算的方式。2) 圖形法輸入:用戶以“畫圖”的方式輸入數(shù)據(jù)。表格法方式接近于手算的方式,用戶的工作量還是很大,所以我們采用圖形法輸入??紤]到已經(jīng)有許多自主圖形平臺的工程量計算軟件,我們不應該再走別人的老路,還有工程量計算的復雜性,我們決定采用了AutoCAD2000作為繪圖的平臺,這樣可以充分利用AutoCAD強大的繪圖功能和三維實體布爾運算的功能。B數(shù)據(jù)處理模塊:對模塊D的數(shù)據(jù)進行處理,也就是要進行工程量的計算。軟件要減輕人的工作量
6、主要是體現(xiàn)在這個地方,也是軟件的核心部分。此模塊需要很強的人工智能技術。C數(shù)據(jù)輸出模塊:以報表的形式輸出模塊E的數(shù)據(jù)。D工程數(shù)據(jù):用戶輸入的數(shù)據(jù)的儲存方式。參考方案:1) 數(shù)據(jù)庫方式。2) 對象模型方式。本軟件的關鍵問題是人工智能的問題,軟件要解決這個問題:怎樣去模擬人腦辨別出復雜的工程情況準確無誤的計算出結果。本軟件處理的數(shù)據(jù)量很大,采用數(shù)據(jù)庫的方式應該是很適合的。但如果采用數(shù)據(jù)庫的方式來保存工程的數(shù)據(jù),會因為數(shù)據(jù)庫的靈活性不足,難以構造滿足現(xiàn)實工程的模型。我們決定采用對象模型的方式,用類來構造現(xiàn)實的工程模型。軟件數(shù)據(jù)的存儲直接對工程模型進行,運算也直接對工程模型進行,這樣上層編程的難度會降
7、低很多,也更容易解決“模擬人腦辨別出復雜的工程情況準確無誤的計算”的問題。工程對象模型:紅色矩形:表示集合對象藍色矩形:表示非集合對象對象描述:數(shù)據(jù)輸入模塊把輸入的數(shù)據(jù)通過接口保存在工程模型里面。數(shù)據(jù)處理模塊通過接口訪問工程數(shù)據(jù)。E計算結果數(shù)據(jù):計算結果的儲存方式。此部分數(shù)據(jù)量大,而且不需要進行運算,采用數(shù)據(jù)庫的方式保存已經(jīng)可以滿足需要了。數(shù)據(jù)輸出模塊直接讀取計算結果數(shù)據(jù)庫,生成報表。l 物理設計A數(shù)據(jù)輸入:1. 軟件的UI2. 工程管理器3. 構件屬性窗口4. DB數(shù)據(jù)處理:1. 智能扣減數(shù)據(jù)庫2. 用戶選擇計算的范圍3. 計算4. 輸出計算結果5. EC數(shù)據(jù)輸出:1. 各式報表的生成2.
8、計算結果的動態(tài)查詢3. 輸出其他格式的文件4. 輸出成公司其他軟件的接口文件5軟件采用的編程語言和數(shù)據(jù)庫:AutoCAD2000的二次開發(fā)最好是通過ARX的方式進行,這樣的控制力最強,實現(xiàn)的功能最強大。但因為要熟練ARX,必須熟悉VC,考慮到公司目前沒有精通VC的人,而我們對VB是最熟悉的,所以采用通過COM接口與AutoCAD2000通訊,用VB通過COM接口調(diào)用AutoCAD2000對象的屬性和方法。這種方式控制力較弱,但好處是我們可以很快掌握。但是后來在計算部分,我們發(fā)現(xiàn)通過COM接口進行運算速度較慢,而且AutoCAD2000會出現(xiàn)內(nèi)存泄漏,會導致無法計算較大的工程。所以這部分不得不采
9、用ARX的方式進行,計算部分底層的代碼用VC來實現(xiàn),然后編譯成COM組件,由VB來調(diào)用。數(shù)據(jù)庫方面只涉及到簡單的存取操作,不涉及多用戶并發(fā)的復雜情況,所以采用了Microsoft Access??紤]到我們對編程語言的熟悉程度,軟件的特點,還有對性能的考慮,軟件主要用VB開發(fā),部分地方使用了VC開發(fā)了AutoCAD2000的ARX程序,數(shù)據(jù)庫采用Microsoft Access。軟件性能方面的考慮:AutoCAD2000本身對計算機的資源消耗較大,而我們軟件要在AutoCAD里面建立的三維實體對資源的消耗也是很大的。當工程巨大時,軟件在計算時很可能會出現(xiàn)資源不足的情況。我們采用了一些設計來提高性
10、能。1. 數(shù)據(jù)動態(tài)加載,需要的時侯才載入,不需要時馬上釋放。2. 優(yōu)化計算的過程,降低計算時對資源的需求。3. 數(shù)據(jù)輸出部分設計成ActiveX EXE方式,需要時才加載。4. 軟件設計成可以分步計算,最終的計算結果可以通過多次的運算的結果匯總而成。可擴展性方面的考慮:實際工程的情況很復雜,軟件不可能計算所有的情況。而且我們的軟件是分版本發(fā)布的,所以我們在軟件的體系上為以后的擴展作了充分的考慮。工程模型上的考慮:工程模型的框架是不會改變的,不過模型最底層構件是不斷變化的。柱、梁、墻等等都是構件。按實際工程分析,不同的構件的屬性是不同的。我們用VB構造這些構件的時侯,并沒有采用一種構件一個類的辦
11、法,而是都采用同一個類來構造所有的構件。采用動態(tài)添加屬性的辦法,來適應不同構件不同屬性的情況。計算模塊的考慮:實際的計算情況是很復雜的,有10種構件和20種構件的相交判斷情況差異很大。軟件沒有把代碼寫死,設計了一個智能扣減數(shù)據(jù)庫,程序根據(jù)智能扣減的數(shù)據(jù)進行運算。就算以后增加了很多構件,都不需要修改程序,只需要修改智能扣減數(shù)據(jù)庫就可以了。構件屬性輸入界面:不同的構件屬性不同,同類軟件的做法是不同的構件用不同的輸入界面。而我們軟件不同的構件屬性輸入界面使用同一個窗體,利用外部的數(shù)據(jù)動態(tài)生成不同的輸入界面。l 總結這軟件很大的特點是具有強烈的專業(yè)特點,要設計好這個軟件,要對建筑造價有很深的認識。要開
12、發(fā)好專業(yè)領域的軟件,軟件的架構師最好是具備這個領域的知識,這樣才能更好的用計算機語言來描述用戶的場景,設計出滿足實際需要的軟件架構出來。而我是學城鎮(zhèn)建設畢業(yè)的,對建筑行業(yè)是很熟悉的,這對我的軟件架構工作是很有幫助的。軟件架構師要作好設計的工作,需要對相關的行業(yè)有相當程度的認識。軟件架構是一個不斷認識,螺旋迭代的過程。沒有最好的設計,最好的設計是永遠都不會出現(xiàn)的。任何一個設計出來以后,都可以挑出許多毛病出來。我們開發(fā)工程量自動計算軟件過程中大的體系的修改就經(jīng)歷過好幾次,軟件發(fā)布后,我們發(fā)現(xiàn)還是有許多問題沒有解決,有些問題是比較嚴重的,需要修改軟件的體系才能妥善的解決。可見,軟件架構是一個長期的迭
13、代過程,它貫穿軟件的整個生命周期。軟件架構是一個權衡的過程。軟件架構要考慮到許多方面:軟件功能、軟件性能、開發(fā)人員技術熟悉程度、開發(fā)可用的資源、發(fā)布時間、對手軟件的情況等等。好的軟件架構師就是要找一個好的平衡點。工程量自動計算軟件,采用AutoCAD2000作為繪圖平臺,而不自主開發(fā)圖形平臺,這是考慮到我們我們開發(fā)時間較晚,不能步其他公司的后塵,這樣技術會處于長期落后的局面。我們不主要采用ARXAutoCAD2000二次開發(fā)的強大方式,是因為我們對這方面的技術不甚了解。軟件架構考慮的重點是可用性、可擴展性、可維護性。工程量自動計算軟件對用戶的需求進行了仔細的分析,對用戶可能的操作進行了大量的分析,對同類軟件也進行了詳細的研究。我
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工程垃圾處理合同范本
- 2024年撫州客運從業(yè)資格證考試模板
- 全球海上貨運合同操作手冊
- 2024年南京貨運從業(yè)資格證考試題
- 倉儲物流合作協(xié)議
- 農(nóng)貿(mào)市場修鞋服務裝修合同
- 快遞行業(yè)運輸司機合同范本
- 2024年蘭州客運駕駛員考試試卷及答案解析
- 汽車行業(yè)辦公樓裝修招標
- 2024年哈爾濱客運從業(yè)資格證題目
- 供應商考核稽查表
- 形式發(fā)票樣本(Proforma Invoice)
- 九年級個人學習目標展示
- 等腰三角形(習題)教案
- 平面四桿機構急回特性說課課件
- QPCJ鋼軌鋁熱焊接工藝4-2ppt課件
- 液壓油缸計算器
- 絕世武林秘籍峨眉十二樁之八.附
- 高考英語3500詞匯表(附音標無中文釋譯
- 二手設備買賣合同(范本)
- 【英語】高二英語閱讀理解專項訓練100(附答案)
評論
0/150
提交評論