系統設計的一些原則_第1頁
系統設計的一些原則_第2頁
系統設計的一些原則_第3頁
系統設計的一些原則_第4頁
系統設計的一些原則_第5頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、精選優質文檔-傾情為你奉上        系統設計的好壞在根本上決定了軟件系統的優劣。可以說“差的系統設計必定產生差的軟件系統”,但是不能保證“好的系統設計必定產生好的軟件系統”。因為在設計之前有需求開發工作,在設計之后還有編碼,測試和維護工作,無論哪個環節出了差錯,都會把好事搞砸了。 據說上帝把所有的女士都設計成天使,可是天使們在下凡的時候,有些人雙腳先著地,有些人臉先著地。上帝的這一疏忽讓很多女士傷透了心。所以我們在開發軟件的時候,一定要吸取這個教訓。 一合適性系統設計的源頭是需求,這是由商業目標決定的。高水平的設計師高

2、就高在“設計出恰好滿足客戶需求的軟件,并且使開發方和客戶方”獲取最大的利益,而不是不惜代價設計出最先進的軟件。評估體系結構好不好的第一個指標就是“合適性”,即體系結構是否符合適合于軟件的“功能性需求”和“非功能性需求”。人們一般不會在需求文檔中指定軟件的體系結構,需求與體系結構之間并沒有一一對應的關系,甚至沒有明顯的對應關系。所以設計師可以充分發揮主觀能動性,根據需求的特征,通過推理和歸納的方法設計出合適的體系結構。經驗不豐富的設計師往往把注意力集中在“功能性需求”而疏忽了“非功能性需求”,殊不知后者恰恰是最能體現設計水平的地方。比如設計住宅。住宅的最基本的功能性需求是“吃喝拉撒睡”,全世界人

3、民“吃喝拉撒睡”的方式都是差不多的。住宅的非功能性需求主要是讓人住得舒服。住宅的種類非常多,如茅草屋、窯洞、筒子樓、酒店、別墅等等。窯洞的體系結構與別墅的有天壤之別,你能說后者一定比前者好嗎?不能,因為沒有可比度。如果一名建筑師受政府委托給廣大的中國陜北農民設計住宅,他應當設計更好的窯洞而非別墅。理由很簡單,因為廣大的陜北農民住不起別墅,而那里的條件特別適合于建窯洞。窯洞對于當地的農民而言是非常實用而且成本低廉的住宅。對于軟件系統而言,能夠滿足需求的設計方案可能有很多種,究竟該選擇哪一種呢?這時候商業目標是決策依據,即選擇能夠為開發方和客戶方帶來最大利益的那個方案。大部分開發人員天生有使用新技

4、術的傾向,而這種傾向對開發商業產品而言可能是不利的,切記切記! 二結構穩定性體系結構是系統設計的第一要素,詳細設計階段的工作如用戶界面設計,數據庫設計,模塊設計,數據結構設計等等,都是在體系結構確定之后開展的,而編程和測試是最后面的工作。如果體系結構經常變動,那么建筑在體系結構之上的用戶界面、數據庫、模塊、數據結構等也跟著經常變動,用“樹倒猢猻散”來比喻很恰當,這將導致項目發生混亂。當前中國有幾句流行的至理名言:“穩定壓倒一切”、“發展才是硬道理”。發展的前提條件是穩定,社會如此,開發軟件產品也是如此。所以體系結構一旦設計完成,應當在一定的時間內保持穩定不變,只有這樣才能使后續工作順

5、利開展。前面講了,體系結構是依據需求而設計的。如果需求變更了,很有可能導致體系結構發生變更,那么“保持結構穩定”豈不是成了空想?高水平的設計師應當能夠分析需求文檔,判斷出哪些需求是穩定不變的,哪些需求是可能變動的。于是根據那些穩定不變的需求設計體系結構,而根據那些可變的需求設計軟件的“可擴展性”。 三可擴展性可擴展性是指軟件擴展新功能的容易程度。可擴展越好,表示軟件適應“變化”的能力越強。由于軟件是“軟”的,那是否所有的軟件必須設計能擴展新功能呢?這要視軟件的規模和復雜性而定。如果軟件規模很小,問題很簡單,那么擴展功能的確比較容易。要是軟件的代碼只有100行,這時就無所謂“可擴展性”

6、了,你想怎么擴展都可以。如果軟件規模很大,問題很復雜,倘若軟件的可擴展性不好,那么該軟件就像用卡片造成的房子,抽出或者塞進去一張卡片都有可能使房子倒塌。是否任何軟件在設計的時候都要考慮可擴展性呢?不見得,如果確信某個軟件在它淘汰之前永遠都不會變更(如一次性產品),那么在設計階段就沒必要考慮可擴展性,這樣省事省力??蓴U展性越來越重要,社會的商業越來越發達,需求變化就越快。需求變化必將導致修改(或擴展)軟件的功能,如果軟件的擴展性比較差的話,那么修改(或擴展)功能的代價會很高?,F代軟件產品通常采用“增量開發模式”開發商不斷地推出軟件產品的新版本,從而不斷地獲取增值利潤。如果軟件的可擴展性比較差的話

7、,每次開發新版本的代價就會很高。雖然開發商抓住了商機,但卻由于設計水平差而導致沒有賺取多少利潤,真是要活活氣死。體系結構的穩定性是根據那些穩定不變的需求而設計的,體系結構的可擴展性則是依據那些可變的需求而設計的。從字面上看,穩定性和可擴展性似乎有點矛盾。兩者之間存在辯證的關系:如果系統不可擴展的話,那么就沒有發展前途,所以不能只關心穩定性而忽視可擴展性;而軟件系統“可擴展”的前提條件是“保持結構穩定”,否則軟件難以按計劃開發出來,穩定性是使系統能夠持續發展的基礎。所以穩當性和擴展性都是體系結構設計的要素。人們對物質有喜新厭舊的天性,你可以經常改變房子的裝潢和擺設,但不能每次都去拆墻,挖地基。在

8、軟件開發過程中,變化是司空見慣的事情。如果每次變化都導致體系結構發生大的變化,那簡直就是“傷筋動骨”,這樣的體系結構無疑是敗筆之作。分層開發是一種重要的體系結構,有著良好的可擴展性,而且在擴充或修改功能時,基本不會破壞原有結構的穩定性。可以參看我的一文。 四可復用性復用就是指“重復利用已經存在的東西”。復用不是人類懶惰的表現,而是智慧的表現。因為人類總是在繼承了前人的成果,不斷加以利用、改進或創新后才會進步。復用有利于提高產品的質量、提高生產效率和降低成本。由經驗可知,通常在一個新系統中,大部分的內容是成熟的,只有小部分內容是創新的。一般地,可以相信成熟的東西總是比較可靠的(即具有高質量),而大量成熟的工作可以通過復用來快速實現(即具有高生產效率)。勤勞并且聰明的人們應該把大部分的時間用在小比例的創新工作上,而把小部分的時間用在大比例的成熟工作中,這樣才能把工作做的又快又好。企業成功地開發了某個軟件產品之后,如果下個

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論