Eclipse IDE 过程数据采集技术

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

EclipseIDE过程数据采集技术ShiLeishilei07@sei.pku.edu.cnSoftwareEngineeringInstitute,PekingUniversity2009.9提纲问题的提出过程数据采集方法相关解决方案分析我们的工作问题的提出提高软件开发的效率、缩短工期、提高软件产品的质量是软件工程领域的永恒话题收集、分析和挖掘程序员在软件开发过程中产生的一些数据,可以从很多方面为提高软件生产率和软件质量提供帮助记录开发人员的日常操作,为其提供一些自动化帮助挖掘出好的行为模式,为过程改进提供指导作为证明开发过程严格可靠的证据……过程数据采集方法现场(Onside)过程数据采集优点:灵活、直接缺点:开销巨大、难于采集很多人数据访谈和问卷优点:简单缺点:难收集细节数据非侵扰性(Non-invasive)自动化过程数据采集优点:收集大量数据成本低、可收集细节数据缺点:有些类型的活动无法监测过程数据采集方法数据采集方法的选择的考虑经验复用高层的vs.细节的直接指导(经验的可验证性)与以往研究工作的结合和技术上易实现因此,我们把“Non-invasive自动化过程数据采集”作为研究对象。特别是随着EclipseIDE的流行,我们关注Eclipse中工作区数据采集技术相关解决方案分析Hackystat概述Hackystat是由夏威夷大学开发的一个开源的收集、分析软件开发过程和产品数据的框架目的项目数据统计和展示(如改变方法数、活跃时间等)结构Sensor-Server结构,支持多开发环境(包括Eclipse、Emacs、Office等),其中Eclipse中以插件收集数据数据特征存储在服务器端数据库(可能有数据丢失,不关心),非匿名,事件可以有多种粒度,附加数据Map相关解决方案分析Hackystat数据特征(续):SDT是最高层Type,只与使用的Sensor有关不记录项目名,项目在服务器端创建,根据资源地址配置TimestampSDTOwnerToolResourcePropertyMap2009-07-22T20:35:44.906-10:00DevEventprocesspattern@gmail.comEclipsefile:/C:/Documents%20and%20Settings/Administrator/workspace/hackystattest/src/main.javaProperties:Type=Edit,Subtype=Close,Unit-Type=file,Unit-Name=main.java,Language=java2009-07-23T20:23:55.796ZDevEventprocesspattern@gmail.comEclipsefile:/C:/Documents%20and%20Settings/Administrator/workspace/eclipseListener/src/work3/Activator.javaProperties:Type=Edit,Subtype=StateChange,Current-Statements=31,Class-Name=work3.Activator,Current-Methods=5,Current-Size=4558,2009-07-22T20:37:09.312-10:00DevEventprocesspattern@gmail.comEclipsefile:/C:/Documents%20and%20Settings/Administrator/workspace/hackystat2/src/main2.javaProperties:Modified=false,Type=Edit,To-Buff-Name=file:/C:/Documents%20and%20Settings/Administrator/workspace/hackystat2/src/main2.java,Subtype=相关解决方案分析PROM与Hackystat类似,细节待继续调研相关解决方案分析Mylyn(Malar)概述Mylyn是一个基于Eclipse的辅助工具,为开发人员管理任务上下文,以使得开发人员能够将注意力集中在和任务项目中相关的部分上,以提高开发效率目的开发活动上下文管理,兼具任务管理功能结构Sensor-Server结构,仅支持Eclipse,以插件收集数据数据特征存储在服务器端和客户端(以XML存储),匿名,事件以文件为粒度,存储许多中间数据,为上下文管理提供方便相关解决方案分析Mylyn数据特征(续)对于扩展属性的支持能力好对于同类事件有所合并(见第一条日志)相关解决方案分析EclipseUsageDataCollection概述是一个监听Eclipse工作区中用户使用信息的插件,主要目的是跟踪Eclipse产品的技术情况目的插件技术情况汇报结构Sensor-Server结构,仅支持Eclipse数据特征存储在服务器端和客户端,仅记录插件加载、打开和关闭事件,特别关注插件版本相关解决方案分析各工作的比较目的Mylyn通过维护个人工作语境提高个体生产率Hackystat和PROM通过分析过程数据来监控过程状态EclipseUsageDataCollection只关注插件使用情况,但为事件监听提供了“插件装载时”施加监听的思路体系结构除了Mylyn以外都是Sensor-Server结构数据特点除EclipseUsageDataCollection以外,都支持扩展数据项。其中Hackystat和PROM把扩展数据项以键—值对的形式存储为单一字符串我们的工作动机以数据支持软件过程的研究EUDC的目的和我们的目的相去甚远Mylyn不支持多人数据,只记录编辑查看文件,不记录其他活动HackyStat和PROM对我们希望重点监听的Debug活动监听不够细有一些不方便之处(如Hackystat以文件路径名规则来定义项目)不容易灵活编写我们需要的扩展功能。我们的工作值得借鉴的设计决策区分事件作用的位置粒度(Hackystat)扩展属性(Hackystat、Mylyn)值得借鉴的实现技术将数据采集作为Eclipse插件在要监听的事件上施加监听器对监听事件做类型转换统一的数据记录接口通过首选项配置向服务器提交数据我们的工作框架概览CodeEditingSensorDataRepositoryDebugSensorCodeReadingSensorEclipseIDEOtherSensorsProcessDataMiningCodeChangeEventDebugEventCodeReadingEventOtherEventCollectedProcessDataProcessMonitoringDataStatics……ProcessDataCollectionProcessDataUse我们的工作收集的数据非匿名,事件以方法为粒度,任务类型预定义,本地及服务器端同时存储,特别关注Debug相关活动字段名说明eventID事件编号userName用户名,非匿名是为了研究具体人员的开发实践projectName项目名taskType任务类型,比如新功能、Debug、维护等taskId任务ID,可以关联项目管理系统中的任务编号logTime事件发生的时间pAction监听到的动作pFile动作所施加的文件pMethod如果动作设计在在代码上,其施加于的代码中的方法pLineNo动作所施加代码行号我们的工作代码修改活动监听修改的位置(方法级)、修改的增量Debug活动监听断点设置、调试动作代码阅读活动监听阅读位置(方法级)其他活动监听CVS、JUnit……我们的工作Eclipse事件监听一般过程What:决定要监听什么事件,并找到该事件在Eclipse中的对应实现Where:根据事件,找到在哪里施加一个什么样的监听器可以监听这个事件How:编写一个监听器,实现指定的监听器接口,对于其中关心的事件,编写处理方法,收集需要的信息。我们的工作开发中的一些解决方法代码修改活动监听保存一份修改之前的代码以供比对将修改前后的代码按语句分割,各放入一个集合中,通过集合比较得到代码修改的增量模仿CVS的diff将这种增量记录下来代码阅读活动监听利用程序员在阅读代码时鼠标停留在程序中制定方法中出发的OutLine视图的选择事件来确定程序员正在阅读的代码位置我们的工作开发中的一些解决方法代码阅读活动监听Typeconversion将通过选择事件位置和抽象语法树得到被阅读位置在抽象语法树中的对应节点,并将其类型转换为Outline视图可接受的SourceMethod对象我们的工作未来工作更广泛的事件监听层次化的事件模型可定制的插件监听结构对日志进行合并等处理提交策略

1 / 21
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功