熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java高級技術 >> 正文

正視架構設計的重要作用

2013-11-23 19:53:15  來源: Java高級技術 

  要討論軟件架構設計在軟件開發中的重要作用首先讓我們來了解一下目前國內軟件的開發現狀

  總的來說國內的多數企業仍然是采用瀑布模型作為軟件開發過程的主要模型雖然在采用瀑布模型的同時可能會引入原型法以及諸如MSF等其它軟件開發方法與過程但隨著項目時間的推進這種瀑布模型會慢慢演化為邊做邊改模型

  從事過軟件項目開發的專業人士都有這樣的困惑:為什麼到了項目接近尾聲的時候仍然還有那麼多沒有解決的問題?

  理論上講應該是先分析後設計再編碼那為什麼項目在交貨以後我們還在不斷的編寫設計文檔?為什麼每次客戶需求發生變更我們又要投入大量的資源來應對不斷變化的客戶需求?為什麼軟件開發會碰到這麼多困難我們天天加班加點不斷地去解決開發中碰到的種種問題可是問題越解決越多得到的效果卻那麼不盡人意?

  項目出現這些問題原因很多概括起來可以分為兩種:管理因素和技術因素國內普遍重視管理因素而忽視技術因素所以出現層出不窮的問題也就無法避免

  軟件架構設計屬於技術因素它位於軟件開發過程的前期階段架構設計的過程是分析客戶需求挖掘非功能性需求並將客戶需求所定義的領域知識轉化為軟件系統模型的過程由此可見架構設計所涵蓋的范圍非常廣泛

  目前國內對於軟件架構的認識還存在這樣或那樣的誤區難道只有當設計人員在為軟件項目配備了充足的資源然而卻得不到預期的結果時才會反思:是不是軟件開發本身出現了問題?

  架構設計源於客戶需求

  在進行需求分析的過程中系統分析員將客戶需求轉化為計算機模型然而在這個過程中系統分析員本身的特性也就決定了這一角色很難把握住客戶的非功能性需求

  需求需要挖掘尤其對於大型的軟件系統而言光靠系統分析員這個單一的角色很難完成需求分析與挖掘的艱巨任務在需求分析的過程中架構設計師更為關注的是系統的非功能性需求例如穩定性可擴展性可維護性安全性高效性等等這些需求都是需要挖掘的

  如何挖掘?挖掘方式取決於核心需求舉個很簡單的例子客戶需要實現兩個系統的數據傳輸這是個核心功能性需求而在這個需求的背後還包括了傳輸過程要求可靠需要采用一種特定的數據格式進行傳輸由於數據包含一定的機密因素因此需要加密並需要選擇合適的加密算法等等一系列的非功能性需求

  此時架構設計師不僅需要了解客戶本身的功能需求還需要能夠發掘非功能需求因此優秀的架構設計師一定是一個經驗豐富的需求工程師需求分析讓架構設計師知道我需要考慮哪些因素而深厚的軟件技術功底讓架構設計師知道如何去考慮這些因素可見架構設計源於客戶需求

  架構設計源於對知識的不斷積累

  首先應該認識到沒有對領域知識軟件系統特性與軟件技術等的深刻理解就無從談及架構設計而深厚的領域知識與技術經驗則是源於不斷的積累

  目前市場上確實很多產品在架構上已經非常成熟和穩定但這些產品的成熟架構也是通過長期不斷的實踐與積累才逐步形成的經驗豐富的架構設計師可以在開發產品的同時總結出一套架構模式這對維護產品的體系結構以及開發同類產品都有深遠的意義

  從另一個角度講產品的架構並非一成不變隨著技術的不斷創新與發展新技術一定會被應用到現有的系統架構中此時軟件架構可能需要進行調整我們也不能再說我們沒有必要去關心這些產品架構了

  架構設計是一種取捨過程

  實現某一非功能性需求可以有很多種方法但並不是每種方法都是最合適的這在架構設計的過程中需要做出取捨例如為了使得軟件系統具有易擴展易更改的能力我們可以采用插件體系結構或內嵌腳本系統結構兩者都可以使得軟件系統具有方便擴展的能力

  然而如果客戶的業務流程會經常變化或者軟件系統產品會應用到具有不同業務流程的多個客戶時采用後者可能會更加符合軟件本身的特點

  當今IT業技術層出不窮在特定的應用場景中采用何種技術何種模式最合適這就是架構設計的取捨JAVA和NET孰好孰壞?討論這樣的問題也不再有意義軟件工程大師Martin Fowler曾經說過:架構師是對所有重要事情做出決定的人這一決定也囊括了取捨

  架構設計將服務於整個開發過程

  良好的架構設計不僅使得軟件系統能夠滿足客戶需求它更為軟件系統帶來了安全性穩定性可擴展性等屬性而這些屬性在應對客戶需求變更提高軟件可測試性與可維護性降低維護成本提高開發效率等各方面都起著非常重要的作用

  客戶所需要的是可以用於生產實踐的最終產品他們自然不會去關心你的軟件系統采用何種設計和架構但作為軟件系統的分析者設計者和開發者我們必須為軟件產品尋求一種合理的架構設計因為它不僅能夠使系統滿足非功能性需求而且能夠降低開發成本和維護費用

  總之架構設計是軟件開發過程的重要組成部分它不是單純的技術也不具有一種特定的形式更不是與客戶需求無關的良好的軟件架構能夠服務於整個開發過程有效地降低項目風險確保項目能夠朝著健康的方向發展因此我們必須重視架構設計在軟件開發中的重要作用


From:http://tw.wingwit.com/Article/program/Java/gj/201311/27621.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.