计算机科学 ›› 2025, Vol. 52 ›› Issue (7): 1-12.doi: 10.11896/jsjkx.240900097
洪欣然, 马俊, 王静, 张闯, 余杰, 李小玲, 张雪艳, 阳娅婧
HONG Xinran, MA Jun, WANG Jing, ZHANG Chuang, YU Jie, LI Xiaoling, ZHANG Xueyan, YANG Yajing
摘要: 随着软硬件技术的飞速发展,软件生态成为信息产业创新发展的关键。然而,软件生态规模和数量庞大、应用场景复杂多样、依赖和供应链关系纵横交错,使得软件生态快速演化带来的兼容性问题日益突出,传统兼容性分析方法的局限性也越来越明显。操作系统作为支撑整个软件生态系统的基础设施,其兼容性问题直接关系到软件的稳定性、可用性、安全性以及软件生态的健康发展。从操作系统视角分析兼容性能够更宏观地把握整个软件生态的上下层次和依赖关系,并可以借助大数据和智能化手段,对海量的软件生态关系和复杂演化进行分析,从而更高效地识别和解决兼容性问题,提高操作系统的适应性和用户体验。文中旨在从架构层次、关系网络、演化过程等多个维度全面总结分析操作系统兼容性的内涵、模型,并从操作系统中软件生态演化的角度,结合复杂关系网络、人工智能、知识图谱等技术手段发展,从分析评估、检测定位、修复保障等方面系统性地探讨了当前兼容性问题的主要解决方案和研究成果,并对该领域的研究挑战和未来发展方向进行了归纳总结。
中图分类号:
[1]KOCHHAR P S,THUNG F,NAGAPPAN N,et al.Under-standing the Test Automation Culture of App Developers[C]//2015 IEEE 8th International Conference on Software Testing,Verification and Validation.Graz,Austria:IEEE,2015:1-10. [2]WEI L,LIU Y,CHEUNG S C.Taming Android fragmentation:characterizing and detecting compatibility issues for Android apps[C]//Proceedings of the 31st IEEE/ACM International Conference on Automated Software Engineering.Singapore Singapore:ACM,2016:226-237. [3]REIF M,EICHBERG M,HERMANN B,et al.Call graph construction for Java libraries[C]//Proceedings of the 2016 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering.Seattle WA USA:ACM,2016:474-486. [4]PATRA J,DIXIT P N,PRADEL M.ConflictJS:finding and understanding conflicts between JavaScript libraries[C]//Procee-dings of the 40th International Conference on Software Enginee-ring.Gothenburg Sweden:ACM,2018:741-751. [5]WANG Y,WEN M,LIU Y,et al.Watchman:monitoring dependency conflicts for Python library ecosystem[C]//Procee-dings of the ACM/IEEE 42nd International Conference on Software Engineering.Seoul South Korea:ACM,2020:125-135. [6]REDHAT.Red Hat Enterprise Linux 8:Application Compati-bility Guide[EB/OL].(2024-03-25)[2024-09-04].https://access.redhat.com/articles/rhel8-abi-compatibility. [7]UBUNTU.Ubuntu release cycle[EB/OL].(2024-03-25)[2024-09-04].https://ubuntu.com/about/release-cycle. [8]LI S,LIU J,WANG S,et al.Third-party libraries depending on conflict research review[J].Journal of software,2023(10):4636-4660. [9]KYLE DAIGLE & GITHUB STAFF.Octoverse:The state of open source and rise of AI in 2023[EB/OL].(2023-11-08)[2024-09-05].https://github.blog/news-insights/research/the-state-of-open-source-and-ai/. [10]WINDOWS 11,WINDOWS 10.KB5042421:CrowdStrike issue impacting Windows endpoints causing an 0x50 or 0x7E error message on a blue screen - Microsoft Support[EB/OL].(2023-11-08)[2024-09-05].https://support.microsoft.com/en-us/topic/kb5042421-crowdstrike-issue-impacting-windows-endpoin-ts-causing-an-0x50-or-0x7e-error-message-on-a-blue-screen-b1c700e0-7317-4e95-aeee-5d67dd35b92f. [11]FAZZINI M,ORSO A.Automated cross-platform inconsistency detection for mobile apps[C]//2017 32nd IEEE/ACM International Conference on Automated Software Engineering(ASE).Urbana,IL:IEEE,2017:308-318. [12]SOTO-VALERO C,HARRAND N,MONPERRUS M,et al.A comprehensive study of bloated dependencies in the Maven ecosystem[J].Empirical Software Engineering,2021,26(3):45. [13]WU Y,YU J,ZHENG C,et al.Compatibility Analysis of Cstandard Library Replacement in openEuler[J].Computer Research and Development,2019,60(7):1514-1532. [14]BACKES M,BUGIEL S,DERR E.Reliable Third-Party Library Detection in Android and its Security Applications[C]//Proceedings of the 2016 ACM SIGSAC Conference on Computer and Communications Security.Vienna Austria:ACM,2016:356-367. [15]WANG Y,WEN M,WU R,et al.Could I Have a Stack Trace to Examine the Dependency Conflict Issue?[C]//2019 IEEE/ACM 41st International Conference on Software Engineering.Montreal,QC,Canada:IEEE,2019:572-583. [16]WANG Y,WEN M,LIU Z,et al.Do the dependency conflicts in my project matter?[C]//Proceedings of the 2018 26th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering.Lake Buena Vista FL USA:ACM,2018:319-330. [17]WU W,ADAMS B,GUEHENEUC Y G,et al.ACUA:APIChange and Usage Auditor[C]//2014 IEEE 14th International Working Conference on Source Code Analysis and Manipulation.Victoria,BC,Canada:IEEE,2014:89-94. [18]SHVED P,SILAKOV D.Binary Compatibility of Shared Libra-ries Implemented in C++ on GNU/Linux Systems[C]//Spring/Summer Young Researchers' Colloquium on Software Engineering.2009. [19]CUI J,SHINDE S,SEN S,et al.Dynamic Binary Translation for SGX Enclaves[J].ACM Transactions on Privacy and Security,2022,25(4):1-40. [20]CAI H,ZHANG Z,LI L,et al.A large-scale study of application incompatibilities in Android[C]//Proceedings of the 28th ACM SIGSOFT International Symposium on Software Testing and Analysis.Beijing China:ACM,2019:216-227. [21]HARYONO S A,THUNG F,LO D,et al.AndroEvolve:automated Android API update with data flow analysis and variable denormalization[J].arXiv:2011.05020,2022. [22]KOCI R,FRANCH X,JOVANOVIC P,et al.Classification of Changes in API Evolution[C]//2019 IEEE 23rd International Enterprise Distributed Object Computing Conference(EDOC).Paris,France:IEEE,2019:243-249. [23]OLIVIER P,LEFEUVRE H,CHIBA D,et al.A Syscall-Level Binary-Compatible Unikernel[J].TC:IEEE Transactions on Computers,2022,71(9):12. [24]OLIVIER P,CHIBA D,LANKES S,et al.A binary-compatible unikernel[C]//Proceedings of the 15th ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments.Providence RI USA:ACM,2019:59-73. [25]ARTHO C,SUZAKI K,DI COSMO R,et al.Why do software packages conflict?[C]//2012 9th IEEE Working Conference on Mining Software Repositories(MSR).Zurich:IEEE,2012:141-150. [26]LIU P,ZHAO Y,CAI H,et al.Automatically Detecting API-induced Compatibility Issues in Android Apps:A Comparative Analysis(Replicability Study)[C]//Proceedings of the 31st ACM SIGSOFT International Symposium on Software Testing and Analysis.2022:617-628. [27]DREYFUS E.Mac OS X binary compatibility on NetBSD:challenges and implementation[C]//Proceedings of the 2004 EuroBSDCon.Karlsruhe,Germany,2004. [28]BAVOTA G,CANFORA G,PENTA M D,et al.The Evolution of Project Inter-dependencies in a Software Ecosystem:The Case of Apache[C]//2013 IEEE International Conference on Software Maintenance.Eindhoven,Netherlands:IEEE,2013:280-289. [29]PADIOLEAU Y,LAWALL J,HANSEN R R,et al.Documenting and automating collateral evolutions in linux device drivers[J].ACM SIGOPS Operating Systems Review,2008,42(4):247-260. [30]HORA A,ROBBES R,ANQUETIL N,et al.How do develo-pers react to API evolution? The Pharo ecosystem case[C]//2015 IEEE International Conference on Software Maintenance and Evolution(ICSME).Bremen:IEEE,2015:251-260. [31]BAVOTA G,LINARES-VASQUEZ M,BERNAL-CARDENAS C E,et al.The Impact of API Change- and Fault-Proneness on the User Ratings of Android Apps[J].IEEE Transactions on Software Engineering,2015,41(4):384-407. [32]LIU Y,LIU M,PENG X,et al.Generating concept based API element comparison using a knowledge graph[C]//Proceedings of the 35th IEEE/ACM International Conference on Automated Software Engineering.Virtual Event Australia:ACM,2020:834-845. [33]ZHAO Z,KOU B,IBRAHIM M Y,et al.Knowledge-Based Version Incompatibility Detection for Deep Learning[C]//Procee-dings of the 31st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering:ACM,2023:708-719. [34]ZHENG X,ZENG D,LI H,et al.Analyzing open-source software systems as complex networks[J].Physica A:Statistical Mechanics and its Applications,2008,387(24):6190-6200. [35]YE H,CHEN W,DOU W,et al.Knowledge-based environment dependency inference for python programs[C]//Proceedings of the 44th International Conference on Software Engineering.Pittsburgh Pennsylvania:ACM,2022:1245-1256. [36]WEI L,LIU Y,CHEUNG S C,et al.Understanding and Detecting Fragmentation-Induced Compatibility Issues for Android Apps[J].IEEE Transactions on Software Engineering,2020,46(11):1176-1199. [37]ZHANG Z,ZHU H,WEN M,et al.How Do Python Framework APIs Evolve? An Exploratory Study[C]//2020 IEEE 27th International Conference on Software Analysis,Evolution and Reengineering.London,ON,Canada:IEEE,2020:81-92. [38]HE D,LI L,WANG L,et al.Understanding and detecting evolution-induced compatibility issues in Android apps[C]//Proceedings of the 33rd ACM/IEEE International Conference on Automated Software Engineering.Montpellier France:ACM,2018:167-177. [39]LI L,BISSYANDÉ T F,WANG H,et al.CiD:automating the detection of API-related compatibility issues in Android apps[C]//Proceedings of the 27th ACM SIGSOFT International Symposium on Software Testing and Analysis.Amsterdam Netherlands:ACM,2018:153-163. [40]MAHMUD T,CHE M,YANG G.Detecting Android API Compatibility Issues With API Differences[J].IEEE Transactions on Software Engineering,2023,49(7):3857-3871. [41]HUANG H,WEI L,LIU Y,et al.Understanding and detecting callback compatibility issues for Android applications[C]//Proceedings of the 33rd ACM/IEEE International Conference on Automated Software Engineering.Montpellier France:ACM,2018:532-542. [42]JIA Z,LI S,YU T,et al.DepOwl:Detecting dependency bugs to prevent compatibility failures[C]//2021 IEEE/ACM 43rd International Conference on Software Engineering(ICSE).Madrid,ES:IEEE,2021:86-98. [43]PANICHELLA A,CAMPOS J,FRASER G.EvoSuite at theSBST 2020 Tool Competition[C]//Proceedings of the IEEE/ACM 42nd International Conference on Software Engineering Workshops.Seoul Republic of Korea:ACM,2020:549-552. [44]MANCINELLI F,BOENDER J,DI COSMO R,et al.Managing the Complexity of Large Free and Open Source Package-Based Software Distributions[C]//21st IEEE/ACM International Conference on Automated Software Engineering.Tokyo:IEEE,2006:199-208. [45]SAKTI A,PESANT G,GUÉHÉNEUC Y G.Instance Generator and Problem Representation to Improve Object Oriented Code Coverage[J].IEEE Transactions on Software Enginee-ring,2015,41(3):294-313. [46]WANG Y,WU R,WANG C,et al.Will Dependency Conflicts Affect My Program's Semantics?[J].IEEE Transactions on Software Engineering,2021,48(7):2295-2316. [47]GHORBANI N,GARCIA J,MALEK S.Detection and Repair of Architectural Inconsistencies in Java[C]//2019 IEEE/ACM 41st International Conference on Software Engineering(ICSE).Montreal,QC,Canada:IEEE,2019:560-571. [48]HORA A,VALENTE M T.Apiwave:Keeping track of APIpopularity and migration[C]//2015 IEEE International Confe-rence on Software Maintenance and Evolution(ICSME).Bremen,Germany:IEEE,2015:321-323. [49]MEZZETTI G,MØLLER A,TORP M T.Type Regression Testing to Detect Breaking Changes in Node.js Libraries[C]//ECOOP 2018.2018. [50]LAMOTHE M,SHANG W.Exploring the use of automatedAPI migrating techniques in practice:an experience report on Android[C]//Proceedings of the 15th International Conference on Mining Software Repositories.Gothenburg Sweden:ACM,2018:503-514. [51]WONG W E,GAO R,LI Y,et al.A Survey on Software Fault Localization[J].IEEE Transactions on Software Engineering,2016,42(8):707-740. [52]AHMED K,LIS M,RUBIN J.Slicer4J:a dynamic slicer for Java[C]//Proceedings of the 29th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering.Athens Greece:ACM,2021:1570-1574. [53]SOREMEKUN E,KIRSCHNER L,BÖHME M,et al.Locating faults with program slicing:an empirical analysis[J].Empirical Software Engineering,2021,26(3):51. [54]JANNACH D,SCHMITZ T,SHCHEKOTYKHIN K.Paralle-lized Hitting Set Computation for Model-Based Diagnosis[C]//Proceedings of the AAAI Conference on Artificial Intelligence.2015. [55]ZHANG M,LI Y,LI X,et al.An Empirical Study of Boosting Spectrum-Based Fault Localization via PageRank[J].IEEE Transactions on Software Engineering,2021,47(6):1089-1113. [56]SARHAN Q I,BESZEDES A.A Survey of Challenges in Spectrum-Based Software Fault Localization[J].IEEE Access,2022,10:10618-10639. [57]SARHAN Q I,SZATMARI A,TOTH R.CharmFL:A FaultLocalization Tool for Python[C]//2021 IEEE 21st InternationalWorking Conference on Source Code Analysis and Manipulation.IEEE,2021:114-119 [58]SOHN J,YOO S.Fluccs:Using code and change metrics to improve fault localization[C]//Proceedings of the 26th ACM SIGSOFT International Symposium on Software Testing and Analysis.2017:273-283. [59]LI X,LI W,ZHANG Y,et al.DeepFL:integrating multiple fault diagnosis dimensions for deep fault localization[C]//Procee-dings of the 28th ACM SIGSOFT International Symposium on Software Testing and Analysis.Beijing China:ACM,2019:169-180. [60]REDHAT.Introducing kpatch:Dynamic kernel patching[EB/OL].(2023-11-08)[2024-10-15].https://www.redhat.com/en/blog/introducing-kpatch-dynamic-kernel-patching. [61]SUSE.Live kernel patching using kGraft[EB/OL].(2023-11-08)[2024-10-15].https://documentation.suse.com/sles/12-SP5/html/SLES-kgraft/index.html. [62]UBUNTU.Livepatch documentation[EB/OL].(2023-11-08)[2024-10-15].https://ubuntu.com/security/livepatch/docs. [63]ZHOU L,ZHANG F,LIAO J,et al.KShot:Live kernel patching with SMM and SGX[C]//2020 50th Annual IEEE/IFIP International Conference on Dependable Systems and Networks(DSN).2020:1-13. [64]SU C,XING X,CHENG X,et al.LPAH:Illustrating efficient live patching with alignment holes in kernel data[J].IEEE Transactions on Computers,2024,73(10):2434-2448. [65]XU Z,XIA L,LIU Y.Automatic hot patch generation for android kernels[C]//29th USENIX Security Symposium(USENIX Security 20).2020:2397-2414. [66]LAMOTHE M,SHANG W,CHEN T H.A3:Assisting Android API Migrations Using Code Examples[J].IEEE Transactions on Software Engineering,2022,48(2):417-431. [67] HARYONO S A,THUNG F,LO D,et al.AndroEvolve:Automated Android API Update with Data Flow Analysis and Variable Denormalization[J].Empirical Software Engineering,2022,27(3):73. [68]FAZZINI M,XIN Q,ORSO A.Automated API-usage update for Android apps[C]//Proceedings of the 28th ACM SIGSOFT International Symposium on Software Testing and Analysis.Beijing China:ACM,2019:204-215. [69] THUNG F,KANG H J,SERRANO L,et al.Automatic An-droid Deprecated-API Usage Update by Learning from Single Updated Example[C]//Proceedings of the 28th International Conference on Program Comprehension.2020:401-405. [70]ZHAO Y,LI L,LIU K,et al.Towards automatically repairing compatibility issues in published Android apps[C]//Proceedings of the 44th International Conference on Software Engineering.Pittsburgh Pennsylvania:ACM,2022:2142-2153. [71]GNU PROJECT.Using LD,the GNU linker - table of contents[EB/OL].(2023-11-08)[2024-10-15].https://ftp.gnu.org/old-gnu/Manuals/ld-2.9.1/html_node/ld_toc.html. [72]ZHANG M,MENG W.JSISOLATE:lightweight in-browserJavaScript isolation[C]//Proceedings of the 29th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering.Athens Greece:ACM,2021:193-204. [73]LEFEUVRE H,GAIN G,BĂDOIU V A,et al.Loupe:Driving the Development of OS Compatibility Layers[C]//Proceedings of the 29th ACM International Conference on Architectural Support for Programming Languages and Operating Systems,Volume 1.2024:249-267. [74]LEVASSEUR J,UHLIG V,STOESS J,et al.Unmodified Device Driver Reuse and Improved System Dependability via Vir-tual Machines[C]//Proceedings of the 6th Conference on Symposium on Opearting Systems Design & Implementation.2004:17-30. [75]ABATE P,DI COSMO R,GOUSIOS G,et al.Dependency Solving Is Still Hard,but We Are Getting Better at It[C]//2020 IEEE 27th International Conference on Software Analysis,Evolution and Reengineering.London:IEEE,2020:547-551. [76]KIVITY A,LAOR D,COSTA G,et al.OSv-Optimizing theOperating System for Virtual Machines[C]//2014 Usenix Annual Technical Conference(USENIX ATC 14).2014:61-72. [77]TSAI C C,ARORA K S,BANDI N,et al.Cooperation and security isolation of library OSes for multi-process applications[C]//Proceedings of the Ninth European Conference on Computer Systems.Amsterdam The Netherlands:ACM,2014:1-14. [78]KUENZER S,BĂDOIU V A,LEFEUVRE H,et al.Unikraft:fast,specialized unikernels the easy way[C]//Proceedings of the Sixteenth European Conference on Computer Systems.Online Event United Kingdom:ACM,2021:376-394. [79]VITUCCI C,SUNDMARK D,JÄGEMAR M,et al.A reliability-oriented faults taxonomy and a recovery-oriented methodological approach for systems resilience[C]//2022 IEEE 46th Annual Computers,Software,and Applications Conference(COMPSAC).2022:48-55. [80]GONZALEZ-BARAHONA J M,ROBLES G,MICHLMAYRM,et al.Macro-level software evolution:a case study of a large software compilation[J].Empirical Software Engineering,2009,14(3):262-285. [81]TSAI C C,JAIN B,ABDUL N A,et al.A study of modern Linux API usage and compatibility:what to support when you're supporting[C]//Proceedings of the Eleventh European Conference on Computer Systems.London United Kingdom:ACM,2016:1-16. [82]QUACH A,ERINFOLAMI R,DEMICCO D,et al.A Multi-OS Cross-Layer Study of Bloating in User Programs,Kernel and Managed Execution Environments[C]//Proceedings of the 2017 Workshop on Forming an Ecosystem Around Software Transformation.Dallas Texas USA:ACM,2017:65-70. [83]WANG Y,CHEN B,HUANG K,et al.An Empirical Study of Usages,Updates and Risks of Third-Party Libraries in Java Projects[C]//2020 IEEE International Conference on Software Maintenance and Evolution.Adelaide,Australia:IEEE,2020:35-45. [84]QUACH A,ERINFOLAMI R,DEMICCO D,et al.A Multi-OS Cross-Layer Study of Bloating in User Programs,Kernel and Managed Execution Environments[C]//Proceedings of the 2017 Workshop on Forming an Ecosystem Around Software Transformation.Dallas Texas USA:ACM,2017:65-70. [85]SHARIF H,ABUBAKAR M,GEHANI A,et al.TRIMMER:application specialization for code debloating[C]//Proceedings of the 33rd ACM/IEEE International Conference on Automated Software Engineering.Montpellier France:ACM,2018:329-339. [86]LINARES-VÁSQUEZ M,BAVOTA G,BERNAL-CÁRDENAS C,et al.API change and fault proneness:a threat to the success of Android apps[C]//Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering.Saint Petersburg Russia:ACM,2013:477-487. [87]REN Y,GUAN J,MA J,et al.CLASC:A Changelog Based Automatic Code Source Classification Method for Operating System Packages[C]//2019 26th Asia-Pacific Software Engineering Conference(APSEC).Putrajaya,Malaysia:IEEE,2019:378-385. [88]MA Y,YU Y,LI S,et al.MulCS:Towards a Unified Deep Representation for Multilingual Code Search[C]//2023 IEEE International Conference on Software Analysis,Evolution and Reengineering.Taipa,Macao:IEEE,2023:120-131. [89]YU Z,CAO R,TANG Q,et al.Order Matters:Semantic-Aware Neural Networks for Binary Code Similarity Detection[J].Proceedings of the AAAI Conference on Artificial Intelligence,2020,34(1):1145-1152. |
|