skip to main content
research-article

The impact of static-dynamic coupling on remodularization

Authors Info & Claims
Published:19 October 2008Publication History
Skip Abstract Section

Abstract

We explore the concept of static-dynamic coupling--the degree to which changes in a program's static modular structure imply changes to its dynamic structure. This paper investigates the impact of static-dynamic coupling in a programming language on the effort required to evolve the coarse modular structure of programs written in that language. We performed a series of remodularization case studies in both Java and SubjectJ. SubjectJ is designed to be similar to Java, but have strictly less static-dynamic coupling. Our results include quantitative measures-time taken and number of bugs introduced--as well as a more subjective qualitative analysis of the remodularization process. All results point in the same direction and suggest that static-dynamic coupling causes substantial accidental complexity for the remodularization of Java programs.

References

  1. Gilad Bracha and William Cook. Mixin-based inheritance. In OOPSLA/ECOOP '90: Proceedings of the Conference on Object-oriented programming, systems, languages, and applications/European conference on object-oriented programming, pages 303--311, New York, NY, USA, 1990. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Frederick P. Brooks, Jr. No silver bullet: Essence and accidents of software engineering. IEEE Computer, 20(4):10--19, April 1987. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Richard Cardone and Calvin Lin. Comparing frameworks and layered refinement. In ICSE '01: Proceedings of the 23rd International Conference on Software Engineering, pages 285--294, Washington, DC, USA, 2001. IEEE Computer Society. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Eduardo Casais. Automatic reorganization of object-oriented hierarchies: A case study. Object-Oriented Systems, 1(2):95--115, December 1994.Google ScholarGoogle Scholar
  5. Craig Chambers. Object-oriented multi-methods in Cecil. In O. Lehrmann Madsen, editor, Proceedings ECOOP '92, volume 615 of LNCS, pages 33--56, Utrecht, the Netherlands, June 1992. Springer-Verlag. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Rick Chern. Reducing remodularization complexity through modular-objective decoupling (in progress). Master's thesis, The University of British Columbia, 2008.Google ScholarGoogle Scholar
  7. Curtis Clifton, Gary T. Leavens, Craig Chambers, and Todd D. Millstein. MultiJava: modular open classes and symmetric multiple dispatch for java. In Proceedings of the Conference on Object-Oriented Programming, Systems, Languages and Application (OOPSLA-00), volume 35.10 of ACM Sigplan Notices, pages 130--145, N. Y., October 15-19 2000. ACM Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Linda G. Demichiel. Overview: The Common Lisp Object System. Lisp and Symbolic Computation, 1(2):227--244, September 1988.Google ScholarGoogle Scholar
  9. Edsger W. Dijkstra. Notes on Structured Programming, chapter 1, pages 1--82. Academic Press, 1972. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Ran Ettinger and Mathieu Verbaere. Untangling: a slice extraction refactoring. In Karl Lieberherr, editor, Proc. 3rd Int'l Conf. on Aspect-Oriented Software Development (AOSD- 2004), pages 93--101. ACM Press, March 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. David Flanagan and Yukihiro Matsumoto. The Ruby Programming Language. O'Reilly, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. A. Goldberg and D. Robson. Smalltalk-80: The Language and its Implementation. Addison-Wesley, 1983. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. James Gosling, Bill Joy, Guy Steele, and Gilad Bracha. The Java Language Specification, Third Edition. The Java Series. Addison-Wesley, Boston, Mass., 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. William G. Griswold and David Notkin. Automated assistance for program restructuring. ACM Transactions on Software Engineering and Methodology, 2(3):228--269, July 1993. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Jan Hannemann, Thomas Fritz, and Gail C. Murphy. Refactoring to aspects: an interactive approach. In eclipse '03: Proceedings of the 2003 OOPSLA workshop on eclipse technology eXchange, pages 74--78, New York, NY, USA, 2003. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Jan Hannemann, Gail Murphy, and Gregor Kiczales. Rolebased refactoring of crosscutting concerns. In Peri Tarr, editor, Proc. 4rd Int'l Conf. on Aspect-Oriented Software Development (AOSD-2005), pages 135--146. ACM Press, March 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. William H. Harrison and Harold Ossher. Subject-oriented programming (A critique of pure objects). In OOPSLA, pages 411--428, 1993. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. William H. Harrison, Harold Ossher, and Peri L. Tarr. General composition of software artifacts. In Welf Lowe and Mario Sudholt, editors, Software Composition, volume 4089 of Lecture Notes in Computer Science, pages 194--210. Springer, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Anders Hejlsberg, Scott Wiltamuth, and Peter Golde. C+ Language Specification. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Yuuji Ichisugi and Akira Tanaka. Difference-based modules: A class independent module mechanism. In Proceedings ECOOP 2002, volume 2374 of LNCS, Malaga, Spain, June 2002. Springer Verlag. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Doug Janzen and Kris De Volder. Navigating and querying code without getting lost. In AOSD, pages 178--187, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Kabir Khan, Bill Burke, Flavia Rainone, Staale Pedersen, Marc Fleury, Adrian Brock, Claude Hussenet, and Marshall Culpepper. JBoss AOP. http://labs.jboss.com/jbossaop/.Google ScholarGoogle Scholar
  23. Gregor Kiczales, Erik Hilsdale, Jim Hugunin, Mik Kersten, Jeffrey Palm, and William G. Griswold. An overview of AspectJ. In J. Lindskov Knudsen, editor, ECOOP 2001 -- Object-Oriented Programming 15th European Conference, volume 2072 of Lecture Notes in Computer Science, pages 327--353. Springer-Verlag, Budapest, Hungary, June 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Raghavan Komondoor and Susan Horwitz. Effective, automatic procedure extraction. In IWPC, page 33. IEEE Computer Society, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. P. Li and E. Wohlstadter. View-based maintenance for graphical user interfaces. In Proc. of the International Conference on Aspect-Oriented Software Development, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Miguel P. Monteiro and Joao M. Fernandes. Towards a catalog of aspect-oriented refactorings. In AOSD '05: Proceedings of the 4th international conference on Aspect oriented software development, pages 111--122, New York, NY, USA, 2005. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Ivan Moore. Automatic inheritance hierarchy restructuring and method refactoring. In OOPSLA, pages 235--250, 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Harold Ossher, Matthew Kaplan, William Harrison, Alexander Katz, and Vincent Kruskal. Subject-oriented composition rules. In OOPSLA '95: Proceedings of the tenth annual conference on Object-oriented programming systems, languages, and applications, pages 235--250, New York, NY, USA, 1995. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Yannis Smaragdakis and Don Batory. Implementing layered designs with mixin layers. In Eric Jul, editor, ECOOP '98 Object-Oriented Programming, volume 1445 of Lecture Notes in Computer Science, pages 550--570. Springer, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. Olaf Spinczyk, Andreas Gal, and Wolfgang Schroder- Preikschat. AspectC++: An aspect-oriented extension to the C++ programming language. In Proceedings of the Fortieth International Conference on Tools Pacific, pages 53--60. Australian Computer Society, Inc., 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. P. Tarr and H. Ossher. Hyper/J user and installation manual. Technical report, IBM T. J. Watson Research Center, 2000.Google ScholarGoogle Scholar
  32. Peri Tarr, Harold Ossher, William Harrison, and Stanley M. Sutton, Jr. N degrees of separation: Multi-dimensional separation of concerns. In Proceedings of ICSE '99, pages 107--119, Los Angeles CA, USA, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. Frank Tip. Refactoring using type constraints. In Hanne Riis Nielson and Gilberto File, editors, SAS, volume 4634 of Lecture Notes in Computer Science, pages 1--17. Springer, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. Lance Tokuda and Don S. Batory. Evolving object-oriented designs with refactorings. In Proceedings of Automated Software Engineering, page 174, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Mark Weiser. Program slicing. IEEE Transactions on Software Engineering, SE-10(4):352--357, July 1984.Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. The impact of static-dynamic coupling on remodularization

          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!