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

    Feedback

    # re: Physical Model Driven  回復(fù)  更多評(píng)論   

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

    一點(diǎn)個(gè)人的小觀點(diǎn),只為探討。

    # re: Physical Model Driven  回復(fù)  更多評(píng)論   

    2006-09-11 21:15 by canonical
    使用hibernate不是為了從面向?qū)ο蟮挠^點(diǎn)思考設(shè)計(jì)系統(tǒng)這種純學(xué)術(shù)性的目的,而是為了更快更好的解決我們所需要面對(duì)的問題。 witrix平臺(tái)中對(duì)于hibernate的使用是相當(dāng)深入的,包括對(duì)于hibernate的多處hack.
    我們需要模型是因?yàn)槲覀冃枰环N控制力, 不在于是否native. 從物理模型恢復(fù)邏輯模型比較直接,并不復(fù)雜, 而且我們并不試圖恢復(fù)整個(gè)邏輯模型,而是得到我們所需要的信息即可。
    面向?qū)ο笫鞘裁矗?首先它是一種相關(guān)性的聚集。

    # re: Physical Model Driven  回復(fù)  更多評(píng)論   

    2006-09-12 10:37 by deardream
    您的回復(fù)讓我更有興趣去了解witrix的開發(fā)過程了,一個(gè)新的項(xiàng)目來了,開發(fā)團(tuán)隊(duì)的各種角色如何有序的使用witrix?可否描述一番?

    # re: Physical Model Driven  回復(fù)  更多評(píng)論   

    2006-10-18 13:37 by creation_zy
    >>對(duì)象是成員變量+行為構(gòu)成
    對(duì)象是類地實(shí)例,所謂的面向?qū)ο螅瑢?shí)際上都是在類上做功夫,切不可混淆了。
    業(yè)界沒有有效描述行為的能力,這是一個(gè)致命的缺陷。我們已經(jīng)完成了對(duì)面向?qū)ο笏枷胍约癠ML體系的擴(kuò)展,已經(jīng)演繹出了一套相當(dāng)完備的機(jī)制,解決了靜態(tài)結(jié)構(gòu)和動(dòng)態(tài)行為的描述以及結(jié)合的問題。在我們的Matrix系統(tǒng)內(nèi),相互關(guān)聯(lián)的元知識(shí)組成了重重?zé)o盡的華嚴(yán)帝網(wǎng),可以發(fā)揮無盡的能量:)
    主站蜘蛛池模板: 嫩草在线视频www免费看| GOGOGO高清免费看韩国| 在线观看日本免费a∨视频| 久久亚洲AV成人无码| 99久久99久久精品免费观看| 亚洲日本在线观看| 日本最新免费网站| 亚洲va久久久久| 毛片免费观看的视频在线| 国产精品亚洲一区二区麻豆| 青草草在线视频永久免费| 亚洲av无一区二区三区| 四虎永久免费影院| 精品国产免费一区二区三区| 国产V亚洲V天堂A无码| 啦啦啦完整版免费视频在线观看| 亚洲黄色在线观看| 夫妻免费无码V看片| 美女被爆羞羞网站在免费观看| 亚洲日韩精品无码专区网站| a级毛片100部免费观看| 亚洲精品视频免费在线观看| 成人免费午夜在线观看| 婷婷国产偷v国产偷v亚洲| 中文字幕亚洲一区二区va在线| 免费无码作爱视频| 亚洲一卡二卡三卡四卡无卡麻豆| 精品国产免费一区二区| 亚欧洲精品在线视频免费观看 | 国产精品亚洲va在线观看| 亚洲精品国产V片在线观看| 久久精品国产大片免费观看| 色婷五月综激情亚洲综合| 亚洲 综合 国产 欧洲 丝袜| 免费A级毛片无码A∨| 亚洲AV无码一区二区三区电影 | 亚洲人成高清在线播放| 免费一级黄色毛片| 97青青草原国产免费观看| 国产精品亚洲一区二区三区在线观看| 亚洲国产精彩中文乱码AV|