Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Automated Versioning As A Mechanism For Component Software
1. Automated Versioning As a Mechanism for Component Software Consistency Guarantee Jaroslav BAUML Dept of Computer Science UWB, Pilsen
2. ComponentEvolution Component updates reflect their evolution Application consistency during updates One release of component Dependencies to components Releases during time Depencencies to explicit releases of components (specified by version) 10/27/2009 2 Bauml: Automated Reliable Versioning
3. Versions Versions are one of the most important thing in component development… Do not believe? 10/27/2009 3 Bauml: Automated Reliable Versioning
4. Versions Versions are one of the most important thing in component development… 10/27/2009 4 Bauml: Automated Reliable Versioning
5. Versions Versions are one of the most important thing in component development… … because they handle (or describe) component evolution Unfortunately is also one of the less tracked Common versioning scheme: major.minor.micro_textualAddons 1.4.2_alpha2 10/27/2009 5 Bauml: Automated Reliable Versioning
6. Current use ofversionsemantics Very often versioning only adhoc Marketing purpose Semantic purpose All incompatible changes <=> majorid++. All backward compatible <=> minor id++. No changes on interface <=> microid++. 10/27/2009 6 Bauml: Automated Reliable Versioning
7. Semantic Versioning No tooling, even no methodologyto create semantic versioning. Specifications talk about “compatibility”, but it is too weak. To determine what is and what is not compatible, we can use structuralsubtyping. 10/27/2009 7 Bauml: Automated Reliable Versioning
11. Subtyping Example (2) Two consecutive revisions, versions: The function Difference (Rold,Rnew) is defined by the rulesin the table. 10/27/2009 10 Bauml: Automated Reliable Versioning OLD Logger 1.2.4, wefoundMutation => NEW Logger‘s version = 2.0.0
12. Our Implementation for OSGi Simple meta-models Implementation of subtyping Java level JavaTypes – general project to handle java type system at runtime Bytecode, reflection, … Bundle level Metadata inspection 10/27/2009 11 Bauml: Automated Reliable Versioning
13. Validation – Real World Bundles To provide a basic validation of proposed principle, implemented tool was tested on bundles from Apache Felix archive. 10/27/2009 12
14. Conclusion Our method allows you to ensure component consistency possible by component type representation as strong as type information allows (semantic changes, dynamic features) “No matter how sophisticated a (versioning) scheme is, it is useless if it is not used by all components universally.” 10/27/2009 13 /18 Bauml: Automated Reliable Versioning