James Power - Papers Published in 2003


This material is presented to ensure timely dissemination of scholarly and technical work. Copyright and all rights therein are retained by authors or by other copyright holders. All persons copying this information are expected to adhere to the terms and constraints invoked by each author's copyright. In most cases, these works may not be reposted without the explicit permission of the copyright holder.

C++ Compilers and ISO Conformance

Brian A. Malloy, James. F. Power and Tanton H. Gibbs,
Dr. Dobb's Journal,
Vol. 28, No. 11, November, 2003, pp. 54-60.
ISSN: 1044-789X.
(c) Copyright 2003, CMP Media, LLC.

In this article we revisit the C++ conformance study we presented in "Testing C++ Compilers for ISO Language Conformance" (DDJ, June 2002). In doing so, we provide some measure of conformance to the ISO Standard for eight C++ compilers: Borland 6.0, Comeau 4.3.2, EDG 3.2, gcc 3.3, Intel 7.1, PGCC 4.1-2, Visual C++ 7.1 and Watcom 1.0.

Toward a definition of run-time object-oriented metrics

Aine Mitchell and James F. Power,
7th ECOOP Workshop on Quantitative Approaches in Object-Oriented Software Engineering,
Darmstadt, Germany, July 21-25, 2003.

This position paper outlines a programme of research based on the quantification of run-time elements of Java programs. In particular, we adapt two common objectoriented metrics, coupling and cohesion, so that they can be applied at run-time. We demonstrate some preliminary results of our analysis on programs from the SPEC JVM98 benchmark suite.

gccXfront: Exploiting gcc as a Front End for Program Comprehension Tools via XML/XSLT

Mark Hennessy, Brian Malloy and James Power,
11th IEEE International Workshop on Program Comprehension, (Tool Demo),
Portland, Oregon, USA, May 9-11, 2003, pp. 298-299.
ISBN: 0-7695-1883-4.
(c) Copyright 2003, IEEE.

Parsing programming languages is an essential component of the front end of most program comprehension tools. Languages such as C++ can be difficult to parse and so it can prove useful to re-use existing front ends such as those from the GNU compiler collection, gcc. We have modified gcc to provide syntactic tags in XML format around the source code which can greatly enhance our comprehension of the program structure. Further, by using XML transformation stylesheets, the XML outputted by our modified gcc can be translated into a more readable format. Our tool, gccXfront leverages the power and portability of the gcc suite, since any C, C++, Objective C or Java program can be processed using gcc. Our tool can thus act as a bridge between gcc and other program comprehension tools that accept XML formatted input.

Platform independent dynamic Java virtual machine analysis: the Java Grande Forum benchmark suite

David Gregg, James Power, John Waldron,
Concurrency and Computation: Practice and Experience,
Vol. 15, No. 3-5, March, 2003, pp. 459-484.
ISSN: 1532-0626.
(c) Copyright 2003, John Wiley & Sons, Ltd.

In this paper we present a platform independent analysis of the dynamic profiles of Java programs when executing on the Java Virtual Machine. The Java programs selected are taken from the Java Grande Forum benchmark suite and five different Java-to-bytecode compilers are analysed. The results presented describe the dynamic instruction usage frequencies, as well as the sizes of the local variable, parameter and operand stacks during execution on the JVM.These results, presenting a picture of the actual (rather than presumed) behaviour of the JVM, have implications both for the coverage aspects of the Java Grande benchmark suites, for the performance of the Java-to-bytecode compilers and for the design of the JVM.

Decorating tokens to facilitate recognition of ambiguous language constructs

Brian A. Malloy, Tanton H. Gibbs, James F. Power,
Software: Practice and Experience,
Vol. 33, No. 1, January, 2003, pp. 19-39.
ISSN: 0038-0644.
(c) Copyright 2003, John Wiley & Sons, Ltd.

Software tools are fundamental to the comprehension, analysis, testing and debugging of application systems. A necessary first step in the development of many tools is the construction of a parser front-end that can recognize the implementation language of the system under development. In this paper, we describe our use of token decoration to facilitate recognition of ambiguous language constructs. We apply our approach to the C++ language since its grammar is replete with ambiguous derivations such as the declaration/expression and template-declaration/expression ambiguity. We describe our implementation of a parser front-end for C++, keystone, and we describe our results in decorating tokens for our test suite including the examples from Clause Three of the C++ standard. We are currently exploiting the keystone front-end to develop a taxonomy for implementation-based class testing and to reverse-engineer Unified Modeling Language (UML) class diagrams.


Contact: James Power
Last revised: 9 Jan 2006