国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

軟件的架構與設計模式之什么是架構

2019-11-17 04:42:20
字體:
來源:轉載
供稿:網友
什么是軟件系統的架構(Architecture)?一般而言,架構有兩個要素:·它是一個軟件系統從整體到部分的最高層次的劃分。
一個系統通常是由元件組成的,而這些元件如何形成、相互之間如何發生作用,則是關于這個系統本身結構的重要信息。具體地說,就是要包括架構元件(Architecture Component)、聯結器(Connector)、任務流(Task-flow)。所謂架構元素,也就是組成系統的核心"磚瓦",而聯結器則描述這些元件之間通訊的路徑、通訊的機制、通訊的預期結果,任務流則描述系統如何使用這些元件和聯結器完成某一項需求。·建造一個系統所作出的最高層次的、以后難以更改的,商業的和技術的決定。在建造一個系統之前會有很多的重要決定需要事先作出,而一旦系統開始進行具體設計甚至建造,這些決定就很難更改甚至無法更改。顯然,這樣的決定必定是有關系統設計成敗的最重要決定,必須經過非常慎重的研究和考察。計算機軟件的歷史開始于五十年代,歷史非常短暫,而相比之下建筑工程則從石器時代就開始了,人類在幾千年的建筑設計實踐中積累了大量的經驗和教訓。建筑設計基本上包含兩點,一是建筑風格,二是建筑模式。獨特的建筑風格和恰當選擇的建筑模式,可以使一個獨一無二。下面的照片顯示了中美洲古代瑪雅建筑,Chichen-Itza大金字塔,九個巨大的石級堆壘而上,九十一級臺階(象征著四季的天數)奪路而出,塔頂的神殿聳入云天。所有的數字都如日歷般嚴謹,風格雄渾。難以想象這是石器時代的建筑物。
軟件的架構與設計模式之什么是架構(圖一)
圖1、位于墨西哥Chichen-Itza(在瑪雅語中chi意為嘴chen意為井)的古瑪雅建筑。(攝影:作者)軟件與人類的關系是架構師必須面對的核心問題,也是自從軟件進入歷史舞臺之后就出現的問題。與此類似地,自從有了建筑以來,建筑與人類的關系就一直是建筑設計師必須面對的核心問題。英國首相丘吉爾說,我們構造建筑物,然后建筑物構造我們(We shape our buildings, and afterwards our buildings shape us)。英國下議院的會議廳較狹窄,無法使所有的下議院議員面向同一個方向入座,而必須分成兩側入座。丘吉爾認為,議員們入座的時候自然會選擇與自己政見相同的人同時入座,而這就是英國政黨制的起源。Party這個詞的原意就是"方"、"面"。政黨起源的要害就是建筑物對人的影響。在軟件設計界曾經有很多人認為功能是最為重要的,形式必須服從功能。與此類似地,在建筑學界,現代主義建筑流派的開創人之一Louis Sullivan也認為形式應當服從于功能(Forms follows function)。幾乎所有的軟件設計理念都可以在浩如煙海的建筑學歷史中找到更為遙遠的歷史回響。最為聞名的,當然就是模式理論和XP理論。架構的目標是什么正如同軟件本身有其要達到的目標一樣,架構設計要達到的目標是什么呢?一般而言,軟件架構設計要達到如下的目標:·可靠性(Reliable)。軟件系統對于用戶的商業經營和治理來說極為重要,因此軟件系統必須非常可靠。·安全行(Secure)。軟件系統所承擔的交易的商業價值極高,系統的安全性非常重要。·可擴展性(Scalable)。軟件必須能夠在用戶的使用率、用戶的數目增加很快的情況下,保持合理的性能。只有這樣,才能適應用戶的市場擴展得可能性。 ·可定制化(Customizable)。同樣的一套軟件,可以根據客戶群的不同和市場需求的變化進行調整。·可擴展性(Extensible)。在新技術出現的時候,一個軟件系統應當答應導入新技術,從而對現有系統進行功能和性能的擴展·可維護性(Maintainable)。軟件系統的維護包括兩方面,一是排除現有的錯誤,二是將新的軟件需求反映到現有系統中去。一個易于維護的系統可以有效地降低技術支持的花費
·客戶體驗(Customer Experience)。軟件系統必須易于使用。·市場時機(Time to Market)。軟件用戶要面臨同業競爭,軟件提供商也要面臨同業競爭。以最快的速度爭奪市場先機非常重要。架構的種類根據我們關注的角度不同,可以將架構分成三種:·邏輯架構、軟件系統中元件之間的關系,比如用戶界面,數據庫,外部系統接口,商業邏輯元件,等等。比如下面就是筆者親身經歷過的一個軟件系統的邏輯架構圖
軟件的架構與設計模式之什么是架構(圖二)
圖2、一個邏輯架構的例子從上面這張圖中可以看出,此系統被劃分成三個邏輯層次,即表象層次,商業層次和數據持久層次。每一個層次都含有多個邏輯元件。比如WEB服務器層次中有Html服務元件、session服務元件、安全服務元件、系統治理元件等。·物理架構、軟件元件是怎樣放到硬件上的。比如下面這張物理架構圖描述了一個分布于北京和上海的分布式系統的物理架構,圖中所有的元件都是物理設備,包括網絡分流器、代理服務器、WEB服務器、應用服務器、報表服務器、整合服務器、存儲服務器、主機等等。
軟件的架構與設計模式之什么是架構(圖三)
圖3、一個物理架構的例子·系統架構、系統的非功能性特征,如可擴展性、可靠性、強壯性、靈活性、性能等。系統架構的設計要求架構師具備軟件和硬件的功能和性能的過硬知識,這一工作無疑是架構設計工作中最為困難的工作。此外,從每一個角度上看,都可以看到架構的兩要素:元件劃分和設計決定。 首先,一個軟件系統中的元件首先是邏輯元件。這些邏輯元件如何放到硬件上,以及這些元件如何為整個系統的可擴展性、可靠性、強壯性、靈活性、性能等做出貢獻,是非常重要的信息。其次,進行軟件設計需要做出的決定中,必然會包括邏輯結構、物理結構,以及它們如何影響到系統的所有非功能性特征。這些決定中會有很多是一旦作出,就很難更改的。根據作者的經驗,一個基于數據庫的系統架構,有多少個數據表,就會有多少頁的架構設計文檔。比如一個中等的數據庫應用系統通常含有一百個左右的數據表,這樣的一個系統設計通常需要有一百頁左右的架構設計文檔。 架構師軟體設計師中有一些技術水平較高、經驗較為豐富的人,他們需要承擔軟件系統的架構設計,也就是需要設計系統的元件如何劃分、元件之間如何發生相互作用,以及系統中邏輯的、物理的、系統的重要決定的作出。這樣的人就是所謂的架構師(Architect)。在很多公司中,架構師不是一個專門的和正式的職務。通常在一個開發小組中,最有經驗的程序員會負責一些架構方面的工作。在一個部門中,最有經驗的項目經理會負責一些架構方面的工作。但是,越來越多的公司體認到架構工作的重要性,并且在不同的組織層次上設置專門的架構師位置,由他們負責不同層次上的邏輯架構、物理架構、系統架構的設計、配置、維護等工作。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 浏阳市| 衡阳县| 大化| 乌拉特中旗| 来凤县| 长丰县| 平邑县| 武功县| 沧源| 武威市| 高雄县| 扎兰屯市| 三河市| 大邑县| 农安县| 富宁县| 青浦区| 湘阴县| 宝鸡市| 吴江市| 长岛县| 东兰县| 霞浦县| 三明市| 隆安县| 六枝特区| 陕西省| 恩平市| 阳信县| 辰溪县| 天门市| 嘉祥县| 和林格尔县| 攀枝花市| 富平县| 黔南| 辽阳县| 嘉定区| 平遥县| 文安县| 赤水市|