skip to main content
research-article

Migrating large object-oriented Applications into component-based ones: instantiation and inheritance transformation

Authors Info & Claims
Published:26 October 2015Publication History
Skip Abstract Section

Abstract

Large object-oriented applications have complex and numerous dependencies, and usually do not have explicit software architectures. Therefore they are hard to maintain, and parts of them are difficult to reuse. Component-based development paradigm emerged for improving these aspects and for supporting effective maintainability and reuse. It provides better understandability through a high-level architecture view of the application. Thereby migrating object-oriented applications to component-based ones will contribute to improve these characteristics (maintainability and reuse). In this paper, we propose an approach to automatically transform object-oriented applications to component-based ones. More particularly, the input of the approach is the result provided by software architecture recovery: a component-based architecture description. Then, our approach transforms the object-oriented source code in order to produce deployable components. We focus in this paper on the transformation of source code related to instantiation and inheritance dependencies between classes that are in different components. We experimented the proposed solution in the transformation of a collection of Java applications into the OSGi framework. The experimental results are discussed in this paper.

References

  1. S. Allier, S. Sadou, H. Sahraoui, and R. Fleurquin. From object-oriented applications to component-oriented applications via component-oriented architecture. In Software Architecture (WICSA), 2011 9th Working IEEE/IFIP Conference on, pages 214– 223, June 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Simon Allier, HouariA. Sahraoui, Salah Sadou, and Stphane Vaucher. Restructuring object-oriented applications into component-oriented applications by using consistency with execution traces. In Lars Grunske, Ralf Reussner, and Frantisek Plasil, editors, Component-Based Software Engineering, volume 6092 of Lecture Notes in Computer Science, pages 216–231. Springer Berlin Heidelberg, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Dominik Birkmeier and Sven Overhage. On component identification approaches classification, state of the art, and comparison. In GraceA. Lewis, Iman Poernomo, and Christine Hofmeister, editors, Component-Based Software Engineering, volume 5582 of Lecture Notes in Computer Science, pages 1–18. Springer Berlin Heidelberg, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. S. Chardigny, A. Seriai, M. Oussalah, and D. Tamzalit. Extraction of component-based architecture from object-oriented systems. In Software Architecture, 2008. WICSA 2008. Seventh Working IEEE/IFIP Conference on, pages 285–288, Feb 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Eleni Constantinou, Athanasios Naskos, George Kakarontzas, and Ioannis Stamelos. Extracting reusable components: A semi-automated approach for complex structures. Information Processing Letters, 115(3):414 – 417, 2015.Google ScholarGoogle ScholarCross RefCross Ref
  6. I. Crnkovic, S. Sentilles, A. Vulgarakis, and M.R.V. Chaudron. A classification framework for software component models. Software Engineering, IEEE Transactions on, 37(5):593–615, Sept 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. S. Ducasse and D. Pollet. Software architecture reconstruction: A process-oriented taxonomy. Software Engineering, IEEE Transactions on, 35(4):573–591, July 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. W. Weck et al. Do we need inheritance?, 1996.Google ScholarGoogle Scholar
  9. S. Kebir, A.-D. Seriai, S. Chardigny, and A. Chaoui. Qualitycentric approach for software component identification from objectoriented code. In Software Architecture (WICSA) and European Conference on Software Architecture (ECSA), 2012 Joint Working IEEE/IFIP Conference on, pages 181–190, Aug 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Hannes Kegel and Friedrich Steimann. Systematically refactoring inheritance to delegation in java. In Proceedings of the 30th International Conference on Software Engineering, ICSE ’08, pages 431–440, New York, NY, USA, 2008. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Kung-Kiu Lau and Zheng Wang. A taxonomy of software component models. In Software Engineering and Advanced Applications, 2005. 31st EUROMICRO Conference on, pages 88– 95, Aug 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Kung-Kiu Lau and Zheng Wang. Software component models. Software Engineering, IEEE Transactions on, 33(10):709–724, Oct 2007.Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Osgi Service Platform. The osgi alliance, release 6, 2015.Google ScholarGoogle Scholar
  14. A.-D. Seriai and S. Chardigny. A genetic approach for software architecture recovery from object-oriented code. In proc. of SEKE, 2011.Google ScholarGoogle Scholar
  15. Petr Spacek, Christophe Dony, Chouki Tibermacine, and Luc Fabresse. An inheritance system for structural & behavioral reuse in component-based software programming. In Proceedings of the 11th International Conference on Generative Programming and Component Engineering, GPCE ’12, pages 60–69, New York, NY, USA, 2012. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Clemens Szyperski. Component Software: Beyond Object-Oriented Programming. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 2nd edition, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Martin, Robert Cecil. Agile software development: principles, patterns, and practices. Upper Saddle River, NJ: Pearson Education. ISBN 9780135974445. 1st edition, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. John Vlissides, Richard Helm, Ralph Johnson, and Erich Gamma. Design patterns: Elements of reusable object-oriented software. Reading: Addison-Wesley, 49(120):11, 1995.Google ScholarGoogle Scholar
  19. Hironori Washizaki and Yoshiaki Fukazawa. A technique for automatic component extraction from object-oriented programs by refactoring. Science of Computer Programming, 56(12):99 – 116, 2005. New Software Composition Concepts. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Steimann, Friedrich and Mayer, Philip and Meisner, Andreas. Decoupling Classes with Inferred Interfaces. In Proceedings of the 2006 ACM Symposium on Applied Computing, SAC ’06, pages 1404–1408, New York, NY, USA, 2006. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Tip, Frank and Kiezun, Adam and Bäumer, Dirk. Refactoring for Generalization Using Type Constraints. In Proceedings of the 18th Annual ACM SIGPLAN Conference on Object-oriented Programing, Systems, Languages, and Applications, OOPSLA ’03, pages 13–26, New York, NY, USA, 2003. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Hauck, Franz J. Inheritance Modeled with Explicit Bindings: An Approach to Typed Inheritance. Inheritance Modeled with Explicit Bindings: An Approach to Typed Inheritance, SIGPLAN Not., pages 231–239, New York, NY, USA, 1993. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. T Genssler, B Schulz. Inheritance Modeled with Explicit Bindings: An Approach to Typed Inheritance. Transforming inheritance into composition A reengineering pattern, proc. of 4th EuroPLoP, 1999.Google ScholarGoogle Scholar
  24. IntelliJ IDE. http://www.jetbrains.com.Google ScholarGoogle Scholar
  25. Hamza, S. and Sadou, S. and Fleurquin, R. Measuring Qualities for OSGi Component-Based Applications. Quality Software (QSIC), 2013 13th International Conference on, pages 25-34, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Tempero, E. and Anslow, C. and Dietrich, J. and Han, T. and Jing Li and Lumpe, M. and Melton, H. and Noble, J. The Qualitas Corpus: A Curated Collection of Java Code for Empirical Studies. Software Engineering Conference (APSEC), 2010 17th Asia Pacifice, pages 336-345 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Migrating large object-oriented Applications into component-based ones: instantiation and inheritance transformation

              Recommendations

              Comments

              Login options

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

              Sign in

              Full Access

              PDF Format

              View or Download as a PDF file.

              PDF

              eReader

              View online with eReader.

              eReader
              About Cookies On This Site

              We use cookies to ensure that we give you the best experience on our website.

              Learn more

              Got it!