亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        一種支持MDA的基于EDM的軟件開發(fā)方式

        2012-08-01 12:49:50肖文輝劉洪星
        關(guān)鍵詞:開發(fā)方式概念模型開發(fā)人員

        肖文輝,劉洪星

        (武漢理工大學(xué)計算機科學(xué)與技術(shù)學(xué)院,湖北 武漢 430063)

        1 MDA介紹

        模型驅(qū)動架構(gòu)(model driven architecture,MDA)是由對象管理組織(object management group,OMG)提出的[1]。MDA 將信息系統(tǒng)抽象成計算無關(guān)模型(CIM)、平臺無關(guān)模型(PIM)和平臺相關(guān)模型(PSM)3個層次。

        在傳統(tǒng)的軟件開發(fā)流程中通常會經(jīng)歷需求分析、概要設(shè)計、詳細(xì)設(shè)計、編碼和測試等階段,如圖1所示。系統(tǒng)的模型和文檔主要在設(shè)計階段被創(chuàng)建,之后隨著編碼工作的開始,模型與代碼之間可能會出現(xiàn)不同步的問題[2]。

        圖1 傳統(tǒng)的開發(fā)流程

        不同于傳統(tǒng)的開發(fā)流程,MDA由系統(tǒng)的建模行為驅(qū)動,模型(而不是代碼)在系統(tǒng)開發(fā)流程中處于核心地位[3],如圖2所示。在MDA的開發(fā)流程中,由PIM完成分析設(shè)計工作,而與具體的平臺和實現(xiàn)技術(shù)相關(guān)的PSM以及代碼,則可借助第三方轉(zhuǎn)換工具來完成。

        圖2 MDA的開發(fā)流程

        2 實體數(shù)據(jù)模型

        實體數(shù)據(jù)模型(entity data model,EDM)是微軟實體框架(ADO.NET entity framework)的核心,它基于實體關(guān)系(ER)模型。EDM是一種構(gòu)建在ER模型之上的概念模型。EDM由CSDL(conceptual schema definition language),SSDL(stores schema define language),MSL(mapping schema language)3個部分組成,分別描述應(yīng)用程序業(yè)務(wù)層的實體和關(guān)系、邏輯模型的結(jié)構(gòu)、概念模型與邏輯模型之間的映射[4]。

        在實體框架中,EDM處于一個包含中間件映射引擎的運行環(huán)境中,該環(huán)境支持EDM與關(guān)系數(shù)據(jù)模型(RDM)之間的雙向映射。開發(fā)人員可以使用語言集成查詢 LINQ[5](language integrated query)或一種新的數(shù)據(jù)操作語言Entity SQL來操作EDM實例[6]。通過面向?qū)ο蟮姆绞綄?shù)據(jù)進行操作,傳入的參數(shù)和得到的返回結(jié)果都是封裝好的對象,而不是單獨的字段值或一條一條的表記錄。另外,數(shù)據(jù)操作代碼和編程語言能較好地集成在一起,在代碼執(zhí)行之前,Visual Studio就可以檢測數(shù)據(jù)操作代碼在語法以及對象間的引用上是否存在錯誤。

        EDM給概念模型帶來了新的生命力。開發(fā)人員能夠編寫代碼來操作EDM,然后依靠實體框架提供的工具將這些操作映射到特定的邏輯模型。這樣可以將應(yīng)用程序從關(guān)聯(lián)特定的邏輯模型中解放出來[7],即使跨越多個數(shù)據(jù)引擎,應(yīng)用程序也能工作在一個穩(wěn)定的概念模型之上。

        3 使用EDM實現(xiàn)MDA開發(fā)

        在微軟的集成開發(fā)環(huán)境Visual Studio 2010中,其 ADO.NET Entity Framework不僅支持從EDM到RDM的雙向轉(zhuǎn)換,而且也支持EDM到OOM(C#代碼)的轉(zhuǎn)換。而MDA的核心問題正是模型轉(zhuǎn)換問題[8],因此,Visual Studio為實現(xiàn)基于MDA的開發(fā)方式提供了可行性。

        3.1 現(xiàn)有的開發(fā)方式

        Visual Studio所支持的針對EDM進行開發(fā)的流程如圖3所示,經(jīng)過需求分析和設(shè)計得到系統(tǒng)的RDM,然后使用工具將 RDM轉(zhuǎn)換為 EDM。EDM作為一種關(guān)系對象映射(ORM),為上面的應(yīng)用程序提供以面向?qū)ο蟮姆绞竭M行數(shù)據(jù)訪問的API,開發(fā)人員直接對EDM進行編程,對EDM實例的操作將由EDM到RDM之間的映射規(guī)則自動更新到底層的RDM實例。

        圖3 現(xiàn)有的開發(fā)方式

        運用現(xiàn)有的開發(fā)方式,開發(fā)人員不必關(guān)心底層數(shù)據(jù)庫的訪問細(xì)節(jié),提升了軟件開發(fā)的效率,但這種開發(fā)方式并沒有充分發(fā)揮EDM作為“可執(zhí)行的概念模型”的作用,其原因如下:

        (1)EDM作為概念模型,其建模功能并沒有體現(xiàn)出來,EDM只是作為一種ORM為應(yīng)用程序提供數(shù)據(jù)訪問服務(wù),并不是一種類似于UML的可用來進行系統(tǒng)建模的工具。

        (2)這種開發(fā)方式首先得到的是RDM,然后再通過轉(zhuǎn)換得到EDM,這使系統(tǒng)開發(fā)之初就依賴于具體的邏輯模型。

        (3)對于新出現(xiàn)的需求或變更,針對RDM而不是EDM進行修改,則依然需要開發(fā)人員考慮與平臺相關(guān)的細(xì)節(jié)。

        3.2 基于EDM的MDA開發(fā)方式

        基于MDA的思想,筆者提出一種在Visual Studio中針對EDM進行開發(fā)的新方式,如圖4所示。經(jīng)過需求分析,直接使用EDM進行系統(tǒng)分析和建模。之后借助轉(zhuǎn)換工具將概念模型EDM轉(zhuǎn)換為平臺相關(guān)模型(如RDM)。應(yīng)用程序直接工作在EDM上,其對數(shù)據(jù)的操作將由轉(zhuǎn)換工具映射到底層的關(guān)系數(shù)據(jù)庫中。

        圖4 基于MDA的開發(fā)方式

        EDM作為一種平臺無關(guān)的概念模型,更貼近于系統(tǒng)的問題域,它能比RDM等平臺相關(guān)模型更準(zhǔn)確地描述系統(tǒng)需求。這樣,軟件開發(fā)人員可以站在更高的抽象層次上分析和解決問題,更多地關(guān)注于系統(tǒng)的業(yè)務(wù)領(lǐng)域[9],而不是具體的實現(xiàn)技術(shù)和平臺。

        在傳統(tǒng)的軟件開發(fā)流程中,需要在系統(tǒng)開發(fā)的不同時期建立不同的模型與文檔,這些模型和文檔是對同一問題的多次描述,會帶來重復(fù)勞動。當(dāng)系統(tǒng)結(jié)構(gòu)發(fā)生變化時,手動維護這些模型與文檔之間版本的同步,需要付出大量的時間。但這種基于MDA的開發(fā)方式,只需要建立EDM這一種概念模型,相應(yīng)的平臺相關(guān)模型和文檔可借助轉(zhuǎn)換工具去完成。EDM在系統(tǒng)開發(fā)生命周期中處于核心地位,系統(tǒng)開發(fā)的起點不是建立RDM或編寫代碼,而是設(shè)計 EDM 概念模型[10-11]。若系統(tǒng)結(jié)構(gòu)發(fā)生變化,只需在概念模型EDM上進行修改,其他模型的更新和同步可借助相應(yīng)的模型轉(zhuǎn)換工具來進行。

        在基于MDA的開發(fā)方式中,EDM不僅是進行概念建模的工具,而且貫穿于整個開發(fā)的始終,增強了概念模型的作用,是對MDA架構(gòu)更完整的實現(xiàn)。這種開發(fā)方式的優(yōu)點有:

        (1)在系統(tǒng)設(shè)計之初,EDM作為一種概念建模工具進行系統(tǒng)設(shè)計。在系統(tǒng)實現(xiàn)階段,EDM作為一種ORM為應(yīng)用程序提供數(shù)據(jù)訪問,使整個開發(fā)過程的環(huán)境得到統(tǒng)一。

        (2)在整個開發(fā)過程中,開發(fā)人員始終面對的是EDM,不用過多地考慮底層具體的實現(xiàn)技術(shù)和平臺,只需專注于業(yè)務(wù)邏輯的實現(xiàn),EDM到OOM、RDM之間的轉(zhuǎn)換可借助工具完成。這樣,EDM簡化了系統(tǒng)的開發(fā),也增強了系統(tǒng)在不同平臺下的可移植性。

        (3)對系統(tǒng)結(jié)構(gòu)的更改不再是針對代碼,而是直接在EDM上進行,借助轉(zhuǎn)換工具來維護EDM到RDM和代碼之間的同步,避免由系統(tǒng)重構(gòu)帶來的混亂,減少重復(fù)勞動,提高系統(tǒng)的可維護性。

        (4)系統(tǒng)設(shè)計階段得到的EDM,可復(fù)用到相近領(lǐng)域,在更高的層次上增強了系統(tǒng)的可重用性。

        4 實例

        筆者以一個網(wǎng)上銷售系統(tǒng)為例來演示這種基于MDA的開發(fā)流程。通過與傳統(tǒng)的ADO.NET的數(shù)據(jù)訪問方式進行對比,體現(xiàn)使用EDM進行開發(fā)的優(yōu)勢,并以一次系統(tǒng)重構(gòu)來說明使用基于MDA的EDM開發(fā)所帶來的靈活性。

        在系統(tǒng)設(shè)計階段,通過需求分析,獲取業(yè)務(wù)流程和規(guī)則,通過對業(yè)務(wù)規(guī)則的分析,抽取出相關(guān)的核心實體。然后在Visual studio中建立EDM模型,如圖5所示,抽取出4個實體:顧客、訂單、訂單項和商品,實體之間的關(guān)系有一對一,一對多。

        圖5 網(wǎng)上銷售系統(tǒng)EDM模型

        利用Visual Studio中提供的功能將EDM轉(zhuǎn)換為SQL語句并生成RDM。在轉(zhuǎn)換過程中,Visual Studio根據(jù)EDM與SQL Server數(shù)據(jù)庫之間的映射規(guī)則,將EDM中的實體轉(zhuǎn)換為數(shù)據(jù)庫中的表,將EDM實體間的關(guān)系轉(zhuǎn)換為數(shù)據(jù)庫表之間的關(guān)系,并自動建立主碼、外碼。在數(shù)據(jù)庫中生成如圖6所示的RDM。

        在系統(tǒng)的實現(xiàn)階段,相對于傳統(tǒng)的ADO.NET的數(shù)據(jù)訪問方式,使用EDM之后所需的代碼量將大大減少。一方面,實體框架會自動生成與EDM實體對應(yīng)的實體類,該實體類的結(jié)構(gòu)由實體框架自動維護,并與EDM實體保持同步,對EDM結(jié)構(gòu)的更改可以立即在實體類代碼中得到更新。另一方面,EDM屏蔽了底層的數(shù)據(jù)訪問細(xì)節(jié),省去了傳統(tǒng)訪問方式中連接數(shù)據(jù)庫、打開連接、數(shù)據(jù)訪問和關(guān)閉連接等繁瑣且重復(fù)的操作。

        圖6 網(wǎng)上銷售系統(tǒng)RDM

        在實體框架中,每個EDM對應(yīng)于一個對象上下文(ObjectContext),它是所有實體對象的容器,對所有實體對象的生命周期進行管理,自動記錄當(dāng)前正在使用的實體對象的狀態(tài),并在最后提交時將對象持久化到數(shù)據(jù)庫中。ObjectContext為應(yīng)用程序提供了訪問實體對象的接口,因此,對數(shù)據(jù)進行的各種操作都是面向?qū)ο蟮?,解決了阻抗不匹配的問題。

        例如,下面的數(shù)據(jù)訪問代碼段,統(tǒng)計某個顧客的消費總額。只需將Customer對象作為參數(shù)輸入,使用對象間的關(guān)系來進行查詢和統(tǒng)計。之后,ObjectContext會自動將相應(yīng)的操作映射到底層數(shù)據(jù)庫中。

        若使用傳統(tǒng)的ADO.NET的方式來實現(xiàn),則需要使用如下的SQL語句,進行三層嵌套查詢,編寫類似的代碼,要求開發(fā)人員非常熟悉SQL語法,且在程序代碼中無法對SQL語句進行語法和語義上的檢測,編寫起來容易出錯,不便于測試,效率比較低。

        如果在系統(tǒng)開發(fā)完成后,出現(xiàn)一個新的需求,如為了吸引顧客,系統(tǒng)對VIP貴客實行打折優(yōu)惠,需要在原有顧客的基礎(chǔ)上建立一批VIP顧客。使用基于MDA的開發(fā)方式,可直接在EDM上對概念模型進行重構(gòu)。通過對新需求的分析,在原有的EDM中添加一個新的繼承自Customer實體的VIPCustomer實體,如圖7所示。在修改EDM后,將EDM轉(zhuǎn)換為新的RDM(目前,Visual Studio還不支持EDM到RDM的自動實時更新,需要先導(dǎo)出為SQL然后在數(shù)據(jù)庫里執(zhí)行得到新的RDM)。對于EDM上原有的C#程序代碼,ObjectContext會自動添加VIPCutomer實體類,這些更新不會影響原有的程序代碼。在程序中可直接操作ObjectContext中的VIPCutomer對象,不必關(guān)心底層數(shù)據(jù)庫的結(jié)構(gòu)發(fā)生的變化。

        圖7 系統(tǒng)重構(gòu)之后的網(wǎng)上銷售系統(tǒng)EDM

        若使用原有的開發(fā)方式,則需要在數(shù)據(jù)庫里添加額外的字段或者增加一個新的表來記錄VIP顧客的信息,由于RDM中不支持繼承的概念,因此它沒有EDM對這一需求描述得直觀和清晰。更改數(shù)據(jù)庫表結(jié)構(gòu)需要開發(fā)人員熟悉關(guān)系數(shù)據(jù)庫的操作和關(guān)系模式的設(shè)計,并且更改底層的數(shù)據(jù)庫結(jié)構(gòu)可能會引起上面應(yīng)用程序的變化,這將增加系統(tǒng)重構(gòu)的工作量。

        5 結(jié)論

        基于MDA的開發(fā)方式使軟件開發(fā)的抽象級別進一步得到了提高。筆者提出了一種基于MDA的開發(fā)方式,使EDM處于系統(tǒng)開發(fā)的核心地位,并貫穿于整個開發(fā)周期。這樣,EDM作為概念模型的作用得到了增強,能更好地支持MDA,并豐富了EDM的使用方式。

        [1] Object Management Group.MDA guide version 1.0.1[DB/OL].[2011 -09 -21].http://www.omg.org/cgi-bin/doc?omg/03-06-01.pdf.

        [2] ANNEKE G K,JOS W,WIM B.The model driven architecture:practice and promise[M].[S.l.]:Addison Wesley,2003:133 - 141.

        [3] DAVID S F.Model driven architecture - applying MDA to enterprise computing[M].[S.l.]:Wiley Publishing Inc,2003:43 -51.

        [4] Microsoft.Entity framework overview[DB/OL].[2011-09 - 21].http://msdn.microsoft.com/en - us/library/bb399567(v=VS.100).aspx.

        [5] ROGER J.Professional ADO.NET 3.5 with LINQ and the entity framework[M].[S.l.]:Wiley Publishing,2009:24-29.

        [6] ADYA A,BLAKELEY J A,MELNIK S.Anatomy of the ADO.NET entity framework[C]//ACM SIGMOD.[S.l.]:[s.n.],2007:877 -888.

        [7] JOSE A B,MURALIDHAR S.The ADO.NET entity+framework:making the conceptual level real[C]//Lecture Notes in Computer Science 4215.[S.l.]:Springer,2006:552 - 565.

        [8] SHANE S,WOJTEK K.Model transformation:the heart and soul of model- driven software development[C]//IEEE Software.[S.l.]:[s.n.],2003:42 -45.

        [9] LIU Y,LIU H X.The mapping from entity data model to relational data model[C]//IEEE International Conference on InternetTechnology and Applications.[S.l.]:[s.n.],2010:1 -5.

        [10] 陳雪梅,韓潔瓊.C語言可視化編程環(huán)境的設(shè)計與實現(xiàn)[J].武漢理工大學(xué)學(xué)報:信息與管理工程版,2010,32(4):561 -564.

        [11] ANDREY Y.Using ADO.NET entity framework in domain- driven design:a pattern approach[R].Sweden:Department of Applied Information Technology,2008.

        猜你喜歡
        開發(fā)方式概念模型開發(fā)人員
        Semtech發(fā)布LoRa Basics 以加速物聯(lián)網(wǎng)應(yīng)用
        基于“認(rèn)知提升”的體系作戰(zhàn)指揮概念模型及裝備發(fā)展需求
        數(shù)字海洋的開發(fā)方式選擇和研究
        祖國(2017年2期)2017-03-09 18:24:39
        車身開發(fā)中的尺寸工程技術(shù)之我見
        緬甸水資源開發(fā)方式及應(yīng)注意的問題
        讓W(xué)indows 10進入開發(fā)者模式
        電腦迷(2015年12期)2015-04-29 23:22:51
        后悔了?教你隱藏開發(fā)人員選項
        電腦愛好者(2015年6期)2015-04-03 01:20:56
        數(shù)字礦山信息集成概念模型
        金屬礦山(2014年7期)2014-03-20 14:19:57
        鐵路客站設(shè)計與綜合開發(fā)方式的研究
        基于PSR概念模型的土地利用系統(tǒng)健康評價
        国产三级精品三级国产| 亚洲AV无码乱码1区久久| 国产成人自产拍免费视频| 网址视频在线成人亚洲| 精品无码国产一区二区三区麻豆| 日本一卡2卡3卡4卡无卡免费网站| 中文字幕福利视频| 国产91精品丝袜美腿在线| 国产激情视频在线观看大全| 久久天堂综合亚洲伊人hd妓女 | 91快射视频在线观看| 国色天香社区视频在线| 日韩亚洲av无码一区二区不卡 | 午夜无码一区二区三区在线| 色婷婷av一区二区三区不卡| 在线视频观看国产色网| 四虎影视4hu4虎成人| 亚洲欧洲久久久精品| 亚洲综合有码中文字幕| 久久夜色精品国产亚洲av动态图| 日本丰满熟妇bbxbbxhd| 日本视频一区二区三区免费观看 | 一区二区三区视频免费观看在线| 制服丝袜一区二区三区| 久久精品国产第一区二区三区| 2021国产最新无码视频| 国产自拍视频一区在线| 男女性爽大片视频| 亚洲av无码专区亚洲av| 日本女同伦理片在线观看| 手机在线免费av资源网| 国产98在线 | 日韩| 98精品国产综合久久| 色婷婷精品大在线视频| 亚洲熟妇丰满多毛xxxx| 国产日韩网站| 国产蜜臀精品一区二区三区| 亚洲精品宾馆在线精品酒店| 亚洲av永久无码天堂网手机版| 99热在线播放精品6| 人妻久久一区二区三区|