微軟使用SOA成熟度模型(SOAMM)來評估客戶的SOA現狀,并在實現SOA所承諾交付的業務靈活性的過程中,把它作為一份路線圖。SOAMM的基礎是CMM,SOAMM包含了成熟度依次遞增的4個級別:
- 基本的
- 標準化的
- 高級的
- 動態的
SOAMM包含了36個技術無關的能力,它可以讓你知道,為了實現面向服務方法的價值,你的IT系統“哪些是可以實現的”和“哪些是必須實現的”。該模型是微軟產品團隊、技術布道者和我們的客戶共同努力的結晶,是以我們的全球最佳實踐為基礎的。
LRcV.jpg" _href="img://soamm.jpg">
這些能力被分成三個視角:
服務實現
這個模型視角描述了企業在構建和提供服務過程中,為實現高效的最佳實踐和模式所需具備的能力。這些能力的獲得將增強和優化企業業務服務和系統服務的設計和開發。
服務消費
這個模型視角描述了企業為有效采用和促進服務使用所需具備的能力。這個能力為支持和增強他人消費企業服務提供了基礎。
服務管理
這個模型視角描述了企業為支持跨組織治理和服務運營所需具備的能力。
你當然可以為你的SOA項目選擇3級或4級中的能力,但要是缺乏適當的1級和2級相關基礎,你構建的系統有可能是站不住腳的——有朝一日,你的服務架構將被迫為了和推薦實踐保持一致而進行重大調整和重寫。
基本成熟度級別
研究表明,大約有82%的公司處于這個SOA成熟度級別。但不要因為你的成熟度級別處于“基本級”而感到沮喪,當你剛開始你的SOA工作或只有少量服務時,處于這個級別是完全合理的。
明確的契約:
這個消費能力的基礎是四個經典SOA原則中的一個:“服務必須共享模式和契約,而不是實現”。服務的契約和模式(消息和數據)必須基于SOA系統意欲支持的業務能力和相關業務文檔。契約永遠都不應該僅僅是對于某種基于RPC的對象模型的簡單封裝,而應像那篇InfoQ文章中所描述的,使用面向服務的消息 ——其基礎是使用邏輯數據模型的服務接口。
這個基本能力是一個起點,我推薦“使用標準化的契約設計策略和公共信息模型(參見‘設計模式’,‘統一契約’,‘公共實體’,‘可消費的類型系統’)”快速發展到這一點。
服務識別(籌劃服務):
這個消費能力是標準化成熟度級別“服務的可發現性”能力的簡單變種,即一般是通過手工方式將服務元數據分發給潛在消費者。
正如我們在那篇InfoQ文章中已經討論過的,服務的可發現性是服務組合的核心。服務元數據由兩部分組成:機器可讀元數據和其他相關信息,如服務描述和SLA。這兩種元數據都必須服從在那篇版本管理文章中描述的版本管理策略。
注意,面向服務建模的設計任務服務識別是“服務邊界”能力的一部分。
服務邊界:
這個消費能力的實際內容是,業務流程建模和領域驅動設計建模技術,將業務能力按服務分門別類,以達成服務的可發現性和重用。它的內涵是,促使潛在消費者通過契約元數據來辨別最符合它們需要的服務和能力。
已識別的服務邊界(領域)應該跟服務模型和數據模型結合起來,使它們發展成標準化的服務契約(參見“企業治理”,“統一契約”,“公共實體”,“可消費的類型系統”)。
為了和Thomas Erl的經典著作《服務設計的SOA原則》中所描述的“服務松耦合”原則保持一致,這個能力的類別被劃為消費而非實現。這個最佳實踐的內涵是:避免服務接口和模式與底層實現和技術之間發生緊耦合。這一原則也強烈暗示了“契約優先”的設計方法是首選方法。
開發過程的效率:
所推薦的契約設計策略支持這個能力(在SOAMM圖中由虛線橢圓標出)。
設計、實現和演變服務的過程必須遵循定義良好的、由合適工具支持的軟件開發生命周期(SDLC)。SDLC模型必須從一開始引入,隨著成熟度級別的提高,它將從其他SOA能力定義的指導方針和策略中獲益(參見“設計模式”)。
由于其他能力的演變會提高開發過程的效率,因而需要對這個基本能力進行重新考慮。比如,為提供所需業務能力而投入設計、實現和部署新服務操作的時間和精力,將因擁有標準化的契約設計指導方針、公共信息模型、服務抽象和松耦合的策略,以及定義良好的測試和部署過程而獲益。
文章來源于領測軟件測試網 http://www.anti-gravitydesign.com/