特性 可以動態更新的Active Directory
架構 。
應用程式 可以使用新的屬性和類擴展該
架構 ,並能立刻使用該擴展。通過在Active Directory 中創建或修改存儲在 Active Directory 中的
架構 對象 來完成架構的更新。與Active Directory 中的所有
對象 一樣,架構對象能
訪問控制列表 ,因此只有授權的用戶才可以更改架構。
軟體架構 軟體構架 是一個容易理解的概念,多數工程師(尤其是經驗不多的工程師)會從直覺上來認識它,但要給出精確的定義很困難。特別是,很難明確地區分設計和構架:構架屬於設計的一方面,它集中於某些具體的特徵。
在“
軟體構架 簡介”中,David Garlan 和 Mary Shaw 認為
軟體構架 是有關如下問題的設計層次:“在計算的算法和
數據結構 之外,設計並確定系統整體結構成為了新的問題。結構問題包括總體組織結構和全局控制結構;通信、同步和數據訪問的協定;設計元素的功能分配;物理分布;設計元素的組成;定標與性能;備選設計的選擇。”
但構架不僅是結構。IEEE Working Group on
Architecture 把其定義為“系統在其環境中的最高層概念”。構架還包括“符合”系統完整性、經濟約束條件、審美
需求 和樣式。它並不僅注重對內部的考慮,而且還在系統的用戶環境和開發環境中對系統進行整體考慮,即同時注重對外部的考慮。
在
Rational Unified Process 中,
軟體系統 的構架(在某一給定點)是指系統重要
構件 的組織或結構,這些重要構件通過接口與不斷減小的構件與接口所組成的構件進行互動。
從和目的、主題、材料和結構的聯繫上來說,
軟體架構 可以和建築物的架構相比擬。一個
軟體架構師 需要有廣泛的軟體理論知識和相應的經驗來實施和管理軟體產品的高級設計。
軟體架構師 定義和設計軟體的模組化,模組之間的互動,用戶界面風格,對外接口方法,創新的設計特性,以及高層事物的
對象 操作、邏輯和流程。
一般而言,
軟體系統 的
架構 (Architecture)有兩個要素:
1.它是一個
軟體系統 從整體到部分的最高層次的劃分。一個系統通常是由元件組成的,而這些元件如何形成、相互之間如何發生作用,則是關於這個系統本身結構的重要信息。詳細地說,就是要包括
架構 元件(Architecture
Component )、聯結器(Connector)、任務流(Task-flow)。所謂
架構 元素,也就是組成系統的核心"磚瓦",而聯結器則描述這些元件之間通訊的路徑、通訊的機制、通訊的預期結果,任務流則描述系統如何使用這些元件和聯結器完成某一項
需求 。
2.建造一個系統所作出的最高層次的、以後難以更改的,商業的和技術的決定。在建造一個系統之前會有很多的重要決定需要事先作出,而一旦系統開始進行詳細設計甚至建造,這些決定就很難更改甚至無法更改。顯然,這樣的決定必定是有關
系統設計 成敗的最重要決定,必須經過非常慎重的研究和考察。
歷史 早在1960年代,諸如
E·W·戴克斯特拉 就已經涉及
軟體架構 這個概念了。自1990年代以來,部分由於在 Rational Software Corporation 和Microsoft內部的相關活動,
軟體架構 這個概念開始越來越流行起來。
卡內基梅隆大學和
加州大學 埃爾文分校在這個領域作了很多研究。
卡內基·梅隆大學 的Mary Shaw和David Garlan於1996年寫了一本叫做 Software Architecture perspective on an emerging discipline的書,提出了
軟體架構 中的很多概念,例如
軟體組件 、連線器、風格等等。
加州大學 埃爾文分校的
軟體 研究院所做的工作則主要集中於
架構 風格、架構描述語言以及動態架構。
計算機軟體 的歷史開始於五十年代,歷史非常短暫,而相比之下建築工程則從石器時代就開始了,人類在幾千年的建築設計實踐中積累了大量的經驗和教訓。建築設計基本上包含兩點,一是
建築風格 ,二是建築
模式 。獨特的建築風格和恰當選擇的建築
模式 ,可以使它成為一個獨一無二的建築。
下面的照片顯示了中美洲古代
瑪雅 建築,Chichen-Itza
大金字塔 ,九個巨大的石級堆壘而上,九十一級台階(象徵著四季的天數)奪路而出,塔頂的神殿聳入雲天。所有的數字都如日曆般嚴謹,風格雄渾。難以想像這是石器時代的建築物。
圖1位於
墨西哥 Chichen-Itza(在瑪雅語中chi意為嘴chen意為井)的古瑪雅建築。(攝影:作者)
軟體 與人類的關係是
架構師 必須面對的核心問題,也是自從軟體進入歷史舞台之後就出現的問題。與此類似地,自從有了建築以來,建築與人類的關係就一直是
建築設計師 必須面對的核心問題。英國首相
邱吉爾 說,我們構造建築物,然後建築物構造我們(We shape our buildings, and afterwards our buildings shape us)。
英國下議院 的會議廳較狹窄,無法使所有的下議院議員面向同一個方向入座,而必須分成兩側入座。邱吉爾認為,議員們入座的時候自然會選擇與自己政見相同的人同時入座,而這就是英國政黨制的起源。Party這個詞的原意就是"方"、"面"。政黨起源的關鍵就是建築物對人的影響。
圖1、古瑪雅建築
在
軟體設計 界曾經有很多人認為功能是最為重要的,形式必須服從功能。與此類似地,在建築學界,
現代主義建築 流派的開創人之一Louis Sullivan也認為形式應當服從於功能(Forms follows function)。
幾乎所有的軟體設計理念都可以在浩如煙海的建築學歷史中找到更為遙遠的歷史迴響。最為著名的,當然就是
模式 理論和
XP 理論。
設計目標 1.可靠性(Reliable)。
軟體系統 對於用戶的商業經營和管理來說極為重要,因此軟體系統必須非常可靠。
2.安全性(Secure)。
軟體系統 所承擔的交易的商業價值極高,系統的安全性非常重要。
3.可擴展性(Scalable)。
軟體 必須能夠在用戶的
使用率 、用戶的數目增加很快的情況下,保持合理的性能。只有這樣,才能適套用戶的市場擴展得可能性。
4.可定製化(Customizable)。同樣的一套
軟體 ,可以根據客戶群的不同和市場
需求 的變化進行調整。
5.可伸縮 (Extensible)。在新技術出現的時候,一個
軟體系統 應當允許導入新技術,從而對現有系統進行功能和性能的擴展。
6.可維護性(Maintainable)。
軟體系統 的維護包括兩方面,一是排除現有的錯誤,二是將新的
軟體需求 反映到現有系統中去。一個易於維護的系統可以有效地降低技術支持的花費。
7.客戶體驗(Customer Experience)。
軟體系統 必須易於使用。
8.市場時機(Time to Market)。
軟體 用戶要面臨同業競爭,軟體提供商也要面臨同業競爭。以最快的速度爭奪市場先機非常重要。
種類 根據我們關注的角度不同,可以將
架構 分成三種:
圖2、一個邏輯架構的例子 1.邏輯
架構 、
軟體系統 中元件之間的關係,比如用戶界面,
資料庫 ,外部系統接口,
商業邏輯 元件,等等。如圖是一個邏輯
架構 的例子 從上面這張圖中可以看出,此系統被劃分成三個邏輯層次,即表象層次,商業層次和數據持久層次。每一個層次都含有多個邏輯元件。比如
WEB伺服器 層次中有HTML服務元件、Session服務元件、安全服務元件、
系統管理 元件等。
圖3、一個物理架構的例子 3.系統架構、系統的非功能性特徵,如可擴展性、可靠性、強壯性、靈活性、性能等。系統
架構 的設計要求
架構師 具備
軟體 和硬體的功能和性能的過硬知識,這一工作無疑是
架構設計 工作中最為困難的工作。
此外,從每一個角度上看,都可以看到
架構 的兩要素:元件劃分和設計決定。首先,一個
軟體系統 中的元件首先是邏輯元件。這些邏輯元件如何放到硬體上,以及這些元件如何為整個系統的可擴展性、可靠性、強壯性、靈活性、性能等做出貢獻,是非常重要的信息。其次,進行
軟體設計 需要做出的決定中,必然會包括
邏輯結構 、
物理結構 ,以及它們如何影響到系統的所有非功能性特徵。這些決定中會有很多是一旦做出,就很難更改的。為了討論和分析
軟體構架 ,必須首先定義構架表示方式,即描述構架重要方面的方式。在 Rational Unified Process 中,
軟體構架 文檔記錄有這種描述。
我們決定以多種構架視圖來表示
軟體構架 。每種構架視圖針對於開發流程中的涉眾(例如最終用戶、設計人員、管理人員、
系統工程師 、維護人員等)所關注的特定方面。構架視圖顯示了
軟體構架 如何分解為
構件 ,以及構件如何由連線器連線來產生有用的形式 ,由此記錄主要的結構設計決策。這些設計決策必須基於
需求 以及功能、補充和其他方面的約束。而這些決策又會在較低層次上為
需求 和將來的設計決策施加進一步的約束。
構架由許多不同的構架視圖來表示,這些視圖本質上是以圖形方式來摘要說明“在構架方面具有重要意義”的模型元素。在 Rational Unified Process 中,您將從一個典型的視圖集開始,該視圖集稱為“4+1 視圖模型”。它包括:
用例視圖:包括
用例 和場景,這些用例和場景包括在構架方面具有重要意義的行為、類或技術風險。它是
用例模型 的子集。
邏輯視圖 :包括最重要的設計類、從這些設計類到包和
子系統 的組織形式,以及從這些包和子系統到層的組織形式。它還包括一些用例實現。它是
設計模型 的子集。
實施視圖 :包括
實施模型 及其從模組到包和層的組織形式的概覽。 同時還描述了將邏輯視圖中的包和類向實施視圖中的包和模組分配的情況。它是實施模型的子集。
進程視圖:包括所涉及任務(進程和
執行緒 )的描述,它們的互動和配置,以及將設計
對象 和類向任務的分配情況。只有在系統具有很高程度的並行時,才需要該視圖。在 Rational Unified Process 中,它是設計模型的子集。
配置視圖:包括對最典型的平台配置的各種物理節點的描述以及將任務(來自進程視圖)向物理節點分配的情況。只有在分散式系統中才需要該視圖。它是部署模型的一個子集。
構架視圖記錄在
軟體構架 文檔中。您可以構建其他視圖來表達需要特別關注的不同方面:用戶界面視圖、安全視圖、
數據視圖 等等。對於簡單系統,可以省略 4+1 視圖模型中的一些視圖。
雖然以上視圖可以表示系統的整體設計,但構架只同以下幾個具體方面相關: 模型的結構,即組織
模式 ,例如
分層 。
基本元素,即關鍵用例、主類、常用機制等,它們與模型中的各元素相對。
幾個關鍵場景,它們表示了整個系統的主要控制流程。
記錄模組度、可選特徵、產品線狀況的服務。
構架視圖在本質上是整體設計的抽象或簡化,它們通過捨棄具體細節來突出重要的特徵。在考慮以下方面時,這些特徵非常重要:
1.系統演進,即進入下一個開發周期。
2.在產品線環境下復用構架或構架的一部分。
3.評估補充質量,例如性能、可用性、可移植性和安全性。
6.插入範圍更廣的系統。
構架模式 構架
模式 是解決複雜構架問題的現成形式。構架
框架 或構架基礎設施(
中間件 )是可以在其上構建某種構架的
構件 集。許多主要的構架困難應在框架或基礎設施中進行解決,而且通常針對於特定的領域:命令和控制、
MIS 、控制系統等等。
根據構架
模式 最適用的系統的特徵將其分類,其中一個類別處理更普遍的結構問題。下表顯示了 【BUS96】 中所提供的類別和這些類別所包含的
模式 。
類別
模式
結構
層
管道和過濾器
黑板
分散式系統
代理
互動系統
模型-視圖-控制器
表示-抽象-控制
自適應系統
反射
微核
為闡明其含義,下面將詳述其中的兩個。完整說明請參見 【BUS96】。
模式 以下列廣泛使用的形式來表示:
模式 名、環境、問題、影響,描述應考慮的不同問題方面、解決方案、基本原理、結果環境、示例、
模式 名層、環境、需要進行結構分解的大系統、問題必須處理不同抽象層次的問題的系統。例如:硬體控制問題、常見服務問題和針對於不同領域的問題。最好不要編寫垂直
構件 來處理所有抽象層次的問題。否則要在不同的
構件 中多次處理相同的問題(可能會不一致)。
影響: 系統的某些部分應當是可替換的;
構件 中的變化不應波動;相似的責任應歸為一組;
構件 大小 -- 複雜構件可能要進行分解
解決辦法: 將系統分成
構件 組,並使構件組形成層疊結構。使上層只使用下層(決不使用上層)提供的服務。儘量不使用非緊鄰下層提供的服務(不跳層使用服務,除非
中間層 只添加通過
構件 )。
示例:
1. 通用層
嚴格的分層構架規定設計元素(類、
構件 、包、子系統)只能使用下層提供的服務, 服務可以包括
事件 處理、錯誤處理、資料庫訪問等等。 相對於記錄在底層的原始
作業系統 級調用,它包括更明顯的機制。
通用層 2. 業務系統層
右圖顯示了另一個分層示例,其中有垂直特定套用層、水平層和基礎設施層。注意:此處的目標是採用非常短的業務“煙囪”並實現各種套用
程式 間的通用性。 否則,就可能有多個人解決同一問題,從而導致潛在的分歧。
業務系統層 環境:沒有解決問題的確定方法(算法)或方法不可行的領域。例如
AI 系統、語音識別和監視系統。
問題:多個
問題解決 顧問(知識顧問)必須通過協作來解決他們無法單獨解決的問題。各顧問的工作結果必須可以供所有其他顧問訪問,使他們可以評估自己是否可以參與解決方案的查找並發布其工作結果。
影響:知識顧問參與解決問題的順序不是確定的,這可能取決於問題解決策略;不同顧問的輸入(結果或部分解決方案)可能有不同的表示方式;各顧問並不直接知道對方的存在,但可以評估對方發布的工作
解決辦法:多名知識顧問都可訪問一個稱為“黑板”的共享資料庫。黑板提供監測和更新其內容的接口。控制模組/
對象 激活遵循某種策略的顧問。激活後,顧問查看黑板,以確定它是否能參與解決問題。如果顧問決定它可以參與,控制
對象 就可以允許顧問將其部分(或最終)解決方案放置於黑板上。
示例:
以上顯示了使用
UML 建模的結構或靜態視圖。 它將成為參數化協作的一部分,然後會綁定到
實參 上對
模式 進行實例化。
使用 UML 建模的結構或靜態視圖 構架風格
軟體構架 (或僅是構架視圖)可以具有名為構架風格的屬性,該屬性減少了可選的形式,並使構架具有一定程度的一致性。樣式可以通過一組
模式 或通過選擇特定
構件 或連線器作為基本構件來定義。對給定系統,某些樣式可作為構架描述的一部分記錄在構架風格指南(Rational Unified Process 中設計指南文檔的一部分)中。樣式在構架的可理解性與完整性方面起著主要的作用。
構架設計圖 構架視圖的圖形描述稱為構架設計圖。對於以上描述的各種視圖,設計圖由以下
統一建模語言 圖組成 【UML99】: 邏輯視圖:
類圖 、
狀態機 和
對象圖 。
進程視圖:類圖與
對象 圖(包括任務 - 進程與執行緒)。
構架設計流程
在 Rational Unified Process 中,構架主要是分析設計
工作流 程的結果。當項目再次進行此工作流程時,構架將在一次又一次疊代中不斷演化、改進、精煉。由於每次疊代都包括集成和測試,所以在交付產品時,構架就相當強壯了。構架是精化階段各次疊代的重點,構架的
基線 通常會在此階段結束時確定。
架構師 軟體 設計師中有一些技術水平較高、經驗較為豐富的人,他們需要承擔
軟體系統 的
架構設計 ,也就是需要設計系統的元件如何劃分、元件之間如何發生相互作用,以及系統中邏輯的、物理的、系統的重要決定的做出。
這樣的人就是所謂的
架構師 (Architect)。在很多公司中,
架構師 不是一個專門的和正式的職務。通常在一個開發小組中,最有經驗的程式設計師會負責一些
架構 方面的工作。在一個部門中,最有經驗的項目經理會負責一些
架構 方面的工作。
但是,越來越多的公司團體認識到
架構 工作的重要性,並且在不同的組織層次上設定專門的
架構師 位置,由他們負責不同層次上的邏輯架構、物理架構、系統架構的設計、配置、維護等工作。
架構師分類