Source-to-Source Translation and Software Engineering
- 1 Department of Computer Science, University of North Carolina at Chapel Hill, Chapel Hill, USA
Abstract
Source-to-source translation of programs from one high level language to another has been shown to be an effective aid to programming in many cases. By the use of this approach, it is sometimes possible to produce software more cheaply and reliably. However, the full potential of this technique has not yet been realized. It is proposed to make source- to-source translation more effective by the use of abstract languages, which are imperative languages with a simple syntax and semantics that facilitate their translation into many different languages. By the use of such abstract lan guages and by translating only often-used fragments of programs rather than whole programs, the need to avoid writing the same program or algorithm over and over again in different languages can be reduced. It is further proposed that programmers be encouraged to write often-used algorithms and program fragments in such abstract languages. Libraries of such abstract programs and program fragments can then be constructed, and programmers can be encouraged to make use of such libraries by translating their abstract programs into application languages and adding code to join things together when coding in various application languages. This approach can also improve program reliability, be cause it is only necessary to verify the abstract programs once instead of verifying them separately in each application language. Also, this approach makes it possible to generate code faster than programming from scratch each time. This approach is compared to the use of libraries and to other methods in current use for communication between program ming languages and translation between languages.
- M. Hinchey, M. Jackson, P. Cousot, B. Cook, J. P. Bowen and T. Margaria, “Software Engineering and Formal Methods,” Communications of the ACM, Vol. 51 No. 9, 2008, p. 55. doi:10.1145/1378727.1378742
- P. J. Denning and R. D. Riehle, “Is Software Engineering Engineering?” Communications of the ACM, Vol. 52, No. 3, 2009, p. 25. doi:10.1145/1467247.1467257
- E. Tenner, “Buggy Software: Achilles Heel of Big-DataPowered Science?” The Atlantic, 2012. http://www.theatlantic.com/technology/archive/2012/12/buggy-software-achilles-heel-of-big-data-powered-science/265690/
- R. M. Bates, “Logic of Lemmings in Compiler Innovation,” Communications of the ACM, Vol. 52, No. 5, 2009, p. 7. doi:10.1145/1506409.1506412
- E. Putrycz and A. W. Kark, “Connecting Legacy Code, Business Rules and Documentation,” Proceedings of the International Symposium on Rule Representation, Interchange and Reasoning on the Web (RuleML ’08), Vol. 5321, 2008, pp. 17-30.
- T. Ziadi, M. A. A. da Silva, L. M. Hillah and M. Ziane, “A Fully Dynamic Approach to the Reverse Engineering of UML Sequence Diagrams,” Proceedings of the 2011 16th IEEE International Conference on Engineering of Complex Computer Systems (ICECCS ’11), Las Vegas, 27-29 April 2011, pp. 107-116.
- J. F. Cui and H. S. Chae, “Applying Agglomerative Hierarchical Clustering Algorithms to component Identification for Legacy Systems,” Information and Software Technology, Vol. 53, No. 6, 2011, pp. 601-614. doi:10.1016/j.infsof.2011.01.006
- W. Gropp, E. Lusk and A. Skjellum, “Using MPI: Portable Parallel Programming with the Message-Passing Interface,” MIT Press, Cambridge, 1994.
- P. J. L. Wallis, “Automatic Language Conversion and Its Place in the Transition to Ada,” Proceedings of the 1985 annual ACM SIGAda international conference on Ada (SIGAda ’85), Vol. 5, No. 2, 1985, pp. 275-284.
- P. F. Albrecht, P. E. Garrison, S. L. Graham, R. H. Hyerle, P. Ip and B. Krieg-Brückner, “Source-to-Source Translation: Ada to Pascal and Pascal to Ada,” Proceedings of the ACM-SIGPLAN symposium on Ada Programming language (SIGPLAN ’80), Vol. 15, No. 11, 1980, pp. 183-193.
- R. D. Huijsman, J. van Katwijk, C. Pronk and W. J. Toetenel, “Translating Algol 60 Programs into Ada,” Ada Letters, Vol. VII, No. 5, 1987, pp. 42-50. doi:10.1145/36077.36080
- D. Plaisted, “An Abstract Programming System,” In: S. Shannon, Ed., Leading Edge Computer Science Research, Nova Science Publishers, New York, 2005, pp. 85-129.