摘要:軟件架構(gòu)(softwarearchiecture)也稱之為軟件體系結(jié)構(gòu),它是一組有關(guān)如下要素的重要決策:軟件系統(tǒng)的組織,構(gòu)成系統(tǒng)的結(jié)構(gòu)化元素,接口和它們相互協(xié)作的行為的選擇,結(jié)構(gòu)化元素和行為元素組合成粒度更大的子系統(tǒng)的方式的選擇,以及指導這一組織(元素及其接口、協(xié)作和組合方式)的架構(gòu)風格的選擇。軟件架構(gòu)是對系統(tǒng)整體結(jié)構(gòu)設(shè)計的刻劃,一直以來,對于架構(gòu)的理解有兩個基本概念,一個稱之為組成,另一個稱之為
任何設(shè)計方案都與過程有關(guān),過程的改進必然對架構(gòu)設(shè)計產(chǎn)生深遠影響。
軟件架構(gòu)(softwarearchiecture)也稱之為軟件體系結(jié)構(gòu),它是一組有關(guān)如下要素的重要決策:軟件系統(tǒng)的組織,構(gòu)成系統(tǒng)的結(jié)構(gòu)化元素,接口和它們相互協(xié)作的行為的選擇,結(jié)構(gòu)化元素和行為元素組合成粒度更大的子系統(tǒng)的方式的選擇,以及指導這一組織(元素及其接口、協(xié)作和組合方式)的架構(gòu)風格的選擇。軟件架構(gòu)是對系統(tǒng)整體結(jié)構(gòu)設(shè)計的刻劃,一直以來,對于架構(gòu)的理解有兩個基本概念,一個稱之為組成,另一個稱之為決策。
組成:架構(gòu)的組成概念強調(diào)“計算機及組件之間的交互”。例如在的初步設(shè)計中,“表示層”和“業(yè)務層”是兩個粗粒度的黑盒,當內(nèi)部也表達了一些粒度比較細的組件的時候,這兩個黑盒變成了“灰盒”。交互的概念表現(xiàn)在架構(gòu)描述了它們之間的關(guān)系,例如數(shù)據(jù)如何讀取、功能如何調(diào)用等。
決策:架構(gòu)決策不但表現(xiàn)了系統(tǒng)組織、元素、子系統(tǒng)的組織風格決策,還包括了非功能性需求的決策,例如對于可擴展性的決策,對于表示邏輯與業(yè)務邏輯變化的隔離,第三方工具包變化的隔離等,這就使架構(gòu)有了彈性。架構(gòu)的組成與決策是架構(gòu)設(shè)計的兩個基本概念,這兩個概念并不矛盾,在架構(gòu)設(shè)計中,往往是同時體現(xiàn)這兩個概念,確保架構(gòu)滿足產(chǎn)品要求。由這兩個概念出發(fā),我們自然會提出:軟件架構(gòu)的核心思維到底是什么呢?
首先,任何軟件系統(tǒng)都是以滿足需求作為目的,所以,好的架構(gòu)設(shè)計必須以全面深入的需求分析作為基礎(chǔ),根據(jù)需求來組織合理的產(chǎn)品架構(gòu)。事實上架構(gòu)設(shè)計是沒有統(tǒng)一的模式的任何模式只有針對問題才有意義。作為架構(gòu)設(shè)計來說,必須對需求分析有足夠的理解,這樣才能有針對性地解決問題,才可能設(shè)計出真正優(yōu)秀的產(chǎn)品來。
其次,一個軟件系統(tǒng)的質(zhì)量,很大程度上是由架構(gòu)設(shè)計的質(zhì)量決定的,所以架構(gòu)師的眼光一般都專注于質(zhì)量屬性上,應該根據(jù)產(chǎn)品質(zhì)量屬性的要求提出合理的架構(gòu)決策。但是很長時間以來,人們大都把目光關(guān)注在流程、方法、結(jié)構(gòu)原理甚至編碼的本身,而不太注意架構(gòu)設(shè)計最本質(zhì)的東西,思考的深度也欠深入,結(jié)果,很多產(chǎn)品即使設(shè)計出來,后期運行中也是問題百出,特別是發(fā)生變更的時候帶來了很大的困難。這就給我們提出了一個問題,架構(gòu)設(shè)計的思維到底是什么?
另一方面,任何架構(gòu)思想的實現(xiàn),必須與具體的項目組織相匹配才能發(fā)揮作用。因此,系統(tǒng)架構(gòu)師應該仔細研究現(xiàn)代項目管理的思想和方法,吃透其中的精髓,根據(jù)自己的設(shè)計思想,提出合適的軟件工程策略。反之,一個軟件工程策略,也不可避免的也會影響到架構(gòu)設(shè)計的特點。
上述討論引發(fā)了三個核心思維,一個是架構(gòu)設(shè)計的源泉來自于需求分析,第二個是架構(gòu)設(shè)計重心和特點來自于質(zhì)量需求(非功能性需求),第三個觀點是,架構(gòu)整體特征應該考慮項目管理特征。
因此,軟件架構(gòu)設(shè)計是一個系統(tǒng)工程,它需要系統(tǒng)構(gòu)架師有很寬的知識面,從需求分析、架構(gòu)設(shè)計到類設(shè)計甚至代碼實現(xiàn)一直到項目管理都需要有透徹的理解,這之間的關(guān)系是你中有我我中有你,是不可能截然分開的。必須說明,軟件系統(tǒng)設(shè)計的方法不是一個僵化的規(guī)則,關(guān)鍵是在實踐中實事求是的摸索規(guī)律,從而找出符合實際達到要求的設(shè)計來。
相關(guān)推薦:
系統(tǒng)架構(gòu)師與產(chǎn)品經(jīng)理、項目經(jīng)理有什么區(qū)別?
一個優(yōu)秀系統(tǒng)架構(gòu)設(shè)計師需要具備哪些條件?
我們?yōu)槭裁匆獔罂枷到y(tǒng)架構(gòu)師考試?
一個系統(tǒng)架構(gòu)設(shè)計師的成長之路
軟考備考資料免費領(lǐng)取
去領(lǐng)取