论文构思:
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数量等等。
尹 刚 写到:
你们认为数据集有问题的依据和表现是什么?
愉悦师兄认为,还有大量的其他语言的项目依赖于Java项目或者是大量的其他没有写pom文件的项目也存在依赖和被依赖的关系,不能用已有数据集去衡量整个github上的属性
我认为,还有一个难的地方在于依赖关系提取出的项目格式是{org.apache.maven}-maven-scm。类似于这样,但是大多数都不像Apache这样的有apache/maven-scm明确的对应,项目匹配我认为就跟湛云搞得帖子匹配是一样的,本身就是一个研究问题,正确率不能保证就不能从匹配后的结果上再做
讨论结果:
1、愉悦师兄给了一个新研究问题,这一点我想等总结完现在做的东西再搞
2、我和愉悦师兄都认为得不到好的结果是因为得不到一个优质的数据集,得数据集的过程太复杂,做不了。
个人思考:
1、既然反正也得不到优质的全体的数据集,所以我想应该选择github的Apache社区、eclipse社区等有代表性的社区就可以了,毕竟项目都比较优质。
2、不考虑pom文件写的全写不全的问题,可以假定一款软件所依赖的其他软件是确定的,也就是出度确定。
之前一个考虑被依赖的多,就怎样怎样。。。。,这个被依赖多少的数据本身就有问题,所以个人觉得可以换位思考,考虑依赖别人了多少,比如复用多的,复杂性高啊,减少劳动力劳动成本啊,软件可扩展性、功能性、适应性强啊等等。所以单从出度角度看,说不定会跟fork什么的有点关系。
3、依赖网络中的频繁模式的发现,3个点和4个点的已经得出,部分可以对应到软件复用的情景,比如两个软件A和B同时依赖于另外两个软件,那么这两个软件有极大的可能性是某一个是另一个的子模块(组合式),或者A和B内部的子模块间互相依赖(相似式),目前是在Apache上搞得,可以考虑再选两个社区搞一下,模式的交集可以认为是全集的频繁模式吧
4、针对上一点,考虑了推荐,A和B都有同一个功能,(由于依赖数量的数据不可用,依赖模式应该可用吧)考虑A和B形成的依赖模式,最简单的思路是哪个出现的更频繁就推荐哪个
以上内容似乎变成了一个图挖掘和图匹配的问题了。。。
余 跃 写到:谢谢鼓励陈 梦雯 写到:优秀如你,你可以的!!余 跃 写到:数据集的问题我是黔驴技穷了,怀疑了快三个月的数据集问题了,我真是没办法陈 梦雯 写到:1、为了得到一个可靠的数据集,验证了一下自己设计的自动匹配依赖项目的程序,效果不好,所以手动整理了Apache下的项目数据。
2、关于数据集的选取,有很大的疑问!!!虽然选择了Apache的项目,但是从项目的依赖关系匹配到其他项目会远远超出Apache这个组织,这样数据集就不是封闭的。而这些被匹配到的项目目前只有入度,没有出度,不知道效果怎么样?
究竟要选择一个什么样的数据集才算合适!!!!!
小朋友,我觉得你问问题的方式需要改进,不断加强自己的主管能动性!
希望你能问:这样这样做,如何?这样这样是不是很有意义?
而不是:我该怎么做?这个有什么意义?
慢慢来,你是拿各种奖的、立功的、最优秀的学子!!
陈 梦雯 写到:优秀如你,你可以的!!余 跃 写到:数据集的问题我是黔驴技穷了,怀疑了快三个月的数据集问题了,我真是没办法陈 梦雯 写到:1、为了得到一个可靠的数据集,验证了一下自己设计的自动匹配依赖项目的程序,效果不好,所以手动整理了Apache下的项目数据。
2、关于数据集的选取,有很大的疑问!!!虽然选择了Apache的项目,但是从项目的依赖关系匹配到其他项目会远远超出Apache这个组织,这样数据集就不是封闭的。而这些被匹配到的项目目前只有入度,没有出度,不知道效果怎么样?
究竟要选择一个什么样的数据集才算合适!!!!!
小朋友,我觉得你问问题的方式需要改进,不断加强自己的主管能动性!
希望你能问:这样这样做,如何?这样这样是不是很有意义?
而不是:我该怎么做?这个有什么意义?
慢慢来,你是拿各种奖的、立功的、最优秀的学子!!
余 跃 写到:数据集的问题我是黔驴技穷了,怀疑了快三个月的数据集问题了,我真是没办法陈 梦雯 写到:1、为了得到一个可靠的数据集,验证了一下自己设计的自动匹配依赖项目的程序,效果不好,所以手动整理了Apache下的项目数据。
2、关于数据集的选取,有很大的疑问!!!虽然选择了Apache的项目,但是从项目的依赖关系匹配到其他项目会远远超出Apache这个组织,这样数据集就不是封闭的。而这些被匹配到的项目目前只有入度,没有出度,不知道效果怎么样?
究竟要选择一个什么样的数据集才算合适!!!!!
小朋友,我觉得你问问题的方式需要改进,不断加强自己的主管能动性!
希望你能问:这样这样做,如何?这样这样是不是很有意义?
而不是:我该怎么做?这个有什么意义?
慢慢来,你是拿各种奖的、立功的、最优秀的学子!!
陈 梦雯 写到:1、为了得到一个可靠的数据集,验证了一下自己设计的自动匹配依赖项目的程序,效果不好,所以手动整理了Apache下的项目数据。
2、关于数据集的选取,有很大的疑问!!!虽然选择了Apache的项目,但是从项目的依赖关系匹配到其他项目会远远超出Apache这个组织,这样数据集就不是封闭的。而这些被匹配到的项目目前只有入度,没有出度,不知道效果怎么样?
究竟要选择一个什么样的数据集才算合适!!!!!
小朋友,我觉得你问问题的方式需要改进,不断加强自己的主管能动性!
希望你能问:这样这样做,如何?这样这样是不是很有意义?
而不是:我该怎么做?这个有什么意义?
慢慢来,你是拿各种奖的、立功的、最优秀的学子!!
1、为了得到一个可靠的数据集,验证了一下自己设计的自动匹配依赖项目的程序,效果不好,所以手动整理了Apache下的项目数据。
2、关于数据集的选取,有很大的疑问!!!虽然选择了Apache的项目,但是从项目的依赖关系匹配到其他项目会远远超出Apache这个组织,这样数据集就不是封闭的。而这些被匹配到的项目目前只有入度,没有出度,不知道效果怎么样?
究竟要选择一个什么样的数据集才算合适!!!!!
王 涛 写到:请梦雯再仔细的过一遍实验代码,可以选择几个具体的项目验证一下你程序处理后的属性值和它们在Github中的属性值是否一致。
另外,第四点一定要注意讲清楚它在软件工程领域的意义;同时,你关注的是GitHub中Java类项目形成的引用/依赖网络,这个网络本身的特征是否反映了Java类项目基于复用形成的生态系统的特征,具有些什么样的特征,也要进行分析。
p.s. 注意和MSR论文工作的对比分析。
1、“可以选择几个具体的项目验证一下你程序处理后的属性值”,项目的属性值没有经过处理
2、"第四点一定要注意讲清楚它在软件工程领域的意义“,这一点牢记
3、"这个网络本身的特征是否反映了Java类项目基于复用形成的生态系统的特征,具有些什么样的特征,也要进行分析”,我理解一下是不是说网络本身的特征比如入度、出度等指标,反应出软件工程中复用的哪些方面?
余 跃 写到:打算以小数据集重新生成数据了。。。陈 梦雯 写到:我的意思是,你生成数据的程序写错了!!!!余 跃 写到:我也觉得数据不行。。。R程序是师兄你写的好长。。。。
为什么依赖网路属性和fork没有关系?
我觉得是数据不行。。。或者你程序哪里搞错了。。。
请梦雯再仔细的过一遍实验代码,可以选择几个具体的项目验证一下你程序处理后的属性值和它们在Github中的属性值是否一致。
另外,第四点一定要注意讲清楚它在软件工程领域的意义;同时,你关注的是GitHub中Java类项目形成的引用/依赖网络,这个网络本身的特征是否反映了Java类项目基于复用形成的生态系统的特征,具有些什么样的特征,也要进行分析。
p.s. 注意和MSR论文工作的对比分析。
陈 梦雯 写到:我的意思是,你生成数据的程序写错了!!!!余 跃 写到:我也觉得数据不行。。。R程序是师兄你写的好长。。。。
为什么依赖网路属性和fork没有关系?
我觉得是数据不行。。。或者你程序哪里搞错了。。。