项目简介

Trustie软件质量度量技术研究

4200?1442652663
【周报】 2016.02.14 正常
指派给   陈梦雯
发布时间: 2016-02-14 15:34
更新时间:2016-02-23 23:25

1、过年期间在大家的帮助下投了一篇demo,会议室WAIM

2、正在对上学期的事情进行总结,准备SEKE的论文

    目前已经写完data extract 和 features analysis

    我认为存在的问题是描述啰嗦,挖掘规律不深

    第一次写论文,好艰难

( 338 KB) 陈梦雯, 2016-02-14 15:33
( 27.874 KB) 陈梦雯, 2016-02-14 15:33
( 31.733 KB) 陈梦雯, 2016-02-17 22:00
( 1.683 MB) 陈梦雯, 2016-02-17 22:02
( 33.849 KB) 陈梦雯, 2016-02-20 16:56
( 36.167 KB) 陈梦雯, 2016-02-21 23:19
( 37.331 KB) 陈梦雯, 2016-02-22 09:54
( 44.859 KB) 陈梦雯, 2016-02-22 22:25
( 404.143 KB) 陈梦雯, 2016-02-23 23:06
( 42.825 KB) 陈梦雯, 2016-02-23 23:25
回复 ︿ (9)
  • 用户头像
    陈梦雯 8年前

    根据王涛师兄的意见,将全文的架构重新调整,参见SEKE-0223-改

  • 用户头像
    陈梦雯 8年前

    初稿完成,参见SEKE-0223

  • 用户头像
    陈梦雯 8年前

    全文写完,参见SEKE_0222-1

0?1470885445
登录后可添加回复
4200?1442652663
指派给   陈梦雯
发布时间: 2016-01-24 20:12
更新时间:2016-01-27 09:40

论文构思:

1、introduction(软件依赖角度)

2、data pre-processing(预处理)

    描述github数据集,筛选3-5个社区,爬去项目属性,提取依赖关系,依赖项目与github项目集匹配

    匹配这里我有一个简单的思路实现自动化,计算一下准确率,验证数据集有效性

    说明github常用命名规则,方便用户快速查找定位软件项目

3、dependency network construction(依赖关系网构建,以organization为单位,一个organization一个网络,         忽略组织外的节点的pom文件)

      顶点是项目,边是依赖关系,较之前加一个权重,就是A复用B的多少模块,权重就是多少。分析一下属性,         比如入度、出度之类的。

4、RQ1:How to reuse projects? Are there some patterns about software reuse?(频繁模式发现)

     预计发现几个模式,解释一下 或者 不存在的模式 解释一下

      比如 dependency cycle这种模式基本不存在,因为软件开发中避免造成闭环

5、RQ2:How to select to reuse a project with similar function? Is there something difference between them?

      举例:单元测试类软件、数据库类软件、开源搜索引擎类软件或者还有其他

     用依赖关系形成的网络找它们之间的不同点。

6、Threats to Validity

7、related work

8、conclusion 

——————————————————————————————————————————————————

其他思路:

1、比较几个不同组织下的软件生态结构是否相同? 张洋师兄说没有意义

2、软件复用对软件开发的效率和质量的影响?效率和质量不知道怎么度量?(第一反应效率可以用代码      行数/项目时长/开发者人数,但想了想似乎考虑的因素太少了,不考虑)

    复用本身可以提高效率和质量,但会引入版本兼容性等问题

3、开发者的角度,还没有考虑过

——————————————————————————————————————————————————

其他:

1、思考:为什么依赖网路属性和fork没有关系?

    我的理解:通常大家会想我要复用什么,一定先fork什么到自己的版本库中再复用或者二次开发,但是项目     的pom文件中的依赖关系极少数是来源于github,大部分都是来自于原始的网址(org.apache.*),复     用关系网络是我们人为的把它们和github的项目对应起来了,所以被resue一次并不意味着相应的会被       fork,所以resue跟fork的关系很弱,我个人认为fork、watch、star应该跟兴趣有关。

2、reuse与quality

    今天偶然间看了一篇文章,结论是there is no clear evidence that reuse decisions are quality-driven.

    不过这里写quality的度量指标很多,比如稳定性、复杂性、bug数量等等。

回复 ︿ (15)
  • 用户头像
    陈梦雯 8年前

    尹 刚 写到:
    你们认为数据集有问题的依据和表现是什么?

    愉悦师兄认为,还有大量的其他语言的项目依赖于Java项目或者是大量的其他没有写pom文件的项目也存在依赖和被依赖的关系,不能用已有数据集去衡量整个github上的属性

    我认为,还有一个难的地方在于依赖关系提取出的项目格式是{org.apache.maven}-maven-scm。类似于这样,但是大多数都不像Apache这样的有apache/maven-scm明确的对应,项目匹配我认为就跟湛云搞得帖子匹配是一样的,本身就是一个研究问题,正确率不能保证就不能从匹配后的结果上再做

  • 用户头像
    尹刚 8年前

    你们认为数据集有问题的依据和表现是什么?

  • 用户头像
    陈梦雯 8年前

    讨论结果:

    1、愉悦师兄给了一个新研究问题,这一点我想等总结完现在做的东西再搞

    2、我和愉悦师兄都认为得不到好的结果是因为得不到一个优质的数据集,得数据集的过程太复杂,做不了。

    个人思考:

    1、既然反正也得不到优质的全体的数据集,所以我想应该选择github的Apache社区、eclipse社区等有代表性的社区就可以了,毕竟项目都比较优质。

    2、不考虑pom文件写的全写不全的问题,可以假定一款软件所依赖的其他软件是确定的,也就是出度确定。

    之前一个考虑被依赖的多,就怎样怎样。。。。,这个被依赖多少的数据本身就有问题,所以个人觉得可以换位思考,考虑依赖别人了多少,比如复用多的,复杂性高啊,减少劳动力劳动成本啊,软件可扩展性、功能性、适应性强啊等等。所以单从出度角度看,说不定会跟fork什么的有点关系。

    3、依赖网络中的频繁模式的发现,3个点和4个点的已经得出,部分可以对应到软件复用的情景,比如两个软件A和B同时依赖于另外两个软件,那么这两个软件有极大的可能性是某一个是另一个的子模块(组合式),或者A和B内部的子模块间互相依赖(相似式,目前是在Apache上搞得,可以考虑再选两个社区搞一下,模式的交集可以认为是全集的频繁模式吧

    4、针对上一点,考虑了推荐,A和B都有同一个功能,(由于依赖数量的数据不可用,依赖模式应该可用吧)考虑A和B形成的依赖模式,最简单的思路是哪个出现的更频繁就推荐哪个


    以上内容似乎变成了一个图挖掘和图匹配的问题了。。。

0?1470885445
登录后可添加回复
4200?1442652663
【任务】 2016.1.11工作汇报 正常
指派给   陈梦雯
发布时间: 2016-01-11 11:15
更新时间:2016-01-19 09:21
对比实验、结果、分析、思考、下一步计划
回复 ︿ (17)
  • 用户头像
    陈梦雯 8年前

    尹 刚 写到:
    你要解决的问题是什么?
    比较相同功能的软件的质量,以junit和testng举例,或者是社区网络指标是否反应软件本身类似于fork、star、watch等的指标

  • 用户头像
    尹刚 8年前

    你要解决的问题是什么?

  • 用户头像
    陈梦雯 8年前

    1、由于不知道要衡量网络的哪些指标,于是今天把junit和testng所在的社区的网络特征值和相关分布图都求出来了,具体的东西有待跟王涛师兄讨论

    2、今天看到了两个工具,mfinder和mDraw,网络基序探测和可视化工具,但需要在XP上运行,明天争取把这个搞定

0?1470885445
登录后可添加回复
4200?1442652663
【功能】 2016.1.3工作汇报 正常
指派给   陈梦雯
发布时间: 2016-01-03 23:43
更新时间:2016-01-10 23:39

元旦假期细致的阅读了TSE那篇论文。阅读报告如下:

1、(研究意义)最重要的意义是组件复用,但是目前搜索组件返回的结果太多,这篇文章的目的就是减少搜索结果或者是说使最相近的结果出现在top-10。

2、(研究方法)构造带权重的有向图,点代表组件,边代表使用关系,根据入度来设置权重,算法等于PageRank,跟我目前的工作有所区别的是:

第一,论文中的组件含义更广




(A component may be a source-code module, a linked library, or one section of a document. )

第二,论文中对组件进行了相似聚类

3、(研究成果)构造了工具SPARS-J (Software Product Archiving and Retrieving System for Java)

4、(实验评估)将工具应用到了三个场景,与另外两种排序方式做对比来进行评估,又找了两个公司做了case-study。

三个场景:

Application to JDK 1.4.2

Application to Large Collection of Publicly Available Components 
Searching Java Classes 
三个排序方式:


the component rank 

Namazu using full-text search with the TF-IDF method 

hand-made ordering by software experts to determine the significance of the components 

5、(未来工作)


改进策略,考虑出边的优先级问题,give various types of priority to specific outgoing edges 
应用场景,除component search外,还有automatic software architecture composition 、code-clone detection and component recommendation. 


回答尹老师和涛哥的问题:

1、为什么可以发表在TSE这样的顶会上?

我认为,一方面在2005年的时候研究点应该算新颖(这不是重点),另一方面,也是最重要的应该是有理论有结果有工具有应用

2、这篇论文到底有没有区分功能类别排序?

我认为是没有的,排序是通排,只不过在搜索的时候根据关键字来进行了选择,某种程度上可以理解为在搜索的时候对组件进行了功能分类





( 22.378 KB) 陈梦雯, 2016-01-06 23:20
( 100.125 KB) 陈梦雯, 2016-01-07 23:30
回复 ︿ (13)
  • 用户头像
    陈梦雯 8年前

    对比实验基本上完成,实验结果还没有整理成文档,这两天在忙教辅答疑的事情,明天尽快整理好发布上来

  • 用户头像
    陈梦雯 8年前

    RQ1部分已更新,文档已经上传,希望明天尽量可以完成RQ1部分。

  • 用户头像
    陈梦雯 8年前

    附件 RQ1-20160107.docx 已添加

    描述 已更新。 (查看差别)

0?1470885445
登录后可添加回复
4200?1442652663
【任务】 12.29周报 正常
指派给   陈梦雯
发布时间: 2015-12-29 23:32
更新时间:2015-12-30 08:27

1、详读MSR论文,了解人家的研究问题

2、去掉入度为0和出度为0的点,剩余6000个顶点,用Louvain community detection 算法进行社区划分,找到nutch所在的社区中所有的点和边,绘图,见nutch.pdf

3、详细分析上面的社区的模式,以及典型的软件

( 63.376 KB) 陈梦雯, 2015-12-29 23:24
回复 ︿ (2)
  • 用户头像
    陈梦雯 8年前

    尹 刚 写到:
    请不断理清自己要研究的问题,问题的提炼方法和过程可以学习他人的工作。
    收到

  • 用户头像
    尹刚 8年前

    请不断理清自己要研究的问题,问题的提炼方法和过程可以学习他人的工作。

0?1470885445
登录后可添加回复
4200?1442652663
【任务】 12.20进展汇报 正常
指派给   陈梦雯
发布时间: 2015-12-20 23:47
更新时间:2015-12-28 23:31
( 126.596 KB) 陈梦雯, 2015-12-20 23:46
回复 ︿ (9)
  • 用户头像
    陈梦雯 8年前

    学习MSR那篇文章的研究问题,详读论文,争取模仿人家的工作列出三个RQ

  • 用户头像
    陈梦雯 8年前

    1、正在算几个中心度,算了好久好久好久。。。

    2、networkx实现PageRank函数没问题

    3、极度极度极度需要需求挖掘和推荐代码功能,search能力极差

  • 用户头像
    陈梦雯 8年前

    1、对项目集进行了连通图的划分,整个依赖关系集被划分成了398个子连通图,得到每一个连通子图中包含的节点集合,方便之后绘制某一个项目的依赖关系网络。

    2、正在整理db –engines排行榜前100的项目。

0?1470885445
登录后可添加回复
4200?1442652663
【任务】 12.14汇报 正常
指派给   陈梦雯
发布时间: 2015-12-14 23:43
更新时间:2015-12-18 08:33
pr算法跑了5次,结果不稳定,没有查到与迭代次数相关的文献。以我的理解,应该跟构造矩阵的特征值有关系,问了学长,一般需要迭代40-50次。张洋师兄跑pr算法,只有5000个节点也用了好长时间。看了图分析的论文,了解了那几个指标,在想办法将它们移植到自己的数据集上,考虑实际物理意义。
回复 ︿ (5)
  • 用户头像
    王涛 8年前

    梦雯请将结果也发布到这里

  • 用户头像
    陈梦雯 8年前

    正在进行的工作:

    1、对项目集中的项目按功能分类

    2、找整个项目集中前边、中间、后边的项目做case study


    具体内容连同项目列表发涛哥邮箱了

  • 用户头像
    陈梦雯 8年前


              不好意思,刚看forge,我与涛哥讨论后得到的排序目的是定义一个度量名词和一个度量模型,来衡量软件质量或者是说软件复用程序。目前排序是基于我的项目集进行排序,我预计随后的排序分为两方面,一方面是区分为不同的功能,对每一类分别排序,反应哪一项目质量比较高;另一方面是以某一基础项目为基础,形成它的连通图,区分为不同的路径长度,对每一类分别排序,反应哪一功能比较火。希望尹老师和余跃师兄,给予批评指正。

    jacknudt 写到: 很好!你的排序目的是什么?

0?1470885445
登录后可添加回复

© Copyright 2007~2021 国防科技大学Trustie团队 & IntelliDE 湘ICP备 17009477号

问题和建议
还能输入50个字符 提交

加入QQ群

关注微信APP


×