CEclipse: 一个针对云平台的在线集成开发环境外文翻译资料

 2022-12-19 17:28:49

英语原文共 8 页,剩余内容已隐藏,支付完成后下载完整资料


CEclipse: 一个针对云平台的在线集成开发环境

摘要:云计算的便利,让很多桌面应用程序开始被迁移到云端。为了实现在云端编程,近些年,很多集成开发环境也被搬迁到了云端。尽管在线开发会给开发者带来很多便利,但是很多困难的问题还是很少被提及。这篇论文总结了在使用在线IDE中遇到的三类主要问题(函数实现,安全保障,有效利用率),本文也提出了三个针对上面三个问题对应的解决方案(服务聚合,程序行为分析,编程行为数据挖掘)。最终,本文引入了一个由我们研究团队开发的一个实际的在线IDE(CEclipse)作用了上面提出的三个解决方案。

关键字:云计算;服务聚合;程序分析;编程行为;在线编程。

  1. 介绍

云计算不需要终端用户了解服务器的物理位置和系统配置就可以使用系统的计算资源,软件,数据访问,数据存储服务。云计算是一个虚拟化,面向服务架构、原子化,高利用率的广泛应用的自然演化,对于终端用户来说,细节被高度的抽象了,用户不在需要精通管理云平台提供的基础设施这项技能了,可以把焦点转向应用的开发调试上。

基于云计算便利性的特点,许多桌面应用被迁移到了云端,比如google文档,google表格等等。随着丰富互联网应用程序技术的发展,工业界和学术界的研究者都将很多重心放到了云端编程上。为了在云端编程,很多传统的IDE都被迁移到了云端。在线IDE大都基于BS浏览器服务器架构,允许程序员通过浏览器书写代码,现在有很多云端的IDE,比如CodeRun,JavaWIDE和Bespin。CodeRun是一个商业性的产品,支持除了Java外不同语言的编程。JavaWIDE是一个免费的在线集成开发环境,致力于提供Java程序开发服务和在高校教育领域的运用。Bespin是一个由Mozilla实验室研究开源的在线IDE,不仅仅支持一系列编程语言,还允许用户拓展他们已经支持的语音。但是Bespin不支持编译函数,而只是支持语法高亮和编辑帮助。

在线集成开发环境提供了和本地集成开发环境一样的一些基本的特性,比如语法高亮,,比如编译,这可以将源代码编译成字节码。不仅如此,在线集成开发环境相比本地开发环境有很多优势,首先,使用云端集成开发环境的程序员不需要配置他们自己的开发环境,程序可以随时随地任意平台的实施和继续他们的编程工作。程序员用户需要的只是一个浏览器和连接上因特网两个条件。第二,在线集成开发环境适合协作开发。第三,在线集成开环境可以提供更多的帮助型的功能来简化开发流程。比如,通过记录行为来存储和保存用户的活动。

尽管在线集成开发环境可以给开发者带来一系列开发便利,但要实现他们仍有着很多挑战。

首先,我们还没有找到已有的在线集成开发环境有像eclipse这么多功能,比如重命名和代码补全,缺少这些功能的在线集成开发环境会让开发者在开发的过程中很沮丧。第二,在线集成开发环境饱受在本地开发不会遇到的安全性问题的困扰,比如,危险的文件操作,不确定的操作调用,过度的资源消耗,还有一些其他在线环境共有的安全性问题。第三,现有的在线集成开发环境没有充分利用云端开发的便利,比如,针对有经验开发者的行为挖掘可以帮助到新手用户,但是现有的在线集成开发环境并没有持续挖掘如此有用的信息。

这篇论文从我们对在线集成开发环境的开发过程来阐述了上面三个主要的问题。

  1. Eclipse中功能是基于事件驱动的策略,但是在线集成开发环境是基于HTTP请求响应的策略,怎么吧eclipse相应的功能迁移到在线集成开发环境呢?
  2. 在云端环境,安全性问题很难去处理,如何提供一个强大的安全机制来避免在线集成开发环境错误的行为呢?
  3. 如何最大化的利用云计算的优势来为程序员提供更好的服务呢?

我们的研究团队开发了一个在线集成开发环境叫CEclipse,CEclipse是Cloud Eclipse的简写,它有很多Eclipse的功能特性,它也充分的利用了云端编程的优势(挖掘编程行为,可以利用网络上的其它服务),CEclipse正被运用在大学的课程中,并且已经取得了期望的结果。

这篇论文主要做了以下的贡献

  1. 这篇论文介绍了通过服务聚合的方式把eclipse现有的功能迁移到了我们的在线集成开发环境。
  2. 这篇文章提出了利用程序行为分析技术来处理云端遇到的安全性问题。
  3. 这篇文章引入了一个自研的在线集成开发环境,它已经运用了上面提出来的三个方案,同时CEclipse已经使用了编程行为挖掘技术,充分的利用了云计算的优势。

2. 项目背景和问题描述

Eclipse和服务聚合

Eclipse是Java程序员们众所周知的集成开发环境,它的一个主要的特性就是插件的架构,新的插件可以基于现在的插件开发,许多Eclipse的功能都会包含在一个叫Java开发工具的插件里面,比如代码补全,代码选中跳转等功能。

代码补全是一个区别编辑器和集成开发环境的一个最主要的功能。通过计算Java符号在特定位置的完成度,避免了我们手动输入整个语句,比如当你在一个变量名后输入一个点,集成开环境会自动的列出该变量所有的字段和可用的方法名。

代码选中跳转允许程序员在变量的声明,定义和使用间快速的切换。很难在在线集成开发环境实现eclipse的所有功能,所以我们选了将所有的这些功能打包成一个服务,而不是从底层去实现它们。所有的eclipse功能都被封装抽象成了服务,我们可以利用服务聚合的方法来将类似的功能在我们的在线集成开发环境实现。

程序行为分析

编程行为分析意味着系统可以推测程序的行为,然后根据动态或者静态的分析来采取一些应对措施,静态的缺陷分析是指不运行而直接通过分析中间代码或者源代码来发现程序中的危险的行为,传统的静态缺陷分析更多的关注在通用的缺陷上,比如NULL,空指针,死循环代码,条件资源竞争,SQL注入,针对在线集成开发环境,静态分析可以被用来解决新提出的问题。

动态分析指的是通过运行程序来分析程序的行为,收集与程序相关的运行的数据,主要确保系统的高效。动态分析常被用来监听程序的运行状态并且根据反馈做出调整,比如,系统可以检测程序的运行状态,决定给特定程序分配的CPU和内存的量。

相比本地开发环境,一些传统程序分析中不怎么重视的地方却成了云端开发环境非常重要的危险,典型的错误是,危险的文件操作,不确定的系统调用,过多的资源消耗。

第一个风险是危险的文件操作,本地集成开发环境不会在他们的程序中限制文件的操作。然而,在在线环境,恶意的文件操作可以将整个在线集成开发环境的文件系统毁坏。

第二个风险是不安全的系统调用,这也意味着一些高权限的API应该被禁止,如果它们涉及到一些危险的系统调用,可能通过这些恶意调用来损坏整个系统。

第三个是过度资源消耗,涉及到的典型的资源包括CPU,内存,和网络连接,如果一个程序持续占用了太多的资源,其他正常使用的用户将会被影响,甚至会出现整个在线集成开发环境服务拒绝的情况,一个死循环可能会导致Java堆栈的溢出,会导致用户再也不能使用在线集成开发环境,所以在在线集成开发环境,使用资源的限制需要被更加关注,导致这个问题的主要原因是当用户使用在线集成开发环境时,用户的代码会在在线集成开发环境同一个的服务器上运行,而在本地的集成开环境,程序代码在它们自己的电脑上运行,这个问题也会存在,但是相对来说不够严重。

编程行为挖掘

编程行为挖掘意味着这个他可以从程序静态分析或者记录整个程序员的编程过程中相应的记录来驱动获得相应的有效的信息,我们可以记录某个API的使用率, 然后推荐高频率的API给用户。通过这种方式,可以提升编程的用户体验。

3. 系统设计

为了在云端编程,我们实现了一个在线集成开发环境CEclipse,现在被用作课程“编译构造”的试验性的平台。

CEclipse支持Java开发,他不仅仅有一些本地的集成开发环境有的基本功能,比如操作Java项目,Java包,Java类操作,编译运行等等,还有些更加智能的功能,比如代码自动补全,代码选择跳转,Java文档的贴士提示,调试。同时它提供了一些在线的辅助,比如在线测试,用单点登录技术将系统集成进BBS和博客,程序行为挖掘等等。

下面展示的图片描述了CEclipse的架构,CEclipse是基于MVC架构实现的,View层有一个Java视图和一个调试视图。两个视图都会调用对应的服务来实现完成对应的功能,第一个服务包包含了封装了Eclipse的Java开发工具和其它插件,它主要包含了,Java的包操作,Java的类操作,代码的自动补全,代码的选中跳转,Java文档的提示,第二个服务组包含了JDK的封装,从而可以编译,运行Java代码。第三个服务包含了程序行为分析的服务,这些服务被设计用于进行程序的静态分析和动态分析,来保证整个在线集成开发环境的平稳运行。最后一个服务组用于提供给程序员额外的功能,通过这些服务程序员可以高效的完成编码任务,最后两个服务是在线集成开发环境最显著的两个特征,第三层提供了数据库服务和hadoop文件系统服务,以下章节将会讨论到服务聚合,程序行为分析和编程行为分析。

服务聚合

除了减少从底层实现在线集成开发环境的时间成本的考虑外,有三个主要的理由来支撑服务聚合的方式。稳定性,在线集成开发环境会有多个用户同时在线编辑的场景,我们的在线集成开发环境被设计成一个容易拓展的分布式系统,以至于它可以提供弹性的性能,通过使用系统聚合的策略,不同的功能由运行在不同主机的服务提供,这可以显著提高程序的运行效率。

功能服务弱耦合,在Eclipse工具和新的功能是通过插件的形式提供的,Eclipse在启动时会基于必要的系统插件在运行时,所有的插件和JVM都是在同一个进程中加载的,在我们的在线集成开发环境所有的功能都被都被解藕成不同的服务实例,这样让CEclipse提供比Eclipse更多的灵活性。

支持多种不同的服务。在我们的在线集成开发环境,不同的服务通过HTTP请求/响应通信,只有被预先定义消息通道的格式被定义,每一个服务才会被聚合。

在封装了Eclipse的插件功能作为服务后,我们使用JSON作为服务之间通信的格式。以代码补全的功能为例,如果我们想要获得一个在org/seforge/cc/TestCodeCompletion,java 中对象a的全部的方法,整个代码文件的长度是300行,并且我们想要取得的代码偏移位置是32行,所以JSON格式从我们的主文件包到代码补全服务的消息会是:

在代码补全计算完结果后,从代码补全服务发回来的消息会是:如果代码补全服务返回了正确的消息,这个状态就被设置成了OK,ret的字段里面的值就是所有的a里面的方法。如果代码不全失败了,status就会变成error,里面的ret字段会什么都没有。系统中的所有的服务都会用类似的形式。

程序行为服务

所有的危险都是由程序带来的,因此程序的行为分析是解决这个问题的最重要的一个途径。为了确保在线集成开发环境平稳运行,我们也提供了程序行为分析的程序。

为了解决禁止系统调用的问题,我们使用了静态的分析技术来分析编译后的代码,针对Java代码是字节码,我们选择了静态的分析结束,因为特殊的系统调用可以通过方法的签名轻易的识别出来。为了处理其他两类问题(危险的文件操作,过度的资源消耗),我们使用动态分析技术来监测代码的运行状态,确保代码的运行是合法的,如果程序通过了静态分析和动态分析两种分析检测技术,运行的结果就会被展示到屏幕上,下面三个子小节详细讨论了这三个潜在的风险。

  1. 文件操作分析

就像上面陈述的一样,文件的操作不能完全的被禁用,因为文件相关的操作是一个最基础的功能,但是如果程序员可以使用任意的文件操作,他们也许会删除或者错误的修改系统的任意一个文件,这会导致严重的系统损坏,幸运的是,这个行为可以被动态的监测。

我们处理的基本想法就是限制文件操作的命名空间,每个用户都有一个唯一的工作目录,所有文件的操作都会被限制在对应的工作目录,不然就被认定为不合法,禁止运行。

针对文件操作,我们使用两种方式,一种是监测文件操作对应的类,另一种是监测文件相关的操作调用,在第一种情况,文件的操作被列在了第一张表格里面。

我们得到了文件相关的参数,或者使用字符串名字来构造一个文件对象,然后构造了相应的函数。

这个代码将在程序运行过程中获取到绝对路径,我们会判断这个字符串是不是跟X:/workspace/username 一致,如果符合,我们就会允许代码继续运行,不然我们会停止运行,并且报错,警告用户不要使用自己工作空间外的文件。在第二种方法中,跟Java程序语言相关的文件代码要么会暴露系统的系统信息,或者会损害系统,一些API比如,canExecute()和一些APIs,就像delete(),和setExecutable()也会导致系统损坏,对每个文件相关的操作,我们都使用动态检测技术。

  1. 禁止函数调用分析

禁止函数调用指的是禁止可能会损害系统的API,这些API的调用可能会损害整个系统,我们系统采用黑名单和白名单策略来解决这个问题。黑名单指的是把禁止调用的API列在文档里面,白名单策略列出了允许调用的API,在执行完程序的静态分析,我们根据白名单黑名单来筛选程序,决定是否来运行这个程序,Google App Engine也是会采用白名单的策略。

不管是黑名单还是白名单策略,有两个层级来列出API,一个是类级别,一个是方法级别,不管类级别还是方法级别,都会带来很多有利的因素,不过经过实践,总的来说使用类级别的静态分析比方法级别的静态分析更高效。

针对类级别,提出

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[19899],资料为PDF文档或Word文档,PDF文档可免费转换为Word

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。