偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

軟件架構(gòu)設計之模型驅(qū)動架構(gòu)MDA

開發(fā) 架構(gòu)
傳統(tǒng)的開發(fā)過程從模型到模型的變換,或者從模型到代碼的變換是手工完成的。但是MDA的變換都是由工具自動完成的。從PIM到PSM,再從PSM到代碼都可以由工具實現(xiàn)。

概念

模型驅(qū)動架構(gòu)MDA, 全稱叫做Model Driven Architecture。

  • Model:表示客觀事物的抽象表示
  • Architecture:表示構(gòu)成系統(tǒng)的部件,連接件及其約束的規(guī)約
  • Model Driven: 使用模型完成軟件的分析,設計,構(gòu)建,部署和維護等 開發(fā)活動

MDA起源于分離系統(tǒng)規(guī)約和平臺實現(xiàn)的思想。之前我們在凈室軟件工程中也提到過這種思想。

意思就是我們開發(fā)一個系統(tǒng),基本上跟那個數(shù)學公式一樣,我們從始至終都通過證明來證明它的正確性,而不是通過測試來被動發(fā)現(xiàn)問題。

所以在凈室軟件工程這種思想之下,推動了模型驅(qū)動架構(gòu)的思想。

基本思想

我們一開始建立起模型,再一步步把這個模型映射,生成代碼就得到我們最終需要的軟件系統(tǒng)。

當然,事實證明,純粹按這種思想完成這種系統(tǒng)的話,有一定的難度,會面臨一些困難。比如業(yè)務邏輯是繞不開的,但是一部分去使用這個思想是沒有問題的。

比如目前的可視化操作就已經(jīng)在應用了,比如我們的mybatis generator就可以幫我們生成浙這些代碼。這些其實就是按照模型映射生成的代碼。

再比如我們通過模板語法生成對應的controller,service,mapper和前端代碼增刪改查這類似的功能,也是我們的模型驅(qū)動架構(gòu)。

其實模型驅(qū)動架構(gòu)可能跟現(xiàn)在的低代碼平臺思想也有著千絲萬縷的聯(lián)系。

主要目標

  • Portability(可移植性)
  • Interoperability(互通性)
  • Reusability(可重用性)

MDA實現(xiàn)流程

談到MDA的實現(xiàn)流程之前,得先了解它的三種核心模型。

  • 平臺獨立(無關(guān))模型(PIM)
  • 具有高抽象層次,獨立于任何實現(xiàn)技術(shù)的模型
  • 平臺相關(guān)模型(PSM)
  • 為某種特定實現(xiàn)技術(shù)量身定做,讓你用這種技術(shù)可用的實現(xiàn)構(gòu)造來描述系統(tǒng)的模型。PIM會被變換成一個或多個PSM
  • 代碼Code
  • 用源代碼對系統(tǒng)的描述(規(guī)約),每個PSM都將被轉(zhuǎn)換為代碼

PIM典型代表UML,你使用UML做出來的架構(gòu)設計的一系列的東西,都可以理解為平臺無關(guān)模型,為什么呢?

因為它跟具體的代碼和具體語言是沒有關(guān)系的,同一套UML語言,后面對接可以有具體的一系列的不同語言來實現(xiàn)。

但是到PSM就不明確了,因為這一層是有斷代的。不同的開發(fā)工具建立出來的模型,做出來的設計不太一樣。然后再通過變換工具生成代碼。

比如一些工具通過一些可視化拖拽,就能實現(xiàn)對應的代碼。這就是一種典型的實現(xiàn)。所以說現(xiàn)在的低代碼平臺思想就是基于模型驅(qū)動架構(gòu)的一種思想體現(xiàn)。

MDA開始雖然不多,但是這種思想?yún)s是值得我們?nèi)ダ斫?,這里引用一篇文章的內(nèi)容做簡單的描述。

內(nèi)容擴展

MDA并沒有額外提出其他的標準和技術(shù),它善用且整合多項已存在的標準及技術(shù),如圖1,這是MDA官方網(wǎng)站首頁上的圖片,充分呈現(xiàn)了MDA的期望與相關(guān)技術(shù)。

從圖1最內(nèi)圈看起,MDA主要使用了UML(Unified Modeling Language) ,MOF(Meta-Object Facility)及CWM(Common Warehouse Metamodel)這三項建模標準,作為PIM及PSM的建模基礎。不過,據(jù)著名建模專家邱郁惠表示,對于一般的開發(fā)人員而言,只要熟知UML統(tǒng)一建模語言,就可以開發(fā)MDA項目了。

MDA的第二內(nèi)圈,代表公開標準或私有的實現(xiàn)技術(shù)平臺,有CORBA,XMI/XML,.NET,JAVA及WEB SERVICE,等等。也就是說,MDA希望能制定出各式獨特的具體平臺專屬的PSM轉(zhuǎn)換規(guī)則,并且最好可以由廠商配合設計出MDA開發(fā)工具,以便能夠?qū)⒅辛⒌腜IM自動轉(zhuǎn)出特定平臺的模型PSM。

MDA的第三內(nèi)圈,代表跨平臺的通用服務(Pervasive Services),MDA定義了四種服務,目錄服務(Directory Services),事務服務(Transaction Services),安全服務(Security Services)以及分布式事件及通知服務(Distributed Event and Notification Services)。OMG計劃定義該四項通用服務,讓任何平臺上的應用程序或客戶端都可以通過MDA環(huán)境,取得跨平臺的服務。

MDA的最外圍,則代表MDA可以應用在各式不同的領(lǐng)域環(huán)境中,諸如電子商務(E-Commerce),電信(Telecom),醫(yī)療保?。℉ealthCare),運輸(Transportation),航空(Space),制造(Manufacturing),金融(Finance)等領(lǐng)域。

對于使用MDA進行開發(fā)的過程,根據(jù)邱郁惠在其著作中的建議,可以分為四個階段:

  • CIM(Computation Independent Model)- 聚焦于系統(tǒng)環(huán)境及需求,但不涉及系統(tǒng)內(nèi)部的結(jié)構(gòu)與運作細節(jié)。
  • PIM(Platform Independent Model)- 聚焦于系統(tǒng)內(nèi)部細節(jié),但不涉及實現(xiàn)系統(tǒng)得具體平臺。
  • PSM(Platform Specific Model)- 聚焦于系統(tǒng)落實于特定具體平臺的細節(jié),如EJB,J2EE或.NET都是一種具體平臺。
  • Coding – 最后程序員依據(jù)PSM的UML模型內(nèi)容,按圖施工,編寫出適用于特定具體平臺的代碼。

MDA描述的軟件開發(fā)生命周期和傳統(tǒng)生命周期沒有大的不同,主要的區(qū)別在于開發(fā)過程創(chuàng)建的工件,包括PIM、PSM和代碼。

PIM是具有高抽象層次、獨立任何實現(xiàn)技術(shù)的模型。PIM被轉(zhuǎn)換為一個或多個PSM。

PSM是為某種特定實現(xiàn)技術(shù)量身定做。例如,EJB PSM是用EJB結(jié)構(gòu)表達的系統(tǒng)模型。開發(fā)的最后一步是把每個PSM變化為代碼,PSM同應用技術(shù)密切相關(guān)。

傳統(tǒng)的開發(fā)過程從模型到模型的變換,或者從模型到代碼的變換是手工完成的。但是MDA的變換都是由工具自動完成的。從PIM到PSM,再從PSM到代碼都可以由工具實現(xiàn)。

PIM, PSM,和Code 模型被作為軟件開發(fā)生命周期中的設計工具,在傳統(tǒng)的開發(fā)方式中是文檔和圖表。

重要的是,它們代表了對系統(tǒng)不同層次的抽象,從不同的視角來看待我們的系統(tǒng),將高層次的PIM 轉(zhuǎn)換到PSM 的能力提升了抽象的層次。能夠使得開發(fā)人員更加清晰地了解系統(tǒng)的整個架構(gòu),而不會被具體的實現(xiàn)技術(shù)所“污染”,同時對于復雜系統(tǒng),也減少了開發(fā)人員的工作量。

有了這個擴展,相信大家對MDA架構(gòu)有了更加深刻一點的理解了。

內(nèi)容擴展來源:??https://www.cnblogs.com/gzitjohn/archive/2009/03/13/1410220.html??

小結(jié)

其實MDA架構(gòu)是一種考試可能考得不會太多,但是我們需要理解的一種思想,所以我們不僅僅要為了考試而學習,還要通過這個東西,了解一些我們不曾了解的概念與思想。

責任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2023-04-11 07:50:27

軟件架構(gòu)設計

2020-11-22 08:10:05

架構(gòu)運維技術(shù)

2012-06-07 10:45:12

軟件架構(gòu)設計原則

2009-02-01 10:17:19

Java架構(gòu)設計設計模式

2015-06-02 04:17:44

架構(gòu)設計審架構(gòu)設計說明書

2024-09-18 09:04:33

架構(gòu)模式查詢

2015-06-02 04:34:05

架構(gòu)設計

2022-06-14 08:02:35

關(guān)系模型數(shù)據(jù)模型文檔模型

2014-05-19 10:08:36

IM系統(tǒng)架構(gòu)設計

2009-06-22 14:48:21

DRY架構(gòu)設計

2023-04-28 08:23:51

軟件架構(gòu)設計

2012-05-30 09:43:45

業(yè)務邏輯層

2023-05-12 07:52:13

架構(gòu)設計設計原則

2025-05-27 10:15:00

Go開發(fā)軟件架構(gòu)

2013-05-27 10:58:28

Tumblr架構(gòu)設計雅虎收購

2016-02-18 10:09:23

12306核心思路架構(gòu)

2023-08-16 12:34:16

同步備份異步備份

2021-12-23 09:00:00

架構(gòu)微服務數(shù)據(jù)

2022-06-02 10:35:20

架構(gòu)驅(qū)動

2023-01-09 09:00:00

樹服務架構(gòu)驅(qū)動決策
點贊
收藏

51CTO技術(shù)棧公眾號