CatchUp!: capturing and replaying refactorings to support API evolution
Proceedings of the 27th international conference on Software engineering
API Changes - How FarWould You Go?
CSMR '07 Proceedings of the 11th European Conference on Software Maintenance and Reengineering
Refactoring-based support for binary compatibility in evolving frameworks
GPCE '07 Proceedings of the 6th international conference on Generative programming and component engineering
ReBA: refactoring-aware binary adaptation of evolving libraries
Proceedings of the 30th international conference on Software engineering
Automation of broad sanity test generation
Programming and Computing Software
Formal methods in industrial software standards enforcement
PSI'06 Proceedings of the 6th international Andrei Ershov memorial conference on Perspectives of systems informatics
Practical approach to specification and conformance testing of distributed network applications
ISAS'05 Proceedings of the Second international conference on Service Availability
Hi-index | 0.00 |
This paper discusses problems of ensuring backward compatibility between new and old versions of software components (e.g., libraries). The Linux environment is considered as the main example. Breach of the compatibility in a new version of a software component may result in crashing or incorrect behavior (at the binary level) or inability to build (at the source level) applications targeted at a previous version of the component when the applications are used with the new version of the component. The paper describes typical issues that cause backward compatibility problems at the binary level and presents a new method for automatic detection of such issues in the course of the component development, with the main attention being focused on changes in structure of interfaces. The C and C++ languages are used to exemplify the approach, although it can be applied to other languages, such as Java or C#, as well. Unlike the existing means, the suggested method can verify a broad spectrum of backward compatibility problems by comparing function signatures and type definitions obtained from the component's header files in addition to analyzing symbols in the component's binaries. This paper also describes an automated checker tool that implements the suggested method together with some results of its practical usage. In conclusion, further improvements of automatic means for backward compatibility verification are discussed.