軟體中的系統架構,其實是從建築行業中的架構設計參考過來的,但是軟體中的系統架構又有很大的特殊性。特殊性表現在,軟體的架構可以在設計完畢後,項目進行的過程中進行相應的變化,或者可以推到重來,但是建築行業中卻不能這麼做。軟體行業有着很大的變化性。
架構總體來說就是實作需求功能的較複雜元件的設計與不能精簡的較複雜元件。ISO與IEEE對系統架構的定義:一緻認為軟體密集型系統的架構分為主要子產品,組織子產品與支撐子產品3部分。
功能:功能上必須滿足需求。
可靠性:系統系統對于使用者的商業經營和管理來說極為重要,是以軟體系統必須非常可靠。
可用性:系統必須可用。
可維護性:系統的維護包括兩方面,一是排除現有的錯誤,二是将新的需求反映到現有系統中去。一個易于維護的系統可以有效地降低技術支援的花費
安全性:系統所承擔的交易的商業價值極高,系統的安全性非常重要。
可擴充性:必須能夠在使用者的使用率、使用者的數目增加很快的情況下,保持合理的性能。隻有這樣,才能适應使用者的市場擴充得可能性。
系統分析員通過與項目幹系人的溝通或者是與客戶的溝通整理出來功能需求,形成需求文檔,然後将文檔傳遞給系統架構師,系統架構師負責将分析員整理的需求轉換為詳細設計說明書。這個詳細設計書作為與開發人員溝通的主要工具。
系統架構師可以通過使用UML模組化工具,在詳細設計說明書中書寫每個元件的設計用力圖或者流程圖,或者是通過IBM的relations Rose工具來實作相應的模組化。
系統架構師在設計時遵循的原則是:
1、低耦合:就是要求不同的組建之間的耦合度最低。每個組建的功能應盡量的分離,他們直接的調用關系進行把對象的引用轉換為接口的引用。
2、高内聚:功能相像的功能放在一個元件中,對外提供接口調用的方式來整理。
系統架構師作為需求分析師與軟體開發工程師之間的核心關鍵。好的系統架構不但可以滿足軟體的功能需求有更好的擴充性,可維護性,安全性,可靠性的等等。
系統架構師必須參與到開發的全過程。
一般來說。系統的需求分為:功能性需求與非功能性需求。
系統架構師在進行系統設計的時候一般采用的方式是通過邏輯分層将功能相像的子產品放在單獨的層中,然後通過分層來實作系統的功能分離與低耦合、高内聚的原則。
系統架構的設計與系統采用的開發方式有關,軟體的開發方式可簡單分為:傳統方式與靈活開發。
傳統方式:大家熟知的瀑布型模式,軟體的過程嚴格的按照上級步驟執行完畢後開始下一步驟。
靈活開發:則是遞增需求的疊代開發。每個階段都會新增一個需求,完成這個需求之後變釋出軟體,雖然軟體的功能不全,但是至少是可以使用的。
系統架構師的設計方案,最後由項目幹系人進行确定,确定采用哪個設計方案,當然最後也可能不采用,造成這樣的結果,可能的原因是非功能性需求的原因。非功能性的需求:例如與之前系統的繼承,硬體裝置,網絡環境等等。
系統架構可以簡單的分為隐式架構與顯示架構,例如:蓋一個小狗的棚子,有經驗的架構師在自己的腦海中就已經有了如何去架構。這就是隐式架構。有些情況下:系統的功能比較複雜和細化,我們不可能在腦海中就能想出來如何架構,需要通過做demo或者子產品化的劃分來設計,這就是顯示架構。
系統的架構設計,必須考慮設計的可行性,可擴充性,健壯性,可用性,高效性,安全性等方面,還要考慮軟體所處的環境等等,各方面的因素都要考慮,否則等軟體開發的過程中發現系統架構設計中的不足再去修改,代價是很昂貴的。
因為本人初次寫博。部分描述不清楚的部分在所難免,錯字方面還請見諒,還請大家多多提出交流意見,大家共同提高。
下一篇将對系統架構的具體實踐展開講解
本文轉自何戈洲部落格園部落格,原文連結:http://www.cnblogs.com/hegezhou_hot/archive/2010/09/07/1820327.html,如需轉載請自行聯系原作者