A Feature-Oriented Method for Extracting a Product Line Asset from a Family of Legacy Applications
0
조회
0
다운로드
0
인용
0
참고문헌
키워드
초록
Clone-and-own reuse is an approach to creating new software variants by copying and modifying existing software products. A family of legacy software products developed by clone-and-own reuse often requires high maintenance cost and tends to be error-prone due to patch-ups without refactoring and structural degradation. To overcome these problems, many organizations that have used clone-and-own reuse now want to migrate their legacy products to software product line (SPL) for more systematic reuse and management of software asset. However, with most of existing methods, variation points are embedded directly into design and code rather than modeled and managed separately; variation points are not created (“engineered”) systematically based on a variability model. This approach causes the following problems: it is difficult to understand the relationships between variation points, thus it is hard to maintain such code and the asset tends to become error-prone as it evolves. Also, when SPL evolves, design/code assets tend to be modified directly in an ad-hoc manner rather than engineered systematically with appropriate refactoring. To address these problems, we propose a feature-oriented method for extracting a SPL asset from a family of legacy applications. With the approach, we identify and model variation points and their relationships in a feature model separate from implementation, and then extract and manage a SPL asset from legacy applications based on the feature model. We have applied the method to a family of legacy Notepad++ products and demonstrated the feasibility of the method.
Abstract
Clone-and-own reuse is an approach to creating new software variants by copying and modifying existing software products. A family of legacy software products developed by clone-and-own reuse often requires high maintenance cost and tends to be error-prone due to patch-ups without refactoring and structural degradation. To overcome these problems, many organizations that have used clone-and-own reuse now want to migrate their legacy products to software product line (SPL) for more systematic reuse and management of software asset. However, with most of existing methods, variation points are embedded directly into design and code rather than modeled and managed separately; variation points are not created (“engineered”) systematically based on a variability model. This approach causes the following problems: it is difficult to understand the relationships between variation points, thus it is hard to maintain such code and the asset tends to become error-prone as it evolves. Also, when SPL evolves, design/code assets tend to be modified directly in an ad-hoc manner rather than engineered systematically with appropriate refactoring. To address these problems, we propose a feature-oriented method for extracting a SPL asset from a family of legacy applications. With the approach, we identify and model variation points and their relationships in a feature model separate from implementation, and then extract and manage a SPL asset from legacy applications based on the feature model. We have applied the method to a family of legacy Notepad++ products and demonstrated the feasibility of the method.
참고문헌 (46)
- J. Bosch, "Design & Use of Software Architectures" (2000), Addison-Wesley
- A. Maccari, "Experiences in assessing product family software architecture for evolution", Proceedings of the 24th International Conference on Software Engineering (ICSE), pp.585~592 (2002), ACM
- H. P. Jepsen, "Minimally invasive migration to software product lines", Proceedings of the 11th International Software Product Line Conference (SPLC), pp.203~211 (2007)
- K. Yoshimura, "Defining a strategy to introduce a software product line using existing embedded systems", Proceedings of the 6th ACM & IEEE International Conference on Embedded Software (2006)
- K. Yoshimura, "Model-based design of product line components in the automotive domain", Proceedings of the 12th SPLC (2008)
- J. Bayer, "Transiting legacy assets to a product line architecture", Proceedings of the 7th European Software Engineering Conference, Held Jointly with the 7th ACM SIGSOFT Symposium on the Foundations of Software Engineering (1999)
- R. Kolb, "Refactoring a legacy component for reuse in software product lines : a case study", J. Softw. Maint. Evol. : Res. Pract, 18(2), pp.109~132 (2006)
- V. Alves, "Extracting and evolving mobile games product lines", Proceedings of the 9th SPLC (2005)
- V. Alves, "Extracting and evolving code in product lines with aspect-oriented programming", Transactions on AOSD IV, LNCS, 4640, pp.117~142 (2007)
- V. Alves, "From conditional compilation to aspects: a case study in software product lines migration", Proceedings of the 1st Workshop on Aspect-oriented Product Line Engineering (2006)
- D. Faust, "Software product line migration and deployment", Softw. Pract. Exper, 33(10), pp.933~955 (2003)
- A. Mehta, "Evolving legacy system features into fine-grained components", Proceedings of the 24th ICSE (2002)
- P. Frenzel, "Extending the reflexion method for consolidating software variants into product lines", Proceedings of the 14th Working Conference on Reverse Engineering (WCRE) (2007)
- H. P. Breivold, "Migrating industrial systems towards software product lines : experiences and observations through case studies", Proceedings of the 34th Euromicro Conference on Software Engineering and Advanced Applications (2008)
- M. V. Couto, "Extracting software product lines : a case study using conditional compilation", Proceedings of the 15th European Conference on Software Maintenance and Reengineering, pp.1~4 (2011)
- "Notepad++"[URL]
- "Notepad++ Forum"[URL]
- Feature-oriented domain analysis (FODA)feasibility stud, "K. C. Kang", ~, pp.CMU (1990), SEI-90-TR-21
- J. Lee, "A holistic approach to feature modeling for product line requirements engineering", Requirements Engineering Journal (REJ) (2013)
- R. N. Charette, "This car runs on code", IEEE Spectrum (2009)
- "Eclipse C/C++ Development Tooling (CDT)"[URL]
- J.-L. Chen, "An object-oriented dependency graph for program slicing", Proceedings of the Technology of Object-Oriented Languages, pp.121~130 (1997), IEEE
- S. She, "Reverse engineering feature models", Proceedings of the 33rd ICSE (2011)
- International Organization for Standardization, "ISO", IEC 9899-1999: Programming Languages—C, 1999
- E. Figueiredo, "Evolving software product lines with aspects: An empirical study on design stability", Proceedings of the 30th ICSE, pp.261~270 (2008), ACM Press
- D. Beuche, "Modeling and building software product lines with pure: variants", Proceedings of the 16th SPLC, 2, pp.255~255 (2012), ACM
- BigLevel Software, Inc., "BigLever Software Gears: User’s Guide, version 5.5.2 edition", ~ (2008)
- K. C. Kang, "Re-engineering a credit card authorization system for maintainability and reusability of components -a case study", Proceedings of the 9th ICSR (2006)
- K. C. Kang, "Feature-oriented re-engineering of legacy systems into product line assets - a case study", Proceedings of the 9th SPLC (2005)
- "Understand - source code analysis and metrics"[URL]
- J. Kerievsky, "Refactoring to patterns" (2004), Addison-Wesley
- M. Antkiewicz, "Fast extraction of high-quality framework-specific models from application code", Autom. Softw. Eng, 16, pp.101~144 (2009)
- M. Antkiewicz, "Framework-specific modeling languages", PhD, Electrical and Computer Engineering, pp.2008
- Y. Yang, "Domain feature model recovery from multiple applications using data access semantics and formal concept analysis", Proceedings of the 16th WCRE, pp.13~16 (2009)
- R. Rauf, "Logical structure extraction from software requirements documents", Proceedings of the 19th International Requirements Engineering Conference, pp.101~110 (2011), IEEE
- K. C. Kang, "Feature oriented product line engineering", IEEE Software, 19(4), pp.58~65 (2002)
- J. Liu, "Feature oriented refactoring of legacy applications", Proceedings of the 28th ICSE (2006)
- S. Trujillo, "Feature refactoring a multi-representation program into a product line", Proceedings of the 5th International Conference on Generative Programming and Component Engineering (2006)
- T. K. Satyananda, "Identifying traceability between feature model and software architecture in software product line using formal concept analysis", Proceedings of the International Conference on Computational Science and Its Applications (2007)
- M. Acher, "On extracting feature models from product descriptions", Proceedings of the 6th International Workshop on Variability Modeling of Software-Intensive Systems, pp.45~54 (2012)
- D. M. Le, "Validating consistency between a feature model and its implementation", Proceedings of the International Conference on Software Reuse, pp.1~16 (2013)
- S. Nadi, "Mining configuration constraints : Static analyses and empirical results", Proceedings of the 36th ICSE, pp.140~151 (2014)
- A. R. Santos, "Strategies for consistency checking on software product lines: a mapping study", Proceedings of the 19th International Conference on Evaluation and Assessment in Software Engineering, pp.5~ (2015)
- A. Loh, "LSdiff: a program differencing tool to identify systematic structural differences", Proceedings of the 32nd ICSE (2010)
- M. Kim, "Ref-Finder: a refactoring reconstruction tool based on logic query templates", Proceedings of the 18th ACM SIGSOFT Symposium on the Foundations of Software Engineering (2010)
- Lattix, Inc, "The Lattix™ Approach -DSM for Software Architecture", ~ (2004)
