Dave Binkley's Research Interests


Contents




Software Engineering and Testing

My present work on software engineering includes clone detection, and improving genetic algorithms for test-case generation. Code clones represents identical or nearly identical parts of a program. While their removal is not always advantageous, an understanding of the clones in a program is. This work has recently expanded to consider clones in visual languages such as Max/MSP. Random test-case generation can provide surprising coverage. However, the remaining parts of the code can be rather difficult to find test data for. Genetic algorithms are one promising approach to covering these hard-to-cover parts of the code. Genetic algorithms suffer from situation in which the local landscape provides little guidance. Thus my work with techniques for landscape improvement is aimed at improving test-case generation. The work below also includes older work on semantics-based SE tools, regression testing, largely conducted at NIST where we examined the influences of technology transfer of research ideas to industry.

Relevant Publications




Software Recommendation

My work on software recommendation aims to conceive novel software recommendation technology aimed at improving the construction of large software systems including software product families, which are some of the largest software systems ever constructed. The current work focuses on association rule mining, an unsupervised learning technique that infers relationships among items in a data set. Association rule mining is used to produce evolutionary coupling that can then be used to recommend files potentially missed by an engineer.

Relevant Publications




Semantics-based Software Engineering Tools including Information Retrieval in Software Engineering

The big picture view of my research program is a focus on improving software engineering tools through the use of program semantics. The growing base of installed legacy source code (large programs whose authors are often unknown), combined with the increased complexity of modern software, makes it increasingly important for a software engineer to have good tool support. Tools assist in the construction of new programs, the understanding and modification of existing programs, and the verification and validation of both. A tool that exploits the underlying semantics of a program is more likely to provide useful high-level information. Traditionally my research in this ares has focused on exploiting meaningful programming-language semantic information Interestingly, this work has recently broadened to incorporated natural-language semantics through the application of Information Retrieval (IR) inspired techniques. This is done by processing the text from the source code and other software artifacts using existing IR algorithms and newly developed IR-based algorithms.

Relevant Publications




Program Slicing and Clustering

The slice of a program with respect to a set of program elements S is a projection of the program that includes only program elements that might affect (either directly or transitively) the values of the variables used at members of S. Slicing allows one to find semantically meaningful decompositions of programs, where the decompositions consist of elements that are not textually contiguous. For example, slicing allows a tax computation to be extracted from a mortgage payment program. My present work on program slicing concentrates on the impact of dependence clusters and slicing techniques for Extended finite state machines (EFSMs), which are used in an increasing number of applications and tools. Clusters are set of statements that all mutually depend upon the others. Larger dependence clusters interfere with the work of programmers and tools. Thus a better understanding of the makeup of dependence clusters and even techniques for breaking them should improve programmer and tool performance. While it is possible to naively translate program slicing technique to EFSMs, better approaches more natively treat the features of the EFSM.

Relevant Publications




Software for Safety Critical Systems (NIST)

My interest in safety critical systems has focused on the use of tools for producing high integrity software and in particular tools for producing safe C++ software. High integrity software is software that can and must be trusted to work dependably in critical applications (e.g., software in safety systems of nuclear power plants, medical devices, electronic banking, air traffic control, automated manufacturing, and some business systems).

Relevant Publications




Publications

Journal Publications

Book Chapters

Conference Publications

Reprinted in Collections

Other Publications and Reports

Patents


Students



You are granted permission for the non-commercial reproduction, distribution, display, and performance of this technical report in any format, BUT this permission is only for a period of 45 (forty-five) days from the most recent time that you verified that this technical report is still available from the Computer Science Department at Loyola College Maryland under terms that include this permission. All other rights are reserved by the author(s) and copyright holders.