请选择 进入手机版 | 继续访问电脑版
开启辅助访问
链路首页链路财经目前收录 币种 : 4908 交易所 : 310钱包 : 17 24H 交易量 : $43,403,137,051 总市值 : $245,388,183,835
2019
06/11
21:14
分享
评论
  • 大概年初的时候,就听到梅宏院士的成果“云-端融合系统的资源反射机制及高效互操作技术”获得了国家技术发明奖一等奖,而且很多的微信群里有褒贬不一的讨论,但都没有说明白到底是什么东东。之前的故事听多了,比如”透明计算“,就没有怎么去了解,去探索,去研究。



    之后,又听到不同渠道的人,谈到梅院士的这个成就,还是没有引起我太大的注意,因为与我何关,而且吧,院士这么高深的东西,我一介平民怎么能够理解得了,虽然是个技术热爱者。


    直到最近,在关注一些大数据的项目,和政府的大数据相关单位频繁接触。在这期间,持续的听到政府官员们说到梅院士的这个成果,说是能黑盒解析数据服务接口和结构化数据,实现各种第三方”云-端“数据的不用理解,不用分析,不用人工,的数据整合,从而打破数据隔离的孤岛。


    终于,激起了我的技术好奇心,一定去探探”公认的世界级技术挑战“到底是个什么东东?从下面的图,看到很多的新名词,高大上的名词,感觉很牛逼,其实还是不知道在云云什么,但是,听唬人的。还好,毕竟是经过大风大浪的人,还有独立思考,还有研究精神。



    网上的新闻,自媒体,讨论群,都是蜻蜓点水,根本不能解开这个迷,根本不能满足一个技术人的好奇心,那么,最严肃的方式,就是去搜寻和阅读项目后面的优秀论文。


    说到论文,一定要关注项目后面的杰出论文和它们的引用数,而Google Scholar则是最好的起点。先看引用多的文章。



    从这些论文的标题,大概能够猜到,是利用运行环境(runtime)时的程序的监控来获得程序运行的状态,调用,和数据的接口。第一眼瞟到Java,Javascript,大概会猜测到是不是在利用Java等语言的发射(reflection)机制,既然是国家奖,应该不会那么简单吧。


    那,到底是如何实现的呢?让我们来读读相关论文。第一篇,是引用最高的一篇。



    这篇文章揭示了怎么从观察(所以还需要用户在应用上,做很多的操作,积累案例)的一系列输入和输出对中,发现端和云之间的服务接口和输出结构。是的,首先,必须收集很多的用户使用系统时的输入调用,和输出结果。基本上,是一种类似于PBD(Program By Demos),或是Learning From Examples。


    就像论文中所说,”The key idea is to measure the co-occurrence of terms and cluster the terms into a set of concepts, and leverage these concepts to determine the similarity of inputs/outputs and operations.“,根据输入输出中的词汇和概念来计算相似度,这样才能聚类,从聚类中从而发现服务接口,和输出的数据。


    其次,对于一个复杂的数据服务,可能不只是一个数据服务接口,那么,就需要将多个服务接口,按照某种顺序串接起来。”We design a graph-based search model to find both the similar operations and the composible ones, according to the user’s requests. In our model, every operation is represented by a vertex in the graph and the potential composition opportunities are represented by the directed edges. Then, the discovery of similar operations is transformed to the traversal of vertexes, and that of composible operations is transformed to find the corresponding paths. “


    大家都知道,对于基于网页的Web服务,由于可以见到调用的URL和参数,而且输入输出都是明文,工程上来说,相对好做。


    那下面这篇论文,则揭示了在静态代码中,比如,Java App中,如何从静态代码分析来重构代码来发现和调用数据服务接口。



    就像论文中所描述的,首先静态分析代码发现服务接口部分,然后,重构这部分代码来完成系统的自定义的标准接口模型。是的,系统必须定义一种统一的标准接口模型,这样,不同的第三方应用间,才能通过统一的标准接口来互通数据,才能打破数据孤岛。”DPartner first analyzes the bytecode for discovering the parts of an app that are worth offloading, then rewrites the bytecode to implement the design pattern, and finally generates two artifacts to be deployed onto the Android smartphone and the server, respectively. Refactoring is transparent to app developers and supports legacy apps without source code.“


    具体的过程大概如下。


    下面这篇论文,则是说明了如何从代码的动态执行中来发现服务的架构和接口,是对静态分析的加强。



    不出所料,在执行代码的过程中去发现功能和接口,就必须利用Java等语言提供的反射(reflection)特性。“反射性(reflection)”的概念首先在人工智能领域出现,然后被引入计算机的其他领域。将反射性引入中间件能够以可控的方式开放平台内部的实现,从而提高了中间件的定制能力和运行时的适应能力。反射式中间件就是一种能够通过与系统运行状态和行为具有因果关联(causal-connected)的系统自述(self-representation)来监测并调整系统状态和行为的中间件系统。通过这种机制,能够补足静态代码分析和重构的不足,从而从动态代码执行中进一步提高发现和重构成统一的服务接口的广度和深度。


    到此为止,这个发明后面的机制和方法论,基本清楚了。那么,工程上如何实现的,从下一篇论文,则可窥一二。



    首先,定义了一个统一的面向云-端融合的终端应用构件模型,也就是说将终端应用(比如Web2.0服务,比如手机应用,等)封装为一个构件。该构件模型建立在经典的模型-视图-控制器 (Model-View-Controller, MVC) 体系结构风格和面向服务的体系结构(Service Oriented Architecture, SOA) 风格之上,作为构造云-端融合型应用的编程抽象。



    然后工程实操上,结合Java字节码和JavaScript程序分析技术(之前论文中已经讨论),综合业务代码层(包括方法调用序列、配置和脚本文件等)、 人机界面层(如表单、布局等)、网络协议层(传输控制协议层数据流)和用户交互行为等多方面的信息,进行逆向分析,从人机界面学习(看到没有,还是需要用户来多次运行和标注来定义一个API的场景)并生成业务数据的API。


    至此,梅院士和团队的发明的面纱基本全部解开,是不是世界级的挑战,是不是伟大的发明,值不值得国家发明奖一等奖,交给读者们去评断,我们只关注技术本身。


    想和陈老师进一步交流,请关注「陈老师每日精华」,查看更多精彩内容进入星球查看。


主题帖 30 关注 0 粉丝 0
情感指数

链路大数据分析置信度 12.97 %

TA的主题帖
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表