架構(gòu)設(shè)計(jì)系列文章,請參見連接。
背景
對于架構(gòu)的價(jià)值的認(rèn)知代表著公司會(huì)在技術(shù)方面投入多少資源。而很多公司之所以選擇在業(yè)務(wù)創(chuàng)新上大做文章而不是在技術(shù)上做創(chuàng)新,其實(shí)也代表著在國內(nèi)做技術(shù)的種種尷尬之處。從事業(yè)務(wù)創(chuàng)新也不代表技術(shù)投入沒有價(jià)值,不過需要讓大家認(rèn)知到技術(shù)與業(yè)務(wù)應(yīng)該怎樣權(quán)衡成為了一個(gè)很難的問題。
作者以多年從事軟件行業(yè)經(jīng)驗(yàn)來看,業(yè)務(wù)和技術(shù)需要得到一個(gè)比較好的平衡點(diǎn)。任何一方占據(jù)上方那整個(gè)項(xiàng)目/產(chǎn)品就會(huì)滑向深淵。所以,在這里強(qiáng)調(diào)架構(gòu)的價(jià)值成為平衡技術(shù)和業(yè)務(wù)的天平的一個(gè)重要事項(xiàng)。
對于架構(gòu)在天平上的作用來說,架構(gòu)需要每個(gè)人都需要可以理解。這樣才能夠讓人們真正的理解架構(gòu),并能夠深入理解技術(shù)人員的努力。達(dá)到最大的溝通效果也是架構(gòu)的一個(gè)重要目標(biāo)。
價(jià)值
最近在學(xué)習(xí)架構(gòu)知識(shí)的時(shí)候找到了一個(gè)叫做IASA(International Association for Software Architects,國際軟件架構(gòu)師協(xié)會(huì))的組織。這個(gè)組織提出作為系統(tǒng)架構(gòu)師基礎(chǔ)的起源和演進(jìn)“架構(gòu)的五大基礎(chǔ)”,包括了解企業(yè)的技術(shù)戰(zhàn)略、IT 背景、質(zhì)量因素、設(shè)計(jì)技能和人員能動(dòng)性這五大基礎(chǔ)。所以這個(gè)提供了更好的學(xué)習(xí)路徑。
下圖是在IASA中一篇介紹架構(gòu)價(jià)值的文章中摘取的:

從各種方向上給出了解釋架構(gòu)的價(jià)值,在IASA中架構(gòu)師
架構(gòu)意義
以下是《系統(tǒng)架構(gòu)師教程》中關(guān)于架構(gòu)重要性的描述:
軟件架構(gòu)是降低成本、改進(jìn)質(zhì)量、按時(shí)和按需交付產(chǎn)品的關(guān)鍵因素。
架構(gòu)設(shè)計(jì)能夠滿足系統(tǒng)的品質(zhì)
系統(tǒng)的功能性是軟件架構(gòu)師通過組成體系架構(gòu)的多種元素之間的交互作用來支持的。架構(gòu)設(shè)計(jì)用于實(shí)現(xiàn)系統(tǒng)的品質(zhì),如性能、安全性和可維護(hù)性等。通過架構(gòu)設(shè)計(jì)文檔化,可以盡早的評估項(xiàng)目的這些品質(zhì)。架構(gòu)設(shè)計(jì)使受益人達(dá)成一致的目標(biāo)
架構(gòu)設(shè)計(jì)的過程使得不同的受益人達(dá)成一致的目標(biāo),體系結(jié)構(gòu)的過程需要確保架構(gòu)設(shè)計(jì)被清楚地傳達(dá)與理解。一個(gè)被有效傳達(dá)的體系架構(gòu)使得涉眾們可以辯論決議和權(quán)衡,反復(fù)討論,最終達(dá)成共識(shí)。文檔化體系架構(gòu)是非常重要的,這是軟件架構(gòu)師的主要職責(zé)。架構(gòu)設(shè)計(jì)能夠支持計(jì)劃編制過程
架構(gòu)設(shè)計(jì)將確定組建之間的依賴關(guān)系,直接支持項(xiàng)目計(jì)劃和項(xiàng)目管理的活動(dòng),例如:細(xì)節(jié)劃分,日程安排,工作分配,成本分析,風(fēng)險(xiǎn)管理和技能開發(fā)等;架構(gòu)師還能協(xié)助估算項(xiàng)目成本,例如,體系架構(gòu)決定使用第三方組建的成本,例如,體系結(jié)構(gòu)決定使用第三方組建的成本,以及支持開發(fā)的所有工具的成本;架構(gòu)師支持技術(shù)風(fēng)險(xiǎn)的管理,包括指定每一個(gè)風(fēng)險(xiǎn)的優(yōu)先次序,以及確定一個(gè)恰當(dāng)?shù)娘L(fēng)險(xiǎn)緩解策略。架構(gòu)設(shè)計(jì)對系統(tǒng)開發(fā)的指導(dǎo)性
架構(gòu)設(shè)計(jì)主要目標(biāo)就是確保體系架構(gòu)能夠?yàn)樵O(shè)計(jì)人員和實(shí)現(xiàn)人員所承擔(dān)的工作提供可靠的框架。很明顯,這筆簡單的傳送一個(gè)體系架構(gòu)視圖要復(fù)雜多。為了確保最終體系架構(gòu)完整性,架構(gòu)師必須明確的定義體系機(jī)構(gòu),因?yàn)樗_定了體系架構(gòu)的重要元素,例如系統(tǒng)的組件,組件之間的接口以及組件之間的通信。
架構(gòu)師同時(shí)還必須定義恰當(dāng)?shù)臉?biāo)準(zhǔn)和指導(dǎo)方針,他們將會(huì)引導(dǎo)設(shè)計(jì)人員和實(shí)現(xiàn)人員的工作,對開發(fā)過程活動(dòng)采取恰當(dāng)?shù)募軜?gòu)回顧和評估,能夠確保體系架構(gòu)的完整性。這些QA(Quality Assurance,質(zhì)量保證)活動(dòng)的任務(wù)是確定體系架構(gòu)的標(biāo)準(zhǔn)和指導(dǎo)方針的有效性。架構(gòu)設(shè)計(jì)能夠有效的管理復(fù)雜性
如今的系統(tǒng)越來越復(fù)雜,這種復(fù)雜性需要我們?nèi)ス芾?。體系架構(gòu)通過構(gòu)件及構(gòu)件之間關(guān)系,描述了一個(gè)抽象的系統(tǒng),因而提供了高層次的復(fù)雜管理的方法。同樣,架構(gòu)設(shè)計(jì)過程考慮組件的遞歸分解。這是處理一個(gè)大的問題是很好的一個(gè)方法,它可以把這個(gè)大問題分解成很多的小問題,在逐個(gè)的解決。架構(gòu)設(shè)計(jì)為復(fù)用奠定了基礎(chǔ)
架構(gòu)設(shè)計(jì)過程可以同時(shí)支持使用和建立復(fù)用資源。復(fù)用資源可以降低一個(gè)系統(tǒng)的成本,并且可以改進(jìn)系統(tǒng)的質(zhì)量,這些好處已經(jīng)被證明。一個(gè)體系架構(gòu)的建立,能夠支持大粒度的資源服用。例如,體系架構(gòu)的重要組件和他們之間的接口和質(zhì)量,能夠支持現(xiàn)貨供應(yīng)的組件,存在的系統(tǒng)和封裝的應(yīng)用程序等的選擇,從而可以用來實(shí)現(xiàn)這些組件。架構(gòu)設(shè)計(jì)能夠降低維護(hù)費(fèi)用
架構(gòu)設(shè)計(jì)過程可以在很多方面幫助我們降低維護(hù)費(fèi)用。首先最重要的是架構(gòu)設(shè)計(jì)過程要確保系統(tǒng)的維護(hù)人員是一個(gè)主要的涉眾,并且他們的需求被作為首要的任務(wù)滿足。一個(gè)被且當(dāng)?shù)南到y(tǒng)維護(hù)機(jī)制,并且在建立體系架構(gòu)的時(shí)候還要考慮系統(tǒng)的適應(yīng)性和可擴(kuò)充性。架構(gòu)設(shè)計(jì)能夠支持沖突分析
架構(gòu)設(shè)計(jì)的一個(gè)重要的好處是它可以允許我們在采取改變之前判斷它所產(chǎn)生的影響。一個(gè)軟件架構(gòu)確定了主要的組件和它們之間的交互作用,兩個(gè)組件之間的依賴性以及這些組件對于需求的可追溯性。有了這個(gè)信息,例如需求的改變等可以通過組件的影響來分析。同樣的,改變一個(gè)組件的影響可以在依靠它的其他組件上分析出來。
這些描述中可以分為幾類:溝通類,計(jì)劃類,技術(shù)類。溝通類主要說明可以與各利益相關(guān)方建立統(tǒng)一的共識(shí),可以協(xié)調(diào)各方達(dá)成最終的一致性。計(jì)劃類主要為架構(gòu)的實(shí)施落地起到計(jì)劃與指導(dǎo)的作用。技術(shù)類是為技術(shù)提供更好的底層框架,可以是所有的非功能性需求。
總結(jié)
架構(gòu)是對于溝通,計(jì)劃,技術(shù)的一個(gè)統(tǒng)一過程。架構(gòu)所起到的作用就所有人的目標(biāo),認(rèn)識(shí)達(dá)成一致。
參考:
演講: 來自IASA的觀點(diǎn)——系統(tǒng)架構(gòu)的五大基礎(chǔ)
The Value of Architecture
Who Needs an Architect?
譯文 | 為什么軟件架構(gòu)如此重要?
學(xué)阿里中臺(tái),80%的人只學(xué)到了皮毛!揭秘阿里中臺(tái)的12個(gè)架構(gòu)思維和原則