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