Demo Data from VLDB 2026 / reviewers in the wild / expert
Mark Grechanik
dblp:p/MGrechanik
· DBLP profile ↗
49ranked-venue papers
21as first author
1since 2021 · last 2024
0000-0002-8364-595XORCID · verified
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 47 · 21 first-author · 1 since 2021Artificial intelligence and machine learning · 2 · 1 first-authorApplied, interdisciplinary, general and emerging computing · 2 · 1 first-authorSystems, architecture and hardware · 1Databases, data management, data science and information retrieval · 1
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
19 papers |
Software maintenance and evolution · 36% Software testing · 25% Program analysis · 14% | |
| Databases, data mining, and information retrieval
5 papers |
Information retrieval · 42% Transaction processing and concurrency control · 37% Database system architecture and tuning · 16% | |
| Computer architecture, parallel and distributed computing, and storage systems
2 papers |
Performance modeling and evaluation · 77% Cloud and datacenter computing · 23% |
Topics — the 30 heaviest of 39, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Software maintenance and evolution
software reuse |
0.6 | 5 | 2012 | Detecting similar software applications · ICSE 2012 Portfolio: a search engine for finding functions and their usages · ICSE 2011 Portfolio: finding relevant functions and their usage · ICSE 2011 |
Software maintenance and evolution
code search |
0.6 | 4 | 2013 | Portfolio: Searching for relevant functions and their usages in millions of lines of code · ACM Trans. Softw. Eng. Methodol. 2013 Exemplar: A Source Code Search Engine for Finding Highly Relevant Applications · IEEE Trans. Software Eng. 2012 Portfolio: a search engine for finding functions and their usages · ICSE 2011 |
Program analysis › static analysis
bug detection |
0.4 | 1 | 2020 | T-BASIR: Finding Shutdown Bugs for Cloud-Based Applications in Cloud Spot Markets · IEEE Trans. Parallel Distributed Syst. 2020 |
Debugging and program repair
fault localization |
0.4 | 1 | 2020 | T-BASIR: Finding Shutdown Bugs for Cloud-Based Applications in Cloud Spot Markets · IEEE Trans. Parallel Distributed Syst. 2020 |
Information retrieval › document retrieval › domain-specific retrieval › enterprise search
application search |
0.2 | 2 | 2010 | Exemplar: EXEcutable exaMPLes ARchive · ICSE (2) 2010 A search engine for finding highly relevant applications · ICSE (1) 2010 |
Information retrieval › document retrieval › domain-specific retrieval
code search |
0.2 | 2 | 2010 | Exemplar: EXEcutable exaMPLes ARchive · ICSE (2) 2010 A search engine for finding highly relevant applications · ICSE (1) 2010 |
Software testing
search-based software testing |
0.2 | 1 | 2015 | Automating performance bottleneck detection using search-based application profiling · ISSTA 2015 |
Performance modeling and evaluation › profiling
application profiling |
0.2 | 1 | 2015 | Automating performance bottleneck detection using search-based application profiling · ISSTA 2015 |
Performance modeling and evaluation
bottleneck analysis |
0.2 | 1 | 2015 | Automating performance bottleneck detection using search-based application profiling · ISSTA 2015 |
Empirical software engineering
mining software repositories |
0.2 | 2 | 2013 | ExPort: Detecting and visualizing API usages in large source code repositories · ASE 2013 Detecting similar software applications · ICSE 2012 |
Database system architecture and tuning › database interface
application-database interaction |
0.2 | 1 | 2013 | Preventing database deadlocks in applications · ESEC/SIGSOFT FSE 2013 |
Empirical software engineering › mining software repositories › source-code mining
API usage mining |
0.2 | 1 | 2013 | ExPort: Detecting and visualizing API usages in large source code repositories · ASE 2013 |
Software maintenance and evolution › API usage
API usage analysis |
0.1 | 1 | 2012 | Exemplar: A Source Code Search Engine for Finding Highly Relevant Applications · IEEE Trans. Software Eng. 2012 |
Software testing
performance testing |
0.1 | 1 | 2012 | Automatically finding performance problems with feedback-directed learning software testing · ICSE 2012 |
Software testing › test coverage › code coverage
statement coverage |
0.1 | 1 | 2012 | CarFast: achieving higher statement coverage faster · SIGSOFT FSE 2012 |
Software testing
test coverage |
0.1 | 1 | 2012 | CarFast: achieving higher statement coverage faster · SIGSOFT FSE 2012 |
Software testing › test process › test design
test input selection |
0.1 | 1 | 2012 | Automatically finding performance problems with feedback-directed learning software testing · ICSE 2012 |
Cloud and datacenter computing › utility computing › cloud pricing
spot market |
0.1 | 1 | 2020 | T-BASIR: Finding Shutdown Bugs for Cloud-Based Applications in Cloud Spot Markets · IEEE Trans. Parallel Distributed Syst. 2020 |
Privacy and data protection
anonymization |
0.1 | 1 | 2011 | Testing software in age of data privacy: a balancing act · SIGSOFT FSE 2011 |
Software testing
GUI testing |
0.1 | 1 | 2009 | Maintaining and evolving GUI-directed test scripts · ICSE 2009 |
Program analysis › error detection
API misuse detection |
0.1 | 1 | 2007 | Finding errors in components that exchange xml data · ASE 2007 |
Software maintenance and evolution
program comprehension |
0.1 | 1 | 2007 | Recovering and using use-case-diagram-to-source-code traceability links · ESEC/SIGSOFT FSE 2007 |
Requirements engineering and software design
requirements traceability |
0.1 | 1 | 2007 | Recovering and using use-case-diagram-to-source-code traceability links · ESEC/SIGSOFT FSE 2007 |
Program analysis › error detection
runtime error detection |
0.1 | 1 | 2007 | Finding errors in components that exchange xml data · ASE 2007 |
Program analysis
static analysis |
0.1 | 1 | 2007 | Finding errors in components that exchange xml data · ASE 2007 |
Software maintenance and evolution › traceability
traceability link recovery |
0.1 | 1 | 2007 | Recovering and using use-case-diagram-to-source-code traceability links · ESEC/SIGSOFT FSE 2007 |
Transaction processing and concurrency control
deadlock |
0.0 | 1 | 2013 | REDACT: preventing database deadlocks from application-based transactions · ESEC/SIGSOFT FSE 2013 |
Data mining › text mining
topic model |
0.0 | 1 | 2013 | ExPort: Detecting and visualizing API usages in large source code repositories · ASE 2013 |
Operating systems › resource management › process management
CPU scheduling |
0.0 | 1 | 2013 | Preventing database deadlocks in applications · ESEC/SIGSOFT FSE 2013 |
Empirical software engineering
developer studies |
0.0 | 1 | 2013 | Portfolio: Searching for relevant functions and their usages in millions of lines of code · ACM Trans. Softw. Eng. Methodol. 2013 |
Methods — techniques the papers use, named apart from their topics
program analysis · 0.7information retrieval · 0.6genetic algorithm · 0.4execution trace analysis · 0.4contrast data mining · 0.4system-call interposition · 0.4system call interposition · 0.4static analysis · 0.4visualization · 0.3relational topic model · 0.3SQL statement analysis · 0.3data privacy framework · 0.1
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2024 | Feedback-Directed Cross-Layer Optimization of Cloud-Based Functional Actor ApplicationsabstractEven though actor-based frameworks such as Akka have been used by thousands of companies for over a decade, it is very difficult to configure cloud-based functional actor applications in a way to minimize their response time and to utilize provisioned resources with the maximal efficacy at the computing distributed cloud cluster nodes where these applications are deployed. As a result, the performance-tuning process is ad-hoc, laborious, manual, tedious and very expensive.We developed a novel low-code approach for cross-layer optimization of actor-based distributed applications. In our method, runtime information is automatically collected and analyzed in parallel to the executing application using search-based genetic algorithms. These algorithms generate changes to the application design, which are automatically applied to regenerate the application while it continues to service clients’ requests. We applied our approach to automatically created distributed Akka applications demonstrating its effectiveness in finding an optimal configuration. Andrea Cappelletti, Mark Grechanik |
ISSRE | 2 |
| 2020 | T-BASIR: Finding Shutdown Bugs for Cloud-Based Applications in Cloud Spot MarketsabstractOne of the major advantages of cloud spot instances in cloud computing is to allow stakeholders to economically deploy their applications at much lower costs than that of other types of cloud instances. In exchange, spot instances are often exposed to revocations (i.e., terminations) by cloud providers. With spot instances becoming pervasive, terminations have become a part of the normal behavior of cloud-based applications; thus, these applications may be left in an incorrect state leading to certain bugs. Unfortunately, these applications are not designed or tested to deal with this behavior in the cloud environment, and as a result, the advantages of cloud spot instances could be significantly minimized or even entirely negated. We propose a novel solution to automatically find these bugs and locate their causes in the source code. We evaluate our solution using 10 popular open-source applications. The results show that our solution not only finds more instances and different types of these bugs compared to the random approach, but it also locates the causes of these bugs to help developers improve the design of the shutdown process and is more efficient in finding instances of these bugs since it interposes at the system call layer. Abdullah Alourani, Ajay D. Kshemkalyani, Mark Grechanik |
IEEE Trans. Parallel Distributed Syst. | 3 |
| 2019 | Testing for Bugs of Cloud-Based Applications Resulting from Spot Instance RevocationsabstractOne of the major advantages of cloud spot instances in cloud computing is to allow stakeholders to economically deploy their applications at much lower costs than that of other types of cloud instances. In exchange, spot instances are often exposed to revocations (i.e., terminations) by cloud providers. With spot instances becoming pervasive, terminations have become a part of the normal behavior of cloud-based applications; thus, these applications may be left in an incorrect state leading to certain bugs. Unfortunately, these applications are not designed or tested to deal with this behavior in the cloud environment, and as a result, the advantages of cloud spot instances could be significantly minimized or even entirely negated. We propose a novel solution to automatically find these bugs and locate their causes in the source code. We evaluate our solution using 10 popular open-source applications. The results show that our solution not only finds more instances and different types of these bugs compared to the random approach, but it also locates the causes of these bugs to help developers to improve the design of the shutdown process for cloud-based applications. Abdullah Alourani, Ajay D. Kshemkalyani, Mark Grechanik |
CLOUD | 3 |
| 2019 | Generating Integration Tests Automatically Using Frequent Patterns of Method Execution SequencesabstractIntegration testing is vitally important for ensuring software quality, since many serious software defects are not isolated in single components.Unfortunately, creating integration tests is often a manual and laborious effort.A fundamental problem of software testing is how to automatically create effective integration tests with oracles that find bugs efficiently.We created a novel approach for Automatically SyntheSizing Integration Software Tests (ASSIST) that automatically obtains models that describe frequently interacting components in software applications, thus reducing the number of synthesized integration tests and increasing their bug-finding power.In ASSIST, static and dynamic analyses are used along with carving runtime states to obtain test input data as well as oracles for the synthesized integration tests.We experimented with three Java applications and show that integration tests that are synthesized using ASSIST have comparable bug finding power with manually created integration tests. Mark Grechanik, Gurudev Devanla |
SEKE | 1 |
| 2018 | Differencing Graphical User InterfacesabstractGraphical User Interface (GUI)-based APplications (GAPs) are ubiquitous and provide a wealth of sophisticated services. Nontrivial GAPs evolve through many versions, and understanding how GUIs of different versions of GAPs differ is crucial for various software quality tasks such as testing, cross-platform UI comparison and project effort estimation. Yet despite the criticality of automating GUI differencing, it is a manual, tedious, and laborious task. We offer a novel approach for differencing GUIs that combines tree edit distance measure algorithms with accessibility technologies for obtaining GUI models in a non-intrusive, platform and language-independent way, and it does not require the source code of GAPs. We developed a tool called GUI DifferEntiator (GUIDE) that allows users to difference GUIs of running GAPs. To evaluate GUIDE, we created an experimental platform that generates random GUIs with controlled differentials among them that serve as oracles. GUIDE enables researchers to plug-and-play various GUI differencing algorithms and to automatically run experiments. We evaluated GUIDE on 5,000 pairs of generated complex GUIs and three open-source GAPs and the results of our evaluation suggest that GUIDE can find differences between GUIs with a high degree of automation and precision. Mark Grechanik, Chi Wu Mao, Ankush Baisal, David Rosenblum, B. M. Mainul Hossain |
QRS | 1 |
| 2018 | Search-Based Stress Testing the Elastic Resource Provisioning for Cloud-Based ApplicationsabstractOne of the main benefits of cloud computing is to enable customers to deploy their applications on a cloud infrastructure that provisions resources (e.g., memory) to these applications on as-needed basis. Unfortunately, certain workloads can cause customers to pay for resources that are provisioned to, but not fully used by their applications, and as a result their performances then deteriorate beyond some acceptable thresholds and the benefits of cloud computing may be significantly reduced or even completely obliterated. We propose a novel approach to automatically discover these workloads to stress test elastic resource provisioning for cloud-based applications. We experimented with four non-trivial applications on the Microsoft Azure cloud to determine how effectively and efficiently our approach explores a very large space of the workload parameters’ values. The results show that our approach discovers the first irregular workload faster in the search space of over $$10^{40}$$ input combinations compared to the random approach, and it discovers more irregular workloads that result in much higher costs and performance degradations for applications in the cloud. Abdullah Alourani, Md. Abu Naser Bikas, Mark Grechanik |
SSBSE | 3 |
| 2017 | Automatically detecting integrity violations in database-centric applicationsabstractDatabase-centric applications (DCAs) are widely used by many companies and organizations to perform various control and analytical tasks using large databases. Real-world databases are described by complex schemas that oftentimes contain hundreds of tables consisting of thousands of attributes. However, when software engineers develop DCAs, they may write code that can inadvertently violate the integrity of these databases. Alternatively, business analysts and database administrators can also make errors that lead to integrity violations (semantic bugs). To detect these violations, stakeholders must create assertions that check the validity of the data in the rows of the database tables. Unfortunately, creating assertions is a manual, laborious and error-prone task. Thus, a fundamental problem of testing DCAs is how to find such semantic bugs automatically. We propose a novel solution, namely DACITE, that enables stakeholders to automatically obtain constraints that semantically relate database attributes and code statements using a combination of static analysis of the source code and associative rule mining of the databases. We rely on SAT-solvers to validate if a solution to the combined constraints exists and issue warnings on possible semantic bugs to stakeholders. We evaluated our approach on eight open-source DCAs and our results suggest that semantic bugs can be found automatically with high precision. The results of the study with developers show that warnings produced by DACITE are useful and enable them to find semantic bugs faster. Boyang Li 0002, Denys Poshyvanyk, Mark Grechanik |
ICPC | 3 |
| 2017 | FOREPOST: finding performance problems automatically with feedback-directed learning software testing
Aswathy Nair, Mark Grechanik, Denys Poshyvanyk |
Empir. Softw. Eng. | 3 |
| 2016 | Mining performance regression inducing code changes in evolving softwareabstractDuring software evolution, the source code of a system frequently changes due to bug fixes or new feature requests. Some of these changes may accidentally degrade performance of a newly released software version. A notable problem of regression testing is how to find problematic changes (out of a large number of committed changes) that may be responsible for performance regressions under certain test inputs. Denys Poshyvanyk, Mark Grechanik |
MSR | 3 |
| 2016 | Mutation Integration TestingabstractIn integration testing, integrated software modules or components are evaluated as a whole to determine if they behave correctly. Mutation testing is recognized as one of the strongest approaches for evaluating the effectiveness of test suites, and it is important to generate effective mutants efficiently for integration tests. However, it is difficult to generate integration mutants that create an error state in one component with certain assurances that this error state will affect computations in some other components. Unfortunately, little research exists that addresses this big and important problem to improve the quality of integration test suites. In this paper, we propose a theory and a solution for generating mutants that specifically target integration tests. We formulate a fault model for integration bugs that uses static dataflow analysis to obtain information about how integrated components interact in an application. Integration mutants are generated by applying mutation operators to instructions that lie in dataflow paths among integrated components. We implemented our approach and evaluated it on five open-source applications. In comparison to muJava, our approach reduces the number of generated mutants by up to approximately 19 times with a strong power to determine inadequacies in integration test suites. Mark Grechanik, Gurudev Devanla |
QRS | 1 |
| 2016 | Enhancing Rules For Cloud Resource Provisioning Via Learned Software Performance ModelsabstractIn cloud computing, stakeholders deploy and run their software applications on a sophisticated infrastructure that is owned and managed by third-party providers. The ability of a given cloud infrastructure to effectively re-allocate resources to applications is referred to as elasticity. To enable elasticity, programmers study the behavior of applications and write scripts that guide the cloud to provision resources for these applications. This is an imprecise, laborious, manual and expensive approach that drastically increases the cost of application deployment and maintenance in the cloud. We propose an approach, coined as Provisioning Resources with Experimental SofTware mOdeling (PRESTO), to automatically learn behavioral models of software applications during performance testing in order to recommend programmers how to improve provisioning strategies that guide the cloud to (de)allocate resources to these applications. We applied PRESTO to two software applications and our experiments demonstrate that with PRESTO programmers can create rules for provisioning resources with a high degree of precision when the performance is about to worsen, so that the applications maintain their throughputs at the desired level. Mark Grechanik, Denys Poshyvanyk, Adam A. Porter |
ICPE | 1 |
| 2016 | RUGRAT: Evaluating program analysis and testing tools and compilers with large generated random benchmark applicationsabstractBenchmarks are heavily used in different areas of computer science to evaluate algorithms and tools. In program analysis and testing, open-source and commercial programs are routinely used as benchmarks to evaluate different aspects of algorithms and tools. Unfortunately, many of these programs are written by programmers who introduce different biases, not to mention that it is very difficult to find programs that can serve as benchmarks with high reproducibility of results. We propose a novel approach for generating random benchmarks for evaluating program analysis and testing tools and compilers. Our approach uses stochastic parse trees, where language grammar production rules are assigned probabilities that specify the frequencies with which instantiations of these rules will appear in the generated programs. We implemented our tool for Java and applied it to generate a set of large benchmark programs of up to 5M lines of code each with which we evaluated different program analysis and testing tools and compilers. The generated benchmarks let us independently rediscover several issues in the evaluated tools. Copyright © 2014 John Wiley & Sons, Ltd. Ishtiaque Hussain, Christoph Csallner, Mark Grechanik, Qing Xie 0003, Kunal Taneja, B. M. Mainul Hossain |
Softw. Pract. Exp. | 3 |
| 2015 | 1st International Workshop on Complex faUlts and Failures in LargE Software Systems (COUFLESS 2015)abstractCOUFLESS is a one-day workshop that starts with keynote speaker, Prof. Kishor S. Trivedi from Duke University, North Carolina, USA whose talk's title is titled: "Why Does Software Fail and What Should be Done About It?" A total of 15 papers were submitted to COUFLESS with 53 authors from nine countries and each paper received at least three reviews by the 26 members of the program committee from 11 countries, making it a truly International Workshop. After a long discussion, 11 papers were accepted with the acceptance rate of 73%. Accepted papers address the issues of localizing and debugging complex faults in large-scale software applications. Mark Grechanik, Allen P. Nikora |
ICSE (2) | 1 |
| 2015 | Automating performance bottleneck detection using search-based application profilingabstractApplication profiling is an important performance analysis technique, when an application under test is analyzed dynamically to determine its space and time complexities and the usage of its instructions. A big and important challenge is to profile nontrivial web applications with large numbers of combinations of their input parameter values. Identifying and understanding particular subsets of inputs leading to performance bottlenecks is mostly manual, intellectually intensive and laborious procedure. We propose a novel approach for automating performance bottleneck detection using search-based input-sensitive application profiling. Our key idea is to use a genetic algorithm as a search heuristic for obtaining combinations of input parameter values that maximizes a fitness function that represents the elapsed execution time of the application. We implemented our approach, coined as Genetic Algorithm-driven Profiler (GA-Prof) that combines a search-based heuristic with contrast data mining of execution traces to accurately determine performance bottlenecks. We evaluated GA-Prof to determine how effectively and efficiently it can detect injected performance bottlenecks into three popular open source web applications. Our results demonstrate that GA-Prof efficiently explores a large space of input value combinations while automatically and accurately detecting performance bottlenecks, thus suggesting that it is effective for automatic profiling. Du Shen, Denys Poshyvanyk, Mark Grechanik |
ISSTA | 4 |
| 2015 | Enhancing Performance And Reliability of Rule Management PlatformsabstractRulE Management Platforms (REMPs) enable software engineers to represent programming logic as conditional sentences that relate statements of facts. A key benefit of REMPs is that they make software adaptable by burying the complexity of rule invocation in their engines, so that programmers can concentrate on business aspects of highly modular rules. Naturally, rule-driven applications are expected to have excellent performance, since REMP engines should be able to invoke highly modular rules in parallel in response to asserting different facts. In reality, it is very difficult to parallelize rule executions, since it leads to the loss of reliability and adaptability of rule-driven applications. Mark Grechanik, B. M. Mainul Hossain |
ICPE | 1 |
| 2014 | Sanitizing and Minimizing Databases for Software Application Test OutsourcingabstractTesting software applications that use nontrivial databases is increasingly outsourced to test centers in order to achieve lower cost and higher quality. Not only do different data privacy laws prevent organizations from sharing this data with test centers because databases contain sensitive information, but also this situation is aggravated by big data - it is time consuming and difficult to anonymize, distribute, and test with large databases. Deleting data randomly often leads to significantly worsened test coverages and fewer uncovered faults, thereby reducing the quality of software applications. We propose a novel approach for Protecting and mInimizing databases for Software TestIng taSks (PISTIS) that both sanitizes and minimizes a database that comes along with an application. PISTIS uses a weight-based data clustering algorithm that partitions data in the database using information obtained using program analysis that describes how this data is used by the application. For each cluster, a centroid object is computed that represents different persons or entities in the cluster, and we use associative rule mining to compute and use constraints to ensure that the centroid objects are representative of the general population of the data in the cluster. Doing so also sanitizes information, since these centroid objects replace the original data to make it difficult for attackers to infer sensitive information. Thus, we reduce a large database to a few centroid objects and we show in our experiments with two applications that test coverage stays within a close range to its original level. Boyang Li 0002, Mark Grechanik, Denys Poshyvanyk |
ICST | 2 |
| 2014 | Redacting sensitive information in software artifactsabstractIn the past decade, there have been many well-publicized cases of source code leaking from different well-known companies. These leaks pose a serious problem when the source code contains sensitive information encoded in its identifier names and comments. Unfortunately, redacting the sensitive information requires obfuscating the identifiers, which will quickly interfere with program comprehension. Program comprehension is key for programmers in understanding the source code, so sensitive information is often left unredacted. Mark Grechanik, Collin McMillan, Tathagata Dasgupta, Denys Poshyvanyk, Malcom Gethers |
ICPC | 1 |
| 2014 | On the Accuracy of Forward Dynamic Slicing and Its Effects on Software MaintenanceabstractDynamic slicing is a practical and popular analysis technique used in various software-engineering tasks. Dynamic slicing is known to be incomplete because it analyzes only a subset of all possible executions of a program. However, it is less known that its results may inaccurately represent the dependencies that occur in those executions. Some researchers have identified this problem and developed extensions such as relevant slicing, which incorporates static information. Yet, dynamic slicing continues to be widely used, even though the extent of its inaccuracy is not well understood, which can affect the benefits of this analysis. In this paper, we present an approach to assess the accuracy of forward dynamic slices, which are used in software maintenance and evolution tasks. Because finding all actual dependencies is an undecidable problem, our approach instead computes bounds of the precision and recall of forward dynamic slices. Our approach uses sensitivity analysis and execution differencing to find a subset of all program statements that truly depend at runtime on another statement. Using this approach, we studied the accuracy of many forward dynamic slices from a variety of Java applications. Our results show that forward dynamic slicing can have low recall -- for dependencies in the analyzed executions -- and some potential imprecision. We also conducted a case study that shows how this inaccuracy affects a software maintenance task. To the best of our knowledge, ours is the first work that quantifies the intrinsic limitations of dynamic slicing. Siyuan Jiang, Raúl A. Santelices, Mark Grechanik, Haipeng Cai |
SCAM | 3 |
| 2014 | On using machine learning to automatically classify software applications into domain categories
Mario Linares-Vásquez, Collin McMillan, Denys Poshyvanyk, Mark Grechanik |
Empir. Softw. Eng. | 4 |
| 2013 | Enhancing Software Traceability by Automatically Expanding Corpora with Relevant DocumentationabstractSoftware trace ability is the ability to describe and follow the life of a requirement in both a forward and backward direction by defining relationships to related development artifacts. A plethora of different trace ability recovery approaches use information retrieval techniques, which depend on the quality of the textual information in requirements and software artifacts. Not only is it important that stakeholders use meaningful names in these artifacts, but also it is crucial that the same names are used to specify the same concepts in different artifacts. Unfortunately, the latter is difficult to enforce and as a result, software trace ability approaches are not as efficient and effective as they could be - to the point where it is questionable whether the anticipated economic and quality benefits were indeed achieved. We propose a novel and automatic approach for expanding corpora with relevant documentation that is obtained using external function call documentation and sets of relevant words, which we implemented in Trace Lab. We experimented with three Java applications and we show that using our approach the precision of recovering trace ability links was increased by up to 31% in the best case and by approximately 9% on average. Tathagata Dasgupta, Mark Grechanik, Evan Moritz, Bogdan Dit, Denys Poshyvanyk |
ICSM | 2 |
| 2013 | Testing Database-Centric Applications for Causes of Database DeadlocksabstractMany organizations deploy applications that use databases by sending Structured Query Language (SQL) statements to them and obtaining data that result from executions of these statements. Since applications often share the same databases concurrently, database deadlocks routinely occur in these databases. Testing applications to determine how they cause database deadlocks is important as part of ensuring correctness, reliability, and performance of these applications. Unfortunately, it is very difficult to reproduce database deadlocks, since it involves different factors such as the precise interleavings in executing SQL statements. We created a novel approach for Systematic TEsting in Presence of DAtabase Deadlocks (STEPDAD) that enables testers to instantiate database deadlocks in applications with a high level of automation and frequency. We implemented STEPDAD and experimented with three applications. On average, STEPDAD detected a number of database deadlocks exceeding the deadlocks obtained with the baseline approach by more than an order of magnitude. In some cases, STEPDAD reproduced a database deadlock after running an application only twice, while no database deadlocks could be obtained after ten runs using the baseline approach. Mark Grechanik, B. M. Mainul Hossain, Ugo A. Buy |
ICST | 1 |
| 2013 | ExPort: Detecting and visualizing API usages in large source code repositoriesabstractThis paper presents a technique for automatically mining and visualizing API usage examples. In contrast to previous approaches, our technique is capable of finding examples of API usage that occur across several functions in a program. This distinction is important because of a gap between what current API learning tools provide and what programmers need: current tools extract relatively small examples from single files/functions, even though programmers use APIs to build large software. The small examples are helpful in the initial stages of API learning, but leave out details that are helpful in later stages. Our technique is intended to fill this gap. It works by representing software as a Relational Topic Model, where API calls and the functions that use them are modeled as a document network. Given a starting API, our approach can recommend complex API usage examples mined from a repository of over 14 million Java methods. Evan Moritz, Mario Linares-Vásquez, Denys Poshyvanyk, Mark Grechanik, Collin McMillan, Malcom Gethers |
ASE | 4 |
| 2013 | Preventing database deadlocks in applicationsabstractMany organizations deploy applications that use databases by sending Structured Query Language (SQL) statements to them and obtaining data that result from the execution of these statements. Since applications often share the same databases concurrently, database deadlocks routinely occur in these databases resulting in major performance degradation in these applications. Database engines do not prevent database deadlocks for the same reason that the schedulers of operating system kernels do not preempt processes in a way to avoid race conditions and deadlocks - it is not feasible to find an optimal context switching schedule quickly for multiple processes (and SQL statements), and the overhead of doing it is prohibitive. Mark Grechanik, B. M. Mainul Hossain, Ugo A. Buy, Haisheng Wang |
ESEC/SIGSOFT FSE | 1 |
| 2013 | REDACT: preventing database deadlocks from application-based transactionsabstractIn this demonstration, we will present a database deadlocks prevention system that visualizes our algorithm for detecting hold-and-wait cycles that specify how resources (e.g., database tables) are locked and waited on to be locked during executions of SQL statements and utilizes those cycles information to prevent database deadlocks automatically. B. M. Mainul Hossain, Mark Grechanik, Ugo A. Buy, Haisheng Wang |
ESEC/SIGSOFT FSE | 2 |
| 2013 | Portfolio: Searching for relevant functions and their usages in millions of lines of codeabstractDifferent studies show that programmers are more interested in finding definitions of functions and their uses than variables, statements, or ordinary code fragments. Therefore, developers require support in finding relevant functions and determining how these functions are used. Unfortunately, existing code search engines do not provide enough of this support to developers, thus reducing the effectiveness of code reuse. We provide this support to programmers in a code search system called Portfolio that retrieves and visualizes relevant functions and their usages. We have built Portfolio using a combination of models that address surfing behavior of programmers and sharing related concepts among functions. We conducted two experiments: first, an experiment with 49 C/C++ programmers to compare Portfolio to Google Code Search and Koders using a standard methodology for evaluating information-retrieval-based engines; and second, an experiment with 19 Java programmers to compare Portfolio to Koders. The results show with strong statistical significance that users find more relevant functions with higher precision with Portfolio than with Google Code Search and Koders. We also show that by using PageRank, Portfolio is able to rank returned relevant functions more efficiently. Collin McMillan, Denys Poshyvanyk, Mark Grechanik, Qing Xie 0003 |
ACM Trans. Softw. Eng. Methodol. | 3 |
| 2012 | Automatically finding performance problems with feedback-directed learning software testingabstractA goal of performance testing is to find situations when applications unexpectedly exhibit worsened characteristics for certain combinations of input values. A fundamental question of performance testing is how to select a manageable subset of the input data faster to find performance problems in applications automatically. We offer a novel solution for finding performance problems in applications automatically using black-box software testing. Our solution is an adaptive, feedback-directed learning testing system that learns rules from execution traces of applications and then uses these rules to select test input data automatically for these applications to find more performance problems when compared with exploratory random testing. We have implemented our solution and applied it to a medium-size application at a major insurance company and to an open-source application. Performance problems were found automatically and confirmed by experienced testers and developers. Mark Grechanik, Qing Xie 0003 |
ICSE | 1 |
| 2012 | Detecting similar software applicationsabstractAlthough popular text search engines allow users to retrieve similar web pages, source code search engines do not have this feature. Detecting similar applications is a notoriously difficult problem, since it implies that similar highlevel requirements and their low-level implementations can be detected and matched automatically for different applications. We created a novel approach for automatically detecting Closely reLated ApplicatioNs (CLAN) that helps users detect similar applications for a given Java application. Our main contributions are an extension to a framework of relevance and a novel algorithm that computes a similarity index between Java applications using the notion of semantic layers that correspond to packages and class hierarchies. We have built CLAN and we conducted an experiment with 33 participants to evaluate CLAN and compare it with the closest competitive approach, MUDABlue. The results show with strong statistical significance that CLAN automatically detects similar applications from a large repository of 8,310 Java applications with a higher precision than MUDABlue. Collin McMillan, Mark Grechanik, Denys Poshyvanyk |
ICSE | 2 |
| 2012 | CarFast: achieving higher statement coverage fasterabstractTest coverage is an important metric of software quality, since it indicates thoroughness of testing. In industry, test coverage is often measured as statement coverage. A fundamental problem of software testing is how to achieve higher statement coverage faster, and it is a difficult problem since it requires testers to cleverly find input data that can steer execution sooner toward sections of application code that contain more statements. B. M. Mainul Hossain, Ishtiaque Hussain, Christoph Csallner, Mark Grechanik, Kunal Taneja, Qing Xie 0003 |
SIGSOFT FSE | 5 |
| 2012 | Exemplar: A Source Code Search Engine for Finding Highly Relevant ApplicationsabstractA fundamental problem of finding software applications that are highly relevant to development tasks is the mismatch between the high-level intent reflected in the descriptions of these tasks and low-level implementation details of applications. To reduce this mismatch we created an approach called EXEcutable exaMPLes ARchive (Exemplar) for finding highly relevant software projects from large archives of applications. After a programmer enters a natural-language query that contains high-level concepts (e.g., MIME, datasets), Exemplar retrieves applications that implement these concepts. Exemplar ranks applications in three ways. First, we consider the descriptions of applications. Second, we examine the Application Programming Interface (API) calls used by applications. Third, we analyze the dataflow among those API calls. We performed two case studies (with professional and student developers) to evaluate how these three rankings contribute to the quality of the search results from Exemplar. The results of our studies show that the combined ranking of application descriptions and API documents yields the most-relevant search results. We released Exemplar and our case study data to the public. Collin McMillan, Mark Grechanik, Denys Poshyvanyk, Qing Xie 0003 |
IEEE Trans. Software Eng. | 2 |
| 2011 | Portfolio: finding relevant functions and their usageabstractDifferent studies show that programmers are more interested in finding definitions of functions and their uses than variables, statements, or arbitrary code fragments [30, 29, 31]. Therefore, programmers require support in finding relevant functions and determining how those functions are used. Unfortunately, existing code search engines do not provide enough of this support to developers, thus reducing the effectiveness of code reuse. Collin McMillan, Mark Grechanik, Denys Poshyvanyk, Qing Xie 0003 |
ICSE | 2 |
| 2011 | Portfolio: a search engine for finding functions and their usagesabstractIn this demonstration, we present a code search system called Portfolio that retrieves and visualizes relevant functions and their usages. We will show how chains of relevant functions and their usages can be visualized to users in response to their queries. Collin McMillan, Mark Grechanik, Denys Poshyvanyk, Qing Xie 0003 |
ICSE | 2 |
| 2011 | Categorizing software applications for maintenanceabstractSoftware repositories hold applications that are often categorized to improve the effectiveness of various maintenance tasks. Properly categorized applications allow stakeholders to identify requirements related to their applications and predict maintenance problems in software projects. Unfortunately, for different legal and organizational reasons the source code is often not available, thus making it difficult to automatically categorize binary executables of software applications. In this paper, we propose a novel approach in which we use Application Programming Interface (API) calls from third-party libraries as attributes for automatic categorization of software applications that use these API calls. API calls can be extracted from source code and more importantly, from the byte-code of applications, thus making automatic categorization approaches applicable to closed source repositories. We evaluate our approach along with other machine learning algorithms for software categorization on two large Java repositories: an open-source repository containing 3,286 projects and a closed-source one with 745 applications. Our contribution is twofold: not only do we propose a new approach that makes it possible to categorize software projects without any source code using a small number of API calls as attributes, but also we carried out the first comprehensive empirical evaluation of automatic categorization approaches. Collin McMillan, Mario Linares-Vásquez, Denys Poshyvanyk, Mark Grechanik |
ICSM | 4 |
| 2011 | Testing software in age of data privacy: a balancing actabstractDatabase-centric applications (DCAs) are common in enterprise computing, and they use nontrivial databases. Testing of DCAs is increasingly outsourced to test centers in order to achieve lower cost and higher quality. When proprietary DCAs are released, their databases should also be made available to test engineers. However, different data privacy laws prevent organizations from sharing this data with test centers because databases contain sensitive information. Currently, testing is performed with anonymized data, which often leads to worse test coverage (such as code coverage) and fewer uncovered faults, thereby reducing the quality of DCAs and obliterating benefits of test outsourcing. To address this issue, we offer a novel approach that combines program analysis with a new data privacy framework that we design to address constraints of software testing. With our approach, organizations can balance the level of privacy with needs of testing. We have built a tool for our approach and applied it to nontrivial Java DCAs. Our results show that test coverage can be preserved at a higher level by anonymizing data based on their effect on corresponding DCAs. Kunal Taneja, Mark Grechanik, Rayid Ghani, Tao Xie 0001 |
SIGSOFT FSE | 2 |
| 2010 | An empirical investigation into a large-scale Java open source code repositoryabstractGetting insight into different aspects of source code artifacts is increasingly important – yet there is little empirical research using large bodies of source code, and subsequently there are not much statistically significant evidence of common patterns and facts of how programmers write source code. We pose 32 research questions, explain rationale behind them, and obtain facts from 2,080 randomly chosen Java applications from Sourceforge. Among these facts we find that most methods have one or zero arguments or they do not return any values, few methods are overridden, most inheritance hierarchies have the depth of one, close to 50 % of classes are not explicitly inherited from any classes, and the number of methods is strongly correlated with the number of fields in a class. Categories and Subject Descriptors Mark Grechanik, Collin McMillan, Luca DeFerrari, Marco Comi, Stefano Crespi-Reghizzi, Denys Poshyvanyk, Qing Xie 0003, Carlo Ghezzi |
ESEM | 1 |
| 2010 | A search engine for finding highly relevant applicationsabstractA fundamental problem of finding applications that are highly relevant to development tasks is the mismatch between the high-level intent reflected in the descriptions of these tasks and low-level implementation details of applications. To reduce this mismatch we created an approach called Exemplar (EXEcutable exaMPLes ARchive) for finding highly relevant software projects from large archives of applications. After a programmer enters a natural-language query that contains high-level concepts (e.g., MIME, data sets), Exemplar uses information retrieval and program analysis techniques to retrieve applications that implement these concepts. Our case study with 39 professional Java programmers shows that Exemplar is more effective than Sourceforge in helping programmers to quickly find highly relevant applications. Mark Grechanik, Qing Xie 0003, Collin McMillan, Denys Poshyvanyk, Chad M. Cumby |
ICSE (1) | 1 |
| 2010 | Exemplar: EXEcutable exaMPLes ARchiveabstractSearching for applications that are highly relevant to development tasks is challenging because the high-level intent reflected in the descriptions of these tasks doesn't usually match the low-level implementation details of applications. In this demo we show a novel code search engine called Exemplar (EXEcutable exaMPLes ARchive) to bridge this mismatch. Exemplar takes natural-language query that contains high-level concepts (e.g., MIME, data sets) as input, then uses information retrieval and program analysis techniques to retrieve applications that implement these concepts. Mark Grechanik, Qing Xie 0003, Collin McMillan, Denys Poshyvanyk, Chad M. Cumby |
ICSE (2) | 1 |
| 2010 | Is Data Privacy Always Good for Software Testing?abstractDatabase-centric applications (DCAs) are common in enterprise computing, and they use nontrivial databases. Testing of DCAs is increasingly outsourced to test centers in order to achieve lower cost and higher quality. When releasing proprietary DCAs, its databases should also be made available to test engineers, so that they can test using real data. Testing with real data is important, since fake data lacks many of the intricate semantic connections among the original data elements. However, different data privacy laws prevent organizations from sharing these data with test centers because databases contain sensitive information. Currently, testing is performed with fake data that often leads to worse code coverage and fewer uncovered bugs, thereby reducing the quality of DCAs and obliterating benefits of test outsourcing. We show that a popular data anonymization algorithm called k-anonymity seriously degrades test coverage of DCAs. We propose an approach that uses program analysis to guide selective application of k-anonymity. This approach helps protect sensitive data in databases while retaining testing efficacy. Our results show that for small values of k = 7, test coverage drops to less than 30% from the original coverage of more than 70%, thus making it difficult to achieve good quality when testing DCAs while applying data privacy. Mark Grechanik, Christoph Csallner, Qing Xie 0003 |
ISSRE | 1 |
| 2009 | Maintaining and evolving GUI-directed test scriptsabstractSince manual black-box testing of GUI-based applications (GAPs) is tedious and laborious, test engineers create test scripts to automate the testing process. These test scripts interact with GAPs by performing actions on their GUI objects. An extra effort that test engineers put in writing test scripts is paid off when these scripts are run repeatedly. Unfortunately, releasing new versions of GAPs with modified GUIs breaks their corresponding test scripts thereby obliterating benefits of test automation. We offer a novel approach for maintaining and evolving test scripts so that they can test new versions of their respective GAPs. We built a tool to implement our approach, and we conducted a case study with forty five professional programmers and test engineers to evaluate this tool. The results show with strong statistical significance that users find more failures and report fewer false positives (p < 0.02) in test scripts with our tool than with a flagship industry product and a baseline manual approach. Our tool is lightweight and it takes less than eight seconds to analyze approximately 1KLOC of test scripts. Mark Grechanik, Qing Xie 0003 |
ICSE | 1 |
| 2009 | Experimental assessment of manual versus tool-based maintenance of GUI-directed test scriptsabstractSince manual black-box testing of GUI-based APplications (GAPs) is tedious and laborious, test engineers create test scripts to automate the testing process. These test scripts interact with GAPs by performing actions on their GUI objects. As GAPs evolve, testers should fix their corresponding test scripts so that they can reuse them to test successive releases of GAPs. Currently, there are two main modes of maintaining test scripts: tool-based and manual. In practice, there is no consensus what approach testers should use to maintain test scripts. Test managers make their decisions ad hoc, based on their personal experience and perceived benefits of the tool-based approach versus the manual. In this paper we describe a case study with forty five professional programmers and test engineers to experimentally assess the tool-based approach for maintaining GUI-directed test scripts versus the manual approach. Based on the results of our case study and considering the high cost of the programmers' time and the lower cost of the time of test engineers, and considering that programmers often modify GAP objects in the process of developing software we recommend organizations to supply programmers with testing tools that enable them to fix test scripts faster so that these scripts can unit test software. The other side of our recommendation is that experienced test engineers are likely to be as productive with the manual approach as with the tool-based approach, and we consequently recommend that organizations do not need to provide each tester with an expensive tool license to fix test scripts. Mark Grechanik, Qing Xie 0003 |
ICSM | 1 |
| 2009 | Guide: A GUI differentiatorabstractApplications with Graphical User Interfaces (GUIs) are ubiquitous. Nontrivial GUI-based applications (GAPs) evolve frequently, and understanding how GUIs of different versions of GAPs differ is crucial for various tasks such as testing and project effort estimation. We offer a novel approach for comparing GUIs. We built a tool called GUI DifferEntiator (GUIDE) that allows users to visualize differences between GUIs of running GAPs automatically, so that the identified changes can be served as guidance to test the new release of the GAP or to estimate the effort of a project. Qing Xie 0003, Mark Grechanik, Chad M. Cumby |
ICSM | 2 |
| 2009 | Inferring Types of References to GUI Objects in Test ScriptsabstractSince manual black-box testing of GUI-based applications (GAPs) is tedious and laborious, test engineers create test scripts to automate the testing process. These test scripts interact with GAPs by performing actions on their GUI objects. Unlike conventional languages that require programmers to declare types of variables explicitly, test script statements reference GUI objects using their properties (e.g., location, color, size, etc). The absence of type information exacerbates the process of understanding test scripts, making maintenance and evolution of these scripts expensive and prohibitive, thus obliterating benefits of test automation. We offer a novel approach for type inference of GUI object references (TIGOR) in test scripts. TIGOR makes types of GUI objects explicit in the source code of scripts, enabling test engineers to reason more effectively about the interactions between operations in complex test scripts and GUI objects that these operations reference. We describe our implementation and give an algorithm for automatically inferring types of GUI objects. We built a tool and evaluated it on different GAPs. Our experience suggests that TIGOR is practical and efficient, and it yields appropriate types of GUI objects. Mark Grechanik, Qing Xie 0003 |
ICST | 2 |
| 2008 | REST: A tool for reducing effort in script-based testingabstractSince manual black-box testing of GUI-based APplications (GAPs) is tedious and laborious, test engineers create test scripts to automate the testing process. These test scripts interact with GAPs by performing actions on their GUI objects. An extra effort that test engineers put in writing test scripts is paid off when these scripts are run repeatedly. Unfortunately, releasing new versions of GAPs breaks their corresponding test scripts thereby obliterating benefits of test automation. We propose a tool called Reducing Effort in Script-based Testing (REST) for guiding test personnel through changes in test scripts so that they can use these modified scripts to test new versions of their respective GAPs. During demonstration of REST we will show how this tool enables test personnel to maintain and evolve test scripts with a high degree of automation and precision. Qing Xie 0003, Mark Grechanik |
ICSM | 2 |
| 2007 | Automatic Test Generation From GUI Applications For Testing Web ServicesabstractGraphical User Interface (GUI) Applications (GAPs) are ubiquitous and provide various services. Since many GAPs are not designed to exchange information (i.e., intemperate), companies replace legacy GAPs with web services, that are designed to intemperate over the Internet. However, it is laborious and inefficient to create unit test cases to test the web services. We propose a novel approach for generating tests for web services from legacy GAPs. This approach combines accessibility technologies for accessing and controlling GAPs in a uniform way with a visualization mechanism that enables nonprogrammers to generate unit test cases for web services by performing drag-and-drop operations on GUI elements of legacy GAPs. We built a tool based on our approach, and we used this tool to generate unit test cases from different GAPs. We believe that our approach is unique, and our evaluation suggests that our approach is effective and it can be used to generate test cases from nontrivial GAPs. Kevin M. Conroy, Mark Grechanik, Matthew Hellige, Edy S. Liongosari, Qing Xie 0003 |
ICSM | 2 |
| 2007 | Finding errors in components that exchange xml dataabstractTwo or more components (e.g., objects, modules, or programs) interoperate when they exchange data, such as XML data. Using Application Programming Interface (API) calls exported by XML parsers remains a primary mode of accessing and manipulating XML, and these API calls lead to various run-time errors in components that exchange XML data. Currently, no tool checks the source code of interoperating components for potential flaws caused by third-party API calls that lead to incorrect XML data exchanges and runtime errors, even when components are located within the same application Mark Grechanik |
ASE | 1 |
| 2007 | Smart: a tool for application reference testingabstractGraphical User Interface (GUI) APplications (GAPs) are ubiquitous and provide various services. Since many GAPs are not designed to exchange information (i.e., interoperate), companies replace legacy GAPs with web services, that are designed to interoperate over the Internet. However, it is laborious and inefficient to create unit test cases to test the web services. Qing Xie 0003, Mark Grechanik, Matthew Hellige |
ASE | 2 |
| 2007 | Recovering and using use-case-diagram-to-source-code traceability linksabstractUse case diagrams (UCDs) are widely used to describe requirements and desired functionality of software products. However, UCDs are loosely linked to source code, and maintaining traces between the source code and elements of UCDs is a manual, tedious, and laborious process. These traces help programmers to understand code that they maintain and evolve. Mark Grechanik, Kathryn S. McKinley, Dewayne E. Perry |
ESEC/SIGSOFT FSE | 1 |
| 2005 | Using AOP to Monitor and Administer Software for Grid Computing EnvironmentsabstractMonitoring is a task of collecting measurements that reflect the state of a system. Administration is a collection of tasks for control and manipulation of computer systems. Monitoring and Administering computer Resources (MARS) in a distributed grid computing environment (i.e. a distributed environment for coordinated resource sharing and problem solving in dynamic, multi-institutional virtual organizations) is an important, expensive, and critical task. We present a novel solution based on applying crosscuts using binary rewriters and an event-based model that allows developers to create non-trivial MARS programs easily and uniformly. Our approach converts low-level API resource calls into system-wide events that MARS programs can monitor. This is accomplished by introducing advice that contains event-generating code at join points in programs that represent computer resources. We categorize low-level resource APIs by imposing a transactional metaphor to simplify the complexity of interactions between resources and to enable reasoning about MARS programs. We report both a case study and simulation that supports the viability of our approach. Mark Grechanik, Dewayne E. Perry, Don S. Batory |
COMPSAC (1) | 1 |
| 2004 | Design of Large-Scale Polylingual SystemsabstractBuilding systems from existing applications written in two or more languages is common practice. Such systems are polylingual. Polylingual systems are relatively easy to build when the number of APIs needed to achieve language interoperability is small. However, when the number of distinct APIs become large, maintaining and evolving polylingual systems becomes a notoriously difficult task. In this paper, we present a simple, practical, and effective way to develop, maintain, and evolve large-scale polylingual systems. Our approach relies on recursive type systems whose instances can be manipulated by reflection. Foreign objects (i.e. objects that are not defined in a host programming language) are abstracted as graphs and path expressions are used for accessing and manipulating data. Path expressions are implemented by type reification - turning foreign type instances into first-class objects and enabling access to and manipulation of them in a host programming language. Doing this results in multiple benefits, including coding simplicity and uniformity that we demonstrate in a complex commercial project. Mark Grechanik, Don S. Batory, Dewayne E. Perry |
ICSE | 1 |
| 2002 | Integrating and Reusing GUI-Driven Applications
Mark Grechanik, Don S. Batory, Dewayne E. Perry |
ICSR | 1 |