• Automated Software Compatibility Testing
    Modern software systems are typically composed of multiple components, each with multiple versions and developed by multiple vendors. Testing the compatibility of multi-component based systems on top of diverse field environments (or configurations) is very important to improve the quality of a system, and also to rationally manage the maintenance effort for the system. This project aims at investigating methods and tools to create an automated testing framework that supports software compatibility testing. To achieve the goal, I developed a process, a modeling scheme, algorithms and infrastructure that are to perform large-scale compatibility testing for evolving component-based systems. The experimental and simulation results conducted for two large scientific systems show that developed approach can detect incompatibilities between components effectively with reduced test efforts.

  • Automated Support for Launching High-Performance Computing Applications on Grid
    Launching High-Performance Computing (HPC) applications on Grid is a complex task and requires repet- itive and error-prone work from developers. To launch a complex HPC application, developers first dis- cover resources spread across machines on Grid, and then they need to allocate resources and also to handle input and output files. This project is to better understand the launching process and to provide a light-weight runtime environment to facilitate this process. I was responsible for developing the initial prototype of the system. To use the system, users specify high-level job descriptions in a simple XML format. The specification contains information on applications to launch and target resources for the appli- cations. Based on the description, the runtime system automatically refine the descriptions to contain all detailed information to launch the applications on the resources. Then, the system co-allocates resources, launches the applications and captures all the results back to the users.

  • InterComm: A Framework for Coupling Distributed Memory Parallel Components on Grid
    Many applications in scientific domains are designed to run on various resource types and also in parallel. However, the applications may use different types of parallel libraries and languages. Therefore, the ability to couple such applications is required in many emerging domains, such as complex simulations that model physical phenomena at multiple scales and resolutions by seamlessly coupling applications for such simulations. InterComm is a framework to couple parallel components in the presence of complex data distributions within a coupled application by providing efficient serialization and transfer of data maintained by multiple processes instantiated for the components. I participated in this project to develop modules that support the interaction between applications written in different programming languages.