Research Projects

Research Project 1: Automated Reproduction of System-Level Concurrency Bugs by Using the Default Consol Logs

Reproducing System-Level Concurrency failures is hard because (1) concurrency failures at the system level often involve multiple processes or event handlers (e.g., software signals), which cannot be handled by existing tools for reproducing intra-process (thread-level) failures; (2) detailed field data, such as user input, file content and interleaving schedule, may not be available to developers; and (3) the debugging environment may differ from the deployed environment, which further complicates failure reproduction. To address these problems, we develped automated teqniques to reproduce system-level concurrency bugs by using the default console logs of an application

Research Project 2: Automatically Reproduce System-Level Concurrency Bugs from Bug Reports

Besides input information, interleaving information is required to reproduce system-level concurrency bugs. Therefore, developers need to extract both of this information from bug reports which are mostly written in natural language. Due to the non-deterministic nature and the requirements for extra information to reproduce the system-level concurrency bugs, it is very difficult and sometimes impossible to reproduce these bugs manually from bug reports. Current bug reproduction tools are not compatible with this type of bug as we need to know the specific interleaving schedule operated at the system call level to reproduce these bugs

Research Project 3: Automated Localization of System-level Concurrency Bugs

Localizing concurrency faults that occur in production is hard because, (1) detailed field data, such as user input, file content and interleaving schedule, may not be available to developers to reproduce the failure; (2) it is often impractical to assume the availability of multiple failing executions to localize the faults using existing techniques; (3) it is challenging to search for buggy locations in an application given limited runtime data; and, (4) concurrency failures at the system level often involve multiple processes or event handlers (e.g., software signals), which cannot be handled by existing tools for diagnosing intra-process (thread-level) failures

Research Project 4: Extract Hidden Program Rules

Programs often follow implicit programming rules, such as, function call A must be followed by function call B. Nevertheless, programming rules play an important role in software testing and maintenance. For example, the rules can be used as test oracles to detect violations. If a programmer can be notified of these rules before updating the source code, the chances of generating defects due to rule violations might be minimized.

Research Project 5: Single Pass Approach for Web Access Sequential Pattern Mining

With the explosive growth of data availability on the World Wide Web, web usage mining becomes very essential for improving designs of websites, analyzing system performance as well as network communications, understanding user reaction, motivation and building adaptive websites. Web Access Pattern mining (WAP-mine) is a sequential pattern mining technique for discovering frequent web log access sequences. It first stores the frequent part of original web access sequence database on a prefix tree called WAP-tree and mines the frequent sequences from that tree according to a user given minimum support threshold. Therefore, this method is not applicable for incremental and interactive mining

Research Project 6: Towards an User Interactive Debugging Technique

Many Automated debug-ging techniques are developed and proposed by researchers. However, there is noresearch on the real-world usage of these techniques. To develop an user friendlydebugging technique we set up research questions for developers. The answers willshow the path to develop an user-interactive debugging technique.