ABSTRACT
This paper focuses on restructuring software written in Erlang. In large software projects, it is a common problem that internal structural complexity can grow to an extent where maintenance becomes impossible. This situation can be avoided by careful design, building loosely coupled components with strictly defined interfaces. However, when these design decisions are not made in the right time, it becomes necessary to split an already working software into such components, without breaking its functionality. There is strong industrial demand for such transformations in refactoring legacy code.
A refactoring tool is very useful in the execution of such a restructuring. This paper shows that the semantical analysis required for refactoring is also useful for making suggestions on clustering. Existing analysis results are used to cover the whole process of module restructuring, starting with planning the new structure, and finishing by making the necessary source code transformations.
Supplemental Material
Available for Download
Slides from the presentation
- Anquetil N., Fourrier, C., Lethbridge T. C.: Experiments with Hierarchical Clustering Algorithms as Software Remodularization Methods Working. Conference on Reverse Engineering (1999). Google ScholarDigital Library
- Armstrong, J.: Making reliable distributed systems in the presence of software errors. PhD thesis, The Royal Institute of Technology, Stockholm, Sweden (2003)Google Scholar
- Armstrong, J.: Programming Erlang, Software for a Concurrent World. Pragmatic Bookshelf (2007) Google ScholarDigital Library
- Fowler, M., Beck, K., Brant, J., Opdyke, W., Roberts, D.: Refactoring: Improving the Design of Existing Code. Addison-Wesley (1999) Google ScholarDigital Library
- Harman, M., Swift, S., Mahdavi, K.: An empirical study of the robustness of two module clustering fitness functions. GECCO '05: Proceedings of the 2005 conference on Genetic and evolutionary computation (2005), 1029--1036 Google ScholarDigital Library
- Horváth, Z. et al.: Refactoring Erlang Programs. http://plc.inf.elte.hu/erlang/Google Scholar
- Kitlei, R., Lövei, L., Nagy, T., Nagyné, V. A., Horváth, Z., Csörnyei, Z.: Generic syntactic analyser: ParsErl. International Erlang/OTP User Conference (2007).Google Scholar
- Lövei, L., Horváth, Z., Kozsik, T., Víg, A., Nagy, T.: Refactoring Erlang programs. To appear in: Periodica Polytechnica - Electrical Engineering (2007) 19 pages.Google Scholar
- Li, H., Thompson, S., Lövei, L., Horváth, Z., Kozsik, T., Víg, A., Nagy, T.: Refactoring Erlang programs. In: The Proceedings of 12th International Erlang/OTP User Conference, Stockholm, Sweden (2006) http://www.erlang.se/euc/06/, 10 pages.Google Scholar
- Lövei, L., Horváth, Z., Király R., Kitlei R.: Static rules for variable scoping in Erlang. To appear in: The 7th International Conference on Applied Informatics, Eger, Hungary, 2007.Google Scholar
- Nagy, T., Víg, A.: Erlang refactor tool. Master thesis, Eötvös Loránd University, Budapest, Hungary, 2007.Google Scholar
Index Terms
- Refactoring module structure
Recommendations
Refactoring with wrangler, updated: data and process refactorings, and integration with eclipse
ERLANG '08: Proceedings of the 7th ACM SIGPLAN workshop on ERLANGWrangler is a refactoring tool for Erlang, implemented in Erlang. This paper reports the latest developments in Wrangler, which include improved user experience, the introduction of a number of data- and process-related refactorings, and also the ...
Aspect-Oriented Refactoring of Legacy Applications: An Evaluation
The primary claimed benefits of aspect-oriented programming (AOP) are that it improves the understandability and maintainability of software applications by modularizing crosscutting concerns. Before there is widespread adoption of AOP, developers need ...
Refactoring of Crosscutting Concerns with Metaphor-Based Heuristics
It has been advocated that Aspect-Oriented Programming (AOP) is an effective technique to improve software maintainability through explicit support for modularising crosscutting concerns. However, in order to take the advantages of AOP, there is a need ...
Comments