Demo Data from SIGIR 2026 / reviewers in the wild / expert
Sai Zhang 0001
dblp:15/3963-1
· DBLP profile ↗
27ranked-venue papers
16as first author
0since 2021 · last 2020
—ORCID · conflict
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 27 · 16 first-authorApplied, interdisciplinary, general and emerging computing · 2 · 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
14 papers |
Software testing · 47% Debugging and program repair · 24% Software maintenance and evolution · 9% | |
| Databases, data mining, and information retrieval
1 paper |
Information retrieval · 77% Database system architecture and tuning · 23% |
Topics — the 23 heaviest of 27, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Debugging and program repair
fault localization |
0.5 | 4 | 2013 | Automated diagnosis of software configuration errors · ICSE 2013 Understanding regression failures through test-passing and test-failing code changes · ICSE 2013 Automated documentation inference to explain failed tests · ASE 2011 |
Software testing › regression testing
test case prioritization |
0.5 | 2 | 2020 | Dependent-test-aware regression testing techniques · ISSTA 2020 Empirically revisiting the test independence assumption · ISSTA 2014 |
Software testing
flaky test |
0.4 | 1 | 2020 | Dependent-test-aware regression testing techniques · ISSTA 2020 |
Software testing
regression testing |
0.4 | 1 | 2020 | Dependent-test-aware regression testing techniques · ISSTA 2020 |
Debugging and program repair › automated diagnosis
configuration error diagnosis |
0.3 | 2 | 2013 | Automated diagnosis of software configuration errors · ICSE 2013 ConfDiagnoser: an automated configuration error diagnosis tool for Java software · ICSE 2013 |
Program analysis
static analysis |
0.3 | 2 | 2013 | ConfDiagnoser: an automated configuration error diagnosis tool for Java software · ICSE 2013 Finding errors in multithreaded GUI applications · ISSTA 2012 |
Software testing › test generation
automated test generation |
0.2 | 2 | 2011 | Combined static and dynamic automated test generation · ISSTA 2011 Palus: a hybrid automated test generation tool for java · ICSE 2011 |
Software testing › unit testing
object-oriented unit test generation |
0.2 | 2 | 2011 | Combined static and dynamic automated test generation · ISSTA 2011 Palus: a hybrid automated test generation tool for java · ICSE 2011 |
Software testing › test quality
test suite quality |
0.2 | 1 | 2014 | Empirically revisiting the test independence assumption · ISSTA 2014 |
Software testing
test generation |
0.2 | 2 | 2013 | Palus: a hybrid automated test generation tool for java · ICSE 2011 Practical semantic test simplification · ICSE 2013 |
Information retrieval
query formulation |
0.2 | 1 | 2013 | Automatically synthesizing SQL queries from input-output examples · ASE 2013 |
Debugging and program repair
automated program repair |
0.2 | 1 | 2013 | Automatically repairing broken workflows for evolving GUI applications · ISSTA 2013 |
Program analysis
configuration analysis |
0.2 | 1 | 2013 | ConfDiagnoser: an automated configuration error diagnosis tool for Java software · ICSE 2013 |
Program synthesis and code generation
programming by example |
0.2 | 1 | 2013 | Automatically synthesizing SQL queries from input-output examples · ASE 2013 |
Debugging and program repair › fault localization
regression fault localization |
0.2 | 1 | 2013 | Understanding regression failures through test-passing and test-failing code changes · ICSE 2013 |
Program synthesis and code generation › programming by example
SQL query synthesis |
0.2 | 1 | 2013 | Automatically synthesizing SQL queries from input-output examples · ASE 2013 |
Software testing › test optimization
test case reduction |
0.2 | 1 | 2013 | Practical semantic test simplification · ICSE 2013 |
Concurrent programming
concurrency bugs |
0.1 | 1 | 2012 | Finding errors in multithreaded GUI applications · ISSTA 2012 |
Software testing › test generation › test sequence generation
method call sequence generation |
0.1 | 1 | 2011 | Palus: a hybrid automated test generation tool for java · ICSE 2011 |
Software testing
GUI testing |
0.1 | 2 | 2013 | Automatically repairing broken workflows for evolving GUI applications · ISSTA 2013 Finding errors in multithreaded GUI applications · ISSTA 2012 |
Software maintenance and evolution › software configuration management
configuration error |
0.1 | 1 | 2015 | Proactive detection of inadequate diagnostic messages for software configuration errors · ISSTA 2015 |
Database system architecture and tuning
database usability |
0.0 | 1 | 2013 | Automatically synthesizing SQL queries from input-output examples · ASE 2013 |
Program analysis
dynamic analysis |
0.0 | 1 | 2011 | Palus: a hybrid automated test generation tool for java · ICSE 2011 |
Methods — techniques the papers use, named apart from their topics
static analysis · 0.6dynamic profiling · 0.5dependent-test-aware regression testing · 0.4statistical analysis · 0.3natural language processing · 0.2fault injection · 0.2empirical study · 0.2test-passing and test-failing change analysis · 0.2programming by example · 0.2heuristic algorithm · 0.2delta debugging · 0.2constraint solving · 0.2
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2020 | Dependent-test-aware regression testing techniquesabstractDevelopers typically rely on regression testing techniques to ensure that their changes do not break existing functionality. Unfortunately, these techniques suffer from flaky tests, which can both pass and fail when run multiple times on the same version of code and tests. One prominent type of flaky tests is order-dependent (OD) tests, which are tests that pass when run in one order but fail when run in another order. Although OD tests may cause flaky-test failures, OD tests can help developers run their tests faster by allowing them to share resources. We propose to make regression testing techniques dependent-test-aware to reduce flaky-test failures. Wing Lam, August Shi, Reed Oei, Sai Zhang 0001, Michael D. Ernst, Tao Xie 0001 |
ISSTA | 4 |
| 2017 | Information Needs for Validating Evolving Software Systems: An Exploratory Study at GoogleabstractSoftware evolves continuously. Its behavior must be validated by engineers who perform daily development and maintenance tasks. However, despite its high importance, information needs for validating evolving software has not been systematically studied in an industrial setting. Such lack of empirical knowledge hinders attempts to understand this fundamental practice and improve the corresponding tool support. This paper presents a study on 194 Site Reliability Engineers (SREs) at Google to explore their information needs. The results suggest several directions where software engineering researchers may consider putting effort to develop new techniques and tool support that matter to practitioners. Abdullah Al-Nayeem, Krzysztof Ostrowski, Sebastian Pueblas, Christophe Restif, Sai Zhang 0001 |
ICST | 5 |
| 2015 | Proactive detection of inadequate diagnostic messages for software configuration errorsabstractThis paper presents a technique to detect inadequate (i.e., missing or ambiguous) diagnostic messages for configuration errors issued by a configurable software system. The technique injects configuration errors into the software under test, monitors the software outcomes under the injected configuration errors, and uses natural language processing to analyze the output diagnostic message caused by each configuration error. The technique reports diagnostic messages that may be unhelpful in diagnosing a configuration error. We implemented the technique for Java in a tool, ConfDiagDetector. In an evaluation on 4 real-world, mature configurable systems, ConfDiagDetector reported 43 distinct inadequate diagnostic messages (25 missing and 18 ambiguous). 30 of the detected messages have been confirmed by their developers, and 12 more have been identified as inadequate by users in a user study. On average, Conf- DiagDetector required 5 minutes of programmer time and 3 minutes of compute time to detect each inadequate diagnostic message. Sai Zhang 0001, Michael D. Ernst |
ISSTA | 1 |
| 2014 | Which configuration option should I change?abstractModern software often exposes configuration options that enable users to customize its behavior. During software evolution, developers may change how the configuration options behave. When upgrading to a new software version, users may need to re-configure the software by changing the values of certain configuration options. Sai Zhang 0001, Michael D. Ernst |
ICSE | 1 |
| 2014 | Empirically revisiting the test independence assumptionabstractIn a test suite, all the test cases should be independent: no test should affect any other test’s result, and running the tests in any order should produce the same test results. Techniques such as test prioritization generally assume that the tests in a suite are independent. Test dependence is a little-studied phenomenon. This paper presents five results related to test dependence. Sai Zhang 0001, Darioush Jalali, Jochen Wuttke, Kivanç Muslu, Wing Lam, Michael D. Ernst, David Notkin |
ISSTA | 1 |
| 2013 | Understanding regression failures through test-passing and test-failing code changesabstractDebugging and isolating changes responsible for regression test failures are some of the most challenging aspects of modern software development. Automatic bug localization techniques reduce the manual effort developers spend examining code, for example, by focusing attention on the minimal subset of recent changes that results in the test failure, or on changes to components with most dependencies or highest churn. We observe that another subset of changes is worth the developers' attention: the complement of the maximal set of changes that does not produce the failure. While for simple, independent source-code changes, existing techniques localize the failure cause to a small subset of those changes, we find that when changes interact, the failure cause is often in our proposed subset and not in the subset existing techniques identify. In studying 45 regression failures in a large, open-source project, we find that for 87% of those failures, the complement of the maximal passing set of changes is different from the minimal failing set of changes, and that for 78% of the failures, our technique identifies relevant changes ignored by existing work. These preliminary results suggest that combining our ideas with existing techniques, as opposed to using either in isolation, can improve the effectiveness of bug localization tools. Roykrong Sukkerd, Ivan Beschastnikh, Jochen Wuttke, Sai Zhang 0001, Yuriy Brun |
ICSE | 4 |
| 2013 | Practical semantic test simplificationabstractWe present a technique that simplifies tests at the semantic level. We first formalize the semantic test simplification problem, and prove it is NP-hard. Then, we propose a heuristic algorithm, SimpleTest, that automatically transforms a test into a simpler test, while still preserving a given property. The key insight of SimpleTest is to reconstruct an executable and simpler test that exhibits the given property from the original one. Our preliminary study on 7 real-world programs showed the usefulness of SimpleTest. Sai Zhang 0001 |
ICSE | 1 |
| 2013 | ConfDiagnoser: an automated configuration error diagnosis tool for Java softwareabstractThis paper presents ConfDiagnoser, an automated configuration error diagnosis tool for Java software. Conf-Diagnoser identifies the root cause of a configuration error - a single configuration option that can be changed to produce desired behavior. It uses static analysis, dynamic profiling, and statistical analysis to link the undesired behavior to specific configuration options. ConfDiagnoser differs from existing approaches in two key aspects: it does not require users to provide a testing oracle (to check whether the software functions correctly) and thus is fully-automated; and it can diagnose both crashing and non-crashing errors. We demonstrated ConfDiagnoser's accuracy and speed on 5 non-crashing configuration errors and 9 crashing configuration errors from 5 configurable software systems. Sai Zhang 0001 |
ICSE | 1 |
| 2013 | Automated diagnosis of software configuration errorsabstractThe behavior of a software system often depends on how that system is configured. Small configuration errors can lead to hard-to-diagnose undesired behaviors. We present a technique (and its tool implementation, called ConfDiagnoser) to identify the root cause of a configuration error - a single configuration option that can be changed to produce desired behavior. Our technique uses static analysis, dynamic profiling, and statistical analysis to link the undesired behavior to specific configuration options. It differs from existing approaches in two key aspects: it does not require users to provide a testing oracle (to check whether the software functions correctly) and thus is fully automated; and it can diagnose both crashing and non-crashing errors. We evaluated ConfDiagnoser on 5 non-crashing configuration errors and 9 crashing configuration errors from 5 configurable software systems written in Java. On average, the root cause was ConfDiagnoser's fifth-ranked suggestion; in 10 out of 14 errors, the root cause was one of the top 3 suggestions; and more than half of the time, the root cause was the first suggestion. Sai Zhang 0001, Michael D. Ernst |
ICSE | 1 |
| 2013 | Automatically repairing broken workflows for evolving GUI applicationsabstractA workflow is a sequence of UI actions to complete a specific task. In the course of a GUI application's evolution, changes ranging from a simple GUI refactoring to a complete rearchitecture can break an end-user's well-established workflow. It can be challenging to find a replacement workflow. To address this problem, we present a technique (and its tool implementation, called FlowFixer) that repairs a broken workflow. FlowFixer uses dynamic profiling, static analysis, and random testing to suggest a replacement UI action that fixes a broken workflow. Sai Zhang 0001, Hao Lü, Michael D. Ernst |
ISSTA | 1 |
| 2013 | Automatically synthesizing SQL queries from input-output examplesabstractMany computer end-users, such as research scientists and business analysts, need to frequently query a database, yet lack enough programming knowledge to write a correct SQL query. To alleviate this problem, we present a programming by example technique (and its tool implementation, called SQLSynthesizer) to help end-users automate such query tasks. SQLSynthesizer takes from users an example input and output of how the database should be queried, and then synthesizes a SQL query that reproduces the example output from the example input. If the synthesized SQL query is applied to another, potentially larger, database with a similar schema, the synthesized SQL query produces a corresponding result that is similar to the example output. We evaluated SQLSynthesizer on 23 exercises from a classic database textbook and 5 forum questions about writing SQL queries. SQLSynthesizer synthesized correct answers for 15 textbook exercises and all 5 forum questions, and it did so from relatively small examples. Sai Zhang 0001, Yuyin Sun |
ASE | 1 |
| 2013 | Analyzing Impact Rules of Different Change Types to Support Change Impact AnalysisabstractSoftware change impact analysis (CIA) is a key technique for identifying unpredicted and potential effects caused by changes made to software. Different changes have different ripple effects to other parts in the program, even some changes do not affect other entities in spite of some dependencies existing between these entities and the modified one. This induces imprecision if such a factor is neglected. This article proposes a static CIA technique which considers the impact rules of different change types to predict the change effects. Input of our CIA includes changed classes, class methods and class fields, and the output is composed of potentially affected classes, class methods, and class fields. Precision improvement of the CIA technique relies on three aspects: change types of a modified entity, dependencies between the modified entity and other entities, and a precise initial impact set (IIS), on which the final impact set (FIS) is computed. Experimental case studies demonstrate the effectiveness of our technique, and present its potential applications in software maintenance. Xiaobing Sun 0001, Bixin Li, Wanzhi Wen, Sai Zhang 0001 |
Int. J. Softw. Eng. Knowl. Eng. | 4 |
| 2013 | A survey of code-based change impact analysis techniquesabstractSUMMARY Software change impact analysis (CIA) is a technique for identifying the effects of a change, or estimating what needs to be modified to accomplish a change. Since the 1980s, there have been many investigations on CIA, especially for code‐based CIA techniques. However, there have been very few surveys on this topic. This article tries to fill this gap. And 30 papers that provide empirical evaluation on 23 code‐based CIA techniques are identified. Then, data was synthesized against four research questions. The study presents a comparative framework including seven properties, which characterize the CIA techniques, and identifies key applications of CIA techniques in software maintenance. In addition, the need for further research is also presented in the following areas: evaluating existing CIA techniques and proposing new CIA techniques under the proposed framework, developing more mature tools to support CIA, comparing current CIA techniques empirically with unified metrics and common benchmarks, and applying the CIA more extensively and effectively in the software maintenance phase. Copyright © 2012 John Wiley & Sons, Ltd. Bixin Li, Xiaobing Sun 0001, Hareton K. N. Leung, Sai Zhang 0001 |
Softw. Test. Verification Reliab. | 4 |
| 2012 | Finding errors in multithreaded GUI applicationsabstractTo keep a Graphical User Interface (GUI) responsive and active, a GUI application often has a main UI thread (or event dispatching thread) and spawns separate threads to handle lengthy operations in the background, such as expensive computation, I/O tasks, and network requests. Many GUI frameworks require all GUI objects to be accessed exclusively by the UI thread. If a GUI object is accessed from a non-UI thread, an invalid thread access error occurs and the whole application may abort. Sai Zhang 0001, Hao Lü, Michael D. Ernst |
ISSTA | 1 |
| 2011 | Frequency Estimation of Virtual Call Targets for Object-Oriented Programs
Sai Zhang 0001, Jianjun Zhao 0001, Yuting Chen 0001 |
ECOOP | 3 |
| 2011 | Palus: a hybrid automated test generation tool for javaabstractIn object-oriented programs, a unit test often consists of a sequence of method calls that create and mutate objects. It is challenging to automatically generate sequences that are legal and behaviorally-diverse, that is, reaching as many different program states as possible. Sai Zhang 0001 |
ICSE | 1 |
| 2011 | Combined static and dynamic automated test generationabstractIn an object-oriented program, a unit test often consists of a sequence of method calls that create and mutate objects, then use them as arguments to a method under test. It is challenging to automatically generate sequences that are legal and behaviorally-diverse, that is, reaching as many different program states as possible. Sai Zhang 0001, David Saff, Yingyi Bu, Michael D. Ernst |
ISSTA | 1 |
| 2011 | Automated documentation inference to explain failed testsabstractA failed test reveals a potential bug in the tested code. Developers need to understand which parts of the test are relevant to the failure before they start bug-fixing. This paper presents a fully-automated technique (and its tool implementation, called FailureDoc) to explain a failed test. FailureDoc augments the failed test with explanatory documentation in the form of code comments. The comments indicate changes to the test that would cause it to pass, helping programmers understand why the test fails. We evaluated FailureDoc on five real-world programs. FailureDoc generated meaningful comments for most of the failed tests. The inferred comments were concise and revealed important debugging clues. We further conducted a user study. The results showed that FailureDoc is useful in bug diagnosis. Sai Zhang 0001, Michael D. Ernst |
ASE | 1 |
| 2010 | Change Impact Analysis Based on a Taxonomy of Change TypesabstractSoftware change impact analysis (CIA) is a key technique for identifying unpredicted and potential effects caused by changes made to software. Different change types often have different impact mechanisms, even some changes do not impact other entities in programs in spite of some dependences existed between these entities and the modified entity. In this paper, we propose a static CIA technique, which considers different impact mechanisms and rules of different change types, to calculate the impact sets. Precision improvement of the impact sets relies on 3 aspects: change types of a modified entity, dependences between the modified entity and other entities, and the intuition that to win at the start -- if the initial impact set is estimated more accurately, then the final impact set depending on this initial impact set will be more precise. Experimental case study demonstrates the effectiveness of our technique, and its potential applications in software maintenance. Xiaobing Sun 0001, Bixin Li, Chuanqi Tao, Wanzhi Wen, Sai Zhang 0001 |
COMPSAC | 5 |
| 2010 | A Lightweight and Portable Approach to Making Concurrent Failures Reproducible
Qingzhou Luo, Sai Zhang 0001, Jianjun Zhao 0001 |
FASE | 2 |
| 2009 | Incremental call graph reanalysis for AspectJ softwareabstractProgram call graph representation can be used to support many tasks in compiler optimization, program comprehension, and software maintenance. During software evolution, the call graph needs to remain fairly precise and be updated quickly in response to software changes. In this paper, we present an approach to incremental update, instead of exhaustive analysis of the initially constructed call graph in AspectJ software. Our approach first decomposes the source code edits between the updated and initial software versions into a set of atomic change representations, which capture the semantic differences. Then, we explore the relationship between atomic changes and call graph to incrementally update the initially constructed graph, instead of rebuilding it from the ground up. We implement the reanalysis approach on top of the ajc AspectJ compiler and perform an empirical study on 24 versions of eight AspectJ benchmarks. The experiment result shows that our approach can reduce a large portion of unnecessary reanalysis cost as program changes occur, and significant savings are observed for the incremental reconstruction of AspectJ call graph in comparison with an exhaustive analysis, with no loss in precision. Sai Zhang 0001, Jianjun Zhao 0001 |
ICSM | 2 |
| 2008 | Change impact analysis for AspectJ programsabstractChange impact analysis is a useful technique for software evolution. It determines the effects of a source editing session and provides valuable feedbacks to the programmers for making correct decisions. Recently, many techniques have been proposed to support change impact analysis of procedural or object-oriented software, but seldom effort has been made for aspect-oriented software. In this paper we propose a new change impact analysis technique for AspectJ programs. At the core of our approach is the atomic change representation which captures the semantic differences between two versions of an AspectJ program. We also present an impact analysis model, based on AspectJ call graph construction, to determine the affected program fragments, affected tests and their responsible changes. The proposed techniques have been implemented in Celadon, a change impact analysis framework for AspectJ programs. We performed an empirical evaluation on 24 versions of eight AspectJ benchmarks. The result shows that our proposed technique can effectively perform change impact analysis and provide valuable information in AspectJ software evolution. Sai Zhang 0001, Zhongxian Gu, Jianjun Zhao 0001 |
ICSM | 1 |
| 2008 | AutoFlow: An automatic debugging tool for AspectJ softwareabstractAspect-oriented programming (AOP) is gaining popularity with the wider adoption of languages such as AspectJ. During AspectJ software evolution, when regression tests fail, it may be tedious for programmers to find out the failure-inducing changes by manually inspecting all code editing. To eliminate the expensive effort spent on debugging, we developed AutoFlow, an automatic debugging tool for AspectJ software. AutoFlow integrates the potential of delta debugging algorithm with the benefit of change impact analysis to narrow down the search for faulty changes. It first uses change impact analysis to identify a subset of responsible changes for a failed test, then ranks these changes according to our proposed heuristic (indicating the likelihood that they may have contributed to the failure), and finally employs an improved delta debugging algorithm to determine a minimal set of faulty changes. The main feature of AutoFlow is that it can automatically reduce a large portion of irrelevant changes in an early phase, and then locate faulty changes effectively. Sai Zhang 0001, Zhongxian Gu, Jianjun Zhao 0001 |
ICSM | 1 |
| 2008 | XFindBugs: eXtended FindBugs for AspectJabstractAspect-oriented software development (AOSD) is gaining popularity with the wider adoption of languages such as AspectJ. However, though the state-of-the-art aspect-oriented programming environment (such as AJDT in the Eclipse IDE) provides powerful capabilities to check the syntactic or grammar errors in AspectJ programs, it fails to detect potential semantic defects in aspect-oriented software systems. In this paper, we present XFindBugs, an eXtended FindBugs for AspectJ, to help programmers find potential bugs in AspectJ applications through static analysis. XFindBugs supports 17 bug patterns to cover common error-prone features in an aspect-oriented system, and integrates the corresponding bug detectors into the FindBugs framework. We evaluate XFindBugs on a number of large-scale open source AspectJ projects (306,800 LOC in total). In our evaluation, XFindBugs confirms 7 reported bugs and finds 257 previously unknown defects. Our experiment also indicates that the bug patterns supported in XFindBugs exist in real-world software systems, even for mature applications by experienced programmers. Haihao Shen, Sai Zhang 0001, Jianjun Zhao 0001, Jianhong Fang, Shiyuan Yao |
PASTE | 2 |
| 2008 | Effective identification of failure-inducing changes: a hybrid approachabstractWhen regression tests fail unexpectedly after a long session of editing, it may be tedious for programmers to find out the failure-inducing changes by manually inspecting all code edits. To eliminate the expensive effort spent on debugging, we present a hybrid approach, which combines both static and dynamic analysis techniques, to automatically identify the faulty changes. Our approach first uses static change impact analysis to isolate a subset of responsible changes for a failed test, then utilizes the dynamic test execution information to rank these changes according to our proposed heuristic (indicating the likelihood that they may have contributed to the failure), and finally employs an improved Three-Phase delta debugging algorithm, working from the coarse method level to the fine statement level, to find a minimal set of faulty statements. Sai Zhang 0001, Zhongxian Gu, Jianjun Zhao 0001 |
PASTE | 1 |
| 2008 | An Empirical Study of Maintainability in Aspect-Oriented System Evolution Using Coupling MetricsabstractIn this paper, we propose a fine-grained coupling metrics suite for aspect-oriented (AO) systems, to measure software changes during system evolution. We also present a correlation model in terms of intermediate processes, for better evaluating the relation between coupling metrics and system maintainability. To investigate the practicability of our proposed model, we have implemented a coupling metrics analysis tool called AJMetrics and performed an empirical study on eight AspectJ benchmarks. The experiment result suggests that our correlation model provides useful information to evaluate the maintainability of AO systems. Haihao Shen, Sai Zhang 0001, Jianjun Zhao 0001 |
TASE | 2 |
| 2007 | On Identifying Bug Patterns in Aspect-Oriented ProgramsabstractBug patterns are erroneous code idioms or bad coding practices that have been proved fail time and time again. They mainly arise from the misunderstanding of language features, the use of erroneous design patterns or simple mistakes sharing the common behaviors. Aspect-oriented programming (AOP) is a new technique to separate the cross-cutting concerns for improving modularity in software design and implementation. However, there is no effective debugging technique for aspect-oriented programs until now and none of the prior researches focused on the identification of bug patterns in aspect-oriented programs. In this paper, we present six bug patterns in AspectJprogramming language and show the corresponding example for each bug pattern to help to illustrate the symptoms of these patterns. We take this as the first step to provide an underlying basis on testing and debugging of AspectJ programs. Sai Zhang 0001, Jianjun Zhao 0001 |
COMPSAC (1) | 1 |