University of Minnesota
Software Engineering Center
/

You are here

Sanjai Rayadurgam

Photo of Sanjai Rayadurgam
Director of the Software Engineering Center
Phone Number: 
612-625-0331
Office Location: 
6-202 Keller Hall
Education: 
B.Sc. in Mathematics, University of Madras, Chennai (1989)
M.E. in Computer Science and Engineering, Indian Institute of Science, Bengaluru (1993)
Ph.D. in Computer and Information Sciences, University of Minnesota, Minneapolis (2004)
Biography: 

Sanjai Rayadurgam is the director of the University of Minnesota Software Engineering Center and is a Research Project Specialist in the Department of Computer Science and Engineering. His research interests are in software testing, formal analysis and requirements modeling, with particular focus on safety-critical systems development. Prior to his work at the University of Minnesota, he worked at Boston Scientific, performing advanced tools development, systems engineering, and verification and validation of implantable cardiac device. He For his doctoral dissertation he developed techniques to automatically derive tests from behavioral models of software that could meet stringent coverage criteria. He has co-authored several research papers and articles in software engineering. He was a co-organizer of Dagstuhl seminar on Software and Systems Traceability for Safety-Critical Projects in 2015, was a program co-chair for the NASA Formal Methods Symposium in 2016 and is in the program committees of various workshops and conferences in software engineering.

Research: 
His recent research areas include contract-discovery and coverage techniques for black-box object-code components funded by a NSF grant, test generation and verification of plan executions for autonomy platforms funded by a NASA grant, testing techniques of learning enabled components for assuring autonomous systems funded under a DARPA project and model based fuzz testing funded under an ONR project.
Interests: 
Software Engineering, Formal Methods, Automated Testing, High Assurance Autonomy

Recent Publications

Contract discovery from black-box components

Complex computer-controlled systems are commonly constructed in a middle-out fashion where existing subsystems and available components have a significant influence on system architecture and drive design decisions. During system design, the architect must verify that the components, put together as specified in the architecture, will achieve the desired system behavior. This typically leads to further design modifications or adjustments to requirements triggering another iteration of the design-verify cycle.

Toward Rigorous Object-Code Coverage Criteria

Object-branch coverage (OBC) is often used as a measure of the thoroughness of tests suites, augmenting or substituting source-code based structural criteria such as branch coverage and modified condition/decision coverage (MC/DC). In addition, with the increasing use of third-party components for which source-code access may be unavailable, robust object-code coverage criteria are essential to assess how well the components are exercised during testing.

Discovering Instructions for Robust Binary-level Coverage Criteria

Object-Branch Coverage (OBC) is often used to measure e ective- ness of test suites, when source code is unavailable. The traditional OBC de nition can be made more resilient to variations in compil- ers and the structure of generated code by creating more robust de nitions. However nding which instructions should be included in each new de nition is laborious, error-prone, and architecture- dependent. We automate the discovery of instructions to be in- cluded for an improved OBC de nition on the X86 and ARM archi- tectures.

Pages