Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data. A simulation from public publication records: the people listed were not invited and did not agree to review.

Bassem Elkarablieh

dblp:45/5552 · DBLP profile ↗
← Back
8ranked-venue papers
6as first author
0since 2021 · last 2009
—ORCID · none

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

Software engineering, systems software and programming languages · 8 · 6 first-author

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
7 papers
Debugging and program repair · 54% Software testing · 27% Program analysis · 15%
Network and information security
1 paper
Systems and software security · 100%
Databases, data mining, and information retrieval
1 paper
Query processing and optimization · 100%
Theoretical computer science
1 paper
Automated reasoning and model checking · 100%

Topics — the 13 heaviest of 16, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Debugging and program repair › program repair
data structure repair
0.222009
A Case for Automated Debugging Using Data Structure Repair · ASE 2009
Starc: static analysis for efficient repair of complex data · OOPSLA 2007
Software testing
test generation
0.222008
Query-Aware Test Generation Using a Relational Constraint Solver · ASE 2008
Efficient solving of structural constraints · ISSTA 2008
Debugging and program repair
automated program repair
0.122007
Starc: static analysis for efficient repair of complex data · OOPSLA 2007
Assertion-based repair of complex data structures · ASE 2007
Debugging and program repair › automated program repair
constraint-based repair
0.122009
Starc: static analysis for efficient repair of complex data · OOPSLA 2007
A Case for Automated Debugging Using Data Structure Repair · ASE 2009
Program analysis
static analysis
0.122009
Starc: static analysis for efficient repair of complex data · OOPSLA 2007
A Case for Automated Debugging Using Data Structure Repair · ASE 2009
Systems and software security
vulnerability discovery
0.112009
Precise pointer reasoning for dynamic test generation · ISSTA 2009
Debugging and program repair
automated debugging
0.112009
A Case for Automated Debugging Using Data Structure Repair · ASE 2009
Program analysis › symbolic execution
dynamic symbolic execution
0.112009
Precise pointer reasoning for dynamic test generation · ISSTA 2009
Software testing › test generation
dynamic test generation
0.112009
Precise pointer reasoning for dynamic test generation · ISSTA 2009
Debugging and program repair
fault localization
0.112009
A Case for Automated Debugging Using Data Structure Repair · ASE 2009
Software testing › test generation
constraint-based test generation
0.112008
Efficient solving of structural constraints · ISSTA 2008
Automated reasoning and model checking
constraint solving
0.112008
Efficient solving of structural constraints · ISSTA 2008
Program verification › dynamic verification › runtime verification
assertion checking
0.012007
Assertion-based repair of complex data structures · ASE 2007

Methods — techniques the papers use, named apart from their topics

constraint solving · 0.3symbolic execution · 0.2relational constraint solving · 0.2code instrumentation · 0.2checkpoint-based backtracking · 0.2alloy · 0.2static analysis · 0.1constraint-based data structure repair · 0.1runtime instrumentation · 0.1assertion violation analysis · 0.1
YearPublicationVenuePosition
2009 Precise pointer reasoning for dynamic test generation
abstract
Dynamic test generation consists of executing a program while gathering symbolic constraints on inputs from predicates encountered in branch statements, and of using a constraint solver to infer new program inputs from previous constraints in order to steer next executions towards new program paths. Variants of this technique have recently been adopted in several bug detection tools, including our whitebox fuzzer SAGE, which has found dozens of new expensive security-related bugs in many Windows applications and is now routinely used in various Microsoft groups.
Bassem Elkarablieh, Patrice Godefroid, Michael Y. Levin
ISSTA1
2009 A Case for Automated Debugging Using Data Structure Repair
abstract
Automated debugging is becoming increasingly important as the size and complexity of software increases. This paper makes a case for using constraint-based data structure repair, a recently developed technique for fault recovery, as a basis for automated debugging. Data structure repair uses given structural integrity constraints for key data structures to monitor their correctness during the execution of a program. If a constraint violation is detected, repair performs mutations on the data structures, i.e., corrupt program state, and transforms it into another state, which satisfies the desired constraints. The primary goal of data structure repair is to transform an erroneous state into an acceptable state. Therefore, the mutations performed by repair actions provide a basis of debugging faults in code (assuming the errors are due to bugs). A key challenge to embodying this insight into a mechanical technique arises due to the difference in the concrete level of the program states and the abstract level of the program code: repair actions apply to concrete data structures that exist at runtime, whereas debugging applies to code. We observe that static structures (program variables) hold handles to dynamic structures (heap-allocated data), which allows bridging the gap between the abstract and concrete levels. We envision a tool-chain where a data structure repair tool generates repair logs that are used by a fault localization tool and a repair abstraction tool that apply in synergy to not only identify the location of fault(s) in code but also to synthesize debugging suggestions. An embodiment of our vision can significantly reduce the cost of developing reliable software.
Muhammad Zubair Malik, Khalid Ghori, Bassem Elkarablieh, Sarfraz Khurshid
ASE3
2008 Juzi: a tool for repairing complex data structures
abstract
This paper describes Juzi, a tool for automatic repair of complex data structures. Juzi takes a Java class representing the data structure as well as a predicate method that specifies the structural integrity constraints as inputs. Juzi instruments its inputs and generates a new Java class which behaves similarly to the original class, yet automatically repairs itself when the structural integrity constraints are violated.
Bassem Elkarablieh, Sarfraz Khurshid
ICSE1
2008 Efficient solving of structural constraints
abstract
Structural constraint solving is being increasingly used for software reliability tasks such as systematic testing or error recovery. For example, the Korat algorithm provides constraint-based test generation: given a Java predicate that describes desired input constraints and a bound on the input size, Korat systematically searches the bounded input space of the predicate to generate all inputs that satisfy the constraints. As another example, the STARC tool uses a constraint-based search to repair broken data structures. A key issue for these approaches is the efficiency of search. This paper presents a novel approach that significantly improves the efficiency of structural constraint solvers. Specifically, most existing approaches use backtracking through code re-execution to explore their search space. In contrast, our approach performs checkpoint-based backtracking by storing partial program states and performing abstract undo operations. The heart of our approach is a light-weight search that is performed purely through code instrumentation. The experimental results on Korat and STARC for generating and repairing a set of complex data structures show an order to two orders of magnitude speed-up over the traditionally used searches.
Bassem Elkarablieh, Darko Marinov, Sarfraz Khurshid
ISSTA1
2008 Query-Aware Test Generation Using a Relational Constraint Solver
abstract
We present a novel approach for black-box testing of database management systems (DBMS) using the Alloy tool-set. Given a database schema and an SQL query as inputs, our approach first formulates Alloy models for both inputs, and then using the Alloy Analyzer, it generates (1) input data to populate test databases, and (2) the expected result of executing the given query on the generated data. The Alloy Analyzer results form a complete test suite (input/oracle) for verifying the execution result of a DBMS query processor. By incorporating both the schema and the query during the analysis, our approach performs query-aware data generation where executing the query on the generated data produces meaningful non-empty results. We developed a prototype tool, ADUSA, and used it to evaluate our approach. Experimental results show the ability of our approach to detect bugs in both open-source as well as commercial database management systems.
Shadi Abdul Khalek, Bassem Elkarablieh, Yai O. Laleye, Sarfraz Khurshid
ASE2
2007 Efficiently Generating Structurally Complex Inputs with Thousands of Objects
Bassem Elkarablieh, Yehia Zayour, Sarfraz Khurshid
ECOOP1
2007 Assertion-based repair of complex data structures
abstract
Programmers have long used assertions to characterize properties of code. An assertion violation signals a corruption in the programstate. At such a state, it is standard to terminate the program, debug it if possible, and re-execute it. We propose a new view: instead of terminating the program, use the violated assertion as a basis of repairing the state of the program and let it continue.
Bassem Elkarablieh, Yuk Lai Suen, Sarfraz Khurshid
ASE1
2007 Starc: static analysis for efficient repair of complex data
abstract
Data structure corruptions are insidious bugs that reduce the reliability of software systems. Constraint-based datastructure repair promises to help programs recover from potentially crippling corruption errors. Prior work repairs a variety of relatively small data structures, usually with hundreds of nodes.
Bassem Elkarablieh, Sarfraz Khurshid, Duy Vu, Kathryn S. McKinley
OOPSLA1