当软件工程发展到一定的阶段,人和社会因素不可避免地成为重要研究对象,而目前大量软件项目资源库历史数据的存在为此提供了可能。鉴于项目协作结构和软件体系结构之间的深刻影响,本项目致力于研究在软件开发中人们的组织协作结构与软件体系结构的一致性,尤其是软件体系结构如何影响人们的社会协作结构,进而如何影响生产效率和质量。项目将采用定性和定量方法,提取和分析大量的项目资源库数据,研究采用模块结构和开发活动结构度量软件体系结构的方法,通过程序员的开发任务和代码撰写对软件开发社会关系进行建模,并据此研究度量项目协作结构的方法,进而研究从软件体系结构到协作结构各种依赖性的一致性模型,并建立相应的框架和工具进行可视化描述和追踪。一方面为人和社会因素在软件开发中的度量提供方法和理论基础,另一方面为实际生产中的程序员获取信息、解决问题及完成任务提供支持,进而服务于软件工程的最重要目标提高生产率和质量。
socio-technical framework;developer fluency;pool of software repositories;product architecture;best practice
本项目致力于研究在软件开发中人们的组织协作结构与软件体系结构的关系,尤其是软件体系结构如何影响人们的社会协作结构,进而如何影响生产效率和质量。项目的研究目标是通过挖掘大量的项目资源库数据,找到有效度量产品结构和项目协作结构及其关系的方法,找到影响软件生产一致性的因素,并建立相应的框架和工具进行可视化描述和追踪,为软件项目开发提供帮助。研究计划中所针对的问题如下如何对海量的软件资源库数据进行获取、提炼和分析,如何使用它们进行度量;如何建立从产品资源库到软件体系结构的模型,如何度量体系结构;如何度量体系结构对协作结构,进而对软件生产率和软件质量的影响;如何提供一致性框架帮助程序员认识问题,定位问题,并及时地解决问题。项目按计划顺利实施,圆满完成了任务,主要的研究进展和所取得的成果如下 1、针对软件开发数据的分布性、多样性和异构性问题,本项目建立了一系列高效的软件开发数据(即software repository数据)采集、抽取和检索的方法,以及据此构建了一个海量的软件工程数据池(https://passion-lab.org)。该数据池不仅是本项目工作的基础,也是未来研究工作的基石一个现象若在海量软件项目中存在,我们也许就找到了提高效率和质量的软件工程银弹。 2、在软件结构/产品结构研究方面, 提出了基于版本控制数据建立软件产品结构的方法,设计并实现了一个可视化工具; 探寻了软件体系结构的设计模式以及演化模式在文件布局视图中的反映; 并利用软件结构研究了软件质量问题提出了一种构件的错误诊断方法,设计了一种动态的服务可用性保障机制。 3、在软件开发中的生产/社会关系方面,研究了协同开发的复杂社会性因素,提出用软件制品(包括代码,提交及开发活动等)和程序员协作活动度量程序员成熟度,并建立程序员成熟度的度量体系;从软件系统构造过程的角度理解和分析社会技术一致性,建立了一组程序员与其环境和制品进行交互实现最佳实践的量化模型。本项目共发表论文13篇,其中5篇计算机学会A类会议和期刊,包括2篇软件工程顶级会议和3篇国际期刊,1篇获COMPSAC2012最佳论文奖;课题负责人周明辉获选2012年教育部新世纪人才计划;获2013年黄廷芳/信和青年杰出学者奖励基金;获第一届北京大学产学研合作奖(2013年)。