skip to main content
10.1145/3307630.3342410acmotherconferencesArticle/Chapter ViewAbstractPublication PagessplcConference Proceedingsconference-collections
research-article

Analyzing Variability in 25 Years of Industrial Legacy Software: An Experience Report

Published:09 September 2019Publication History

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.

References

  1. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  2. F.J Damerau. 1964. A technique for computer detection and correction of spelling errors. Commun. ACM 7, 3 (1964), 171--176. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  4. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  5. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  6. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  7. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  8. Intel Corporation 1985. Pascal-86 User's Guide. Intel Corporation. Order Number 121539-003.Google ScholarGoogle Scholar
  9. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  10. M. Kelter, U. and Schmidt. 2008. Comparing State Machines. ACM, 1--6. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. U. Kelter, J. Wehren, and J. Niere. 2005. A Generic Difference Algorithm for UML Models. Software Engineering 64, 105--116 (2005), 4--9.Google ScholarGoogle Scholar
  12. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  13. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  14. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  15. V.I Levenshtein. 1966. Binary codes capable of correcting deletions, insertions, and reversals. In Soviet physics doklady, Vol. 10. 707--710.Google ScholarGoogle Scholar
  16. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  17. 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 ScholarGoogle Scholar
  18. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  19. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  20. K. Pohl, G. Böckle, and Linden, F. J. van der. 2005. Software Product Line Engineering: Foundations, Principles and Techniques. Springer. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. G.P. Radha. 1999. Pascal Programming. New Age International (P) Limited.Google ScholarGoogle Scholar
  22. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  23. J.S. Rohl and H.J. Barrett. 1990. Programming Via Pascal. Cambridge University Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  25. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  26. 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 ScholarGoogle Scholar
  27. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  28. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  29. G.B. Shelly, T.J. Cashman, and S.G. Forsythe. 1987. Turbo Pascal programming. Boyd & Fraser. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. SO/IEC 1991 1991. Pascal ISO 7185:1990. SO/IEC 1991.Google ScholarGoogle Scholar
  31. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  32. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  33. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  34. D. Wille. 2019. Custom-Tailored Product Line Extraction. Ph.D. Dissertation.Google ScholarGoogle Scholar
  35. 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 ScholarGoogle Scholar
  36. 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 ScholarGoogle ScholarCross RefCross Ref
  37. 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 ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Analyzing Variability in 25 Years of Industrial Legacy Software: An Experience Report

          Recommendations

          Comments

          Login options

          Check if you have access through your login credentials or your institution to get full access on this article.

          Sign in
          • Published in

            cover image ACM Other conferences
            SPLC '19: Proceedings of the 23rd International Systems and Software Product Line Conference - Volume B
            September 2019
            252 pages
            ISBN:9781450366687
            DOI:10.1145/3307630

            Copyright © 2019 ACM

            Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

            Publisher

            Association for Computing Machinery

            New York, NY, United States

            Publication History

            • Published: 9 September 2019

            Permissions

            Request permissions about this article.

            Request Permissions

            Check for updates

            Qualifiers

            • research-article

            Acceptance Rates

            Overall Acceptance Rate167of463submissions,36%

          PDF Format

          View or Download as a PDF file.

          PDF

          eReader

          View online with eReader.

          eReader