Josep Silva

dblp:27/409 · also Josep Silva Galiana · DBLP profile ↗
← Back
59ranked-venue papers
7as first author
16since 2021 · last 2026
0000-0001-5096-0008ORCID · corroborated

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 33 · 5 first-author · 9 since 2021Theory of computation · 19 · 2 first-author · 1 since 2021Databases, data management, data science and information retrieval · 7 · 1 first-author · 2 since 2021Applied, interdisciplinary, general and emerging computing · 7 · 1 first-author · 3 since 2021Human-computer interaction and ubiquitous computing · 6 · 2 since 2021Artificial intelligence and machine learning · 4 · 1 since 2021Systems, architecture and hardware · 2 · 1 since 2021
YearPublicationVenuePosition
2026 Unsupervised reviews section detection in heterogeneous e-commerce web pages via DOM structural clustering
abstract
Online stores often include a customer reviews section on their product web pages. These reviews contain valuable information for product sellers, who often want to collect the reviews of their products from as many pages as possible. This work presents a novel technique to automatically extract customer reviews from online stores. Unlike traditional scraping tools, the proposed technique operates on heterogeneous web pages without requiring prior knowledge of their structure or human intervention. By analysing the web page’s DOM tree, it identifies the reviews section, enabling the extraction of text-based comments as well as associated media content such as images and videos. The technique processes individual pages in real time, making it suitable for dynamic browsing scenarios, and has been empirically evaluated on diverse real-world web pages, demonstrating its robustness and versatility. This evaluation shows that the technique achieves an average F1 score of 91.54% and reaches 100% in 82.6% of the web pages.
Julián Alarte, Carlos Galindo 0002, Carlos Martín-Abellán, Josep Silva
J. Log. Algebraic Methods Program.4
2025 Undecidability of Context-Sensitive Field-Insensitive Analyses
abstract
Data-dependence analyses (DDA) and data-flow analyses (DFA) are essential software engineering processes automatically carried out in compilers, debuggers, and, in general, in most program analyses for termination, parallelization, optimization, etc. The question "For which classes of programs DDA and DFA are decidable?" remains unanswered, even though it is of fundamental importance because it can pose limits to the algorithms that try to solve the DDA/DFA problem. It is a well-known result that DDA/DFA is undecidable for non-terminating programs. In 2000, Thomas Reps took a big step forward. He proved the undecidability of one specific DDA for programs with recursive functions and composite data structures, and he explained the important implications of that result. It was a big step in the path to prove the undecidability of other analyses. This paper uses Reps’ results to prove that DDA and DFA are also undecidable for programs without composite data structures.
Carlos Galindo 0002, Carlos Martín-Abellán, Josep Silva
SMC3
2025 The expression dependence graph
abstract
The system dependence graph (SDG) is a widely used program representation for the static analysis of programs. In particular, it is the standard way to represent control and flow dependences between the statements of a program. It is at the core of program slicing, a technique that extracts the part of a program that can influence a given program point (the so-called slicing criterion). In this paper, we identify several program slicing situations (e.g., list comprehensions, try-catch and for ) where the representation provided by the SDG is imprecise, and we present an alternative program representation, which is indeed an extension of the SDG, that solves these situations. We call this extension the expression dependence graph (EDG). The EDG redefines the SDG by increasing the granularity of its nodes to abstract syntax tree (AST) nodes. The implications of this change include an improvement in precision, the appearance of new kinds of dependences (besides control and flow dependences), and the possibility of selecting any (sub)expression as the slicing criterion.
Carlos Galindo 0002, Sergio Pérez 0001, Josep Silva
J. Log. Algebraic Methods Program.3
2024 RevEx: An Online Consumer Reviews Extraction Tool
abstract
This paper presents RevEx, an online consumer reviews extraction tool. RevEx extracts the comments section for products in webshops. In contrast to other web scraping tools, it can work with heterogeneous web pages automatically, that is, it does not need any additional information apart from the web page itself. In addition, RevEx is a page-level tool since it only needs to load the web page whose comments have to be extracted. The technique includes a mechanism to group similar DOM nodes and then, once several sets of similar DOM nodes are obtained, an algorithm selects the group of DOM nodes that corresponds to the comments of the web page. The results of the empirical evaluation show an average F1 higher than 88%, and perfect results for around 75% of web pages.
Julián Alarte, Carlos Galindo 0002, Carlos Martín, Josep Silva
CIKM4
2024 Programming Contests as Complementary Activities in University Programming Courses
Julián Alarte, Carlos Galindo 0002, Josep Silva
CSEDU (2)3
2024 DOM-Based Online Store Comments Extraction
Julián Alarte, Carlos Galindo 0002, Carlos Martín, Josep Silva
WEBIST4
2024 Field-sensitive program slicing
Carlos Galindo 0002, Jens Krinke, Sergio Pérez 0001, Josep Silva
J. Syst. Softw.4
2023 Slicing Shared-Memory Concurrent Programs The Threaded System Dependence Graph Revisited
abstract
Program slicing is a program analysis technique to identify the parts of a program that can influence the values computed at a given program point. Its application to concurrent programs with shared memory revealed a new program dependence between threads called interference and uncovered some problems associated with concurrent executions such as time travel. To solve these problems, a new program representation for slicing concurrent programs was proposed: the threaded System Dependence Graph (tSDG), which aimed at solving the time travel problem and to provide context-sensitive slices for concurrent programs. In this paper, we show that the problem remains unsolved because the tSDG is not context-sensitive in some situations. We give a counterexample for the tSDG and identify situations where the tSDG is imprecise, generating context-insensitive slices for concurrent programs. To solve these imprecisions, we redesign the tSDG to become context-sensitive in those situations, solving the inaccuracy problem and preserving the solution to time travel. The new program representation is always as precise as the previous tSDG, and sometimes it is more precise. That is, the slices computed with the new graph are always smaller or equal than those computed with the previous tSDG.
Carlos Galindo 0002, Marisa Llorens, Sergio Pérez 0001, Josep Silva
ICSME4
2023 Program slicing of Java programs
abstract
Program slicing is a technique to extract the part of the program that can affect the values computed at a given program point (known as the slicing criterion). To represent programs, program slicing uses the System Dependence Graph (SDG), for which several extensions like the Java System Dependence Graph (JSysDG) or the Sub-Statement Linear Dependence Graph (SSLDG) exist to deal with Java object-oriented programs. In this paper, we present an incompleteness result proving that these graphs do not produce complete slices in all cases, and specifically when some object variables are selected as the slicing criterion. We first identify the source of the problem: the representation of dependences between partial definitions of objects is ill-defined in these approaches, leading to a loss of completeness in many cases. To solve this limitation, we extend these representations with the addition of a specific flow dependence for object type variables called object-flow dependence. This extension provides a more accurate flow representation between object variables and its data members and it allows us to obtain complete slices when an object variable is selected as the slicing criterion.
Carlos Galindo 0002, Sergio Pérez 0001, Josep Silva
J. Log. Algebraic Methods Program.3
2023 Exception-sensitive program slicing
abstract
Program slicing is a technique for program analysis and transformation with many different applications such as program debugging, program specialisation, and parallelisation. The system dependence graph (SDG), the most commonly used data structure for program slicing, has been extended in several ways to manage exception handling constructs. In this paper, however, we show that the presence of exception-handling constructs can make even the extended SDG produce incorrect and incomplete slices. To solve this situation, we survey the current state of the art and merge and extend different approaches (that treat throws, try-catch, etc.) to produce a version of the SDG that is able to manage all of them, that always produces complete slices, and that increases its precision keeping the same time complexity. An interesting side result is the discovering of a new kind of control dependence: conditional control dependence, which is needed to properly represent catch statements.
Carlos Galindo 0002, Sergio Pérez 0001, Josep Silva
J. Log. Algebraic Methods Program.3
2022 Program Slicing Techniques with Support for Unconditional Jumps
Carlos Galindo 0002, Sergio Pérez 0001, Josep Silva
ICFEM3
2022 Field-Sensitive Program Slicing
Carlos Galindo 0002, Jens Krinke, Sergio Pérez 0001, Josep Silva
SEFM4
2022 A Program Slicer for Java (Tool Paper)
Carlos Galindo 0002, Sergio Pérez 0001, Josep Silva
SEFM3
2022 Maximal and Minimal Dynamic Petri Net Slicing
abstract
Context: Petri net slicing is a technique to reduce the size of a Petri net to ease the analysis or understanding of the original Petri net. Objective: Presenting two new Petri net slicing algorithms to isolate those places and transitions of a Petri net (the slice) that may contribute tokens to one or more places given (the slicing criterion). Method: The two algorithms proposed are formalized. The maximality of the first algorithm and the minimality of the second algorithm are formally proven. Both algorithms, together with three other state-of-the-art algorithms, have been implemented and integrated into a single tool so that we have been able to carry out a fair empirical evaluation. Results: Besides the two new Petri net slicing algorithms, a public, free, and open-source implementation of five algorithms is reported. The results of an empirical evaluation of the new algorithms and the slices they produce are also presented. Conclusions: The first algorithm collects all places and transitions that may contribute tokens (in any computation) to the slicing criterion, while the second algorithm collects the places and transitions needed to fire the shortest transition sequence that contributes tokens to some place in the slicing criterion. Therefore, the net computed by the first algorithm can reproduce any computation that contributes tokens to any place of interest. In contrast, the second algorithm loses this possibility, but it often produces a much more reduced subnet (which still can reproduce some computations that contribute tokens to some places of interest). The first algorithm is proven maximal, and the second one is proven minimal.
Marisa Llorens, J. Oliver, Josep Silva, Salvador Tamarit
Fundam. Informaticae3
2021 Page-Level Main Content Extraction From Heterogeneous Webpages
abstract
The main content of a webpage is often surrounded by other boilerplate elements related to the template, such as menus, advertisements, copyright notices, and comments. For crawlers and indexers, isolating the main content from the template and other noisy information is an essential task, because processing and storing noisy information produce a waste of resources such as bandwidth, storage space, and computing time. Besides, the detection and extraction of the main content is useful in different areas, such as data mining, web summarization, and content adaptation to low resolutions. This work introduces a new technique for main content extraction. In contrast to most techniques, this technique not only extracts text, but also other types of content, such as images, and animations. It is a Document Object Model-based page-level technique, thus it only needs to load one single webpage to extract the main content. As a consequence, it is efficient enough as to be used online (in real-time). We have empirically evaluated the technique using a suite of real heterogeneous benchmarks producing very good results compared with other well-known content extraction techniques.
Julián Alarte, Josep Silva
ACM Trans. Knowl. Discov. Data2
2021 Reversible CSP Computations
abstract
Reversibility enables a program to be executed both forwards and backwards. This ability allows programmers to backtrack the execution to a previous state. This is essential if the computation is not deterministic because re-running the program forwards may not lead to that state of interest. Reversibility of sequential programs has been well studied and a strong theoretical basis exists. Contrarily, reversibility of concurrent programs is still very young, especially in the practical side. For instance, in the particular case of the Communicating Sequential Processes (CSP) language, reversibility is practically missing. In this article, we present a new technique, including its formal definition and its implementation, to reverse CSP computations. Most of the ideas presented can be directly applied to other concurrent specification languages such as Promela or CCS, but we center the discussion and the implementation on CSP. The technique proposes different forms of reversibility, including strict reversibility and causal-consistent reversibility. On the practical side, we provide an implementation of a system to reverse CSP computations that is able to highlight the source code that is being executed in each forwards/backwards computation step, and that has been optimized to be scalable to real systems.
Carlos Galindo 0002, Naoki Nishida 0001, Josep Silva, Salvador Tamarit
IEEE Trans. Parallel Distributed Syst.3
2020 Slicing Unconditional Jumps with Unnecessary Control Dependencies
Carlos Galindo 0002, Sergio Pérez 0001, Josep Silva
LOPSTR3
2020 ReverCSP: Time-Travelling in CSP Computations
Carlos Galindo 0002, Naoki Nishida 0001, Josep Silva, Salvador Tamarit
RC3
2019 What Web Template Extractor Should I Use? A Benchmarking and Comparison for Five Template Extractors
abstract
A Web template is a resource that implements the structure and format of a website, making it ready for plugging content into already formatted and prepared pages. For this reason, templates are one of the main development resources for website engineers, because they increase productivity. Templates are also useful for the final user, because they provide uniformity and a common look and feel for all webpages. However, from the point of view of crawlers and indexers, templates are an important problem, because templates usually contain irrelevant information, such as advertisements, menus, and banners. Processing and storing this information leads to a waste of resources (storage space, bandwidth, etc.). It has been measured that templates represent between 40% and 50% of data on the Web. Therefore, identifying templates is essential for indexing tasks. There exist many techniques and tools for template extraction, but, unfortunately, it is not clear at all which template extractor should a user/system use, because they have never been compared, and because they present different (complementary) features such as precision, recall, and efficiency. In this work, we compare the most advanced template extractors. We implemented and evaluated five of the most advanced template extractors in the literature. To compare all of them, we implemented a workbench, where they have been integrated and evaluated. Thanks to this workbench, we can provide a fair empirical comparison of all methods using the same benchmarks, technology, implementation language, and evaluation criteria.
Julián Alarte, Josep Silva, Salvador Tamarit
ACM Trans. Web2
2018 Main Content Extraction from Heterogeneous Webpages
Julián Alarte, David Insa, Josep Silva, Salvador Tamarit
WISE (1)3
2018 Automatic assessment of Java code
David Insa, Josep Silva
Comput. Lang. Syst. Struct.2
2017 An Integrated Environment for Petri Net Slicing
Marisa Llorens, Javier Oliver 0001, Josep Silva, Salvador Tamarit
Petri Nets3
2017 Erlang Code Evolution Control
David Insa, Sergio Pérez 0001, Josep Silva, Salvador Tamarit
LOPSTR3
2017 Webpage Menu Detection Based on DOM
Julián Alarte, David Insa, Josep Silva
SOFSEM3
2016 Where You Sit MattersHow Classroom Seating Might Affect Marks
abstract
In this article we perform a detailed statistical analysis of a large experiment that was carried out in two engineering schools at Universitat Politècnica de València. The goal of the study is to quantify how the distance of students to the professor affects their marks. In the experiment, we collected and processed data about the exact students' position in the lecture hall and in the computer lab for two academic years, their changes of position along the course, and their marks in various degrees, courses, and terms, for both lectures and practicals. Our experiments provide quantitative data that is analyzed using advanced statistical methods such as ANOVA, the TukeyHSD post-hoc test, and the Mantel test based on Pearson product-moment correlation coefficient.
David Insa, Josep Silva, Salvador Tamarit
ITiCSE2
2016 Dynamic slicing of concurrent specification languages
Marisa Llorens, Javier Oliver 0001, Josep Silva, Salvador Tamarit
Parallel Comput.3
2015 Semi-Automatic Assessment of Unrestrained Java Code: A Library, a DSL, and a Workbench to Assess Exams and Exercises
abstract
Automated marking of multiple-choice exams is of great interest in university courses with a large number of students. For this reason, it has been systematically implanted in almost all universities. Automatic assessment of source code is however less extended. There are several reasons for that. One reason is that almost all existing systems are based on output comparison with a gold standard. If the output is the expected, the code is correct. Otherwise, it is reported as wrong, even if there is only one typo in the code. Moreover, why it is wrong remains a mystery. In general, assessment tools treat the code as a black box, and they only assess the externally observable behavior. In this work we introduce a new code assessment method that also verifies properties of the code, thus allowing to mark the code even if it is only partially correct. We also report about the use of this system in a real university context, showing that the system automatically assesses around 50% of the work.
David Insa, Josep Silva
ITiCSE2
2015 A Generalized Model for Algorithmic Debugging
David Insa, Josep Silva
LOPSTR2
2015 Automatic transformation of iterative loops into recursive methods
David Insa, Josep Silva
Inf. Softw. Technol.2
2013 The influence of students distribution on their grades
abstract
This position paper defends the opinion that the distance of students to the professor in the classroom is directly related to their grades. This opinion is based on the results obtained in a large experiment performed during two academic years in various degrees, courses and semesters of two engineering schools. The experiment collected and processed data about the distribution of students in lectures and their final grades. Our results quantitatively confirm that grades can vary up to 14% depending on the distance to the professor.
Carlos Herrero, Marisa Llorens, Javier Oliver 0001, Josep Silva, Salvador Tamarit
ITiCSE4
2013 An empirical analysis of the influence of classmates on the academic performance
abstract
This poster presents ongoing work that studies the influence of classmates over students' grades. We want to analyze different students habits and empirically quantify how they influence their academic performance. In particular, we want to answer the following questions: Do best/worst students sit together? Do students who sit alone get better grades than those who sit in pairs?
Carlos Herrero, Marisa Llorens, Javier Oliver 0001, Josep Silva, Salvador Tamarit
ITiCSE4
2013 A New Hybrid Debugging Architecture for Eclipse
Juan González, David Insa, Josep Silva
LOPSTR3
2013 Precise explanation of success typing errors
abstract
Nowadays, many dynamic languages come with (some sort of) type inference in order to detect type errors statically. Often, in order not to unnecessarily reject programs which are allowed under a dynamic type discipline, their type inference algorithms are based on non-standard (i.e., not unification based) type inference algorithms. Instead, they employ aggressive forwards and backwards propagation of subtype constraints. Although such analyses are effective in locating actual programming errors, the errors they report are often extremely difficult for programmers to follow and convince themselves of their validity. We have observed this phenomenon in the context of Erlang: for a number of years now its implementation comes with a static analysis tool called Dialyzer which, among other software discrepancies, detects definite type errors (i.e., code points that will result in a runtime error if executed) by inferring success typings. In this work, we extend the analysis that infers success typings, with infrastructure that maintains additional information that can be used to provide precise (i.e., minimal) explanations about the cause of a discrepancy reported by Dialyzer using program slicing. We have implemented the techniques we describe in a publicly available development branch of Dialyzer.
Konstantinos Sagonas, Josep Silva, Salvador Tamarit
PEPM2
2012 Information Extraction from Webpages Based on DOM Distances
Carlos J. Castillo, Héctor Valero, J. Guadalupe Ramos, Josep Silva
CICLing (2)4
2012 System Dependence Graphs in Sequential Erlang
Josep Silva, Salvador Tamarit, César Tomás
FASE1
2012 Enhancing Declarative Debugging with Loop Expansion and Tree Compression
David Insa, Josep Silva, César Tomás
LOPSTR2
2012 Static slicing of explicitly synchronized languages
Michael Leuschel, Marisa Llorens, Javier Oliver 0001, Josep Silva, Salvador Tamarit
Inf. Comput.4
2011 XQuery optimization based on program slicing
abstract
XQuery has become the standard query language for XML. The efforts put on this language have produced mature and efficient implementations of XQuery processors. However, in practice the efficiency of XQuery programs is strongly dependent on the ability of the programmer to combine different queries which often affect several XML sources that in turn can be distributed in different branches of the organization. Therefore, techniques to reduce the amount of data loaded and also to reduce the intermediate structures computed by queries is a necessity. In this work we propose a novel technique that allows the programmer to automatically optimize a query in such a way that unnecessary intermediate computations are avoided, and, in addition, it identifies the paths in the source XML documents that are really required to resolve the query.
Jesús Manuel Almendros-Jiménez, Josep Silva, Salvador Tamarit
CIKM2
2011 An optimal strategy for algorithmic debugging
abstract
Algorithmic debugging is a technique that uses an internal data structure to represent computations and ask about their correctness. The strategy used to explore this data structure is essential for the performance of the technique. The most efficient strategy in practice is Divide and Query that, until now, has been considered optimal in the worst case. In this paper we first show that the original algorithm is inaccurate and moreover, in some situations it is unable to find all possible solutions, thus it is incomplete. Then, we present a new version of the algorithm that solves these problems. Moreover, we introduce a counterexample showing that Divide and Query is not optimal, and we propose the first optimal strategy for algorithmic debugging with respect to the number of questions asked by the debugger.
David Insa, Josep Silva
ASE2
2010 An algorithmic debugger for Java
abstract
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.
David Insa, Josep Silva
ICSM2
2010 Scaling Up Algorithmic Debugging with Virtual Execution Trees
David Insa, Josep Silva
LOPSTR2
2010 Graph Generation to Statically Represent CSP Processes
Marisa Llorens, Javier Oliver 0001, Josep Silva, Salvador Tamarit
LOPSTR3
2010 A Tracking Semantics for CSP
Marisa Llorens, Javier Oliver 0001, Josep Silva, Salvador Tamarit
MPC3
2009 SOC: a slicer for CSP specifications
abstract
This paper describes SOC, a program slicer for CSP specifications. In order to increase the precision of program slicing, SOC uses a new data structure called Context-sensitive Synchronized Control Flow Graph (CSCFG). Given a CSP specification, SOC generates its associated CSCFG and produces from it two different kinds of slices; which correspond to two different static analyses. We present the tool's architecture, its main applications and the results obtained from experiments conducted in order to measure the performance of the tool.
Michael Leuschel, Marisa Llorens, Javier Oliver 0001, Josep Silva, Salvador Tamarit
PEPM4
2008 The MEB and CEB Static Analysis for CSP Specifications
Michael Leuschel, Marisa Llorens, Javier Oliver 0001, Josep Silva, Salvador Tamarit
LOPSTR4
2007 Preserving Sharing in the Partial Evaluation of Lazy Functional Programs
Sebastian Fischer 0001, Josep Silva, Salvador Tamarit, Germán Vidal
LOPSTR2
2007 A Program Slicing Based Method to Filter XML/DTD Documents
Josep Silva
SOFSEM (1)1
2007 Ensuring the quasi-termination of needed narrowing computations
J. Guadalupe Ramos, Josep Silva, Germán Vidal
Inf. Process. Lett.2
2007 Forward slicing of functional logic programs by partial evaluation
abstract
Abstract Program slicing has been mainly studied in the context of imperative languages, where it has been applied to a wide variety of software engineering tasks, like program understanding, maintenance, debugging, testing, code reuse, etc. This work introduces the first forward slicing technique for declarative multi-paradigm programs which integrate features from functional and logic programming. Basically, given a program and aslicing criterion(a function call in our setting), the computed forward slice contains those parts of the original program which arereachablefrom the slicing criterion. Our approach to program slicing is based on an extension of (online) partial evaluation. Therefore, it provides a simple way to develop program slicing tools from existing partial evaluators and helps to clarify the relation between both methodologies. A slicing tool for the multi-paradigm language Curry, which demonstrates the usefulness of our approach, has been implemented in Curry itself.
Josep Silva, Germán Vidal
Theory Pract. Log. Program.1
2006 Multi-source Materialized Views Maintenance: Multi-level Views
Josep Silva, Jorge Belenguer, Matilde Celma
ADBIS1
2006 A Slicing Tool for Lazy Functional Logic Programs
Claudio Ochoa, Josep Silva, Germán Vidal
JELIA2
2006 Improving Offline Narrowing-Driven Partial Evaluation Using Size-Change Graphs
Gustavo Arroyo, J. Guadalupe Ramos, Josep Silva, Germán Vidal
LOPSTR3
2006 A Comparative Study of Algorithmic Debugging Strategies
Josep Silva
LOPSTR1
2006 Combining algorithmic debugging and program slicing
abstract
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 programmer's 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
Josep Silva, Olaf Chitil
PPDP1
2005 Fast narrowing-driven partial evaluation for inductively sequential programs
abstract
Narrowing-driven partial evaluation is a powerful technique for the specialization of (first-order) functional and functional logic programs. However, although it gives good results on small programs, it does not scale up well to realistic problems (e.g., interpreter specialization). In this work, we introduce a faster partial evaluation scheme by ensuring the termination of the process offline. For this purpose, we first characterize a class of programs which are quasi-terminating, i.e., the computations performed with needed narrowing—the symbolic computation mechanism of narrowing-driven partial evaluation—only contain finitely many different terms (and, thus, partial evaluation terminates). Since this class is quite restrictive, we also introduce an annotation algorithm for a broader class of programs so that they behave like quasi-terminating programs w.r.t. an extension of needed narrowing. Preliminary experiments are encouraging and demonstrate the usefulness of our approach.
J. Guadalupe Ramos, Josep Silva, Germán Vidal
ICFP2
2004 Run-Time Profiling of Functional Logic Programs
Bernd Brassel, Michael Hanus, Frank Huch, Josep Silva, Germán Vidal
LOPSTR4
2004 Dynamic slicing based on redex trails
abstract
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.
Claudio Ochoa, Josep Silva, Germán Vidal
PEPM2
2004 An Embedded Language Approach to Router Specification in Curry
J. Guadalupe Ramos, Josep Silva, Germán Vidal
SOFSEM2
2002 An Algorithm to Compare OO-Conceptual Schemas
abstract
In this paper, an algorithmic study of how to compare object-oriented conceptual schemas in a data migration context is carried out. An algorithm is presented based on the tree-comparison technique that compares conceptual schemas. The algorithm uses semantic information in order to optimize efficiency. A template of the equivalences and differences between two schemas is generated in an automatic way. The template shows the results in terms of insertions, updates and deletions. This work is the first phase in a tool which performs the automatic migration of databases starting from the differences detected.
Josep Silva, Isidro Ramos, José A. Carsí
ICSM1