Abstract
In feature-oriented programming, a feature is an increment in program functionality and is implemented by a feature module. Programs are generated by composing feature modules. A generated program may be used by other client programs but occasionally must be transformed to match a particular legacy interface before it can be used. We call the mismatch of the interface of a generated program and a client-desired interface an incompatibility. We introduce the notion of refactoring feature modules (RFMs) that extend feature modules with refactorings. We explain how RFMs reduce incompatibilities and facilitate reuse, and report our experiences on five case studies.
Martin Kuhlemann was supported and partially funded by the DAAD Doktorandenstipendium (No. D/07/45661). Batory’s work was supported by NSF’s Science of Design Project #CCF-0724979. Sven Apel’s work was supported in part by the German Research Foundation (DFG), project number AP 206/2-1.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Batory, D., Sarvela, J.N., Rauschmayer, A.: Scaling step-wise refinement. TSE 30(6), 355–371 (2004)
Batory, D., Singhal, V., Sirkin, M., Thomas, J.: Scalable software libraries. In: Anderson, R. (ed.) FSE 1993. LNCS, vol. 809, pp. 191–199. Springer, Heidelberg (1994)
Biggerstaff, T.J.: A new architecture for transformation-based generators. TSE 30(12), 1036–1054 (2004)
Bosch, J.: Design patterns as language constructs. JOOP 11(2), 18–32 (1998)
Dig, D., Negara, S., Mohindra, V., Johnson, R.: ReBA: Refactoring-aware binary adaptation of evolving libraries. In: ICSE, pp. 441–450 (2008)
Fowler, M.: Refactoring: Improving the design of existing code. Addison-Wesley Longman Publishing Co., Inc, Amsterdam (1999)
Fuhrer, R.M., Keller, M., Kieżun, A.: Advanced refactoring in the Eclipse JDT: Past, present, and future. In: WRT (2007)
Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design patterns: Elements of reusable object-oriented software. Addison-Wesley, Reading (1995)
Hölzle, U.: Integrating independently-developed components in object-oriented languages. In: Nierstrasz, O. (ed.) ECOOP 1993. LNCS, vol. 707, pp. 36–56. Springer, Heidelberg (1993)
Krueger, C.W.: New methods in software product line practice. CACM 49(12), 37–40 (2006)
Kuhlemann, M., Batory, D., Apel, S.: Refactoring feature modules. Technical Report 15, Faculty of Computer Science, University of Magdeburg (2008)
Kuhlemann, M., Batory, D., Kästner, C.: Safe composition of non-monotonic features. In: GPCE (2009)
Lämmel, R.: Towards generic refactoring. In: Workshop on Rule-Based Programming, pp. 15–28 (2002)
Lau, K.-K., Ling, L., Ukis, V., Velasco Elizondo, P.: Composite connectors for composing software components. In: Lumpe, M., Vanderperren, W. (eds.) SC 2007. LNCS, vol. 4829, pp. 266–280. Springer, Heidelberg (2007)
Lewis, J.R., Shields, M.B., Meijert, E., Launchbury, J.: Implicit parameters: Dynamic scoping with static types. In: POPL, pp. 108–118 (2000)
Liu, J., Batory, D., Lengauer, C.: Feature-oriented refactoring of legacy applications. In: ICSE, pp. 112–121 (2006)
Lopez-Herrejon, R.E., Batory, D.: A standard problem for evaluating product-line methodologies. In: GCSE, pp. 10–24 (2001)
Mattsson, M., Bosch, J.: Framework composition: Problems, causes and solutions. In: Marie, R., Plateau, B., Calzarossa, M.C., Rubino, G.J. (eds.) TOOLS 1997. LNCS, vol. 1245, pp. 203–214. Springer, Heidelberg (1997)
Mens, T., Eetvelde, N.V., Demeyer, S., Janssens, D.: Formalizing refactorings with graph transformations: Research articles. Journal of Software Maintenance and Evolution: Research and Practice 17(4), 247–276 (2005)
Mezini, M., Seiter, L., Lieberherr, K.: Component integration with pluggable composite adapters. Kluwer Academic Publishers, Dordrecht (2000)
Monteiro, M.P., Fernandes, J.M.: Towards a catalog of aspect-oriented refactorings. In: AOSD, pp. 111–122 (2005)
Opdyke, W.F.: Refactoring object-oriented frameworks. PhD thesis, University of Illinois at Urbana-Champaign (1992)
Sekaraiah, K.C., Ram, D.J.: Object schizophrenia problem in modeling Is-Role-Of inheritance. In: Inheritance Workshop (2002)
Smith, D.R.: KIDS: A knowledge-based software development system. In: Automating Software Design, pp. 483–514 (1991)
Tatsubori, M., Chiba, S., Killijian, M.-O., Itano, K.: OpenJava: A class-based macro system for Java. In: Cazzola, W., Stroud, R.J., Tisato, F. (eds.) Reflection and Software Engineering. LNCS, vol. 1826, pp. 117–133. Springer, Heidelberg (2000)
Verbaere, M., Ettinger, R., de Moor, O.: JunGL: A scripting language for refactoring. In: ICSE, pp. 172–181 (2006)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2009 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Kuhlemann, M., Batory, D., Apel, S. (2009). Refactoring Feature Modules. In: Edwards, S.H., Kulczycki, G. (eds) Formal Foundations of Reuse and Domain Engineering. ICSR 2009. Lecture Notes in Computer Science, vol 5791. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-04211-9_11
Download citation
DOI: https://doi.org/10.1007/978-3-642-04211-9_11
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-04210-2
Online ISBN: 978-3-642-04211-9
eBook Packages: Computer ScienceComputer Science (R0)