<?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">Comparison of Occurrence of Design Smells in Desktop and Mobile Applications</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Daniel</forename><surname>Ogenrwot</surname></persName>
							<email>d.ogenrwot@gu.ac.ug</email>
							<affiliation key="aff0">
								<orgName type="department">Department of Computer Science</orgName>
								<orgName type="institution">Gulu University Gulu</orgName>
								<address>
									<country key="UG">Uganda</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Joyce</forename><surname>Nakatumba-Nabende</surname></persName>
							<affiliation key="aff1">
								<orgName type="department">Department of Computer Science</orgName>
								<orgName type="institution">Makerere University Kampala</orgName>
								<address>
									<country key="UG">Uganda</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Michel</forename><forename type="middle">R V</forename><surname>Chaudron</surname></persName>
							<email>chaudron@chalmers.se</email>
							<affiliation key="aff2">
								<orgName type="department">Department of Computer Science and Engineering Chalmers |</orgName>
								<orgName type="institution">Gothenburg University Gothenburg</orgName>
								<address>
									<country key="SE">Sweden</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">Comparison of Occurrence of Design Smells in Desktop and Mobile Applications</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">A47807DCB5B2807E0DE96E3DA6DC0F17</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-25T00:52+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>
			<textClass>
				<keywords>
					<term>Design Smells</term>
					<term>Clustering</term>
					<term>Software Quality</term>
					<term>Anti-patterns</term>
				</keywords>
			</textClass>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Design smells are symptoms of poor solutions to recurring design problems in a software system. Those symptoms have a direct negative impact on software quality by making it difficult to comprehend and maintain. In this paper we compare the occurrence of design smells between different technological ecosystems: windows/desktop and android/mobile. This knowledge is significant for various software maintenance activities such as program quality assurance and refactoring. To supplement previous findings, our study aimed at (a) understanding if and how the relationship among design smells differs across windows and mobile applications and (b) determining the groups of design smells that tend to occur frequently together and the magnitude of their occurrence in windows and mobile applications. In this study, we explored the use of statistics and unsupervised learning on a dataset consisting of twelve ( <ref type="formula">12</ref>) Javabased open-source projects mined from GitHub. We identified fifteen (15) most frequent design smells across desktop and mobile applications. Additionally, a clustering technique revealed which groups of design smells that often co-occur. Specifically, {SpeculativeGenerality, SwissArmyKnife} and {LongParameterList, ClassDataShouldBePrivate} are observed to occur frequently together in desktop and mobile applications.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>I. INTRODUCTION</head><p>The concept of "design smell" was introduced by Fowler <ref type="bibr" target="#b0">[1]</ref> and defined as symptoms of poor solutions to recurring design problems. The symptoms of design smells in a software system are also referred to as anti-patterns. Design smells are normally introduced in source code by developers during their daily activities such as the implementation of user requirements, developing important patches or during a "hack" or "workaround" to obtain a sub-optimal solution to existing problems <ref type="bibr" target="#b1">[2]</ref>. According to previous studies, the existence of design smells makes programs complex to comprehend, summarize and modify <ref type="bibr" target="#b2">[3]</ref>, which poses a direct negative effect on software quality <ref type="bibr" target="#b2">[3]</ref>, <ref type="bibr" target="#b3">[4]</ref>. The existence of code smells in any code-base calls for refactoring, which is a technique of restructuring a program without changing its external behavior to ensure that any further development is possible. However, the cost of refactoring becomes expensive in terms of time and resources, especially for today's ever-evolving software platforms.</p><p>This work was supported by Mak-Sida Project 381.</p><p>The need for effective detection of anti-patterns has attracted a lot of research interests, both from academic and software industry. As such, significant studies towards the realization of effective design smell detection methods and tools have been conducted over the last few years <ref type="bibr" target="#b2">[3]</ref>, <ref type="bibr" target="#b4">[5]</ref>, <ref type="bibr" target="#b5">[6]</ref>. Software metrics provide the backbone for most anti-pattern detection platforms and approaches. They are applied to evaluate the internal code quality and productivity, as well as maintainability of software. For example; Imran <ref type="bibr" target="#b2">[3]</ref> used an unsupervised spectral clustering tool guided by software metrics to detect design smells across 3,306 classes of real-life open-source Java software.</p><p>Design smells are detected using a combination of software metrics such as Depth of Inheritance Tree (DIT), Weighted Methods per Class (WMC) and/or Coupling Between Objects (CBO) among others. Understanding the diversity, distribution, magnitude and co-occurrence of various design smells within a source code could provide a good opportunity for optimizing these metrics and consequently improving rule-based design smells detection approaches. Moreover, this knowledge is essential to developers in implementing various design smell control and prevention mechanisms as well as guiding software maintenance activities.</p><p>It is upon this motivation that we propose a method based on statistics and machine learning to understand the diversity, distribution, magnitude and co-occurrence of design smells across desktop and mobile applications. We identified and analyzed fifteen <ref type="bibr" target="#b14">(15)</ref> most frequent design smells across twelve <ref type="bibr" target="#b11">(12)</ref> open-source object-oriented Java projects extracted from GitHub. This paper makes the following contributions:</p><p>1) We present a comparison of occurrence of design smells in desktop and mobile application with a focus on diversity, distribution, magnitude and co-occurrence using a combination of heuristics, statistics and unsupervised learning techniques. 2) We show that the aforementioned clustering approach can be leveraged to expose hidden and non innate relationships among design smells. 3) We discuss the implications of our study for researchers, software industry and on the development of design smell detection tools.</p><p>The rest of the paper is structured as follows: In section II we explain key concepts of design smells, their effect on software maintainability and discuss related work. Next, in section III, we provide a detailed explanation of the dataset and methods used to conduct our study. Then, we present the results and discussions in section IV. We end with discussing implications in V, conclusions in VII and direction of future work.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>II. RELATED WORK</head></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>A. Design Smells</head><p>Design smells, also known as "anti-patterns" <ref type="bibr" target="#b6">[7]</ref>, "code smells" <ref type="bibr" target="#b7">[8]</ref> or "bad smells", are indicators of issues in source code that can negatively affect maintainability of a software system as well as various programming activities <ref type="bibr" target="#b8">[9]</ref>. Technically, code smells do not stop the system from functioning but can easily affect the development process, weaken the sustainability of software and increase the probability of its failure <ref type="bibr" target="#b9">[10]</ref>. The existence of design smells in source code calls for code refactoring which is a common programming task aimed at improving the internal structure of existing software code without affecting its observable behavior. It greatly enhance software maintainability and generate a more manageable internal architecture <ref type="bibr" target="#b9">[10]</ref>. An earlier study by Fowler <ref type="bibr" target="#b0">[1]</ref> outlines 22 design smells and their corresponding refactoring techniques. Those design smells are programming languageindependent but mostly targets object-oriented paradigm.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>B. Design Smell Detection Techniques</head><p>The detection of harmful code smells which deteriorate the software quality has attracted a lot of research interests, both from academic and software industry. As such, significant studies towards effective detection of code smells have been conducted over the last few years. Sharma and Spinellis <ref type="bibr" target="#b10">[11]</ref> grouped design smells detection strategies in five broad categories, which include; Metrics-based, Rules/Heuristic-based, History-based, Machine learning-based and Optimizationbased smell detection.</p><p>1) Metric-based design smell detection: Metrics-based is the most common approach of design smells detection <ref type="bibr" target="#b11">[12]</ref>. It is relatively easy to implement and normally follows three generic steps; (1) take source code as input and prepare a source code model such as Abstract Syntax Tree (AST). ( <ref type="formula">2</ref>) detect a set of source code metrics that capture the characteristics of smells. (3) detect smells by a suitable threshold value.</p><p>2) Machine learning-based design smell detection: Several authors have applied machine learning in the detection of code/design smells with a common focus on supervised learning <ref type="bibr" target="#b5">[6]</ref>, <ref type="bibr" target="#b12">[13]</ref>- <ref type="bibr" target="#b14">[15]</ref> and cluster-based approaches <ref type="bibr" target="#b2">[3]</ref>.</p><p>Liu et al. <ref type="bibr" target="#b13">[14]</ref> proposed a deep learning-based approach to detect Feature Envy. Their approach relies on both structural and lexical information. Labeled samples were automatically generated from open-source applications. The gold dataset is fed into two convolutional neural network layers and one fully-connected layer to perform classification. More recently, Barbez et al. <ref type="bibr" target="#b5">[6]</ref> extended the approaches in <ref type="bibr" target="#b12">[13]</ref> and <ref type="bibr" target="#b13">[14]</ref> using ensemble machine learning method called SMart Aggregation of Anti-patterns Detectors (SMAD) to detect antipatterns. SMAD was designed by intergrating several detection tools based on their internal detection rules to produce an improved prediction from a reasonable number of training examples. SMAD significantly outperformed other ensemble methods especially for the detection of two well-known antipatterns i.e. God Class and Feature Envy in eight Java projects.</p><p>Although machine learning-based smell detection has demonstrated a lot of potentials as recorded by different authors, it is heavily dependent on a large amount of training dataset and availability of such dataset is still a huge concern.</p><p>3) Optimization: Most studies in this category utilize optimization algorithms such as genetic algorithms to detect anti-patterns in a software system. Saranya et al. <ref type="bibr" target="#b4">[5]</ref> applied a genetic algorithm for model-level code smell detection. The motivation of their study was based on the limitation of rule and metrics-based code smell detection approaches. Specifically, defining the rules and identifying the correct threshold value in rule-based code smells detection is a tedious task and normally achieved through trial and error method. To address this issue, this work introduced a Euclidean distancebased Genetic Algorithm and Particle Swarm Optimization (EGAPSO). The result of EGAPSO proves to be effective when compared to other code smell detection approaches such as DEtection &amp; CORrection (DECOR) <ref type="bibr" target="#b15">[16]</ref>.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>C. Impact of Design Smells on Software Maintenance</head><p>It is important to note that code smells are not errors and therefore, they do not prevent the software from functioning. In some circumstances, code smells are introduced by developers while implementing important patches or developing a "hack" or "workaround" as a sub-optimal solution to existing problem <ref type="bibr" target="#b1">[2]</ref>. According to previous studies, the existence of design smells makes the program complex to comprehend, summarize and modify <ref type="bibr" target="#b2">[3]</ref>, <ref type="bibr" target="#b16">[17]</ref>, which negatively affect software quality <ref type="bibr" target="#b3">[4]</ref>.</p><p>Soh et al. <ref type="bibr" target="#b8">[9]</ref> studied the effects of code smells at the developer's activity level i.e. code reading, editing, searching, and navigating. The experiment involved six expert developers performing maintenance tasks on four Java applications. Each developer performed two tasks while logs were monitored. An annotation schema was then defined to identify developers' activities and assess whether code smells affect his/her different maintenance task. Result of their study indicated that code smells indeed affect the effort of certain kind of activities but the effect is contingent on the type of maintenance.</p><p>It is also noted that design smells are associated with the occurrence of software bugs, which affect maintenance tasks. Cairo et al. <ref type="bibr" target="#b17">[18]</ref> carried out a systematic literature review on published studies that provide evidence of the influence of code smells on the occurrence of software bugs. In their study, 24 code smells were found to be more influential in the occurrence of bugs. Specifically, God Class, Shotgun Surgery and God Method were found to be significant contributors and positively associated with error proneness.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>D. Design Smells in Desktop and Mobile Applications</head><p>A few previous papers carried out work closely related to the study of design smells in desktop and mobile applications. To begin with, Mannan et al. <ref type="bibr" target="#b18">[19]</ref> conducted a study to understand code smells in android applications and how they compare with desktop application. Their study involved a large corpus of desktop and android application collected from Github.</p><p>Habchi et al. <ref type="bibr" target="#b19">[20]</ref> studied code smells in iOS by analyzing 279 open-source iOS apps. In this paper, the authors considered the presence of object-oriented and iOS-specific code smells by analyzing 279 open-source iOS apps. Source code was analyzed by extending PAPRIKA toolkit in order to accommodate the detection of code smells in Objective-C or Swift language. Their observation shows that iOS apps tend to contain the same proportions of code smells regardless of the development language, but they seem to be less prone to code smells compared to Android apps.</p><p>Another interesting replication study by Palomba et al. <ref type="bibr" target="#b20">[21]</ref> focused on investigating code-smells co-occurrence using association rule. This study was carried out on a dataset composed of 395 releases of 30 software systems, capturing 13 code-smells. Their results highlighted some expected relationships but also revealed some co-occurrences missed by previous research.</p><p>Despite the results obtained from these study, the following extensions can be made; The study by Mannan et al. <ref type="bibr" target="#b18">[19]</ref> focused mainly on code smells which tends to affect readability and simplicity. The task of refactoring in this case involves renaming or extracting to methods. Design smells, on the other hand, tend to be more subtle. They usually affect maintainability and flexibility. Next, their study <ref type="bibr" target="#b18">[19]</ref> did not look at the general co-occurrence of code smells and how these co-occurrences varies across desktop and android application. Palomba et al. <ref type="bibr" target="#b20">[21]</ref> focused on general co-occurrence of code smells in Java but not in mobile applications. Moreover, that projects selected in this study comprise a mixer of Java desktop applications and libraries, whose internal implementation slightly differs.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>III. METHOD</head><p>In this section we discuss the approach taken to conduct this study including data collection, preprocessing and analysis techniques.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>A. The Dataset</head><p>Our dataset is based on twelve <ref type="bibr" target="#b11">(12)</ref> real-life open-source Java projects mined from GitHub. Seven <ref type="bibr" target="#b6">(7)</ref> of the projects are mobile (android-based) applications and the other five ( <ref type="formula">5</ref>) are desktop applications. The android projects were selected from a list of projects previously studied by Mannan et al. <ref type="bibr" target="#b18">[19]</ref> found here <ref type="foot" target="#foot_1">1</ref> . For our study, we focused on the latest releases from GitHub. The selection criteria for desktop applications was based on two significant characteristics:</p><p>• All projects rely on the Java Swing library for GUI design. • Cross-platform compatibility (i.e. can function on both Windows, MacOS and Linux operation system) and depended on Java Core libraries for the design of its backend logic.</p><p>The selected projects constitute a total of 1,601,369 Java Lines of Code (LoC). We choose Java-based projects because they account for a wide variety of open source projects hosted on different code repositories and at the time of this research, Java was among the top 3 popular programming languages within the software industry. Moreover, Java is used by billions of devices across the globe. The details of the selected projects are shown in Table <ref type="table" target="#tab_0">I</ref>. </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>B. Data Preprocessing</head><p>For the preprocessing task, we passed the project class files as input to an anti-pattern detection tool. Particularly, we used Pattern Trace Identification, Detection, and Enhancement in Java (Ptidej) tool. It is a open source Java-based reverse engineering tool suite that includes several identification algorithms for idioms, micro-patterns, design patterns, and design defects <ref type="bibr" target="#b21">[22]</ref>. Using this tool, we were able to detect and select fifteen <ref type="bibr" target="#b14">(15)</ref> frequent anti-patterns across the selected projects which includes: LongMethod, ComplexClass, LongParameterList, BaseClassShouldBeAbstract, Speculative-Generality, ClassDataShouldBePrivate, ManyFieldAttributes-ButNotComplex, MessageChain, SpaghettiCode, RefusedPar-entBequest, SwissArmyKnife, Blob, AntiSingleton, LargeClass, LazyClass. Design smells are detected and stored in ".ini" files. The file names are tagged with a specific design smell type. For example, in the k-9 mail project, AntiSingleton design smell is stored as "DetectionResults in K9 for An-tiSingleton.ini". Our goal is to extract class names and the corresponding design smell detected in that class.</p><p>We apply heuristics to determine the structure and pattern of class names in the detected anti-pattern result files for the different projects. We use python regular expressions to extract class names and associated them with respective design smell type. A value of 1 was assigned if a particular anti-pattern is detected in a class otherwise 0 is assigned. Table <ref type="table" target="#tab_1">II</ref> shows a sample of the final output of the preprocessing tasks.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>C. Data Analysis</head><p>We start by grouping the data to create a collection of aggregated number of each design smells in specific project. Next, we grouped the data according to whether the codebase is a mobile (android) app or desktop software as shown in Table <ref type="table" target="#tab_2">III</ref>.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>D. Clustering</head><p>Clustering is one of the most important concepts for unsupervised learning in machine learning. In this study, we used Powered Outer Probabilistic Clustering (POPC) <ref type="bibr" target="#b22">[23]</ref>. The choice of this algorithm was based on the following motivation: First, numerous clustering algorithms including the popular k-means algorithm, require the number of clusters to be specified in advance which is a huge drawback. Some studies use the silhouette coefficient, elbow method, and other approaches to determine the optimal number of clusters. However, those methods have their limitations, for example: sometimes the elbow method fails to give a clear "elbow point". Second, k-means is not very suitable for a binary feature sets.</p><p>Using POPC, we do not need to specify the number of clusters upfront. It tries to mitigate these drawbacks using back-propagation. The algorithm is observed to work quite well on binary datasets and converges to the expected (optimal) number of clusters on theoretical examples as elaborated by Taraba <ref type="bibr" target="#b22">[23]</ref>.</p><p>Based on the processed dataset in Table <ref type="table" target="#tab_1">II</ref>, we constructed two different datasets for the task of clustering. The first dataset consist of desktop data while the second contain mobile data. This was carried out to determine if there were any observable differences in the cluster formation across the datasets. The output of POPC clustering was used to group design smells based on their occurrence in each set of data as shown in Figure <ref type="figure" target="#fig_3">4</ref>, using the following procedure:</p><p>1) First, we constructed a table of clusters and design smells for both desktop and android-Table <ref type="table" target="#tab_0">IV</ref>.</p><p>• For each cluster (c) of classes, we compute the total number of each design smell. • If the total number of a given design smells is &gt; 0, we assign a value 1 in its row, otherwise, we assign a value 0. The output of this operation is shown in Table <ref type="table" target="#tab_0">IV</ref>. • We repeat this process for all the clusters. 2) Secondly, we extract the design smell rows and create a binary matrix. This matrix is treated as an n-dimensional array which is then passed to a dendrogram creation function. We use the python Plotly package which performs hierarchical clustering on data and represents the resulting tree.</p><p>IV. RESULTS In this section, we present and discussion the results of our study. We answer the following research questions:</p><p>A. RQ: Does the type of application i.e. desktop or mobile influence the variations in diversity, distribution and magnitude of design smells occurrence? If so, are these variations statistically significant?</p><p>To answer this research question, we start by discussing some of the key differences and similarities between mobile and desktop applications. According to the dataset, both mobile and desktop projects are based on Java programming language and fundamentally obey the OOP programming paradigm. However, some key notable differences exist, for example, desktop applications mostly rely on the Java Swing library for Graphical User Interface (GUI) design while mobile (android) applications are based on XML as their underlying language for the design of GUI <ref type="bibr" target="#b18">[19]</ref>. Table V presents some of these key notable differences. We believe that these differences could influence the diversity, distribution and magnitude of design smell occurrence.</p><p>1) Diversity of Design Smells: We found some interesting variations in the variety of design smells that occur in desktop and mobile applications. Generally, we observed that desktop applications have a diverse type of design smells compared to mobile applications. For example, looking at Table <ref type="table" target="#tab_2">III</ref>, we can observe that desktop applications account for up to 93% of the total type of design smells detected in the entire data set whereas mobile applications takes up about 73%. These variations are caused by the following design smells: RefusedParentBequest, SpaghettiCode, MessageChains and SwissArmyKnife that occurred in desktop applications only while LargeClass was observed in only the mobile applications.</p><p>We think these variations can be explained based on the differences in the workflow of android and desktop applications (as highlighted in Table <ref type="table">V</ref>). Based on these differences, we expect more types of design smells to occur in desktop than in mobile applications. For example, android applications are built upon the android frameworks which encapsulates lowlevel functionalities of the Android OS. Thus, the developer does not have to implement several classes at UI and activity management level, thereby reducing the possibility of inducing design smells</p><p>2) Distribution and Magnitude of Design Smells: The second part of this research question focus on understanding the distribution and quantity of design smells in desktop and mobile applications. Figure <ref type="figure" target="#fig_0">1</ref> shows both the distribution and magnitude of design smells across desktop and mobile applications. We noticed that design smells are almost always more in desktop applications than in mobile applications. This difference can be observed in Figure <ref type="figure" target="#fig_1">2</ref> where desktop and mobile applications account for 67.5% and 32.5% of the total number of design smells in our corpus respectively. A rather large variation exists in the quantity of Blob and Refused-ParentBequest in desktop and mobile applications. Next, we explored the relationship between lines of code (LoC) and magnitude of design smells in desktop and mobile application. Figure <ref type="figure" target="#fig_2">3</ref> shows a scatter plot of total LoC against magnitude  for each selected project within the two ecosystems. We found that there is an observable linear correlation between LoC and magnitude of design smell. Particularly, design smells tend to increase proportionally to the increase in project size, except for a few cases. We think this result is interesting and worth further investigation especially using various project releases. We also went further to study the distribution of design smells using POPC clustering algorithm discussed in section III. The motivation was to understand design smell distribution from an unsupervised learning perspective. This way, we can  observe pairs or groups of design smells that often occur together and/or have a similar characteristics in desktop versus mobile applications from the dataset.</p><p>The clustering results in Figure <ref type="figure" target="#fig_3">4</ref> reveal groups of design smells that often co-occur in desktop or android applications. Some of the clusters are expected while others are not obvious and call for more study to understand the reason for their appearance and relationships. For example; SpeculativeGenerality and SwissArmyKinfe both occur in the same cluster for desktop and mobile applications. This is expected because these design smells are theoretically related. Other similar relationships in the clusters produced by desktop and mobile data include: ComplexClass and LongMethod, ManyFieldAt-tributesButNotComplex, MessageChains, SpaghettiCode.</p><p>3) Statistical Significance: To determine whether the variations in diversity, distribution and magnitude of design smell across desktop and mobile applications is statistically significant, we conducted a statistical test using the Welch's twosample t-test. The Welch's t-test is a less restrictive version of the student's t-test and mostly recommended for dealing with data of unequal variance and sample size, while maintaining the normality assumption. We choose this particular test because the number of projects we selected for desktop and TABLE IV: An example of data constructed from the output of POPC clustering to create the Dendrograms in Figure <ref type="figure" target="#fig_3">4</ref>. mobile applications is not the same. We carried out this test using the data in Figure <ref type="figure" target="#fig_0">1</ref> and obtained the following results: Welch's test: -1.201, p-value: 0.242. The result indicates that, despite the various observable variations in diversity, distribution and magnitude of design smell across desktop and mobile applications, these variations are not statistically significant. Therefore, we can not conclude that design smells often occur more frequent in desktop or mobile applications. This result is also consistent with previous papers focusing on code smells, for example, the paper by Mannan et al. <ref type="bibr" target="#b18">[19]</ref>.</p><formula xml:id="formula_0">No. DS C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 1 LongMethod 0 0 1 0 0 0 0 0 0 0 2 ComplexClass 0 0 0 0 1 0 0 0 0 0 3 LongParameterList 1 1 1 1 0 0 1 0 0 0 4 LazyClass 0 0 0 1 0 0 0 0 0 0 5 Blob 1 1 1 0 0 1 1 1 0 0 6 ClassDataShouldBePrivate 1 1 1 0 1 0 1 1 0 1 7 RefusedParentBequest 1 1 1 1 0 1 1 0 0 0 8 AntiSingleton 0 0 0 0 0 1 0 0 0 0 9 BaseClassShouldBeAbstract<label>1</label></formula></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>V. IMPLICATIONS</head><p>In this section, we present the implications of this study to the researchers, software engineers and on the development of design smell detection tools.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>A. To Researchers</head><p>Despite the variations in diversity, distribution and magnitude of design smell between desktop and mobile, our result indicates that almost all instances of design smells are well represented in both software domains as shown in Figure <ref type="figure" target="#fig_0">1</ref>. Therefore, researchers studying design smells in one domain have a high possibility of obtaining a representative set of data which can easily be generalized for both domains. This is also backed by our statistical significance test result which indicates that there is no statistical difference in the number of design smells across desktop and mobile applications.</p><p>The clustering results in Figure <ref type="figure" target="#fig_3">4</ref>. provides some practical confirmation of theories related to shared characteristics and similarities among design smells. For example, we were able to show, using unsupervised learning that Speculative Generality and SwissArmKnife are closely related. However, we also found some unexpected relationship/similarities in the clusters which require more research to understand them and make recommendations. We, therefore, encourage researchers to consider exploring this direction in future studies.</p><p>Our study also provides a good ground for software educators to demonstrate various design principles to students. As such, learners can practically observe examples of welldesigned and poorly designed systems for a wide range of software systems.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>B. To Software Developers</head><p>We discuss three significant implications of this study to software developers as follows: TABLE V: Notable differences between Java-based desktop and Android applications.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>No. Desktop Application Android Application 1</head><p>Application entry point is dependent on the existence of a special method i.e. the main method.</p><p>There is no main method when developing mobile applications. The entry points are given by event-handlers such as onCreate, onPause, onResume, etc 2 Application's underlying GUI is designed using Java Swing library (core Java language)</p><p>There is another layer of abstraction i.e. complete separation of the application logic from its presentation. Moreover, the GUI is constructed using eXtensible Markup Language (XML). 1) Software Design and Development: As shown in Figure <ref type="figure" target="#fig_0">1</ref>, developers can know from the start of any new software project that they should pay attention to specific implementation details of their application to mitigate common design smells. For example; they can observe that LongMethod, ComplexClass and LongParamaterList is most likely to occur in an application. We also show groups of design smells that frequently co-occur. These knowledge can help developers to correctly plan their implementation and/or provide guidelines for contributors to mitigate these design smells, thereby limiting future software failure due to sloppy or unintended programming/implementation choices.</p><p>2) Quality Assurance: Software Quality Assurance (SQA) is an essential aspect of software engineering that involves processes and methods to ensure proper software quality such as conformance to standards or models. This study provides evidence to developers and quality assurance personnel of the importance of design smell analysis in assessing the quality of their systems by showing the diversity, distribution and magnitude of design smell which can negatively impact software maintenance effort.</p><p>3) Guided Code Review and Refactoring: Code review and refactoring are common exercises carried out by developers to (i) ensure code quality and (ii) improving the internal structure of existing software code without affecting its observable behavior <ref type="bibr" target="#b9">[10]</ref>. However, the cost of reviewing and refactoring source code becomes expensive in terms of time and resource, especially for evolving software systems. Therefore, there is a need for the simplification of those processes. As such, we believe that our study results can guide developers by quickly pointing them to specific features of a source code that often result in poor software quality such as long method, complex class or long parameter list.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>C. On The Development of Design Smell Detection Tools</head><p>Design smell detection tools are significant not only for research purposes but also ensuring high-quality software design. The good news is that judging from Figure <ref type="figure" target="#fig_0">1</ref>, detection tools developed for desktop application will probably always work for android applications as well. However, we believe that further improvements such as metrics optimization and enhancing code linting can significantly boost design smell detection tools as discussed below.</p><p>1) Metrics Optimization: Design smells are detected using a combination of software metrics. However, Metrics-based smell detection method has some known limitations such as its inability to detect many smells using only commonly known metrics. Besides, metrics-based strategies heavily depend on the choice of best threshold value by the researcher, which is normally a significant challenge since this choice is almost always empirical and trial-and-error <ref type="bibr" target="#b10">[11]</ref>. This research provides an opportunity for design smell detection tool developers to review those metrics and tailor them for the detection of specific design smell or combination of design smells based on the way they occur across desktop and android application. Moreover, developers can use the knowledge in Figure <ref type="figure" target="#fig_3">4</ref> to optimize design smell detection tools to become more efficient through the use of just a few metrics to detect a combination of design smells.</p><p>2) Improve Code Linting: A large percentage of software engineers (both junior and senior) embrace the use of code linters in their daily development activity. A linter analyzes source code to detect flaws, check style conventions, potential bugs and other code constructs <ref type="bibr" target="#b23">[24]</ref>. However, most linters cannot flag design smells. We believe that the results of this study can motivate design smell detection tool builders to integrate design smell detection capability in linters as an extension or plugin.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>VI. THREATS TO VALIDITY</head></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>A. Construct Validity</head><p>Our goal was to compare the occurrence of design smells in desktop and mobile applications. We believe that we were able to achieve this goal by comparing the two groups in regards to diversity, distribution, magnitude and co-occurrence of design smells.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>B. Internal Validity</head><p>In this study, we realized solely on ptidej tool suite for the detection of design smells. Therefore, the accuracy of our results also depends on the accuracy of this tool. However, the efficacy of ptidej has been evaluated in previous study <ref type="bibr" target="#b24">[25]</ref>. Besides, ptidej tool suite is freely available and able to detect a large number of design smells.</p><p>We carried out our analysis on just a single version of each selected project. It is possible that the results can vary if historical data is considered. However, since our focus was not on the analysis of software change history, we consider this threat acceptable and an opportunity for future work.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>C. External Validity</head><p>Regarding the generalizability of our result, first, we are aware that we carried out this study on Java-based application only. Other platforms that use OOP languages exist for example; windows mobile based on C#, Apple iOS based on Objective-C/Swift, etc. However, we believe that the methods used in this study can be generalized to other OOP systems in various programming languages because the principle of OOP is consistent regardless of the implementing programming language.</p><p>The dataset used in this study was generated from only 12 GitHub projects. Although we believe that the size of our dataset is considerable, using a larger-sized dataset would give more confidence to the results presented in this paper.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>VII. CONCLUSION AND FUTURE WORK</head><p>In this paper, we conducted an exploratory study to compare design smells in desktop and mobile application using a sizable dataset of twelve <ref type="bibr" target="#b11">(12)</ref> Java-based open-source projects. We reported empirical evidence on the variations in diversity, distribution, magnitude and co-occurrence of design smells using statistical methods and unsupervised learning. The result of the study indicated that desktop and mobile application are quite similar in term of design smell occurrence. We also found pairs/groups of design smells that often co-occur. Some of the pairs/groups are expected (e.g. SpeculativeGenerality, Swis-sArmyKinfe), while others (e.g. LongParameterList, Class-DataShouldBePrivate) require further study to understand any innate relationships.</p><p>We plan to extend the study to include class role-stereotypes <ref type="bibr" target="#b25">[26]</ref>. It is quite intuitive that both design smell and rolestereotype play major roles in the design and maintenance of a software system. It would be interesting to see how design smells vary across role-stereotypes in desktop and android application. We are also interested in understanding the variation of design smells in cloud-native versus traditional applications. We find this important because numerous software development activity has now shifted to the cloud.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>Fig. 1 :</head><label>1</label><figDesc>Fig. 1: Comparison of the distribution of design smells in desktop and mobile applications.</figDesc><graphic coords="5,49.77,443.65,249.45,184.24" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>Fig. 2 :</head><label>2</label><figDesc>Fig. 2: Aggregated percentages of design smells across desktop and mobile applications.</figDesc><graphic coords="5,335.46,153.36,204.09,79.37" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head>Fig. 3 :</head><label>3</label><figDesc>Fig. 3: Comparison of the lines of code with magnitude of design smells.</figDesc><graphic coords="5,327.01,277.20,221.00,114.24" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_3"><head>Fig. 4 :</head><label>4</label><figDesc>Fig. 4: Dendrogram showing groups of design smells that co-occur frequently.</figDesc><graphic coords="6,53.07,241.23,249.45,155.90" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_0"><head>TABLE I :</head><label>I</label><figDesc>Projects selected in this study including total LoC and number of Design Smells (#DS) in each codebase.</figDesc><table><row><cell>No.</cell><cell>Domain</cell><cell>Project</cell><cell>Version</cell><cell>#LoC</cell><cell>#DS</cell></row><row><cell>1</cell><cell>Desktop</cell><cell>SweetHome3d</cell><cell>5.6</cell><cell>104,059</cell><cell>206</cell></row><row><cell>2</cell><cell>Desktop</cell><cell>Mars Simulation</cell><cell>3.1.0</cell><cell>255,459</cell><cell>875</cell></row><row><cell>3</cell><cell>Desktop</cell><cell>ArgoUML</cell><cell>0.35.1</cell><cell>177,372</cell><cell>1,160</cell></row><row><cell>4</cell><cell>Desktop</cell><cell>JEdit</cell><cell>5.5.0</cell><cell>124,164</cell><cell>605</cell></row><row><cell>5</cell><cell>Desktop</cell><cell>GanttProject</cell><cell>2.9.11</cell><cell>66,709</cell><cell>394</cell></row><row><cell>6</cell><cell>Mobile</cell><cell>K9 Mail</cell><cell>5.600</cell><cell>93,540</cell><cell>247</cell></row><row><cell>7</cell><cell>Mobile</cell><cell>Bitcoin Wallet</cell><cell>6.31</cell><cell>18,079</cell><cell>50</cell></row><row><cell>8</cell><cell>Mobile</cell><cell>KeepassDroid</cell><cell>2.5.9</cell><cell>17,916</cell><cell>156</cell></row><row><cell>9</cell><cell>Mobile</cell><cell>Opentrip Planner</cell><cell>2.1.5</cell><cell>9,760</cell><cell>28</cell></row><row><cell>10</cell><cell>Mobile</cell><cell>Telegram</cell><cell>6.1.1</cell><cell>541,694</cell><cell>540</cell></row><row><cell>11</cell><cell>Mobile</cell><cell>Tweet Lanes</cell><cell>1.4.1</cell><cell>25,886</cell><cell>105</cell></row><row><cell>12</cell><cell>Mobile</cell><cell>Text Secure</cell><cell>4.69.5</cell><cell>166,731</cell><cell>799</cell></row><row><cell></cell><cell>Total</cell><cell></cell><cell></cell><cell>1,601,369</cell><cell>-</cell></row></table></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_1"><head>TABLE II :</head><label>II</label><figDesc>Sample output of processed design smell files.</figDesc><table><row><cell cols="2">No. FullClassPath</cell><cell cols="5">LongMethod LazyClass Blob ComplexClass ...</cell></row><row><cell>1</cell><cell>k9mail.src.main.java.com.fsck.k9.controller.SimpleMessagingListener</cell><cell>1</cell><cell>1</cell><cell>1</cell><cell>0</cell><cell>...</cell></row><row><cell>2</cell><cell>org.thoughtcrime.securesms.mms.AudioSlide</cell><cell>1</cell><cell>0</cell><cell>0</cell><cell>0</cell><cell>...</cell></row><row><cell>3</cell><cell>org.telegram.ui.Components.GroupCreateSpan</cell><cell>1</cell><cell>0</cell><cell>0</cell><cell>1</cell><cell>...</cell></row><row><cell>4</cell><cell>org.telegram.ui.Cells.TextSelectionHelper</cell><cell>1</cell><cell>0</cell><cell>0</cell><cell>1</cell><cell>...</cell></row><row><cell>5</cell><cell>com.keepassdroid.database.PwDate</cell><cell>1</cell><cell>0</cell><cell>0</cell><cell>1</cell><cell>...</cell></row><row><cell>6</cell><cell>com.tweetlanes.android.core.view.HomeActivity</cell><cell>1</cell><cell>0</cell><cell>0</cell><cell>1</cell><cell>...</cell></row></table></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_2"><head>TABLE III :</head><label>III</label><figDesc>Diversity of design smells across desktop and mobile applications.</figDesc><table><row><cell>No.</cell><cell>Design Smells</cell><cell>Desktop</cell><cell>Mobile</cell></row><row><cell>1</cell><cell>LongMethod</cell><cell></cell><cell></cell></row><row><cell>2</cell><cell>ComplexClass</cell><cell></cell><cell></cell></row><row><cell>3</cell><cell>LongParameterList</cell><cell></cell><cell></cell></row><row><cell>4</cell><cell>LazyClass</cell><cell></cell><cell></cell></row><row><cell>5</cell><cell>Blob</cell><cell></cell><cell></cell></row><row><cell>6</cell><cell>ClassDataShouldBePrivate</cell><cell></cell><cell></cell></row><row><cell>7</cell><cell>RefusedParentBequest</cell><cell></cell><cell></cell></row><row><cell>8</cell><cell>AntiSingleton</cell><cell></cell><cell></cell></row><row><cell>9</cell><cell>BaseClassShouldBeAbstract</cell><cell></cell><cell></cell></row><row><cell>10</cell><cell>SpeculativeGenerality</cell><cell></cell><cell></cell></row><row><cell>11</cell><cell>SpaghettiCode</cell><cell></cell><cell></cell></row><row><cell>12</cell><cell>ManyFieldAttributesButNotComplex</cell><cell></cell><cell></cell></row><row><cell>13</cell><cell>MessageChains</cell><cell></cell><cell></cell></row><row><cell>14</cell><cell>SwissArmyKnife</cell><cell></cell><cell></cell></row><row><cell>15</cell><cell>LargeClass</cell><cell></cell><cell></cell></row></table></figure>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" xml:id="foot_0">Copyright © 2020 for this paper by its authors. Use permitted under Creative Commons License Attribution 4.0 International (CC BY 4.0)</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="1" xml:id="foot_1">http://web.engr.oregonstate.edu/ mannanu/AndroidProjects.txt</note>
		</body>
		<back>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<monogr>
		<title level="m" type="main">Refactoring: Improving the Design of Existing Code</title>
		<author>
			<persName><forename type="first">M</forename><surname>Fowler</surname></persName>
		</author>
		<imprint>
			<date type="published" when="1999">1999</date>
			<publisher>Addison-Wesley Longman Publishing Co., Inc</publisher>
			<pubPlace>Boston, MA, USA</pubPlace>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">A systematic literature review on empirical analysis of the relationship between code smells and software quality attributes</title>
		<author>
			<persName><forename type="first">A</forename><surname>Kaur</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Archives of Computational Methods in Engineering</title>
		<imprint>
			<biblScope unit="page" from="1" to="30" />
			<date type="published" when="2019">2019</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">Design smell detection and analysis for open source java software</title>
		<author>
			<persName><forename type="first">A</forename><surname>Imran</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">2019 IEEE International Conference on Software Maintenance and Evolution (ICSME), IEEE</title>
				<imprint>
			<biblScope unit="page" from="644" to="648" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">Detecting code smells using machine learning techniques: Are we there yet?</title>
		<author>
			<persName><forename type="first">D</forename><surname>Di Nucci</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Palomba</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><forename type="middle">A</forename><surname>Tamburri</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Serebrenik</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">De</forename><surname>Lucia</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">IEEE 25th International Conference on Software Analysis, Evolution and Reengineering (SANER)</title>
				<imprint>
			<publisher>IEEE</publisher>
			<date type="published" when="2018">2018. 2018</date>
			<biblScope unit="page" from="612" to="621" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">Model level code smell detection using egapso based on similarity measures</title>
		<author>
			<persName><forename type="first">G</forename><surname>Saranya</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><forename type="middle">K</forename><surname>Nehemiah</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Kannan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">V</forename><surname>Nithya</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Alexandria engineering journal</title>
		<imprint>
			<biblScope unit="volume">57</biblScope>
			<biblScope unit="issue">3</biblScope>
			<biblScope unit="page" from="1631" to="1642" />
			<date type="published" when="2018">2018</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">A machine-learning based ensemble method for anti-patterns detection</title>
		<author>
			<persName><forename type="first">A</forename><surname>Barbez</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Khomh</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y.-G</forename><surname>Guéhéneuc</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Journal of Systems and Software</title>
		<imprint>
			<biblScope unit="volume">161</biblScope>
			<biblScope unit="page" from="110" to="486" />
			<date type="published" when="2020">2020</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">Influence of anti-patterns on software maintenance: A review</title>
		<author>
			<persName><forename type="first">S</forename><surname>Kaur</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Singh</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">International Journal of Computer Applications</title>
		<imprint>
			<biblScope unit="volume">975</biblScope>
			<biblScope unit="page">8887</biblScope>
			<date type="published" when="2015">2015</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">An approach to suggest code smell order for refactoring</title>
		<author>
			<persName><forename type="first">T</forename><surname>Guggulothu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><forename type="middle">A</forename><surname>Moiz</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">International Conference on Emerging Technologies in Computer Engineering</title>
				<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2019">2019</date>
			<biblScope unit="page" from="250" to="260" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<analytic>
		<title level="a" type="main">Do code smells impact the effort of different maintenance programming activities?</title>
		<author>
			<persName><forename type="first">Z</forename><surname>Soh</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Yamashita</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Khomh</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y.-G</forename><surname>Guéhéneuc</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">IEEE 23rd International Conference on Software Analysis, Evolution, and Reengineering (SANER), IEEE</title>
				<imprint>
			<date type="published" when="2016">2016. 2016</date>
			<biblScope unit="volume">1</biblScope>
			<biblScope unit="page" from="393" to="402" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">Reducing the large class code smell by applying design patterns</title>
		<author>
			<persName><forename type="first">B</forename><surname>Turkistani</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><surname>Liu</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">IEEE International Conference on Electro Information Technology (EIT), IEEE</title>
				<imprint>
			<date type="published" when="2019">2019. 2019</date>
			<biblScope unit="page" from="590" to="595" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<analytic>
		<title level="a" type="main">A survey on software smells</title>
		<author>
			<persName><forename type="first">T</forename><surname>Sharma</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Spinellis</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Journal of Systems and Software</title>
		<imprint>
			<biblScope unit="volume">138</biblScope>
			<biblScope unit="page" from="158" to="173" />
			<date type="published" when="2018">2018</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<analytic>
		<title level="a" type="main">Bad smell detection using quality metrics and refactoring opportunities</title>
		<author>
			<persName><forename type="first">B</forename><surname>Bafandeh Mayvan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Rasoolzadegan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">Javan</forename><surname>Jafari</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Journal of Software: Evolution and Process</title>
		<imprint>
			<biblScope unit="page">e2255</biblScope>
			<date type="published" when="2020">2020</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<analytic>
		<title level="a" type="main">Detecting software bad smells from software design patterns using machine learning algorithms</title>
		<author>
			<persName><forename type="first">A</forename><surname>Kaur</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Singh</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">International Journal of Applied Engineering Research</title>
		<imprint>
			<biblScope unit="volume">13</biblScope>
			<biblScope unit="issue">11</biblScope>
			<biblScope unit="page" from="10" to="15" />
			<date type="published" when="2018">2018</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<analytic>
		<title level="a" type="main">Deep learning based feature envy detection</title>
		<author>
			<persName><forename type="first">H</forename><surname>Liu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Z</forename><surname>Xu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><surname>Zou</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 33rd ACM/IEEE International Conference on Automated Software Engineering</title>
				<meeting>the 33rd ACM/IEEE International Conference on Automated Software Engineering</meeting>
		<imprint>
			<date type="published" when="2018">2018</date>
			<biblScope unit="page" from="385" to="396" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b14">
	<analytic>
		<title level="a" type="main">Software smell detection based on machine learning and its empirical study</title>
		<author>
			<persName><forename type="first">Y</forename><surname>Yin</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Q</forename><surname>Su</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Liu</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Second Target Recognition and Artificial Intelligence Summit Forum</title>
				<imprint>
			<date type="published" when="2020">2020</date>
			<biblScope unit="volume">11427</biblScope>
			<biblScope unit="page">114270P</biblScope>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b15">
	<analytic>
		<title level="a" type="main">Decor: A method for the specification and detection of code and design smells</title>
		<author>
			<persName><forename type="first">N</forename><surname>Moha</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y.-G</forename><surname>Gueheneuc</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Duchien</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A.-F. Le</forename><surname>Meur</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">IEEE Transactions on Software Engineering</title>
		<imprint>
			<biblScope unit="volume">36</biblScope>
			<biblScope unit="issue">1</biblScope>
			<biblScope unit="page" from="20" to="36" />
			<date type="published" when="2009">2009</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b16">
	<analytic>
		<title level="a" type="main">On the diffuseness and the impact on maintainability of code smells: A large scale empirical investigation</title>
		<author>
			<persName><forename type="first">F</forename><surname>Palomba</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Bavota</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Di Penta</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Fasano</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Oliveto</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">De</forename><surname>Lucia</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Empirical Software Engineering</title>
		<imprint>
			<biblScope unit="volume">23</biblScope>
			<biblScope unit="issue">3</biblScope>
			<biblScope unit="page" from="1188" to="1221" />
			<date type="published" when="2018">2018</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b17">
	<analytic>
		<title level="a" type="main">The impact of code smells on software bugs: A systematic literature review</title>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">S</forename><surname>Cairo</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><forename type="middle">D F</forename><surname>Carneiro</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><forename type="middle">P</forename><surname>Monteiro</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Information</title>
		<imprint>
			<biblScope unit="volume">9</biblScope>
			<biblScope unit="issue">11</biblScope>
			<biblScope unit="page">273</biblScope>
			<date type="published" when="2018">2018</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b18">
	<analytic>
		<title level="a" type="main">Understanding code smells in android applications</title>
		<author>
			<persName><forename type="first">U</forename><forename type="middle">A</forename><surname>Mannan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><surname>Ahmed</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><forename type="middle">A M</forename><surname>Almurshed</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Dig</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Jensen</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">IEEE/ACM International Conference on Mobile Software Engineering and Systems (MOBILESoft)</title>
				<imprint>
			<publisher>IEEE</publisher>
			<date type="published" when="2016">2016. 2016</date>
			<biblScope unit="page" from="225" to="236" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b19">
	<analytic>
		<title level="a" type="main">Code smells in ios apps: How do they compare to android?</title>
		<author>
			<persName><forename type="first">S</forename><surname>Habchi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Hecht</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Rouvoy</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Moha</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">IEEE/ACM 4th International Conference on Mobile Software Engineering and Systems (MOBILESoft), IEEE</title>
				<imprint>
			<date type="published" when="2017">2017. 2017</date>
			<biblScope unit="page" from="110" to="121" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b20">
	<analytic>
		<title level="a" type="main">Investigating code smell co-occurrences using association rule learning: A replicated study</title>
		<author>
			<persName><forename type="first">F</forename><surname>Palomba</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Oliveto</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">De</forename><surname>Lucia</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">IEEE Workshop on Machine Learning Techniques for Software Quality Evaluation (MaLTeSQuE)</title>
				<imprint>
			<publisher>IEEE</publisher>
			<date type="published" when="2017">2017. 2017</date>
			<biblScope unit="page" from="8" to="13" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b21">
	<analytic>
		<title level="a" type="main">Ptidej: A flexible reverse engineering tool suite</title>
		<author>
			<persName><forename type="first">Y.-G</forename><surname>Guéhéneuc</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">2007 IEEE International Conference on Software Maintenance, IEEE</title>
				<imprint>
			<date type="published" when="2007">2007</date>
			<biblScope unit="page" from="529" to="530" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b22">
	<analytic>
		<title level="a" type="main">Clustering for binary featured datasets</title>
		<author>
			<persName><forename type="first">P</forename><surname>Taraba</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">The World Congress on Engineering and Computer Science</title>
				<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2017">2017</date>
			<biblScope unit="page" from="127" to="142" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b23">
	<analytic>
		<title level="a" type="main">On adopting linters to deal with performance concerns in android apps</title>
		<author>
			<persName><forename type="first">S</forename><surname>Habchi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">X</forename><surname>Blanc</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Rouvoy</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">IEEE/ACM International Conference on Automated Software Engineering (ASE), IEEE</title>
				<imprint>
			<date type="published" when="2018">2018. 2018</date>
			<biblScope unit="page" from="6" to="16" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b24">
	<analytic>
		<title level="a" type="main">Evaluation of design pattern recovery tools</title>
		<author>
			<persName><forename type="first">G</forename><surname>Rasool</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Maeder</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><surname>Philippow</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Procedia Computer Science</title>
		<imprint>
			<biblScope unit="volume">3</biblScope>
			<biblScope unit="page" from="813" to="819" />
			<date type="published" when="2011">2011</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b25">
	<analytic>
		<title level="a" type="main">Characterizing classes</title>
		<author>
			<persName><forename type="first">R</forename><forename type="middle">J</forename><surname>Wirfs-Brock</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">IEEE software</title>
		<imprint>
			<biblScope unit="volume">23</biblScope>
			<biblScope unit="issue">2</biblScope>
			<biblScope unit="page" from="9" to="11" />
			<date type="published" when="2006">2006</date>
		</imprint>
	</monogr>
</biblStruct>

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