skip to main content
10.1145/1562860.1562861acmotherconferencesArticle/Chapter ViewAbstractPublication PagesecoopConference Proceedingsconference-collections
research-article

Revision classes for explicit versioning

Published:07 July 2009Publication History

ABSTRACT

The source code of software is typically managed by version control systems that keep track of the different versions of files over time. As versioning is associated with a file and not a class, the versioning mechanism is semantically detached from the actual source code. This paper introduces the concept of revision classes. Revision classes provide an explicit versioning mechanism for classes that, similar to inheritance, allows the developer to redefine existing class members and add new class members in a new version. This explicit versioning mechanism allows the developer to explicitly declare the deltas to a previous version. The developer may reflect on the necessity of updates and thus errors can be avoided that sneak into the source code by inconsiderate changes.

References

  1. A. Bergel, S. Ducasse, and O. Nierstrasz. Classbox/J: Controlling the Scope of Change in Java. In Proceedings of the ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), pages 177--189, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. G. Bierman, M. Parkinson, and J. Noble. UpgradeJ: Incremental Typechecking for Class Upgrades. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP), pages 235--259, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. G. Bracha and W. Cook. Mixin-based Inheritance. In Proceedings of the ACM Conference on Object-Oriented Programming Systems Languages and Applications, European Conference on Object-Oriented Programming (OOPSLA/ECOOP), pages 303--311, 1990. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. S. Cech Previtali. Dynamic Updating of Object-Oriented Software Systems based on Aspects. PhD thesis, Laboratory for Software Technology, Department of Computer Science, ETH Zurich, 2009.Google ScholarGoogle Scholar
  5. M. Denker, T. Gîrba, A. Lienhard, O. Nierstrasz, L. Renggli, and P. Zumkehr. Encapsulating and Exploiting Change with Changeboxes. In Proceedings of the International Conference on Dynamic Languages (ICDL), pages 25--49, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. E. Ernst. Family Polymorphism. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP), pages 303--326, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. T. Lindholm and F. Yellin. The Java Virtual Machine Specification. Addison-Wesley Publishing Company, Inc., Reading, Massachusetts, 2nd edition, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. B. Meyer. Object-Oriented Software Construction. Prentice Hall, 2nd edition, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. M. Mezini and K. Ostermann. Integrating Independent Components with On-demand Remodularization. In Proceedings of the ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), pages 52--67, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. M. Mezini and K. Ostermann. Conquering Aspects with Caesar. In Proceedings of the International Conference on Aspect-Oriented Software Development (AOSD), pages 90--99, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. R. Robbes and M. Lanza. A Change-based Approach to Software Evolution. Electronic Notes in Theoretical Computer Science (ENTCS), 166:93--109, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Java Espresso compiler. http://types.bu.edu/Espresso/JavaEspresso.html.Google ScholarGoogle Scholar
  13. JDNSS---Java DNS Server. http://jdnss.sourceforge.net/.Google ScholarGoogle Scholar

Index Terms

  1. Revision classes for explicit versioning

          Recommendations

          Reviews

          Tansel Ersavas

          A powerful approach to version control is finally reaching mainstream languages. Previtali, Sch?uble, and Gross propose an explicit versioning mechanism based on class versioning. Then, they describe a language extension for Java and validate the approach with a small case study. Their approach is sound, the presentation is very nice, and the case for introducing revision classes in Java convincingly demonstrates the advantages of versioning based on revision classes. Version control systems have been around for a long time. The authors claim that the bulk of these systems are based on source text, which is largely correct. However, some late binding languages with powerful metalanguage abilities, such as Smalltalk, and object database systems, such as GemStone, have included such versioning mechanisms for decades. The GemStone persistent object system has been around since 1987, and has had versioning through class history objects since very early implementations. Both the ENVY/Smalltalk versioning system [1]-regarded as a benchmark for versioning systems for Smalltalk-and Cincom's Store use the concept of class extensions for modifications. It is also important to note parallel research done for software diagrams using metadata-some computer-aided software engineering (CASE) tools and academic researchers investigate metadata-based versioning for software diagrams [2]. The authors describe a method of improving a system using its own meta-abilities. There have been many advancements in this field over the last 30 years, but the achievements of the pioneer dynamic object-oriented languages went largely unpublished. More research is warranted into these achievements, in order to avoid reinventing them. Only when we understand these techniques can we find truly novel uses, both in version control and other similarly difficult fields. Nevertheless, the authors' approach is novel in its domain, and they deserve praise for finally bringing these techniques to mainstream programming. Online Computing Reviews Service

          Access critical reviews of Computing literature here

          Become a reviewer for Computing Reviews.

          Comments

          Login options

          Check if you have access through your login credentials or your institution to get full access on this article.

          Sign in
          • Published in

            cover image ACM Other conferences
            RAM-SE '09: Proceedings of the Workshop on AOP and Meta-Data for Software Evolution
            July 2009
            39 pages
            ISBN:9781605585482
            DOI:10.1145/1562860

            Copyright © 2009 ACM

            Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

            Publisher

            Association for Computing Machinery

            New York, NY, United States

            Publication History

            • Published: 7 July 2009

            Permissions

            Request permissions about this article.

            Request Permissions

            Check for updates

            Qualifiers

            • research-article

          PDF Format

          View or Download as a PDF file.

          PDF

          eReader

          View online with eReader.

          eReader