-
(一)团队人员构成 总人数:7
教师
博士
硕士
本科
3人
0人
2人
2人
(二)团队导师简况
教授
副教授
讲师
1人
2人
0人
首席导师情况
姓名
王莹
性别
女
民族
汉
专业技术职务
副教授
行政职务
无
研究方向
智能软件开发技术
近三年获奖
2020年沈阳市中青年科技创新人才计划
主要承担课程
软件质量保证与测试技术
电子邮箱
wangying@swc.neu.edu.cn
导师梯队成员情况
姓名
团队中分工
专业技术职务
研究方向
电子邮箱
朱志良
理论研究、技术指导
教授
软件重构技术、软件可靠性理论、服务科学与信息整合技术等
zzl@mail.neu.edu.cn
于海
理论研究、技术指导
副教授
复杂性软件系统、软件重构技术、软件可靠性理论、混沌分形理论与应用、多媒体信息处理
yuhai@mail.neu.edu.cn
二、团队研究方向
自适应金融微服务软件架构演化模式与智能化开发
一、研究背景与意义
随着互联网的发展,越来越多金融行业开始通过软件系统提供线上服务,最初使用的软件架构大多是单体架构,在开发的初期它常常能表现开发周期短、易部署、测试方便和开发成本低等优点。然而,随着业务的拓宽,软件的更新和维护往往会变得越来越困难,这迫使人们纷纷开始寻找解决方案。微服务架构的使用为开发指出了一条新的道路,它提倡彻底的“组件化”和“服务化”,将大的业务拆分为多个符合单一职责原则的微服务,每个微服务只负责完成一个小的逻辑,通过微服务之间的通信完成所有的业务,以微服务为基本单元进行系统升级和维护,大大提高了开发的灵活性和可拓展性。如果能够完成软件架构的转型,金融行业的软件开发和维护成本将会大大降低,新增业务的开发效率也会大大提高。但当开发微服务架构的金融软件或将应用程序从单体架构迁移到微服务架构时,应用程序的质量、可维护性、数据一致性等关键特性都可能出现问题。而作为金融软件,对事务型的状态数据一致性处理及交易成本更高。如果这些问题出现,则可能会给系统的使用者带来严重的经济损失。智能化开发技术可以给金融微服务架构开发带来许多优点,比如使金融软件以基于BASE理论的TCC模式和基于ACID理论的FMT模式来保证数据的一致性。所以智能化开发技术的使用可以有效解决金融微服务架构软件的开发问题。
二、研究目标
金融微服务架构要求将应用程序划分成多个小的服务(符合SRP—单一职责原则),让每个服务运行独立的自己的进程中,不同服务之间采用轻量级的通信机制来实现通信,最终协作完成整体业务;不仅如此,每个微服务还能够被独立地开发和部署;对具体的一个服务而言,根据金融业务的上下文,应该选择合适的语言、工具对其进行构建,对于不同的服务可以使用不同的语言来编写,也可以使用不同的方式进行数据存储。
图1 微服务架构模式图
微服务架构的这些特点造就了其独特的优点,但也为架构的转型造成了很大的困难,如服务难以拆分、存储结构变化巨大和服务部署问题等。如果我们可以提供一套有效的理论方案,借助智能化开发方法实现服务发现、服务拆分和通信建立等需求,我们离软件架构转型的目标就更近了一步。
除了能够为转型提出合理方案之外,对转型需求也要做出评估,具体而言就是建立一套机制来判断软件架构是否需要转型以及转型需求是否合理;另一方面,要能够对转型成功的系统从多方面与原系统进行进行分析比较,比如实现同一业务的复杂度、所需资源、业务扩展等方面的比较。
同时,如何通过自然语言理解,程序约束条件获取开发社区中符合条件的代码,并利用自然语言处理,数据挖掘等方式提取这些代码中的关键点作为数据,再利用深度学习得到代码中的各项特征。最终达到智能化开发微服务架构软件的目标。
图2 软件智能化方法流程
三、 待解决问题
1. 如何开发出支持微服务架构的架构语言和开发工具
在了解了微服务架构的特性之后,我们希望为架构设计活动提供支持,特定于该领域的架构语言可能会是进行架构设计一种恰当的抽象、通用的表达方式。通过架构语言,开发人员可以清晰、准确地在软件开发中使用微服务架构。但现阶段还未有一款成熟的架构语言或开发工具来帮助开发人员快速的实现微服务架构软件开发。所以,开发出支持微服务架构的架构语言和开发工具是我们研究的一个重要目标。
如何有效地实现应用程序从单体架构向微服务架构的迁移
当一款应用程序需要从单体架构向微服务架构进行迁移时,首先需要判断这款应用程序是否适合迁移。判断的标准是程序在单体架构或微服务架构下,哪一种架构可以使程序获得更高的运行效率。但如何得到运行效率的结果还没有良好的解决办法。同时,在微服务架构中,每个业务可以被有效拆分为多个微服务并进行独立部署,微服务之间通过公共接口进行通信,业务复杂度较高时程序的运行效率维持在一个稳定的状态。而单体架构中服务之间的耦合性较为紧密。所以,如何通过智能化开发将紧耦合的服务有效拆分和部署,达到松耦合的目的;提取公共接口实现轻量级通信,以至于最终完成程序的架构迁移,这是目前在研究的一个主要问题。
当已经投入使用的系统需要加入新的功能时,无法直接将新的功能模块整合至原系统的服务中,系统的可扩展性较低
单体架构开发的系统,系统的服务之间耦合性较高,技术选型兼容度低,当新的功能在开发社区中已经存在成熟的模块,但使用的开发语言不同时,原系统难以兼容新的功能模块。但微服务因自身具有的技术兼容度较高的特点,则可以很好的完成功能模块的兼容,从而使系统具有良好的可扩展性。如何通过智能化软件开发使微服务架构在实际开发中具有良好的兼容性是问题之一。
如何评估从单体架构迁移到微服务架构对应用程序造成的影响
在现阶段,采用微服务架构的迁移过程是一个多维的问题。架构迁移所带来的系统耦合性的改变,服务间通信机制的改变都可能会给程序带来难以估计的影响,急需一种较成熟的评估技术来评估迁移的影响。但由于微服务架构迁移的实际案例较少,评估影响所需要的数据较少,同时,进行评估的技术也处于初级阶段。在这种情况下,从实际案例中提取出有效的数据,并利用智能化开发测试数据以完成评估技术。这也是本次研究的重要目标之一。
四、 研究方法
本课题拟提出的研究方向为自适应金融微服务软件架构演化模式与智能化开发。通过自然语言语分析,程序约束条件获取符合条件的开源代码,之后自然语言处理,数据挖掘,机器学习相结合的智能化方法,通过大量阅读代码来总结出程序所提取代码的各项特征。最终开发出支持微服务架构的架构语言和开发工具,并使程序具有良好的可扩展性。在程序进行架构迁移时,可以智能化实现迁移,并根据深度学习得到的代码特征在迁移后对程序架构迁移的影响进行合理的评估。主要研究方法如下:
1. 收集资料,分析微服务架构本身面临的挑战和解决方案
为了更好地对架构迁移过程中存在的问题进行分析和提出合理的方案,首先要对微服务架构本身的特性和使用的难点进行分析,从理论上掌握问题根源和可能的解决方案,再借助目前已经公开的微服务框架(Spring Cloud、Dubbo等)问题解决实例进行深入理解。2. 对互联网企业进行调查,分析实际困难和收集转型方案
问题来自于实践,想要真正了解架构迁移过程中的难题,必须要对实践经历进行调查,并且调查类型需要广泛。重点关注已经完成微服务架构转型的软件系统,如蚂蚁金服,以及在微服务方面有建树的互联网公司,如网易、阿里巴巴等,了解软件在向微服务架构转型时常遇到的问题和详细的解决方案,并对结果进行整理。现在已经出现了专门提供微服务架构设计的平台,如网易云轻舟微服务平台,它们对于微服务有着更多的实践经验,在有资源的情况下最好能够对其进行调查。
3. 辅助架构迁移的智能化方法的设计
根据调查得到的实际问题和微服务的特性,结合实际原软件代码的结构,有针对地设计合理的方法进行解决,如针对服务拆分的问题,可以设计方法对服务进行识别、构建和部署,对于方法执行过程中可能出现的异常进行信息反馈。
4. 对转型需求和转型结果的评估机制
采用事前和事后估计的方法分别对架构转型可行性和转型结果合理性进行评估,建立完整的评估机制,并且将影响评估结果的因素占比设为可变参数。
参考文献
[1] 刘斌斌, 董威, 王戟. 智能化的程序搜索与构造方法综述: 软件学报[J]. 2018,29(8):2180−2197.
[2] 张一帆, 汤恩义, 苏琰梓, 杨开懋, 匡宏宇, 陈鑫. 自然语言数据驱动的智能化软件安全评估方法: 软件学报[J]. 2018,29(8):2336−2349.
[3] 马雄. 基于微服务架构的系统设计与开发: 南京邮电大学[D]. 2017.
[4] Martin Fowler. Microservices[EB/OL]. 2014.
[5] Antonio Bucchiarone, Nicola Dragoni, Schahram Dustdar, Stephan T. Larsen, Manuel Mazzara From Monolithic to Microservices [C]: IEEE Transactions on Software Engineering . 0740-7459/18.
[6] Paolo Di Francesco Architecting Microservices[C]: IEEE Transactions on Software Engineering . 978-1-5090-4793-2/17.
[7] .Yong Sun, Jun Wang, Wenan Tan Online Algorithms of Task Allocation in Spatial Crowdsourcing[C]: ACM ISBN 978-1-4503-53526/17/09.
[8] Bo Peng, Guohua Chen, Yong Tang, Saimei Sun, Yuxia Sun: Semantic Navigation of Keyword Search Based on Knowledge Graph[C]: ACM ISBN 978-1-4503-5352-6/17/09.
三、团队建设方案
建设目标
以本次研究工作为契机,以建设“学习型,研究型”团队为出发点,培养团队合作和个人实践能力,提升团队整体学术研究能力。
团队文化建设
定期举行会议进行研究方法或心得体会分享。
创建公共论文库,实现学习资源共享。
定期举行阶段成果展示和分析的会议。
团队辅导机制(如开展研讨会、培训会、学术沙龙、专项课程等)
定期开展研讨会,分析阶段工作。
进行研究方法和论文写作指导培训会。
运行管理机制(如队员选拔、淘汰等)
通过调查和考核选拔队员。
定期对队员进行量化考核。
对于存在疑惑或困难的队员进行适当的帮助
预期成果(论文、专利、竞赛获奖、注册公司、成果转化等)
发表与研究相关的高水平论文1篇(SCI一区或者CCFA类期刊会议),申请专利2项。
进度安排(以每半年一个考察节点来规划,列出每时间段拟完成任务)
2020.8-2021.1收集资料,分析微服务架构本身面临的挑战和解决方案
第一阶段,学习目前已有的代码搜索和代码推荐技术,了解哪些成果已经诞生,需要在哪些方面进行进一步的研究和创新。对微服务架构现存主要问题进行收集和整理,针对每一种问题查找可能的解决方案,对目前已经公开的微服务框架(Spring Cloud, Dubbo, Istio)问题解决实例进行重点分析。获取实例代码作为数据,通过深度学习分析代码,获得代码中的主要特征。
2021.2-2021.7 开发支持微服务架构的架构语言和开发工具
第二阶段,在了解了微服务架构的特性,令机器进行充分的深度学习来获取代码主要特征,根据特征找到微服务架构的关键特性(技术兼容性高,通用性强,可组件化, 简化部署),以满足关键特性作为条件开发架构语言和开发工具。
发表相关研究的高水平论文1篇(SCI一区或CCF A类期刊会议),
申请专利1项
2021.8-2022.1 将架构语言应用到软件开发中,实现智能化软件开发
第三阶段,测试使用架构语言和开发工具得到的程序,所开发的程序需要具备微服务架构的特性,包括技术兼容性高,通用性强,可组件化, 简化部署等特性,并且继续完善相关技术。
2022.2-2022.7 分别建立对架构迁移需求和迁移结果的评估机制
第四阶段,虽然借助智能化开发技术可以解决架构迁移过程中的诸多问题,辅助完成迁移,但是在实际的应用中并非所有系统都适用微服务架构,通过分析影响因素和建立评估函数可以很好地对需求的合理性进行量化评估;对于不同类型软件完成迁移的效果也是参差不齐的,对于结果的优劣也必须通过比较分析才能得出。2022.8-2023.1 评估机制测试与完善
第五阶段,用模拟实验的方式得到评估结果,对结果进行分析,调整影响因素的内容、数量和占比,设计更加合理的评估函数。
2023.2-2023.7 借助智能化方法实现架构迁移
第六阶段,从多方面对已有解决方案的特征进行挖掘,之后与多组测试结果进行比较,分析差异,寻找原因,继续完善迁移方案和方法。
发表相关研究的高水平论文1篇(SCI一区或CCF A类期刊会议),
申请专利1项