ABSTRACT
This paper focuses on introducing a new transformation to our existing model for refactoring Erlang programs. The goal of the transformation is to introduce a new abstraction level in data representation by substituting a group ofrelated data with a record. Using records enhances the legibility of the source code, makes further development easier, and makes programming less error-prone by providing better possibilities for both compilation time and runtime checks. There is a strong industrial demand for such a transformation in refactoring legacy code.
Erlang is a dynamically typed language, and many of its semantical rules are also dynamic. Therefore the main challenge in this research is to ensure the safety of statically performed refactoring steps.
- Fowler, M., Beck, K., Brant, J., Opdyke,W., Roberts, D.: Refactoring: Improving the Design of Existing Code. Addison-Wesley (1999) Google ScholarDigital Library
- Beck, K.: Extreme Programming Explained. Addison-Wesley (1999) Google ScholarDigital Library
- Martin Fowler's refactoring site. (http://www.refactoring.com/)Google Scholar
- Li, H., Thompson, S., Reinke, C.: The Haskell Refactorer, HaRe, and its API. Electronic Notes in Theoretical Computer Science 141(4) (2005) 29--34 Google ScholarDigital Library
- Szabó-Nacsa, R., Diviánszky, P., Horváth, Z.: Prototype environment for refactoring Clean programs. In: The Fourth Conference of PhD Students in Computer Science (CSCS 2004), Vol. of extended abstracts, Szeged, Hungary (2004) p. 113. (full paper is available at: http://aszt.inf.elte.hu/~fun ver/, 10 pages).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
- Armstrong, J., Virding, R., Williams, M., Wikstrom, C.: Concurrent Programming in Erlang. Prentice Hall (1996) 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
- Barklund, J., Virding, R.: Erlang Reference Manual. (1999) Available from http://www.erlang.org/download/erl spec47.ps.gz.Google Scholar
- Lövei, L., Horváth, Z., Kozsik, T., Víg, A., Nagy, T.: Static rules for variable scoping in Erlang. To appear in: The 7th International Conference on Applied Informatics, Eger, Hungary, 2007.Google Scholar
- Kozsik, T.: Tutorial on subtype marks. In: Proceedings of the Central-European Functional Programming School (CEFP'05). Volume 4164 of LNCS., Springer-Verlag (2006) 191--222Google ScholarCross Ref
- Lindahl, T., Sagonas, K.: TypEr: a type annotator of Erlang code. In: ERLANG'05: Proceedings of the 2005 ACM SIGPLAN workshop on Erlang, Tallinn, Estonia, ACM Press, New York (2005) 17--25 Google ScholarDigital Library
- Nagy, T., Víg, A.: Erlang refactor tool. Master thesis, Eötvös Loránd University, Budapest, Hungary, 2007.Google Scholar
- Horváth, Z. et al.: Refactoring Erlang Programs. http://plc.inf.elte.hu/erlang/Google Scholar
- Mens, T., Tourwe, T.: A survey of software refactoring. IEEE Transactions on Software Engineering 30(2) (2004) 126--139 Google ScholarDigital Library
- Roberts, D., Brant, J., Johnson, R.: A refactoring tool for Smalltalk. Theory and Practice of Object Systems (TAPOS) 3(4) (1997) 253--263 Google ScholarDigital Library
- Diviánszky, P., Szabó-Nacsa, R., Horváth, Z.: Refactoring via database representation. In Cs&3246;ke et al., L., ed.: The Sixth International Conference on Applied Informatics (ICAI 2004), Eger, Hungary (2004) 129--135Google Scholar
Index Terms
- Introducing records by refactoring
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 ...
Automatic refactoring of Erlang programs
PPDP '09: Proceedings of the 11th ACM SIGPLAN conference on Principles and practice of declarative programmingThis paper describes the design goals and current status of tidier, a software tool that tidies Erlang source code, making it cleaner, simpler, and often also more efficient. In contrast to other refactoring tools, tidier is completely automatic and is ...
Tool support for refactoring functional programs
WRT '08: Proceedings of the 2nd Workshop on Refactoring ToolsWe present the Haskell Refactorer, HaRe, and the Erlang Refactorer, Wrangler, as examples of fully-functional refactoring tools for functional programming languages. HaRe and Wrangler are designed to handle multi-module projects in complete languages: ...
Comments