Abstract:Oftentimes, during software maintenance the original program modularization decays, thus reducing its quality. One of the main reasons for such architectural erosion is suboptimal placement of source code classes in software packages. To alleviate this issue, we propose an automated approach to help developers improve the quality of software modularization. Our approach analyzes underlying latent topics in source code as well as structural dependencies to recommend (and explain) refactoring operations aiming a… Show more
“…Some studies have used the term "semantic" (Poshyvanyk et al 2009;Qusef et al 2011, Bavota et al 2010, 2013b, 2014aKagdi et al 2010;Gethers et al 2012), while others have used the term "conceptual" (Gethers et al 2012) to describe the same concept. Poshyvanyk et al (2009) state that conceptual coupling captures the degree to which the identifiers and comments from different classes relate to each other (Qusef et al 2011, Bavota et al 2010, 2013b, 2014aKagdi et al 2010).…”
Section: Semantic Couplingmentioning
confidence: 99%
“…Poshyvanyk et al (2009) state that conceptual coupling captures the degree to which the identifiers and comments from different classes relate to each other (Qusef et al 2011, Bavota et al 2010, 2013b, 2014aKagdi et al 2010). Gethers et al (2012) add a twist to the definition and state that conceptual coupling captures the extent to which domain concepts/features and software artefacts are related to each other.…”
Software systems continuously evolve to accommodate new features and interoperability relationships between artifacts point to increasingly relevant software change impacts. During maintenance, developers must ensure that related entities are updated to be consistent with these changes. Studies in the static change impact analysis domain have identified that a combination of source code and lexical information outperforms using each one when adopted independently. However, the extraction of lexical information and the measure of how loosely or closely related two software artifacts are, considering the semantic information embedded in their comments and identifiers has been carried out using somewhat complex information retrieval (IR) techniques. The interplay between software semantic and change relationship strengths has also not been extensively studied. This work aims to fill both gaps by comparing the effectiveness of measuring semantic coupling of OO software classes using (i) simple identifier based techniques and (ii) the word corpora of the entire classes in a software system. Afterwards, we empirically investigate the interplay between semantic and change coupling. The empirical results show that: (1) identifier based methods have more computational efficiency but cannot always be used interchangeably with corpora-based methods of computing semantic coupling of classes and (2) there is no correlation between semantic and change coupling. Furthermore we found that (3) there is a directional relationship between the two, as over 70% of the semantic dependencies are also linked by change coupling but not vice versa.
“…Some studies have used the term "semantic" (Poshyvanyk et al 2009;Qusef et al 2011, Bavota et al 2010, 2013b, 2014aKagdi et al 2010;Gethers et al 2012), while others have used the term "conceptual" (Gethers et al 2012) to describe the same concept. Poshyvanyk et al (2009) state that conceptual coupling captures the degree to which the identifiers and comments from different classes relate to each other (Qusef et al 2011, Bavota et al 2010, 2013b, 2014aKagdi et al 2010).…”
Section: Semantic Couplingmentioning
confidence: 99%
“…Poshyvanyk et al (2009) state that conceptual coupling captures the degree to which the identifiers and comments from different classes relate to each other (Qusef et al 2011, Bavota et al 2010, 2013b, 2014aKagdi et al 2010). Gethers et al (2012) add a twist to the definition and state that conceptual coupling captures the extent to which domain concepts/features and software artefacts are related to each other.…”
Software systems continuously evolve to accommodate new features and interoperability relationships between artifacts point to increasingly relevant software change impacts. During maintenance, developers must ensure that related entities are updated to be consistent with these changes. Studies in the static change impact analysis domain have identified that a combination of source code and lexical information outperforms using each one when adopted independently. However, the extraction of lexical information and the measure of how loosely or closely related two software artifacts are, considering the semantic information embedded in their comments and identifiers has been carried out using somewhat complex information retrieval (IR) techniques. The interplay between software semantic and change relationship strengths has also not been extensively studied. This work aims to fill both gaps by comparing the effectiveness of measuring semantic coupling of OO software classes using (i) simple identifier based techniques and (ii) the word corpora of the entire classes in a software system. Afterwards, we empirically investigate the interplay between semantic and change coupling. The empirical results show that: (1) identifier based methods have more computational efficiency but cannot always be used interchangeably with corpora-based methods of computing semantic coupling of classes and (2) there is no correlation between semantic and change coupling. Furthermore we found that (3) there is a directional relationship between the two, as over 70% of the semantic dependencies are also linked by change coupling but not vice versa.
“…However, during software evolution or maintenance, as the software systems' internal structure is subjected to continuous enhancement, modification and adaptation, its code becomes comp lex and consequently drift away fro m the orig inal design [5] [21]. Furthermo re, poor design decisions due to strict condition of deadline forces developers not to adhered to the princip le of h igh cohesion and low coupling [11] [12]. As a result, the software (packages, classes , methods or field) in turn becomes mo re co mp lex and deteriorates in quality thereby making it difficult to understand and maintain [9].…”
Section: A Software Refactoringmentioning
confidence: 99%
“…Consequently, as the class responsibilities increases, so its complexity leading to the deterioration of its quality [9] [10]. Studies have shown that some of the causes of design flaws in software systems are due to the applicat ion of inappropriate design solutions by developers leading to code not conforming to OO programming rules and market pressure resulting to strict deadline [11] [12]. To this end, co mprehending and maintaining the software systems becomes a difficult, if not impossible tasks.…”
Section: Introductionmentioning
confidence: 99%
“…To perform refactoring in software code, the first task is to pinpoint the refactoring candidates that manifest in the form of bad smells before applying the appropriate refactoring to remove them. Today, there exist several approaches to identify refactoring opportunities in OO software systems and the application of appropriate refactorings have been proposed, developed and utilized during software development [10] [12][17] [18][19] [20]. However, these approaches are designed to identify opportunity for a particular refactoring candidate or couple of them which is ach ieved by either full automation or semi automat ion.…”
Abstract-Refactoring is used to improve deteriorated software design, code and their maintainability. In objectoriented (OO) code, before refactoring is performed, its opportunities must be identified and s everal approaches exist this regard. Among the approaches is the software metric-based approach where quality software met rics are used. Therefore, this paper provide analysis of existing emp irical studies that utilized software metrics to identify refactoring opportunities in OO software systems. We performed a co mprehensive analysis on 16 studies to identify the state-of-the-practice. The focal point was on the workings, refactoring activ ities, the programming language and the impact on software quality. The results obtained shows approaches were not unique, each was designed either for a single refactoring activ ity or couple of them, move method and extract class dominated th e refactorings activities, and most approaches were fu lly automated while few were semi-auto mated. Moreover, OO met rics p layed acritical role in both opportunities detection and factoring decisions. Based on the results, it would be beneficial if generic refactoring approach is developed that is capable of identifying needs for all refactoring activities.
Summary
Placement of methods is one of the most important design activities for any object‐oriented application in terms of coupling and cohesion. Due to method misplacement, the application becomes tightly coupled and loosely cohesive, reflecting inefficient design. Therefore, a feature envy code smell emerges from the application, as many methods use more features of other classes than its current class. Hence, development and maintenance time, cost, and effort are increased. To refactor the code smell and enhance the design quality, move method refactoring plays a significant role through grouping similar behaviors of methods. This is because the manual refactoring process is infeasible due to the necessity of huge time and most of the existing techniques consider only coupling‐based and/or cohesion‐based information of nonstatic entities (methods and attributes) for the recommendation. However, this article proposes an approach that uses contextual information, based on information retrieval techniques, along with dependency (coupling and cohesion)‐based information of the application for the recommendation. In addition, the approach incorporates both static and nonstatic entities in the recommendation process. For validation, the approach is applied on seven well‐known open source projects. The results of the experimental evaluation indicate that the proposed approach provides better results with an average precision of 18.91%, a recall of 69.91%, and an F‐measure of 29.77% than the JDeodorant tool (a widely used eclipse plugin for refactorings). Moreover, this article establishes several relationships between the accuracy of the approach and project standards and sizes.
scite is a Brooklyn-based organization that helps researchers better discover and understand research articles through Smart Citations–citations that display the context of the citation and describe whether the article provides supporting or contrasting evidence. scite is used by students and researchers from around the world and is funded in part by the National Science Foundation and the National Institute on Drug Abuse of the National Institutes of Health.