Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where Tihomir Gvero is active.

Publication


Featured researches published by Tihomir Gvero.


international conference on software engineering | 2010

Test generation through programming in UDITA

Milos Gligoric; Tihomir Gvero; Vilas Jagannath; Sarfraz Khurshid; Viktor Kuncak; Darko Marinov

We present an approach for describing tests using non-deterministic test generation programs. To write such programs, we introduce UDITA, a Java-based language with non-deterministic choice operators and an interface for generating linked structures. We also describe new algorithms that generate concrete tests by efficiently exploring the space of all executions of non-deterministic UDITA programs. We implemented our approach and incorporated it into the official, publicly available repository of Java PathFinder (JPF), a popular tool for verifying Java programs. We evaluate our technique by generating tests for data structures, refactoring engines, and JPF itself. Our experiments show that test generation using UDITA is faster and leads to test descriptions that are easier to write than in previous frameworks. Moreover, the novel execution mechanism of UDITA is essential for making test generation feasible. Using UDITA, we have discovered a number of bugs in Eclipse, NetBeans, Sun javac, and JPF.


programming language design and implementation | 2013

Complete completion using types and weights

Tihomir Gvero; Viktor Kuncak; Ivan Kuraj; Ruzica Piskac

Developing modern software typically involves composing functionality from existing libraries. This task is difficult because libraries may expose many methods to the developer. To help developers in such scenarios, we present a technique that synthesizes and suggests valid expressions of a given type at a given program point. As the basis of our technique we use type inhabitation for lambda calculus terms in long normal form. We introduce a succinct representation for type judgements that merges types into equivalence classes to reduce the search space, then reconstructs any desired number of solutions on demand. Furthermore, we introduce a method to rank solutions based on weights derived from a corpus of code. We implemented the algorithm and deployed it as a plugin for the Eclipse IDE for Scala. We show that the techniques we incorporated greatly increase the effectiveness of the approach. Our evaluation benchmarks are code examples from programming practice; we make them available for future comparisons.


international symposium on software testing and analysis | 2010

On test repair using symbolic execution

Tihomir Gvero; Darko Marinov

When developers change a program, regression tests can fail not only due to faults in the program but also due to out-of-date test code that does not reflect the desired behavior of the program. When this occurs, it is necessary to repair test code such that the tests pass. Repairing tests manually is difficult and time consuming. We recently developed ReAssert, a tool that can automatically repair broken unit tests, but only if they lack complex control flow or operations on expected values. This paper introduces symbolic test repair, a technique based on symbolic execution, which can overcome some of ReAsserts limitations. We reproduce experiments from earlier work and find that symbolic test repair improves upon previously reported results both quantitatively and qualitatively. We also perform new experiments which confirm the benefits of symbolic test repair and also show surprising similarities in test failures for open-source Java and .NET programs. Our experiments use Pex, a powerful symbolic execution engine for .NET, and we find that Pex provides over half of the repairs possible from the theoretically ideal symbolic test repair.


computer aided verification | 2011

Interactive synthesis of code snippets

Tihomir Gvero; Viktor Kuncak; Ruzica Piskac

We describe a tool that applies theorem proving technology to synthesize code fragments that use given library functions. To determine candidate code fragments, our approach takes into account polymorphic type constraints as well as test cases. Our tool interactively displays a ranked list of suggested code fragments that are appropriate for the current program point. We have found our system to be useful for synthesizing code fragments for common programming tasks, and we believe it is a good platform for exploring software synthesis techniques.


conference on object oriented programming systems languages and applications | 2015

Synthesizing Java expressions from free-form queries

Tihomir Gvero; Viktor Kuncak

We present a new code assistance tool for integrated development environments. Our system accepts as input free-form queries containing a mixture of English and Java, and produces Java code expressions that take the query into account and respect syntax, types, and scoping rules of Java, as well as statistical usage patterns. In contrast to solutions based on code search, the results returned by our tool need not directly correspond to any previously seen code fragment. As part of our system we have constructed a probabilistic context free grammar for Java constructs and library invocations, as well as an algorithm that uses a customized natural language processing tool chain to extract information from free-form text queries. We present the results on a number of examples showing that our technique (1) often produces the expected code fragments, (2) tolerates much of the flexibility of natural language, and (3) can repair incorrect Java expressions that use, for example, the wrong syntax or missing arguments.


international conference on software engineering | 2015

Interactive synthesis using free-form queries

Tihomir Gvero; Viktor Kuncak

We present a new code assistance tool for integrated development environments. Our system accepts free-form queries allowing a mixture of English and Java as an input, and produces Java code fragments that take the query into account and respect syntax, types, and scoping rules of Java as well as statistical usage patterns. The returned results need not have the structure of any previously seen code fragment. As part of our system we have constructed a probabilistic context free grammar for Java constructs and library invocations, as well as an algorithm that uses a customized natural language processing tool chain to extract information from free-form text queries. The evaluation results show that our technique can tolerate much of the flexibility present in natural language, and can also be used to repair incorrect Java expressions that contain useful information about the developers intent. Our demo video is available at http://youtu.be/tx4-XgAZkKU.


international conference on software engineering | 2008

State extensions for java pathfinder

Tihomir Gvero; Milos Gligoric; Steven Lauterburg; Marcelo d'Amorim; Darko Marinov; Sarfraz Khurshid

Java PathFinder (JPF) is an explicit-state model checker for Java programs. JPF implements a backtrackable Java Virtual Machine (JVM) that provides non-deterministic choices and control over thread scheduling. JPF is itself implemented in Java and runs on top of a host JVM. JPF represents the JVM state of the program being checked and performs three main operations on this state representation: bytecode execution, state backtracking, and state comparison. This paper summarizes four extensions that we have developed to the JPF state representation and operations. One extension provides a new functionality to JPF, and three extensions improve performance of JPF in various scenarios. Some of our code has already been included in publicly available JPF.


international conference on software testing, verification, and validation | 2009

Optimizing Generation of Object Graphs in Java PathFinder

Milos Gligoric; Tihomir Gvero; Steven Lauterburg; Darko Marinov; Sarfraz Khurshid


international conference on software engineering | 2011

ReAssert: a tool for repairing broken unit tests

Danny Dig; Tihomir Gvero; Vilas Jagannath; Johnston Jiaa; Damion Mitchell; Jurand Nogiec; Shin Hwei Tan; Darko Marinov


Archive | 2011

Code Completion using Quantitative Type Inhabitation

Tihomir Gvero; Viktor Kuncak; Ruzica Piskac

Collaboration


Dive into the Tihomir Gvero's collaboration.

Top Co-Authors

Avatar

Viktor Kuncak

École Polytechnique Fédérale de Lausanne

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Ivan Kuraj

Massachusetts Institute of Technology

View shared research outputs
Top Co-Authors

Avatar

Milos Gligoric

University of Texas at Austin

View shared research outputs
Top Co-Authors

Avatar

Sarfraz Khurshid

University of Texas at Austin

View shared research outputs
Top Co-Authors

Avatar

Danny Dig

Oregon State University

View shared research outputs
Top Co-Authors

Avatar

Marcelo d'Amorim

Federal University of Pernambuco

View shared research outputs
Researchain Logo
Decentralizing Knowledge