<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 176, comments - 240, trackbacks - 0, articles - 7

    Physical Model Driven

    Posted on 2006-09-10 22:19 canonical 閱讀(1583) 評論(4)  編輯  收藏 所屬分類: 設計理論
    ? 對于目前MDA(Model Driven Architecture)的理論和實現,我一直持一種消極態度。以前和hotman_x的討論中,我也明確表述過對于MDA的看法。
    ? MDA:以有限搏無限 http://canonical.blogdriver.com/canonical/787637.html
    ? 圖形 vs. 文本 http://canonical.blogdriver.com/canonical/1090209.html
    ? 所謂的MDA一般總是從高層抽象模型出發,希望通過預定的建模過程推導出底層的全部實現細節。但是implementation is also interpretation. 實現過程本身也是對高層模型的一種詮釋過程, 是一個逐步明晰并逐漸消除概念之間矛盾沖突的過程。從高層模型到底層實現并不是一個同構(isomorphism)的過程,甚至一般情況下也不是同態(homomorphism)的。在概念模型到具體代碼實現的過程中,總是存在著需要不斷補充的細節。這些細節如何才能成為高層模型的一種自然的衍生部分是一個非常復雜的問題。如果考慮得太細(需要指定過多難以從整體上進行控制的參數),似乎就會喪失高層模型的抽象性和概括性,而如果不深入到細節,則難以平衡高層模型之間的互相沖突的屬性。隨著細節的不斷增加,試圖維持高層模型在各個層面的統一性無疑將變得異常困難。實際上在每一個抽象層面概念都可能出現重組和混合的情況,試圖統一建模在目前的技術水平下是不太現實的。
    ? MDA所需要解決的一個核心問題是維護模型的持續有效性, 即當根據模型構造出實際系統之后, 對模型的修改仍可以自動反映到已實現的系統中, 而不是每次重新生成一個新的系統. 或者說MDA應當如何支持實現層面的重構. 為了解決這個問題, 一般的實現策略是建立完整的程序模型, 提供一個強大的集成開發工具, 可以在一個特意構造出的IDE環境中對模型進行調試, 修正, 盡量避免程序員直接接觸實現代碼, 確保一切細節盡在單一開發工具(單一信息驅動源)的掌握之中. 但是很顯然, 這樣一個大一統的開發工具在各個層面(如數據庫設計, 表單設計等)都只能是專業工具的一個簡化版. too simple, sometimes naive. 當我們需要對程序有較深入的控制力的時候, 這些工具往往就很難起什么作用了, 甚至會成為某種障礙.
    ? 在witrix平臺的設計中, 也有部分"MDA"的內容. 只是我們的設計思想是Physical Model Driven(物理模型驅動), 而不是Logical Model Driven(邏輯模型驅動). 具體做法是
    1. 采用power designer建立數據庫物理模型(PDM 而不是 CDM), 然后根據一些命名約定和附加注釋(例如pdm中的package映射為java實體類的package, pdm的domain指定字段是否附件字段等)來標注出物理元素的邏輯含義.
    2. 解析pdm文件, 生成hibernate映射文件(.hbm.xml), meta文件(.meta.xml), spring注冊文件(.action.xml)等
    3. 通過jboss的hibernate-tools工具生成java實體類.
    ???
    ? 根據自動生成的配置文件, 可以直接完成對于數據庫的增刪改查操作, 包括維護一對多,多對多等關聯關系. 此后我們可以根據程序具體需求, 對生成的文件進行修改. 通過一些程序設計技巧, 我們可以實現手工修改的代碼與工具自動生成的代碼之間始終有明確的邊界, 從而可以做到pdm與代碼的自動同步, 不需要手工進行任何調整.
    ? 我們選擇從PDM出發的一個基本理由在于, 從高層模型向下, 路徑是不確定的,而從物理模型向上,路徑是確定的. 在pdm中我們需要做的不是補充細節(增加新息)而是標注出已經存在的邏輯概念。選擇PDM建模也集中體現了我所一直倡導的Partial Model的概念. PDM模型并不包含界面的具體展現方式, 也不包含更加復雜的業務處理過程, 它只是完整程序模型的一部分. 我們不試圖建立一種完全的模型,追求概念上的一種自我完備性, 而只是關注當某些被共享的模型元素發生變化的時候, 這些變化如何以保真的方式傳播到系統各個角落. 實際上一旦獲得物理實現,高層模型在某種意義上就變得不再那么重要了. 為了支持模型的局部修改, 我們只需要從物理模型中提取部分信息,而不需要恢復出一個完整的業務模型。我們不需要把一個高層概念在各個層面的表達都考慮清楚,我們只需要知道某一特定的物理模型應該對應的部分高層模型即可。
    ? 目前國內一些軟件開發平臺也包含所謂MDA的部分, 例如浪潮Loushang MDA (www.loushang.com)號稱不需要寫一行代碼,定制出所需應用系統. 可從其技術白皮書來看, 它所謂的Model雖然是使用UML來建立, 但是大家似乎故意忘記了對象是成員變量+行為構成,不包含行為模型的對象模型不過是數據模型的一種翻版而已. 從Loushang MDA的元模型對象的UML圖可以看出, MofTab, MofReference等固定了幾種界面顯示模式, 似乎其MDA只是針對既定場景應用的一種預制代碼框架. 從我們的實踐來說, 數據模型驅動的應用并不需要限制在基礎數據對象維護這一非常特定的領域,而可以在通用應用領域發揮作用。

    Feedback

    # re: Physical Model Driven  回復  更多評論   

    2006-09-11 10:43 by deardream
    如果我們采用這種由物理模型向上的設計流程,還是從關系型數據庫的角度去出發,那我們為什么還要去使用Hibernate這種O/R Mapping框架?程序員的思維還是從關系型數據庫的角度去思考的,那又何必去搞什么Model呢,SQL不是更加Native?或者說我們只是為了Model而Model,為了Object而Object?

    一點個人的小觀點,只為探討。

    # re: Physical Model Driven  回復  更多評論   

    2006-09-11 21:15 by canonical
    使用hibernate不是為了從面向對象的觀點思考設計系統這種純學術性的目的,而是為了更快更好的解決我們所需要面對的問題。 witrix平臺中對于hibernate的使用是相當深入的,包括對于hibernate的多處hack.
    我們需要模型是因為我們需要一種控制力, 不在于是否native. 從物理模型恢復邏輯模型比較直接,并不復雜, 而且我們并不試圖恢復整個邏輯模型,而是得到我們所需要的信息即可。
    面向對象是什么? 首先它是一種相關性的聚集。

    # re: Physical Model Driven  回復  更多評論   

    2006-09-12 10:37 by deardream
    您的回復讓我更有興趣去了解witrix的開發過程了,一個新的項目來了,開發團隊的各種角色如何有序的使用witrix?可否描述一番?

    # re: Physical Model Driven  回復  更多評論   

    2006-10-18 13:37 by creation_zy
    >>對象是成員變量+行為構成
    對象是類地實例,所謂的面向對象,實際上都是在類上做功夫,切不可混淆了。
    業界沒有有效描述行為的能力,這是一個致命的缺陷。我們已經完成了對面向對象思想以及UML體系的擴展,已經演繹出了一套相當完備的機制,解決了靜態結構和動態行為的描述以及結合的問題。在我們的Matrix系統內,相互關聯的元知識組成了重重無盡的華嚴帝網,可以發揮無盡的能量:)
    主站蜘蛛池模板: 亚洲人成色99999在线观看| 久久伊人久久亚洲综合| 亚洲人成色777777精品| 啦啦啦高清视频在线观看免费| 337p日本欧洲亚洲大胆精品555588 | 成人在线免费看片| 亚洲国产综合精品中文第一区| 永久免费av无码入口国语片| 亚洲无av在线中文字幕| a毛片全部播放免费视频完整18| 久久久久久久尹人综合网亚洲| 免费人成在线观看网站| 久久亚洲熟女cc98cm| 黄色网址免费观看| 亚洲乱码在线观看| 国产成人免费片在线观看| 免费国产a理论片| 久久久精品国产亚洲成人满18免费网站| 国产日韩在线视频免费播放| 国精无码欧精品亚洲一区| 69免费视频大片| 亚洲午夜理论片在线观看| 亚洲国产精品丝袜在线观看| 永久免费A∨片在线观看| 亚洲综合久久久久久中文字幕| 永久免费的网站在线观看| 亚洲AV成人精品日韩一区| 久久夜色精品国产亚洲av| 国产白丝无码免费视频| 亚洲黄页网在线观看| 亚洲高清成人一区二区三区| 99视频免费播放| 亚洲一区二区三区成人网站| 亚洲精品久久久www| 无码人妻丰满熟妇区免费| 亚洲日本va一区二区三区| 亚洲一区爱区精品无码| 青苹果乐园免费高清在线| 国产成人1024精品免费| 亚洲一级毛片免费看| 在线播放亚洲第一字幕|