牛小明
(中央宣傳部電影數(shù)字節(jié)目管理中心,北京 100055)
模型驅(qū)動(dòng)架構(gòu)的結(jié)構(gòu)大體可以分為4個(gè)層次,一般用M0、M1、M2、M3代稱(chēng):(1)M3是元—元模型層,包含模型語(yǔ)言定義,用于定義M2元模型的抽象一級(jí)建模支撐,即模型語(yǔ)言定義是M2所有元模型的元模型。模型語(yǔ)言定義具有自描述特征,可以對(duì)自身這個(gè)元模型進(jìn)行描述,因此M3的模型語(yǔ)言定義是整個(gè)模型驅(qū)動(dòng)架構(gòu)的基礎(chǔ)層,也是最核心的標(biāo)準(zhǔn),其他層模型或元模型的語(yǔ)義都來(lái)源于M3的模型語(yǔ)言定義,相當(dāng)于整體的公共定義標(biāo)準(zhǔn);(2)M2是元模型層,集成了所有來(lái)源于模型語(yǔ)言定義下的模型語(yǔ)言,因此通過(guò)M2能夠根據(jù)不同領(lǐng)域要求獲取對(duì)應(yīng)的建模語(yǔ)言。而M2提供的建模語(yǔ)言將成為M1建模符號(hào),支撐人們?cè)贛1上進(jìn)行軟件建模及開(kāi)發(fā);(3)M1是模型層,該層是建模人員最常接觸的,也是軟件模型開(kāi)發(fā)的“工作平臺(tái)”,在該層建模人員能夠通過(guò)模型語(yǔ)言對(duì)軟件模型進(jìn)行描述。另外,模型驅(qū)動(dòng)架構(gòu)中的CIM(計(jì)算無(wú)關(guān)模型)、PIM(平臺(tái)無(wú)關(guān)模型)、PSM(平臺(tái)特定模型)、ISM(實(shí)現(xiàn)特定模型)等都處于M1層;(4)M0是實(shí)例層,是M1整體模型的實(shí)例化,即M0包含了M1模型的具體應(yīng)用程序,該層是模型驅(qū)動(dòng)架構(gòu)中模型描述與應(yīng)用的最終層,達(dá)到該層就說(shuō)明開(kāi)發(fā)的軟件已經(jīng)可以投入使用。
為了實(shí)現(xiàn)模型驅(qū)動(dòng)架構(gòu)中各層模型的定義、映射與轉(zhuǎn)換,模型驅(qū)動(dòng)架構(gòu)開(kāi)發(fā)者提出了相關(guān)標(biāo)準(zhǔn),包括MOF、UML、CWM、XMI、QVT、OCL,具體內(nèi)容見(jiàn)表1。
表1 模型驅(qū)動(dòng)架構(gòu)的相關(guān)標(biāo)準(zhǔn)
結(jié)合上述(1.1),模型驅(qū)動(dòng)架構(gòu)中包含CIM、PIM、PSM、ISM4種應(yīng)用模型,具體內(nèi)容為:(1)CIM是一種描述系統(tǒng)需求、功能、環(huán)境、行為的模型,無(wú)法展示系統(tǒng)內(nèi)部結(jié)構(gòu)因此被定義為業(yè)務(wù)模型。在模型驅(qū)動(dòng)架構(gòu)中CIM非常重要,因?yàn)橹挥性贑IM的支持下,才能實(shí)現(xiàn)PIM、PSM模型;(2)PIM是一種業(yè)務(wù)邏輯模型,當(dāng)中并沒(méi)有任何與平臺(tái)實(shí)現(xiàn)、技術(shù)相關(guān)的信息,因此具有平臺(tái)無(wú)關(guān)性,而這一特性讓PIM能夠在所有技術(shù)平臺(tái)中實(shí)現(xiàn);(3)PSM是PIM轉(zhuǎn)換而來(lái)的專(zhuān)用模型,同時(shí)與PIM的區(qū)別在于:PIM內(nèi)的業(yè)務(wù)邏輯在PSM模型中同樣存在,但PSM還包括了平臺(tái)實(shí)現(xiàn)與技術(shù)相關(guān)的信息;(4)ISM就是PSM實(shí)例化后的特定模型,包括PSM的程序代碼、裝載規(guī)格、部署說(shuō)明等相關(guān)信息,可以將其定義為一個(gè)能實(shí)際運(yùn)作的軟件系統(tǒng)[1]。
傳統(tǒng)軟件開(kāi)發(fā)中雖然沒(méi)有模型概念,但實(shí)質(zhì)上整個(gè)開(kāi)發(fā)過(guò)程也是模型到模型的轉(zhuǎn)換過(guò)程,因此開(kāi)發(fā)人員需要通過(guò)代碼技術(shù)推動(dòng)模型轉(zhuǎn)換,而這個(gè)過(guò)程全期依賴(lài)人工,在以往人們基本沒(méi)有想過(guò)模型轉(zhuǎn)換是否能夠自動(dòng)化。但隨著模型驅(qū)動(dòng)架構(gòu)的出現(xiàn),模型轉(zhuǎn)換自動(dòng)化就不再是可望而不可及的目標(biāo),直接利用模型驅(qū)動(dòng)架構(gòu)的相關(guān)工具就能自動(dòng)生成代碼,模型自然也能自動(dòng)轉(zhuǎn)換,相比之下模型驅(qū)動(dòng)架構(gòu)在軟件開(kāi)發(fā)中具有明顯優(yōu)勢(shì)。
在模型驅(qū)動(dòng)架構(gòu)的軟件開(kāi)發(fā)過(guò)程中,代碼是通過(guò)模型轉(zhuǎn)換的方式自動(dòng)生成的,因此模型與代碼同步,這使得建模人員在系統(tǒng)維護(hù)中不再需要特別關(guān)注程序代碼,只要注重PIM模型即可,如果存在維護(hù)要求,則對(duì)PIM模型進(jìn)行管理,代碼會(huì)得到自動(dòng)維護(hù),因此可維護(hù)性較強(qiáng)。
模型驅(qū)動(dòng)架構(gòu)特體系結(jié)構(gòu)使得系統(tǒng)層次抽象,這讓建模人員能夠更好的了解系統(tǒng)架構(gòu),不再會(huì)被具體技術(shù)而干擾,只要關(guān)注PIM,并創(chuàng)建PIM就能夠?qū)崿F(xiàn)建模,這就讓軟件開(kāi)發(fā)效率與軟件質(zhì)量提升。
在模型驅(qū)動(dòng)架構(gòu)下圍繞CIM模型利用模型技術(shù)對(duì)每個(gè)軟件開(kāi)發(fā)步驟進(jìn)行描述,隨后利用模型轉(zhuǎn)換工具構(gòu)建PIM模型,再通過(guò)PIM模型進(jìn)行轉(zhuǎn)換,可得PSM模型,隨即PSM將轉(zhuǎn)換是ISM,這樣就完成了軟件開(kāi)發(fā)。相比之下,模型驅(qū)動(dòng)架構(gòu)的軟件開(kāi)發(fā)過(guò)程與傳統(tǒng)軟件開(kāi)發(fā)過(guò)程中的環(huán)節(jié)基本一致,均是從明確需求開(kāi)始,逐漸過(guò)渡到需求分析、開(kāi)發(fā)設(shè)計(jì)、編碼測(cè)試、運(yùn)行檢查的過(guò)程,但區(qū)別在于模型驅(qū)動(dòng)架構(gòu)的軟件開(kāi)發(fā)是借助模型和模型之間轉(zhuǎn)化,使得模型相互組合來(lái)實(shí)現(xiàn)軟件開(kāi)發(fā)的,如果是傳統(tǒng)軟件開(kāi)發(fā)技術(shù),就要不斷的輸入代碼,且模型驅(qū)動(dòng)架構(gòu)軟件開(kāi)發(fā)具有自動(dòng)化特征,傳統(tǒng)軟件開(kāi)發(fā)技術(shù)則全面依賴(lài)人工,孰優(yōu)孰劣一眼可見(jiàn)。
結(jié)合某軟件開(kāi)發(fā)商的軟件開(kāi)發(fā)過(guò)程,對(duì)軟件開(kāi)發(fā)技術(shù)的流程進(jìn)行分析,整體流程可以分為分為兩個(gè)步驟,分別為創(chuàng)建PIM與PSM映射轉(zhuǎn)換、代碼生成,各步驟具體內(nèi)容如下。
(1)創(chuàng)建PIM與PSM映射轉(zhuǎn)換。該開(kāi)發(fā)商在模型驅(qū)動(dòng)架構(gòu)的軟件開(kāi)發(fā)過(guò)程中,要求建模人員要先從CIM模型中的模型語(yǔ)言定義中使用平臺(tái)無(wú)關(guān)語(yǔ)言建模,得到PIM模型,該模型被定義為一種“向用戶(hù)提供信息查詢(xún)服務(wù)的軟件”,隨后依照特定平臺(tái)與映射規(guī)則(實(shí)現(xiàn)語(yǔ)言的映射規(guī)則)對(duì)PIM進(jìn)行轉(zhuǎn)換,這樣可以得到PSM模型。通過(guò)PSM模型可以得到程序代碼與測(cè)試框架。通體而言,該步驟的主要任務(wù)就是創(chuàng)建與軟件開(kāi)發(fā)要求相關(guān)的PIM模型,并且圍繞PIM模型通過(guò)映射、轉(zhuǎn)換手段得到PSM模型,在過(guò)程中需要注意的要點(diǎn)有:1)PIM和PSM的模型定義;2)PIM和PSM的模型間映射和轉(zhuǎn)換定義;3)執(zhí)行PIM到PSM的轉(zhuǎn)換工具。另外,在該步驟的開(kāi)發(fā)過(guò)程中建模人員一定要清楚的知道,PIM建模必須根據(jù)軟件開(kāi)發(fā)需求展開(kāi),只有這樣PSM模型才能符合要求,最終的ISM模型也才能投入實(shí)際應(yīng)用[2]。
(2)代碼生成。在得到PSM模型之后,該開(kāi)發(fā)商建模人員利用模型驅(qū)動(dòng)架構(gòu)進(jìn)行代碼生成,目的是映射PSM模型得到ISM,這個(gè)過(guò)程也被稱(chēng)為PSM實(shí)例化。在代碼生成中,建模人員必須根據(jù)ISM模型的實(shí)際運(yùn)行環(huán)境等設(shè)立針對(duì)性的映射解決方案,再依照解決方案創(chuàng)建應(yīng)用于模型驅(qū)動(dòng)架構(gòu)平臺(tái)內(nèi)相關(guān)模塊之間的工程項(xiàng)目,促使項(xiàng)目與PSM模型綁定,這樣啟動(dòng)代碼生成工具即可自動(dòng)生產(chǎn)代碼,實(shí)現(xiàn)PSM實(shí)例化,得到ISM模型。
在模型驅(qū)動(dòng)架構(gòu)的結(jié)構(gòu)與相關(guān)標(biāo)準(zhǔn)、應(yīng)用模型基礎(chǔ)上,本文對(duì)其軟件開(kāi)發(fā)技術(shù)的每個(gè)步驟進(jìn)行了論述,同時(shí)還說(shuō)明了模型驅(qū)動(dòng)架構(gòu)的應(yīng)用優(yōu)勢(shì)。整體上,模型驅(qū)動(dòng)架構(gòu)應(yīng)用優(yōu)勢(shì)明顯,值得推廣,只要采用文中方法,經(jīng)過(guò)兩個(gè)步驟的開(kāi)發(fā)就能夠?qū)崿F(xiàn)軟件開(kāi)發(fā)目的。