﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>博客园-阿飞外传</title><link>http://www.cnblogs.com/xiterator/</link><description>模型驱动思想</description><language>zh-cn</language><lastBuildDate>Sat, 11 Oct 2008 05:21:01 GMT</lastBuildDate><pubDate>Sat, 11 Oct 2008 05:21:01 GMT</pubDate><ttl>60</ttl><item><title>ruby-core</title><link>http://www.cnblogs.com/xiterator/archive/2006/09/21/511063.html</link><dc:creator>阿飞外传</dc:creator><author>阿飞外传</author><pubDate>Thu, 21 Sep 2006 10:44:00 GMT</pubDate><guid>http://www.cnblogs.com/xiterator/archive/2006/09/21/511063.html</guid><wfw:comment>http://www.cnblogs.com/xiterator/comments/511063.html</wfw:comment><comments>http://www.cnblogs.com/xiterator/archive/2006/09/21/511063.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/xiterator/comments/commentRss/511063.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xiterator/services/trackbacks/511063.html</trackback:ping><description><![CDATA[<p><img src="http://www.cnblogs.com/images/cnblogs_com/xiterator/ruby-core.GIF" border=0><br><br>包中的是ruby的核心类（算是M2+M3级） <br>外面的User是M1级。 虚线是instance_of关系 <br>具有金穗带构架，Object.instance_of?(Class) = true, Class.ancestors.include?(Object) = true <br><br>不是很明白，中间杀出个程咬金：Module <br><br>总体原则是，核心类簇中继承链中的叶类作为实例化关系的祖先, 即Class <br><br>一些特征：<br>1）特定于某对象的方法（单例类实例的方法）<br>&nbsp; str = "sdfsdf"<br>&nbsp; def str.foo<br>&nbsp;&nbsp;&nbsp; puts "a per object method"<br>&nbsp; end</p>
<p>2）DSL特征，在Module类中增加方法，以便用户类在定义时调用。</p>
<p>class Module<br>&nbsp; @@doc = {}<br>&nbsp; def doc(str)<br>&nbsp;&nbsp;&nbsp; @@doc[self.name] = str<br>&nbsp; end<br>&nbsp; def Moduel.doc(aClass)<br>&nbsp;&nbsp;&nbsp; aClass = aClass.name if aClass.class &lt;= Module<br>&nbsp;&nbsp;&nbsp; @@doc[aClass]<br>&nbsp; end<br>end </p>
<p>class User<br>&nbsp; doc "here is the doc for user"<br>end<br>&nbsp;<br>3）条件定义</p>
<p>def foo <br>&nbsp; if $DEBUG<br>&nbsp;&nbsp;&nbsp; def foo<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; puts "debug version"<br>&nbsp;&nbsp;&nbsp; end<br>&nbsp;&nbsp; else<br>&nbsp; end<br>end&nbsp; <br><br>4）匿名类</p>
<p>class User<br>&nbsp;&nbsp; @class_val = 123<br>&nbsp;&nbsp; class &lt;&lt;self<br>&nbsp;&nbsp;&nbsp;&nbsp; def aClassMethod<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; puts @class_val<br>&nbsp;&nbsp;&nbsp;&nbsp; end<br>&nbsp;&nbsp; end<br>end<br>&nbsp;</p><img src ="http://www.cnblogs.com/xiterator/aggbug/511063.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42936/" target="_blank">[新闻]金融风暴改写富豪榜排名　巴菲特资产超盖茨</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>简单rails开发环境</title><link>http://www.cnblogs.com/xiterator/archive/2006/09/03/rails.html</link><dc:creator>阿飞外传</dc:creator><author>阿飞外传</author><pubDate>Sun, 03 Sep 2006 14:59:00 GMT</pubDate><guid>http://www.cnblogs.com/xiterator/archive/2006/09/03/rails.html</guid><wfw:comment>http://www.cnblogs.com/xiterator/comments/493960.html</wfw:comment><comments>http://www.cnblogs.com/xiterator/archive/2006/09/03/rails.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/xiterator/comments/commentRss/493960.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xiterator/services/trackbacks/493960.html</trackback:ping><description><![CDATA[<img src="http://www.cnblogs.com/images/cnblogs_com/xiterator/vi-1gif.jpg" border="0"><br><br>--- vi 编辑，ctrl-w + l/h 右左切换，shift+p将左边的文件在右边打开，:Ex打开当前编辑文件所在的目录<br>ctrl+PageUp/PageDown切换shell tab<br><br><img src="http://www.cnblogs.com/images/cnblogs_com/xiterator/vi-2gif.jpg" border="0"><br><br>--- WEBrick启动<br><br><img src="http://www.cnblogs.com/images/cnblogs_com/xiterator/vi-3.jpg" border="0"><br><br>－－产生器调用。<br><img src ="http://www.cnblogs.com/xiterator/aggbug/493960.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42935/" target="_blank">[新闻]红杉资本发出严重警告：黄金时代已成历史</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>关于MDA的长期等待</title><link>http://www.cnblogs.com/xiterator/archive/2006/03/07/344786.html</link><dc:creator>阿飞外传</dc:creator><author>阿飞外传</author><pubDate>Tue, 07 Mar 2006 07:33:00 GMT</pubDate><guid>http://www.cnblogs.com/xiterator/archive/2006/03/07/344786.html</guid><wfw:comment>http://www.cnblogs.com/xiterator/comments/344786.html</wfw:comment><comments>http://www.cnblogs.com/xiterator/archive/2006/03/07/344786.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/xiterator/comments/commentRss/344786.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xiterator/services/trackbacks/344786.html</trackback:ping><description><![CDATA[&nbsp; 
<P><SPAN>很久没有写</SPAN><SPAN lang=EN-US>blog</SPAN><SPAN>了，有工作原因、有对</SPAN><SPAN lang=EN-US><a title="MDA" href="http://www.mdaChina.net" >MDA</a></SPAN><SPAN>的思考和（初浅）实践原因。</SPAN></P>
<P><SPAN>下面谈一点关于</SPAN><SPAN lang=EN-US><a title="MDA" href="http://www.mdaChina.net" >MDA</a></SPAN><SPAN>的感受。</SPAN></P>
<P><SPAN lang=EN-US>1.</SPAN><SPAN>　</SPAN><SPAN lang=EN-US>PIM-PSM-CODE</SPAN></P>
<P><SPAN>这是</SPAN><SPAN lang=EN-US><a title="MDA" href="http://www.mdaChina.net" >MDA</a></SPAN><SPAN>眼中最</SPAN><SPAN lang=EN-US><a title="MDA" href="http://www.mdaChina.net" >MDA</a></SPAN><SPAN>的软件开发方法，也有工具如</SPAN><SPAN lang=EN-US>OptimalJ</SPAN><SPAN>实现了这种范式，当初在成立</SPAN><SPAN lang=EN-US>mdachina.net</SPAN><SPAN>的时候，这个工具被俺之辈如视</SPAN><SPAN lang=EN-US><a title="MDA" href="http://www.mdaChina.net" >MDA</a></SPAN><SPAN>之珍宝，俺则是把它的文档全看了，例子也做了一些。以为自此可以</SPAN><SPAN lang=EN-US>draw &amp; run with a true <a title="MDA" href="http://www.mdaChina.net" >MDA</a> tool</SPAN><SPAN>，可是事实并非如此。</SPAN></P>
<P><SPAN lang=EN-US>OptimalJ</SPAN><SPAN>对于</SPAN><SPAN lang=EN-US>PIM</SPAN><SPAN>和</SPAN><SPAN lang=EN-US>PSM</SPAN><SPAN>同步做的不好，几个</SPAN><SPAN lang=EN-US>PIM-&gt;PSM</SPAN><SPAN>，</SPAN><SPAN lang=EN-US>PSM-&gt;PIM</SPAN><SPAN>来回下来，建模者估计会对</SPAN><SPAN lang=EN-US>OptimalJ</SPAN><SPAN>的模型同步逻辑（通过某种标记表示模型的是否可更新</SPAN><SPAN lang=EN-US>&#8230;</SPAN><SPAN>）晕倒。</SPAN></P>
<P><SPAN lang=EN-US>OptimalJ</SPAN><SPAN>对于</SPAN><SPAN lang=EN-US>CODE</SPAN><SPAN>模型缺乏更逻辑的分离机制。在</SPAN><SPAN lang=EN-US>CODE</SPAN><SPAN>保护块中编程而不是利用语言分离机制（如类继承，</SPAN><SPAN lang=EN-US>import</SPAN><SPAN>之类），将导致很难管理机制与手工代码的逻辑边界，增加了代码的混乱。也许除了用不同颜色区分手工代码与机制代码之外，还要加上另一层</SPAN><SPAN lang=EN-US>UI</SPAN><SPAN>（模型）表示这种区别？，明明</SPAN><SPAN lang=EN-US>PIM</SPAN><SPAN>，</SPAN><SPAN lang=EN-US>PSM</SPAN><SPAN>清楚地表示了业务模型和技术模型，到了</SPAN><SPAN lang=EN-US>CODE</SPAN><SPAN>模型，基本上是另外一回事了（因为</SPAN><SPAN lang=EN-US>PIM</SPAN><SPAN>和</SPAN><SPAN lang=EN-US>PSM</SPAN><SPAN>具有广谱效应：一个模型映射为多个代码段），可是要在</SPAN><SPAN lang=EN-US>CODE</SPAN><SPAN>模型中增加手工代码，除了保护段外没有更好的、更逻辑的方法，则是很令人失望的。</SPAN></P>
<P><SPAN>当然不只是</SPAN><SPAN lang=EN-US>OptimalJ</SPAN><SPAN>才有这种问题，其它号称</SPAN><SPAN lang=EN-US>true <a title="MDA" href="http://www.mdaChina.net" >MDA</a></SPAN><SPAN>工具的，也有类似的问题。这里不一一表来。</SPAN></P>
<P><SPAN lang=EN-US><SPAN>2.<SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN>仍是重复工作</SPAN></P>
<P><SPAN>当前</SPAN><SPAN lang=EN-US><a title="MDA" href="http://www.mdaChina.net" >MDA</a></SPAN><SPAN>的主流还在与</SPAN><SPAN lang=EN-US>3GL</SPAN><SPAN>做相同的工作，类描述，代码生成，粒度太小，做个小应用还累的半死：安全，集群、</SPAN><SPAN lang=EN-US>cache</SPAN><SPAN>等等还要手工编码（设计就没图了）。因为几乎所有的</SPAN><SPAN lang=EN-US><a title="MDA" href="http://www.mdaChina.net" >MDA</a></SPAN><SPAN>工具都有一个底层假设的边界：</SPAN><SPAN lang=EN-US>OptimalJ/ArchStyler</SPAN><SPAN>只做了常用</SPAN><SPAN lang=EN-US>J2EE</SPAN><SPAN>的建模和自动生成，</SPAN><SPAN lang=EN-US>androMDA</SPAN><SPAN>要好一点，除了常用</SPAN><SPAN lang=EN-US>J2EE</SPAN><SPAN>还有一些轻量级框架，而那种像</SPAN><SPAN lang=EN-US>VE</SPAN><SPAN>，</SPAN><SPAN lang=EN-US>xtUML</SPAN><SPAN>则只能在更小的范围内可以自动化。事实上，一旦需要超出</SPAN><SPAN lang=EN-US><a title="MDA" href="http://www.mdaChina.net" >MDA</a></SPAN><SPAN>工具的底层假设边界，则一切得自已实现：</SPAN><SPAN lang=EN-US>code</SPAN><SPAN>，</SPAN><SPAN lang=EN-US>modeling, metamodeling, code generator design</SPAN><SPAN>（</SPAN><SPAN lang=EN-US>CMMC</SPAN><SPAN>）。然后再是模型集成，这不是一件容易的事，似乎</SPAN><SPAN lang=EN-US><a title="MDA" href="http://www.mdaChina.net" >MDA</a></SPAN><SPAN>、</SPAN><SPAN lang=EN-US>MDD</SPAN><SPAN>之类的方法学，强烈地依赖于开发团队有自治建模</SPAN><SPAN lang=EN-US>/</SPAN><SPAN>元建模的能力，在现在这种快速</SPAN><SPAN lang=EN-US>delive</SPAN><SPAN>系统的时代，谁有时间做</SPAN><SPAN lang=EN-US>metamodeling</SPAN><SPAN>，除了俺这种没事找事的人。</SPAN></P>
<P><SPAN lang=EN-US>3.</SPAN><SPAN>关于复用</SPAN></P>
<P><SPAN>的确，在</SPAN><SPAN lang=EN-US><a title="MDA" href="http://www.mdaChina.net" >MDA</a></SPAN><SPAN>上下文中，模型（设计）复用变的更加真实，就是除了设计图纸的交流以外，还要在建模工具、代码生成器层面上做到复用的保证。</SPAN><SPAN lang=EN-US><a title="IP" href="http://intentsoft.com/" >IP</a></SPAN><SPAN>之父也说过类似的话：复用</SPAN><SPAN lang=EN-US>DSL</SPAN><SPAN>和产生器比复用结果组件好的多。可是若结果组件与模型没有太大差别（就像当前</SPAN><SPAN lang=EN-US>PIM</SPAN><SPAN>这种低级抽象），或者结果组件具有高度的可配置性（如</SPAN><SPAN lang=EN-US>EJB</SPAN><SPAN>、</SPAN><SPAN lang=EN-US>Spring Bean</SPAN><SPAN>的</SPAN><SPAN lang=EN-US>XML</SPAN><SPAN>配置），那么</SPAN><SPAN lang=EN-US>DSL</SPAN><SPAN>和产生器复用与高度可配置的组件复用并没有本质差别，前者更增加了开发费用。</SPAN></P>
<P><SPAN>奇怪的是，至今在</SPAN><SPAN lang=EN-US><a title="MDA" href="http://www.mdaChina.net" >MDA</a></SPAN><SPAN>环境下，大家还在研究</SPAN><SPAN lang=EN-US>UML</SPAN><SPAN>类图、状态图、对象图之类的语言级别的模型语义。对于含有领域级别的丰富语义的模型，很少见到公开发表。幸好有一个</SPAN><SPAN lang=EN-US><a title="MDA" href="http://www.mdaChina.net" >MDA</a></SPAN><SPAN>学者做了这方面的初期工作，在那里我们可以看到应用商业构架型技术构造的领域模型，如：</SPAN><SPAN lang=EN-US>CRM</SPAN><SPAN>应用的模型（</SPAN><SPAN lang=EN-US>money</SPAN><SPAN>，</SPAN><SPAN lang=EN-US>order</SPAN><SPAN>，</SPAN><SPAN lang=EN-US>person</SPAN><SPAN>等一套可复用的类）。可是，这方面的工作还少的可怜，试想我们做系统时，有多少次在使用</SPAN><SPAN lang=EN-US>money, order</SPAN><SPAN>，</SPAN><SPAN lang=EN-US>person</SPAN><SPAN>概念，有多少次在重复地为</SPAN><SPAN lang=EN-US>money, order</SPAN><SPAN>，</SPAN><SPAN lang=EN-US>person</SPAN><SPAN>建模？，从这个角度讲，领域模型库确实有用。但是领域模型库要到真正的结果组件，按</SPAN><SPAN lang=EN-US><a title="MDA" href="http://www.mdaChina.net" >MDA</a></SPAN><SPAN>的走法，同样存在</SPAN><SPAN lang=EN-US>PIM-PSM-CODE</SPAN><SPAN>的问题，还有不同的建模工具所导出的模型版本问题、</SPAN><SPAN lang=EN-US>UMLCASE</SPAN><SPAN>工具依赖的问题。这个痛苦的现实使得领域模型库更多是做为信息交流而不是</SPAN><SPAN lang=EN-US>drive</SPAN><SPAN>　</SPAN><SPAN lang=EN-US><a title="MDA" href="http://www.mdaChina.net" >MDA</a></SPAN><SPAN>机器。</SPAN></P>
<P><SPAN lang=EN-US>&nbsp;</SPAN><SPAN lang=EN-US>4.</SPAN><SPAN>关于丰富的应用</SPAN></P>
<P><SPAN>从当前</SPAN><SPAN lang=EN-US><a title="MDA" href="http://www.mdaChina.net" >MDA</a></SPAN><SPAN>实践来看，除了一些</SPAN><SPAN lang=EN-US>trivial</SPAN><SPAN>的系统可以快速开发以外，大的、另类的系统基本上是没有公开发表过。我们不能凭一两个（或是多个）成功的</SPAN><SPAN lang=EN-US>trivial</SPAN><SPAN>应用（</SPAN><SPAN lang=EN-US>petstore</SPAN><SPAN>，</SPAN><SPAN lang=EN-US>cafeshop</SPAN><SPAN>）就有足够的勇气说：任何系统都可以用</SPAN><SPAN lang=EN-US><a title="MDA" href="http://www.mdaChina.net" >MDA</a></SPAN><SPAN>方式解决。前面已说了，一旦需求超出</SPAN><SPAN lang=EN-US><a title="MDA" href="http://www.mdaChina.net" >MDA</a></SPAN><SPAN>工具所能提供的边界，你将走上：</SPAN><SPAN lang=EN-US>(CMMC)</SPAN><SPAN>的不归路，虽然有：</SPAN><SPAN lang=EN-US>GME(Generic Metmodling Environment)</SPAN><SPAN>，</SPAN><SPAN lang=EN-US>EMF</SPAN><SPAN>，之类的元建模工具，这些工具的逻辑其实不容易把握，除了在&#8220;元&#8221;字闹鬼以外，基本上与应用域无关，或者只是</SPAN><SPAN lang=EN-US>trivial</SPAN><SPAN>地表示一个应用域的概念和工具内实例化（而不是代码生成，这些工具都假设你可以很好地做代码生成工作），其它事情，</SPAN><SPAN lang=EN-US>you must CMMC</SPAN><SPAN>。</SPAN></P>
<P><SPAN>于是，俺最初幻想有这么一个工具具备强大的元级能力（像</SPAN><SPAN lang=EN-US>smalltalk</SPAN><SPAN>这种具有真反射能力的语言、工具和环境，像</SPAN><SPAN lang=EN-US>objecteeringUML</SPAN><SPAN>内置的模型操纵语言和强大的</SPAN><SPAN lang=EN-US>uml profile</SPAN><SPAN>与插件绑定），可以实现</SPAN><SPAN lang=EN-US>CMMC</SPAN><SPAN>的复杂工作，现实情况是它们仍然只是一种元建模的枷锁，元建模真的要这样做吗。</SPAN></P>
<P><SPAN lang=EN-US>5.</SPAN><SPAN>关于元建模</SPAN></P>
<P><SPAN>元建模一直被认为是</SPAN><SPAN lang=EN-US><a title="MDA" href="http://www.mdaChina.net" >MDA</a></SPAN><SPAN>的高阶应用，动不动就要</SPAN><SPAN lang=EN-US>MOF</SPAN><SPAN>重型扩展来解决领域建模的问题，其实在俺看来：重型扩展基本没有必要，而且导致模型重复，试想重型扩展是不是还要再建一遍类似的</SPAN><SPAN lang=EN-US>MOF::Class,MOF::Attribute,MOF::Association</SPAN><SPAN>概念？，</SPAN><SPAN lang=EN-US>UML profile</SPAN><SPAN>比</SPAN><SPAN lang=EN-US>MOF</SPAN><SPAN>重型扩展更好，因为</SPAN><SPAN lang=EN-US>UML profile</SPAN><SPAN>不需要重复设计</SPAN><SPAN lang=EN-US>MOF/UML</SPAN><SPAN>结构。</SPAN></P>
<P><SPAN lang=EN-US>6.</SPAN><SPAN>关于</SPAN><SPAN lang=EN-US>LOP</SPAN><SPAN>，</SPAN><SPAN lang=EN-US><a title="GP" href="http://www.program-transformation.org/Transform/GenerativeProgrammingWiki" >GP</a></SPAN><SPAN>，</SPAN><SPAN lang=EN-US>MDD</SPAN></P>
<P><SPAN lang=EN-US><a title="MDA" href="http://www.mdaChina.net" >MDA</a></SPAN><SPAN>的路一旦走的不顺，什么变种的方法都来了，</SPAN><SPAN lang=EN-US>LOP</SPAN><SPAN>（</SPAN><SPAN lang=EN-US>Language-Oriented Programming</SPAN><SPAN>），</SPAN><SPAN lang=EN-US><a title="GP" href="http://www.program-transformation.org/Transform/GenerativeProgrammingWiki" >GP</a></SPAN><SPAN>（</SPAN><SPAN lang=EN-US>Generative Programming</SPAN><SPAN>），</SPAN><SPAN lang=EN-US>MDD</SPAN><SPAN>（</SPAN><SPAN lang=EN-US>Model-Driven Development</SPAN><SPAN>），</SPAN><SPAN lang=EN-US><a title="MDSD" href="http://www.mdsd.info/mdsd_cm/headlines.php" >MDSD</a></SPAN><SPAN>（</SPAN><SPAN lang=EN-US>Model-Driven Software Development</SPAN><SPAN>），它们或多或少地采用了翻译范式：由高层抽象到底层实现，以更灵活的领域概念表示手段。现在看来，没有具体领域的涉及和积累，这些工具或方法只能是说教。<BR><BR>待修正。。。</SPAN></P></SPAN><img src ="http://www.cnblogs.com/xiterator/aggbug/344786.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42934/" target="_blank">[新闻]2008年10月11日科技博客精选</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>Is MOF the kernel language of MDA langs family</title><link>http://www.cnblogs.com/xiterator/archive/2005/08/21/219833.html</link><dc:creator>阿飞外传</dc:creator><author>阿飞外传</author><pubDate>Sun, 21 Aug 2005 15:11:00 GMT</pubDate><guid>http://www.cnblogs.com/xiterator/archive/2005/08/21/219833.html</guid><wfw:comment>http://www.cnblogs.com/xiterator/comments/219833.html</wfw:comment><comments>http://www.cnblogs.com/xiterator/archive/2005/08/21/219833.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/xiterator/comments/commentRss/219833.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xiterator/services/trackbacks/219833.html</trackback:ping><description><![CDATA[<P>Fig.2.4 shows a segment extracted from the book <EM>Concepts, Techniques, and Models&nbsp;of Computer Programming(ctmCP)<BR></EM><BR><IMG src="http://www.cnblogs.com/images/cnblogs_com/xiterator/kenel%20lang.GIF" border=0></P>
<P>To seperate the Practical lang (P, PL) from the Kernel lang (K, KL),&nbsp; we can use&nbsp;a namespace liked&nbsp;mechanism to rewrite the PL prog as follows:&nbsp;&nbsp;<BR>P::fun K::{ P::Sqr P::X K::} P::X K::* P::X K::end<BR>P::B K::= K::{ P::Sqr K::{ P::Sqr P::A K::} K::}<BR><BR>Above&nbsp;shows that the constructions of KL can be&nbsp; reused in a PL prog.<BR>&nbsp;<BR>if PL is UML and KL is MOF:</P>
<P>1) how are MOF first-class concepts reused in UML, is an instance of MOF subset of an instance of UML?<BR><BR>2) how is an instance of&nbsp;UML&nbsp;translated into an instance of MOF? </P>
<P>3) how is an instance of MOF&nbsp;running and the result is still an instance of MOF?</P>
<P>4) if HUTN is a text lang for MOF, how is a HUTN prog&nbsp;running and the result can still&nbsp; be described by HUTN?</P>
<P>Although the&nbsp;second question is partially solved by UML2MOF(a sub-tool of MDR), but i think the new abstractions of UML, such as Action, Message, Event are thrown away by UML2MOF.&nbsp; That is to say that&nbsp;NO MOF first-class concepts are corresponding to them, such as the translation from an instance of UML::Message to an instance of MOF::Class will lose the meaning of UML::Message. This is key problem of <A title=MDA href="http://www.mdachina.net/"><A title=MDA href="http://www.mdachina.net/"><A title=MDA href="http://www.mdachina.net/"><A title=MDA href="http://www.mdachina.net/"><A title=MDA href="http://www.mdachina.net/"><A title=MDA href="http://www.mdachina.net/"><A title=MDA href="http://www.mdachina.net/"><A title=MDA href="http://www.mdachina.net/"><A title=MDA href="http://www.mdachina.net/"><a title="MDA" href="http://www.mdaChina.net" >MDA</a></A></A></A></A></A></A></A></A></A> langs family.</P>
<P>This also give us a&nbsp; tip: using what formalism (MOF,UML,CWM) to describe a grammar&nbsp;of a target lang is NOT the key concern,&nbsp;we can use any metamodel to describe the grammar, but can&nbsp;we give the real meaning to the target lang?<BR></P><img src ="http://www.cnblogs.com/xiterator/aggbug/219833.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42933/" target="_blank">[新闻]搞死开心网还是搞活他？</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>graduated</title><link>http://www.cnblogs.com/xiterator/archive/2005/08/12/213463.html</link><dc:creator>阿飞外传</dc:creator><author>阿飞外传</author><pubDate>Fri, 12 Aug 2005 07:43:00 GMT</pubDate><guid>http://www.cnblogs.com/xiterator/archive/2005/08/12/213463.html</guid><wfw:comment>http://www.cnblogs.com/xiterator/comments/213463.html</wfw:comment><comments>http://www.cnblogs.com/xiterator/archive/2005/08/12/213463.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/xiterator/comments/commentRss/213463.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xiterator/services/trackbacks/213463.html</trackback:ping><description><![CDATA[so&nbsp; i&nbsp; should&nbsp; drop the&nbsp; post&nbsp; 'i&nbsp;
need&nbsp; a&nbsp; job'. Thanks to all the people in <a title="MDA" href="http://www.mdaChina.net">MDA</a> QQ groups.<br><img src ="http://www.cnblogs.com/xiterator/aggbug/213463.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42932/" target="_blank">[新闻]网络书店“新”军</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>语言内实例表示机制  类型信息隐藏  MOF自描述</title><link>http://www.cnblogs.com/xiterator/archive/2005/08/12/213423.html</link><dc:creator>阿飞外传</dc:creator><author>阿飞外传</author><pubDate>Fri, 12 Aug 2005 06:52:00 GMT</pubDate><guid>http://www.cnblogs.com/xiterator/archive/2005/08/12/213423.html</guid><wfw:comment>http://www.cnblogs.com/xiterator/comments/213423.html</wfw:comment><comments>http://www.cnblogs.com/xiterator/archive/2005/08/12/213423.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/xiterator/comments/commentRss/213423.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xiterator/services/trackbacks/213423.html</trackback:ping><description><![CDATA[<br>
语言内实例表示机制：一个语言除提供自定义类型描述外，是否提供了自定义类型的相应实例的描述机制，并提供实例与类型的兼容性确认(validation)？，提供语言内实例表示机制的语
言有：XML（XMLSchema/XMLDoc），maude（类别规范/对象项），UML（UML::Class等/UML::
InstanceSpecification），MOF（MOF::Class/MOF::Object）。上面的列表应该是远不完全的。
Smalltalk提供尽可能多的inspect及全反射（inspect me, change me)是否是与不能提供实例表示机制有关？<br>
<br>
类型信息隐藏：将类型信息编码成某个类型库的实例，如：用MOF::Object实例描述MOF，用UML::InstanceSpecification描述UML，a XML Schema is a XML Doc。<br>
<br>
MOF自描述：用MOF::Object等类型的实例描述MOF。<br>
<br>
当用两个内容无关的类型库分别描述：自定义的类型 和
前者的实例时，就是用内容无关的类型描述内容相关的类型及其实例。或者说是语言ontology与内容ontolog的正交性，或者说内容
ontology及其实例以密文方式嵌入到语言ontology实例的明文中。<br>
<br>
语言内实例表示机制对于MDA而言是重要的，意味着：you can touch and change your instances by type-in your
instances，更少控制的实例化（because you can type-in your instances of your
types, even the object identifiers)，在closed world里定义语言的操作语义变得更方便，and more（actually, i don't know）<br>
<br>
相关联系：prototype based OO -XMLSchema/XMLDoc-语言类型/内容类型-自描述-动态语言-全反射-数据与程序的不可区分(lisp)<br>
<br><img src ="http://www.cnblogs.com/xiterator/aggbug/213423.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42932/" target="_blank">[新闻]网络书店“新”军</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>图模式-续</title><link>http://www.cnblogs.com/xiterator/archive/2005/04/19/140791.html</link><dc:creator>阿飞外传</dc:creator><author>阿飞外传</author><pubDate>Tue, 19 Apr 2005 13:18:00 GMT</pubDate><guid>http://www.cnblogs.com/xiterator/archive/2005/04/19/140791.html</guid><wfw:comment>http://www.cnblogs.com/xiterator/comments/140791.html</wfw:comment><comments>http://www.cnblogs.com/xiterator/archive/2005/04/19/140791.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/xiterator/comments/commentRss/140791.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xiterator/services/trackbacks/140791.html</trackback:ping><description><![CDATA[<p><img height="464" hspace="5" src="http://www.cnblogs.com/images/cnblogs_com/xiterator/图模式.gif" width="640" align="baseline" /> 
<br/>--图模式（文法的设计模式）。
</p>
<p>(omod PERSON is</p>
<p>&#160;&#160;&#160; inc HUMAN .</p>
<p>&#160;&#160;&#160; inc CONVERSION .</p>
<p>&#160;&#160;&#160; inc CONFIGURATION .</p>
<p>&#160;&#160;&#160; class Person | name : String, age : Int .</p>
<p>&#160;&#160;&#160; subclass Person &lt; Human .</p>
<p></p>
<p>&#160;&#160;&#160;&#160;op getName :&#160;Object -&gt; String .</p>
<p>&#160;&#160;&#160; op setName : Object String -&gt; Object .</p>
<p></p>
<p>&#160;&#160;&#160; msgs name : Oid Oid -&gt; Msg .</p>
<p>&#160;&#160;&#160; msgs name-r : Oid String -&gt; Msg .</p>
<p></p>
<p>vars X O : Oid .</p>
<p>vars N N1 : String .</p>
<p>vars A : Int .</p>
<p></p>
<p>eq &#160;getName(&lt; X : Person | name : N &gt;) = N .</p>
<p>eq setName(&lt; X : Person | name : N&gt;, N1) = &lt; X : Person | name : N1 &gt; .</p>
<p></p>
<p>rl [Person.name] :&#160; name(X, O) &lt; X : Person | name : N &gt;&#160; =&gt; &lt; X : Person | &gt; name-r(O, N) .</p>
<p></p>
<p>endom)</p><img src ="http://www.cnblogs.com/xiterator/aggbug/140791.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42931/" target="_blank">[新闻]百度C2C电子商务平台“有啊”youa.com上线</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>符号软件工程（SSE） next MDA？</title><link>http://www.cnblogs.com/xiterator/archive/2005/03/28/126924.html</link><dc:creator>阿飞外传</dc:creator><author>阿飞外传</author><pubDate>Sun, 27 Mar 2005 23:40:00 GMT</pubDate><guid>http://www.cnblogs.com/xiterator/archive/2005/03/28/126924.html</guid><wfw:comment>http://www.cnblogs.com/xiterator/comments/126924.html</wfw:comment><comments>http://www.cnblogs.com/xiterator/archive/2005/03/28/126924.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/xiterator/comments/commentRss/126924.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xiterator/services/trackbacks/126924.html</trackback:ping><description><![CDATA[<br/>元建模、PIM建模和转换、PSM建模和转换、技术空间（Jean-Bezivin的说法） and with the promise of vertical model transformation, such as PIM2PSM，XMI to Grammar，Generator（Generative Programming），Program transformation，。。。 
<br/>
<br/>似乎大有&#8220;符号软件工程&#8221;（SSE：Symbol Software Engineering）的味道，将平台看成新一轮的机器，只要在有保证的垂直转换标准下（或偏转换），我们可以在平台元模型之上， 大搞符号软件工程：符号定义（公理语义-说不清楚的假设，真有语义存在吗？），符号使用，符号重构、转换（将语义映射到另一组符号集，真有语义存在吗？）、组合&amp;重用、验证、模拟（符号的meaning的一种自表象和自推理），垂直转换（符号的meaning的一种平台表象途径），运行（符号的meaning的一种平台表象），测试（符号的meaning的一种平台推理），产品（符号衍生物），符号挖掘，符号定义。。。<img src ="http://www.cnblogs.com/xiterator/aggbug/126924.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42930/" target="_blank">[新闻]Silverlight 2.0正式版下周发布</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>Algebra operator declaration 's UML profile</title><link>http://www.cnblogs.com/xiterator/archive/2005/03/26/126275.html</link><dc:creator>阿飞外传</dc:creator><author>阿飞外传</author><pubDate>Sat, 26 Mar 2005 07:12:00 GMT</pubDate><guid>http://www.cnblogs.com/xiterator/archive/2005/03/26/126275.html</guid><wfw:comment>http://www.cnblogs.com/xiterator/comments/126275.html</wfw:comment><comments>http://www.cnblogs.com/xiterator/archive/2005/03/26/126275.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/xiterator/comments/commentRss/126275.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xiterator/services/trackbacks/126275.html</trackback:ping><description><![CDATA[<br/>用MagicDraw 9.0设计一个Algebra operator declaration的UML profile，（好像MagicDraw 9.0似乎不支持执行UML profile中定义的约束？）： 
<br/>
<br/>
<br/><img height="346" hspace="5" src="http://www.cnblogs.com/images/cnblogs_com/xiterator/algebraItemProfile.jpg" width="640" align="baseline" /> 
<br/>
<br/><img height="269" hspace="5" src="http://www.cnblogs.com/images/cnblogs_com/xiterator/algebraItemProfile2.jpg" width="640" align="baseline" /><img src ="http://www.cnblogs.com/xiterator/aggbug/126275.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42925/" target="_blank">[新闻]Wikipedia“变心”，力挺Ubuntu</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>应用元建模读书笔记</title><link>http://www.cnblogs.com/xiterator/archive/2005/03/22/123808.html</link><dc:creator>阿飞外传</dc:creator><author>阿飞外传</author><pubDate>Tue, 22 Mar 2005 14:57:00 GMT</pubDate><guid>http://www.cnblogs.com/xiterator/archive/2005/03/22/123808.html</guid><wfw:comment>http://www.cnblogs.com/xiterator/comments/123808.html</wfw:comment><comments>http://www.cnblogs.com/xiterator/archive/2005/03/22/123808.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/xiterator/comments/commentRss/123808.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xiterator/services/trackbacks/123808.html</trackback:ping><description><![CDATA[应用元建模读书笔记，写的很粗，仅供学习使用。 
<br/>
<br/><A href="http://www.cnblogs.com/Files/xiterator/NoteOnAppMetamodeling.rar"></a><A href="http://www.cnblogs.com/Files/xiterator/NoteOnAppMetamodeling.rar"></a><A href="http://www.cnblogs.com/Files/xiterator/NoteOnAppMetamodeling.rar"></a><A href="http://www.cnblogs.com/Files/xiterator/NoteOnAppMetamodeling.rar">/Files/xiterator/NoteOnAppMetamodeling.rar</a><A href="http://www.cnblogs.com/Files/xiterator/NoteOnAppMetamodeling.rar"></a><img src ="http://www.cnblogs.com/xiterator/aggbug/123808.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42924/" target="_blank">[新闻]“不可破解”的加密技术出</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item></channel></rss>