Automated Versioning As a Mechanism for Component Software Consistency Guarantee<br />Jaroslav BAUML<br />Dept of Computer...
ComponentEvolution<br />Component updates reflect their evolution<br />Application consistency during updates<br />One rele...
Versions<br />Versions are one of the most important thing in component development…<br />Do not believe?<br />10/27/2009<...
Versions<br />Versions are one of the most important thing in component development…<br />10/27/2009<br />4<br />Bauml: Au...
Versions<br />Versions are one of the most important thing in component development…<br />… because they handle (or descri...
Current use ofversionsemantics<br />Very often versioning only adhoc<br />Marketing purpose<br />Semantic purpose<br />All...
Semantic Versioning<br />No tooling, even no methodologyto create semantic versioning.<br />Specifications talk about “com...
Subtyping as key solution for semantic versioning<br />Can use Car instead of Vehicle. Car is a subtype of …<br />A compat...
combine to root:</li></ul>spe ⊕ gen -> mut<br />mut ⊕ X  -> mut<br />non ⊕ X -> X<br />
SubtypingExample<br />10/27/2009<br />9<br />Bauml: Automated Reliable Versioning<br />Rold =majold.minold.micold<br />Rne...
Subtyping Example (2)<br />Two consecutive revisions, versions: <br />The function Difference (Rold,Rnew) is defined by the ...
Our Implementation for OSGi<br />Simple meta-models <br />Implementation of subtyping<br />Java level<br />JavaTypes – gen...
Validation – Real World Bundles<br />To provide a basic validation of proposed principle, implemented tool was tested on b...
Upcoming SlideShare
Loading in …5
×

Automated Versioning As A Mechanism For Component Software

686 views
635 views

Published on

Presentation from theoretical seminar in Prag at Charles University.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
686
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Automated Versioning As A Mechanism For Component Software

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

×