Design complexity measurement and testing
Communications of the ACM
Refactoring object-oriented frameworks
Refactoring object-oriented frameworks
Software Process Evolution at the SEL
IEEE Software
Large-scale C++ software design
Large-scale C++ software design
A refactoring tool for Smalltalk
Theory and Practice of Object Systems - Special issue object-oriented software evolution and re-engineering
Performing architecture tradeoff analysis
ISAW '98 Proceedings of the third international workshop on Software architecture
PuLSE: a methodology to develop software product lines
SSR '99 Proceedings of the 1999 symposium on Software reusability
Refactoring: improving the design of existing code
Refactoring: improving the design of existing code
Software product-line engineering: a family-based software development process
Software product-line engineering: a family-based software development process
Extreme programming explained: embrace change
Extreme programming explained: embrace change
Applied software architecture
Quality measures in design: finding problems before coding
ACM SIGSOFT Software Engineering Notes
Software product lines: practices and patterns
Software product lines: practices and patterns
Component-based product line engineering with UML
Component-based product line engineering with UML
Reverse Engineering and Design Recovery: A Taxonomy
IEEE Software
The 4+1 View Model of Architecture
IEEE Software
Model-Driven Product Line Architectures
SPLC 2 Proceedings of the Second International Conference on Software Product Lines
Evaluating Clone Detection Tools for Use during Preventative Maintenance
SCAM '02 Proceedings of the Second IEEE International Workshop on Source Code Analysis and Manipulation
Clone Detection Using Abstract Syntax Trees
ICSM '98 Proceedings of the International Conference on Software Maintenance
A Language Independent Approach for Detecting Duplicated Code
ICSM '99 Proceedings of the IEEE International Conference on Software Maintenance
Practical analysis for refactoring
Practical analysis for refactoring
Evolving object-oriented designs with refactorings
Evolving object-oriented designs with refactorings
Global Analysis and Transformations in Preprocessed Languages
IEEE Transactions on Software Engineering
A Survey of Software Refactoring
IEEE Transactions on Software Engineering
Refactoring to Patterns
An Evaluation of Clone Detection Techniques for Identifying Crosscutting Concerns
ICSM '04 Proceedings of the 20th IEEE International Conference on Software Maintenance
Aiding Comprehension of Cloning Through Categorization
IWPSE '04 Proceedings of the Principles of Software Evolution, 7th International Workshop
A Case Study in Refactoring a Legacy Component for Reuse in a Product Line
ICSM '05 Proceedings of the 21st IEEE International Conference on Software Maintenance
Calculating ROI for Software Product Lines
IEEE Software
A Collaborative Method for Reuse Potential Assessment in Reengineering-Based Product Line Adoption
Balancing Agility and Formalism in Software Engineering
An evaluation of code similarity identification for the grow-and-prune model
Journal of Software Maintenance and Evolution: Research and Practice - Special Issue on the 12th Conference on Software Maintenance and Reengineering (CSMR 2008)
Extending the reflexion method for consolidating software variants into product lines
Software Quality Control
Combining related products into product lines
FASE'12 Proceedings of the 15th international conference on Fundamental Approaches to Software Engineering
Managing forked product variants
Proceedings of the 16th International Software Product Line Conference - Volume 1
Identifying improvement potential in evolving product line infrastructures: 3 case studies
Proceedings of the 16th International Software Product Line Conference - Volume 1
A field study of refactoring challenges and benefits
Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering
Quality of merge-refactorings for product lines
FASE'13 Proceedings of the 16th international conference on Fundamental Approaches to Software Engineering
Managing cloned variants: a framework and experience
Proceedings of the 17th International Software Product Line Conference
Variability evolution and erosion in industrial product lines: a case study
Proceedings of the 17th International Software Product Line Conference
Hi-index | 0.00 |
Product lines are a promising approach to improve conceptually the productivity of the software development process and thus to reduce both the cost and time of developing and maintaining increasingly complex systems. An important issue in the adoption of the product-line approach is the migration of legacy software components, which have not been designed for reuse, systematically into reusable product-line components. This article describes activities performed to improve systematically 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 PuLSE™-DSSA—an approach for defining domain-specific software architectures (DSSA) and product-line architectures. 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. Improvement of both 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. As a result of the analysis and refactoring activities, the documentation and implementation of the component has been considerably improved as shown by quantitative data collected at the end of the activities. Despite a number of changes to the code, the external behavior of the component has been preserved without significantly affecting the performance. Copyright © 2006 John Wiley & Sons, Ltd.