MDA續篇
從7月份起,我陸續發表了3+1篇有關MDA的介紹文章,其中+1這篇是:『利用「原型樣式」快速發展軟體』一文,對於這種快速發展軟體的方式可能一般人不太熟悉,但無妨。對於這幾篇MDA相關的文章,讀者反應卻十分冷淡,可能與文章的內容有關,其實我盡可能不談理論,只談一些觀念與技術。這一篇「MDA續篇」仍然不涉及太多的理論敘述,但仍然無法避免,我盡可能平述基本理論概念。我假設讀者已看過3+1等四篇文章,對於MDA的輪廓諒有所了解,這篇文章希望補充一點MDA的基本原理。 MDA的基本原理: 下圖顯示MDA之所以可用的原因。 (點選放大) 圖中,除CIM->PIM的轉換須依賴人工技巧之外,其他模式轉換通常可借助工具來作業 (註: M2M = Model-to-Model,M2C = Model-to-Code)。對於MDA而言,模式間的轉換有重要的意涵,就是在較高抽象層次(abstraction level)作分析,也就是建構PIM,設計的抽象層次較低,程式的產生更低,從高抽象層次轉換到低層次的作業則盡可能借助自動化工具(理由已如3+1文章內所述),例如M2M以及M2C則自動化轉換,這種不同抽象層次的作業完全符合所謂「事務分離」(separation of concern - SoC)的架構法(architectural approach),SoC可以讓業務分析者集中在業務邏輯的分析與設計而不必考慮系統的細節,簡言之,分析者只要管好(包括發展與保養)PIM即可,為達到這種SoC,OMG因此定義不同抽象層次的觀點(view),即CIM、PIM、PSM、與Code (OMG的MDA樣式並不包括Code)。 MDA是軟體發展的一種骨架(framework),因此適用於你所使用的任何軟體發展方法,例如你可以用傳統的分析與設計法,或敏捷模式化(agile modeling),或+1文章內所談的「原型樣式」(archetype patterns)來描述CIM與製作PIM,所以不用改變你所學的東西,就如Grady Booch所說的:公司要訓練MDA專家並無困難,也就是說只要懂一點UML而且仍然可保持所學,以減低訓練費用,同時,使用MDA技術尚可加速ROI。(註:最近有人提議使用OMG最近所提供的Business Process Modeling Notation (BPMN) 來描述C