Alex Groce

Assistant Professor
Computer Science
Education: 

Ph.D., Computer Science, Carnegie Mellon University, March 2005
B.S., Computer Science, North Carolina State University, May 1999 (summa cum laude)
B.S., Multidisciplinary Studies, North Carolina State University, May 1999 (summa cum laude)

Biography: 

Alex Groce received his PhD in Computer Science from Carnegie Mellon University in 2005, and B.S. degrees in Computer Science and Multidisciplinary Studies (with a focus on English literature) from North Carolina State University in 1999. Before joining the Oregon State University faculty in 2009, he was a core member of the Laboratory for Reliable Software at NASA’s Jet Propulsion Laboratory, and taught classes on Software Testing at the California Institute of Technology. His activities at JPL included a role as lead developer and designer for test automation for the Mars Science Laboratory mission's internal flight software test team, and lead roles in testing file systems for space missions.

His research interests are in software engineering, particularly testing, model checking, code analysis, debugging, and error explanation. He focuses on software engineering from an "investigative" viewpoint, with an emphasis on the execution traces that programs produce — software engineering as the art and science of building programs with a desired set of executions.

Research Interests: 

My general research interest is in software engineering: designing, specifying, implementing, testing, analyzing, verifying, understanding, and debugging software written in widely used programming languages, such as ANSI C and Java. My focus is on approaches and methods that naturally give rise to (semi-)automated tools for programmers, testers, and other software engineers — including end users when they must act as software engineers! The power of computer science is in automation — from design to testing, we need better tools to help us write better programs.

My work to date has usually involved some variety of model checking, but the specifics have varied from full exploration of highly abstracted systems (with MAGIC) to methods more akin to an unusual approach to testing (heuristics with JPF, model-driven verification of C programs with SPIN). Years of frustration when attempting to understand counterexamples produced by model checkers have convinced me that error explanation and fault localization are important (and interesting) topics, and my thesis work was an investigation of how a model checker can be used not only to find an error, but to explain and localize that error. I made use of distance metrics on program executions to find causes for errors, in a manner inspired by the counterfactual theory of causality proposed by David Lewis.

More recently, at JPL, I became interested in the connections between model checking and (randomized) testing -- including using the same models and tools for both, reusing simulation infrastructure, and hybrid approaches such as randomized testing with the complete nondeterminism of model checking. More "frivolously" I have also become fascinated by the taxonomy and nature of actual bugs in programs, particularly file systems.

I see model checking and testing primarily as useful tools for program understanding — the investigative side of software engineering, if you will. Model checking traditionally answers the question: does my (program, protocol, design) have a trace like this? Testing, in a sense, answers the same question. Even at the earliest stages of software design, thinking about how to make answering that question easier not only eventually aids verification, but helps us think about how a program will actually execute. One interesting possibility to consider is the use of model checking and other state-space exploration methods to help visualize the executions of a program. Recent work at IBM has shown the value of visualizing memory configurations of large systems; it seems that program trace-spaces would also be useful in software engineering and performance debugging.

More specific current topics of interest:

  • A “grand unified approach” to full coverage efficient test suite generation, combining random testing or model checking and constraint-based directed testing
  • Effective testing for machine-learned software, where subject experts (including YOU, the expert on classifying your email and your movie preferences) rather than software engineers or machine learning experts must test the code
  • New approaches to test case generation, based on machine learning techniques
  • Fundamental empirical research into properties of test coverage metrics on very large test suites produced by systematic methods
2011
, , , 09/2011.
Shinsel, A., T. Kulesza, M. M. Burnett, W. Curran, A. Groce, S. Stumpf, and W. - K. Wong, "Mini-crowdsourcing end-user assessment of intelligent assistants: A cost-benefit study", 2011 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC), Pittsburgh, PA, IEEE, pp. 47 - 54, 09/2011. Abstract
, , , 06/2011.
Kulesza, T., M. M. Burnett, S. Stumpf, W. - K. Wong, S. Das, A. Groce, A. Shinsel, F. Bice, and K. McIntosh, "Where are my intelligent assistant's mistakes? a systematic testing approach", Proceedings of the Third international conference on End-user development, Berlin, Heidelberg, Springer-Verlag, pp. 171–186, 06/2011. Abstract
2010
Groce, A., K. Havelund, and M. Smith, "From Scripts to Specifications: the Evolution of a Flight Software Testing Effort", ACM/IEEE International Conference on Software Engineering, Cape Town, South Africa, pp. 129–138, 05/2010. Abstract
2009
Groce, A., "(Quickly) Testing the Tester via Path Coverage", Workshop on Dynamic Analysis, Chicago, Illinois, 07/2009. Abstract
2008
Holzmann, G. J., R. Joshi, and A. Groce, "Model driven code checking", Automated Software Engineering, Special Issue on Trends in Automated Software Engineering, vol. 15, issue 3-4, pp. 283 - 297, 12/2008. Abstract
Andrews, J., A. Groce, M. Weston, and R. - G. Xu, "Random Test Run Length and Effectiveness", IEEE/ACM International Conference on Automated Software Engineering, L’Aquila, Italy, 09/2008. Abstract
Holzmann, G. J., R. Joshi, and A. Groce, "Swarm Verification", Conference on Automated Software Engineering (ASE), L'Aquila, Italy, pp. 1--6, 09/2008.
Holzmann, G. J., R. Joshi, and A. Groce, "Model Checking Software Tackling Large Verification Problems with the Swarm Tool", SPIN Workshop on Model Checking of Software (SPIN), vol. 5156, Los Angeles, CA, Springer Berlin Heidelberg, pp. 134 - 143, 08/2008. Abstract
Groce, A., G. J. Holzmann, R. Joshi, and R. - G. Xu, "Putting Flight Software Through the Paces with Testing, Model Checking, and Constraint-Solving", In Workshop on Constraints in Formal Verification, Sydney, Australia, pp. 1--15, 08/2008. Abstract
Havelund, K., A. Groce, G. J. Holzmann, R. Joshi, and M. Smith, "Automated Testing of Planning Models", Workshop on Model Checking and Artificial Intelligence (MoChArt), Patras, Greece, 07/2008. Abstract
Groce, A., and R. Joshi, "Exploiting Traces in Static Program Analysis: Better Model Checking through printf{{\tt printf}}s", International Journal on Software Tools for Technology Transfer, vol. 10, issue 2, pp. 131-144, 03/2008. Abstract
Groce, A., and R. Joshi, "Extending Model Checking with Dynamic Analysis", Conference on Verification, Model Checking and Abstract Interpretation, San Francisco, California, pp. 142–156, 01/2008. Abstract
Groce, A., and R. Joshi, "Random Testing and Model Checking: Building a Common Framework for Nondeterministic Exploration", Workshop on Dynamic Analysis (WODA), Seattle, Washington, ACM Press, pp. 22-28, 2008. Abstract
2007
Groce, A., G. J. Holzmann, and R. Joshi, "Randomized Differential Testing as a Prelude to Formal Verification", ACM/IEEE International Conference on Software Engineering, Minneapolis, Minnesota, pp. 621–631, 05/2007. Abstract
Blanc, N., A. Groce, and D. Kroening, "Verifying C++ with STL containers via predicate abstraction", IEEE/ACM Conference on Automated Software Engineering (ASE), Atlanta, Georgia, ACM Press, pp. 521-524, 05/2007. Abstract
2006
Groce, A., D. A. Peled, and M. Yannakakis, "Adaptive Model Checking", Logic Journal of the IGPL, vol. 14, issue 5, pp. 729-744, 10/2006. Abstract
Holzmann, G. J., R. Joshi, and A. Groce, "New Challenges in Model Checking", Symposium on 25 Years of Model Checking, vol. 5000, Seattle, Washington, Springer Berlin Heidelberg, pp. 65 - 76, 08/2006. Abstract
Groce, A., S. Chaki, D. Kroening, and O. Strichman, "Error explanation with distance metrics", International Journal on Software Tools for Technology Transfer, vol. 8, issue 3, pp. 229 - 247, 06/2006. Abstract
Groce, A., and R. Joshi, "Exploiting traces in program analysis", Tools and Algorithms for the Construction and Analysis of Systems (TACAS), Vienna, Austria, Springer, pp. 379–393, 03/2006. Abstract
2004
Kroening, D., A. Groce, and E. Clarke, "Counterexample guided abstraction refinement via program execution", International Conference on Formal Engineering Methods (ICFEM), Seattle, Washington, Springer, pp. 224–238, 11/2004. Abstract
Chaki, S., A. Groce, and O. Strichman, "Explaining Abstract Counterexamples", ACM SIGSOFT International Symposium on the Foundations of Software Engineering, vol. 29, Newport Beach, California, pp. 73–82, 11/2004. Abstract
Chaki, S., E. Clarke, A. Groce, J. Ouaknine, O. Strichman, and K. Yorav, "Efficient Verification of Sequential and Concurrent C Programs", Formal Methods in System Design, Special Issue on Software Model Checking, vol. 25, issue 2-3, pp. 129 - 166, 09/2004. Abstract
Groce, A., and W. Visser, "Heuristics for model checking Java programs", International Journal on Software Tools for Technology Transfer, vol. 6, issue 4, pp. 260 - 276, 08/2004. Abstract