本文更新版本已挪至
-------------------------
今天花了乙個上午去書店看了一本關於企業架構方面的書籍:《企業精簡架構》(3星),這本書適合於架構師和cio閱讀,主要論述如何精簡企業架構,道理簡單,做起來很難。全書分為兩部分:第一部分,作者通過一些直觀的問題展示複雜性帶來的問題,接著從數學的角度進行分析;第二部分,討論解決複雜性問題的過程-簡單迭代分割(sip),下面把書中的一些主要內容給大家分享一下。
企業架構的目標是通過it投資獲取最大的商業價值,它是一種高層次的企業視野,聚焦與組織的it架構和業務架構之間。it系統如果不能滿足商業需求,那將是大大的浪費,而業務過程沒有相應的it支援,效率很難提高。《 enterprise architecture as strategy》一書的作者們說過,真正能夠有效利用企業架構的企業還不到5%,而企業架構又是如此重要,所以更有必要重視企業架構。
大多數企業架構師多多少少都有些方**的經驗,但是能夠在這個領域有很開闊視野的架構師卻為數不多,所以作者在書中介紹了一下目前最流行的zachman、togaf和fea,他覺得這些方**更確切地說是框架,並沒有很好的指導什麼是好架構、什麼是壞架構,又該如何做架構(注:togaf9
現在已經包含了一些指導和內容等框架,可以指導如何架構)。他認為好的架構應該是簡單的架構,也就是精簡架構,在第二部分也提出了乙個簡單迭代分割(sip)方法。
書中通過一些如硬幣正反面、骰子等直觀的示例,通過數學模型講解一下複雜性的原理:
c=pd(c-複雜性;p-每隔決定點的支路數;d-決定點的數目)
骰子有6個面,乙個骰子可以出6中不同組合,2個是36種,3個是216(63)種,12個是2176782336種,所以系統支援功能越多,每個功能之路數越多,系統就越複雜,可能成指數級的增長,所以需求人員不要以為只是增加了20%的功能量,但系統複雜度可能已經是指數級的增長了。書中還提到了增加桶的概念,其實就是分割槽的概念,把凌亂的物件按照邏輯劃分為不同分割槽,減少複雜性,如12個骰子放在兩個桶中,複雜度為2x66=93000,與612=2176782336複雜度相比不是乙個數量級的。
業務過程的複雜度與決定點的數目和那些決定點引出的路徑的數目有關。軟體系統的複雜度與變數的數目和那些變數的狀態數有關。無論是業務過程還是軟體系統,它們的複雜度都可以通過骰子系統來建模。在這個模型中,骰子的數目、每個骰子的面數,還有這些骰子是如果分割到幾個籃子裡的。
abc是企業構架的基本單位,它是乙個自治業務能力,是乙個業務單元,這些單元之間都是自治的,並且以一種定義好的方式互相作用。
abc模型簡化的整個業務模型:
模型因為簡化而收益,源於分割過程的結果
模型在處理問題時只關注abc做什麼,而不是怎麼做
簡化複雜性的三種主要方法:分割槽(分割)、迭代(執行子分割槽)和簡化(移走子分割槽、做減法)。
必須是正確的分割槽:分割出自治的子集abc
分割槽的定義必須是恰當的:功能必須分配到基於協作的等價關係的abc
合適的子分割槽數量(3-8個)
每隔子分割槽中的元素必須在集的數量和重要程度上大致相當
子分區間的相互影響必須最小化且明確定義,abc應該有夥伴關係
我們已經知道abc是企業構架的基本單位,那麼我們如何找到這些abc呢?sip是乙個找到這樣的過程。
評估準備
分割:從企業高層視角開始分割
簡化:業務功能是否需要?是否可以採取組合方式?非核心功能是否可以外包?
區分優先順序:價值圖分析
迭代:可以採用togaf等方法
書中說到互操作性的一些方法:
使用過程、方法呼叫
使用共享資料庫
使用共享資料訪問層
使用soa的互動操作
軟體城堡模型
系統a沒有任何部分封裝成web服務,而是讓外部的乙個叫做guard的實體實現web服務,guard代表外界與系統a進行互操作。外界與guard使用soa進行操作。
我用ppt畫了乙個示意圖:a、b是兩個abc自治子集
這些規則有點類似soa的規則,說起來簡單,做起來可難了!
參考:controllingcomplexity-3 sip.pdf
企業精簡架構
企業架構框架-togaf v0.1.pdf
周金根 [ ]
企業應用架構模式讀書筆記(一)
martin fowler這本 企業應用架構模式 應該是家喻戶曉了,買了也有些日子,一直沒有拿起來看,現在終於輪到了這本書。這本書大致分為兩部分,前8章為第乙個部分,對企業級開發要涉及的東西進行初步的介紹,然後還概括性的講解了一些模式的適用場景和優缺點。第二部分是模式的列表,這些模式的分類就是按照第...
《企業應用架構模式》讀書筆記 4
第九章 領域邏輯模型 坦白來講,這本書到目前為止,前9章都看了有2遍,有些可以理解,有些還是不能理解。領域邏輯模型這一章,對於書中的話 對於程式和例子,都可以明白,但對於思想 該怎麼使用還是似懂非懂。以前做桌面系統多一些,設計和編碼多用的是observer,adapter之類的模式 對於非桌面系統,...
軟體架構讀書筆記
我們自己不知不覺地設定了事物之間的界限,並把這些界限 層次與邏輯井然的東西稱為 系統 當我們從那些無序的事物中識別出了這樣的 系統 並用一些概念 名詞去定義了他們之後,我們對此的一切知識也就固化了。當這種秩序被建立起來之後,我們也就得到了對有序和無序價值的識別與肯否 當我們設定了種種價值 觀念 觀察...