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.
- 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 Scholar
Digital Library
- Frederick P. Brooks, Jr. No silver bullet: Essence and accidents of software engineering. IEEE Computer, 20(4):10--19, April 1987. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- Eduardo Casais. Automatic reorganization of object-oriented hierarchies: A case study. Object-Oriented Systems, 1(2):95--115, December 1994.Google Scholar
- 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 Scholar
Digital Library
- Rick Chern. Reducing remodularization complexity through modular-objective decoupling (in progress). Master's thesis, The University of British Columbia, 2008.Google Scholar
- 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 Scholar
Digital Library
- Linda G. Demichiel. Overview: The Common Lisp Object System. Lisp and Symbolic Computation, 1(2):227--244, September 1988.Google Scholar
- Edsger W. Dijkstra. Notes on Structured Programming, chapter 1, pages 1--82. Academic Press, 1972. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- David Flanagan and Yukihiro Matsumoto. The Ruby Programming Language. O'Reilly, 2008. Google Scholar
Digital Library
- A. Goldberg and D. Robson. Smalltalk-80: The Language and its Implementation. Addison-Wesley, 1983. Google Scholar
Digital Library
- James Gosling, Bill Joy, Guy Steele, and Gilad Bracha. The Java Language Specification, Third Edition. The Java Series. Addison-Wesley, Boston, Mass., 2005. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- William H. Harrison and Harold Ossher. Subject-oriented programming (A critique of pure objects). In OOPSLA, pages 411--428, 1993. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- Anders Hejlsberg, Scott Wiltamuth, and Peter Golde. C+ Language Specification. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 2003. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- Doug Janzen and Kris De Volder. Navigating and querying code without getting lost. In AOSD, pages 178--187, 2003. Google Scholar
Digital Library
- 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 Scholar
- 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 Scholar
Digital Library
- Raghavan Komondoor and Susan Horwitz. Effective, automatic procedure extraction. In IWPC, page 33. IEEE Computer Society, 2003. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- Ivan Moore. Automatic inheritance hierarchy restructuring and method refactoring. In OOPSLA, pages 235--250, 1996. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- P. Tarr and H. Ossher. Hyper/J user and installation manual. Technical report, IBM T. J. Watson Research Center, 2000.Google Scholar
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- Lance Tokuda and Don S. Batory. Evolving object-oriented designs with refactorings. In Proceedings of Automated Software Engineering, page 174, 1999. Google Scholar
Digital Library
- Mark Weiser. Program slicing. IEEE Transactions on Software Engineering, SE-10(4):352--357, July 1984.Google Scholar
Digital Library
Index Terms
The impact of static-dynamic coupling on remodularization
Recommendations
The impact of static-dynamic coupling on remodularization
OOPSLA '08: Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applicationsWe 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 ...
Automated software remodularization based on move refactoring: a complex systems approach
MODULARITY '14: Proceedings of the 13th international conference on ModularityModular design is a desirable characteristic of complex software systems that can significantly improve their comprehensibility, maintainability and thus quality. While many software systems are initially created in a modular way, over time modularity ...
Using Cohesion and Coupling for Software Remodularization: Is It Enough?
Refactoring and, in particular, remodularization operations can be performed to repair the design of a software system and remove the erosion caused by software evolution. Various approaches have been proposed to support developers during the ...







Comments