漫談「模式驅動架構」 (二)

CIM - PIM - PSM 樣式

在「漫談模式驅動架構」(一)中我們談到,OMG將MDA建構成CIM-PIM-PSM樣式,程式則由PSM轉換(transformation)而成,這是依照一種較合宜而方便的觀點(viewpoints)所形成的樣式,事實上MDA卻允許有其他的觀點,而產生其他的樣式,但CIM-PIM-PSM樣式的重點在於其提供「事務分離」的概念,因此我們仍然以大家接受的OMG樣式來漫談 ,實際運作時,該樣式可以延伸成CIM-PIM-PSM-Code 。

何謂CIM,CIM有時稱為「範疇模式」(domain model)或「業務模式」(business model),用來描述業務系統,但本身並非軟體,這個模式表示系統的關鍵需求,以及描述問題範疇的字彙(vocabulary),但不涉及系統的細節,一般物件導向系統分析方法就可用來建構這個模式,PIM就是依據這個模式而產生。

PIM是表示業務邏輯(business logic)的模式,這個模式顯示系統的工作內容,但不涉及與任何特殊技術平台(technology platform)的關係,如EJB,.NET或關聯性資料庫等,PIM類似OOA的分析模式(analysis model)但更為詳盡完整,每一種業務只有一種PIM。至於PSM則結合PIM所擬定的規格來顯示系統將如何在特殊技術平台上實作,因此它是由PIM轉換而來,程式則由PSM轉換而得。PIM,PSM與程式之間的轉換可以用人工,但一般皆使用MDA工具來擔任,因人工不但費時而且可能出錯。在此我們引用Booch等人的所謂「MDA宣言」(The MDA Manifesto)來支持這個觀點,宣言有三點:(1) Direct representation; (2) Automation; (3) Open standards,因篇幅關係我們不在此地詳談這三點宣言,因為自動化涉及MDA的運用甚巨,因此我們希望強調第(2)點 - 自動化轉換。以上說明對於不熟悉物件導向軟體工程的人士可能較為抽象,也許下圖(雖然不很完整)可以協助了解MDA的運作方式:

(點圖形放大)

圖中我們同時將MDA與傳統的發展過程做比較,兩者之間的生命週期差異不大,但MDA主要特點在於 PIM->PSM->Code的自動化轉換,保養是在PIM而不是程式,PIM是唯一代表業務邏輯的模式,可以轉換成多種PSM與程式模式(對MDA而言,程式也是一種模式),這項特點影響到:
  • 發展者只要發展PIM而非撰寫程式,以提升生產力
  • 因保養在高抽象層次的PIM,因此保養較易
  • 加速反覆與漸增(iterative and incremental)週期,符合敏捷方法的概念
  • 因為改變模式相當於改變軟體,因此MDA方法可支持「敏捷軟體發展」(agile software development),(我們將在下期漫談敏捷MDA)

當然自動化模式轉換須仰賴MDA工具,讀者如果想知道世界上有那些公司提供MDA工具,以及那些單位使用MDA成功的範例,可查看OMG的網站(http://www.omg.org/mda)。

留言

這個網誌中的熱門文章

CMMI是什麼?

TCSE 2017

加油站與小鎮