很多人對軟件設計是什么,以及體系結構設計是什么不清楚。其實我們可以把軟件設計,簡單的理解為是把抽象事物和問題鏈接在一起,并找出它們不同層次和角度的問題。分解問題或事物并將其模塊化可輕松解決問題。分解越精細,模塊數量越多。而隨著模塊的增多,軟件設計就會出現一定的副作用,它使設計人員考慮了模塊之間的更多耦合。
軟件設計是什么?
軟件設計是把需求轉化為軟件系統的最重要的環節,系統設計的優劣在根本上決定了軟件系統的質量。
軟件設計是從軟件需求規格說明書出發,根據需求分析階段確定的功能設計軟件系統的整體結構、劃分功能模塊、確定每個模塊的實現算法以及編寫具體的代碼,形成軟件的具體設計方案。
在此,主要闡述軟件系統設計的核心內容之一:體系結構設計。旨在幫助開發人員搞清楚“設計什么”以及“如何設計”。一般把設計過程劃分為兩個階段:概要設計階段和詳細設計階段,如下所示:
·概要設計階段的重點是體系結構設計。可根據項目的情況進行文檔裁減和過程合并,如項目開發過程只有一個設計階段和設計文檔。
體系結構
體系結構如同人的骨架。如果某個家伙的骨架是猴子,那么無論怎樣喂養和美容,這家伙始終都是猴子,不會成為人。由此可見,體系結構乃是系統設計的重中之重。
目前業界比較流行的軟件結構模式有C/S(客戶/服務器)、B/S(BROWSE/SERVER)、層次結構(上下級層次結構、順序相鄰的層次結構、含中間件的層次結構)。
體系結構設計原則
● 合適性
即體系結構是否適合于軟件的“功能性需求”和“非功能性需求”。高水平的設計師高就高在“設計出恰好滿足客戶需求的軟件,并且使開發方和客戶方獲取最大的利益,而不是不惜代價設計出最先進的軟件。
● 結構穩定性
詳細設計階段的工作如用戶界面設計、數據庫設計、模塊設計、數據結構與算法設計等等,都是在體系結構確定之后開展的,而編程和測試則是更后面的工作,因此體系結構應在一定的時間內保持穩定。
軟件開發最怕的就是需求變化,但“需求會發生變化”是個無法逃避的現實。人們希望在需求發生變化時,最好只對軟件做些皮皮毛毛的修改,可千萬別改動軟件的體系結構。如果當需求發生變化時,程序員不得不去修改軟件的體系結構,那么這個軟件的系統設計是失敗的。
高水平的設計師應當能夠分析需求文檔,判斷出哪些需求是穩定不變的,哪些需求是可能變動的。于是根據那些穩定不變的需求設計體系結構,而根據那些可變的需求設計軟件的“可擴展性”。
● 可擴展性
可擴展性是指軟件擴展新功能的容易程度。可擴展性越好,表示軟件適應“變化”的能力越強。
可擴展性越來越重要,這是由現代軟件的商業模式決定的:
· 社會的商業越發達,需求變化就越快。需求變化必將導致修改(或者擴展)軟件的功能,現代軟件的規模和復雜性要比十年前的大得多(對比一下操作系統的變化就明白了),如果軟件的可擴展性比較差的話,那么修改(或者擴展)功能的代價會很高。
· 現代軟件產品通常采用“增量開發模式”,開發商不斷地推出軟件產品的新版本,從而不斷地獲取增值利潤。如果軟件的可擴展性比較差的話,每次開發新版本的代價就會很高。雖然開發商抓住了商機,但卻由于設計水平差而導致沒有賺取多少利潤,真是要活活氣死。
● 可復用性
由經驗可知,通常在一個新系統中,大部分的內容是成熟的,只有小部分內容是創新的。一般地可以相信成熟的東西總是比較可靠的(即具有高質量),而大量成熟的工作可以通過復用來快速實現(即具有高生產率)。
可復用性是設計出來的,而不是偶然碰到的。要使體系結構具有良好的可復用性,設計師應當分析應用域的共性問題,然后設計出一種通用的體系結構模式,這樣的體系結構才可以被復用。
以上就是關于軟件設計是什么,以及體系結構是什么的全部內容,想了解更多關于軟件設計的信息,請繼續關注中培偉業。