MSR初步理解

 从没接触过MSR,也就是mining software repository,翻译成中文也不知道叫啥。Fisch第一次跟我说的时候,我还以为他让我做一个类似SVN的版本管理系统,自从上次他出差之前见了我之后,才知道,原来他想让我做版本库可视化。

 

这两天看了不少论文,一头雾水。按照Fisch的意思,我的目标系统应该是一个使用data mining和software visualization交叉技术的项目,这可苦啥我也,这两样data mining算是浅显的接触过,software visualization基本就是一点不会,不过也好,项目难点能学到东西,也比较有挑战性,作为也许是学生阶段最后一个作业,一定要尽善尽美。

 

先说MSR, 上搜了一下,相关内容也不少,近两年这方面论文不少,应该算是个挺热的领域,这个东西应该和data mining是相似的,不同的是,MSR更细,更实用,而DM则偏理论一些。说实话,MSR可供研究的东西还是不少的, 上关于分析CVS版本库的开源软件真的不少,以前没接触过这个领域,还以为是冷门,一接触才知道,这个领域其实已经有很多人在研究了。从我读的那几篇论文来看,MSR大概可以分成三个level,代码层面,项目层面和系统层面。代码层面是目前研究比较多的,关注点在代码的改变,生成等等,包括分析代码中数据结构和算法的变化全在此列里。项目层面则关注文件的变化,譬如开发周期时间,开发者投入度,文件更新频率等。而系统层面则关注的是子系统之间的相互作用和变化。Fisch并没有明确跟我说要做哪个方面的,但是个人觉得项目层面的MSR似乎更适合我,虽然代码层面的MSR更详细,资料更多,但是涉及到的算法内容太多,比如代码比兑,代码筛选等,一旦深入进入怕出不来了,到时候连作业都完不成就得不偿失了,而且凭直觉,这个层面的开发貌似要用到切面编程,面相代码的编程么,否则Fisch干嘛要搞这个,肯定和他的方向是有关的。

 

项目层面的MSR的数据源可以通过很多工具得到,Balazs用的是change log作为数据源,这确实是个不错的主意,但是感觉似乎可以通过访问API得到更多的数据,因此下一步要看看能不能得到更丰富的数据,以便更详细的分析。数据源的信息提取不是问题,不管是XML还是纯文本,想提取出有用信息都不是大问题,问题还在获取数据的方式。

 

另一个问题就是可视化了,虽然MSR从定义上来说和可视化没什么关系,但是就我看到的论文来说,几乎所有这个领域的东西都涉及到了可视化,看来版本可视化是个很热、很实用的东西。我对于可视化基本上就是外行了,目前知道的只有tag cloud和vtk,这方面还要继续查阅相关资料。

 

另外在阅读论文的过程中,发现了一个很重要的概念,就是change-pattern,这个概念我第一次听说,但是貌似是MSR的核心问题之一,因为不管你是做data mining,还是做visualization,你的目的都不仅仅是把变化直接的表示出来,而是要从变化中得出什么结论,也就是说从变化的特征,推出整个项目的特征,从而更易于管理。

 

接下来的工作还是蛮多的,一方面要继续读相关论文,另一方面也要开始初步的编码工作了,把项目中有可能用到的技术提前学一学,每天也要写写代码来热身,避免手感不好造成的效率低下。

文章知识点与官方知识档案匹配,可进一步学习相关知识算法技能树首页概览34006 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2011年6月15日
下一篇 2011年6月16日

相关推荐