Abstract
Software written in legacy programming languages is notoriously ubiquitous and often comprises business-critical portions of codebases and portfolios. Some of these languages, like COBOL, mature, grow, and acquire modern tooling that makes maintenance activities more bearable. Others, like many fourth generation languages (4GLs), stagnate and become obsolete and unmaintained, which first urges and eventually forces migrating to other languages, if the software needs to be kept in production. In this paper, we dissect a software modernisation process endorsed by Raincode Labs, utilised in particular to migrate software from a 4GL called PACBASE, to pure COBOL. Having migrated upwards of 500 MLOC of production code to COBOL using this process, the company has ample experience with this process. Nevertheless, we identify some improvement points and explain the technical side of a possible solution, based on migration log differencing, that is currently being put to the test by Raincode migration engineers.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Similar content being viewed by others
References
Acher, M., Heymans, P., Collet, P., Quinton, C., Lahire, P., Merle, P.: Feature model differences. In: Ralyté, J., Franch, X., Brinkkemper, S., Wrycza, S. (eds.) CAiSE 2012. LNCS, vol. 7328, pp. 629–645. Springer, Heidelberg (2012). https://doi.org/10.1007/978-3-642-31095-9_41
Alper, A.: Users say Pacbase worth effort. Computerworld 21 (1987)
Apiwattanapong, T., Orso, A., Harrold, M.J.: A differencing algorithm for object-oriented programs. In ASE, pp. 2–13. IEEE (2004)
Bernardy, J.-P.: Reviving Pacbase COBOL-generated code. In: Proceedings of the 26th Annual International Computer Software and Applications. IEEE (2002)
Blasband, D.: The Rise and Fall of Software Recipes. Reality Bites (2016)
CODASYL. Initial Specifications for a Common Business Oriented Language (COBOL) for Programming Electronic Digital Computers. Technical report, Department of Defense, April 1960
Decker, M., Collard, M., Volkert, L., Maletic, J.: srcDiff: a syntactic differencing approach to improve the understandability of deltas. J. Softw. Evol. Process 32, 10 (2019)
Falleri, J.-R., Morandat, F., Blanc, X., Martinez, M., Monperrus, M.: Fine-grained and accurate source code differencing. In: ASE. ACM (2014)
Feathers, M.: Working Effectively with Legacy Code. Prentice-Hall, Upper Saddle River (2004)
Goldstein, M., Raz, D., Segall, I.: Experience report: log-based behavioral differencing. In: ISSRE, pp. 282–293 (2017). https://doi.org/10.1109/ISSRE.2017.14
Hewlett-Packard. Survival guide to PACBASE\(^ {tm}\) end-of-life, October 2012. https://www8.hp.com/uk/en/pdf/Survival_guide_tcm_183_1316432.pdf
Hunt, J.J., Vo, K.-P., Tichy, W.F.: An empirical study of delta algorithms. In: Sommerville, I. (ed.) SCM 1996. LNCS, vol. 1167, pp. 49–66. Springer, Heidelberg (1996). https://doi.org/10.1007/BFb0023080
Hunt, J.W., McIlroy, M.D.: An algorithm for differential file comparison. CSTR #41, Bell Telephone Laboratories (1976)
IBM. PACBASE documentation page (2020). https://www.ibm.com/support/pages/documentation-visualage-pacbase
Kennedy van Dam, J., Zaytsev, V.: Software language identification with natural language classifiers. In: SANER ERA, pp. 624–628. IEEE (2016)
Kim, M., Notkin, D.: Discovering and representing systematic code changes. In: ICSE, pp. 309–319. IEEE (2009)
Kim, M., Notkin, D., Grossman, D.: Automatic inference of structural changes for matching across program versions. In: ICSE, pp. 333–343. IEEE (2007)
Lämmel, R.: Software Languages: Syntax, Semantics, and Metaprogramming. Springer, Heidelberg (2018)
Laski, J.W., Szermer, W.: Identification of program modifications and its applications in software maintenance. In: ICSM, pp. 282–290. IEEE (1992)
Maletic, J.I., Collard, M.L.: Supporting source code difference analysis. In: ICSM, pp. 210–219. IEEE (2004)
Maoz, S., Ringert, J.O., Rumpe, B.: ADDiff: semantic differencing for activity diagrams. In: FSE, pp. 179–189. ACM (2011)
Martin, J.: Applications Development Without Programmers. Prentice-Hall, Upper Saddle River (1981)
Mens, T.: A state-of-the-art survey on software merging. IEEE Trans. Softw. Eng. 28(5), 449–462 (2002)
Min, H., Li Ping, Z.: Survey on Software Clone Detection Research. In: ICMSS, pp. 9–16. ACM (2019)
Raincode Labs. https://www.raincodelabs.com
Raincode Labs. PACBASE Migration: More than 200 Million Lines Migrated (2018). https://www.raincodelabs.com/pacbase
Reuters Graphics. COBOL blues, April 2017. http://fingfx.thomsonreuters.com/gfx/rngs/USA-BANKS-COBOL/010040KH18J/
Rémy, C.: Un nouveau PacBase, entièrement Java. 01net, July 2000. https://www.01net.com/actualites/un-nouveau-pacbase-entierement-java-114108.html
Schlueter, L.: User-Designed Computing: The Next Generation. Lexington, Lanham (1988)
Terekhov, A.A., Verhoef, C.: The realities of language conversions. IEEE Softw. 17(6), 111–124 (2000)
Völter, M., et al.: DSL engineering: designing, implementing and using domain-specific languages (2013)
Z. Wang, K.P., Mcfarling, S.: BMAT - a binary matching tool for stale profile propagation. J. Instr. Level Parallelism 2, 1–20 (2000)
Xing, Z.: Model Comparison with GenericDiff. In: ASE, pp. 135–138. ACM (2010)
Xing, Z., Stroulia, E.: UMLDiff: an algorithm for object-oriented design differencing. In: ASE, pp. 54–65. ACM (2005)
Xing, Z., Stroulia, E.: API-evolution support with diff-catchup. IEEE Trans. Softw. Eng. 33(12), 818–836 (2007)
Xue, Y., Xing, Z., Jarzabek, S.: Clonediff: semantic differencing of clones. In: IWSC, pp. 83–84. ACM (2011)
Yang, W.: Identifying syntactic differences between two programs. Softw. Pract. Exp. 21(7), 739–755 (1991)
Zaytsev, V.: Language convergence infrastructure. In: Fernandes, J.M., Lämmel, R., Visser, J., Saraiva, J. (eds.) GTTSE 2009. LNCS, vol. 6491, pp. 481–497. Springer, Heidelberg (2011). https://doi.org/10.1007/978-3-642-18023-1_16
Zaytsev, V., et al.: CodeDiffNG: Advanced Source Code Diffing (2020). https://grammarware.github.io/codediffng
Zimmermann, T., Weisgerber, P., Diehl, S., Zeller, A.: Mining version histories to guide software changes. In: ICSE, pp. 563–572. IEEE (2004)
Acknowledgements
We thank the Raincode migration engineers Boris Pereira and Yannick Barthol for their collaboration, as well as the participants of the seminar SATToSE 2020, where an early version of this work was presented in June, for their feedback.
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2020 Springer Nature Switzerland AG
About this paper
Cite this paper
Deknop, C., Fabry, J., Mens, K., Zaytsev, V. (2020). Improving a Software Modernisation Process by Differencing Migration Logs. In: Morisio, M., Torchiano, M., Jedlitschka, A. (eds) Product-Focused Software Process Improvement. PROFES 2020. Lecture Notes in Computer Science(), vol 12562. Springer, Cham. https://doi.org/10.1007/978-3-030-64148-1_17
Download citation
DOI: https://doi.org/10.1007/978-3-030-64148-1_17
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-64147-4
Online ISBN: 978-3-030-64148-1
eBook Packages: Computer ScienceComputer Science (R0)