由中国计算机学会软件工程专委会主办,智能化软件开发沙龙承办,国家重点研发计划项目 “基于大数据的软件智能开发方法和环境” 支持的 “基于开源生态的企业软件演化与维护技术” 专题研讨会于 12 月 19 日在复旦大学逸夫科技楼举行。来自各大高校、企业和科研院所的 60 余人参加了本次活动。
研讨会由复旦大学彭鑫老师主持。彭鑫老师介绍了本次研讨会召开的背景以及活动安排。中国计算机学会软件工程专委会副主任王千祥老师及王戟老师致辞,并围绕研讨会主题发表了自己的观点。
在随后的企业分享环节上,来自阿里等知名 IT 和互联网企业的技术专家围绕开源软件的广泛应用对企业软件维护与演化所提出的新的问题和挑战进行了企业实践分享,相关问题包括:
1、如何确保自研软件产品和平台与开源软件社区保持同步演化?
2、如何精确理解开源软件的演化趋势并挑选有价值的新特性?
3、如何确保散布在各处的开源组件或代码得到及时和同步更新?
4、如何理解开源软件 API 的演化差异并实现智能适配?
5、如何自动修复开源代码中的漏洞以及在开源组件升级的情况下确保软件产品可靠性?
其中,来自阿里的张昕东不仅分享了阿里在开源领域所取得的成绩以及在软件维护与演化问题上所遇到的挑战,而且介绍了阿里代码平台在开源上的探索,以及开源部分数据集、举办代码智能化竞赛等方面的设想。
在接下来的学术界分享环节上,东南大学李必信教授、复旦大学陈碧欢青年副研究员、武汉大学玄跻峰教授、复旦大学吴毅坚副教授、东北大学王莹博士围绕研讨会主题分别介绍了相关的研究成果,包括软件体系结构恢复与评估、软件演化分析与差异比较、软件崩溃分析与修复、大范围克隆检测、混源代码依赖冲突分析等技术。
在随后的对话环节上,学术界和工业界的与会者就 “软件演化与维护技术—产学研合作的鸿沟在哪里?” 这一话题进行了直接对话。双方就如何促进学术界与工业界合作进行了探讨,提出了许多具体可行的建议。同时,通过对话双方也加深了对对方的了解,这些都为未来更好地开展成果应用和合作起到了良好的促进作用。
研讨会最后的讨论总结环节上,学术界与工业界的与会者一起头脑风暴,对于基于开源生态的企业软件演化与维护相关的企业实践问题进行了总结和归纳。
01 微服务自动拆分
针对传统的基于 Java 的企业级应用,能否通过自动化改造提高微服务化改造速度,缩短客户企业遗留系统上云的过程。
02 组件版本升级可靠性保障
组件版本升级后,如何保证使用了这个组件的所有软件都能够可靠地实现版本升级?其中需要解决的首要问题是正确性问题(即升级后能够正确运行),然后才是效率提升的问题。这方面基于静态分析的形式化方法是否能发挥作用?
03 组件的变更影响分析
某个组件代码发生修改后,对于软件其他部分的影响范围及其影响程度如何?其中一种突出问题是:来自不同来源的对于不同部分的修改可能由于某种耦合关系产生影响和冲突,从而导致稳定性问题。
04 兼容性问题
学术界目前对安卓应用兼容性研究比较多,是否存在比较通用的兼容性问题解决方案?安卓接口存在规范定义的基线,但是很多其他软件没有这种基线。此外,组件修改后如何自动生成测试用例作为补充,针对组件与使用该组件的软件之间的兼容性问题进行测试保障?例如,能否基于已有软件对该组件的使用方式来生成相应的测试用例?
05 开源软件社区提交价值评估
开源软件不断有代码修改提交,如何能够自动识别有价值的代码提交值得合并进来?其中涉及到对于代码修改内容的理解及其重要性的评价。
06 软件特性识别和分析
如何识别软件中的核心特性和核心实现?需要将一个复杂软件分解为不同的部分和特性,同时理解各个部分和特性在系统中扮演什么样的角色及其重要性如何。如何基于克隆识别等方法识别重复性的算法实现,并根据其出现次数和所使用的地方对其重要性进行评价?缩短客户企业遗留系统上云的过程。
07 开源软件的分类
如何对开源软件进行分类,例如对于开源软件之间的关系建立图谱?如何自动为软件打标签,让一些新的开源软件能够更快被了解和找到?在此基础上,如何自动对多个类似的开源软件进行评测和对比?
08 关于企业数据公开
如何让企业代码数据快速脱敏?如何给数据快速打标签(例如代码质量、缺陷标注等)?
09 优质代码评价
如何对大量企业软件系统中的代码质量进行评价?优质代码对于代码搜索结果排序以及提升开发人员素质等方面都有重要作用。
内容来源:复旦大学软件工程实验室--Codewisdom 平台公众号