which resulted in the IronPython project (Hugunin,
2004). The project is still under active development
and it is regularly compared to the reference imple-
mentation (Fugate, 2010). Most importantly, the DLR
also grew out from this project (Hugunin, 2007).
6 SUMMARY AND FUTURE
WORK
In this paper, we argued that technical difficulties and
performance are not the only important aspects of
porting legacy code to modern platforms, but main-
tainability is (at least) of equal importance. Thus,
we took two implementations of the A+ runtime, one
that had been developed for 20 years in C/C++ and
a clean-room implementation in C#, and investigated
them. We described how we managed to identify
the functionally equivalent parts of the two systems
and then we presented the analysis of maintainability-
related source code metrics, as well as some simple
derived metrics. The results indicate that the reimple-
mented version is less complex and thus – presumably
– more maintainable.
For the future, we have several plans for improve-
ments. First of all, we would like to increase the func-
tionality of the A+.NET runtime to support more fea-
tures of the reference implementation. This would re-
sult in larger functionally equivalent code bases that
can be compared. (And this would also help mov-
ing more A+ applications to the .NET-based environ-
ment.) Then, we would like to compute and analyze
more maintainability-related metrics for the two im-
plementations. Most importantly, we would like to
compute the Maintainability Index for C/C++ and C#
as well. Furthermore, we would like to build a broad
benchmark set that allows the evaluation of the per-
formance of A+ environments. This would allow the
evaluation of performance and maintainability side-
by-side. Unfortunately, such an A+ benchmark does
not exist yet, or it is not publicly available at least.
Although we plan more analysis and comparison
for the future, we hope that our current findings can
already give guidance in assessing the costs and the
gains of porting legacy systems.
ACKNOWLEDGEMENTS
The authors would like to thank P´eter Siket and P´eter
Heged˝us for their help with the Columbus tool chain.
REFERENCES
Chiles, B. and Turner, A. (2009). Dynamic Language Run-
time. http://dlr.codeplex.com/.
Clayton, L., Eklof, M. D., and McDonnell, E. (2000).
ISO/IEC 13751:2000(E): Programming Language
APL, Extended. Internation Standards Organization.
Ferenc, R., Besz´edes,
´
A., Tarkiainen, M., and Gyim´othy,
T. (2002). Columbus – reverse engineering tool and
schema for C++. In Proceedings of the 18th Inter-
national Conference on Software Maintenance (ICSM
2002), pages 172–181, Montr´eal, Canada. IEEE.
Fugate, D. (2010). IronPython performance comparisons.
http://ironpython.codeplex.com/wikipage?title=Iron
Python%20Performance.
G´al, P. and Kiss,
´
A. (2012). Implementation of an A+ in-
terpreter for .NET. In Proceedings of the 7th Interna-
tional Conference on Software Paradigm Trends (IC-
SOFT 2012), pages 297–302, Rome, Italy. SciTePress.
Hugunin, J. (2004). IronPython: A fast Python implemen-
tation for .NET and Mono. In PyCON 2004, Wash-
ington, DC, USA.
Hugunin, J. (2007). A dynamic language runtime (DLR).
http://blogs.msdn.com/b/hugunin/archive/2007/04/30/
a-dynamic-language-runtime-dlr.aspx.
McCabe, T. J. (1976). A complexity measure. IEEE Trans-
actions on Software Engineering, (4):308–320.
Morgan Stanley (1995–2008). A+ Language Reference.
http://www.aplusdev.org/Documentation/.
Mosberger, D. (2002–2013). The libunwind project.
http://www.nongnu.org/libunwind/index.html.
Oman, P. and Hagemeister, J. (1992). Metrics for assessing
a software system’s maintainability. In Proceedings of
the 1992 IEEE Conference on Software Maintenance,
pages 337–344, Orlando, FL, USA. IEEE.
Sneed, H. M. (2005). Estimating the costs of a reengineer-
ing project. In Proceedings of the 12th Working Con-
ference on Reverse Engineering (WCRE 2005), pages
111–119, Pittsburgh, PA, USA. IEEE.
Sneed, H. M. (2010). Migrating from COBOL to Java. In
Proceedings of the 26th IEEE International Confer-
ence on Software Maintenance (ICSM 2010), pages
1–7, Timisoara, Romania. IEEE.
Wang, X., Sun, J., Yang, X., Huang, C., He, Z., and Maddi-
neni, S. R. (2006). Reengineering standalone C++
legacy systems into the J2EE partition distributed en-
vironment. In Proceedings of the 28th International
Conference on Software Engineering, pages 525–533.
ACM.
AComparisonofMaintainabilityMetricsofTwoA+Interpreters
297