我国正在建设创新型国家,软件创新创业的“互联网+”模式已成为新兴战略产业的重要形态。互联网软件开发呈现边界开放、群体分散、交付频繁、知识复杂等特征,同时具有全生命周期数据,形成了规模巨大、碎片分散、快速膨胀的软件数据。如何建立多源异质、广泛关联、语义丰富、覆盖全面的软件大数据环境,分析提炼软件知识,以提升软件开发智能化程度已成为重要科学问题。
本项目重点研究软件大数据汇聚组织、知识表示提炼、软件工具智能化和智能开发服务环境等关键技术,目标在于建立基于大数据的软件智能化开发技术体系,研发关键性的软件智能化开发工具,形成“人-工具-数据”融合的软件智能化开发环境,构建软件智能化开发云平台,面向万众创新的社会需求,运行服务大众的公共服务平台,面向企业创新能力提升,提供智能化的企业软件开发环境。

项目的研究内容归结为2 项共性基础技术、4 项关键技术和1 项总体技术:(1)共性基础技术包括软件大数据汇聚方法与技术和软件知识提炼方法与技术;(2)围绕软件开发的主要活动,从软件构造、测试验证、智能协作和运维演化4 个方面分别研究软件智能化开发技术,研发相应的软件工具;(3)总体技术方面,以云服务集成和软件大数据融合为目标,研究集成框架和机制,形成软件智能化开发云平台,面向大众服务和大型企业需求,分别构建公共服务平台和企业开发环境。
项目研究方案为“问题导向、数据汇聚、知识提炼、智能释放”,综合运用大数据和智能化技术实现软件开发方法和工具的智能化变革;融合国际主流工具和技术框架,关注于研究和实现“智能化机制”:
(1)以“主动感知、定向采集、多源关联、增量检测”机制构建自生长的软件大数据环境,拟采用基于云架构的混合型软件大数据存储与管理框架,通过数据分布式存储和并发查询提高访问效率;
(2)为实现领域分析、模型分析、程序理解、编码、测试、部署等不同软件开发任务中的智能化支持,拟采用知识图谱、经验案例、分类器、规则、模板与模式等多种知识表示方式,综合应用程序分析、自然语言处理、数据挖掘、信息检索等技术实现知识抽取;
(3)选择4 类开发活动中重要的关键支撑点,有针对性地确定数据、知识抽取、智能推荐和问答所需的技术、方法,研发相应的智能化工具;
(4)采取轻量级虚拟容器技术构建可扩展的工具运行支撑框架,并利用容器编排技术构建工具池运行管理机制;
(5)基于以分布式软件仓库为核心的工具集成框架构建智能开发工具环境,并采取多承租架构实现软件智能化开发工具的个性化数据管理。
项目研究团队由国内主要的软件工程学术研究单位和大型软件企业组成,形成“产学研”合作联合体,团队各成员单位持续在软件开发技术和支撑环境方面开展深入的技术研究和密切的产业实践合作,形成了良好的社会和经济效益。前期合作的成果获得了1 项国家技术发明二等奖和2项省部级一等奖,研发并运行提供服务的互联网软件开发服务平台(www.trustie.net)积累了大量的数据。
如图,该作业的学生提交作品时,是没有附件的,只有内容。
但是一些用户在提交之后,内容是空的,状态确变成了“已提交”。请查明原因并解决问题
调查过程中碰到问题,可以问一下白羽。她也提交了,但是内容显示空
如题,班级问卷的题型【多行主观题】隐藏了。但是历史问卷被引用之后,这种题没有办法回复了。
请恢复该题型,确认学生回复的时候,是可以录入回答的
1.周一至周三主要准备计算复杂性期末考试
2.完成oschina_blog的python爬虫编写,主要解决:
1.ajax动态加载情况下页面内容获取
2.在列表页无总页数情况下,制定爬取所有页并停止的策略
3.研究爬虫代理问题,制定的实现思路是:编写独立的获取网上共享代理ip的程序,并使用代理工具squid来统一管理,与爬虫程序解耦
4.测试爬虫可用性和稳定性
本周工作:
1.计算复杂性考试
2.本地搭建trustie环境
3.学习gitlab中code review模块代码
1:毕业设计任务书上前两个点均已完成并优化;
2:目前已经使用本机部署solrcloud导入380万项目,花费25分钟,仅适用文本相关度进行搜索返回对应的效果还不错,由于有很多引入的新项目,许多项目影响力还未计算,所以暂时没有加入影响力因素;
3:现构建排序工具并展示,前端框架已经初步搭成,尚需界面优化。
下一步:
1:熟知ossean的从爬虫之后开始的每一部分的代码;
2:据之前搜索帖子自身关注度的基础上,改善现有的项目影响力计算,并加入该因素;
3:前端显示界面作为展示项目搜索和帖子搜索,预计项目总条数有380万,帖子条数有300万;
4:排序分析,5月中旬完成论文。
本周工作总结:
1. 扩展‘审阅评论分类’那篇文章
正在写最后一个章节的初步数据分析部分
2. 写审阅评论分类的专利
目前初稿已完成
下周工作安排
1. 今明两天把专利完成
2. 17号之前完成扩展论文,20号投出去
3. 把之前人工标注的三个项目的16-17年的数据下载下来,继续标注
本周工作:
1.webssh等网络版ssh的对比,及webssh连接容器的试验。
2.ossean筛选模块性能优化,改写为多线程。
3.实训项目整体了解,准备深度参与。
4.Jenkin源码在本机的编译,并开始阅读jenkins源代码,为实训平台性能优化做铺垫
进程:已有初步测试版本结果(ossnudt.trustie.net)
现有问题:
2.论文阅读:
Toward Deep Learning Software Repositories(MSR 2015)
3.自然辩证法考试+高软大作业。
1. 论文阅读
a) Summarizing software artifacts: a case study of bug reports(ICSE 2010)
b) Modelling the ‘Hurried’ Bug Report Reading Process to Summarize Bug Reports(ESE 2015)
两篇文章介绍了如何自动化抽取bug report的summary,帮助更好理解bug report。主要思想是提取bug report描述和讨论中关键短语。根据人为定义的特征(包括评论时间,第x条评论,作者评论等)使用机器学习分类方法,提取关键短语进行整合。
借鉴之处:利用他们的方法得到代码文件summary
不同之处:已有的方法缺少对自然语言处理方法的使用,同时仅仅局限在bug report中,我们可以通过适当的改进让方法可以使用我们的summary提取。
c) ChangeScribe: A Tool for Automatically Generating Commit Messages(ICSE 2015)
这篇文章介绍了自动提取commit message的方法,即如何分析版本之间的代码变更,生成可理解的注释。
借鉴之处:我们的summary文本信息中包括代码级信息,因此可以借鉴这种方法,看直接通过代码信息能不能生成有用的文本描述。
d) Deep API Learning(FSE 2016)
这篇文章是曾雅蓉在师门报告会上介绍的文章
借鉴之处:里面介绍了根据注释信息提取summary的思路,虽然文中使用的方法比较简单,而且仅仅是针对java项目的,但是我们可以借鉴并应用到其他项目中,观察使用效果。
2. 研究点(生成开源代码文件summary)
可以利用的文本信息包括:
a) issue/pr描述信息和评论信息(处理方法如1.a/1.b);
b) commit message信息(处理方法考虑同issue和pr的处理方法);
c) 代码内部的注释信息(处理方法如1.d);
d) 代码(处理方法如1.c)
3. 下一步工作
a) 帮助杨程师兄完成论文的扩展工作
b) 复现论文1.a/1.b中的方法,初步完成对issue和pr文本信息的处理。