A case study in refactoring a legacy component for reuse in a product line

This paper describes activities performed to systematically improve the design and implementation of an existing software component in order to reuse it in a software product line. The activities are embedded in the application of Fraunhofer's PuLSE/spl trade/-DSSA approach for defining the architecture of a new product line. The component under investigation is the so called image memory handler (IMH) which is used in Ricoh's current products of office appliances such as copier machines, printers, and multi-functional peripherals. It is responsible for controlling memory usage and compressing and decompressing image data. Both the improvement of the component's design and implementation are based on a systematic analysis and focused on increasing maintainability and reusability and hence suitability for use in a product line.

[1]  Klaus Schmid,et al.  PuLSE: a methodology to develop software product lines , 1999, SSR '99.

[2]  Robert L. Nord,et al.  Applied Software Architecture , 1999, Addison Wesley object technology series.

[3]  John Stuart Lakos,et al.  Large-Scale C++ Software Design , 1996 .

[4]  Ralph E. Johnson,et al.  Refactoring C with conditional compilation , 2003, 18th IEEE International Conference on Automated Software Engineering, 2003. Proceedings..

[5]  Michael W. Godfrey,et al.  Aiding comprehension of cloning through categorization , 2004, Proceedings. 7th International Workshop on Principles of Software Evolution, 2004..

[6]  Rick Kazman,et al.  The architecture tradeoff analysis method , 1998, Proceedings. Fourth IEEE International Conference on Engineering of Complex Computer Systems (Cat. No.98EX193).

[7]  Joachim Bayer,et al.  View based software documentation , 2004 .

[8]  Colin Atkinson,et al.  Model-Driven Product Line Architectures , 2002, SPLC.

[9]  Paul Clements,et al.  Software product lines - practices and patterns , 2001, SEI series in software engineering.

[10]  Alejandra Garrido,et al.  Challenges of refactoring C programs , 2002, IWPSE '02.

[11]  James H. Cross,et al.  Reverse engineering and design recovery: a taxonomy , 1990, IEEE Software.

[12]  Barbara Paech,et al.  Component-based product line engineering with UML , 2001, Addison Wesley object technology series.

[13]  William F. Opdyke,et al.  Refactoring object-oriented frameworks , 1992 .

[14]  Philippe Kruchten,et al.  The 4+1 View Model of Architecture , 1995, IEEE Softw..

[15]  Arie van Deursen,et al.  An evaluation of clone detection techniques for crosscutting concerns , 2004, 20th IEEE International Conference on Software Maintenance, 2004. Proceedings..