.NET企業(yè)級(jí)架構(gòu)解決方案:架構(gòu)師和架構(gòu)
引言
在計(jì)算機(jī)的早期,大概是1960年左右,硬件的花費(fèi)在軟件之上,是占主導(dǎo)地位的。40年之后,我們發(fā)現(xiàn)情況發(fā)生了極大的變化。因?yàn)楣I(yè)的進(jìn)步,硬件的成本急劇的下降。另一方面,軟件開發(fā)的成本因?yàn)閭€(gè)性化企業(yè)級(jí)應(yīng)用開發(fā)的復(fù)雜性而急劇上升。對(duì)公司來說,便宜的硬件使得為他們的信息系統(tǒng)增加越來越多的功能是值得的。最初一些獨(dú)立的系統(tǒng),相互之間沒有連接,也很少會(huì)共享數(shù)據(jù),在多年之后,變成了復(fù)雜的系統(tǒng),功能和模塊之間相互連接。
這種情況創(chuàng)造了一個(gè)需求,在進(jìn)行這樣的系統(tǒng)設(shè)計(jì)的時(shí)候,需要一系列的規(guī)范來指導(dǎo)工程師。
從建筑行業(yè)借用過來,“架構(gòu)”一詞用來描述計(jì)劃、設(shè)計(jì)、實(shí)現(xiàn)軟件系統(tǒng)的技能,是合適的。然而,在軟件開發(fā)中,架構(gòu)不像在建筑行業(yè)中需要那么多的藝術(shù)性質(zhì)。設(shè)計(jì)良好的建筑對(duì)眼睛和功能來說,是令人愉快的。軟件架構(gòu)在主觀方面會(huì)少一點(diǎn)。
正文
1、什么是軟件架構(gòu)
“架構(gòu)"一詞最初被用于軟件工業(yè)中,是表達(dá)在進(jìn)行代碼開發(fā)之前需要計(jì)劃和設(shè)計(jì)。但是,在架構(gòu)一個(gè)可用的軟件系統(tǒng)和架構(gòu)一個(gè)適于居住的建筑之間還是有本質(zhì)的區(qū)別的。
很明顯的,在架構(gòu)建筑的過程中,我們會(huì)考慮建筑是否會(huì)砸到人。但是在軟件中,通常有大量的金錢可以改寫一個(gè)架構(gòu)。在建筑業(yè)中,設(shè)計(jì)一定要以極其詳細(xì)的計(jì)算和藍(lán)圖為基礎(chǔ),才能完成。在軟件開發(fā)中,你可能會(huì)傾向于更加敏捷。在十幾年前,預(yù)先設(shè)計(jì)的方法在軟件行業(yè)也是非常普遍和流行的。但是,十幾年過去了,這種方法增加了開發(fā)成本。因?yàn)樵诓渴鹬埃浖梢赃M(jìn)行高效和安全的測(cè)試,相比預(yù)先設(shè)計(jì),敏捷占了上風(fēng)。
今天,建筑行業(yè)的架構(gòu)和軟件行業(yè)的架構(gòu)已經(jīng)不像很多年前那么相似了。在很多字典中,軟件架構(gòu)被描述為:在一個(gè)計(jì)算機(jī)系統(tǒng)中,組合、整合、多個(gè)組件之間的聯(lián)系。但是,他還是比較抽象的。
軟件行內(nèi)人通常會(huì)接受另一個(gè)解釋:將系統(tǒng)分解為很多小塊,然后放在環(huán)境中。
2、誰是架構(gòu)師
架構(gòu)設(shè)計(jì)基于對(duì)需求的分析。分析可以確定系統(tǒng)需要做什么,架構(gòu)可以確定如何做。架構(gòu)師是需求和詳細(xì)設(shè)計(jì)之間的紐帶,但是架構(gòu)師的職責(zé)是什么呢?需要哪些技能呢?
2.1架構(gòu)師的職責(zé)
根據(jù)ISO標(biāo)準(zhǔn)中定義,架構(gòu)師是對(duì)系統(tǒng)架構(gòu)負(fù)責(zé)的人、團(tuán)隊(duì)或者是組織。架構(gòu)師與分析人員和項(xiàng)目經(jīng)理相互配合,對(duì)系統(tǒng)評(píng)估和提出建議,協(xié)調(diào)一隊(duì)開發(fā)人員。
架構(gòu)師參與開發(fā)的整個(gè)過程,包括分析需求和架構(gòu)設(shè)計(jì)、代碼實(shí)現(xiàn)、測(cè)試、集成和部署。
主要的職責(zé)包括:
1)理解需求
在軟件項(xiàng)目中,在架構(gòu)師參與之前會(huì)發(fā)生一些其他事情。一群分析人員,IT部門的管理者,行政部門會(huì)開會(huì)、討論、評(píng)估、商量。一旦一個(gè)新系統(tǒng)的需求被確定下來,預(yù)算到位,分析人員就會(huì)基于自己的業(yè)務(wù)知識(shí)、企業(yè)的流程、環(huán)境和終端用戶的反饋引出典型的需求。
需求列表準(zhǔn)備好之后,項(xiàng)目經(jīng)理就會(huì)和架構(gòu)師碰頭,將需求交給架構(gòu)師,“這就是客戶想要的,你去構(gòu)建一下”。
架構(gòu)師理解需求,盡力在設(shè)計(jì)中滿足和采納它們。
2)分解系統(tǒng)
在需求的基礎(chǔ)上,架構(gòu)師將系統(tǒng)分解為多個(gè)子系統(tǒng)。在這種情況下,架構(gòu)師會(huì)展望一下邏輯層和服務(wù)層。然后基于環(huán)境,確定層之間的接口,和其它層之間的關(guān)系,系統(tǒng)需要的服務(wù)級(jí)別。
整體設(shè)計(jì)與企業(yè)的目標(biāo)和需求保持一致。在一些特殊地方,由需求來驅(qū)動(dòng)整體設(shè)計(jì),而不是整體設(shè)計(jì)領(lǐng)導(dǎo)需求。
架構(gòu)會(huì)包括一些通用的指導(dǎo)原則,要求最小化模塊之間的耦合,保持模塊的高內(nèi)聚,保證每一個(gè)模塊有一個(gè)清晰的職責(zé)。
架構(gòu)的結(jié)果還會(huì)滿足一些非功能的需求,例如:安全、伸縮性。最后架構(gòu)師還會(huì)指定一些戰(zhàn)略性的東西,例如:每一個(gè)開發(fā)者的任務(wù)、或者是團(tuán)隊(duì)的任務(wù),或者是子系統(tǒng)的組件。
3)確定和評(píng)估可用的技術(shù)
在理解了需求和設(shè)計(jì)了系統(tǒng)的層次之后,下一步就是用具體的技術(shù)和產(chǎn)品計(jì)劃邏輯組件。架構(gòu)師應(yīng)該清楚和項(xiàng)目有關(guān)的產(chǎn)品和技術(shù)的成本和好處。架構(gòu)師推薦一些對(duì)于項(xiàng)目來說,性價(jià)比較高的產(chǎn)品和技術(shù)。架構(gòu)師不決定技術(shù),只是以自己的知識(shí)為基礎(chǔ),推薦技術(shù)。
那么誰來決定使用架構(gòu)師推薦的那種技術(shù)呢?顯然是項(xiàng)目經(jīng)理,或者是預(yù)算的管理者。架構(gòu)師的建議可能被接受或者被否決。
4)明確詳細(xì)設(shè)計(jì)
架構(gòu)師最后的職責(zé)就是確定詳細(xì)設(shè)計(jì),詳細(xì)設(shè)計(jì)是架構(gòu)師和開發(fā)者進(jìn)行交流的結(jié)果。詳細(xì)設(shè)計(jì)可以以多種形式存在,UML圖、文檔、Viso圖,甚至是原型。溝通對(duì)于一個(gè)架構(gòu)師來說是至關(guān)重要的。溝通發(fā)生在架構(gòu)師和開發(fā)者之間,也發(fā)生在架構(gòu)師和項(xiàng)目經(jīng)理以及業(yè)務(wù)分析人員之間,但是不是和用戶。對(duì)架構(gòu)師來說,一個(gè)良好的技術(shù)就是語言清晰。
結(jié)論
架構(gòu)是一個(gè)被廣泛使用的詞匯,擁有相當(dāng)多的定義。
架構(gòu)設(shè)計(jì)從功能和非功能需求出發(fā),功能由業(yè)務(wù)分析員收集,架構(gòu)師理解。
原文標(biāo)題:用微軟.NET架構(gòu)企業(yè)解決方案 學(xué)習(xí)筆記(一)
鏈接:http://www.cnblogs.com/virusswb/archive/2010/08/05/architecture-microsoft-net-solution-1.html
【編輯推薦】