Software co-evolution is one of important software evolution types in the process of software development and maintenance. It concerns mainly on how one software artifact will evolve correspondingly when another software artifact evolves, how two software artifacts interact with each other, and how to ensure the consistency of co-evolution etc. In general, the presence of software co-evolution makes the software evolution more complicated since co-evolution exists not only among different software artifacts in the same stage, but also among different software artifacts in different stages of software development and maintenance process; in additional, the existence of synchronous evolution and asynchronous evolution, cooperative evolution and competitive evolution, symmetry evolution and asymmetry evolution, which also makes it more difficult to define the evolution range and to assess the evolution cost; meantime, make it more difficult to check and ensure the consistency of software co-evolution. In this proposal, we will explore these problems with software co-evolution according to the following roadmap: mining software historical repository data to capture different kinds of association relations including keyword association relations, type association relations etc.; using history repository mining to guide the mining of software artifacts association relations of current software; filtering and selecting real co-evolution association relations between software artifacts by machine learning techniques; predicting real co-evolution range by combining all kinds of association relations, prediction models and new change request list; assessing the evolution cost and its impact; checking and ensuring the consistency and conformance of co-evolution using evolution association matrix (EAM) and evolution association graph (EAG), and evaluating the effectiveness of co-evolution using open source and other traditional software projects. We aim to find some efficient methods and techniques to solve above problems related to co-evolution in this project, and expect to guide software evolution and maintenance personnel to draw up software evolution proposal and ensure the effectiveness of software evolution.
协同演化主要关注在软件全生命周期中,当一个软件制品发生演化时,另一个软件制品是如何发生相应演化的、软件制品之间的演化是如何相互影响的、以及协同演化一致性如何保障等问题。由于协同演化不仅存在于软件生命周期相同阶段的不同软件制品之间,还存在于不同阶段的软件制品之间;还由于存在同步和异步演化、竞争与合作演化、对称和非对称演化等现象,使得协同演化的范围难以确定,成本难以估计,演化实施过程中一致性难以保障。这些问题的成功解决无疑对软件工程师制定有效演化方案、保障预期演化效果具有重要指导意义。本项目拟围绕这类问题展开研究:利用数据挖掘方法从软件修改历史库挖掘各种修改关联,并结合类型关联选择和过滤当前软件中存在的各种软件制品关联;利用机器学习方法训练出预测模型,并结合新的修改请求预估当前软件的协同演化范围和成本;利用演化关联矩阵和演化关联图进行一致性检查和保障,并结合开源软件和传统软件评估协同演化效果。
全面完成了项目申请书设定的研究内容、关键技术和任务指标。具体表现在:(1)提出了一种度量驱动的架构和代码协同演进方法;(2)提出了代码变更驱动的架构视图协同演进方法;(3)提出一个新的架构质量指标,架构成熟度,用于衡量软件架构在动态行为和静态组织结构上接近成熟架构的程度,在此基础上设计了一种基于演化的软件架构成熟度度量与评估方法;(4)提出了质量驱动重构方法和面向模式的架构重构方法;(5)提出了基于架构重构的源代码协同方法能有效地保证重构后的架构与协同演进后的源代码之间的一致性;(6)提出了基于源代码重构的架构协同方法能有效地保证重构后的源代码与协同演进后的架构之间的一致性;(7)提出了一种基于演化的SA度量与评估方法,旨在分析SA发生演化后挖掘SA的变化情况;(8)提出了架构度量方法关注架构演进过程,是对架构演进效果的度量;(9)提出了一种基于程序分析树匹配的多层次变更检测方法以及基于变更检测的架构演进缺陷分析方法,在实验中验证了基于程序分析树的多层次变更检测方法的有效性以及架构演进缺陷分析方法的有效性;(10)基于代码复杂度的软件演化评估与分析;等等。..相关研究成果录用和发表论文24篇,在CCF推荐的B类以上期刊和会议论文11篇;从软件架构和代码两个层次开发的设计演化评估、代码演化评估和协同演化两个工具平台,已经上线部署,在多家单位试用,试用效果良好;申报发明专利36项,已经获得授权专利6项;培养博士生5名(其中4名已经获得博士生学位)、硕士生32名(其中24名已经获得硕士学位),等等。..本项目的研究成果分别在华为公司、上海工业控制安全平台公司、中船重工716研究所、江苏省安全监督局、中科院电子学所苏州研究院等单位推广使用或试用,未来可望获得更广泛的推广应用和合作。
{{i.achievement_title}}
数据更新时间:2023-05-31
演化经济地理学视角下的产业结构演替与分叉研究评述
玉米叶向值的全基因组关联分析
监管的非对称性、盈余管理模式选择与证监会执法效率?
黄河流域水资源利用时空演变特征及驱动要素
青藏高原狮泉河-拉果错-永珠-嘉黎蛇绿混杂岩带时空结构与构造演化
面向全生命周期的可信软件测度模型和过程改进工具研究
全生命周期空气污染事件演化过程协同预测
面向服务在线协同软件测试技术研究
面向网构软件的过程演化技术研究