首页 > 最新文献

2019 IEEE International Conference on Software Maintenance and Evolution (ICSME)最新文献

英文 中文
Losing Confidence in Quality: Unspoken Evolution of Computer Vision Services 对质量失去信心:计算机视觉服务的潜规则演变
Pub Date : 2019-06-18 DOI: 10.1109/ICSME.2019.00051
Alex Cummaudo, Rajesh Vasa, J. Grundy, Mohamed Abdelrazek, A. Cain
Recent advances in artificial intelligence (AI) and machine learning (ML), such as computer vision, are now available as intelligent services and their accessibility and simplicity is compelling. Multiple vendors now offer this technology as cloud services and developers want to leverage these advances to provide value to end-users. However, there is no firm investigation into the maintenance and evolution risks arising from use of these intelligent services; in particular, their behavioural consistency and transparency of their functionality. We evaluated the responses of three different intelligent services (specifically computer vision) over 11 months using 3 different data sets, verifying responses against the respective documentation and assessing evolution risk. We found that there are: (1) inconsistencies in how these services behave; (2) evolution risk in the responses; and (3) a lack of clear communication that documents these risks and inconsistencies. We propose a set of recommendations to both developers and intelligent service providers to inform risk and assist maintainability.
人工智能(AI)和机器学习(ML)的最新进展,如计算机视觉,现在可以作为智能服务使用,它们的可访问性和简单性令人信服。现在,许多供应商将这种技术作为云服务提供,开发人员希望利用这些进步为最终用户提供价值。然而,对于使用这些智能服务所产生的维护和发展风险,尚无确切的调查;特别是,它们的行为一致性和功能的透明度。我们使用3个不同的数据集评估了3种不同智能服务(特别是计算机视觉)在11个月内的响应,根据各自的文档验证了响应并评估了进化风险。我们发现存在:(1)这些服务的行为方式不一致;(2)响应中的演化风险;(3)缺乏记录这些风险和不一致的清晰沟通。我们向开发人员和智能服务提供者提出了一组建议,以告知风险并协助可维护性。
{"title":"Losing Confidence in Quality: Unspoken Evolution of Computer Vision Services","authors":"Alex Cummaudo, Rajesh Vasa, J. Grundy, Mohamed Abdelrazek, A. Cain","doi":"10.1109/ICSME.2019.00051","DOIUrl":"https://doi.org/10.1109/ICSME.2019.00051","url":null,"abstract":"Recent advances in artificial intelligence (AI) and machine learning (ML), such as computer vision, are now available as intelligent services and their accessibility and simplicity is compelling. Multiple vendors now offer this technology as cloud services and developers want to leverage these advances to provide value to end-users. However, there is no firm investigation into the maintenance and evolution risks arising from use of these intelligent services; in particular, their behavioural consistency and transparency of their functionality. We evaluated the responses of three different intelligent services (specifically computer vision) over 11 months using 3 different data sets, verifying responses against the respective documentation and assessing evolution risk. We found that there are: (1) inconsistencies in how these services behave; (2) evolution risk in the responses; and (3) a lack of clear communication that documents these risks and inconsistencies. We propose a set of recommendations to both developers and intelligent service providers to inform risk and assist maintainability.","PeriodicalId":106748,"journal":{"name":"2019 IEEE International Conference on Software Maintenance and Evolution (ICSME)","volume":"30 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-06-18","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129536958","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 16
Assuring the Evolvability of Microservices: Insights into Industry Practices and Challenges 确保微服务的可演化性:洞察行业实践和挑战
Pub Date : 2019-06-12 DOI: 10.1109/ICSME.2019.00089
J. Bogner, J. Fritzsch, S. Wagner, A. Zimmermann
While Microservices promise several beneficial characteristics for sustainable long-term software evolution, little empirical research covers what concrete activities industry applies for the evolvability assurance of Microservices and how technical debt is handled in such systems. Since insights into the current state of practice are very important for researchers, we performed a qualitative interview study to explore applied evolvability assurance processes, the usage of tools, metrics, and patterns, as well as participants' reflections on the topic. In 17 semi-structured interviews, we discussed 14 different Microservice-based systems with software professionals from 10 companies and how the sustainable evolution of these systems was ensured. Interview transcripts were analyzed with a detailed coding system and the constant comparison method. We found that especially systems for external customers relied on central governance for the assurance. Participants saw guidelines like architectural principles as important to ensure a base consistency for evolvability. Interviewees also valued manual activities like code review, even though automation and tool support was described as very important. Source code quality was the primary target for the usage of tools and metrics. Despite most reported issues being related to Architectural Technical Debt (ATD), our participants did not apply any architectural or service-oriented tools and metrics. While participants generally saw their Microservices as evolvable, service cutting and finding an appropriate service granularity with low coupling and high cohesion were reported as challenging. Future Microservices research in the areas of evolution and technical debt should take these findings and industry sentiments into account.
虽然微服务为可持续的长期软件发展提供了一些有益的特征,但很少有实证研究涵盖了行业为微服务的可发展性保证应用了哪些具体活动,以及如何在这样的系统中处理技术债务。由于对当前实践状态的洞察对研究人员来说非常重要,因此我们进行了定性访谈研究,以探索应用的可发展性保证过程、工具、度量和模式的使用,以及参与者对该主题的反思。在17次半结构化访谈中,我们与来自10家公司的软件专业人员讨论了14种不同的基于微服务的系统,以及如何确保这些系统的可持续发展。访谈笔录采用详细编码系统和恒比法进行分析。我们发现,特别是外部客户的系统依赖于中央治理来保证。与会者认为,像架构原则这样的指导方针对于确保可发展性的基本一致性非常重要。受访者还重视像代码审查这样的手工活动,尽管自动化和工具支持被描述为非常重要。源代码质量是工具和度量标准使用的主要目标。尽管大多数报告的问题都与架构技术债务(ATD)相关,但我们的参与者并没有应用任何架构或面向服务的工具和度量。虽然参与者普遍认为他们的微服务是可进化的,但服务切割和寻找具有低耦合和高内聚的适当服务粒度被认为是具有挑战性的。未来在演进和技术债务领域的微服务研究应该把这些发现和行业观点考虑进去。
{"title":"Assuring the Evolvability of Microservices: Insights into Industry Practices and Challenges","authors":"J. Bogner, J. Fritzsch, S. Wagner, A. Zimmermann","doi":"10.1109/ICSME.2019.00089","DOIUrl":"https://doi.org/10.1109/ICSME.2019.00089","url":null,"abstract":"While Microservices promise several beneficial characteristics for sustainable long-term software evolution, little empirical research covers what concrete activities industry applies for the evolvability assurance of Microservices and how technical debt is handled in such systems. Since insights into the current state of practice are very important for researchers, we performed a qualitative interview study to explore applied evolvability assurance processes, the usage of tools, metrics, and patterns, as well as participants' reflections on the topic. In 17 semi-structured interviews, we discussed 14 different Microservice-based systems with software professionals from 10 companies and how the sustainable evolution of these systems was ensured. Interview transcripts were analyzed with a detailed coding system and the constant comparison method. We found that especially systems for external customers relied on central governance for the assurance. Participants saw guidelines like architectural principles as important to ensure a base consistency for evolvability. Interviewees also valued manual activities like code review, even though automation and tool support was described as very important. Source code quality was the primary target for the usage of tools and metrics. Despite most reported issues being related to Architectural Technical Debt (ATD), our participants did not apply any architectural or service-oriented tools and metrics. While participants generally saw their Microservices as evolvable, service cutting and finding an appropriate service granularity with low coupling and high cohesion were reported as challenging. Future Microservices research in the areas of evolution and technical debt should take these findings and industry sentiments into account.","PeriodicalId":106748,"journal":{"name":"2019 IEEE International Conference on Software Maintenance and Evolution (ICSME)","volume":"120 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-06-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127117429","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 28
Microservices Migration in Industry: Intentions, Strategies, and Challenges 工业中的微服务迁移:意图、策略和挑战
Pub Date : 2019-06-11 DOI: 10.1109/ICSME.2019.00081
J. Fritzsch, J. Bogner, S. Wagner, A. Zimmermann
To remain competitive in a fast changing environment, many companies started to migrate their legacy applications towards a Microservices architecture. Such extensive migration processes require careful planning and consideration of implications and challenges likewise. In this regard, hands-on experiences from industry practice are still rare. To fill this gap in scientific literature, we contribute a qualitative study on intentions, strategies, and challenges in the context of migrations to Microservices. We investigated the migration process of 14 systems across different domains and sizes by conducting 16 in-depth interviews with software professionals from 10 companies. Along with a summary of the most important findings, we present a separate discussion of each case. As primary migration drivers, maintainability and scalability were identified. Due to the high complexity of their legacy systems, most companies preferred a rewrite using current technologies over splitting up existing code bases. This was often caused by the absence of a suitable decomposition approach. As such, finding the right service cut was a major technical challenge, next to building the necessary expertise with new technologies. Organizational challenges were especially related to large, traditional companies that simultaneously established agile processes. Initiating a mindset change and ensuring smooth collaboration between teams were crucial for them. Future research on the evolution of software systems can in particular profit from the individual cases presented.
为了在快速变化的环境中保持竞争力,许多公司开始将其遗留应用程序迁移到微服务架构。这种广泛的迁移过程同样需要仔细规划和考虑影响和挑战。在这方面,来自行业实践的实际经验仍然很少。为了填补科学文献中的这一空白,我们对迁移到微服务的意图、策略和挑战进行了定性研究。我们通过对来自10家公司的软件专业人员进行16次深度访谈,调查了跨不同领域和规模的14个系统的迁移过程。除了总结最重要的发现外,我们还对每个案例进行了单独的讨论。作为主要的迁移驱动因素,可维护性和可伸缩性被确定。由于遗留系统的高度复杂性,大多数公司倾向于使用当前技术重写,而不是拆分现有的代码库。这通常是由于缺乏合适的分解方法造成的。因此,找到合适的服务缺口是一个重大的技术挑战,其次是利用新技术建立必要的专业知识。组织挑战尤其与同时建立敏捷过程的大型传统公司相关。对他们来说,改变思维方式并确保团队之间的顺利合作至关重要。未来对软件系统演化的研究尤其可以从所提出的个别案例中获益。
{"title":"Microservices Migration in Industry: Intentions, Strategies, and Challenges","authors":"J. Fritzsch, J. Bogner, S. Wagner, A. Zimmermann","doi":"10.1109/ICSME.2019.00081","DOIUrl":"https://doi.org/10.1109/ICSME.2019.00081","url":null,"abstract":"To remain competitive in a fast changing environment, many companies started to migrate their legacy applications towards a Microservices architecture. Such extensive migration processes require careful planning and consideration of implications and challenges likewise. In this regard, hands-on experiences from industry practice are still rare. To fill this gap in scientific literature, we contribute a qualitative study on intentions, strategies, and challenges in the context of migrations to Microservices. We investigated the migration process of 14 systems across different domains and sizes by conducting 16 in-depth interviews with software professionals from 10 companies. Along with a summary of the most important findings, we present a separate discussion of each case. As primary migration drivers, maintainability and scalability were identified. Due to the high complexity of their legacy systems, most companies preferred a rewrite using current technologies over splitting up existing code bases. This was often caused by the absence of a suitable decomposition approach. As such, finding the right service cut was a major technical challenge, next to building the necessary expertise with new technologies. Organizational challenges were especially related to large, traditional companies that simultaneously established agile processes. Initiating a mindset change and ensuring smooth collaboration between teams were crucial for them. Future research on the evolution of software systems can in particular profit from the individual cases presented.","PeriodicalId":106748,"journal":{"name":"2019 IEEE International Conference on Software Maintenance and Evolution (ICSME)","volume":"36 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-06-11","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115676052","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 50
An Analysis of 35+ Million Jobs of Travis CI 特拉维斯公司3500多万个工作岗位分析
Pub Date : 2019-04-20 DOI: 10.1109/ICSME.2019.00044
Monperrus Martin, Thomas Durieux, Rui Abreu, Tegawendé F. Bissyandé, Luis Cruz
Travis CI handles automatically thousands of builds every day to, amongst other things, provide valuable feedback to thousands of open-source developers. In this paper, we investigate Travis CI to firstly understand who is using it, and when they start to use it. Secondly, we investigate how the developers use Travis CI and finally, how frequently the developers change the Travis CI configurations. We observed during our analysis that the main users of Travis CI are corporate users such as Microsoft. And the programming languages used in Travis CI by those users do not follow the same popularity trend than on GitHub, for example, Python is the most popular language on Travis CI, but it is only the third one on GitHub. We also observe that Travis CI is set up on average seven days after the creation of the repository and the jobs are still mainly used (60%) to run tests. And finally, we observe that 7.34% of the commits modify the Travis CI configuration. We share the biggest benchmark of Travis CI jobs (to our knowledge): it contains 35,793,144 jobs from 272,917 different GitHub projects.
Travis CI每天自动处理数千个构建,为数千名开源开发人员提供有价值的反馈。在本文中,我们调查了Travis CI,首先了解谁在使用它,什么时候开始使用它。其次,我们调查了开发人员如何使用Travis CI,最后,开发人员更改Travis CI配置的频率。我们在分析过程中观察到,Travis CI的主要用户是企业用户,比如微软。这些用户在Travis CI中使用的编程语言并没有遵循与GitHub相同的流行趋势,例如,Python是Travis CI上最流行的语言,但它只是GitHub上的第三个。我们还观察到,Travis CI平均在创建存储库7天后才会被设置,作业仍然主要用于运行测试(60%)。最后,我们观察到7.34%的提交修改了Travis CI配置。我们分享了Travis CI工作的最大基准(据我们所知):它包含来自272,917个不同GitHub项目的35,793,144个工作。
{"title":"An Analysis of 35+ Million Jobs of Travis CI","authors":"Monperrus Martin, Thomas Durieux, Rui Abreu, Tegawendé F. Bissyandé, Luis Cruz","doi":"10.1109/ICSME.2019.00044","DOIUrl":"https://doi.org/10.1109/ICSME.2019.00044","url":null,"abstract":"Travis CI handles automatically thousands of builds every day to, amongst other things, provide valuable feedback to thousands of open-source developers. In this paper, we investigate Travis CI to firstly understand who is using it, and when they start to use it. Secondly, we investigate how the developers use Travis CI and finally, how frequently the developers change the Travis CI configurations. We observed during our analysis that the main users of Travis CI are corporate users such as Microsoft. And the programming languages used in Travis CI by those users do not follow the same popularity trend than on GitHub, for example, Python is the most popular language on Travis CI, but it is only the third one on GitHub. We also observe that Travis CI is set up on average seven days after the creation of the repository and the jobs are still mainly used (60%) to run tests. And finally, we observe that 7.34% of the commits modify the Travis CI configuration. We share the biggest benchmark of Travis CI jobs (to our knowledge): it contains 35,793,144 jobs from 272,917 different GitHub projects.","PeriodicalId":106748,"journal":{"name":"2019 IEEE International Conference on Software Maintenance and Evolution (ICSME)","volume":"14 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-04-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114408564","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 17
Learning How to Mutate Source Code from Bug-Fixes 学习如何从bug修复中修改源代码
Pub Date : 2018-12-27 DOI: 10.1109/ICSME.2019.00046
Michele Tufano, Cody Watson, G. Bavota, M. D. Penta, Martin White, D. Poshyvanyk
Mutation testing has been widely accepted as an approach to guide test case generation or to assess the effectiveness of test suites. Empirical studies have shown that mutants are representative of real faults; yet they also indicated a clear need for better, possibly customized, mutation operators and strategies. While methods to devise domain-specific or general-purpose mutation operators from real faults exist, they are effort-and error-prone, and do not help the tester to decide whether and how to mutate a given source code element. We propose a novel approach to automatically learn mutants from faults in real programs. First, our approach processes bug fixing changes using fine-grained differencing, code abstraction, and change clustering. Then, it learns mutation models using a deep learning strategy. We have trained and evaluated our technique on a set of ~787k bug fixes mined from GitHub. Our empirical evaluation showed that our models are able to predict mutants that resemble the actual fixed bugs in between 9% and 45% of the cases, and over 98% of the automatically generated mutants are lexically and syntactically correct.
突变测试作为一种指导测试用例生成或评估测试套件有效性的方法已经被广泛接受。经验研究表明,突变体是真实缺陷的代表;然而,它们也表明,显然需要更好的、可能是定制的突变操作符和策略。虽然存在根据实际错误设计特定于领域或通用的突变操作符的方法,但它们很容易出错,并且不能帮助测试人员决定是否以及如何对给定的源代码元素进行突变。我们提出了一种从实际程序中的错误中自动学习突变体的新方法。首先,我们的方法使用细粒度差异、代码抽象和变更集群处理bug修复更改。然后,它使用深度学习策略学习突变模型。我们在GitHub上挖掘了787k个bug修复,并对我们的技术进行了培训和评估。我们的经验评估表明,我们的模型能够预测9%到45%的情况下与实际修复的错误相似的突变,并且超过98%的自动生成的突变在词汇和语法上是正确的。
{"title":"Learning How to Mutate Source Code from Bug-Fixes","authors":"Michele Tufano, Cody Watson, G. Bavota, M. D. Penta, Martin White, D. Poshyvanyk","doi":"10.1109/ICSME.2019.00046","DOIUrl":"https://doi.org/10.1109/ICSME.2019.00046","url":null,"abstract":"Mutation testing has been widely accepted as an approach to guide test case generation or to assess the effectiveness of test suites. Empirical studies have shown that mutants are representative of real faults; yet they also indicated a clear need for better, possibly customized, mutation operators and strategies. While methods to devise domain-specific or general-purpose mutation operators from real faults exist, they are effort-and error-prone, and do not help the tester to decide whether and how to mutate a given source code element. We propose a novel approach to automatically learn mutants from faults in real programs. First, our approach processes bug fixing changes using fine-grained differencing, code abstraction, and change clustering. Then, it learns mutation models using a deep learning strategy. We have trained and evaluated our technique on a set of ~787k bug fixes mined from GitHub. Our empirical evaluation showed that our models are able to predict mutants that resemble the actual fixed bugs in between 9% and 45% of the cases, and over 98% of the automatically generated mutants are lexically and syntactically correct.","PeriodicalId":106748,"journal":{"name":"2019 IEEE International Conference on Software Maintenance and Evolution (ICSME)","volume":"42 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2018-12-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122902854","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 56
期刊
2019 IEEE International Conference on Software Maintenance and Evolution (ICSME)
全部 Acc. Chem. Res. ACS Applied Bio Materials ACS Appl. Electron. Mater. ACS Appl. Energy Mater. ACS Appl. Mater. Interfaces ACS Appl. Nano Mater. ACS Appl. Polym. Mater. ACS BIOMATER-SCI ENG ACS Catal. ACS Cent. Sci. ACS Chem. Biol. ACS Chemical Health & Safety ACS Chem. Neurosci. ACS Comb. Sci. ACS Earth Space Chem. ACS Energy Lett. ACS Infect. Dis. ACS Macro Lett. ACS Mater. Lett. ACS Med. Chem. Lett. ACS Nano ACS Omega ACS Photonics ACS Sens. ACS Sustainable Chem. Eng. ACS Synth. Biol. Anal. Chem. BIOCHEMISTRY-US Bioconjugate Chem. BIOMACROMOLECULES Chem. Res. Toxicol. Chem. Rev. Chem. Mater. CRYST GROWTH DES ENERG FUEL Environ. Sci. Technol. Environ. Sci. Technol. Lett. Eur. J. Inorg. Chem. IND ENG CHEM RES Inorg. Chem. J. Agric. Food. Chem. J. Chem. Eng. Data J. Chem. Educ. J. Chem. Inf. Model. J. Chem. Theory Comput. J. Med. Chem. J. Nat. Prod. J PROTEOME RES J. Am. Chem. Soc. LANGMUIR MACROMOLECULES Mol. Pharmaceutics Nano Lett. Org. Lett. ORG PROCESS RES DEV ORGANOMETALLICS J. Org. Chem. J. Phys. Chem. J. Phys. Chem. A J. Phys. Chem. B J. Phys. Chem. C J. Phys. Chem. Lett. Analyst Anal. Methods Biomater. Sci. Catal. Sci. Technol. Chem. Commun. Chem. Soc. Rev. CHEM EDUC RES PRACT CRYSTENGCOMM Dalton Trans. Energy Environ. Sci. ENVIRON SCI-NANO ENVIRON SCI-PROC IMP ENVIRON SCI-WAT RES Faraday Discuss. Food Funct. Green Chem. Inorg. Chem. Front. Integr. Biol. J. Anal. At. Spectrom. J. Mater. Chem. A J. Mater. Chem. B J. Mater. Chem. C Lab Chip Mater. Chem. Front. Mater. Horiz. MEDCHEMCOMM Metallomics Mol. Biosyst. Mol. Syst. Des. Eng. Nanoscale Nanoscale Horiz. Nat. Prod. Rep. New J. Chem. Org. Biomol. Chem. Org. Chem. Front. PHOTOCH PHOTOBIO SCI PCCP Polym. Chem.
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
0
微信
客服QQ
Book学术公众号 扫码关注我们
反馈
×
意见反馈
请填写您的意见或建议
请填写您的手机或邮箱
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
现在去查看 取消
×
提示
确定
Book学术官方微信
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1