|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.
- 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.
To be added.