• Home
  • IBM
  • Haifa Research Lab
  • Yishai A. Feldman
Yishai A. Feldman

Yishai A. Feldman
IBM · Haifa Research Lab

PhD

About

124
Publications
6,107
Reads
How we measure 'reads'
A 'read' is counted each time someone views a publication summary (such as the title, abstract, and list of authors), clicks on a figure, or views or downloads the full-text. Learn more
895
Citations

Publications

Publications (124)
Article
The classical systems engineering practice is mostly process centric, but with the recent advances in Information Technologies, we have started to engage in model-based and other software-supported activities that make us more efficient and our products better. The subject of this paper is a pursuit of further improvements in the software tools sup...
Conference Paper
Professional programmers use desktop or laptop computers as a preference. However, they sometimes need to continue their work on the go, when they may only have access to mobile devices. Thus, mobile devices can be important but not exclusive development platforms. Therefore, it is necessary to support programming in conventional languages on mobil...
Patent
Full-text available
A computer-implemented method and apparatus for transforming code to embedded environments, the method comprising: receiving program code not complying with a limitation of an embedded computing environment; transforming at least part of the program code to modified program code in order for the modified program code to be in compliance with the li...
Patent
Full-text available
Machines, systems and methods for distinguishing feasible paths in a program by statically tracking one or more execution paths are provided. The method comprises reading one or more program statements in an execution path; adding a location identification for the program statement read to an abstract representation of the execution stack at the ti...
Patent
Full-text available
A method for generating a slice from a plan-based representation of a program is provided. The method comprises constructing a plan representation of a program, wherein the plan representation comprises a plurality of nodes, edges, and ports; and receiving one or more slicing criteria from a user. The slicing criteria comprise one or more variable...
Chapter
The design of complex systems involves many engineering disciplines, and many different tools and formalisms. Solutions such as IBM Rational Engineering Lifecycle Management(RELM) present a unified view of information collected from multiple tools. Various queries and reports are predefined, but engineers need to define their own custom queries, ba...
Article
We present a new algorithm for computing interprocedural dominators. The algorithm identifies a set of special nodes, which are the only ones that can have interprocedural dominance edges, and extends the intraprocedural dominator trees by deriving those edges. The computation of the dominators of each node is independent of the computation of any...
Patent
Full-text available
A computer implemented method for automatically fixing a security vulnerability in a source code. The method includes obtaining identification of a code block that includes a code that sends tainted data to a corresponding sink code in the source code and automatically fixing the vulnerability by automatically performing code modification which is...
Conference Paper
Full-text available
The Functional Mockup Interface (FMI) standard enables hybrid simulation of models from different tools. Such tools can have different underlying behavioral semantics, creating challenges when models are combined. A case in point is the combination of the Rhapsody tool, widely used to describe and implement discrete control behavior, and Modelica,...
Patent
A method of code transformation supporting temporal abstraction of parameters is provided herein. The method includes the following stages: extracting a set of statements from an original code and further creating a residual code being the original code without the statements, wherein two or more of the extracted statements are not on a same loop i...
Conference Paper
Program analysis plays an important role in a variety of software engineering processes, such as automated code refactoring, compiler optimizations, and program slicing. The internal program representation used by the program analysis algorithm affects the power and efficiency of the analysis. In particular, representations that contain data-flow i...
Patent
Full-text available
A method of determining suitable insertion points for inserting string sanitizers in a computer code is provided herein. The method includes the following stages: obtaining: (i) a computer code associated with a data flow of externally supplied data, from one or more sources to one or more sinks, (ii) locations of the sources, and (iii) locations o...
Conference Paper
One of the challenges in maintaining legacy systems is to be able to locate business logic in the code, and isolate it for different purposes, including implementing requested changes, refactoring, eliminating duplication, unit testing, and extracting business logic into a rule engine. Our new idea is an iterative method to identify the business lo...
Conference Paper
Full-text available
The availability of automated refactoring tools in modern development environments allows programmers to refactor their code with ease. Such tools, however, enable developers to inadvertently create code clones that quickly diverge in form but not in meaning. Furthermore, in the hands of those looking to confuse plagiarism-detection tools, automate...
Article
We have developed a static-analysis algorithm that extracts statecharts from procedural implementations of state machines. The extracted statecharts are semantically-equivalent to the original program, and can be used for further development instead of the procedural code. We have implemented this algorithm in a tool called StatRec. We report on th...
Conference Paper
Full-text available
Software evolution often requires the untangling of code. Particularly challenging and error-prone is the task of separating computations that are intertwined in a loop. The lack of automatic tools for such transformations complicates maintenance and hinders reuse. We present a theory and implementation of fine slicing, a method for computing execu...
Conference Paper
Most kinds of security vulnerabilities in web applications can be fixed by adding appropriate sanitization methods. Finding the correct place for the sanitizers can be difficult due to complicated data and control flow. Fixing SQL injection vulnerabilities may require more complex transformations, such as replacing uses of Statement by PreparedStat...
Article
Refactoring often requires the reordering of code fragments; such is the case when migrating from one API to another. Performing such reordering manually is complex and error-prone. A specific example in the security domain involves database query execution, in which some of the parameters come from untrusted sources. In Java, the Statement API pro...
Conference Paper
Statecharts are an important tool for specifying the behavior of reactive systems, and development tools can automatically generate object-oriented code from them. As the system is refactored, it is necessary to modify the associated statecharts as well, performing operations such as grouping or ungrouping states, extracting part of a statechart in...
Conference Paper
Program slicing is a useful technique in tools for program understanding and transformation. Computing correct and accurate slices for unstructured programs is particularly difficult. We present a new family of slicing algorithms that are proved correct and are more accurate than the best previous algorithms. An empirical study shows significant im...
Article
Full-text available
The development of large systems usually involves many different languages and technologies. Refactoring tools need to be aware of these multiple representations, since informa-tion in one form may affect refactorings done in other forms. Furthermore, some refactorings need to modify code in sev-eral representations simultaneously. This paper demon...
Article
Full-text available
The potential of the Extract Method refactoring for main-taining high-quality software is well-recognized. It can be useful by itself, or as a building block in larger refactoring tasks. Because it requires a deep analysis of data and con-trol dependences, it is difficult to perform correctly without tools in complicated cases. Unfortunately, refac...
Chapter
Governance is the exercise of control and direction over a subject such as a society, an organization, processes, or artifacts, by using laws and policies that are defined, deployed, and executed. In this chapter we develop this definition into a formal conceptual model that can be applied to a variety of governance domains. At the heart of this mo...
Chapter
Governance is the exercise of control and direction over a subject such as a society, an organization, processes, or artifacts, by using laws and policies that are defined, deployed, and executed. In this chapter we develop this definition into a formal conceptual model that can be applied to a variety of governance domains. At the heart of this mo...
Article
Full-text available
There is a consensus that the construction and maintenance of large software systems would greatly benefit from the existence of explicitly stated architectural principles. Such principles should specify the global rules that are to govern the structure and dynamic behavior of a system, providing a framework in which the system can be reasoned abou...
Article
Full-text available
Fowler saw the availability of automated support for the Ex-tract Method refactoring in modern IDEs as an indication for the crossing of the refactoring Rubicon. In spite of the ad-vances in refactoring technology, it seems that this Rubicon has not yet been crossed, and refactoring support in modern IDEs leaves a lot to be desired. We performed a...
Article
Full-text available
The purpose of this paper is to elucidate the following four important architectural principles of knowledge representation and reasoning with the example of an implemented system: limited reasoning, truth maintenance, hybrid architecture, and many sorted logic. MIT Artificial Intelligence Laboratory
Article
Full-text available
We have implemented a reasoning system, called BREAD, which includes truth maintenance, equality, and pattern-directed invocation. This paper reports on the solution of two technical problems arising out of the interaction between these mechanisms. The first result is an algorithm which ensures the completeness of pattern-directed invocation with r...
Article
Governance is the exercise of control and direction over a subject such as a society, an organization, processes, or artifacts, by using laws and policies that are defined, deployed, and executed. In this chapter we develop this definition into a formal conceptual model that can be applied to a variety of governance domains. At the heart of this mo...
Chapter
Nell’Aprile 1984, Time scrisse un importante articolo sull’informatica. Nell’articolo, per il resto eccellente, c’era un paragrafo in cui veniva citato l’editore di una rivista di software, il quale diceva: Installate il software corretto su un computer, e il computer farà qualsiasi cosa vogliate. Ci potrebbero essere limiti su cosa potete fare con...
Chapter
Il capitolo precedente ha discusso di problemi generali che si devono affront are quando si ha a che fare non solo con algoritmi o con programmi, ma con sistemi di una certa complessità e dimensione. In questo capitolo ci concentreremo su una tipologia di sistemi particolarmente problematica, e in particolare sulle sue sfaccettature più complesse....
Chapter
I computer sono macchine straordinarie. Sembrano in grado di fare qualsiasi cosa. Pilotano aeroplani e shuttle, e controllano centrali energetiche e impianti chimici pericolosi. Le aziende non possono essere più portate avanti senza di loro, e un numero sempre maggiore di sofisticate procedure mediche non possono essere eseguite in loro assenza. Ai...
Chapter
Sembra che ora possiamo continuare allegramente con i nostri compiti algoritmici. Sappiamo come sono strutturati gli algoritmi e come gestire gli oggetti che manipolano, e sappiamo anche come scriverli in modo che un computer possa eseguirli. Possiamo dunque dire al nostro processore cosa dovrebbe fare e quando. Comunque, si tratta di una presa di...
Chapter
Nel capitolo precedente abbiamo visto che certi problemi algoritmici ammettono soluzioni che sono molto più efficienti delle loro controparti banale. Abbiamo visto, ad esempio, che è possibile effettuare una ricerca all’interno di una lista ordinata in un tempo logaritmico, un risultato che, quando raffinato, ci permette di trovare un nome in un el...
Chapter
Il fatto che la computazione non porti solo buone notizie ha spinto i ricercatori a muoversi in numerose direzioni, per cercare di alleviare il problema. In questo capitolo discuteremo alcuni degli approcci più interessanti: il parallelismo e la concorrenza, la computazione quantistica, e la computazione molecolare. Ognuno di questi rappresenta un...
Chapter
Un famoso aneddoto racconta del tentativo di dare un’idea di cosa sia la programmazione di computer ad un gruppo di dirigenti in una azienda che assume programmatori. In una settimana di lavoro i dirigenti come programmare e come risolvere dei piccoli problemi. A ciascun dirigente venne assegnato un programmatore professionista come assistente. Dop...
Chapter
Bene, abbiamo fatto molta strada. Partendo da una nozione base di problema e soluzione algoritmica, abbiamo discusso le metodologie principali per la progettazione e la scrittura di algoritmi, così come modi per stabilire la loro correttezza ed efficienza. Abbiamo visto problemi intrattabili e non computabili, e abbiamo dimostrato che queste nozion...
Chapter
L’obbiettivo di queste note bibliografiche è duplice. Il primo è di fornire al lettore ulteriore materiale in cui trovare resoconti più dettagliati sugli argomenti discussi. Il secondo è di dare il giusto credito alle persone responsabili della ricerca di cui si fa cenno nel libro, e di indirizzare il lettore, ove possibile, alle pubblicazioni orig...
Chapter
Quando ci viene chiesto di costruire un ponte sopra un flume, è facile costruirne uno scorretto. Il ponte potrebbe non essere largo abbastanza per contenere tutte le carreggiate richieste, potrebbe non essere resistente abbastanza per gli orari di alto traffico, o potrebbe non raggiungere addirittura l’altra sponda. Comunque, anche se “corretto”, n...
Chapter
Dovrebbe risultar ovvio che riflettere sui problemi algoritmici e le loro soluzioni porta molti benefici, non solo nel risolvere problemi che hanno a che vedere con i computer, ma anche nel campo della pasticceria, nel cambiare le ruote a un’auto, nel costruire mobili, e nelle ricerche telefoniche. Comunque, ci occuperemo principalmente di algoritm...
Chapter
Volgiamo ora il nostro sguardo a una nuova e stimulante area di applicazione dell’algoritmica. I metodi utilizzati per risolvere i problemi in questa area sfruttano la difficoltà che abbiamo nel risolvere altri problemi. Già di per sè questa è alquanto sorprendente, visto che ci saremmo aspettati che i risultati negativi ehe impongono limiti inferi...
Chapter
In questo capitolo esamineremo dispositivi algoritmici del tipo più semplice possibile, impressionantemente primitivi rispetto ai computer e ai linguaggi di programmazione odierni. Nonostante cio sono abbastanza potenti da eseguire anche gli algoritmi più complessi.
Chapter
Sappiamo già che gli algoritmi contengono istruzioni elementari attentamente selezionate che prescrivono le azioni basilari che devono essere eseguite. Non abbiamo ancora discusso invece come devono essere disposte all’interno di un algoritmo in modo che un umano o un computer possa capire l’ordine esatto in cui eseguirle. Nè abbiamo discusso gli o...
Chapter
Nei primi anni sessanta una delle navi spaziali americani della serie Mariner, mandata a Venere, venne persa per sempre causando perdite per milioni di dollari, per via di un errore nel software di controllo. Nel 1981 uno delle emittenti televisive che copriva le elezioni provinciali in Qebec, Canada, venne portato a pensare, per via di un errore i...
Chapter
Qualcuno dice che domandarsi se i computer possano pensare è come chiedersi se i sottomarini possano nuotare. L’analogia è appropriata. Sebbene tutti sappiano, più o meno, cosa sono in grado di fare i sottomarini — e sono effettivamente in grado di fare qualcosa di simile a nuotare, nuotare “veramente” è qualcosa che associamo con entità di natura...
Chapter
Nel capitolo precedente abbiamo cominciato a vedere cose che si trovano al di fuori del framework standard di problemi algoritmici e delle loro soluzioni. Abbiamo permesso algoritmi paralleli, i quali necessitano di più di un processore. Questa variazione ha richiesto poche giustificazioni, visto che è facile dimostrare che grazie a essa migliorano...
Conference Paper
Full-text available
Design by contract is a practical methodology for evolving code together with its specification. The contract has important methodological implications on the design of the program. In addition, tools that instrument the code to check for contract violations help the development process by catching errors close to their sources. This is complicated...
Article
Automated control of a virtual camera is useful for both linear animation and interactive virtual environments. It has been partially addressed in the past by numeric constraint optimization and by idiom-based approaches. We have constructed a knowledge-based system that allows users to experiment with various cinematic genres and view the results...
Conference Paper
Design by contract is a practical methodology for evolving code together with its specification; it helps prevent many errors, and catch others close to their sources. Unfortunately, writing (and maintaining) contracts requires a non-trivial investment of time and effort. We are developing a tool, called Discern, to statically analyze existing prog...
Conference Paper
Full-text available
Design by contract is a practical methodology for developing code together with its specification. The contract consists of class invariants and method pre- and postconditions. As the code is refactored, specifi- cations of internal units change with the code. There are mutual influences between the code and the con- tract. The assertions that cons...
Article
Computer science students need to learn how to write high-quality software. An important methodology for achieving quality is design-by-contract, in which code is developed together with its specification, which is given as class invariants and method pre- and postconditions. This paper describes practical experience in teaching design-by-contract...
Conference Paper
Full-text available
Virtual environments and artificial worlds are becoming multi-user, complex, and long lasting. Someone who was away from the environment for a while may wish, to be informed of interesting events that happened during her absence without watching hours or even days of interaction. A movie is the natural medium for such a summary. A t the end of a lo...
Article
Full-text available
The Aspect-Oriented Programming methodology provides a means of encapsulation of crosscuting concerns in software. AspectJ is a general-purpose aspect-oriented programming language that extends Java. This paper investigates the semantics of call and execution pointcuts in AspectJ, and their interaction with inheritance. We present a semantic model...
Conference Paper
Full-text available
We present a real-time hybrid tracking system thatintegrates gyroscopes and line-based vision trackingtechnology. Gyroscope measurements are used topredict orientation and image line positions.Gyroscope drift is corrected by vision tracking.System robustness ...
Article
Full-text available
Old-generation database models, such as the indexed-sequential, hierarchical, or network models, provide record-level access to their data, with all application logic residing in the hosting program. In contrast, relational databases can perform complex operations, such as filter, aggregation, and join, on multiple records without an external speci...
Article
DINNER is a knowledge-based tool that assists the administrator of a relational database in the selection of index configurations. Given a set of tables, their statistical properties, and a set of queries on these tables, DINNER recommends an index configuration that includes for each table a primary index and a set of secondary indexes. Although i...
Conference Paper
Full-text available
Design by contract is a practical technique for developing code together with its (light-weight and executable) specification. It is synergistic with several XP practices, particularly unit testing and refactoring. This paper investigates this relationship and points out how it can be automated (at least in part).
Article
Full-text available
The interaction of pattern-directed invocation with equality in an automated reasoning system gives rise to a completeness problem. In such systems, a demon needs to be invoked not only when its pattern exactly matches a term in the reasoning data base, but also when it is possible to create a variant that matches.
Article
Full-text available
In this paper, we demonstrate the capability of mass, a real-time design language, for large systems specification. The paper presents a hierarchical specification of an automatic cruise controller that evolves through stepwise refinement. In particular, we show modular design, the separation of the functional and reactive concerns, and the succinc...
Article
Full-text available
Acyclic constraint satisfaction problems with arithmetic constraints and domains consisting of sets of disjoint intervals have exponential complexity, since disjunctions of intervals may be introduced while propagating through the constraints. This has prompted many researchers to use approximations on the bounds of sets of intervals, resulting in...
Article
Many organizations today are facing the problem of software migration: porting existing code to new architectures and operating systems. In many cases, such legacy code is written in a mainframe-specific assembly language and needs to be translated to a high-level language in order to be run on different architectures. Our research addresses this p...
Article
Full-text available
The paper presents a formal development process of a real-time system. We employ two related languages: the real-time logic plot for plant modeling and requirements specification, and the real-time language mass for the controller design. A deductive proof system is used to verify the design against the requirements. The examples given in the paper...
Conference Paper
Full-text available
The relational database model is currently the target of choice for the conversion of legacy software that uses older models (such as indexed-sequential, hierarchical or network models). The relational model makes up for its lower efficiency by a greater expressive power and by optimization of queries, using indexes and other means. However, sophis...
Article
Full-text available
Pattern-directed invocation is a commonly used artificial-intelligence reasoning technique in which a procedure, called a demon, is automatically invoked whenever a term matching its pattern appears in a ground data base. For completeness, if the data base includes equations, a demon needs to be invoked not only when a term in the data base exactly...
Article
Debugging is one of the main uses of simulation. Localizing bugs or finding the reasons for unclear behavior involves going backwards in time, whereas simulation goes forward in time. Therefore, identifying causes with the aid of most existing simulation tools usually requires repeating the simulation several times, each time with reduced holes in...
Conference Paper
Full-text available
Automatic code translation could be a useful technique for software migration, provided it can be done in large-scale industrial applications. We have built an automatic translation system for converting IBM 370 assembly-language programs to C, in order to port the original programs to different architectures. This system, called Bogart, first anal...
Conference Paper
Full-text available
We present MASS, a declarative language for specifying the reactive behavior of real-time systems. The basic primitive of the language is the task, which is the interface between the reactive and sequential aspects of the specification. The purely computational meaning of a task (as an I/O transformation) is given outside MASS using standard specif...
Article
Full-text available
The authors' experience in the Programmer's Apprentice project in applying knowledge representation and automated reasoning to support software development is summarized. A system, called Cake, is described that comprises seven layers of knowledge representation and reasoning facilities: truth maintenance, Boolean constraint propagation, equality,...
Article
Full-text available
The interaction of pattern-directed invocation with equality in an automated reasoning system gives rise to a completeness problem. In such systems, a demon needs to be invoked not only when its pattern exactly matches a term in the reasoning data base, but also when it is possible to create a variant that matches. An incremental algorithm has been...
Conference Paper
Simulation by deduction is a technique in which the behavior of the simulated model is deduced by a reasoning system. A simulation system that uses this technique can explain the reasons for the simulation results and thus aid the localization of bugs. Furthermore, simulation by deduction enables symbolic simulation, i.e. simulating a scenario give...