軟件結構

出自 华夏文化百科
前往: 導覽、 搜尋

中科永聯高級技術培訓中心(www.itisedu.com) 軟件結構(Software Structure)是指一種層次表況,由軟件組成成分構造軟件的過程、方法和表示。它是影響軟件質量的內在因素,結構良好的軟件可以提高軟件的可靠性和易維護性。軟件結構主要包括程序結構和文檔結構。文擋描述的對象往往很複雜,所以文檔結構需要簡明、清晰和有層次。程序結構有兩層含義,一是指程序的數據結構和控制結構;另一是指由比程序低一級的程序單位(模塊)組成程序的過程、方法和表示。在後者含義下,具有代表性的是塊結構和嵌套結構兩種。塊結構比較自然,各個部分之間通過一些公用變量取得聯繫,嵌套結構是在嵌套分程序的基礎上引進局部性和動態性,以減少程序的初始信息量,嵌套結構不如塊結構直觀,調試不方便。 對於模塊,可理解為具有如下特性的程序單位,即把這些模塊組合成較大的程序時,不要求了解各個模塊的內部工作細節,而各模塊的正確性也不用置於整個程序中就可檢查。按照面向對象的方法來構造軟件時,這種模塊的概念就可以理解為類(參見面向對象程序設計)。 有些程序是單模塊結構,有些是多模塊結構。這些模塊在程序的邏輯上是不可分離的,可以用不同的程序設計語言編寫,可以由相應的編譯程序分別編譯,可以和其它的程序單位組合併裝入計算機內運行。由於編寫大程序的需要,且模塊可以多次使用,實行模塊化是一個很好的手段。 由一組模塊組成的大型程序可有三種結構,即順序結構、並髮結構和分布結構。順序結構的程序是最古老的,所採用的程序設計語言是順序程序設計語言,如ALGOL、FORTRAN、C等。並髮結構的程序由若干個可以同時執行的模塊組成。這些模塊可以在多台處理機上並行執行,也可以在同一台處理機上交叉執行,所採用的程序設計語言是並發程序設計語言,如並發PASCAL、Modula-2等。分布結構的程序由若干個可獨立運行的模塊組成,這些模塊可以分布於一個分布式系統中,在幾台計算機上同時運行,所採用的程序設計語言是分布式程序設計語言。對於大型程序,也可以是這三種結構的混合。 WEB軟件結構原則 (一) 目錄結構清楚,不宜過深,複雜,路徑最好用相對地址什麼樣的目錄放什麼樣的內容,這樣便於管理,使WEB程序的目錄結構,清楚明了,一看便知道某個文件夾下存儲了哪些功能模塊與內容。若隨便存放,時間一長久自己都將不從了解某目錄是用來做什麼的。如:經常要使用的可執行文件最要存放在(項目根目錄)根目錄,這樣做主要是便於了解其作用,同時也為在程序中少輸入些地址字符。程序所用到的圖片統一存放在根目錄下images目錄中,若項目較大,分枝較多,可再在其目錄下建立也分枝程序相關的目錄名,存儲相關的圖片內容。程序的配置文件與常用共公函數類庫存放在include目錄中,存放在此目錄下的函數類庫文件擴展名得命名為:.php切不命名為.inc .ini之類為擴展名的文件,主要是防此此類文件可供用戶下載,或查閱其源碼內容,這樣對其調用方便明確。模板文件應存儲在根目錄下templates目錄中,擴展名為.html,如果項目較大,分類較多,模板文件可分類存放在下極目錄中。臨時文件存儲在根目錄tmp目錄中,此目錄通常設置為任何人都可讀可寫。使用相對地址主要是方便程序移植。 (二) 命名適當 命名最好是以程序用來作什麼用來命名。若一個單詞就要描述則用小寫單詞來命名,若要用多個單詞方能代表,也以小寫單詞之間加下劃線連接。要注意命名不可過長,這樣就不方便了,雖然能表達的更明確,但打字難打啊。程序中函數命名也可與此相同。不好之上也有,那就是每次命名都得要花時間去想個較合適的名字,由其是對於是我們這種英文水評較差的人來說可不是一件容易的事啊。(慘啊,哈哈!) (三) 常變內容、界面使模板較好 常變內容、界面使用模板較好,這是因為當我某天感覺某不頁面不美觀時尚時,我想更換較新較好的界面,這時就用得上了。如果是按照傳統的製作將HTML頁面內容放在程序中處理輸入時,較麻煩非得要更改程序不可,這可能會帶來較大的不便萬一更改出錯,這就不太好了。(程序有很長一段時沒有維護了,突然要改,一時之間是難免不發生改錯的情況發生)。若是使用了模板則不用改程序,只要更改一下模板文件就行了。好了說了這麼我模板的好處,好像傳統的做法沒有一點好處是的,好像分文不值是??說說它是怎麼個不好的。傳統做法是把HTML代碼嵌入在WEB程序中,這樣做的好處是,執行速度要比使用模板的要快,這是因為它不用經過任何處理就能直接輸出,而模板就不一樣啦。模板先要打開讀取模板文件到字符串變量可數組字符串變量中,這是要時間的吧?讀處完了之後還得花時間用字符串操作函數替換模板中模板變量吧?替換完成了方能進入輸出。傳統做法與使用模板作法,您覺得哪個好呢?(我個人認為如果是開發訪問量相當大的網站,選擇傳統的作法是一個不錯的選擇,我所說的是相對不是絕對,如果訪問量再大那就不能用腳本語言去寫了,那得用 CGI + Socket + Demon了。不說了,說遠了,哈哈) (四) 共公信息統一存儲 共公信息統一存儲,這主要為了方便團隊開發時都能進行調用用的最常的函數,不用每個開發人員都複製一份或自己寫一份存儲在程序文件中,這樣做浪費空間同時效率效果也不好。 (五) Include文件不可嵌入較多 Include文件不可嵌入較多,這是因為每次程序include某個文件時,是要打開讀取這個文件的,這是要時間的哦,再就是說處理路徑時可能會遇到較難發現的BUG問題。 (六) 目錄下不可存儲太多內容文件 目錄下不可存儲太多內容文件,你有沒有發現?每當你進入windows的system32文件夾時通常打開的時間要比打開其它文件夾時要長久點呢?這主要是因為system32這個文件夾中文件較多,當你打開系統得花時間查找文件並顯示吧?如果文件較多較大時最好是分目錄分盤符來處理。假若您的機器夠好夠強勁的話,就當我沒說過,那就得另當別論了。 (七) 數據結構要設計合理 數據結構要設計合理,如果數據結構設計不合理的話,不管你的程序寫的多精典,寫得我容易,也不是不能發揮其最大作用與價值的。這就相當於一個女人的胸部最大最豐滿,但人不夠高,而且又黑,身體又不好,身架又殘疾,你會說她美麗完美嗎?程序也一樣,有些代碼沉長又不起作用,存在也沒有什麼用。數據結構要精簡明了。 (八) 數據校驗應在服務器端 數據校驗應在服務器端,這是因為就算是他人不從我們的頁面輸入數據,自己做了個鏈接地址(GET)或自己做了個表單用POST方式傳送數據,我們的程序也將進入核對查驗。若是放在客戶端,他人就能用以上方法逃過審核了。但這樣做也有他不好之處,那就是當數據量大時,服務器會負載運行,審核數據完整性是可開銷時間與系統資源的。在客戶端就不會占用服務器太多的資源,因為他占用的是用戶的資源。 (九) 連接數據庫近晚,斷開連接近早 連接數據庫近晚,斷開連接近早,這主要是因為連接數據是要時間的吧?連接上了不即時使用也要占用系統資源吧?連接數據庫連接數量是有限制的吧?所以得盡晚連接,儘早斷開連接,這個做能使占用系統資源最少,為下一次連接提供條件。 (十) 儘量少使用SESSION與COOKIE 儘量少使用SESSION與COOKIE,因為使用SESSION是要占用系統資源的,SESSION是存儲在服務器端的,每次讀取SESSION中的數據是要較大開銷的。COOKIE雖然不占用服務器資源,但COOKIE不太安全。