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