第三章 模型驅(qū)動(dòng)開發(fā)概述_第1頁
第三章 模型驅(qū)動(dòng)開發(fā)概述_第2頁
第三章 模型驅(qū)動(dòng)開發(fā)概述_第3頁
第三章 模型驅(qū)動(dòng)開發(fā)概述_第4頁
第三章 模型驅(qū)動(dòng)開發(fā)概述_第5頁
已閱讀5頁,還剩50頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

基于模型驅(qū)動(dòng)的安全系統(tǒng)開發(fā)

第三章:模型驅(qū)動(dòng)開發(fā)概述主講:徐田華

mail:thxu@

內(nèi)容模型及其意義模型驅(qū)動(dòng)的開發(fā)及其意圖模型驅(qū)動(dòng)開發(fā)的定義和關(guān)鍵問題模型驅(qū)動(dòng)開發(fā)授課內(nèi)容3什么是模型?模型是對現(xiàn)實(shí)世界的一個(gè)簡化4什么是模型?5什么是模型?6為什么要有模型?建??梢赃_(dá)到以下四個(gè)目的:把目前正在構(gòu)建的系統(tǒng)可視化描述系統(tǒng)的結(jié)構(gòu)和行為為構(gòu)建系統(tǒng)提供模板和指導(dǎo)記錄在開發(fā)過程所形成的設(shè)計(jì)決策管理系統(tǒng)復(fù)雜度復(fù)雜的系統(tǒng)很難被認(rèn)識和理解,建??梢院芎玫墓芾磉@種復(fù)雜度幫助團(tuán)隊(duì)成員之間的溝通模型可以幫助開發(fā)人員之間相互理解對方的設(shè)計(jì)意圖7什么是MDD?MDD是一種抽象的軟件開發(fā)設(shè)計(jì)流程,主要包括以下特點(diǎn):抽象(提高層次)、封裝和信息隱藏通過模型的多個(gè)層次(橫向和縱向)來隱藏和展現(xiàn)信息,從而使模型更容易被理解以模型為中心開發(fā)過程始終以模型為工作中心不依賴于任何一種特定的實(shí)現(xiàn)模型獨(dú)立于運(yùn)行平臺(tái)的實(shí)現(xiàn)細(xì)節(jié),這部份往往是最容易發(fā)生變化的8軟件開發(fā)方法的演化(抽象)純粹基于模型的開發(fā)Model只有模型什么是模型?Code只有代碼代碼就是模型ModelCode代碼可視化visualize模型就是代碼ModelCode以模型為中心generate抽象和自動(dòng)化程度同步代碼和模型ModelCode雙向工程synchronize軟件開發(fā)

發(fā)展方向軟件開發(fā)

實(shí)踐現(xiàn)狀9什么是MDD?MDD是一種抽象的軟件開發(fā)設(shè)計(jì)流程,主要包括以下特點(diǎn):雙向工程新應(yīng)用開發(fā)-通過正向工程來生成代碼針對遺留系統(tǒng)的開發(fā)–通過逆向工程來從代碼中抽象出模型應(yīng)用系統(tǒng)的自動(dòng)生成能夠從模型生成完全可運(yùn)行的應(yīng)用系統(tǒng)我們可以把MDD看作是一種使用模型來進(jìn)行編程的開發(fā)技術(shù)10什么是MDA?MDA–ModelDrivenArchitectureMDA是OMG(ObjectManagementGroup)制定的一種MDD實(shí)現(xiàn)MDA包括了一組實(shí)現(xiàn)MDD方法的標(biāo)準(zhǔn)和工具集合MDA定義了關(guān)于MDD軟件開發(fā)方法的一種概念框架為什么需要MDAOMG提出的MDA方法的三個(gè)主要目標(biāo):輕便性、互操性和可重用性。具體解決以下問題:扭轉(zhuǎn)以代碼為中心的軟件開發(fā)方法;解決不同平臺(tái),不同技術(shù)路線之間的集成和互操作問題;便于適應(yīng)將來出現(xiàn)的新技術(shù)和新平臺(tái);

Inconsistency

betweendocumentandcode

Difficulty

maintainability,poor

adaptation

ofnewtechnology

Poorin

interoperationDeveloperlike?IterativeprocessCodedrivendevelopmentrequirementSystemanalysisdesigncodeAcceptanceTestdocumentDocument,diagramcodecodeDocument,diagramCodeDrivenDevelopment傳統(tǒng)軟件開發(fā)的問題隨著軟件系統(tǒng)的復(fù)雜程度越來越高,傳統(tǒng)的軟件開發(fā)開始面臨有以下幾個(gè)問題疲于應(yīng)付需求的不斷變更;文檔迅速地失效、維護(hù)困難;項(xiàng)目二期開發(fā)生產(chǎn)力無法提升。每當(dāng)一種新的技術(shù)產(chǎn)生的時(shí)候,必須做許多重復(fù)的工作。系統(tǒng)永遠(yuǎn)不可能只用一種技術(shù)實(shí)現(xiàn),且不跟其它系統(tǒng)交互。不斷變更的需求同樣也給系統(tǒng)帶來困難。下面將分析在軟件開發(fā)過程中遇到的問題,隨后會(huì)介紹是如何來解決這些問題的publicinterfaceBookextendsEObject{StringgetTitle();voidsetTitle(Stringvalue);intgetPages();voidsetPages(intvalue);}publicclassBookImplextendsEObjectImplimplementsBook{...protectedstaticfinalintPAGES_EDEFAULT=0;protectedintpages=PAGES_EDEFAULT;publicintgetPages(){returnpages;}publicvoidsetPages(intnewPages){intoldPages=pages;pages=newPages;if(eNotificationRequired())eNotify(newENotificationImpl(this,Notification.SET,...,oldPages,pages));}...}CodeDrivenDevelopment1.生產(chǎn)力和維護(hù)性問題當(dāng)今的軟件開發(fā)過程是以概要設(shè)計(jì)和編碼為驅(qū)動(dòng)。無論是采用增量開發(fā)還是迭代開發(fā),或者是傳統(tǒng)的瀑布式開發(fā)途徑,文檔和相關(guān)的設(shè)計(jì)圖表都是在前三個(gè)階段中產(chǎn)生。需求分析往往使用文本和圖的方式來描述,其中的圖經(jīng)常采用圖,如用例圖、類圖、交互圖、活動(dòng)圖等。設(shè)計(jì)過程會(huì)產(chǎn)生大量的設(shè)計(jì)文檔,但往往僅存在于文檔中。CodeDrivenDevelopment當(dāng)編碼開始的時(shí)候,前三個(gè)階段產(chǎn)生的文檔和相關(guān)圖片就迅速失去了它們的價(jià)值。隨著編碼階段的繼續(xù)進(jìn)行,圖片和代碼之間的關(guān)聯(lián)逐漸減弱甚至消失,它們不再是對代碼的精確描述,或多或少地成為了無關(guān)的圖片。隨著時(shí)間的推移,系統(tǒng)不斷地被修改,文檔、設(shè)計(jì)圖表和代碼之間的距離就越來越疏遠(yuǎn)。一般來說僅僅是修改代碼,因?yàn)樾薷奈臋n和設(shè)計(jì)圖表所要花費(fèi)的代價(jià)是令人無法容忍的。同時(shí),即使修改了圖和文檔,這樣的工作是否有效也值得懷疑,因?yàn)檫€會(huì)不斷地修改代碼。CodeDrivenDevelopmentCodeDrivenDevelopment當(dāng)一個(gè)團(tuán)隊(duì)初始開發(fā)一個(gè)系統(tǒng)的時(shí)候,保存在它們大腦中的設(shè)計(jì)思想足以使它們理解這個(gè)系統(tǒng)。問題是當(dāng)?shù)谝话姘l(fā)布之后,團(tuán)隊(duì)可能會(huì)解散,其它來維護(hù)這個(gè)系統(tǒng)的人可能是一個(gè)新人,那么它就只有代碼和測試結(jié)果,這就使得系統(tǒng)維護(hù)極其困難。如果一個(gè)系統(tǒng)的代碼多達(dá)萬行,而缺少原始的設(shè)計(jì)、分析文檔的話,將是非常難以維護(hù)的。所以,要么在前三個(gè)階段花費(fèi)時(shí)間,寫出詳細(xì)設(shè)計(jì)文檔和設(shè)計(jì)圖表或者在維護(hù)階段花費(fèi)時(shí)間,來發(fā)現(xiàn)系統(tǒng)是如何工作的。這些方式都是不能直接產(chǎn)出代碼的,也是花費(fèi)比較高昂的。許多開發(fā)人員認(rèn)為直接書寫代碼才是有產(chǎn)出的,設(shè)計(jì)模型和文檔則不能。但是,在一個(gè)程序的項(xiàng)目團(tuán)隊(duì)中,這些任務(wù)都是必須被完成的。文檔寫到什么粒度,既能很好地指導(dǎo)編碼和測試,又能不降低生產(chǎn)率一直是困擾開發(fā)人員的一個(gè)難題。軟件工業(yè)與傳統(tǒng)工業(yè)相比,有一個(gè)特定就是其發(fā)展速度非??臁C磕甓紩?huì)出現(xiàn)各種新技術(shù)并迅速流行起來,例如Java,linux,XML,HTML,SOAP,UML,J2EE,.NET,JSP,ASP,Flash,WebService等等。許多公司必須跟從這種改變,這是因?yàn)橛脩籼岢鍪褂眯录夹g(shù)的需求新技術(shù)能夠真正解決一些問題例如,XML解決異構(gòu)系統(tǒng)間的數(shù)據(jù)交換軟件供應(yīng)商停止對舊的技術(shù)提供支持CodeDrivenDevelopmentCodeDrivenDevelopmentCodeDrivenDevelopment新技術(shù)能夠使得一些公司獲得一些切實(shí)的好處,但是人們必須面臨的困境就是,他們必須快速跳躍前進(jìn),而且必須忍受前期投資失去價(jià)值的現(xiàn)實(shí),這無疑是非常痛苦的。情況更加復(fù)雜的是,新技術(shù)本身也在發(fā)生變化。它們也會(huì)不斷推出不同的版本,而且并不能保證能完全做到向后兼容。軟件供應(yīng)商通常也只是對最近版本提供支持。現(xiàn)存的一些系統(tǒng)要么提供接口與新技術(shù)開發(fā)的系統(tǒng)連接,要么轉(zhuǎn)向新技術(shù)。那些仍然使用舊技術(shù)的遺產(chǎn)系統(tǒng)必然需要和使用新技術(shù)開發(fā)的系統(tǒng)進(jìn)行互連。如果系統(tǒng)和某種技術(shù)緊密綁定,那么注定這個(gè)系統(tǒng)在跟隨技術(shù)發(fā)展的道路上是步履沉重的,通過模型驅(qū)動(dòng)開發(fā)的方式可以使得系統(tǒng)足夠地技術(shù)中立性,能夠跟上技術(shù)前進(jìn)的步伐。CodeDrivenDevelopment3.互操作性問題軟件系統(tǒng)很少能夠孤立地存在,大多數(shù)都需要和其它系統(tǒng)進(jìn)行通信。一個(gè)典型的例子就是,很多公司在他們的現(xiàn)存系統(tǒng)上構(gòu)建了基于Web的新系統(tǒng);基于HTML,ASP,JSP等的Web應(yīng)用程序需要從現(xiàn)存的后端系統(tǒng)中獲取信息等。系統(tǒng)往往要使用多種技術(shù)來實(shí)現(xiàn),他們之間也存在互操作的問題?,F(xiàn)在往往在系統(tǒng)中使用組件,不同的組件使用各自最佳的技術(shù)來實(shí)現(xiàn),他們之間也需要互操作。不同的工具對于元數(shù)據(jù)的管理均有自己的策略,這就給元數(shù)據(jù)的共享形成了障礙,也降低了不同軟件的互操作性。通過模型驅(qū)動(dòng)開發(fā)的能夠應(yīng)對這些互操作的需求。CodeDrivenDevelopment4。文檔問題許多的開發(fā)人員總是認(rèn)為編碼才是他們的主要任務(wù),文檔可用性的支持可以延后。最終寫文檔成了強(qiáng)制的任務(wù),而不是出于激勵(lì)的目的,不是出于自愿的工作當(dāng)然不能做好。這個(gè)是文檔為什么質(zhì)量總是不夠高的原因之一。能夠檢查文檔質(zhì)量的也只能是開發(fā)團(tuán)隊(duì)的人員,而他們自己卻不喜歡寫文檔的工作,這也是文檔總是不能得到更新的原因。每次代碼改變之后必須手工地在一堆文檔中找出設(shè)計(jì)中需要更改的地方,這是非常煩瑣的工作。其實(shí)開發(fā)人員的這種想法是錯(cuò)誤的,開發(fā)一個(gè)容易修改和便于將來維護(hù)的系統(tǒng)可以大大提高軟件的質(zhì)量。如何能夠保持文檔和代碼的同步,而又不額外增加很多工作量是個(gè)難以解決的問題RequirementSystemanalysisDetailDesignCodeDeploymentacceptTestRequirementdocumentPIMPSMcodecodePIMdrivendevelopment

Flexible

implementation:platformchanges

Simplerandmoreeffective

maintenance

Increased

productivity:Automation;Increasesreuse;Reductionofrework

Updated

documentation

ofthesystem.

Ensurescustomers,designersandarchitects

understanding.MDAabstractDesignRefinementModelDrivenDevelopmentComputationIndependentModelPlatformIndependentModelPlatformSpecificModelCodegenerationModelingLayerCIMPIMPSMCGModelDrivenDevelopmentMDA是以模型為中心的軟件開發(fā)模式,將模型分為三類:平臺(tái)獨(dú)立模型(PIM)、平臺(tái)相關(guān)模型(PSM)和代碼。傳統(tǒng)的開發(fā)過程也可能分了這三個(gè)部分,甚至有些開發(fā)工具也實(shí)現(xiàn)了到PSM到代碼的自動(dòng)變換,但MDA的創(chuàng)新之處在于把PIM到PSM的變換也自動(dòng)化了,這樣開發(fā)者只需要專注于建立平臺(tái)獨(dú)立的模型,PSM和代碼讓MDA工具自動(dòng)生成就可以了。從兩個(gè)方面提升了開發(fā)效率首先,PIM開發(fā)者的工作量減少了,因?yàn)樗辉傩枰O(shè)計(jì)和編寫平臺(tái)相關(guān)的細(xì)節(jié),這些細(xì)節(jié)己經(jīng)由定義變換的人考慮好了。在PSM和代碼層次,需要寫的代碼也少了很多,因?yàn)榇罅康拇a已經(jīng)從自動(dòng)生成了。其次,開發(fā)者可以把注意力轉(zhuǎn)移到PIM,這樣就可以更關(guān)注如何解決所面對的業(yè)務(wù)問題。這樣一來,系統(tǒng)就會(huì)更好地吻合用戶的需求。用戶獲得的功能增多了,需要等待的時(shí)間卻減少了。在MDA中,可移植性是通過把開發(fā)焦點(diǎn)轉(zhuǎn)移到PIM而獲得的。因?yàn)镻IM是跨平臺(tái)的,同一個(gè)PIM可以被自動(dòng)變換成多個(gè)不同平臺(tái)上的PSM,在PIM層次指定的所有東西都是完全可移植的。ModelDrivenDevelopmentModelDrivenDevelopmet為了解決互操作性問題,MDA不僅生成PSM,還生成PSM之間的橋接器。如果能夠把一個(gè)PIM變換為兩個(gè)不同平臺(tái)上的PSM,那么也就有了橋接兩個(gè)PSM的全部信息。開發(fā)者不僅知道一個(gè)PSM中的每個(gè)元素是從中的哪個(gè)PIM元素變換而來,而且還知道PIM中的這個(gè)元素對應(yīng)于PSM中的哪個(gè)元素(traceability)。因此就可以推斷出兩個(gè)PIM中元素的對應(yīng)關(guān)系。OMG所定義的MDA模型抽象級別計(jì)算無關(guān)模型CIM(ComputationIndependentModel):溝通domainexpert,systemrequirementexpertofdesignandimplementation平臺(tái)無關(guān)模型PIM(PlatformIndependentModel)平臺(tái)相關(guān)模型PSM(PlatformSpecificModel)計(jì)算無關(guān)模型CIM僅使用應(yīng)用領(lǐng)域的概念和術(shù)語在模型中不包括與任何計(jì)算平臺(tái)相關(guān)的內(nèi)容ref.TransformationFromCIMtoPIMUsingPatternsandArchetypes.pdf計(jì)算無關(guān)模型CIM計(jì)算無關(guān)模型CIM計(jì)算無關(guān)模型CIM平臺(tái)無關(guān)模型(PIM)比CIM要更具體一些更接近于實(shí)現(xiàn)但并不依賴于特定的運(yùn)行平臺(tái)ref.FromaUMLPlatformIndependentComponentModeltoPlatformSpecificComponentModels.pdf平臺(tái)無關(guān)模型(PIM)平臺(tái)無關(guān)模型(PIM)平臺(tái)相關(guān)模型(PSM)比PIM更具體一些更接近于具體實(shí)現(xiàn)模型中也包含了特定運(yùn)行平臺(tái)的信息OMG-MDA模型驅(qū)動(dòng)國際組織和相關(guān)標(biāo)準(zhǔn)MDA-OMG模型驅(qū)動(dòng)國際組織和相關(guān)標(biāo)準(zhǔn)OMG-MDA模型驅(qū)動(dòng)國際組織和相關(guān)標(biāo)準(zhǔn)Notetheindustryverticals…MDAisnotintendedtobeageneralpurposemodel-to-codesolution.TheMDALogoCWM(CommonWarehouseMetamodel公共倉庫元模型)是OMG組織在數(shù)據(jù)倉庫系統(tǒng)中定義了一套完整的元模型體系結(jié)構(gòu),用于數(shù)據(jù)倉庫構(gòu)建和應(yīng)用的元數(shù)據(jù)建模。MDA的核心MDA的核心概念均是OMG的一系列標(biāo)準(zhǔn):統(tǒng)一建模語言UML,元對象設(shè)施MOF(metaobjectFacility),XML元數(shù)據(jù)交換XMI(XMLmetadataInterchange),公共數(shù)據(jù)倉庫元模型CWM(CommonWarehousemetamodel)。MDA的各種核心標(biāo)準(zhǔn)組成了創(chuàng)建模型驅(qū)動(dòng)的一致性系統(tǒng)綱要的基礎(chǔ),這個(gè)系統(tǒng)綱要完成了授權(quán)、發(fā)布和管理模型。MDAisnotasinglespecification,butacollectionofrelatedOMGspecifications:UnifiedModelingLanguage(UML?)2.0InfrastructureSuperstructureObjectConstraintLanguage(OCL)DiagramInterchangeProfilesMeta-ObjectFacility(MOF)XMLMeta-DataInterchange(XMI)CommonWarehouseMeta-model(CWM)QueryViewTransformation

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論