wall4 seal

Dr. Zijiang James Yang
Associate Professor
Department of Computer Science
College of Engineering and Applied Science
Western Michigan University


Research Interests and Grants

My primary research interest is computer system reliability, which spans the spectrum from hardware design automation to software engineering. I am interested in all approaches leading to reliable hardware and software systems. I am particularly interested in model checking techniques to improve software reliability. You can find my publication here. Besides internal research grants from WMU, Dr. Yang's research is supported by the following federal and industrial grants.
  • Continuously Monitoring and Checking Software in the Era of Multicore Systems. Office of Naval Research (ONR). PI: Liqiang Wang (University of Wyoming), Co-PI: Zijiang Yang. $142,965. 4/10/2009-03/31/2011.
  • Trace-Driven Verification of Multithreaded Software. National Science Foundation(NSF) CCF-0811287. Lead-PI: Zijiang Yang, PI: Karem Sakallah (University of Michigan).$400,000. 09/01/2008-08/31/2011.
  • Sequential Software Verification. Phases I--V. NEC Labs America, Inc. PI: Zijiang Yang. $80,000. 09/01/2005-12/31/2008.

Trace-Driven Verification of Multithreaded Software

The ever increasing use of hyper-threading and the availability of inexpensive multiprocessor hardware present tremendous opportunities as well as serious challenges for software developers. In order for software applications to benefit from the continued exponential throughput advances in multicore processors, the applications must be well-written multithreaded software programs. Unfortunately, writing multithreaded software programs that can unleash the full potential of present and future hardware systems remains as challenging today as it was thirty years ago. This research aims to develop practical tools and methodologies that can bring down the complexity of testing/debugging multithreaded programs to a level comparable to that of testing/debugging sequential programs. To this end, existing debugging tools have to be enhanced with powerful reasoning engines that allow them to implicitly analyze all possible thread interleavings under the specified test inputs. During the course of this project a variety of approaches to achieve this objective will be investigated, including some novel ideas that seem particularly promising from a preliminary analysis: (1) efficient symbolic encoding of multithreaded programs, (2) trace-driven abstraction and refinement of their execution, and (3) performance enhancement techniques that allow this approach to scale to realistic program sizes.


Continuously Monitoring and Checking Software in the Era of Multicore Systems

Developing concurrent programs is difficult because concurrency introduces a whole new class of errors that do not
exist in sequential programs. The traditional testing and debugging techniques are inappropriate for concurrent programs, which may behave differently from one run to another, because threads are scheduled nondeterministically. Recent events ranging from failing robots on Mars, timeof-check-to-time-of-use security bugs, to the year 2003 blackout in northeastern United States, which were both caused by a kind of concurrency error called data race, provide evidence that classical software development processes are inadequate. To dramatically improve the reliability and security of complex concurrent software systems, we believe it is important to perform monitoring and analysis continuously even after such systems have been released, because the software distributed to a large body of clients
would be tested much more thoroughly in the field than by the vendor in a simulating environment. In order to achieve the goal, we will design innovative methodologies and develop practical tools to support self-checking software systems.

Binary Analysis

To be added.