Demo Data from VLDB 2026 / reviewers in the wild / expert
Suresh Thummalapenta
dblp:79/6558
· DBLP profile ↗
25ranked-venue papers
14as first author
0since 2021 · last 2020
—ORCID · none
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 24 · 14 first-authorSystems, architecture and hardware · 1Databases, data management, data science and information retrieval · 1 · 1 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
17 papers |
Software testing · 64% Software maintenance and evolution · 17% Empirical software engineering · 12% | |
| Network and information security
2 papers |
Web and mobile security · 57% Authentication and access control · 43% |
Topics — the 29 heaviest of 29, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Software testing
flaky test |
0.8 | 2 | 2020 | A study on the lifecycle of flaky tests · ICSE 2020 Root causing flaky tests in a large-scale industrial setting · ISSTA 2019 |
Software testing
regression testing |
0.8 | 3 | 2020 | A study on the lifecycle of flaky tests · ICSE 2020 Optimizing test placement for module-level regression testing · ICSE 2017 Efficient and change-resilient test automation: an industrial case study · ICSE 2013 |
Software testing
automated testing |
0.6 | 4 | 2014 | Robust test automation using contextual clues · ISSTA 2014 Efficient and change-resilient test automation: an industrial case study · ICSE 2013 Efficiently scripting change-resilient tests · SIGSOFT FSE 2012 |
Empirical software engineering
mining software repositories |
0.6 | 5 | 2020 | A study on the lifecycle of flaky tests · ICSE 2020 Mining exception-handling rules as sequence association rules · ICSE 2009 Mining API mapping for language migration · ICSE (1) 2010 |
Software testing
test generation |
0.4 | 3 | 2013 | Guided test generation for web applications · ICSE 2013 Synthesizing method sequences for high-coverage testing · OOPSLA 2011 MSeqGen: object-oriented unit-test generation via mining source code · ESEC/SIGSOFT FSE 2009 |
Software maintenance and evolution › release engineering
continuous integration |
0.4 | 1 | 2019 | Root causing flaky tests in a large-scale industrial setting · ISSTA 2019 |
Software maintenance and evolution
software ecosystems |
0.2 | 2 | 2010 | Mining API mapping for language migration · ICSE (1) 2010 SpotWeb: Detecting Framework Hotspots and Coldspots via Mining Open Source Code on the Web · ASE 2008 |
Software testing › web application testing
cross-browser testing |
0.2 | 1 | 2014 | Robust test automation using contextual clues · ISSTA 2014 |
Software testing › test generation
GUI test generation |
0.2 | 1 | 2013 | Guided test generation for web applications · ICSE 2013 |
Software testing
GUI testing |
0.2 | 1 | 2013 | Efficient and change-resilient test automation: an industrial case study · ICSE 2013 |
Software testing
test execution |
0.2 | 1 | 2013 | Efficient and flexible GUI test execution via test merging · ISSTA 2013 |
Software testing › regression testing
test suite reduction |
0.2 | 1 | 2013 | Efficient and flexible GUI test execution via test merging · ISSTA 2013 |
Requirements engineering and software design › requirements analysis
natural language requirements analysis |
0.1 | 1 | 2012 | Automated extraction of security policies from natural-language software documents · SIGSOFT FSE 2012 |
Software testing › test generation › test sequence generation
method sequence generation |
0.1 | 1 | 2011 | Synthesizing method sequences for high-coverage testing · OOPSLA 2011 |
Software testing
fault detection |
0.1 | 2 | 2009 | Alattin: Mining Alternative Patterns for Detecting Neglected Conditions · ASE 2009 Mining exception-handling rules as sequence association rules · ICSE 2009 |
Program analysis
static analysis |
0.1 | 2 | 2009 | Alattin: Mining Alternative Patterns for Detecting Neglected Conditions · ASE 2009 Parseweb: a programmer assistant for reusing open source code on the web · ASE 2007 |
Empirical software engineering › developer studies › developer behavior
developer productivity |
0.1 | 1 | 2019 | Root causing flaky tests in a large-scale industrial setting · ISSTA 2019 |
Software maintenance and evolution
API mapping |
0.1 | 1 | 2010 | Mining API mapping for language migration · ICSE (1) 2010 |
Software maintenance and evolution
API usage |
0.1 | 1 | 2010 | Mining API mapping for language migration · ICSE (1) 2010 |
Software maintenance and evolution › software reengineering › software modernization › software migration
language migration |
0.1 | 1 | 2010 | Mining API mapping for language migration · ICSE (1) 2010 |
Program analysis › static analysis › bug detection
neglected condition detection |
0.1 | 1 | 2009 | Alattin: Mining Alternative Patterns for Detecting Neglected Conditions · ASE 2009 |
Software testing › test generation
unit test generation |
0.1 | 1 | 2009 | MSeqGen: object-oriented unit-test generation via mining source code · ESEC/SIGSOFT FSE 2009 |
Software maintenance and evolution
build systems |
0.1 | 1 | 2017 | Optimizing test placement for module-level regression testing · ICSE 2017 |
Software maintenance and evolution
code reuse |
0.1 | 1 | 2007 | Parseweb: a programmer assistant for reusing open source code on the web · ASE 2007 |
Web and mobile security
web application testing |
0.1 | 1 | 2014 | Robust test automation using contextual clues · ISSTA 2014 |
Requirements engineering and software design
business rules |
0.0 | 1 | 2013 | Guided test generation for web applications · ICSE 2013 |
Software testing › test maintenance
test suite evolution |
0.0 | 1 | 2013 | Efficient and flexible GUI test execution via test merging · ISSTA 2013 |
Authentication and access control
access control policy |
0.0 | 1 | 2012 | Automated extraction of security policies from natural-language software documents · SIGSOFT FSE 2012 |
Software testing › test generation › automated test generation
test script generation |
0.0 | 1 | 2012 | Automating test automation · ICSE 2012 |
Methods — techniques the papers use, named apart from their topics
natural language processing · 0.6root cause analysis · 0.4empirical study · 0.4contextual clues · 0.4greedy algorithm · 0.3static analysis · 0.2industrial case study · 0.2directed crawling · 0.2abstract state-transition diagram · 0.2information extraction · 0.1backtracking · 0.1
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2020 | A study on the lifecycle of flaky testsabstractDuring regression testing, developers rely on the pass or fail outcomes of tests to check whether changes broke existing functionality. Thus, flaky tests, which nondeterministically pass or fail on the same code, are problematic because they provide misleading signals during regression testing. Although flaky tests are the focus of several existing studies, none of them study (1) the reoccurrence, runtimes, and time-before-fix of flaky tests, and (2) flaky tests in-depth on proprietary projects. Wing Lam, Kivanç Muslu, Hitesh Sajnani, Suresh Thummalapenta |
ICSE | 4 |
| 2019 | Root causing flaky tests in a large-scale industrial settingabstractIn today’s agile world, developers often rely on continuous integration pipelines to help build and validate their changes by executing tests in an efficient manner. One of the significant factors that hinder developers’ productivity is flaky tests—tests that may pass and fail with the same version of code. Since flaky test failures are not deterministically reproducible, developers often have to spend hours only to discover that the occasional failures have nothing to do with their changes. However, ignoring failures of flaky tests can be dangerous, since those failures may represent real faults in the production code. Furthermore, identifying the root cause of flakiness is tedious and cumbersome, since they are often a consequence of unexpected and non-deterministic behavior due to various factors, such as concurrency and external dependencies. Wing Lam, Patrice Godefroid, Suman Nath, Anirudh Santhiar, Suresh Thummalapenta |
ISSTA | 5 |
| 2017 | Optimizing test placement for module-level regression testingabstractModern build systems help increase developer productivity by performing incremental building and testing. These build systems view a software project as a group of interdependent modules and perform regression test selection at the module level. However, many large software projects have imprecise dependency graphs that lead to wasteful test executions. If a test belongs to a module that has more dependencies than the actual dependencies of the test, then it is executed unnecessarily whenever a code change impacts those additional dependencies. In this paper, we formulate the problem of wasteful test executions due to suboptimal placement of tests in modules. We propose a greedy algorithm to reduce the number of test executions by suggesting test movements while considering historical build information and actual dependencies of tests. We have implemented our technique, called TestOptimizer, on top of CloudBuild, the build system developed within Microsoft over the last few years. We have evaluated the technique on five large proprietary projects. Our results show that the suggested test movements can lead to a reduction of 21.66 million test executions (17.09%) across all our subject projects. We received encouraging feedback from the developers of these projects; they accepted and intend to implement ≈80% of our reported suggestions. August Shi, Suresh Thummalapenta, Shuvendu K. Lahiri, Nikolaj S. Bjørner, Jacek Czerwonka |
ICSE | 2 |
| 2015 | Ramp-Up Journey of New Hires: Tug of War of Aids and ImpedimentsabstractHiring top talent is essential for any software company's success. After joining the company, new hires often spend weeks or months before making any major contribution and attaining the same productivity level as existing employees. We use the term ramp-up journey to refer to this transition of new hires from novice to experts. There can be several factors, such as lack of experience or lack of familiarity with processes unique to the new company, which influence the ramp-up journey. To understand such aids and impediments in the ramp-up journey, we conducted a study by analyzing data extracted from version control systems of eight large and popular product groups in Microsoft with several thousand software developers. In particular, we studied two aspects of the ramp-up journey. First, we studied time taken to make the first check-in into the version control system, an important milestone in the ramp-up journey indicating the first contribution. Second, we analyzed the time taken to reach the same productivity level as existing employees in terms of check-ins. We further augmented our quantitative study with qualitative results derived by surveying 411 professional developers. Our study produced promising results, including factors such as having a mentor, prior knowledge of required skill sets, and proactively asking questions, that could help reduce the ramp-up journey of new hires. Ayushi Rastogi, Suresh Thummalapenta, Thomas Zimmermann 0001, Nachiappan Nagappan, Jacek Czerwonka |
ESEM | 2 |
| 2015 | Test Generation from Business RulesabstractEnterprise applications are difficult to test because their intended functionality is either not described precisely enough or described in cumbersome business rules. It takes a lot of effort on the part of a test architect to understand all the business rules and design tests that "cover" them, i.e., exercise all their constituent scenarios. Part of the problem is that it takes a complicated set up sequence to drive an application to a state in which a business rule can even fire. In this paper, we present a business rule modeling language that can be used to capture functional specification of an enterprise system. The language makes it possible to build tool support for rule authoring, so that obvious deficiencies in rules can be detected mechanically. Most importantly, we show how to mechanically generate test sequences--i.e., test steps and test data--needed to exercise these business rules. To this end, we translate the rules into logical formulae and use constraint solving to generate test sequences. One of our contributions is to overcome scalability issues in this process, and we do this by using a novel algorithm for organizing search through the space of candidate sequences to discover covering sequences. Our results on three case studies show the promise of our approach. Simon Holm Jensen, Suresh Thummalapenta, Saurabh Sinha 0001, Satish Chandra 0001 |
ICST | 2 |
| 2014 | Robust test automation using contextual cluesabstractDespite the seemingly obvious advantage of test automation, significant skepticism exists in the industry regarding its cost-benefit tradeoffs. Test scripts for web applications are fragile: even small changes in the page layout can break a number of tests, requiring the expense of re-automating them. Moreover, a test script created for one browser cannot be relied upon to run on a different web browser: it requires duplicate effort to create and maintain versions of tests for a variety of browsers. Because of these hidden costs, organizations often fall back to manual testing. Rahulkrishna Yandrapally, Suresh Thummalapenta, Saurabh Sinha 0001, Satish Chandra 0001 |
ISSTA | 2 |
| 2013 | Exposing Behavioral Differences in Cross-Language API Mapping Relations
Hao Zhong 0001, Suresh Thummalapenta, Tao Xie 0001 |
FASE | 2 |
| 2013 | Efficient and change-resilient test automation: an industrial case studyabstractTest automation, which involves the conversion of manual test cases to executable test scripts, is necessary to carry out efficient regression testing of GUI-based applications. However, test automation takes significant investment of time and skilled effort. Moreover, it is not a one-time investment: as the application or its environment evolves, test scripts demand continuous patching. Thus, it is challenging to perform test automation in a cost-effective manner. At IBM, we developed a tool, called ATA [1], [2], to meet this challenge. ATA has novel features that are designed to lower the cost of initial test automation significantly. Moreover, ATA has the ability to patch scripts automatically for certain types of application or environment changes. How well does ATA meet its objectives in the real world? In this paper, we present a detailed case study in the context of a challenging production environment: an enterprise web application that has over 6500 manual test cases, comes in two variants, evolves frequently, and needs to be tested on multiple browsers in time-constrained and resource-constrained regression cycles. We measured how well ATA improved the efficiency in initial automation. We also evaluated the effectiveness of ATA's change-resilience along multiple dimensions: application versions, browsers, and browser versions. Our study highlights several lessons for test-automation practitioners as well as open research problems in test automation. Suresh Thummalapenta, Pranavadatta Devaki, Saurabh Sinha 0001, Satish Chandra 0001, Sivagami Gnanasundaram, Deepa D. Nagaraj, Sampathkumar Sathishkumar |
ICSE | 1 |
| 2013 | Guided test generation for web applicationsabstractWe focus on functional testing of enterprise applications with the goal of exercising an application's interesting behaviors by driving it from its user interface. The difficulty in doing this is focusing on the interesting behaviors among an unbounded number of behaviors. We present a new technique for automatically generating tests that drive a web-based application along interesting behaviors, where the interesting behavior is specified in the form of “business rules.” Business rules are a general mechanism for describing business logic, access control, or even navigational properties of an application's GUI. Our technique is black box, in that it does not analyze the application's server-side implementation, but relies on directed crawling via the application's GUI. To handle the unbounded number of GUI states, the technique includes two phases. Phase 1 creates an abstract state-transition diagram using a relaxed notion of equivalence of GUI states without considering rules. Next, Phase 2 identifies rule-relevant abstract paths and refines those paths using a stricter notion of state equivalence. Our technique can be much more effective at covering business rules than an undirected technique, developed as an enhancement of an existing test-generation technique. Our experiments showed that the former was able to cover 92% of the rules, compared to 52% of the rules covered by the latter. Suresh Thummalapenta, K. Vasanta Lakshmi, Saurabh Sinha 0001, Nishant Sinha 0001, Satish Chandra 0001 |
ICSE | 1 |
| 2013 | Efficient and flexible GUI test execution via test mergingabstractAs a test suite evolves, it can accumulate redundant tests. To address this problem, many test-suite reduction techniques, based on different measures of redundancy, have been developed. A more subtle problem, that can also cause test-suite bloat and that has not been addressed by existing research, is the accumulation of similar tests. Similar tests are not redundant by any measure; but, they contain many common actions that are executed repeatedly, which over a large test suite, can degrade execution time substantially. Pranavadatta Devaki, Suresh Thummalapenta, Nimit Singhania, Saurabh Sinha 0003 |
ISSTA | 2 |
| 2012 | Automating test automationabstractMention “test case”, and it conjures up the image of a script or a program that exercises a system under test. In industrial practice, however, test cases often start out as steps described in natural language. These are essentially directions a human tester needs to follow to interact with an application, exercising a given scenario. Since tests need to be executed repeatedly, such manual tests then have to go through test automation to create scripts or programs out of them. Test automation can be expensive in programmer time. We describe a technique to automate test automation. The input to our technique is a sequence of steps written in natural language, and the output is a sequence of procedure calls with accompanying parameters that can drive the application without human intervention. The technique is based on looking at the natural language test steps as consisting of segments that describe actions on targets, except that there can be ambiguity in identifying segments, in identifying the action in a segment, as well as in the specification of the target of the action. The technique resolves this ambiguity by backtracking, until it can synthesize a successful sequence of calls. We present an evaluation of our technique on professionally created manual test cases for two open-source web applications as well as a proprietary enterprise application. Our technique could automate over 82% of the steps contained in these test cases with no human intervention, indicating that the technique can reduce the cost of test automation quite effectively. Suresh Thummalapenta, Saurabh Sinha 0001, Nimit Singhania, Satish Chandra 0001 |
ICSE | 1 |
| 2012 | Efficiently scripting change-resilient testsabstractIn industrial practice, test cases often start out as steps described in natural language and are intended to be executed by a human. Since tests are executed repeatedly, they go through an automation process, in which they are converted to automated test scripts (or programs) that perform the test steps mechanically. Conventional test-automation techniques can be time-consuming, require specialized skills, and can produce fragile scripts. To address these limitations, we present a tool, called ata, for automating the test-automation task. Using a novel combination of natural-language processing, backtracking exploration, and learning, ata can significantly improve tester productivity in automating manual tests. ata also produces change-resilient scripts, which automatically adapt themselves in the presence of certain common types of user-interface changes. Suresh Thummalapenta, Nimit Singhania, Pranavadatta Devaki, Saurabh Sinha 0001, Satish Chandra 0001, Achin K. Das, Srinivas Mangipudi |
SIGSOFT FSE | 1 |
| 2012 | Automated extraction of security policies from natural-language software documentsabstractAccess Control Policies (ACP) specify which principals such as users have access to which resources. Ensuring the correctness and consistency of ACPs is crucial to prevent security vulnerabilities. However, in practice, ACPs are commonly written in Natural Language (NL) and buried in large documents such as requirements documents, not amenable for automated techniques to check for correctness and consistency. It is tedious to manually extract ACPs from these NL documents and validate NL functional requirements such as use cases against ACPs for detecting inconsistencies. To address these issues, we propose an approach, called Text2Policy, to automatically extract ACPs from NL software documents and resource-access information from NL scenario-based functional requirements. We conducted three evaluations on the collected ACP sentences from publicly available sources along with use cases from both open source and proprietary projects. The results show that Text2Policy effectively identifies ACP sentences with the precision of 88.7% and the recall of 89.4%, extracts ACP rules with the accuracy of 86.3%, and extracts action steps with the accuracy of 81.9%. Xusheng Xiao, Amit M. Paradkar, Suresh Thummalapenta, Tao Xie 0001 |
SIGSOFT FSE | 3 |
| 2011 | Retrofitting Unit Tests for Parameterized Unit Testing
Suresh Thummalapenta, Madhuri R. Marri, Tao Xie 0001, Nikolai Tillmann, Jonathan de Halleux |
FASE | 1 |
| 2011 | Synthesizing method sequences for high-coverage testingabstractHigh-coverage testing is challenging. Modern object-oriented programs present additional challenges for testing. One key difficulty is the generation of proper method sequences to construct desired objects as method parameters. In this paper, we cast the problem as an instance of program synthesis that automatically generates candidate programs to satisfy a user-specified intent. In our setting, candidate programs are method sequences, and desired object states specify an intent. Automatic generation of desired method sequences is difficult due to its large search space---sequences often involve methods from multiple classes and require specific primitive values. This paper introduces a novel approach, called Seeker, to intelligently navigate the large search space. Seeker synergistically combines static and dynamic analyses: (1) dynamic analysis generates method sequences to cover branches; (2) static analysis uses dynamic analysis information for not-covered branches to generate candidate sequences; and (3) dynamic analysis explores and eliminates statically generated sequences. For evaluation, we have implemented Seeker and demonstrate its effectiveness on four subject applications totalling 28K LOC. We show that Seeker achieves higher branch coverage and def-use coverage than existing state-of-the-art approaches. We also show that Seeker detects 34 new defects missed by existing tools. Suresh Thummalapenta, Tao Xie 0001, Nikolai Tillmann, Jonathan de Halleux, Zhendong Su 0001 |
OOPSLA | 1 |
| 2011 | Alattin: mining alternative patterns for defect detection
Suresh Thummalapenta, Tao Xie 0001 |
Autom. Softw. Eng. | 1 |
| 2010 | Mining API mapping for language migrationabstractTo address business requirements and to survive in competing markets, companies or open source organizations often have to release different versions of their projects in different languages. Manually migrating projects from one language to another (such as from Java to C#) is a tedious and error-prone task. To reduce manual effort or human errors, tools can be developed for automatic migration of projects from one language to another. However, these tools require the knowledge of how Application Programming Interfaces (APIs) of one language are mapped to APIs of the other language, referred to as API mapping relations. In this paper, we propose a novel approach, called MAM (Mining API Mapping), that mines API mapping relations from one language to another using API client code. MAM accepts a set of projects each with two versions in two languages and mines API mapping relations between those two languages based on how APIs are used by the two versions. These mined API mapping relations assist in migration of projects from one language to another. We implemented a tool and conducted two evaluations to show the effectiveness of MAM. The results show that our tool mines 25,805 unique mapping relations of APIs between Java and C# with more than 80% accuracy. The results also show that mined API mapping relations help reduce 54.4% compilation errors and 43.0% defects during migration of projects with an existing migration tool, called Java2CSharp. The reduction in compilation errors and defects is due to our new mined mapping relations that are not available with the existing migration tool. Hao Zhong 0001, Suresh Thummalapenta, Tao Xie 0001, Lu Zhang 0023, Qing Wang 0001 |
ICSE (1) | 2 |
| 2010 | An empirical study on the maintenance of source code clones
Suresh Thummalapenta, Luigi Cerulo, Lerina Aversano, Massimiliano Di Penta |
Empir. Softw. Eng. | 1 |
| 2009 | Mining exception-handling rules as sequence association rulesabstractProgramming languages such as Java and C++ provide exception-handling constructs to handle exception conditions. Applications are expected to handle these exception conditions and take necessary recovery actions such as releasing opened database connections. However, exception-handling rules that describe these necessary recovery actions are often not available in practice. To address this issue, we develop a novel approach that mines exception-handling rules as sequence association rules of the form ldquo(FCc1...FCcn) nland FCarArr (FCe1...FCem)rdquo. This rule describes that function call FCa should be followed by a sequence of function calls (FCe1...FCem) when FCais preceded by a sequence of function calls (FCe1...FCcn). Such form of rules is required to characterize common exception-handling rules. We show the usefulness of these mined rules by applying them on five real-world applications (including 285 KLOC) to detect violations in our evaluation. Our empirical results show that our approach mines 294 real exception-handling rules in these five applications and also detects 160 defects, where 87 defects are new defects that are not found by a previous related approach. Suresh Thummalapenta, Tao Xie 0001 |
ICSE | 1 |
| 2009 | Alattin: Mining Alternative Patterns for Detecting Neglected ConditionsabstractTo improve software quality, static or dynamic verification tools accept programming rules as input and detect their violations in software as defects. As these programming rules are often not well documented in practice, previous work developed various approaches that mine programming rules as frequent patterns from program source code. Then these approaches use static defect-detection techniques to detect pattern violations in source code under analysis. These existing approaches often produce many false positives due to various factors. To reduce false positives produced by these mining approaches, we develop a novel approach, called Alattin, that includes a new mining algorithm and a technique for detecting neglected conditions based on our mining algorithm. Our new mining algorithm mines alternative patterns in example form "P1or P2", where P1and P2are alternative rules such as condition checks on method arguments or return values related to the same API method. We conduct two evaluations to show the effectiveness of our Alattin approach. Our evaluation results show that (1) alternative patterns reach more than 40% of all mined patterns for APIs provided by six open source libraries; (2) the mining of alternative patterns helps reduce nearly 28% of false positives among detected violations. Suresh Thummalapenta, Tao Xie 0001 |
ASE | 1 |
| 2009 | MSeqGen: object-oriented unit-test generation via mining source codeabstractAn objective of unit testing is to achieve high structural coverage of the code under test. Achieving high structural overage of object-oriented code requires desirable method-call sequences that create and mutate objects. These sequences help generate target object states such as argument or receiver object states (in short as target states) of a method under test. Automatic generation of sequences for achieving target states is often challenging due to a large search space of possible sequences. On the other hand, code bases using object types (such as receiver or argument object types) include sequences that can be used to assist automatic test-generation approaches in achieving target states. In this paper, we propose a novel approach, called MSeqGen, that mines code bases and extracts sequences related to receiver or argument object types of a method under test. Our approach uses these extracted sequences to enhance two state-of-the-art test-generation approaches: random testing and dynamic symbolic execution. We conduct two evaluations to show the effectiveness of our approach. Using sequences extracted by our approach, we show that a random testing approach achieves 8.7% (with a maximum of 20.0% for one namespace) higher branch coverage and a dynamic-symbolic-execution-based approach achieves 17.4% (with a maximum of 22.5% for one namespace) higher branch coverage than without using our approach. Such an improvement is significant as the branches that are not covered by these state-of-the-art approaches are generally quite difficult to cover. Suresh Thummalapenta, Tao Xie 0001, Nikolai Tillmann, Jonathan de Halleux, Wolfram Schulte |
ESEC/SIGSOFT FSE | 1 |
| 2008 | Improving software reliability and productivity via mining program source codeabstractA software system interacts with third-party libraries through various APIs. Insufficient documentation and constant refactorings of third-party libraries make API library reuse difficult and error prone. Using these library APIs often needs to follow certain usage patterns. These patterns aid developers in addressing commonly faced programming problems such as what checks should precede or follow API calls, how to use a given set of APIs for a given task, or what API method sequence should be used to obtain one object from another. Ordering rules (specifications) also exist between APIs, and these rules govern the secure and robust operation of the system using these APIs. These patterns and rules may not be well documented by the API developers. Furthermore, usage patterns and specifications might change with library refactorings, requiring changes in the software that reuse the library. To address these issues, we develop novel techniques (and their supporting tools) based on mining source code, assisting developers in productively reusing third party libraries to build reliable and secure software. Tao Xie 0001, Mithun Acharya, Suresh Thummalapenta, Kunal Taneja |
IPDPS | 3 |
| 2008 | SpotWeb: Detecting Framework Hotspots and Coldspots via Mining Open Source Code on the WebabstractSoftware developers often face challenges in reusing open source frameworks due to several factors such as the framework complexity and lack of proper documentation. In this paper, we propose a code-search-engine-based approach that detects hotspots in a given framework by mining code examples gathered from open source repositories available on the Web; these hotspots are API classes and methods that are frequently reused. Hotspots can serve as starting points for developers in understanding and reusing the given framework. Our approach also detects coldspots, which are API classes and methods that are rarely used. Coldspots serve as caveats for developers as there can be difficulties in finding relevant code examples and are generally less exercised compared to hotspots. We developed a tool, called SpotWeb, for frameworks or libraries written in Java and used our tool to detect hotspots and coldspots of eight widely used open source frameworks. We show the utility of our detected hotspots by comparing these hotspots with the API classes reused by a real application and compare our results with the results of a previous related approach. Suresh Thummalapenta, Tao Xie 0001 |
ASE | 1 |
| 2008 | SpotWeb: detecting framework hotspots via mining open source repositories on the webabstractThe essentials of modern software development (such as low cost and high efficiency) demand software developers to make intensive reuse of existing open source frameworks or libraries (generally referred as frameworks) available on the web. However, developers often face challenges in reusing these frameworks due to several factors such as the complexity and lack of proper documentation. In this paper, we propose a code-search-engine-based approach that tries to detect hotspots in a given framework by mining code examples gathered from open source repositories available on the web; these hotspots are the APIs that are frequently reused. Suresh Thummalapenta, Tao Xie 0001 |
MSR | 1 |
| 2007 | Parseweb: a programmer assistant for reusing open source code on the webabstractProgrammers commonly reuse existing frameworks or libraries to reduce software development efforts. One common problem in reusing the existing frameworks or libraries is that the programmers know what type of object that they need, but do not know how to get that object with a specific method sequence. To help programmers to address this issue, we have developed an approach that takes queries of the form "Source object type → Destination object type" as input, and suggests relevant method-invocation sequences that can serve as solutions that yield the destination object from the source object given in the query. Our approach interacts with a code search engine (CSE) to gather relevant code samples and performs static analysis over the gathered samples to extract required sequences. As code samples are collected on demand through CSE, our approach is not limited to queries of any specific set of frameworks or libraries. We have implemented our approach with a tool called PARSEWeb, and conducted four different evaluations to show that our approach is effective in addressing programmer's queries. We also show that PARSEWeb performs better than existing related tools: Prospector and Strathcona Suresh Thummalapenta, Tao Xie 0001 |
ASE | 1 |