skip to main content
10.1145/3167105acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
research-article

Open challenges in incremental coverage of legacy software languages

Published: 22 October 2017 Publication History

Abstract

Legacy software systems were often written not just in programming languages typically associated with legacy, such as COBOL, JOVIAL and PL/I, but also in decommissioned or deprecated 4GLs. Writing compilers and other migration and renovation tools for such languages is an active business that requires substantial effort but has proven to be a successful strategy for many cases. However, the process of covering such languages (i.e., parsing their close overapproximation and assigning the right assumed semantics to it) is filled with unconventional requirements and limitations: the lack of useful documentation, large scale of codebases, counter-intuitive language engineering principles, buggy reference implementations, fragile workarounds for them, etc.
In this short paper, we motivate the incremental nature of software language engineering when it concerns legacy languages in particular, and outline a few related challenges.

References

[1]
Tiago Laureano Alves and Joost Visser. 2008. A Case Study in Grammar Engineering. In Revised Selected Papers of the First International Conference on Software Language Engineering (SLE) (LNCS), Vol. 5452. Springer, 285-304.
[2]
Anya Helene Bagge and Vadim Zaytsev. 2015. Open and Original Problems in Software Language Engineering 2015 Workshop Report. SIGSOFT Software Engineering Notes 40 (May 2015), 32-37. Issue 3.
[3]
Volodymyr Blagodarov, Yves Jaradin, and Vadim Zaytsev. 2016. Tool Demo: Raincode Assembler Compiler. In Proceedings of the Ninth International Conference on Software Language Engineering (SLE), Tijs van der Storm, Emilie Balland, and Dániel Varró (Eds.). 221-225.
[4]
Darius Blasband. 2016. The Rise and Fall of Software Recipes. Reality Bites Publishing. http://dariusblasband.com.
[5]
Giulio Concas, Cristina Monni, Matteo Orrù, and Roberto Tonelli. 2014. Clustering of Defects in Java Software Systems. In Proceedings of the 5th International Workshop on Emerging Trends in Software Metrics (WETSoM). ACM, 59-65.
[6]
Arie van Deursen, Paul Klint, and Joost Visser. 2000. Domain-specific Languages: An Annotated Bibliography. SIGPLAN Notices 35, 6 (June 2000), 26-36.
[7]
Sebastian Erdweg, Tijs van der Storm, Markus Völter, Meinte Boersma, Remi Bosman, William R. Cook, Albert Gerritsen, Angelo Hulshout, Steven Kelly, Alex Loh, Gabriël D. P. Konat, Pedro J. Molina, Martin Palatnik, Risto Pohjonen, Eugen Schindler, Klemens Schindler, Riccardo Solmi, Vlad A. Vergu, Eelco Visser, Kevin van der Vlist, Guido Wachsmuth, and Jimi van der Woning. 2013. The State of the Art in Language Workbenches -- Conclusions from the Language Workbench Challenge. In Proceedings of the Sixth International Conference on Software Language Engineering (SLE) (LNCS), Martin Erwig, Richard F. Paige, and Eric VanWyk (Eds.), Vol. 8225. Springer, 197-217.
[8]
Moritz Eysholdt and Heiko Behrens. 2010. Xtext: Implement Your Language Faster than the Quick and Dirty Way. In Companion to the 25th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages and Applications (OOPSLA), William R. Cook, Siobhán Clarke, and Martin C. Rinard (Eds.). ACM, 307-309.
[9]
Martin Fowler. 2005. Language Workbenches: The Killer-App for Domain Specific Languages? MartinFowler.com. (June 2005). https://martinfowler.com/articles/languageWorkbench.html.
[10]
Martin Fowler. 2010. Domain Specific Languages. Addison-Wesley Professional.
[11]
Martin Fowler, Kent Beck, John Brant, William Opdyke, and Don Roberts. 1999. Refactoring: Improving the Design or Existing Code. Addison-Wesley.
[12]
Liang Gong, David Lo, Lingxiao Jiang, and Hongyu Zhang. 2012. Diversity maximization speedup for fault localization. In Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering. ACM, 30-39.
[13]
Dick Grune, Kees van Reeuwijk, Henri E. Bal, Ceriel J. H. Jacobs, and Koen G. Langendoen. 2012. Modern Compiler Design (second ed.). Addison-Wesley. https://dickgrune.com/Books/MCD_2nd_Edition/.
[14]
Görel Hedin and Eva Magnusson. 2003. JastAdd -- An Aspect-Oriented Compiler Construction System. Science of Computer Programming (LDTA'01 Special Issue) 47, 1 (2003), 37-58.
[15]
Abram Hindle, Earl T. Barr, Zhendong Su, Mark Gabel, and Premkumar T. Devanbu. 2012. On the Naturalness of Software. In Proceedings of the 34th International Conference on Software Engineering (ICSE), Martin Glinz, Gail C. Murphy, and Mauro Pezzé (Eds.). IEEE, 837-847.
[16]
Gabor Karsai, Holger Krahn, Class Pinkernell, Bernhard Rumpe, Martin Schneider, and Steven Völkel. 2009. Design Guidelines for Domain Specific Languages. In Proceedings of the Ninth OOPSLA Workshop on Domain-Specific Modeling (DSM 2009), Matti Rossi, Jonathan Sprinkle, Jeff Gray, and Juha-Pekka Tolvanen (Eds.). 7-13. https://arxiv.org/abs/1409.2378.
[17]
Lennart C. L. Kats and Eelco Visser. 2010. The Spoofax Language Workbench: Rules for Declarative Specification of Languages and IDEs. In Proceedings of the 25th Annual Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), William R. Cook, Siobhán Clarke, and Martin C. Rinard (Eds.). ACM, 444-463.
[18]
Juriaan Kennedy van Dam and Vadim Zaytsev. 2016. Software Language Identification with Natural Language Classifiers. In Proceedings of the 23rd IEEE International Conference on Software Analysis, Evolution, and Reengineering: the Early Research Achievements track (SANER ERA), Katsuro Inoue, Yasutaka Kamei, Michele Lanza, and Norihiro Yoshida (Eds.). IEEE, 624-628.
[19]
Sunghun Kim and Michael D. Ernst. 2007. Which warnings should I fix first?. In Proceedings of the Sixth Joint Meeting of the 11th European Software Engineering Conference and the 15th International Symposium on Foundations of Software Engineering, Ivica Crnkovic and Antonia Bertolino (Eds.). ACM, 45-54.
[20]
Paul Klint. 1993. A Meta-Environment for Generating Programming Environments. ACM Transactions on Software Engineering and Methodology (TOSEM)2, 2 (1993), 176-201.
[21]
Paul Klint, Ralf Lämmel, and Chris Verhoef. 2005. Toward an Engineering Discipline for Grammarware. ACM Transactions on Software Engineering Methodology (TOSEM)14, 3 (2005), 331-380.
[22]
Paul Klint, Tijs van der Storm, and Jurgen J. Vinju. 2009. Rascal: A Domain Specific Language for Source Code Analysis and Manipulation. In Proceedings of the Ninth International Working Conference on Source Code Analysis and Manipulation (SCAM). IEEE Computer Society, 168- 177.
[23]
Shriram Krishnamurthi. 2015. Desugaring in Practice: Opportunities and Challenges. In Proceedings of the 20th Workshop on Partial Evaluation and Program Manipulation. ACM, 1-2.
[24]
Ralf Lämmel. 2016. Coupled Software Transformations--Revisited. In Proceedings of the Ninth International Conference on Software Language Engineering (SLE). ACM, 239-252.
[25]
Ralf Lämmel and Vadim Zaytsev. 2009. An Introduction to Grammar Convergence. In Proceedings of the Seventh International Conference on Integrated Formal Methods (iFM 2009) (LNCS), Michael Leuschel and Heike Wehrheim (Eds.), Vol. 5423. Springer, 246-260.
[26]
James Martin. 1985. Fourth Generation Languages. Prentice Hall.
[27]
Vadim Maslov. 1998. Re: An Odd Grammar Question. http://compilers.iecc.com/comparch/article/98-05-108. (May 1998).
[28]
Marjan Mernik, Jan Heering, and Anthony M. Sloane. 2005. When and How to Develop Domain-Specific Languages. Comput. Surveys 37, 4 (2005), 316-344.
[29]
Ron Petrusha, Maira Wenzel, Luke Latham, Tom Pratt, and Yisheng Jin. 2017. Peverify.exe (PEVerify Tool). (2017). https://docs.microsoft.com/en-us/dotnet/framework/tools/peverify-exe-peverify-tool.
[30]
Xiaoxia Ren, Fenil Shah, Frank Tip, Barbara G. Ryder, and Ophelia Chesley. 2004. Chianti: A Tool for Change Impact Analysis of Java Programs. In Proceedings of the 19th Conference on Object-oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM, 432-448.
[31]
Gregg Rothermel and Mary Jean Harrold. 1997. A Safe, Efficient Regression Test Selection Technique. ACM Transactions on Software Engineering and Methodology (TOSEM) 6, 2 (1997), 173-210.
[32]
Charles Simonyi, Magnus Christerson, and Shane Clifford. 2006. Intentional Software. In Proceedings of the 21th Annual Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), Peri L. Tarr and William R. Cook (Eds.). ACM, 451-464.
[33]
SLE. 2008-2017. International Conference on Software Language Engineering. http://www.sleconf.org. (2008-2017).
[34]
Diomidis Spinellis. 2001. Notable Design Patterns for Domain-specific Languages. The Journal of Systems and Software 56, 1 (2001), 91-99.
[35]
Amitabh Srivastava and Jay Thiagarajan. 2002. Effectively Prioritizing Tests in Development Environment. In Proceedings of the International Symposium on Software Testing and Analysis (ISSTA). ACM, 97-106.
[36]
Andrew Stevenson and James R. Cordy. 2014. A Survey of Grammatical Inference in Software Engineering. Science of Computer Programming 96 (2014), 444-459.
[37]
Andrey A. Terekhov and Chris Verhoef. 2000. The Realities of Language Conversions. IEEE Software17, 6 (Nov./Dec. 2000), 111-124.
[38]
Nicole Vavrová and Vadim Zaytsev. 2017. Does Python Smell Like Java? The Art, Science and Engineering of Programming (¿Programming¿) 1 (April 2017), 11-1-11-29. Issue 2.
[39]
Markus Völter, Sebastian Benz, Christian Dietrich, Birgit Engelmann, Mats Helander, Lennart C. L. Kats, Eelco Visser, and Guido Wachsmuth. 2013. DSL Engineering: Designing, Implementing and Using Domain-Specific Languages. dslbook.org.
[40]
Markus Völter and Vaclav Pech. 2012. Language Modularity with the MPS Language Workbench. In Proceedings of the 34th International Conference on Software Engineering (ICSE), Martin Glinz, Gail C. Murphy, and Mauro Pezzè (Eds.). IEEE, 1449-1450.
[41]
David S. Wile. 2001. Supporting the DSL Spectrum. Journal of Computing and Information Technology 9, 4 (2001), 263-287.
[42]
Vadim Zaytsev. 2005. Correct C# Grammar too Sharp for ISO. In Participants Workshop, Part II of the Pre-proceedings of the International Summer School on Generative and Transformational Techniques in Software Engineering (GTTSE 2005). Technical Report, TR-CCTC/DI-36, Universidade do Minho, Braga, Portugal, 154-155. Extended abstract.
[43]
Vadim Zaytsev. 2014. Formal Foundations for Semi-parsing. In Proceedings of the Software Evolution Week (IEEE Conference on Software Maintenance, Reengineering and Reverse Engineering), Early Research Achievements Track (CSMR-WCRE 2014 ERA), Serge Demeyer, Dave Binkley, and Filippo Ricca (Eds.). IEEE, 313-317.
[44]
Vadim Zaytsev. 2017. Language Design with Intent. In Proceedings of the ACM/IEEE 20th International Conference on Model Driven Engineering Languages and Systems (MoDELS). IEEE, 45-52.
[45]
Vadim Zaytsev. 2017. Parser Generation by Example for Legacy Pattern Languages. In Proceedings of the 16th International Conference on Generative Programming: Concepts and Experience (GPCE), Matthew Flatt and Sebastian Erdweg (Eds.). ACM, 212-218.
[46]
Vadim Zaytsev. 2017. Parsing @ IDE. In Pre-proceedings of the Fifth Annual Workshop on Parsing Programming Languages (Parsing@SLE). http://grammarware.net/text/2017/parsingatide.pdf.
[47]
Vadim Zaytsev and Anya Helene Bagge. 2014. Parsing in a Broad Sense. In Proceedings of the 17th International Conference on Model Driven Engineering Languages and Systems (MoDELS 2014) (LNCS), Jürgen Dingel, Wolfram Schulte, Isidro Ramos, Silvia Abrahão, and Emilio Insfran (Eds.), Vol. 8767. Springer, 50-67.

Cited By

View all
  • (2019)Event-based parsingProceedings of the 6th ACM SIGPLAN International Workshop on Reactive and Event-Based Languages and Systems10.1145/3358503.3361275(31-40)Online publication date: 21-Oct-2019

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
PX/17.2: Proceedings of the 3rd ACM SIGPLAN International Workshop on Programming Experience
October 2017
45 pages
ISBN:9781450355223
DOI:10.1145/3176645
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].

Sponsors

In-Cooperation

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 22 October 2017

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. compiler construction
  2. fourth generation programming languages
  3. legacy software systems

Qualifiers

  • Research-article

Conference

SPLASH '17
Sponsor:

Upcoming Conference

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)11
  • Downloads (Last 6 weeks)1
Reflects downloads up to 17 Feb 2025

Other Metrics

Citations

Cited By

View all
  • (2019)Event-based parsingProceedings of the 6th ACM SIGPLAN International Workshop on Reactive and Event-Based Languages and Systems10.1145/3358503.3361275(31-40)Online publication date: 21-Oct-2019

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media