scholarly journals Refactoring Techniques for Improving Software Quality: Practitioners’ Perspectives

2021 ◽  
Vol 20 (No.4) ◽  
pp. 511-539
Author(s):  
Abdullah Almogahed ◽  
Mazni Omar

Refactoring is a critical task in software maintenance and is commonly applied to improve system design or to cope with design defects. There are 68 different types of refactoring techniques and each technique has a particular purpose and effect. However, most prior studies have selected refactoring techniques based on their common use in academic research without obtaining evidence from the software industry. This is a shortcoming that points to the existence of a clear gap between academic research and the corresponding industry practices. Therefore, to bridge this gap, this study identified the most frequently used refactoring techniques, the commonly used programming language, and methods of applying refactoring techniques in the current practices of software refactoring among software practitioners in the industry, by using an online survey. The findings from the survey revealed the most used refactoring techniques, programming language, and the methods of applying the refactoring techniques. This study contributes toward the improvement of software development practices by adding empirical evidence on software refactoring used by software developers. The findings would be beneficial for researchers to develop reference models and software tools to guide the practitioners in using these refactoring techniques based on their effect on software quality attributes to improve the quality of the software systems as a whole.

Author(s):  
Xiaobing Sun ◽  
Qiang Geng ◽  
David Lo ◽  
Yucong Duan ◽  
Xiangyue Liu ◽  
...  

Program comprehension is one of the first and most frequently performed activities during software maintenance and evolution. In a program, there are not only source code, but also comments. Comments in a program is one of the main sources of information for program comprehension. If a program has good comments, it will be easier for developers to understand it. Unfortunately, for many software systems, due to developers’ poor coding style or hectic work schedule, it is often the case that a number of methods and classes are not written with good comments. This can make it difficult for developers to understand the methods and classes, when they are performing future software maintenance tasks. To deal with this problem, in this paper we propose an approach which assesses the quality of a code comment and generates suggestions to improve comment quality. A user study is conducted to assess the effectiveness of our approach and the results show that our comment quality assessments are similar to the assessments made by our user study participants, the suggestions provided by our approach are useful to improve comment quality, and our approach can improve the accuracy of the previous comment quality analysis approaches.


Author(s):  
J. Rech

Software quality assurance is concerned with the efficient and effective development of large, reliable, and high-quality software systems. In agile software development and maintenance, refactoring is an important phase for the continuous improvement of a software system by removing quality defects like code smells. As time is a crucial factor in agile development, not all quality defects can be removed in one refactoring phase (especially in one iteration). Documentation of quality defects that are found during automated or manual discovery activities (e.g., pair programming) is necessary to avoid wasting time by rediscovering them in later phases. Unfortunately, the documentation and handling of existing quality defects and refactoring activities is a common problem in software maintenance. To recall the rationales why changes were carried out, information has to be extracted from either proprietary documentations or software versioning systems. In this chapter, we describe a process for the recurring and sustainable discovery, handling, and treatment of quality defects in software systems. An annotation language is presented that is used to store information about quality defects found in source code and that represents the defect and treatment history of a part of a software system. The process and annotation language can not only be used to support quality defect discovery processes, but is also applicable in testing and inspection processes.


Author(s):  
Evan W. Duggan

The correlation between the quality of information systems (IS) development practices, the products they shape, and systems maintainability has been well established. Several organizations have expended large amounts of money on ineffective software that have attracted high maintenance activities, which consume a disproportionate share of IS development resources. The IS quandary is how to reverse this trend, and free up resources for more productive organizational endeavors. This chapter presents a review of a variety of IS quality-oriented approaches (based on research findings and dispassionate practitioner accounts) and an indication of their advantages and weaknesses, and the development environments and contexts for which they are most suited. These techniques are available to software developers to be used individually or in synergistic combinations to confront the prevalent problem of poor software quality and reduce its unfavorable impact on software maintenance.


2021 ◽  
Vol 12 (3) ◽  
pp. 1-16
Author(s):  
Mokhtaria Bouslama ◽  
Mustapha Kamel Abdi

The cost of software maintenance is always increasing. The companies are often confronted to failures and software errors. The quality of software to use is so required. In this paper, the authors propose a new formal approach for assessing the quality of object-oriented system design according to the quality assessment model. This approach consists in modeling the input software system by an automaton based on object-oriented design metrics and their relationship with the quality attributes. The model exhibits the importance of metrics through their links with the attributes of software quality. In addition, it is very practical and flexible for all changes. It allows the quality estimation and its validation. For the verification of proposed probabilistic model (automaton), they use the model-checking and the prism tool. The model-checking is very interesting for the evaluation and validation of the probabilistic automaton. They use it to approve the software quality of the three experimental projects. The obtained results are very interesting and of great importance.


2009 ◽  
pp. 242-265
Author(s):  
Jörg Rech

Software quality assurance is concerned with the efficient and effective development of large, reliable, and high-quality software systems. In agile software development and maintenance, refactoring is an important phase for the continuous improvement of a software system by removing quality defects like code smells. As time is a crucial factor in agile development, not all quality defects can be removed in one refactoring phase (especially in one iteration). Documentation of quality defects that are found during automated or manual discovery activities (e.g., pair programming) is necessary to avoid wasting time by rediscovering them in later phases. Unfortunately, the documentation and handling of existing quality defects and refactoring activities is a common problem in software maintenance. To recall the rationales why changes were carried out, information has to be extracted from either proprietary documentations or software versioning systems. In this chapter, we describe a process for the recurring and sustainable discovery, handling, and treatment of quality defects in software systems. An annotation language is presented that is used to store information about quality defects found in source code and that represents the defect and treatment history of a part of a software system. The process and annotation language can not only be used to support quality defect discovery processes, but is also applicable in testing and inspection processes.


Complexity ◽  
2020 ◽  
Vol 2020 ◽  
pp. 1-25
Author(s):  
Masoud Aghdasifam ◽  
Habib Izadkhah ◽  
Ayaz Isazadeh

Software refactoring is a software maintenance action to improve the software internal quality without changing its external behavior. During the maintenance process, structural refactoring is performed by remodularizing the source code. Software clustering is a modularization technique to remodularize artifacts of source code aiming to improve readability and reusability. Due to the NP hardness of the clustering problem, evolutionary approaches such as the genetic algorithm have been used to solve this problem. In the structural refactoring literature, there exists no search-based algorithm that employs a hierarchical approach for modularization. Utilizing global and local search strategies, in this paper, a new search-based top-down hierarchical clustering approach, named TDHC, is proposed that can be used to modularize the system. The output of the algorithm is a tree in which each node is an artifact composed of all artifacts in its subtrees and is a candidate to be a software module (i.e., cluster). This tree helps a software maintainer to have better vision on source code structure to decide appropriate composition points of artifacts aiming to create modules (i.e., files, packages, and components). Experimental results on seven folders of Mozilla Firefox with different functionalities and five other software systems show that the TDHC produces modularization closer to the human expert’s decomposition (i.e., directory structure) than the other existing algorithms. The proposed algorithm is expected to help a software maintainer for better remodularization of a source code. The source codes and dataset related to this paper can be accessed at https://github.com/SoftwareMaintenanceLab.


2018 ◽  
Vol 2018 (99 (155)) ◽  
pp. 187-208
Author(s):  
EWELINA ZARZYCKA ◽  
Joanna Krasodomska ◽  
Michał Biernacki

The last few years have been a period of intensive accreditation processes concerning accounting majors in Polish universities by institutions which confirm accounting qualifications. Our paper aims to investi- gate the quality of academic education in the context of ACCA accreditation from the perspective of a critical stakeholder group – students. The identification of their views contributes to the ongoing discus- sion surrounding the quality of accounting education, and how it relates to practice. The study is based on an online survey questionnaire. There was a total of 384 responses used in the study, provided by students of three leading Polish universities. We took into consideration the characteristics of our respondents such as gender, age, type of studies, and work experience. The multiple regression analysis allows us to con- clude that accreditation is a factor that moderately influences the quality of accounting education. Stu- dents indicate the subject coverage and difficulties in preparing for accredited exams as highly important factors influencing the education quality. Accreditation and its impact on the quality of education are important and current issues; at the same time, these issues have not been addressed in academic research. The presented study is an attempt to fill the gap in the literature of this field, while also being relevant for practice. The results contribute to a better understanding of accreditation processes and students’ expecta- tions. They may also be useful to more successfully design and develop accounting curricula at higher education institutions which have already been accredited or are considering such a possibility.


2015 ◽  
Vol 77 (9) ◽  
Author(s):  
Arafat Abdulgader Mohammed Elhag ◽  
Radziah Mohamad

As software systems become more and more complex over time, software quality accordingly becomes increasingly important. Service-Oriented Computing (SOC) paradigm is one of the established paradigms used for building and developing flexible, reusable, rapid and low cost software products. Consequently, the use of SOC to develop software systems is increasing. Software quality measurement has considerable importance in the context of SOC since it determines how the quality requirements for composite service should be achieved. As a result, several quality metrics for composite service design were proposed. However, these metrics were constructed based on previous development approaches, give insufficient focus and need modification to be applied to service-oriented systems. Furthermore, the existing metrics do not consider the composite service as building blocks and also they do not consider the indirect relationships. In this paper, a quality measurement for composite service-oriented design is proposed, with the aim of increasing reusability and decreasing the complexity of design. The paper begins with proposing a set of metrics to measure the quality of composite service design. Then, the proposed metrics are validated theoretically to check its usability and applicability for composite service. The results show that the proposed metrics are able to measure the quality of composite service design.


Author(s):  
Venkatesh Podugu

Software maintenance is one of the main phase in software evaluation. This paper presents the relation between software metrics and maintainability. This paper explains about the concept of Software code readability and its relation to software quality. The quality of code is very essential for the future and for the reuse purpose. Here generated a code readability model to calculate the readability of the code by selecting the snippets and these snippets are to be given to the expert to rate them. Collecting the features of code and combing the judgments generated the readability model. This paper focus on providing the graphical user interface (GUI),to the code readability model to improve the understanding of software code readability. By providing the readability of code to the many open source projects, automatically informing the existed code quality to improve the quality of code. It show that this readability model developed is correlates strongly with three measures of software quality: code changes in software, defect log messages and automated defect reports. It measures correlations over many releases of selected projects.


2017 ◽  
Vol 7 (1.1) ◽  
pp. 421 ◽  
Author(s):  
Pooja Dehraj ◽  
Arun Sharma ◽  
P S. Grover

Autonomic computing covers few self-abilities like self-configuration, self-healing, self-optimization, self-protection, self-adaptability, self-awareness, self-openness etc. in software systems. These self-abilities will lead towards lowering the overall maintenance cost of the software because of minimum level of human intervention. The term Autonomicity refers to the level of autonomic (self) features implemented in the system. The International software quality standard ISO 9126 is now replaced by new software product quality standard ISO/IEC 25010:2011 which defines the framework/model to specify and evaluate the quality of software as a product. However, this does not take into account the self-* features (autonomic aspects) and trust factor of modern day software systems. The present paper proposes here that autonomic characteristics of any system must be considered while assessing the quality of any software product. This autonomic-oriented quality model may be used to assess the software quality in a number of domains. Therefore, a new enhanced software quality model is proposed which considers autonomicity and trustworthiness as a factor of quality.


Sign in / Sign up

Export Citation Format

Share Document