Network


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

Hotspot


Dive into the research topics where Josep Silva is active.

Publication


Featured researches published by Josep Silva.


ACM Computing Surveys | 2012

A vocabulary of program slicing-based techniques

Josep Silva

This article surveys previous work on program slicing-based techniques. For each technique, we describe its features, its main applications, and a common example of slicing using such a technique. After discussing each technique separately, all of them are compared in order to clarify and establish the relations between them. This comparison gives rise to a classification of techniques which can help to guide future research directions in this field.


logic based program synthesis and transformation | 2006

A comparative study of algorithmic debugging strategies

Josep Silva

Algorithmic debugging is a debugging technique that has been extended to practically all programming paradigms. It is based on the answers of the programmer to a series of questions generated automatically by the algorithmic debugger. Therefore, the performance of the technique is strongly dependent on the number and the complexity of these questions. In this work we overview and compare current strategies for algorithmic debugging and we introduce some new strategies and discuss their advantages over previous approaches.


international conference on software maintenance | 2010

An algorithmic debugger for Java

David Insa; Josep Silva

This work presents DDJ, an algorithmic debugger for Java. The main advantage of DDJ with respect to previous algorithmic debuggers is its scalability. DDJ has a new architecture based on the use of cache memories that allows it to scale both in time and memory. In addition, it includes new techniques that allow the debugger to start the debugging session even before the execution tree has been produced. We present the new architecture, and describe the main features of this debugger together with a usage scenario.


Advances in Engineering Software | 2011

A survey on algorithmic debugging strategies

Josep Silva

Algorithmic debugging is a debugging technique that has been extended to practically all programming paradigms. Roughly speaking, the technique constructs an internal representation of all (sub)computations performed during the execution of a buggy program; and then, it asks the programmer about the correctness of such computations. The answers of the programmer guide the search for the bug until it is isolated by discarding correct parts of the program. After twenty years of research in algorithmic debugging many different techniques have appeared to improve the original proposal. Surprisingly, no study exists that joins together all these techniques and compares their advantages and their performance. This article presents a study that compares all current algorithmic debugging techniques and analyzes their differences and their costs. The research identifies the dimensions on which each strategy relies. This information allows us to combine the strong points of different strategies.


partial evaluation and semantic-based program manipulation | 2004

Dynamic slicing based on redex trails

Claudio Ochoa; Josep Silva; Germán Vidal

Tracing computations is a widely used methodology for program debugging. Lazy languages, in particular, pose new demands on tracing techniques since following the actual trace of a computation is generally useless. Typically, they rely on the construction of a redex trail, a graph that describes the reductions of a computation and its relationships. While tracing provides a significant help for locating bugs, the task still remains complex. A well-known debugging technique for imperative programs is based on dynamic slicing, a method to find the program statements that influence the computation of a value for a specific program input.In this work, we introduce a novel technique for dynamic slicing in lazy functional logic languages. Rather than starting from scratch, our technique relies on (a slight extension of) redex trails. We provide a method to compute a correct and minimal dynamic slice from the redex trail of a computation. A clear advantage of our proposal is that one can enhance existing tracers with slicing capabilities with a modest implementation effort, since the same data structure (the redex trail) can be used for both tracing and slicing.


principles and practice of declarative programming | 2006

Combining algorithmic debugging and program slicing

Josep Silva; Olaf Chitil

Currently, program slicing and algorithmic debugging are two of the most relevant debugging techniques for declarative languages. They help programmers to find bugs in a semiautomatic manner. On the one hand, program slicing is a technique to extract those program fragments that (potentially) affect the values computed at some point of interest. On the other hand, algorithmic debugging is able to locate a bug by automatically generating a series of questions and processing the programmers answers. In this work, we show for functional languages how the combination of both techniques produces a more powerful debugging schema that reduces the number of questions that programmers must answer to locate a bug


Electronic Notes in Theoretical Computer Science | 2008

Dynamic Slicing Techniques for Petri Nets

Marisa Llorens; Javier Oliver; Josep Silva; Salvador Tamarit; Germán Vidal

Petri nets provide a means for modelling and verifying the behavior of concurrent systems. Program slicing is a well-known technique in imperative programming for extracting those statements of a program that may affect a given program point. In the context of Petri nets, computing a net slice can be seen as a graph reachability problem. In this paper, we propose two slicing techniques for Petri nets that can be useful to reduce the size of the considered net, thereby simplifying subsequent analysis and debugging tasks by standard Petri net techniques.


logic-based program synthesis and transformation | 2009

The MEB and CEB Static Analysis for CSP Specifications

Michael Leuschel; Marisa Llorens; Javier Oliver; Josep Silva; Salvador Tamarit

This work presents a static analysis technique based on program slicing for CSP specifications. Given a particular event in a CSP specification, our technique allows us to know what parts of the specification must necessarily be executed before this event, and what parts of the specification could be executed before it in some execution. Our technique is based on a new data structure which extends the Synchronized Control Flow Graph (SCFG). We show that this new data structure improves the SCFG by taking into account the context in which processes are called and, thus, makes the slicing process more precise.


The Journal of Logic and Algebraic Programming | 2013

Using the words/leafs ratio in the DOM tree for content extraction

David Insa; Josep Silva; Salvador Tamarit

This work has been partially supported by the Spanish Ministerio de Economia y Competitividad (Secretaria de Estado de Investigacion, Desarrollo e Innovacion) under Grant TIN2008-06622-C03-02 and by the Generalitat Valenciana under Grant PROMETEO/2011/052. Salvador Tamarit was partially supported by the Spanish MICINN under FPI Grant BES-2009-015019. David Insa was partially supported by the Spanish Ministerio de Eduacion under FPU Grant AP2010-4415.


logic based program synthesis and transformation | 2004

Run-time profiling of functional logic programs

Bernd Brassel; Michael Hanus; Frank Huch; Josep Silva; Germán Vidal

In this work, we introduce a profiling scheme for modern functional logic languages covering notions like laziness, sharing, and non-determinism. Firstly, we instrument a natural (big-step) semantics in order to associate a symbolic cost to each basic operation (e.g., variable updates, function unfoldings, case evaluations). While this cost semantics provides a formal basis to analyze the cost of a computation, the implementation of a cost-augmented interpreter based on it would introduce a huge overhead. Therefore, we also introduce a sound transformation that instruments a program such that its execution—under the standard semantics—yields not only the corresponding results but also the associated costs. Finally, we describe a prototype implementation of a profiler based on the developments in this paper.

Collaboration


Dive into the Josep Silva's collaboration.

Top Co-Authors

Avatar

David Insa

Polytechnic University of Valencia

View shared research outputs
Top Co-Authors

Avatar

Salvador Tamarit

Polytechnic University of Valencia

View shared research outputs
Top Co-Authors

Avatar

Germán Vidal

Polytechnic University of Valencia

View shared research outputs
Top Co-Authors

Avatar

Javier Oliver

Polytechnic University of Catalonia

View shared research outputs
Top Co-Authors

Avatar

Marisa Llorens

Polytechnic University of Valencia

View shared research outputs
Top Co-Authors

Avatar

Claudio Ochoa

Technical University of Madrid

View shared research outputs
Top Co-Authors

Avatar

Julián Alarte

Polytechnic University of Valencia

View shared research outputs
Top Co-Authors

Avatar

Gustavo Arroyo

Polytechnic University of Valencia

View shared research outputs
Top Co-Authors

Avatar

Isidro Ramos

Polytechnic University of Valencia

View shared research outputs
Top Co-Authors

Avatar

Jorge Belenguer

Polytechnic University of Valencia

View shared research outputs
Researchain Logo
Decentralizing Knowledge