ABSTRACT
In certain domains, safety-critical software systems may remain operational for decades. To comply with changing requirements, new system variants are commonly created by copying and modifying existing ones. Typically denoted clone-and-own, software quality and overall maintainability are adversely affected in the long-run. With safety being pivotal, a fault in one variant may require the entire portfolio to be assessed. Thus, engineers need to maintain legacy systems dating back decades, implemented in programming languages such as Pascal. Software product lines (SPLs) can be a remedy but migrating legacy systems requires their prior analysis and comparison. For industrial software systems, this remains a challenge.
In this paper, we introduce a comparison procedure and customizable metrics to allow for a fine-grained comparison of Pascal modules to the level of individual expressions. By that, we identify common parts of while also capturing different parts between modules as a basis for a transition towards anSPLs practice. Moreover, we demonstrate the feasibility of our approach using a case study with seven Pascal modules totaling 13,271 lines of code with an evolution-history of 25 years and show our procedure to be fast and precise. Furthermore, we elaborate on the case study and detail peculiarities of the Pascal modules, which are characteristic for an evolution-history of a quarter century.
- W. J. Cullyer and B. A. Wickmann. 1991. The choice of computer languages for use in safety-critical systems. Software Engineering Journal 6, 2 (March 1991), 51--58. Google ScholarDigital Library
- F.J Damerau. 1964. A technique for computer detection and correction of spelling errors. Commun. ACM 7, 3 (1964), 171--176. Google ScholarDigital Library
- F. Deissenboeck, B. Hummel, E. Juergens, M. Pfaehler, and B. Schaetz. 2010. Model Clone Detection in Practice. In Proc. of the Intl. Workshop on Software Clones (IWSC). ACM, 57--64. Google ScholarDigital Library
- Y. Dubinsky, J. Rubin, T. Berger, S. Duszynski, M. Becker, and K. Czarnecki. 2013. An Exploratory Study of Cloning in Industrial Software Product Lines. In Proc. of the European Conference on Software Maintenance and Reengineering (CSMR). IEEE, 25--34. Google ScholarDigital Library
- Z. Durdik, B. Klatt, H. Koziolek, K. Krogmann, J. Stammel, and R. Weiss. 2012. Sustainability guidelines for long-living software systems. In 2012 28th IEEE International Conference on Software Maintenance (ICSM). 517--526. Google ScholarDigital Library
- S. Duszynski, J. Knodel, and M. Becker. 2011. Analyzing the Source Code of Multiple Software Variants for Reuse Potential. In 2011 18th Working Conference on Reverse Engineering. 303--307. Google ScholarDigital Library
- B. Hummel, E. Juergens, and D. Steidl. 2011. Index-based Model Clone Detection. In Proceedings of the 5th International Workshop on Software Clones (IWSC '11). 21--27. Google ScholarDigital Library
- Intel Corporation 1985. Pascal-86 User's Guide. Intel Corporation. Order Number 121539-003.Google Scholar
- T. Kamiya, S. Kusumoto, and K. Inoue. 2002. CCFinder: a multilinguistic tokenbased code clone detection system for large scale source code. IEEE Transactions on Software Engineering 28, 7 (2002), 654--670. Google ScholarDigital Library
- M. Kelter, U. and Schmidt. 2008. Comparing State Machines. ACM, 1--6. Google ScholarDigital Library
- U. Kelter, J. Wehren, and J. Niere. 2005. A Generic Difference Algorithm for UML Models. Software Engineering 64, 105--116 (2005), 4--9.Google Scholar
- J. A. Kim. 2010. Case Study of Software Product Line Engineering in Insurance Product. In Proc. of the Intl. Software Product Line Conference (SPLC). Springer, 495--495. Google ScholarDigital Library
- C. Krueger. 2002. Easing the Transition to Software Mass Customization. In Software Product-Family Engineering, F van der Linden (Ed.). Springer Berlin Heidelberg, Berlin, Heidelberg, 282--293. Google ScholarDigital Library
- R. Lapeña, M. Ballarin, and C. Cetina. 2016. Towards Clone-and-own Support: Locating Relevant Methods in Legacy Products. In Proc. of the Intl. Software Product Line Conference (SPLC). ACM, 194--203. Google ScholarDigital Library
- V.I Levenshtein. 1966. Binary codes capable of correcting deletions, insertions, and reversals. In Soviet physics doklady, Vol. 10. 707--710.Google Scholar
- F. J. van der Linden, K. Schmid, and E. Rommes. 2007. Software Product Lines in Action: The Best Industrial Practice in Product Line Engineering. Springer. Google ScholarDigital Library
- J. Martinez, T. Ziadi, T. F Bissyande, J. Klein, and Y. Le Traon. 2015. Automating the extraction of model-based software product lines from model variants (T). In 2015 30th IEEE/ACM International Conference on Automated Software Engineering (ASE). 396--406.Google Scholar
- M. Schulze, J. Mauersberger, and D. Beuche. 2013. Functional Safety and Variability: Can it be brought together?. In Proc. of the Intl. Software Product Line Conference (SPLC). ACM. Google ScholarDigital Library
- Nam H. Pham, Hoan Anh Nguyen, Tung Thanh Nguyen, Jafar M. Al-Kofahi, and Tien N. Nguyen. 2009. Complete and Accurate Clone Detection in Graph-based Models. In Proc. of the Intl. Conference on Software Engineering (ICSE). IEEE. Google ScholarDigital Library
- K. Pohl, G. Böckle, and Linden, F. J. van der. 2005. Software Product Line Engineering: Foundations, Principles and Techniques. Springer. Google ScholarDigital Library
- G.P. Radha. 1999. Pascal Programming. New Age International (P) Limited.Google Scholar
- C. Riva and C. Del Rosso. 2003. Experiences with Software Product Family Evolution. In Proc. of the Joint Workshop on Software Evolution and Intl. Workshop on Principles of Software Evolution (IWPSE-EVOL). IEEE, 161--169. Google ScholarDigital Library
- J.S. Rohl and H.J. Barrett. 1990. Programming Via Pascal. Cambridge University Press. Google ScholarDigital Library
- J. Rubin and M. Chechik. 2012. Combining Related Products into Product Lines. In Proc. of the Intl. Conference on Fundamental Approaches to Software Engineering (FASE). Springer, 285--300. Google ScholarDigital Library
- J. Rubin and M. Chechik. 2013. Quality of Merge-Refactorings for Product Lines. In Proc. of the Intl. Conference on Fundamental Approaches to Software Engineering (FASE). Springer, 83--98. Google ScholarDigital Library
- A. Schlie, D. Wille, L. Cleophas, and I. Schaefer. 2017. Clustering Variation Points in MATLAB/Simulink Models Using Reverse Signal Propagation Analysis. In Proc. of the Intl. Conference on Software Reuse (ICSR). Springer, 77--94.Google Scholar
- A. Schlie, D. Wille, S. Schulze, L. Cleophas, and I. Schaefer. 2017. Detecting Variability in MATLAB/Simulink Models: An Industry-Inspired Technique and Its Evaluation. In Proc. of the Intl. Software Product Line Conference (SPLC). ACM, 215--224. Google ScholarDigital Library
- S. She, R. Lotufo, A. Berger, T. and Wąsowski, and K. Czarnecki. 2011. Reverse engineering feature models. In Proceedings of the 33rd International Conference on Software Engineering. ACM, 461--470. Google ScholarDigital Library
- G.B. Shelly, T.J. Cashman, and S.G. Forsythe. 1987. Turbo Pascal programming. Boyd & Fraser. Google ScholarDigital Library
- SO/IEC 1991 1991. Pascal ISO 7185:1990. SO/IEC 1991.Google Scholar
- K. J. Sullivan, W.G. Griswold, Y. Cai, and B. Hallen. 2001. The Structure and Value of Modularity in Software Design. In Proc. of the European Software Engineering Conference/Foundations of Software Engineering (ESEC/FSE). ACM, 99--108. Google ScholarDigital Library
- M. T. Valente, V. Borges, and L. Passos. 2012. A Semi-Automatic Approach for Extracting Software Product Lines. IEEE Transactions on Software Engineering 38, 4 (July 2012), 737--754. Google ScholarDigital Library
- D. Wille. 2014. Managing Lots of Models: The FaMine Approach. In Proceedings of the 22Nd ACM SIGSOFT International Symposium on Foundations of Software Engineering (FSE 2014). ACM, New York, NY, USA, 817--819. Google ScholarDigital Library
- D. Wille. 2019. Custom-Tailored Product Line Extraction. Ph.D. Dissertation.Google Scholar
- D Wille, D Tiede, S Schulze, C Seidl, and I Schaefer. 2016. Identifying Variability in Object-Oriented Code Using Model-Based Code Mining. In Leveraging Applications of Formal Methods, Verification and Validation: Discussion, Dissemination, Applications, Tiziana Margaria and Bernhard Steffen (Eds.).Google Scholar
- D. Yu, J. Yang, X. Chen, and J. Chen. 2019. Detecting Java Code Clones Based on Bytecode Sequence Alignment. IEEE Access 7 (2019), 22421--22433.Google ScholarCross Ref
- X. Zhang, Ø. Haugen, and B. Moller-Pedersen. 2011. Model comparison to synthesize a model-driven software product line. In 2011 15th International Software Product Line Conference. IEEE, 90--99. Google ScholarDigital Library
Index Terms
Analyzing Variability in 25 Years of Industrial Legacy Software: An Experience Report
Recommendations
Reengineering legacy software products into software product line based on automatic variability analysis
ICSE '11: Proceedings of the 33rd International Conference on Software EngineeringIn order to deliver the various and short time-to-market software products to customers, the paradigm of Software Product Line (SPL) represents a new endeavor to the software development. To migrate a family of legacy software products into SPL for ...
A scalable goal-oriented approach to software variability recovery
SPLC '11: Proceedings of the 15th International Software Product Line Conference, Volume 2Software reuse approaches, such as software product lines, can help to achieve considerable effort and cost savings in product development for sets of software systems with a significant overlap in functionality. However, in the practice many ...
Recovering variability information from source code of clone-and-own software systems
VaMoS '20: Proceedings of the 14th International Working Conference on Variability Modelling of Software-Intensive SystemsClone-and-own prevails as an ad-hoc reuse strategy that addresses changing requirements by copying and modifying existing system variants. Proper documentation is typically not cherished and knowledge about common and varying parts between individual ...
Comments