<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">QR-Augmented Spectrum-based Fault Localization *</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author role="corresp">
							<persName><forename type="first">Alexandre</forename><surname>Perez</surname></persName>
							<email>alexandre.perez@fe.up.pt</email>
							<affiliation key="aff0">
								<orgName type="institution" key="instit1">University of Porto and HASLab</orgName>
								<orgName type="institution" key="instit2">INESC-TEC</orgName>
								<address>
									<country key="PT">Portugal</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Rui</forename><surname>Abreu</surname></persName>
							<affiliation key="aff1">
								<orgName type="department" key="dep1">IST</orgName>
								<orgName type="department" key="dep2">INESC-ID</orgName>
								<orgName type="institution">University of Lisbon</orgName>
								<address>
									<country key="PT">Portugal</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Danny</forename><forename type="middle">*</forename><surname>Bobrow</surname></persName>
						</author>
						<author>
							<persName><surname>This</surname></persName>
						</author>
						<title level="a" type="main">QR-Augmented Spectrum-based Fault Localization *</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">EBC64110CB618DFA43D6E852D15D6BA5</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-25T08:47+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Spectrum-based fault localization (SFL) correlates a system's components with observed failures. By reasoning about coverage, SFL allows for a lightweight way of pinpointing faults. This abstraction comes at the cost of missing certain faults, such as errors of omission, and failing to provide enough contextual information to explain why components are considered suspicious. We propose an approach, named Q-SFL, that leverages qualitative reasoning to augment the information made available to SFL techniques. It qualitatively partitions system components, and treats each qualitative state as a new SFL component to be used when diagnosing. Our empirical evaluation shows that augmenting SFL with qualitative components can improve diagnostic accuracy in 54% of the considered real-world subjects.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1">Introduction</head><p>SFL <ref type="bibr" target="#b0">[1]</ref> was shown to be a lightweight, yet effective, technique for locating faults in a system. It consists of keeping a record of which components are involved in each system execution and subsequently ranking those components according to their similarity to failing executions. The intuition being that a faulty component is very likely to be involved in failing executions and not as likely to be covered in nominal ones. Over the years, many extensions were proposed to improve SFL's applicability and effectiveness, such as exploring which similarity coefficients yield better fault localization results <ref type="bibr" target="#b1">[2]</ref> and handling multiple or intermittent faults <ref type="bibr" target="#b2">[3]</ref>.</p><p>Despite the developments and achievements in SFL research, we are unable to find many accounts of successful transitions of this technology into the industry at large. We argue that this is motivated largely by the issues raised by 4 in their 4 user study of automated debugging techniques <ref type="bibr">[4; 5]</ref>. Namely, the authors found that there is significant interest drop-off after users inspect a small number of components from the ranked list of potential faults. This issue is exacerbated as the scale of the system increases. Another issue pointed out by 4 is the fact that many SFL studies assume perfect fault understanding -that is, these studies expect that once users inspect a faulty component, they will correctly identify it as such -, which does not always hold in practice <ref type="bibr" target="#b5">[6]</ref>.</p><p>This paper proposes an approach that inspects the state of system components, with the intent of augmenting reports generated by SFL techniques and hence providing more diagnostic information. Recording the state of individual components in each execution quickly becomes intractable, even for a lightweight approach as SFL. Therefore, we leverage Qualitative Reasoning (QR), which provides a way of describing a set of values by their discrete, behavioral qualities, to enable the reasoning about a system's behavior without exact quantitative information <ref type="bibr">[7; 8]</ref>. Precise numerical quantities are avoided and replaced by qualitative descriptions -such as, for instance: high, low, zero, increasing or decreasing.</p><p>We apply QR to the SFL analysis, in an approach named Q-SFL, enabling the introduction of quantitative landmarks that will partition the domains of relevant components into a set of qualitative descriptions, and insert new SFL components for each of these descriptions. As behavioral qualities are now considered as components, their involvement in system executions is therefore recorded and ranked according to their similarity to observed failures, enriching the SFL report as a result. This can have benefits in fault comprehension -because qualitative properties are considered besides merely recording involvement -and even improve diagnostic report accuracy -whenever a qualitative state is more correlated with failing behavior than its enclosing system component.</p><p>We perform an empirical evaluation of Q-SFL with realworld faults from the Defects4J <ref type="bibr" target="#b8">[9]</ref> catalog of faulty software programs. Results show that Q-SFL has the potential to improve the accuracy of SFL reports -with 54% of considered subjects exhibiting a lower effort to diagnose faults. Although the results are promising, we discuss several matters that need further research -namely, uncovering a landmarking strategy that exhibits consistently better results and studying to what extent fault comprehension is improved. This paper's contributions are:</p><p>• An approach, named Q-SFL, inspired by qualitative reasoning (QR) research, to augment program spectra used by SFL techniques by partitioning system components into a set of qualitative states which are treated as SFL components. • Empirical evidence that QR-enhanced spectra can re-duce the effort to diagnose real software bugs in 54% of considered subjects.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2">Background</head><p>This section briefly summarizes the concepts upon which our approach is based on.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.1">Spectrum-based Fault Localization (SFL)</head><p>In SFL, the following is given:</p><p>• A finite set C = {c 1 , ..., c M } of M system components; • A finite set T = {t 1 , ..., t N } of N transactions, which can be seen as records of a system execution; • An error vector e = {e 1 , ..., e N } of transaction outcomes, where</p><formula xml:id="formula_0">e i = 1 if t i failed, e i = 0 otherwise; • A M × N activity matrix A, where A ij = 1 if compo- nent c j is involved in transaction t i , A ij = 0 otherwise.</formula><p>The goal of SFL is to pinpoint which (sets of) components are more likely to have caused the system to fail. Earlier approaches to SFL measure the similarity between a component's involvement in transactions and the error vector <ref type="bibr">[1; 2]</ref>. Later on, spectrum-based reasoning (SR) was introduced <ref type="bibr" target="#b2">[3]</ref>, leveraging a Bayesian reasoning framework to diagnose, even when multiple, intermittent faults are present. The two main steps of SR are candidate generation and candidate ranking:</p><formula xml:id="formula_1">Candidate Generation The first step in SR is to generate a set D = {d 1 , ..., d k } of diagnosis candidates. A diagnosis candidate d k ⊆ C is valid if every failed transaction involved at least one com- ponent from d k . Candidate d k is minimal if no valid can- didate is contained in d k .</formula><p>We are only interested in minimal candidates, as they can subsume all others. Heuristic approaches to finding these minimal hitting sets include STACCATO <ref type="bibr" target="#b9">[10]</ref>, SAFARI <ref type="bibr" target="#b10">[11]</ref> and MHS 2 <ref type="bibr" target="#b11">[12]</ref>.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Candidate Ranking</head><p>For each candidate d k , their fault probability is calculated using the Naïve Bayes rule 1 <ref type="bibr" target="#b12">[13]</ref> Pr</p><formula xml:id="formula_2">(d k | (A, e)) = Pr(d k ) • i ∈ 1..N Pr((A i , e i ) | d k ) Pr(A i )<label>(1)</label></formula><p>Let A i be short for {A ij |1 ∈ 1..M }, representing component activity in i th transaction. Pr(A i ) is a normalizing term that is identical for all candidates. Let p l denote the prior probability 2 that a component c l is at fault. The prior probability for a candidate d k is given by</p><formula xml:id="formula_3">Pr(d k ) = l ∈ d k p l • l ∈ C\d k (1 − p l )<label>(2)</label></formula><p>Pr(A i , e i | d k ) is used to bias the prior probability taking observations into account. Let g l (referred to as component goodness) denote the probability that c l performs nominally</p><formula xml:id="formula_4">Pr((A i , e i ) | d k ) =        l ∈ (d k ∩Ai) g l if e i = 0 1 − l ∈ (d k ∩Ai) g l otherwise<label>(3)</label></formula><p>1 Probabilities are calculated assuming conditional independence throughout the process. 2 In the case of software diagnosis, one can approximate p l as 1/1000, i.e., 1 fault for each 1000 lines of code <ref type="bibr" target="#b13">[14]</ref>. In cases where values for g l are not available, they can be estimated by maximizing Pr((A, e) | d k ) under parameters</p><formula xml:id="formula_5">{g l | l ∈ d k } [13].</formula><p>To measure the accuracy of SFL approaches, the cost of diagnosis (C d ) metric is often used <ref type="bibr" target="#b3">[4]</ref>. It measures the number of candidates to be inspected until the real fault is reached, assuming candidates are inspected by descending order of probability. A C d of 0 indicates an ideal diagnosis where the real fault is at the top of the ranked list of candidates.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.2">Qualitative Reasoning (QR)</head><p>QR creates a discrete representation of the continuous world <ref type="bibr">[7; 8; 15]</ref>, enabling the reasoning of space, time, and quantity with merely a small amount of information. It is motivated by the fact that humans are able to draw conclusions about the physical world around them with limited information, without the need of solving complex differential equations.</p><p>Figure <ref type="figure" target="#fig_0">1</ref> provides an example of a potential discretization of the water temperature into three qualitative values: Q1, Q2 and Q3. Our representation resolution -the granularity of the information detail -coincides with that of the three physical states of matter that water can assume: solid, liquid, and gas. Note that the established resolution will ultimately define the granularity of the conclusions one can draw from QR. To define the qualitative states, one needs to establish landmarks. Landmarks are constant quantitative values that establish a point of comparison <ref type="bibr" target="#b15">[16]</ref>. In this example, we know that if the water is in the liquid state (Q2), then its temperature is somewhere between landmark L2 -corresponding to 0°C, the freezing point of water -and landmark L3 -100°C, its boiling point. Similarly, we can derive that ice (Q1) temperature assumes a value between the absolute zero (L1) and the melting point (L2); and that water vapor (Q3) ranges between the condensation point (L3) and positive infinity (L4).</p><p>QR also supports the representation of derivatives between two quantities. They are usually represented with '+' and '-' signs, denoting value increases and decreases, respectively. This enables the use of sign algebra to reason about direct influence and proportionality between two qualitative values. Derivatives also enable envisionments. An envisionment establishes a set of transitions between qualitative states <ref type="bibr" target="#b14">[15]</ref>, essentially modeling the abstracted world. A possible transition in our example's envisionment is the following: given that we observe Q2+ -that is, we observe that the liquid water's temperature is rising -, then we know that the only possible following states are Q2 (continues in the liquid state) and Q3 (condensates into vapor), but never Q1 (freezes into ice).</p><p>Summarily, with a QR framework, we establish a way to (i) represent quantities through discrete states, (ii) provide a way to compare values between these states, (iii) enable derivations and sign algebra, and (iv) model envisionments detailing possible transitions between states. With such a framework, we can model, plan, simulate and reason about a multitude of intricate problems in an abstract way.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3">Approach</head><p>This section motivates the need to augment standard spectrum-based fault localization approaches with more contextual information, and details our Q-SFL approach to achieve it by qualitatively partitioning SFL components.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.1">Limitations of Spectrum-based Analyses</head><p>SFL faces several issues preventing it from widespread adoption and use. Not the least of which is the lack of contextual information, essential for understanding why diagnostic candidates are considered suspicious. This has been pointed out in the software fault localization literature <ref type="bibr" target="#b3">[4]</ref>.</p><p>As SFL reasons about failures at the spectrum level, it only has access to whether a component was involved or not in each system transaction. While this enables a flexible, lightweight analysis, the necessary abstraction can impose a tradeoff both in accuracy and comprehension. Although there have been efforts to incorporate more data into the diagnostic process -by modeling component behavior that considers the system's state and previous diagnoses <ref type="bibr" target="#b16">[17]</ref>; or by leveraging prediction models trained from issue tracking data <ref type="bibr" target="#b17">[18]</ref> -they were focused on conditioning the fault probability of existing diagnostic candidates, increasing accuracy but not necessarily increasing the ability to comprehend the diagnostic report. Aside from comprehension, and because SFL only reasons about component involvement in failing transactions, omission errors -such as bound checks -also become difficult to diagnose <ref type="bibr" target="#b18">[19]</ref>. The abstract nature of the spectra that is fed into current SFL frameworks also leads to the formation of ambiguity groups and facilitates the occurrence of coincidental correctness. An ambiguity group is a group of components with identical involvement in all transactions <ref type="bibr" target="#b19">[20]</ref>. Since they exhibit the same coverage pattern, no component within an ambiguity group can be uniquely identified as the root cause of failure, potentially hindering accuracy. Coincidental correctness refers to the event when no failure is detected, even though a fault has been executed <ref type="bibr" target="#b20">[21]</ref>. Depending on the component granularity selected for the analysis, coincidental correctness can happen at a frequent rate. In particular, when two tests share the same coverage path, but produce different outcomes, it becomes significantly harder to distinguish them without further contextual information. Coincidental correctness can potentially lead to exonerating real faults as they are observed to behave nominally.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.2">Q-SFL</head><p>We argue that all of the issues described above can be at least attenuated if we supplement the SFL framework with more contextual information about the system under analysis to perform the diagnosis. Our Q-SFL approach consists of partitioning several SFL components into multiple, meaningful, qualitatively distinct subcomponents, to be used in the fault localization. We leverage the QR concept of domain partitioning to inspect existing components during each system execution and assign them a qualitative state. Each of these qualitative states is then considered as a separate SFL component whose involvement per transaction is recorded and fed into the SFL framework for diagnosis. Note that we use software diagnosis to help describe Q-SFL and, later on, to evaluate it. Despite this, the Q-SFL concept applies to other SFL use cases where one can inspect the state of components, as is the case of electronic circuit diagnosis, and others.</p><formula xml:id="formula_6">A t 1 t 2 t 3 t 4 c 1 1 1 1 1 c 2 0 0 1 1 c 3 1 1 1 0 c 4 0 0 1 0 e 1 1 0 0 (a) Regular spectrum. Pr({c1} | (A, e)) = 0.30 Pr({c3} | (A, e)) = 0.70 A t 1 t 2 t 3 t 4 c 1 1 1 1 1 c 1 0 0 1 1 c 1 1 1 0 0 c 2 0 0 1 1 c 3 1 1 1 0 c 3 1 0 0 0 c 3 0 1 1 0 c 4 0 0 1 0 e 1 1<label>0</label></formula><p>Figure <ref type="figure" target="#fig_1">2</ref> depicts how QR can be employed to enhance program spectra. Figure <ref type="figure" target="#fig_1">2a</ref> shows a 4 transaction by 4 component spectrum, along with resulting diagnostic scores from applying reasoning-based SFL. Candidate generation, following the methodology described in Section 2.1 yields two candidate diagnoses -components c 1 and c 3 can independently explain the observed failures as both cover all failing test cases. For this example, suppose that c 1 is the faulty component. Since c 1 is involved in more passing transactions, the SFL framework will assign it a lower fault probability than c 3 . To improve the accuracy of the SFL framework, one needs more contextual information about component executions.</p><p>We envision three different types of landmarking strategies that can be employed to define qualitative state boundaries: (i) manual landmarking, where the system's developers manually define what are the possible qualitative states for a given component; (ii) static landmarking, where landmarks depend on the type of a component; and (iii) dynamic landmarking, where a component's value is inspected at runtime, and partitioned into a set of categories. Examples of dynamic strategies will be presented in Section 4.</p><p>Figure <ref type="figure" target="#fig_1">2b</ref> depicts the QR-augmented spectrum, where components representing qualitative partitions of both c 1 and c 3 are added to the original spectrum. An example of such partitioning using static landmarking: if c 1 represents a software procedure that contains a numeric parameter i, we can create two qualitative components c 1 and c 1 that represent invocations of c 1 with i ≥ 0 and i &lt; 0, respectively. This is a sign-based static partitioning strategy. Note that the original components c 1 and c 3 are not removed from the QR-augmented spectrum, as partitions may not provide further fault isolation.</p><p>If we are to diagnose the new spectrum from Figure <ref type="figure" target="#fig_1">2b</ref>, component c 1 is now the top-ranked diagnostic candidate. This QR-augmented spectrum avoids spurious inspections of component c 3 , and provides additional contextual information about the fault, namely that i &lt; 0 is often observed in failing transactions.</p><p>By landmarking data units associated with SFL components so that they are assigned a qualitative state at runtime, we are providing more context to the diagnostic process, and in some cases, consequently reducing the diagnostic effort. Such partitioning is also of crucial importance towards minimizing the impact and frequency of ambiguity grouping and coincidental correctness, as new, distinct components are added to the system's spectrum.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4">Evaluation</head><p>To evaluate our approach, we compare the cost of diagnosing a collection of faulty software programs using regular spectra against using QR-augmented spectra.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.1">Methodology</head><p>We have sourced experimental subjects from the Defects4J<ref type="foot" target="#foot_0">3</ref> (D4J) database. D4J is a catalog of 395 real, reproducible software bugs from 6 open-source projects -namely JFreeChart, Google Closure compiler, Apache Commons Lang, Apache Commons Math, Mockito, and Joda-Time. For each bug, a developer-written, fault-revealing test suite is made available.</p><p>We run the fault-revealing test suite of each buggy D4J subject, gathering method-level coverage and test outcomes, to construct its spectrum. Besides coverage, we also record the value of all primitive-type arguments and return values for every method call. This enables us to experiment with different qualitative partitioning strategies in an offline manner.</p><p>Using the recorded argument and return value data, we create multiple (automated) partitioning models resulting in several Q-SFL variants. A static partitioning variant using automated sign partitioning based on the variable's type, as described in Section 3.2, was considered. For dynamic partitioning, several clustering and classification algorithms <ref type="foot" target="#foot_1">4</ref>were considered: k-NN, linear classification, logistic regression, decision trees, random forest, and x-means clustering Test outcomes are used as the class labels in the case of supervised models. Note that we are not using the aforementioned models for prediction, but rather as a partitioning scheme based on observed values. Hence, we do not break our data into training and test sets, as is customary in prediction scenarios. Because we use automated, domain independent partitioning, only primitive types are considered in the evaluation.</p><p>To evaluate a QR-enhanced spectrum against its respective original spectrum, we first reduce the Q-SFL diagnostic report to method components. This reduction is done by considering the highest fault probability of any subcomponent belonging to each method, to effectively be able to compare method-level diagnostic effort between the two approaches. A change in diagnostic effort is measured using</p><formula xml:id="formula_7">∆C d = C d (Original) − C d (QR-Enhanced) (4)</formula><p>where C d is the cost of diagnosis, as explained in Section 2.1. A positive ∆C d means that the faulty component has risen in the ranking reported by SFL techniques when QR is used, yielding a lowered cost of diagnosing.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.2">Results and Discussion</head><p>We were able to automatically partition the faulty method in 167 D4J subjects. The remaining D4J subjects were discarded because (i) the faulty method does not contain parameters nor does it return a value; because (ii) the faulty method only contains non-primitive, non-null, complextyped parameters, which cannot be handled by the set of partitioning strategies described in Section 4.1; or because (iii) the aforementioned partitioning strategies were unable to create qualitative states whose coverage differs from their enclosing method.</p><p>Our first research question is RQ1: Does augmenting spectra with qualitative components improve their diagnosability?</p><p>In RQ1, we are concerned with finding if there exist. qualitative partitionings able to improve the fault localization ranking to the extent that faulty components are inspected earlier -thus decreasing developer wasted effort in a debugging task. Hence, for each D4J subject, we choose as the landmarking strategy to consider in the evaluation the one that is able to create the largest set of distinct, non-ambiguous qualitative components out of the faulty method(s). The breakdown of selected partitioning strategies per subject is as follows: Sign partitioning: 102 (61% of subjects); X-means: 25 (15%); k-NN: 8 (5%); Linear Regression: 1 (1%); Logistic Regression: 4 (2%); Decision Tree: 11 (7%); Random Forest: 16 (10%). Our sign-partitioning default strategy was used to qualitatively enhance the majority of considered subjects, while other strategies such as linear classification and logistic regression were rarely selected. We believe the reason that supervised learning approaches -which were fed test case outcomes as the target class label -only exhibited superior performance in 40 subjects (24%) is due to the fact that the number of failing tests in test suites is often much smaller than the amount of passing tests, weakening the resulting partitioning model. Figure <ref type="figure">3</ref> shows a scatter plot with the ∆C d of all subjects under analysis. Shown in a red background are the 15 subjects (9%) with a negative ∆C d -meaning that the report has suffered a decrease in accuracy after augmenting the spectra. The majority of these subjects belong to the Closure project. The 62 subjects (37%) with ∆C d = 0, where the faulty component has remained in the same position of the ranking, are shown in a white background. Lastly, 90 subjects (54%) that exhibited a positive ∆C d -cases where QR-enhanced spectra improved diagnosability -are shown in green. All in all, Q-SFL is at least as effective as the original approach in 92% of scenarios.</p><p>Table <ref type="table" target="#tab_0">1</ref> presents statistics computed to assess whether the observed metrics yield statistically significant results. QRenhanced spectra exhibits an overall lower effort to diagnose when compared to the original spectra, with less variance. To assess significance, we first performed the Shapiro-Wilk test for normality of effort data in both the original spectra case and QR case. With 99% confidence, the test's re-   <ref type="table" target="#tab_0">1</ref> shows the resulting Z statistic and p-value of Wilcoxon's test. With 99% confidence, we refute the null-hypothesis. RQ1? Yes, augmenting faulty spectra with new components resulting from qualitative landmarking of method parameter (and method return) values yields a statistically significant improved diagnostic report.</p><p>To be able to answer RQ1, we have selected for each subject the strategy with the highest number of qualitative partitions targeting the faulty method, as we were only concerned with the existence of a partitioning strategy that would improve diagnosability. However, in practice, it is not realistic to know a-priori what the faulty method is 5 . Hence, our second research question is RQ2: Is there a particular automated landmarking strategy that consistently shows improved diagnosability?</p><p>Figure <ref type="figure">4</ref> shows a breakdown of the number of subjects that fall into the ∆C d &lt; 0, ∆C d = 0 and ∆C d &gt; 0 cate- 5 Although some effort has been put forth to hierarchically debug programs using SFL <ref type="bibr" target="#b22">[23]</ref>.</p><p>gories for every partitioning strategy considered in this evaluation. This bar plot tells us that no single strategy achieves the same number of positive ∆C d scenarios as the partition cardinality selection scheme employed to answer RQ1 and to produce Figure <ref type="figure">3</ref>. Furthermore, strategies that were often picked by that criterion (namely, sign partitioning and X-means strategies) also show an increased number of negative ∆C d scenarios when compared to others. This leads us to conclude that no single strategy (out of the ones that were analyzed) is able to consistently show improved diagnoses.</p><p>RQ2? No, at least for the automated landmarking strategies considered in the evaluation, there is no evidence that a single automated strategy can consistently outperform the original spectra. However, since Q-SFL can improve diagnosability, as per the answer to RQ1, we presume that manual or more complex, context-aware, automated white-box strategies -which can perform static and dynamic source code analysis -are much more suited to outperform the original spectra due to more effective and more informed partitioning.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5">Related Work</head><p>There have been previous forays into enhancing the diagnostic report of automated fault localization techniques to either improve their accuracy or comprehension of the failing component.</p><p>SFL approaches to debugging typically present their report to users as a list of suspicious components that is sorted according to the likelihood of being faulty. 1 have proposed a visual way of depicting the results of a similarity-based software SFL diagnosis, color-coding each component according to their suspiciousness score <ref type="bibr" target="#b0">[1]</ref>. 24 expand on the visual concept by leveraging tree-based visualizations that innately exploit the tree-like structure of Java code, naturally aggregating neighboring components and aiding exploration of suspicious code regions <ref type="bibr" target="#b23">[24]</ref>. Another approach to improve the comprehension of faults was proposed by 25, called Whyline, which allows the users to obtain evidence about the program's execution before forming an explanation of the cause by providing the ability to ask "why did" and "why didn't" questions about program output <ref type="bibr" target="#b24">[25]</ref>.</p><p>26 have proposed an extension to SFL to improve comprehension. It uses integration coverage data, by way of capturing method invocation pairs, to guide the fault local-ization process. By calculating the fault likelihood of component pairs, the authors are able to generate roadmaps for component investigation, guiding users through likely faulty paths and increasing the amount of contextual cues <ref type="bibr" target="#b25">[26]</ref>.</p><p>Advancements in bug prediction <ref type="bibr" target="#b26">[27]</ref> have enabled its use within automated fault localization processes. 28 propose an ensemble approach to fault localization that exploits information from versioning systems, bug tracking repositories and structured information retrieval from the source code <ref type="bibr" target="#b27">[28]</ref>. 17 rely on kernel density estimation models of component behavior and previous diagnoses to better estimate the component goodness parameter in spectrum-based reasoning <ref type="bibr" target="#b16">[17]</ref>. 18 also modify the traditional spectrumbased reasoning framework by leveraging a fault prediction model trained with historical information from the project's versioning system and bug tracker to compute the prior probability distribution of diagnostic candidates <ref type="bibr" target="#b17">[18]</ref>.</p><p>Augmenting fault-localization via slicing has also been proposed. 29 have proposed the use of dynamic backward slices -comprised of statements that directly or indirectly effect the computation of the output value through data-or control-dependency chains -as components in similaritybased SFL <ref type="bibr" target="#b28">[29]</ref>. 30 propose an approach that leverages a model-based slicing-hitting-set-computation -which computes the dynamic slices of all faulty variables in all failed test cases, derives minimal diagnostic candidates from the slices and computes fault probabilities for each statement based on number of the diagnoses that contain it <ref type="bibr" target="#b29">[30]</ref>.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="6">Conclusion</head><p>This paper proposes a new approach to spectrum-based fault localization that leverages qualitative reasoning (QR). The Q-SFL approach splits components form the software system under analysis into a set of qualitative states through the creation of qualitative landmarks that partition a component's domain. These qualitative states are then considered as SFL components to be ranked using traditional faultlocalization methodologies. Since we treat these qualitative states as components, our diagnostic reports not only recommend likely fault locations, but also provide an insight on what behaviors the faulty components assume when failures are detected, facilitating the comprehension of the fault.</p><p>We evaluate the approach on subjects from the Defects4J catalog of real faults from medium and large-sized open source software projects. Results show that spectra which were augmented using qualitative partitioning of method parameters shows a (statistically significant) improvement in the diagnostic accuracy in 54% of scenarios. However, we also found no evidence of automated partitioning strategies that were consistently better than the original spectra, meaning that more intricate, context-aware partitioning strategies will likely be necessary for practical applications of the approach.</p><p>This work lays the first stone in a series of efforts to more deeply integrate reasoning-based AI approaches into spectrum-based fault localization. It paves the way for further efforts by the fault localization research community, namely by: 1. Improving automated landmarking by expanding its application to complex non-primitive objects and by exploring ensembles of multiple strategies.</p><p>2. Conducting a systematic user study investigating the extent that qualitative domain partitioning aids fault understanding.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>Figure 1 :</head><label>1</label><figDesc>Figure 1: Example of a possible qualitative discretization of water temperature.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>Figure 2 :</head><label>2</label><figDesc>Figure 2: Example of coverage partitioning via QR.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head>Figure 3 :Figure 4 :</head><label>34</label><figDesc>Figure 3: Difference in C d between original and QR-enhanced spectra per subject.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_0"><head>Table 1 :</head><label>1</label><figDesc>Statistical tests.</figDesc><table><row><cell></cell><cell>Original</cell><cell>QR-enhanced</cell></row><row><cell></cell><cell>Spectra</cell><cell>Spectra</cell></row><row><cell>Mean C d</cell><cell>60.28</cell><cell>37.56</cell></row><row><cell>Median C d</cell><cell>6.00</cell><cell>2.50</cell></row><row><cell>C d Variance</cell><cell>2.10×10 4</cell><cell>1.56×10 4</cell></row><row><cell cols="3">W = 0.46 Shapiro-Wilk p-value = 2.20×10 −22 p-value = 1.10×10 −24 W = 0.32</cell></row><row><cell>Wilcoxon</cell><cell>Z = 5.45</cell><cell></cell></row><row><cell>Signed-rank</cell><cell cols="2">p-value = 5.10×10 −10</cell></row><row><cell cols="3">sults tell us that the distributions are not normal. Given</cell></row><row><cell cols="3">that C d is not normally distributed and that each observation</cell></row><row><cell cols="3">is paired, we use the non-parametrical statistical hypothesis</cell></row><row><cell cols="3">test Wilcoxon signed-rank. Our null-hypothesis is that the</cell></row><row><cell cols="3">median difference between the two observations (i.e., ∆C d )</cell></row><row><cell cols="2">is zero. The fifth row from Table</cell><cell></cell></row></table></figure>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="3" xml:id="foot_0">Defects4J 1.1.0 is available at https://github.com/ rjust/defects4j (accessed June 2018).</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="4" xml:id="foot_1">We chose popular classification algorithms implemented in the Scikit-learn package. X-means, as implemented in the pyclustering package, was selected as it can automatically decide the optimal number of clusters to use<ref type="bibr" target="#b21">[22]</ref>.</note>
		</body>
		<back>

			<div type="acknowledgement">
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Acknowledgments</head><p>This material is based upon work supported by the scholarship number SFRH/BD/95339/2013 from Fundação para a Ciência e Tecnologia (FCT).</p></div>
			</div>

			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<analytic>
		<title level="a" type="main">Visualization of test information to assist fault localization</title>
		<author>
			<persName><forename type="first">James</forename><forename type="middle">A</forename><surname>Jones</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Mary</forename><forename type="middle">Jean</forename><surname>Harrold</surname></persName>
		</author>
		<author>
			<persName><forename type="first">John</forename><forename type="middle">T</forename><surname>Stasko</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">ICSE&apos;02</title>
				<imprint>
			<date type="published" when="2002">2002</date>
			<biblScope unit="page" from="467" to="477" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">Extended comprehensive study of association measures for fault localization</title>
		<author>
			<persName><forename type="first">David</forename><surname>Lucia</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Lingxiao</forename><surname>Lo</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Ferdian</forename><surname>Jiang</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Aditya</forename><surname>Thung</surname></persName>
		</author>
		<author>
			<persName><surname>Budi</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Journal of Software: Evolution and Process</title>
		<imprint>
			<biblScope unit="volume">26</biblScope>
			<biblScope unit="issue">2</biblScope>
			<biblScope unit="page" from="172" to="219" />
			<date type="published" when="2014">2014</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">Spectrum-based multiple fault localization</title>
		<author>
			<persName><forename type="first">Rui</forename><surname>Abreu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Peter</forename><surname>Zoeteweij</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Arjan</forename><forename type="middle">J C</forename><surname>Van Gemund</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">ASE&apos;09</title>
				<imprint>
			<date type="published" when="2009">2009</date>
			<biblScope unit="page" from="88" to="99" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">Are automated debugging techniques actually helping programmers?</title>
		<author>
			<persName><forename type="first">Chris</forename><surname>Parnin</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Alessandro</forename><surname>Orso</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">ISSTA&apos;11</title>
				<imprint>
			<date type="published" when="2011">2011</date>
			<biblScope unit="page" from="199" to="209" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">Revisiting the practical use of automated software fault localization techniques</title>
		<author>
			<persName><forename type="first">Aaron</forename><surname>Ang</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Alexandre</forename><surname>Perez</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Arie</forename><surname>Van Deursen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Rui</forename><surname>Abreu</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">IWPD&apos;</title>
		<imprint>
			<biblScope unit="volume">17</biblScope>
			<biblScope unit="page" from="175" to="182" />
			<date type="published" when="2017">2017</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">Using HTML5 visualizations in software fault localization</title>
		<author>
			<persName><forename type="first">Carlos</forename><surname>Gouveia</surname></persName>
		</author>
		<author>
			<persName><forename type="first">José</forename><surname>Campos</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Rui</forename><surname>Abreu</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">VISSOFT&apos;</title>
				<imprint>
			<date type="published" when="2013">2013</date>
			<biblScope unit="volume">13</biblScope>
			<biblScope unit="page" from="1" to="10" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">Qualitative reasoning</title>
		<author>
			<persName><forename type="first">D</forename><surname>Kenneth</surname></persName>
		</author>
		<author>
			<persName><surname>Forbus</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">The Computer Science and Engineering Handbook</title>
				<imprint>
			<date type="published" when="1997">1997</date>
			<biblScope unit="page" from="715" to="733" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">Qualitative reasoning about physical systems: A return to roots</title>
		<author>
			<persName><forename type="first">Brian</forename><forename type="middle">C</forename><surname>Williams</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Johan</forename><surname>De Kleer</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Artificial Intelligence</title>
		<imprint>
			<biblScope unit="volume">51</biblScope>
			<biblScope unit="issue">1-3</biblScope>
			<biblScope unit="page" from="1" to="9" />
			<date type="published" when="1991">1991</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<analytic>
		<title level="a" type="main">De-fects4j: a database of existing faults to enable controlled testing studies for java programs</title>
		<author>
			<persName><forename type="first">René</forename><surname>Just</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Darioush</forename><surname>Jalali</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Michael</forename><forename type="middle">D</forename><surname>Ernst</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">ISSTA&apos;14</title>
				<imprint>
			<date type="published" when="2014">2014</date>
			<biblScope unit="page" from="437" to="440" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">A low-cost approximate minimal hitting set algorithm and its application to model-based diagnosis</title>
		<author>
			<persName><forename type="first">Rui</forename><surname>Abreu And Arjan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">C</forename><surname>Van Gemund</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">SARA&apos;09</title>
				<imprint>
			<date type="published" when="2009">2009</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<analytic>
		<title level="a" type="main">Computing minimal diagnoses by greedy stochastic search</title>
		<author>
			<persName><forename type="first">Alexander</forename><surname>Feldman</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Gregory</forename><forename type="middle">M</forename><surname>Provan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Arjan</forename><forename type="middle">J C</forename><surname>Van Gemund</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">AAAI&apos;08</title>
				<imprint>
			<date type="published" when="2008">2008</date>
			<biblScope unit="page" from="911" to="918" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<analytic>
		<title level="a" type="main">MHS2: A map-reduce heuristic-driven minimal hitting set search algorithm</title>
		<author>
			<persName><forename type="first">Nuno</forename><surname>Cardoso</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Rui</forename><surname>Abreu</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">MUSEPAT&apos;</title>
				<imprint>
			<date type="published" when="2013">2013</date>
			<biblScope unit="volume">13</biblScope>
			<biblScope unit="page" from="25" to="36" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<analytic>
		<title level="a" type="main">A new bayesian approach to multiple intermittent fault diagnosis</title>
		<author>
			<persName><forename type="first">Rui</forename><surname>Abreu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Peter</forename><surname>Zoeteweij</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Arjan</forename><forename type="middle">J C</forename><surname>Van Gemund</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">IJCAI&apos;09</title>
				<imprint>
			<date type="published" when="2009">2009</date>
			<biblScope unit="page" from="653" to="658" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<analytic>
		<title level="a" type="main">Software hell</title>
		<author>
			<persName><forename type="first">John</forename><surname>Carey</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Neil</forename><surname>Gross</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Marcia</forename><surname>Stepanek</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Otis</forename><surname>Port</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Business Week</title>
				<imprint>
			<date type="published" when="1999">1999</date>
			<biblScope unit="page" from="391" to="411" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b14">
	<analytic>
		<title level="a" type="main">Multiple representations of knowledge in a mechanics problem-solver</title>
		<author>
			<persName><forename type="first">Johan</forename><surname>De</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Kleer</forename></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">IJCAI&apos;77</title>
				<imprint>
			<date type="published" when="1977">1977</date>
			<biblScope unit="page" from="299" to="304" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b15">
	<analytic>
		<title level="a" type="main">Qualitative simulation</title>
		<author>
			<persName><forename type="first">Benjamin</forename><surname>Kuipers</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Artificial Intelligence</title>
		<imprint>
			<biblScope unit="volume">29</biblScope>
			<biblScope unit="issue">3</biblScope>
			<biblScope unit="page" from="289" to="338" />
			<date type="published" when="1986">1986</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b16">
	<analytic>
		<title level="a" type="main">A kernel density estimate-based approach to component goodness modeling</title>
		<author>
			<persName><forename type="first">Nuno</forename><surname>Cardoso</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Rui</forename><surname>Abreu</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">AAAI&apos;13</title>
				<imprint>
			<date type="published" when="2013">2013</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b17">
	<analytic>
		<title level="a" type="main">Dataaugmented software diagnosis</title>
		<author>
			<persName><forename type="first">Amir</forename><surname>Elmishali</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Roni</forename><surname>Stern</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Meir</forename><surname>Kalech</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">AAAI&apos;16</title>
				<imprint>
			<date type="published" when="2016">2016</date>
			<biblScope unit="page" from="4003" to="4009" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b18">
	<analytic>
		<title level="a" type="main">Ties within fault localization rankings: Exposing and addressing the problem</title>
		<author>
			<persName><forename type="first">Xiaofeng</forename><surname>Xu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">W</forename><forename type="middle">Eric</forename><surname>Vidroha Debroy</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Donghui</forename><surname>Wong</surname></persName>
		</author>
		<author>
			<persName><surname>Guo</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">International Journal of Software Engineering and Knowledge Engineering</title>
		<imprint>
			<biblScope unit="volume">21</biblScope>
			<biblScope unit="issue">6</biblScope>
			<biblScope unit="page" from="803" to="827" />
			<date type="published" when="2011">2011</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b19">
	<analytic>
		<title level="a" type="main">Ambiguity groups and testability</title>
		<author>
			<persName><forename type="first">G</forename><forename type="middle">N</forename><surname>Stenbakken</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><forename type="middle">M</forename><surname>Souders</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><forename type="middle">W</forename><surname>Stewart</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">IEEE Transactions on Instrumentation and Measurement</title>
		<imprint>
			<biblScope unit="volume">38</biblScope>
			<biblScope unit="issue">5</biblScope>
			<biblScope unit="page" from="941" to="947" />
			<date type="published" when="1989">1989</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b20">
	<analytic>
		<title level="a" type="main">An analysis of test data selection criteria using the RE-LAY model of fault detection</title>
		<author>
			<persName><forename type="first">Debra</forename><forename type="middle">J</forename><surname>Richardson</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Margaret</forename><forename type="middle">C</forename><surname>Thompson</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">IEEE Transactions on Software Engineering</title>
		<imprint>
			<biblScope unit="volume">19</biblScope>
			<biblScope unit="issue">6</biblScope>
			<biblScope unit="page" from="533" to="553" />
			<date type="published" when="1993">1993</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b21">
	<analytic>
		<title level="a" type="main">X-means: Extending k-means with efficient estimation of the number of clusters</title>
		<author>
			<persName><forename type="first">Dan</forename><surname>Pelleg</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Andrew</forename><forename type="middle">W</forename><surname>Moore</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">ICML&apos;00</title>
				<imprint>
			<date type="published" when="2000">2000</date>
			<biblScope unit="page" from="727" to="734" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b22">
	<analytic>
		<title level="a" type="main">A dynamic code coverage approach to maximize fault localization efficiency</title>
		<author>
			<persName><forename type="first">Alexandre</forename><surname>Perez</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Rui</forename><surname>Abreu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">André</forename><surname>Riboira</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Journal of Systems and Software</title>
		<imprint>
			<biblScope unit="volume">90</biblScope>
			<biblScope unit="page" from="18" to="28" />
			<date type="published" when="2014">2014</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b23">
	<analytic>
		<title level="a" type="main">GZoltar: an eclipse plug-in for testing and debugging</title>
		<author>
			<persName><forename type="first">José</forename><surname>Campos</surname></persName>
		</author>
		<author>
			<persName><forename type="first">André</forename><surname>Riboira</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Alexandre</forename><surname>Perez</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Rui</forename><surname>Abreu</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">ASE&apos;</title>
		<imprint>
			<biblScope unit="volume">12</biblScope>
			<biblScope unit="page" from="378" to="381" />
			<date type="published" when="2012">2012</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b24">
	<analytic>
		<title level="a" type="main">Designing the whyline: a debugging interface for asking questions about program behavior</title>
		<author>
			<persName><forename type="first">Andrew</forename></persName>
		</author>
		<author>
			<persName><forename type="first">Jensen</forename><surname>Ko</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Brad</forename><forename type="middle">A</forename><surname>Myers</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">CHI&apos;04</title>
				<imprint>
			<date type="published" when="2004">2004</date>
			<biblScope unit="page" from="151" to="158" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b25">
	<analytic>
		<title level="a" type="main">Adding context to fault localization with integration coverage</title>
		<author>
			<persName><forename type="first">Higor</forename><surname>Amario</surname></persName>
		</author>
		<author>
			<persName><forename type="first">De</forename><surname>Souza</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Marcos</forename><surname>Lordello</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Chaim</forename></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">ASE&apos;</title>
		<imprint>
			<biblScope unit="volume">13</biblScope>
			<biblScope unit="page" from="628" to="633" />
			<date type="published" when="2013">2013</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b26">
	<analytic>
		<title level="a" type="main">An extensive comparison of bug prediction approaches</title>
		<author>
			<persName><forename type="first">Michele</forename><surname>Marco D'ambros</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Romain</forename><surname>Lanza</surname></persName>
		</author>
		<author>
			<persName><surname>Robbes</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">MSR&apos;10</title>
				<imprint>
			<date type="published" when="2010">2010</date>
			<biblScope unit="page" from="31" to="41" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b27">
	<analytic>
		<title level="a" type="main">Version history, similar report, and structure: putting them together for improved bug localization</title>
		<author>
			<persName><forename type="first">Shaowei</forename><surname>Wang</surname></persName>
		</author>
		<author>
			<persName><forename type="first">David</forename><surname>Lo</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">ICPC&apos;14</title>
				<imprint>
			<date type="published" when="2014">2014</date>
			<biblScope unit="page" from="53" to="63" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b28">
	<analytic>
		<title level="a" type="main">Slice-based statistical fault localization</title>
		<author>
			<persName><forename type="first">Xiaoguang</forename><surname>Mao</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Yan</forename><surname>Lei</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Ziying</forename><surname>Dai</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Yuhua</forename><surname>Qi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Chengsong</forename><surname>Wang</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Journal of Systems and Software</title>
		<imprint>
			<biblScope unit="volume">89</biblScope>
			<biblScope unit="page" from="51" to="62" />
			<date type="published" when="2014">2014</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b29">
	<analytic>
		<title level="a" type="main">Spectrum enhanced dynamic slicing for better fault localization</title>
		<author>
			<persName><forename type="first">Birgit</forename><surname>Hofer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Franz</forename><surname>Wotawa</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">ECAI&apos;12</title>
				<imprint>
			<date type="published" when="2012">2012</date>
			<biblScope unit="page" from="420" to="425" />
		</imprint>
	</monogr>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
