|
Recent Advances in Java
Technology: Theory, Application, ImplementationJames F. Power and John T. Waldron (Eds.), Computer Science Press, Trinity College Dublin,
November,
2002.
ISBN: 0-9544145-0-0.
(c) Copyright 2002, Computer Science Press, Trinity College Dublin.
Since its launch, the Java programming language has quickly
established itself as a backbone technology in many areas of computer
science and information systems. By leveraging the power, reliability
and portability of the Java framework, applications developers have
harnessed a means of creating robust and mobile applications. In
RECENT ADVANCES IN JAVA TECHNOLOGY we investigate the present day
widespread use of Java and Java related technologies to provide a
platform for cutting-edge developments in software.
|
|
Measuring the impact of
object-oriented techniques in Grande applications:
a method-level analysisD. Gregg, J.F. Power, J.T. Waldron, Joint ACM-ISCOPE Conference on Java Grande (Poster
Session), Seattle, Washington, USA,
November 3-5,
2002, pp. 229-229.
ISBN: 1-58113-599-8.
(c) Copyright 2002, ACM.
In this work we seek to provide a foundation for the study of the
level of use of object-oriented techniques in Java programs in
general, and scientific applications in particular. Specifically, we
focus on the use of small methods, and the frequency with which they
are called, since this forms the basis for the study of method
inlining, an important optimisation technique. We compare the Grande
and SPEC benchmark suites, and note a significant difference in the
nature and composition of these suites.
|
|
Program annotation in XML: a parser-based approachJ.F. Power and B.A. Malloy, 9th IEEE Working Conference on Reverse Engineering, Richmond, Virginia, USA,
October 28 - November 1,
2002, pp. 190-198.
ISBN: 0-7695-1799-4.
(c) Copyright 2002, IEEE.
In this paper we describe a technique that can be used to
annotate source code with syntactic tags in XML format. This is
achieved by modifying the parser generator bison to emit these tags
for an arbitrary grammar. We also discuss an immediate application of
this technique, a portable modification of the gcc compiler, that
allows for XML output for C, Objective C, C++ and Java programs.
While our approach does not have the same semantic richness as other
approaches, it does have the advantage of being language independent,
and thus re-usable in a number of different domains.
|
|
Automated Validation of Class Invariants in C++ ApplicationsT.H. Gibbs, B.A. Malloy and J.F. Power, 17th IEEE International Conference on Automated Software
Engineering, Edinburgh, UK,
September 23-27,
2002, pp. 205-214.
ISBN: 0-7695-1736-6.
(c) Copyright 2002, IEEE.
In this paper, we describe a non-invasive approach for validation of
class invariants in C++ applications. Our approach is fully automated
so that the user need only supply the class invariants for each class
hierarchy to be checked and our validator constructs an
InvariantVisitor, a variation of the Visitor Pattern, and an
InvariantFacilitator. Instantiations of the InvariantVisitor and
InvariantFacilitator classes encapsulate the invariants in C++
statements and facilitate the validation of the invariants. We
describe both our approach and our results of validating invariants in
keystone, a well tested parser front-end for C++.
|
|
Applying Software Engineering Techniques to Parser DesignB. A. Malloy, J. F. Power and J. T. Waldron, Conference of the South African Institute of
Computer Scientists and Information Technologists, Port Elizabeth, South Africa,
September 16-18,
2002, pp. 75-82.
ISBN: 1-58113-596-3.
(c) Copyright 2002, ACM.
In this paper we describe the development of a parser for the
C# programming language. We outline the development process
used, detail its application to the development of a C# parser
and present a number of metrics that describe the parser's evolution.
This paper presents and reinforces an argument for the application of
software engineering techniques in the area of parser design. The
development of a parser for the C# programming language is in
itself important to software engineering, since parsers form the
basis for tools such as metrics generators, refactoring tools,
pretty-printers and reverse engineering tools.
|
|
Bi-gram Analysis of Java Bytecode SequencesD. O'Donoghue, A. Leddy, J.F. Power and J.T. Waldron, Proceedings of the Second Workshop on Intermediate Representation
Engineering for the Java Virtual Machine, Trinity College, Dublin, Ireland,
June 13-14,
2002, pp. 187-192.
ISBN: 0-901519-87-1.
(c) Copyright 2002, ACM.
We report on a project that performed a bigram analysis of dynamic
bytecode sequences. The objective was to identify the most commonly
used bytecode pairs, and to examine the relative frequency of
occurrence of these bytecodes. In all, 12 large Java programs were
analysed, taken from the Java Grande and SPEC benchmark suites. Our
findings are of relevance to research into instruction set design and
implementation, as well as JVM optimisation.
|
|
Testing C++ Compilers for ISO Language ConformanceBrian A. Malloy, Scott A. Linde, Edward B. Duffy and James
F. Power, Dr. Dobb's Journal,
No. 337,
June,
2002, pp. 71-78.
ISSN: 1044-789X.
(c) Copyright 2002, CMP Media, LLC.
In this paper, we describe our construction of a test harness to
measure conformance of some popular C++ compilers and to measure the
progress of the gcc C++ compiler as it moves toward ISO conformance.
In an attempt to apply the same standard to all of the vendors, we use
the same test cases and the same testing framework for all executions,
even though some of the compilers are platform dependent and there is
no common platform for all compilers. We found that the Python
language provided the functionality that we needed with its scripting
facility, its platform independence and its object orientation to
facilitate code reuse. Python includes a testing framework as a
module of the language and we have extended the framework to measure
C++ ISO conformance.
|
|
Reveal: A Tool to Reverse Engineer Class DiagramsSarah Matzko, Peter J. Clarke, Tanton H. Gibbs, Brian A. Malloy, James
F. Power and Rosemary Monahan, Fortieth International Conference on Technology of Object-Oriented
Languages and Systems, Sydney, Australia,
February 18-21,
2002, pp. 13-21.
ISBN: 0-909-92588-7.
(c) Copyright 2002, ACM.
Many systems are constructed without the use of modeling and
visualization artifacts, due to constraints imposed by deadlines
or a shortage of manpower. Nevertheless, such systems might
profit from the visualization provided by diagrams to facilitate
maintenance of the constructed system. In this paper, we present
a tool, Reveal, to reverse engineer a class diagram from the C++
source code representation of the software. In Reveal, we remain
faithful to the UML standard definition of a class diagram wherever
possible. However, to accommodate the vagaries of the C++ language,
we offer some extensions to the standard notation to include
representations for namespaces, stand-alone functions and friend
functions. We compare our representation to three other tools that
reverse-engineer class diagrams, for both compliance to the UML
standard and for their ability to faithfully represent the software
system under study.
|
|
Relating Static and Dynamic Measurements for the Java Virtual
Machine Instruction SetT. Dowling, J. Power and J. Waldron , Recent Advances in Simulation, Computational Methods and
Soft Computing,
N.E. Mastorakis Eds.,
2002, pp. 106-111.
ISBN: 960-8052-50-5.
This is a book-length version of our MMACTEE
'01 paper.
|
|
Benchmarking the Java Virtual Architecture - The SPEC JVM98
Benchmark SuiteD. Gregg, J. Power and J. Waldron, Java Microarchitectures,
Chapter 1,
N. Vijaykrishnan and M. Wolczko Eds.,
2002, pp. 1-18.
ISBN: 1-4020-7034-9.
(c) Copyright 2002, Kluwer.
In this chapter we present a study of the SPEC JVM98 benchmark suite
at a dynamic platform-independent level. The results presented describe the
influence of class library code, the relative importance of various
methods in the suite, as well as the sizes of the local variable,
parameter and operand stacks. We also
examine the dynamic bytecode instruction usage frequencies, and discuss
their relevance. The influence of the choice of Java source to
bytecode compiler is shown to be relatively insignificant at present.
|