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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

mail:thxu@

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

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

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

Inconsistency

betweendocumentandcode

Difficulty

maintainability,poor

adaptation

ofnewtechnology

Poorin

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

Flexible

implementation:platformchanges

Simplerandmoreeffective

maintenance

Increased

productivity:Automation;Increasesreuse;Reductionofrework

Updated

documentation

ofthesystem.

Ensurescustomers,designersandarchitects

understanding.MDAabstractDesignRefinementModelDrivenDevelopmentComputationIndependentModelPlatformIndependentModelPlatformSpecificModelCodegenerationModelingLayerCIMPIMPSMCGModelDrivenDevelopmentMDA是以模型為中心的軟件開發(fā)模式,將模型分為三類:平臺獨立模型(PIM)、平臺相關模型(PSM)和代碼。傳統(tǒng)的開發(fā)過程也可能分了這三個部分,甚至有些開發(fā)工具也實現(xiàn)了到PSM到代碼的自動變換,但MDA的創(chuàng)新之處在于把PIM到PSM的變換也自動化了,這樣開發(fā)者只需要專注于建立平臺獨立的模型,PSM和代碼讓MDA工具自動生成就可以了。從兩個方面提升了開發(fā)效率首先,PIM開發(fā)者的工作量減少了,因為他不再需要設計和編寫平臺相關的細節(jié),這些細節(jié)己經由定義變換的人考慮好了。在PSM和代碼層次,需要寫的代碼也少了很多,因為大量的代碼已經從自動生成了。其次,開發(fā)者可以把注意力轉移到PIM,這樣就可以更關注如何解決所面對的業(yè)務問題。這樣一來,系統(tǒng)就會更好地吻合用戶的需求。用戶獲得的功能增多了,需要等待的時間卻減少了。在MDA中,可移植性是通過把開發(fā)焦點轉移到PIM而獲得的。因為PIM是跨平臺的,同一個PIM可以被自動變換成多個不同平臺上的PSM,在PIM層次指定的所有東西都是完全可移植的。ModelDrivenDevelopmentModelDrivenDevelopmet為了解決互操作性問題,MDA不僅生成PSM,還生成PSM之間的橋接器。如果能夠把一個PIM變換為兩個不同平臺上的PSM,那么也就有了橋接兩個PSM的全部信息。開發(fā)者不僅知道一個PSM中的每個元素是從中的哪個PIM元素變換而來,而且還知道PIM中的這個元素對應于PSM中的哪個元素(traceability)。因此就可以推斷出兩個PIM中元素的對應關系。OMG所定義的MDA模型抽象級別計算無關模型CIM(ComputationIndependentModel):溝通domainexpert,systemrequirementexpertofdesignandimplementation平臺無關模型PIM(PlatformIndependentModel)平臺相關模型PSM(PlatformSpecificModel)計算無關模型CIM僅使用應用領域的概念和術語在模型中不包括與任何計算平臺相關的內容ref.TransformationFromCIMtoPIMUsingPatternsandArchetypes.pdf計算無關模型CIM計算無關模型CIM計算無關模型CIM平臺無關模型(PIM)比CIM要更具體一些更接近于實現(xiàn)但并不依賴于特定的運行平臺ref.FromaUMLPlatformIndependentComponentModeltoPlatformSpecificComponentModels.pdf平臺無關模型(PIM)平臺無關模型(PIM)平臺相關模型(PSM)比PIM更具體一些更接近于具體實現(xiàn)模型中也包含了特定運行平臺的信息OMG-MDA模型驅動國際組織和相關標準MDA-OMG模型驅動國際組織和相關標準OMG-MDA模型驅動國際組織和相關標準Notetheindustryverticals…MDAisnotintendedtobeageneralpurposemodel-to-codesolution.TheMDALogoCWM(CommonWarehouseMetamodel公共倉庫元模型)是OMG組織在數(shù)據(jù)倉庫系統(tǒng)中定義了一套完整的元模型體系結構,用于數(shù)據(jù)倉庫構建和應用的元數(shù)據(jù)建模。MDA的核心MDA的核心概念均是OMG的一系列標準:統(tǒng)一建模語言UML,元對象設施MOF(metaobjectFacility),XML元數(shù)據(jù)交換XMI(XMLmetadataInterchange),公共數(shù)據(jù)倉庫元模型CWM(CommonWarehousemetamodel)。MDA的各種核心標準組成了創(chuàng)建模型驅動的一致性系統(tǒng)綱要的基礎,這個系統(tǒng)綱要完成了授權、發(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)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論