James F. Power

dblp:p/JamesFPower · DBLP profile ↗
← Back
33ranked-venue papers
6as first author
2since 2021 · last 2023
0000-0002-6770-3910ORCID · verified

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 24 · 2 first-author · 1 since 2021Human-computer interaction and ubiquitous computing · 4 · 3 first-authorTheory of computation · 3 · 1 first-author · 2 since 2021Systems, architecture and hardware · 2Artificial intelligence and machine learning · 1Applied, interdisciplinary, general and emerging computing · 1
YearPublicationVenuePosition
2023 Building Specifications in the Event-B Institution: A Summary
Marie Farrell, Rosemary Monahan, James F. Power
ABZ3
2022 Building Specifications in the Event-B Institution
abstract
This paper describes a formal semantics for the Event-B specification language using the theory of institutions. We define an institution for Event-B, EVT, and prove that it meets the validity requirements for satisfaction preservation and model amalgamation. We also present a series of functions that show how the constructs of the Event-B specification language can be mapped into our institution. Our semantics sheds new light on the structure of the Event-B language, allowing us to clearly delineate three constituent sub-languages: the superstructure, infrastructure and mathematical languages. One of the principal goals of our semantics is to provide access to the generic modularisation constructs available in institutions, including specification-building operators for parameterisation and refinement. We demonstrate how these features subsume and enhance the corresponding features already present in Event-B through a detailed study of their use in a worked example. We have implemented our approach via a parser and translator for Event-B specifications, EBtoEVT, which also provides a gateway to the Hets toolkit for heterogeneous specification.
Marie Farrell, Rosemary Monahan, James F. Power
Log. Methods Comput. Sci.3
2020 Calibration and Analysis of Source Code Similarity Measures for Verilog Hardware Description Language Projects
abstract
In this paper we report on our experiences during a first-year course on digital logic design using the Verilog hardware description language. As part of the course the students were given a series of take-home assignments, which were then marked using an automated assessment system developed by the authors. During the course the instructor was made aware that a set of solutions had been circulated to the students, and was asked to assess the impact that this had on the assessment regime. In order to answer this question, we examined and implemented a number of approaches to calculating similarity between Verilog programs, and we present the results of that study in this paper. An important feature of this work was ensuring that the measurements used were well-understood, properly calibrated and defensible. We report on the results of this study, applied to a class of 115 students who completed up to 11 projects each.
James F. Power, John Waldron
SIGCSE1
2019 Quantifying Activity and Collaboration Levels in Programming Assignments
abstract
This paper presents an experience report from a third-year undergraduate compiler design course that is taught as part of a four year computer science degree. We analyse data from a study of practical assignments, evaluated in the context of take-home formative assignments and a supervised summative examination. We implement metrics to quantify the degrees of similarity between submissions for programming assignments, as well as measuring the level of activity. We present the results of our study, and discuss the utility of these metrics for our teaching practice.
James F. Power, John Waldron
ITiCSE1
2019 An empirical analysis of the transition from Python 2 to Python 3
Brian A. Malloy, James F. Power
Empir. Softw. Eng.2
2019 Grammar engineering for multiple front-ends for Python
abstract
Summary In this paper, we describe our experience in grammar engineering to construct multiple parsers and front ends for the Python language. We present a metrics‐based study of the evolution of the Python grammars through the multiple versions of the language in an effort to distinguish and measure grammar evolution and to provide a basis of comparison with related research in grammar engineering. To conduct this research, we have built a toolkit, pygrat, which builds on tools developed in other research. We use pygrat to build a system that automates much of the process needed to translate the Python grammars from EBNF to a formalism acceptable to the bison parser generator. We exploit the suite of Python test cases, used by the Python developers, to validate our parser generation. Finally, we describe our use of the menhir parser generator to facilitate the parser and front‐end construction, eliminating some of the transformations and providing practical support for grammar modularisation.
Brian A. Malloy, James F. Power
Softw. Pract. Exp.2
2018 Formalised EMFTVM bytecode language for sound verification of model transformations
Rosemary Monahan, James F. Power
Softw. Syst. Model.3
2017 Quantifying the Transition from Python 2 to 3: An Empirical Study of Python Applications
abstract
Background: Python is one of the most popular modern programming languages. In 2008 its authors introduced a new version of the language, Python 3.0, that was not backward compatible with Python 2, initiating a transitional phase for Python software developers. Aims: The study described in this paper investigates the degree to which Python software developers are making the transition from Python 2 to Python 3. Method: We have developed a Python compliance analyser, PyComply, and have assembled a large corpus of Python applications. We use PyComply to measure and quantify the degree to which Python 3 features are being used, as well as the rate and context of their adoption. Results: In fact, Python software developers are not exploiting the new features and advantages of Python 3, but rather are choosing to retain backward compatibility with Python 2. Conclusions: Python developers are confining themselves to a language subset, governed by the diminishing intersection of Python 2, which is not under development, and Python 3, which is under development with new features being introduced as the language continues to evolve.
Brian A. Malloy, James F. Power
ESEM2
2017 Combining Event-B and CSP: An Institution Theoretic Approach to Interoperability
Marie Farrell, Rosemary Monahan, James F. Power
ICFEM3
2017 Specification Clones: An Empirical Study of the Structure of Event-B Specifications
Marie Farrell, Rosemary Monahan, James F. Power
SEFM3
2014 An Early Completion Algorithm: Thue's 1914 Paper on the Transformation of Symbol Sequences
James F. Power
CiE1
2014 Can a Computationally Creative System Create Itself? Creative Artefacts and Creative Processes
Diarmuid P. O'Donoghue, James F. Power, Sian O'Briain, Aidan Mooney, Donny Hurley, Yalemisew M. Abgaz, Charles Markham
ICCC2
2013 Exploiting Attributed Type Graphs to Generate Metamodel Instances Using an SMT Solver
abstract
In this paper we present an approach to generating instances of metamodels using a Satisfiability Modulo Theories (SMT) solver as a back-end engine. Our goal is to automatically translate a metamodel and its invariants into SMT formulas which can be investigated for satisfiability by an external SMT solver, with each satisfying assignment for SMT formulas interpreted as an instance of the original metamodel. Our automated translation works by interpreting a metamodel as a bounded Attributed Type Graph with Inheritance (ATGI) and then deriving a finite universe of all bounded attribute graphs typed over this bounded ATGI. The graph acts as an intermediate representation which we then translate into SMT formulas. The full translation process, from metamodels to SMT formulas, and then from SMT instances back to metamodel instances, has been successfully automated in our tool, with the results showing the feasibility of this approach.
Hao Wu 0017, Rosemary Monahan, James F. Power
TASE3
2012 A testing strategy for abstract classes
abstract
SUMMARY One of the characteristics of the increasingly widespread use of object‐oriented libraries and the resulting intensive use of inheritance is the proliferation of dependencies on abstract classes. Since abstract classes cannot be instantiated, they cannot be tested in isolation using standard execution‐based testing strategies. A standard approach to testing abstract classes is to instantiate a concrete descendant class and test the features that are inherited. This paper presents a structured approach that supports the testing of features in abstract classes, paying particular attention to ensuring that the features tested are those defined in the abstract class. Two empirical studies are performed on a suite of large Java programs and the results presented. The first study analyses the role of abstract classes from a testing perspective. The second study investigates the impact of the testing strategy on the programs in this suite to demonstrate its feasibility and to comment on the pragmatics of its use. Copyright © 2010 John Wiley & Sons, Ltd.
Peter J. Clarke, James F. Power, Djuradj Babich, Tariq M. King
Softw. Test. Verification Reliab.2
2011 Teaching discrete structures: a systematic review of the literature
abstract
This survey paper reviews a large sample of publications on the teaching of discrete structures and discrete mathematics in computer science curricula. The approach is systematic, in that a structured search of electronic resources has been conducted, and the results are presented and quantitatively analyzed. A number of broad themes in discrete structures education are identified relating to course content, teaching strategies and the means of evaluating the success of a course.
James F. Power, Thomas Whelan, Susan Bergin
SIGCSE1
2009 PPPJ special issue-Foreword
Markus Aleksy, Vasco Amaral 0001, Ralf Gitzel, James F. Power, John Waldron
Sci. Comput. Program.4
2008 A Metamodel for the Measurement of Object-Oriented Systems: An Analysis using Alloy
abstract
This paper presents a MOF-compliant metamodel for calculating software metrics and demonstrates how it is used to generate a metrics tool that calculates coupling and cohesion metrics. We also describe a systematic approach to the analysis of MOF-compliant metamodels and illustrate the approach using the presented metamodel. In this approach, we express the metamodel using UML and OCL and harness existing automated tools in a framework that generates a Java implementation and an Alloy specification of the metamodel, and use this both to examine the metamodel constraints, and to generate instantiations of the metamodel. Moreover, we describe how the approach can be used to generate test data for any software based on a MOF-compliant metamodel. We extend our framework to support this approach and use it to generate a test suite for the metrics calculation tool that is based on our metamodel.
Jacqueline A. Keane, James F. Power
ICST2
2008 Analysing the effectiveness of rule-coverage as a reduction criterion for test suites of grammar-based software
Mark Hennessy, James F. Power
Empir. Softw. Eng.2
2008 PPPJ 2006 special issue - foreword
Markus Aleksy, Ralf Gitzel, John Waldron, James F. Power
Sci. Comput. Program.4
2007 Intra-Class Testing of Abstract Class Features
abstract
One of the characteristics of the increasingly widespread use of object-oriented libraries and the resulting intensive use of inheritance is the proliferation of dependencies on abstract classes. Such classes defer the implementation of some features, and are typically used as a specification or design tool. However, since their features are not fully implemented, abstract classes cannot be instantiated, and thus pose challenges for execution-based testing strategies. This paper presents a structured approach that supports the testing of features in abstract classes. Core to the approach is a series of static analysis steps that build a comprehensive view of the inter-class dependencies in the system under test. We then leveraged this information to define a test order for the methods in an abstract class that minimizes the number of stubs required during testing, and clearly identifies the required functionality of these stubs. Our approach is based on a comprehensive taxonomy of object-oriented classes that provides a framework for our analysis. First we describe the algorithms to calculate the inter-class dependencies and the test-order that minimizes stub creation. Then we give an overview of our tool, AbstractTestJ that implements our approach by generating a test order for the methods in an abstract Java class. Finally, we harness this tool to provide an analysis of 12 substantial Java applications that demonstrates both the feasibility of our approach and the importance of this technique.
Peter J. Clarke, Djuradj Babich, Tariq M. King, James F. Power
ISSRE4
2007 REM4j - A Framework for Measuring the Reverse Engineering Capability of UML CASE Tools
Steven Kearney, James F. Power
SEKE2
2007 An infrastructure to support interoperability in reverse engineering
Nicholas A. Kraft, Brian A. Malloy, James F. Power
Inf. Softw. Technol.3
2007 A tool chain for reverse engineering C++ applications
Nicholas A. Kraft, Brian A. Malloy, James F. Power
Sci. Comput. Program.3
2006 A study of the influence of coverage on the relationship between static and dynamic coupling metrics
Áine Mitchell, James F. Power
Sci. Comput. Program.2
2006 Exploiting design patterns to automate validation of class invariants
abstract
Abstract In this paper, techniques are presented that exploit two design patterns, the Visitor pattern and the Decorator pattern, to validate invariants about the data attributes in a C++ class automatically. To investigate the pragmatics involved in using the two patterns, a study of an existing, well‐tested application, keystone, a parser and front‐end for the C++ language, is presented. Results from the study indicate that these two patterns provide flexibility in terms of the frequency and level of granularity of validation of the class invariants, which are expressed in the Object Constraint Language (OCL). The quantitative results measure the impact of these approaches and the additional faults uncovered through validation of the case study. Copyright © 2005 John Wiley & Sons, Ltd.
Brian A. Malloy, James F. Power
Softw. Test. Verification Reliab.2
2005 An analysis of rule coverage as a criterion in generating minimal test suites for grammar-based software
abstract
The term grammar-based software describes software whose input can be specified by a context-free grammar. This grammar may occur explicitly in the software, in the form of an input specification to a parser generator, or implicitly, in the form of a hand-written parser, or other input-verification routines. Grammar-based software includes not only programming language compilers, but also tools for program analysis, reverse engineering, software metrics and documentation generation. Such tools often play a crucial role in automated software development, and ensuring their completeness and correctness is a vital prerequisite for their us.In this paper we propose a strategy for the construction of test suites for grammar based software, and illustrate this strategy using the ISO CPP grammar. We use the concept of rule coverage as a pivot for the reduction of implementation-based and specification-based test suites, and demonstrate a significant decrease in the size of these suites. To demonstrate the validity of the approach, we use the reduced test suite to analyze three grammar-based tools for CPP++. We compare the effectiveness of the reduced test suite with the original suite in terms of code coverage and fault detection.
Mark Hennessy, James F. Power
ASE2
2005 Using a Molecular Metaphor to Facilitate Comprehension of 3D Object Diagrams
abstract
This paper presents a strategy for the visualization of dynamic object relationships in Java programs. The metaphor of a chemical molecule is used to aid comprehension, and to help in reducing the size of the object graph. Our strategy has been implemented by dynamically instrumenting Java bytecode to collect trace data, which is then analyzed and visualized in 3D using VRML. Quantitative and graphical results are presented, based on an analysis of programs in the SPEC JVM98 and JOlden benchmark suites.
Brian A. Malloy, James F. Power
VL/HCC2
2005 A method-level comparison of the Java Grande and SPEC JVM98 benchmark suites
abstract
Abstract In this paper 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 investigate the profiles of Java programs from a number of perspectives, including the use of class library methods, the size of methods called, the mode of invoke instruction used and the polymorphicity of call sites. We also present a categorization of the nature of small methods used in Java programs. We compare the Java Grande and SPEC JVM98 benchmark suites, and note a significant difference in the nature and composition of these suites, with the programs from the Java Grande suite demonstrating a less object‐oriented approach. Copyright © 2005 John Wiley & Sons, Ltd.
David Gregg, James F. Power, John Waldron
Concurr. Pract. Exp.2
2005 Editorial
James F. Power, John Waldron
Sci. Comput. Program.1
2004 A metrics suite for grammar-based software
abstract
Abstract One approach to measuring and managing the complexity of software, as it evolves over time, is to exploit software metrics. Metrics have been used to estimate the complexity of the maintenance effort, to facilitate change impact analysis, and as an indicator for automatic detection of a transformation that can improve the quality of a system. However, there has been little effort directed at applying software metrics to the maintenance of grammar‐based software applications, such as compilers, editors, program comprehension tools and embedded systems. In this paper, we adapt the software metrics that are commonly used to measure program complexity and apply them to the measurement of the complexity of grammar‐based software applications. Since the behaviour of a grammar‐based application is typically choreographed by the grammar rules, the measure of complexity that our metrics provide can guide maintainers in locating problematic areas in grammar‐based applications. Copyright © 2004 John Wiley & Sons, Ltd.
James F. Power, Brian A. Malloy
J. Softw. Maintenance Res. Pract.1
2003 Platform independent dynamic Java virtual machine analysis: the Java Grande Forum benchmark suite
abstract
Abstract 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. Copyright © 2003 John Wiley & Sons, Ltd.
David Gregg, James F. Power, John Waldron
Concurr. Comput. Pract. Exp.2
2003 Decorating tokens to facilitate recognition of ambiguous language constructs
abstract
Abstract 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. Copyright © 2002 John Wiley & Sons, Ltd.
Brian A. Malloy, Tanton H. Gibbs, James F. Power
Softw. Pract. Exp.3
2002 Automated Validation of Class Invariants in C ++ Applications
abstract
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++.
Tanton H. Gibbs, Brian A. Malloy, James F. Power
ASE3