Research Projects




TaxTOOLJ: A Tool to Catalog Java Classes. Djuradj Babich, Kayan Chiu and Peter J. Clarke.

  • Abstract: We present the design and implementation of TaxTOOLJ, Taxonomy Tool for Object-Oriented Language Java. TaxTOOLJ is a reverse engineering tool that catalogs the classes of a Java software application using the taxonomy of object oriented classes. TaxTOOLJ is entirely implemented in Java, which makes it very reliable, portable, and maintainable. It represents a scalable tool that performs efficiently during introspection of large scale Java applications and enables support for program understanding, software metrics, testing.

    A Prediction Model for the Combination of Class Characteristics in Large OO Applications. Peter J. Clarke, Djuradj Babich, Tariq M. King and B.M. Golam Kibria.

  • Abstract: In this paper we present the first study that investigates how the characteristics of a class are combined, thereby providing feedback on how the features provided by Java 1.4.x or earlier and Java 1.5.x or earlier are currently used. The study uses a taxonomy of OO classes that provides a mechanism to catalog any class written in Java into one of a finite set of groups. A detailed description on how we enumerated all the possible groups of Java classes is also provided. Using TaxTOOLJ (a Taxonomy Tool for the Object-Oriented Language Java) we cataloged over 155k classes from a cross-section of Java applications written in Java 1.4.x and Java 1.5.x to identify the distribution of groups used by developers. We use the data from the study to create prediction models that would allow developers to estimate the number of different groups of classes, fields and methods that are expected to be generated for large Java applications. This knowledge would be of significant benefit to aid developers in testing and maintenance activities during the software process.


  • A Taxonomy of Java Classes to Support Testing. David Crowther, Djuradj Babich, and Peter J. Clarke.

  • Abstract: In this paper, we describe a class abstraction technique (CAT) for the Java programming language that supports the testing process by capturing aspects of software complexity based on the combination of class characteristics. These class characteristics relate to properties of the class features such as concurrency, polymorphism, exception handling, and accessibility as well as relationships between classes. Our taxonomy (CAT) for Java allows us to generate a finite number of possible class groups (taxa). We also provide a high-level design for a tool to catalog classes based on our taxonomy.


  • Automatically Mapping Testing Techniques to Classes. Peter J. Clarke, Brian A. Malloy, Junhua Ding, and Djuradj Babich.

  • Abstract: The object-oriented (OO) paradigm provides several benefits during analysis and design of large-scale software systems, but scores lower in terms of testability when compared to systems developed using the procedural approach. The low testability score for OO software is due mainly to the composition of OO systems exhibiting the characteristics of abstraction, encapsulation, genericity, inheritance, polymorphism, concurrency and exception handling. To address the difficulty of testing the features of a class, a plethora of implementation-based testing techniques (IBTTs) have been developed. However, no one IBTT has emerged as the preferred technique to test the implementation of a class. In this paper we present a technique that automatically identify those IBTTs that are most suitable for testing a class based on the characteristics of that class. Our approach uses a taxonomy of OO classes that is used to succinctly abstract the characteristics of a class under test (CUT). We have implemented a tool that automates the process of mapping IBTTs to a class. In addition to identifying the IBTTs that would be best suited for testing a class, our tool provides feedback to the tester facilitating the identification of the characteristics of the class that are not suitably tested by any of the IBTTs in the list. We provide results that illustrate the importance of the technique and the tool on several benchmark programs.


  • CEN5991 File System Project: DualFS

  • Abstract: In recent years, with the rise of high performance computing environments, there has been a need for well designed file systems with high consistency recovery. As such, meta-data management has become one of the most important issues to be taken into account in the design of a file system. The objective of this project is to introduce a new high performance journaling file system, DualFS, aimed at providing both good performance and fast consistency system recovery. Like other journaling file systems, DualFS uses a meta-data log approach for fast consistency recovery, but from a quite different point of view. Unlike traditional file systems, DualFS manages completely separated data blocks and meta-data blocks in a very different way, giving a special treatment to meta-data. DualFS improves file systems' performance significantly, without requiring several storage devices.