2021, 32(5):1229-1230. DOI: 10.13328/j.cnki.jos.006237
摘要:随着软件互联网化和服务化的高度发展,持续性(continuity)成为现代软件系统的基本特性之一,覆盖从商业策划、软件开发、运维、演化的所有环节,使得软件系统在持续稳定提供功能和服务的同时,软件系统的边界和内部结构始终处于不断变化、持续更新和适应之中,持续软件工程(continuous software engineering)由此被提出并迅速得到广泛的实践应用.微服务(microservice)架构作为一种全新的去中心化分布式架构,在软件架构层面成为适应持续软件工程发展的必然趋势,而领域驱动设计(domain-driven design,简称DDD)伴随着微服务架构的兴起也重新获得了业界的广泛关注,二者共同关注服务自顶向下的合理设计和分解.微服务架构与领域驱动设计共同支持实现现代软件系统的持续性特征.为了反映中国学者和实践者在求解以微服务架构为代表的持续软件工程所面临的架构难题和挑战过程中取得的理论、技术或实验方面的创新性、突破性的高水平研究成果,特设立此专题. 本专题采取公开征稿的方式,共收到19篇投稿并通过了形式审查.特约编辑邀请了20余位领域专家参与审稿,每篇稿件至少邀请2位评审专家并经过两轮审稿.共计10篇稿件通过第1轮评审,并在CCF中国软件大会上进行了报告.经过第2轮终审,最终有6篇论文入选本专题.其中, 论文“基于混沌工程的微服务韧性风险识别和分析”研究微服务架构系统的韧性风险识别问题,通过向系统引入随机环境扰动并观察服务性能的变化来寻找潜在韧性风险,向运维人员提供参考. 论文“面向微服务架构的开发组织适应性评估框架”通过系统化文献综述得出了使用微服务架构对组织产生的7个方面的影响,进一步提出了一个用于评估并提高开发组织对于微服务架构的适应性的评估框架. 论文“一种优化的数据流驱动的微服务化拆分方法”提出了一种自动化的微服务拆分与评估方法DFD-A,支持从数据收集分析、服务拆分到候选微服务架构评估的自动化设计过程,并实现了原型工具. 论文“一种监控系统的链路跟踪型日志数据的存储设计”基于开源的应用性能监控系统CAT,提出了一种针对tracing类型日志数据的存储设计方案,提升了存储效率和查询效率,并在美团点评线上系统中得到真实 应用. 论文“基于多源特征空间的微服务可维护性评估”提出了一种多源特征空间模型以统一表示软件维护过程中产生的多源数据.基于该模型提出了微服务代码可维护性度量,并实现了原型工具MicroEvaluator. 论文“多版本共存的微服务系统自适应演化方法”针对微服务系统中的多版本共存现象和用户/运维需求的变化,提出了最优化微服务系统演化方案的设计方法,实现了相应的编程框架以支持微服务系统自适应演化. 本专题面向持续软件工程和微服务架构的研究人员和工程实践人员,内容涵盖系统软件、软件工程等领域,反映了我国学者在以微服务架构为代表的持续软件工程方法、技术以及支持工具等方面的高水平研究成果.感谢《软件学报》编委会、中国计算机学会软件工程专委会与系统软件专委会对专题工作的指导和帮助,感谢专题全体评审专家及时、耐心、细致的评审工作,感谢踊跃投稿的所有作者.希望本专题能够对国内持续软件工程和微服务领域的科研工作有所促进.
2021, 32(5):1231-1255. DOI: 10.13328/j.cnki.jos.006231
摘要:微服务架构近年来已成为互联网应用所采用的主流架构模式.然而与传统的软件架构相比,微服务架构更加复杂的部署结构使其面临更多能够导致系统发生故障的潜在威胁,且微服务架构系统故障的症状也更加多样化.在可靠性等一些传统的软件度量已不能充分体现微服务架构系统故障应对能力的情况下,微服务的开发者们开始使用"韧性(resilience)"一词描述微服务架构系统的故障应对能力.为了提高微服务架构系统的韧性,开发者往往需要针对特定的系统环境扰动因素设计应对机制.如何判断一个系统环境扰动因素是否为影响微服务系统韧性的风险因素,以及如何在系统运行发布之前尽可能多地寻找到这些潜在的韧性风险,都是微服务架构系统开发过程中待研究的问题.在先前研究中提出的微服务韧性度量模型的基础上,结合混沌工程,提出了针对微服务架构系统的韧性风险识别和分析方法.韧性风险的识别方法通过不断地向微服务架构系统引入随机系统环境扰动并观察系统服务性能的变化,寻找系统潜在的韧性风险,大幅度减少了软件风险识别过程中的人力成本.对于识别到的韧性风险,通过收集执行混沌工程过程中的系统性能监控数据,韧性风险分析方法将利用因果搜索算法构建出各项系统性能指标之间的影响链路,并将可能性较高的链路提供给运维人员,作为进一步分析的参考.最后,通过在一个微服务架构系统上实施的案例,研究展示了所提出的韧性风险识别和分析方法的有效性.
2021, 32(5):1256-1283. DOI: 10.13328/j.cnki.jos.006232
摘要:目前,一种称为微服务的架构风格正受到越来越多的关注.它给软件项目带来好处的同时,也影响着使用微服务架构的开发组织.研究目的是明确微服务的使用对开发组织产生了哪些影响,这些影响对于组织来说是优势还是挑战.对此进行了一次系统文献综述,并通过元-民族志对定性数据进行合成,最终得出了使用微服务架构对组织产生影响的7个方面,分别是组织结构、自治团队、技术/工具、组织文化、开发人员、DevOps和通信.同时,基于系统文献综述的结果发现,虽然大量微服务的研究都强调为了充分获取微服务带来的预期收益就必须解决组织问题,但是目前针对组织问题发表的学术文献依然较少,因此将那些可能更接近于工业界观点的、高质量的灰色文献也纳入到工作中.根据系统文献综述的结果以及对定性数据的合成,得出了4条更高阶的解释,并提出了一个适应性评估框架.此评估框架可以帮助公司评估并提高开发组织对于微服务架构的适应性,为开发组织在面向微服务开发的过程中提供了指导意见.最后,为了验证所提出的适应性评估框架,面向工业界设计并实施了有针对性的问卷调查和行业访谈,两者的结果验证了所提出的适应性评估框架的有效性.
2021, 32(5):1284-1301. DOI: 10.13328/j.cnki.jos.006233
摘要:近年来,微服务架构已经成为软件工程领域比较流行的架构风格,其天然支持DevOps和持续交付以及可伸缩性、可扩展性好等特性,驱动着业界实践者纷纷向微服务架构迁移.然而,采用微服务架构也面临诸多挑战,其中最关键的是缺乏自动化、一体化的解决方案来高效支持面向微服务的拆分设计以及候选微服务架构的评估.为了应对该挑战,对已有的数据流驱动的微服务化拆分方法的局限问题(例如效率和灵活性)进行改进,在此基础上,提出了一种优化的微服务化拆分方法(DFD-A).该方法通过动、静态分析相结合的方式,实现了更加高效的数据流信息自动化收集,同时,采用两阶段的聚类算法来取代完全基于自定义规则的微服务化拆分算法.同时实现了原型工具来支持从数据收集分析、服务拆分到候选微服务架构评估的完整且自动化的过程.案例研究结果表明,该优化方法DFD-A及其原型工具在保证拆分结果有效性的基础上,可以更加高效、灵活地支持面向微服务的自动化拆分与评估.
2021, 32(5):1302-1321. DOI: 10.13328/j.cnki.jos.006234
摘要:随着软件系统越来越复杂化和分布化,为系统提供具有完善功能的监控服务显得越来越重要.APM(application performance management)系统通过采集软件系统运行时的各项指标数据来分析软件的运行状态,例如CPU、内存使用率、垃圾回收的耗时、QPS等指标.此外,APM系统也会在软件运行中生成各种日志数据.通常来说,它能提供的监控数据分为3种:指标统计数据、链路跟踪(tracing)数据以及离散事件记录.这些数据有助于系统或者服务的维护人员理解运行状态,从而确保系统或者服务的稳定运行.基于开源的APM监控系统——CAT系统,提出了一种针对tracing类型数据的存储设计方案,通过内存块批量写入的方式提升存储效率,并设计了两级索引以提高查询效率.从线上的真实运行数据来看,该方案在写入性能和查询性能方面均有较好的表现.
2021, 32(5):1322-1340. DOI: 10.13328/j.cnki.jos.006235
摘要:软件企业实践将遗留软件系统解耦成基于微服务架构的系统,以提高软件的可维护性,达到较快市场交付.评估微服务开发阶段的代码可维护性是一个关键问题,其面临数据多源化、可维护性关注点多样化的难点.通过分析源代码、代码运行轨迹、代码修订历史,提出一种多源特征空间模型以统一表示软件多源数据,并基于该模型,从功能性、模块性、可修改性、交互复杂性等关注点度量微服务代码可维护性.据此实现了原型工具MicroEvaluator,并在开源软件上进行了实验验证.
2021, 32(5):1341-1359. DOI: 10.13328/j.cnki.jos.006236
摘要:微服务设计模式通过将应用程序拆分成多个相互独立的微服务,实现了各个微服务之间的相互解耦,允许各个微服务能够独立地进行迭代开发、部署,从而对用户需求变化以及DevOps流程中部署需求作出快速响应.每个微服务的独立迭代升级导致了系统中可能出现多版本共存现象,不同服务的不同版本之间的依赖关系变得更加复杂.如何在这种场景下适应用户不断变化的需求以及开发者敏捷DevOps流程中部署需求,是当前面临的一个挑战.为解决这一问题,提出了微服务依赖模型来刻画不同服务的不同版本之间复杂的依赖关系,设计了基于贪婪的优化算法来找到最优的微服务系统演化方案,以满足用户需求变化和敏捷DevOps流程中部署需求,并实现了面向演化的微服务编程框架(MF4MS)和微服务系统自适应架构(MI4MS),可支持演化方案的自动执行,实现微服务系统运行时的自适应演化.实验结果表明:在有着复杂依赖的微服务系统中,该方法在服务失效时长、服务可用性、开发者DevOps代价等指标上有很好的表现,可有效支持微服务系统自适应演化,以应对用户需求变化和敏捷DevOps.
2021, 32(5):1360-1372. DOI: 10.13328/j.cnki.jos.005844
摘要:信念传播算法是基于因子图模型的消息传递算法,通过图中的边,将消息从一个结点传递给另一个结点,以高概率地确定部分变量的取值,这种方法被实验证明在求解可满足性问题时非常有效.然而,目前还未对其有效性从理论角度给予解释.通过对信念传播算法的收敛性分析,试图从理论上解释算法的有效性.在信息传播算法的信息迭代方程中,参数的取值范围为(0,1),将该取值范围扩展到整个实数空间,即(-∞,+∞).利用压缩函数的数学原理,得到了信息迭代方程收敛的判定条件.选取随机可满足性问题实例进行实验模拟,验证了结论的正确性.
2021, 32(5):1373-1384. DOI: 10.13328/j.cnki.jos.006200
摘要:近年来,随着信息技术快速发展,软件重要性与日俱增,极大地推动了国民经济的发展.然而,由于软件业务形态越来越复杂和需求变化越来越快,软件的开发和维护成本急剧增加,迫切需要探索新的软件开发模式和技术.目前,各行业在软件活动中积累了规模巨大的软件代码和数据,这些软件资产为软件智能化开发建立了数据基础.与此同时,深度学习等人工智能技术在多个领域取得的成功应用,促使研究者考虑使用智能化技术与软件工程技术相结合,解决程序自动生成问题.程序智能合成方法是程序自动生成的新途径,通过实现软件开发过程的自动化,提高软件的生产率.首先分析了软件工程的发展历程及挑战,进而研究了智能化程序合成技术领域的研究布局以及各方法的优势和劣势.最后,对程序智能合成技术加以总结,并给出了未来的研究建议.
2021, 32(5):1385-1403. DOI: 10.13328/j.cnki.jos.006162
摘要:过程树能够兼具过程模型的行为和结构,在简化模型结构的复杂度方面具有重要意义.现有过程树转化仅能将基于块结构的简单过程模型转化为过程树,无法将具有复杂结构的过程模型转化过程树.为此,提出了一种基于完全有限前缀展开的行为等价过程树生成算法,用于将与过程树行为等价的过程模型转化为行为等价过程树.该方法首先利用完全有限前缀展开技术分析过程模型,抽取模型的活动关系;其次通过分析活动关系,进而对模型进行重构.最终通过活动关系判断和模型重构的不断迭代操作,构建行为等价过程树.通过在测试模型上的实验,验证了该算法在行为等价过程树生成方面的正确性和可行性.
刘文炎,沈楚云,王祥丰,金博,卢兴见,王晓玲,查宏远,何积丰
2021, 32(5):1404-1426. DOI: 10.13328/j.cnki.jos.006214
摘要:人工智能在与人类生活息息相关的场景中自主决策时,正逐渐面临法律或伦理的问题或风险.可信机器学习是建立安全人工智能系统的核心技术,是人工智能领域的热门研究方向,而公平性是可信机器学习的重要考量.公平性旨在研究机器学习算法决策对个人或群体不存在因其固有或后天属性所引起的偏见或偏爱.从公平表征、公平建模和公平决策这3个角度出发,以典型案例中不公平问题及其危害为驱动,分析数据和算法中造成不公平的潜在原因,建立机器学习中的公平性抽象定义及其分类体系,进一步研究用于消除不公平的机制.可信机器学习中的公平性研究在人工智能多个领域中处于起步阶段,如计算机视觉、自然语言处理、推荐系统、多智能体系统和联邦学习等.建立具备公平决策能力的人工智能算法,是加速推广人工智能落地的必要条件,且极具理论意义和应用价值.
2021, 32(5):1427-1460. DOI: 10.13328/j.cnki.jos.006205
摘要:数字病理图像分析对于乳腺癌、前列腺癌等良恶性分级诊断具有重要意义,其中,组织基元的形态和目标测量是量化分析的重要依据.然而,由于病理数据多样性和复杂性等新特点,其分割任务面临着特征提取困难、实例分割困难等挑战.人工智能辅助病理量化分析将复杂病理数据转化为可挖掘的图像特征,使得自动提取组织基元的定量化信息成为可能.特别是随着计算机计算能力的快速发展,深度学习技术凭借其强大的特征学习、设计灵活等特性在数字病理量化分析领域取得了突破性成果.系统概述目前代表性深度学习方法,包括卷积神经网络、全卷积网络、编码器-解码器模型、循环神经网络、生成对抗网络等方法体系,总结深度学习在病理图像分割等任务中的建模机理和应用,并梳理了现有方法的方法理论、关键技术、优缺点和性能分析.最后讨论了未来数字病理图像分割深度学习建模的开放性挑战和新趋势.
2021, 32(5):1461-1479. DOI: 10.13328/j.cnki.jos.006210
摘要:基于地理位置信息的应用和服务的迅速发展,对轨迹数据挖掘提出了新的需求和挑战.原始轨迹数据通常是由坐标-时间戳元组构成的有序序列,而现有的大多数数据分析算法均要求输入数据位于向量空间中.因此,为了将轨迹数据从变长的坐标-时间戳序列转化成定长的向量表示且保持原有的特征,对轨迹数据进行有效的表示是十分重要且必要的一步.传统的轨迹表示方法大多是基于人工设计特征,通常仅将轨迹表示作为数据预处理的一部分.随着深度学习的兴起,这种从大规模数据中学习的能力使得基于深度学习的轨迹表示方法相比于传统方法取得了巨大的效果提升,并赋予了轨迹表示更多的可能性.对轨迹表示领域中的研究进展进行了全面的总结,将轨迹表示按照研究对象的不同尺度,归纳为对轨迹单元的表示和对整条轨迹的表示两大类别,并在每种类别下对不同原理的方法进行了对比分析.其中重点分析了基于轨迹点的表示方法,也对近年来广泛使用的基于神经网络的轨迹表示的研究成果做了系统的归类.此外,介绍了基于轨迹表示的关键应用,最后对轨迹表示领域的未来研究方向进行了展望.
2021, 32(5):1480-1494. DOI: 10.13328/j.cnki.jos.006056
摘要:为了解决布谷鸟搜索算法收敛速度较低、全局收敛效率不高的问题,提出了具有万有引力加速机理的布谷鸟算法.该算法基于万有引力搜索无需学习外部环境因素的变化亦能感知全局最优的特点,将布谷鸟巢穴等价为不同质量的个体,使其在优化过程中不仅遵循Levy飞行规律,而且遵循万有引力定律.不仅利用布谷鸟巢穴间存在的万有引力进行加速搜索,而且提出了一种概率变异的方法,增大了种群多样性,有效地平衡了算法的全局搜索能力和局部开采能力,提高了算法的全局搜索效率和收敛精度.通过算法的数学机理分析和26个基准测试函数实验结果表明,所提出的算法与其他改进智能优化算法比较,具有更优的性能.
2021, 32(5):1495-1525. DOI: 10.13328/j.cnki.jos.006213
摘要:区块链作为一种多技术融合的新兴服务架构,因其去中心化、不可篡改等特点,受到了学术界和工业界的广泛关注.然而,由于区块链技术架构的复杂性,针对区块链的攻击方式层出不穷,逐年增加的安全事件导致了巨大的经济损失,严重影响了区块链技术的发展与应用.从层级分类、攻击关联分析两个维度对区块链已有安全问题的系统架构、攻击原理、防御策略展开研究.首先,按照区块链层级架构对现有区块链攻击进行归类,介绍了这些攻击方式的攻击原理,分析了它们的共性与特性;其次,分析总结了已有解决方案的思路,提出了一些有效的建议和防御措施;最后,通过攻击关联分析归纳出多个区块链攻击簇,构建了一个相对完整的区块链安全防御体系,展望了区块链技术在未来复杂服务场景下的安全态势.
2021, 32(5):1526-1546. DOI: 10.13328/j.cnki.jos.006204
摘要:人工智能的迅速发展和广泛应用促进了数字技术的整体跃升.然而,基于人工智能技术的智能攻击也逐渐成为一种新型的攻击手段,传统的攻击防护方式已经不能满足安全防护的实际需求.通过预测攻击行为的未来步骤,提前部署针对性的防御措施,可以在智能攻击的对抗中取得先机和优势,有效保护系统安全.首先界定了智能攻击和行为预测的问题域,对相关研究领域进行了概述;然后梳理了面向智能攻击的行为预测的研究方法,对相关工作进行分类和详细介绍;之后,分别阐述了不同种类的预测方法的原理机制,并从特征及适应范围等角度对各个种类的方法做进一步对比和分析;最后,展望了智能攻击行为预测的挑战和未来研究方向.
2021, 32(5):1547-1564. DOI: 10.13328/j.cnki.jos.006011
摘要:云计算、物联网和移动互联网等新型计算模式的出现,使得域间相互访问以及数据共享的需求不断扩大,而目前"中心化"的传统访问控制技术所显现出的访问控制策略执行不透明、动态数据管理不灵活、资源拥有者自主性差,使其难以满足海量、动态和分布的新型计算模式.提出了一种以ABAC模型为基础、以区块链为交互方式的域间访问控制模型.介绍了ABAC模型和区块链的技术原理、特点、研究现状,详细阐述了模型框架,对ABAC模型进行了形式化定义;同时,对模型中的智能合约进行了具体描述,给出了本模型在具体场景中的应用和具体的访问控制流程;最后对比了现有的研究方案.该模型可以为域间访问提供标准化的安全、便捷、自主且细粒度的访问控制.
2021, 32(5):1565-1578. DOI: 10.13328/j.cnki.jos.006015
摘要:植物叶片图像的识别是计算机视觉和图像处理技术在生物学和现代农业中的一个重要应用.其挑战性在于植物叶片种类数量巨大,且许多叶片图像具有很大的类间相似性,使得描述叶片图像的类间差异变得非常困难.提出一种称为高斯卷积角的叶片形状描述方法.该方法用高斯函数与叶片轮廓点的左右邻域向量的卷积产生高斯卷积角,再通过改变高斯函数的尺度参数,生成多尺度的高斯卷积角,组成特征向量.组合各轮廓点的特征向量,构成一个特征向量集合,作为叶片形状的描述子.两幅叶片图像的相似性可以简单地通过计算其高斯卷积角特征向量集合间的Hausdorff距离来进行度量.高斯卷积角描述子具有平移、旋转、缩放和镜像变换的内在不变性,该不变性从理论上得到了证明.该描述子还具有由粗到细的描述叶片形状的优良特性,使得其具有很强的叶片辨识能力.通过用中外两个公开的叶片图像数据集进行算法性能测试,实验结果表明,该方法优于现有的其他同类方法,从而验证了该方法的有效性.