將抽象層次應(yīng)用到 IT 解決方案
企業(yè)架構(gòu)師正受到其所面臨的大量復(fù)雜性的挑戰(zhàn)。開(kāi)發(fā)一個(gè)能夠自動(dòng)處理企業(yè)任務(wù)的獨(dú)立的部門應(yīng)用程序是一回事。而設(shè)計(jì)并組成一個(gè)支持上萬(wàn) IT 使用者的滿是應(yīng)用程序、服務(wù)器和數(shù)據(jù)庫(kù)(全都支持多種企業(yè)活動(dòng))的 IT 實(shí)驗(yàn)室全球網(wǎng)絡(luò),則完全是另外一回事。要組合這些復(fù)雜性,IT 網(wǎng)絡(luò)必須隨時(shí)可用、響應(yīng)迅速并保護(hù)企業(yè)寶貴的信息資產(chǎn)。除所有這些之外,IT 網(wǎng)絡(luò)還必須足夠靈活以支持企業(yè)永遠(yuǎn)變化的需要,并且采用出現(xiàn)的新技術(shù)。
一些架構(gòu)師在這種復(fù)雜性方面明顯非常出色,而且在不斷進(jìn)步。在我們的職業(yè)生涯中,能與一些真正偉大的分析師和架構(gòu)師并肩工作是非常幸運(yùn)的。反思這些經(jīng)驗(yàn),我們已經(jīng)分析出是什么造就了杰出的架構(gòu)師。
無(wú)一例外,所有偉大的架構(gòu)師都掌握了在截然不同的抽象層次上概念化解決方案的技能。通過(guò)將解決方案組織到離散的層次,架構(gòu)師可以將精力集中在解決方案的單個(gè)方面而忽略所有剩余的復(fù)雜性。他們一旦穩(wěn)定了解決方案的某個(gè)部分,接下來(lái)就能繼續(xù)處理其他方面,從而不斷地將層次發(fā)展并完善到最終可以被實(shí)現(xiàn)的粘合模型中。
大多數(shù)軟件開(kāi)發(fā)人員懂得應(yīng)該將解決方案分解到抽象層次。但是在實(shí)際的項(xiàng)目中,這是非常難于付諸實(shí)踐的。當(dāng)遇到第一個(gè)困難時(shí),在急于開(kāi)始編碼時(shí)是很容易放棄這些層次的。偉大的架構(gòu)師會(huì)經(jīng)受這些挑戰(zhàn)并在整個(gè)項(xiàng)目的生命周期中嚴(yán)格保持這些層次。他們意識(shí)到,如果不這樣做,最終將淹沒(méi)在復(fù)雜性中。
本文展示了將抽象層次應(yīng)用到 IT 解決方案的技術(shù)。首先,我們會(huì)通過(guò)一個(gè)簡(jiǎn)單的示例演示此方法,然后提出一個(gè)基于正式抽象層次的系統(tǒng)產(chǎn)品的結(jié)構(gòu)。
抽象層次:所有工程師的強(qiáng)大武器
其他的工程學(xué)科,比如土木工程師,幾個(gè)世紀(jì)以來(lái)一直利用抽象層次復(fù)制復(fù)雜性。讓我們學(xué)習(xí)一下其他更成熟的工程學(xué)科是如何應(yīng)用抽象層次的,就從電子工程師開(kāi)始吧,他們?cè)O(shè)計(jì)每次更新?lián)Q代都變得更加復(fù)雜的計(jì)算機(jī)系統(tǒng)。
硬件工程師
系統(tǒng)設(shè)計(jì)師使用抽象層次為計(jì)算機(jī)系統(tǒng)建模。每個(gè)層次都是定義完善的,并提供了該系統(tǒng)的一個(gè)不同角度。許多系統(tǒng)是在三個(gè)主要層次上設(shè)計(jì)的:系統(tǒng)、子系統(tǒng)和組件,如圖 1 所示。
分層使工程師能夠?qū)嫶髷?shù)量的復(fù)雜性集成到一個(gè)單一的工作計(jì)算機(jī)系統(tǒng)中。在其原子部分的層次上確切了解一臺(tái)計(jì)算機(jī)是不可能的。在單獨(dú)一塊 Intel Itanium_ 芯片上有大約 25,000,000 個(gè)晶體管。
對(duì) IT 相關(guān)學(xué)科來(lái)說(shuō),這種把復(fù)雜性分解到抽象層的方法當(dāng)然不是惟一的。類似的方法被用于從航空工程到微生物學(xué)的無(wú)數(shù)其他學(xué)科。
應(yīng)用抽象層次時(shí)的核心原則
所有工程師在應(yīng)用抽象層次時(shí)都遵循這套核心原則。當(dāng)把抽象層次應(yīng)用到軟件時(shí),這些原則也同樣適用。
這些層次的數(shù)量和范圍是定義完善的,以便工程師能夠在復(fù)雜的系統(tǒng)上協(xié)作,所有團(tuán)隊(duì)成員必須共享對(duì)層次的同一理解。只要設(shè)計(jì)師做出設(shè)計(jì)決定,他們必須將那些決定歸檔到相應(yīng)的細(xì)節(jié)層次。
企業(yè)架構(gòu)師正受到其所面臨的大量復(fù)雜性的挑戰(zhàn)。開(kāi)發(fā)一個(gè)能夠自動(dòng)處理企業(yè)任務(wù)的獨(dú)立的部門應(yīng)用程序是一回事。而設(shè)計(jì)并組成一個(gè)支持上萬(wàn) IT 使用者的滿是應(yīng)用程序、服務(wù)器和數(shù)據(jù)庫(kù)(全都支持多種企業(yè)活動(dòng))的 IT 實(shí)驗(yàn)室全球網(wǎng)絡(luò),則完全是另外一回事。要組合這些復(fù)雜性,IT 網(wǎng)絡(luò)必須隨時(shí)可用、響應(yīng)迅速并保護(hù)企業(yè)寶貴的信息資產(chǎn)。除所有這些之外,IT 網(wǎng)絡(luò)還必須足夠靈活以支持企業(yè)永遠(yuǎn)變化的需要,并且采用出現(xiàn)的新技術(shù)。
一些架構(gòu)師在這種復(fù)雜性方面明顯非常出色,而且在不斷進(jìn)步。在我們的職業(yè)生涯中,能與一些真正偉大的分析師和架構(gòu)師并肩工作是非常幸運(yùn)的。反思這些經(jīng)驗(yàn),我們已經(jīng)分析出是什么造就了杰出的架構(gòu)師。
無(wú)一例外,所有偉大的架構(gòu)師都掌握了在截然不同的抽象層次上概念化解決方案的技能。通過(guò)將解決方案組織到離散的層次,架構(gòu)師可以將精力集中在解決方案的單個(gè)方面而忽略所有剩余的復(fù)雜性。他們一旦穩(wěn)定了解決方案的某個(gè)部分,接下來(lái)就能繼續(xù)處理其他方面,從而不斷地將層次發(fā)展并完善到最終可以被實(shí)現(xiàn)的粘合模型中。
大多數(shù)軟件開(kāi)發(fā)人員懂得應(yīng)該將解決方案分解到抽象層次。但是在實(shí)際的項(xiàng)目中,這是非常難于付諸實(shí)踐的。當(dāng)遇到第一個(gè)困難時(shí),在急于開(kāi)始編碼時(shí)是很容易放棄這些層次的。偉大的架構(gòu)師會(huì)經(jīng)受這些挑戰(zhàn)并在整個(gè)項(xiàng)目的生命周期中嚴(yán)格保持這些層次。他們意識(shí)到,如果不這樣做,最終將淹沒(méi)在復(fù)雜性中。
本文展示了將抽象層次應(yīng)用到 IT 解決方案的技術(shù)。首先,我們會(huì)通過(guò)一個(gè)簡(jiǎn)單的示例演示此方法,然后提出一個(gè)基于正式抽象層次的系統(tǒng)產(chǎn)品的結(jié)構(gòu)。
抽象層次:所有工程師的強(qiáng)大武器
其他的工程學(xué)科,比如土木工程師,幾個(gè)世紀(jì)以來(lái)一直利用抽象層次復(fù)制復(fù)雜性。讓我們學(xué)習(xí)一下其他更成熟的工程學(xué)科是如何應(yīng)用抽象層次的,就從電子工程師開(kāi)始吧,他們?cè)O(shè)計(jì)每次更新?lián)Q代都變得更加復(fù)雜的計(jì)算機(jī)系統(tǒng)。
硬件工程師
系統(tǒng)設(shè)計(jì)師使用抽象層次為計(jì)算機(jī)系統(tǒng)建模。每個(gè)層次都是定義完善的,并提供了該系統(tǒng)的一個(gè)不同角度。許多系統(tǒng)是在三個(gè)主要層次上設(shè)計(jì)的:系統(tǒng)、子系統(tǒng)和組件,如圖 1 所示。
分層使工程師能夠?qū)嫶髷?shù)量的復(fù)雜性集成到一個(gè)單一的工作計(jì)算機(jī)系統(tǒng)中。在其原子部分的層次上確切了解一臺(tái)計(jì)算機(jī)是不可能的。在單獨(dú)一塊 Intel Itanium_ 芯片上有大約 25,000,000 個(gè)晶體管。
對(duì) IT 相關(guān)學(xué)科來(lái)說(shuō),這種把復(fù)雜性分解到抽象層的方法當(dāng)然不是惟一的。類似的方法被用于從航空工程到微生物學(xué)的無(wú)數(shù)其他學(xué)科。
應(yīng)用抽象層次時(shí)的核心原則
所有工程師在應(yīng)用抽象層次時(shí)都遵循這套核心原則。當(dāng)把抽象層次應(yīng)用到軟件時(shí),這些原則也同樣適用。
這些層次的數(shù)量和范圍是定義完善的,以便工程師能夠在復(fù)雜的系統(tǒng)上協(xié)作,所有團(tuán)隊(duì)成員必須共享對(duì)層次的同一理解。只要設(shè)計(jì)師做出設(shè)計(jì)決定,他們必須將那些決定歸檔到相應(yīng)的細(xì)節(jié)層次。