Bad smells are signs of potential problems in code. Detecting bad smells, however, remains time
consuming for software engineers despite proposals on bad smell detection and refactoring tools. Large
Class is a kind of bad smells caused by large scale, and the detection is hard to achieve automatically. In
this paper, a Large Class bad smell detection approach based on class length distribution model and
cohesion metrics is proposed. In programs, the lengths of classes are confirmed according to the certain
distributions. The class length distribution model is generalized to detect programs after grouping.
Meanwhile, cohesion metrics are analyzed for bad smell detection. The bad smell detection experiments of
open source programs show that Large Class bad smell can be detected effectively and accurately with this
approach, and refactoring scheme can be proposed for design quality improvements of programs.
Finding Bad Code Smells with Neural Network Models IJECEIAES
Code smell refers to any symptom introduced in design or implementation phases in the source code of a program. Such a code smell can potentially cause deeper and serious problems during software maintenance. The existing approaches to detect bad smells use detection rules or standards using a combination of different object-oriented metrics. Although a variety of software detection tools have been developed, they still have limitations and constraints in their capabilities. In this paper, a code smell detection system is presented with the neural network model that delivers the relationship between bad smells and object-oriented metrics by taking a corpus of Java projects as experimental dataset. The most well-known objectoriented metrics are considered to identify the presence of bad smells. The code smell detection system uses the twenty Java projects which are shared by many users in the GitHub repositories. The dataset of these Java projects is partitioned into mutually exclusive training and test sets. The training dataset is used to learn the network model which will predict smelly classes in this study. The optimized network model will be chosen to be evaluated on the test dataset. The experimental results show when the modelis highly trained with more dataset, the prediction outcomes are improved more and more. In addition, the accuracy of the model increases when it performs with higher epochs and many hidden layers.
IJRET : International Journal of Research in Engineering and Technology is an international peer reviewed, online journal published by eSAT Publishing House for the enhancement of research in various disciplines of Engineering and Technology. The aim and scope of the journal is to provide an academic medium and an important reference for the advancement and dissemination of research results that support high-level learning, teaching and research in the fields of Engineering and Technology. We bring together Scientists, Academician, Field Engineers, Scholars and Students of related fields of Engineering and Technology
Multi step automated refactoring for code smelleSAT Journals
Abstract
Brain MR Image can detect many abnormalities like tumor, cysts, bleeding, infection etc. Analysis of brain MRI using image
processing techniques has been an active research in the field of medical imaging. In this work, it is shown that MR image of brain
represent a multi fractal system which is described a continuous spectrum of exponents rather than a single exponent (fractal
dimension). Multi fractal analysis has been performed on number of images from OASIS database are analyzed. The properties of
multi fractal spectrum of a system have been exploited to prove the results. Multi fractal spectra are determined using the modified
box-counting method of fractal dimension estimation.
Keywords: Brain MR Image, Multi fractal, Box-counting
Implementation of reducing features to improve code change based bug predicti...eSAT Journals
Abstract Today, we are getting plenty of bugs in the software because of variations in the software and hardware technologies. Bugs are nothing but Software faults, existing a severe challenge for system reliability and dependability. To identify the bugs from the software bug prediction is convenient approach. To visualize the presence of a bug in a source code file, recently, Machine learning classifiers approach is developed. Because of a huge number of machine learned features current classifier-based bug prediction have two major problems i) inadequate precision for practical usage ii) measured prediction time. In this paper we used two techniques first, cos-triage algorithm which have a go to enhance the accuracy and also lower the price of bug prediction and second, feature selection methods which eliminate less significant features. Reducing features get better the quality of knowledge extracted and also boost the speed of computation. Keywords: Efficiency, Bug Prediction, Classification, Feature Selection, Accuracy
QUALITY METRICS OF TEST SUITES IN TESTDRIVEN DESIGNED APPLICATIONSijseajournal
New techniques for writing and developing software have evolved in recent years. One is Test-Driven
Development (TDD) in which tests are written before code. No code should be written without first having
a test to execute it. Thus, in terms of code coverage, the quality of test suites written using TDD should be
high.
In this work, we analyze applications written using TDD and traditional techniques. Specifically, we
demonstrate the quality of the associated test suites based on two quality metrics: 1) structure-based
criterion, 2) fault-based criterion. We learn that test suites with high branch test coverage will also have
high mutation scores, and we especially reveal this in the case of TDD applications. We found that TestDriven
Development is an effective approach that improves the quality of the test suite to cover more of the
source code and also to reveal more.
an error in that computer program. In order to improve the software quality, prediction of faulty modules is
necessary. Various Metric suites and techniques are available to predict the modules which are critical and
likely to be fault prone. Genetic Algorithm is a problem solving algorithm. It uses genetics as its model of
problem solving. It’s a search technique to find approximate solutions to optimization and search
problems.Genetic algorithm is applied for solving the problem of faulty module prediction and as well as
for finding the most important attribute for fault occurrence. In order to perform the analysis, performance
validation of the Genetic Algorithm using open source software jEdit is done. The results are measured in
terms Accuracy and Error in predicting by calculating probability of detection and probability of false
Alarms
Finding Bad Code Smells with Neural Network Models IJECEIAES
Code smell refers to any symptom introduced in design or implementation phases in the source code of a program. Such a code smell can potentially cause deeper and serious problems during software maintenance. The existing approaches to detect bad smells use detection rules or standards using a combination of different object-oriented metrics. Although a variety of software detection tools have been developed, they still have limitations and constraints in their capabilities. In this paper, a code smell detection system is presented with the neural network model that delivers the relationship between bad smells and object-oriented metrics by taking a corpus of Java projects as experimental dataset. The most well-known objectoriented metrics are considered to identify the presence of bad smells. The code smell detection system uses the twenty Java projects which are shared by many users in the GitHub repositories. The dataset of these Java projects is partitioned into mutually exclusive training and test sets. The training dataset is used to learn the network model which will predict smelly classes in this study. The optimized network model will be chosen to be evaluated on the test dataset. The experimental results show when the modelis highly trained with more dataset, the prediction outcomes are improved more and more. In addition, the accuracy of the model increases when it performs with higher epochs and many hidden layers.
IJRET : International Journal of Research in Engineering and Technology is an international peer reviewed, online journal published by eSAT Publishing House for the enhancement of research in various disciplines of Engineering and Technology. The aim and scope of the journal is to provide an academic medium and an important reference for the advancement and dissemination of research results that support high-level learning, teaching and research in the fields of Engineering and Technology. We bring together Scientists, Academician, Field Engineers, Scholars and Students of related fields of Engineering and Technology
Multi step automated refactoring for code smelleSAT Journals
Abstract
Brain MR Image can detect many abnormalities like tumor, cysts, bleeding, infection etc. Analysis of brain MRI using image
processing techniques has been an active research in the field of medical imaging. In this work, it is shown that MR image of brain
represent a multi fractal system which is described a continuous spectrum of exponents rather than a single exponent (fractal
dimension). Multi fractal analysis has been performed on number of images from OASIS database are analyzed. The properties of
multi fractal spectrum of a system have been exploited to prove the results. Multi fractal spectra are determined using the modified
box-counting method of fractal dimension estimation.
Keywords: Brain MR Image, Multi fractal, Box-counting
Implementation of reducing features to improve code change based bug predicti...eSAT Journals
Abstract Today, we are getting plenty of bugs in the software because of variations in the software and hardware technologies. Bugs are nothing but Software faults, existing a severe challenge for system reliability and dependability. To identify the bugs from the software bug prediction is convenient approach. To visualize the presence of a bug in a source code file, recently, Machine learning classifiers approach is developed. Because of a huge number of machine learned features current classifier-based bug prediction have two major problems i) inadequate precision for practical usage ii) measured prediction time. In this paper we used two techniques first, cos-triage algorithm which have a go to enhance the accuracy and also lower the price of bug prediction and second, feature selection methods which eliminate less significant features. Reducing features get better the quality of knowledge extracted and also boost the speed of computation. Keywords: Efficiency, Bug Prediction, Classification, Feature Selection, Accuracy
QUALITY METRICS OF TEST SUITES IN TESTDRIVEN DESIGNED APPLICATIONSijseajournal
New techniques for writing and developing software have evolved in recent years. One is Test-Driven
Development (TDD) in which tests are written before code. No code should be written without first having
a test to execute it. Thus, in terms of code coverage, the quality of test suites written using TDD should be
high.
In this work, we analyze applications written using TDD and traditional techniques. Specifically, we
demonstrate the quality of the associated test suites based on two quality metrics: 1) structure-based
criterion, 2) fault-based criterion. We learn that test suites with high branch test coverage will also have
high mutation scores, and we especially reveal this in the case of TDD applications. We found that TestDriven
Development is an effective approach that improves the quality of the test suite to cover more of the
source code and also to reveal more.
an error in that computer program. In order to improve the software quality, prediction of faulty modules is
necessary. Various Metric suites and techniques are available to predict the modules which are critical and
likely to be fault prone. Genetic Algorithm is a problem solving algorithm. It uses genetics as its model of
problem solving. It’s a search technique to find approximate solutions to optimization and search
problems.Genetic algorithm is applied for solving the problem of faulty module prediction and as well as
for finding the most important attribute for fault occurrence. In order to perform the analysis, performance
validation of the Genetic Algorithm using open source software jEdit is done. The results are measured in
terms Accuracy and Error in predicting by calculating probability of detection and probability of false
Alarms
Welcome to International Journal of Engineering Research and Development (IJERD)IJERD Editor
call for paper 2012, hard copy of journal, research paper publishing, where to publish research paper,
journal publishing, how to publish research paper, Call For research paper, international journal, publishing a paper, IJERD, journal of science and technology, how to get a research paper published, publishing a paper, publishing of journal, publishing of research paper, reserach and review articles, IJERD Journal, How to publish your research paper, publish research paper, open access engineering journal, Engineering journal, Mathemetics journal, Physics journal, Chemistry journal, Computer Engineering, Computer Science journal, how to submit your paper, peer reviw journal, indexed journal, reserach and review articles, engineering journal, www.ijerd.com, research journals,
yahoo journals, bing journals, International Journal of Engineering Research and Development, google journals, hard copy of journal
AN APPROACH FOR TEST CASE PRIORITIZATION BASED UPON VARYING REQUIREMENTS IJCSEA Journal
Software testing is a process continuously performed by the development team during the life cycle of the software with the motive to detect the faults as early as possible. Regressing testing is the most suitable technique for this in which we test number of test cases. As the number of test cases can be very large it is always preferable to prioritize test cases based upon certain criterions.In this paper prioritization strategy is proposed which prioritize test cases based on requirements analysis. By regressing testing if the requirements will vary in future, the software will be modified in such a manner that it will not affect the remaining parts of the software. The proposed system improves the testing process and its efficiency to achieve goals regarding quality, cost, and effort as well user satisfaction and the result of the proposed method evaluated with the help of performance evaluation metric.
Abstract—Combinatorial testing (also called interaction testing) is an effective specification-based test input generation technique. By now most of research work in combinatorial testing aims to propose novel approaches trying to generate test suites with minimum size that still cover all the pairwise, triple, or n-way combinations of factors. Since the difficulty of solving this problem is demonstrated to be NP-hard, existing approaches have been designed to generate optimal or near optimal combinatorial test suites in polynomial time. In this paper, we try to apply particle swarm optimization (PSO), a kind of meta-heuristic search technique, to pairwise testing (i.e. a special case of combinatorial testing aiming to cover all the pairwise combinations). To systematically build pairwise test suites, we propose two different PSO based algorithms. One algorithm is based on one-test-at-a-time strategy and the other is based on IPO-like strategy. In these two different algorithms, we use PSO to complete the construction of a single test. To successfully apply PSO to cover more uncovered pairwise combinations in this construction process, we provide a detailed description on how to formulate the search space, define the fitness function and set some heuristic settings. To verify the effectiveness of our approach, we implement these algorithms and choose some typical inputs. In our empirical study, we analyze the impact factors of our approach and compare our approach to other well-known approaches. Final empirical results show the effectiveness and efficiency of our approach.
A methodology to evaluate object oriented software systems using change requi...ijseajournal
It is a well known fact that software maintenance plays a major role and finds importance in software
development life cycle. As object
-
oriented programming has become the standard, it is very important to
understand th
e problems of maintaining object
-
oriented software systems. This paper aims at evaluating
object
-
oriented software system through change requirement traceability
–
based impact analysis
methodology
for non functional requirements using functional requirem
ents
. The major issues have been
related to change impact algorithms and inheritance of functionality.
Software analytics (for software quality purpose) is a statistical or machine learning classifier that is trained to identify defect-prone software modules. The goal of software analytics is to help software engineers prioritize their software testing effort on the most-risky modules and understand past pitfalls that lead to defective code. While the adoption of software analytics enables software organizations to distil actionable insights, there are still many barriers to broad and successful adoption of such analytics systems. Indeed, even if software organizations can access such invaluable software artifacts and toolkits for data analytics, researchers and practitioners often have little knowledge to properly develop analytics systems. Thus, the accuracy of the predictions and the insights that are derived from analytics systems is one of the most important challenges of data science in software engineering.
In this work, we conduct a series of empirical investigation to better understand the impact of experimental components (i.e., class mislabelling, parameter optimization of classification techniques, and model validation techniques) on the performance and interpretation of software analytics. To accelerate a large amount of compute-intensive experiment, we leverage the High-Performance-Computing (HPC) resources of Centre for Advanced Computing (CAC) from Queen’s University, Canada. Through case studies of systems that span both proprietary and open- source domains, we demonstrate that (1) realistic noise does not impact the precision of software analytics; (2) automated parameter optimization for classification techniques substantially improve the performance and stability of software analytics; and (3) the out-of- sample bootstrap validation technique produces a good balance between bias and variance of performance estimates. Our results lead us to conclude that the experimental components of analytics modelling impact the predictions and associated insights that are derived from software analytics. Empirical investigations on the impact of overlooked experimental components are needed to derive practical guidelines for analytics modelling.
An Empirical Study on the Adequacy of Testing in Open Source ProjectsPavneet Singh Kochhar
In this study, we investigate the state-of-the-practice of testing
by measuring code coverage in open-source software projects. We examine over 300 large open-source projects written in Java, to measure the code coverage of their associated test cases.
International Journal of Computational Engineering Research (IJCER) is dedicated to protecting personal information and will make every reasonable effort to handle collected information appropriately. All information collected, as well as related requests, will be handled as carefully and efficiently as possible in accordance with IJCER standards for integrity and objectivity.
We’re all trying to find that idea or spark that will turn a good project into a great project. Creativity plays a huge role in the outcome of our work. Harnessing the power of collaboration and open source, we can make great strides towards excellence. Not just for designers, this talk can be applicable to many different roles – even development. In this talk, Seasoned Creative Director Sara Cannon is going to share some secrets about creative methodology, collaboration, and the strong role that open source can play in our work.
The impact of innovation on travel and tourism industries (World Travel Marke...Brian Solis
From the impact of Pokemon Go on Silicon Valley to artificial intelligence, futurist Brian Solis talks to Mathew Parsons of World Travel Market about the future of travel, tourism and hospitality.
Welcome to International Journal of Engineering Research and Development (IJERD)IJERD Editor
call for paper 2012, hard copy of journal, research paper publishing, where to publish research paper,
journal publishing, how to publish research paper, Call For research paper, international journal, publishing a paper, IJERD, journal of science and technology, how to get a research paper published, publishing a paper, publishing of journal, publishing of research paper, reserach and review articles, IJERD Journal, How to publish your research paper, publish research paper, open access engineering journal, Engineering journal, Mathemetics journal, Physics journal, Chemistry journal, Computer Engineering, Computer Science journal, how to submit your paper, peer reviw journal, indexed journal, reserach and review articles, engineering journal, www.ijerd.com, research journals,
yahoo journals, bing journals, International Journal of Engineering Research and Development, google journals, hard copy of journal
AN APPROACH FOR TEST CASE PRIORITIZATION BASED UPON VARYING REQUIREMENTS IJCSEA Journal
Software testing is a process continuously performed by the development team during the life cycle of the software with the motive to detect the faults as early as possible. Regressing testing is the most suitable technique for this in which we test number of test cases. As the number of test cases can be very large it is always preferable to prioritize test cases based upon certain criterions.In this paper prioritization strategy is proposed which prioritize test cases based on requirements analysis. By regressing testing if the requirements will vary in future, the software will be modified in such a manner that it will not affect the remaining parts of the software. The proposed system improves the testing process and its efficiency to achieve goals regarding quality, cost, and effort as well user satisfaction and the result of the proposed method evaluated with the help of performance evaluation metric.
Abstract—Combinatorial testing (also called interaction testing) is an effective specification-based test input generation technique. By now most of research work in combinatorial testing aims to propose novel approaches trying to generate test suites with minimum size that still cover all the pairwise, triple, or n-way combinations of factors. Since the difficulty of solving this problem is demonstrated to be NP-hard, existing approaches have been designed to generate optimal or near optimal combinatorial test suites in polynomial time. In this paper, we try to apply particle swarm optimization (PSO), a kind of meta-heuristic search technique, to pairwise testing (i.e. a special case of combinatorial testing aiming to cover all the pairwise combinations). To systematically build pairwise test suites, we propose two different PSO based algorithms. One algorithm is based on one-test-at-a-time strategy and the other is based on IPO-like strategy. In these two different algorithms, we use PSO to complete the construction of a single test. To successfully apply PSO to cover more uncovered pairwise combinations in this construction process, we provide a detailed description on how to formulate the search space, define the fitness function and set some heuristic settings. To verify the effectiveness of our approach, we implement these algorithms and choose some typical inputs. In our empirical study, we analyze the impact factors of our approach and compare our approach to other well-known approaches. Final empirical results show the effectiveness and efficiency of our approach.
A methodology to evaluate object oriented software systems using change requi...ijseajournal
It is a well known fact that software maintenance plays a major role and finds importance in software
development life cycle. As object
-
oriented programming has become the standard, it is very important to
understand th
e problems of maintaining object
-
oriented software systems. This paper aims at evaluating
object
-
oriented software system through change requirement traceability
–
based impact analysis
methodology
for non functional requirements using functional requirem
ents
. The major issues have been
related to change impact algorithms and inheritance of functionality.
Software analytics (for software quality purpose) is a statistical or machine learning classifier that is trained to identify defect-prone software modules. The goal of software analytics is to help software engineers prioritize their software testing effort on the most-risky modules and understand past pitfalls that lead to defective code. While the adoption of software analytics enables software organizations to distil actionable insights, there are still many barriers to broad and successful adoption of such analytics systems. Indeed, even if software organizations can access such invaluable software artifacts and toolkits for data analytics, researchers and practitioners often have little knowledge to properly develop analytics systems. Thus, the accuracy of the predictions and the insights that are derived from analytics systems is one of the most important challenges of data science in software engineering.
In this work, we conduct a series of empirical investigation to better understand the impact of experimental components (i.e., class mislabelling, parameter optimization of classification techniques, and model validation techniques) on the performance and interpretation of software analytics. To accelerate a large amount of compute-intensive experiment, we leverage the High-Performance-Computing (HPC) resources of Centre for Advanced Computing (CAC) from Queen’s University, Canada. Through case studies of systems that span both proprietary and open- source domains, we demonstrate that (1) realistic noise does not impact the precision of software analytics; (2) automated parameter optimization for classification techniques substantially improve the performance and stability of software analytics; and (3) the out-of- sample bootstrap validation technique produces a good balance between bias and variance of performance estimates. Our results lead us to conclude that the experimental components of analytics modelling impact the predictions and associated insights that are derived from software analytics. Empirical investigations on the impact of overlooked experimental components are needed to derive practical guidelines for analytics modelling.
An Empirical Study on the Adequacy of Testing in Open Source ProjectsPavneet Singh Kochhar
In this study, we investigate the state-of-the-practice of testing
by measuring code coverage in open-source software projects. We examine over 300 large open-source projects written in Java, to measure the code coverage of their associated test cases.
International Journal of Computational Engineering Research (IJCER) is dedicated to protecting personal information and will make every reasonable effort to handle collected information appropriately. All information collected, as well as related requests, will be handled as carefully and efficiently as possible in accordance with IJCER standards for integrity and objectivity.
We’re all trying to find that idea or spark that will turn a good project into a great project. Creativity plays a huge role in the outcome of our work. Harnessing the power of collaboration and open source, we can make great strides towards excellence. Not just for designers, this talk can be applicable to many different roles – even development. In this talk, Seasoned Creative Director Sara Cannon is going to share some secrets about creative methodology, collaboration, and the strong role that open source can play in our work.
The impact of innovation on travel and tourism industries (World Travel Marke...Brian Solis
From the impact of Pokemon Go on Silicon Valley to artificial intelligence, futurist Brian Solis talks to Mathew Parsons of World Travel Market about the future of travel, tourism and hospitality.
Succession “Losers”: What Happens to Executives Passed Over for the CEO Job?
By David F. Larcker, Stephen A. Miles, and Brian Tayan
Stanford Closer Look Series
Overview:
Shareholders pay considerable attention to the choice of executive selected as the new CEO whenever a change in leadership takes place. However, without an inside look at the leading candidates to assume the CEO role, it is difficult for shareholders to tell whether the board has made the correct choice. In this Closer Look, we examine CEO succession events among the largest 100 companies over a ten-year period to determine what happens to the executives who were not selected (i.e., the “succession losers”) and how they perform relative to those who were selected (the “succession winners”).
We ask:
• Are the executives selected for the CEO role really better than those passed over?
• What are the implications for understanding the labor market for executive talent?
• Are differences in performance due to operating conditions or quality of available talent?
• Are boards better at identifying CEO talent than other research generally suggests?
Content personalisation is becoming more prevalent. A site, it's content and/or it's products, change dynamically according to the specific needs of the user. SEO needs to ensure we do not fall behind of this trend.
The Six Highest Performing B2B Blog Post FormatsBarry Feldman
If your B2B blogging goals include earning social media shares and backlinks to boost your search rankings, this infographic lists the size best approaches.
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldabaux singapore
How can we take UX and Data Storytelling out of the tech context and use them to change the way government behaves?
Showcasing the truth is the highest goal of data storytelling. Because the design of a chart can affect the interpretation of data in a major way, one must wield visual tools with care and deliberation. Using quantitative facts to evoke an emotional response is best achieved with the combination of UX and data storytelling.
FUNCTIONAL OVER-RELATED CLASSES BAD SMELL DETECTION AND REFACTORING SUGGESTIONSijseajournal
Bad phenomena about functional over-related classes and confused inheritances in programs will cause difficulty in programs comprehension, extension and maintenance. In this paper it is defined as a new bad smell Functional over-Related Classes. After the analysis, the characteristics of this new smell are transformed to the large number of entities dependency relationships between classes. So after entities dependency information collection and analysis, the bad smell is detected in programs, and corresponding refactoring suggestions are provided based on detection results. The experiments results of open source programs show that the proposed bad smell cannot be detected by current detection methods. The proposed
detection method in this paper behaves well on refactoring evaluation, and the refactoring suggestions improve the quality of programs.
Comprehensive Testing Tool for Automatic Test Suite Generation, Prioritizatio...CSCJournals
Testing has been an essential part of software development life cycle. Automatic test case and test data generation has attracted many researchers in the recent past. Test suite generation is the concept given importance which considers multiple objectives in mind and ensures core coverage. The test cases thus generated can have dependencies such as open dependencies and closed dependencies. When there are dependencies, it is obvious that the order of execution of test cases can have impact on the percentage of flaws detected in the software under test. Therefore test case prioritization is another important research area that complements automatic test suite generation in objects oriented systems. Prior researches on test case prioritization focused on dependency structures. However, in this paper, we automate the extraction of dependency structures. We proposed a methodology that takes care of automatic test suite generation and test case prioritization for effective testing of object oriented software. We built a tool to demonstrate the proof of concept. The empirical study with 20 case studies revealed that the proposed tool and underlying methods can have significant impact on the software industry and associated clientele.
International Journal of Engineering Research and Applications (IJERA) is an open access online peer reviewed international journal that publishes research and review articles in the fields of Computer Science, Neural Networks, Electrical Engineering, Software Engineering, Information Technology, Mechanical Engineering, Chemical Engineering, Plastic Engineering, Food Technology, Textile Engineering, Nano Technology & science, Power Electronics, Electronics & Communication Engineering, Computational mathematics, Image processing, Civil Engineering, Structural Engineering, Environmental Engineering, VLSI Testing & Low Power VLSI Design etc.
Functional over related classes bad smell detection and refactoring suggestionsijseajournal
Bad phenomena about functional over-related classes and confused inheritances in programs will cause
difficulty in programs comprehension, extension and maintenance. In this paper it is defined as a new bad
smell Functional over-Related Classes. After the analysis, the characteristics of this new smell are
transformed to the large number of entities dependency relationships between classes. So after entities
dependency information collection and analysis, the bad smell is detected in programs, and corresponding
refactoring suggestions are provided based on detection results. The experiments results of open source
programs show that the proposed bad smell cannot be detected by current detection methods. The proposed
detection method in this paper behaves well on refactoring evaluation, and the refactoring suggestions
improve the quality of programs.
Characterization of Open-Source Applications and Test Suites ijseajournal
Software systems that meet the stakeholders needs and expectations is the ultimate objective of the software
provider. Software testing is a critical phase in the software development lifecycle that is used to evaluate
the software. Tests can be written by the testers or the automatic test generators in many different ways and
with different goals. Yet, there is a lack of well-defined guidelines or a methodology to direct the testers to
write tests
We want to understand how tests are written and why they may have been written that way. This work is a characterization study aimed at recognizing the factors that may have influenced the development of the test suite. We found that increasing the coverage of the test suites for applications with at least 500 test
cases can make the test suites more costly. The correlation coeffieicent obtained was 0.543. The study also found that there is a positive correlation between the mutation score and the coverage score.
A Complexity Based Regression Test Selection StrategyCSEIJJournal
Software is unequivocally the foremost and indispensable entity in this technologically driven world.
Therefore quality assurance, and in particular, software testing is a crucial step in the software
development cycle. This paper presents an effective test selection strategy that uses a Spectrum of
Complexity Metrics (SCM). Our aim in this paper is to increase the efficiency of the testing process by
significantly reducing the number of test cases without having a significant drop in test effectiveness. The
strategy makes use of a comprehensive taxonomy of complexity metrics based on the product level (class,
method, statement) and its characteristics.We use a series of experiments based on three applications with
a significant number of mutants to demonstrate the effectiveness of our selection strategy.For further
evaluation, we compareour approach to boundary value analysis. The results show the capability of our
approach to detect mutants as well as the seeded errors.
From previous year researches, it is concluded that testing is playing a vital role in the development of the software product. As, software testing is a single approach to assure the quality of the software so most of the development efforts are put on the software testing. But software testing is an expensive process and consumes a lot of time. So, testing should be start as early as possible in the development to control the money and time problems. Even, testing should be performed at every step in the software development life cycle (SDLC) which is a structured approach used in the development of the software product. Software testing is a tradeoff between budget, time and quality. Now a day, testing becomes a very important activity in terms of exposure, security, performance and usability. Hence, software testing faces a collection of challenges.
One of the core quality assurance feature which combines fault prevention and fault detection, is often known as testability approach also. There are many assessment techniques and quantification method evolved for software testability prediction which actually identifies testability weakness or factors to further help reduce test effort. This paper examines all those measurement techniques that are being proposed for software testability assessment at various phases of object oriented software development life cycle. The aim is to find the best metrics suit for software quality improvisation through software testability support. The ultimate objective is to establish the ground work for finding ways reduce the testing effort by improvising software testability and its assessment using well planned guidelines for object-oriented software development with the help of suitable metrics.
A Model To Compare The Degree Of Refactoring Opportunities Of Three Projects ...acijjournal
Refactoring is applied to the software artifacts so as to improve its internal structure, while preserving its
external behavior. Refactoring is an uncertain process and it is difficult to give some units for
measurement. The amount to refactoring that can be applied to the source-code depends upon the skills of
the developer. In this research, we have perceived refactoring as a quantified object on an ordinal scale of
measurement. We have a proposed a model for determining the degree of refactoring opportunities in the
given source-code. The model is applied on the three projects collected from a company. UML diagrams
are drawn for each project. The values for source-code metrics, that are useful in determining the quality of
code, are calculated for each UML of the projects. Based on the nominal values of metrics, each relevant
UML is represented on an ordinal scale. A machine learning tool, weka, is used to analyze the dataset,
imported in the form of arff file, produced by the three projects
A MODEL TO COMPARE THE DEGREE OF REFACTORING OPPORTUNITIES OF THREE PROJECTS ...acijjournal
Refactoring is applied to the software artifacts so as to improve its internal structure, while preserving its
external behavior. Refactoring is an uncertain process and it is difficult to give some units for
measurement. The amount to refactoring that can be applied to the source-code depends upon the skills of
the developer. In this research, we have perceived refactoring as a quantified object on an ordinal scale of
measurement. We have a proposed a model for determining the degree of refactoring opportunities in the
given source-code. The model is applied on the three projects collected from a company. UML diagrams
are drawn for each project. The values for source-code metrics, that are useful in determining the quality of
code, are calculated for each UML of the projects. Based on the nominal values of metrics, each relevant
UML is represented on an ordinal scale. A machine learning tool, weka, is used to analyze the dataset,
imported in the form of arff file, produced by the three projects.
Machine Learning approaches are good in solving problems that have less information. In most cases, the
software domain problems characterize as a process of learning that depend on the various circumstances
and changes accordingly. A predictive model is constructed by using machine learning approaches and
classified them into defective and non-defective modules. Machine learning techniques help developers to
retrieve useful information after the classification and enable them to analyse data from different
perspectives. Machine learning techniques are proven to be useful in terms of software bug prediction. This
study used public available data sets of software modules and provides comparative performance analysis
of different machine learning techniques for software bug prediction. Results showed most of the machine
learning methods performed well on software bug datasets.
Software Refactoring Under Uncertainty: A Robust Multi-Objective ApproachWiem Mkaouer
Refactoring large systems involves several sources of uncertainty related to the severity levels of code smells to be corrected and the importance of the classes in which the smells are located. Due to the dynamic nature of software development, these values cannot be accurately determined in practice, leading to refactoring sequences that lack robustness. To address this problem, we introduced a multi-objective robust model, based on NSGA-II, for the software refactoring problem that tries to find the best trade-off between quality and robustness. We evaluated our approach using six open source systems and demonstrated that it is significantly better than state-of-the-art refactoring approaches in terms of robustness in 100% of experiments based on a variety of real-world scenarios. Our suggested refactoring solutions were found to be comparable in terms of quality to those suggested by existing approaches and to carry an acceptable robustness price. Our results also revealed an interesting feature about the trade-off between quality and robustness that demonstrates the practical value of taking robustness into account in software refactoring tasks.
STATE-OF-THE-ART IN EMPIRICAL VALIDATION OF SOFTWARE METRICS FOR FAULT PRONEN...IJCSES Journal
With the sharp rise in software dependability and failure cost, high quality has been in great demand.However, guaranteeing high quality in software systems which have grown in size and complexity coupled with the constraints imposed on their development has become increasingly difficult, time and resource consuming activity. Consequently, it becomes inevitable to deliver software that have no serious faults. In
this case, object-oriented (OO) products being the de facto standard of software development with their unique features could have some faults that are hard to find or pinpoint the impacts of changes. The earlier faults are identified, found and fixed, the lesser the costs and the higher the quality. To assess product quality, software metrics are used. Many OO metrics have been proposed and developed. Furthermore,
many empirical studies have validated metrics and class fault proneness (FP) relationship. The challenge is which metrics are related to class FP and what activities are performed. Therefore, this study bring together the state-of-the-art in fault prediction of FP that utilizes CK and size metrics. We conducted a systematic literature review over relevant published empirical validation articles. The results obtained are
analysed and presented. It indicates that 29 relevant empirical studies exist and measures such as complexity, coupling and size were found to be strongly related to FP.
SOFTWARE CODE MAINTAINABILITY: A LITERATURE REVIEWijseajournal
Software Maintainability is one of the most important quality attributes. To increase quality of a software,
to manage software more efficient and to decrease cost of the software, maintainability, maintainability
estimation and maintainability evaluation models have been proposed. However, the practical use of these
models in software engineering tools and practice remained little due to their limitations or threats to
validity. In this paper, results of our Literature Review about maintainability models, maintainability
metrics and maintainability estimation are presented. Aim of this paper is providing a baseline for further
searches and serving the needs of developers and customers.
FROM THE ART OF SOFTWARE TESTING TO TEST-AS-A-SERVICE IN CLOUD COMPUTINGijseajournal
Researchers consider that the first edition of the book "The Art of Software Testing" by Myers (1979)
initiated research in Software Testing. Since then, software testing has gone through evolutions that have
driven standards and tools. This evolution has accompanied the complexity and variety of software
deployment platforms. The migration to the cloud allowed benefits such as scalability, agility, and better
return on investment. Cloud computing requires more significant involvement in software testing to ensure
that services work as expected. In addition to testing cloud applications, cloud computing has paved the
way for testing in the Test-as-a-Service model. This review aims to understand software testing in the
context of cloud computing. Based on the knowledge explained here, we sought to linearize the evolution of
software testing, characterizing fundamental points and allowing us to compose a synthesis of the body of
knowledge in software testing, expanded by the cloud computing paradigm.
From the Art of Software Testing to Test-as-a-Service in Cloud Computingijseajournal
Researchers consider that the first edition of the book "The Art of Software Testing" by Myers (1979)
initiated research in Software Testing. Since then, software testing has gone through evolutions that have
driven standards and tools. This evolution has accompanied the complexity and variety of software
deployment platforms. The migration to the cloud allowed benefits such as scalability, agility, and better
return on investment. Cloud computing requires more significant involvement in software testing to ensure
that services work as expected. In addition to testing cloud applications, cloud computing has paved the
way for testing in the Test-as-a-Service model. This review aims to understand software testing in the
context of cloud computing. Based on the knowledge explained here, we sought to linearize the evolution of
software testing, characterizing fundamental points and allowing us to compose a synthesis of the body of
knowledge in software testing, expanded by the cloud computing paradigm.
The analytic hierarchy process (AHP) has been applied in many fields and especially to complex
engineering problems and applications. The AHP is capable of structuring decision problems and finding
mathematically determined judgments built on knowledge and experience. This suggests that AHP should
prove useful in agile software development where complex decisions occur routinely. In this paper, the
AHP is used to rank the refactoring techniques based on the internal code quality attributes. XP
encourages applying the refactoring where the code smells bad. However, refactoring may consume more
time and efforts.So, to maximize the benefits of the refactoring in less time and effort, AHP has been
applied to achieve this purpose. It was found that ranking the refactoring techniques helped the XP team to
focus on the technique that improve the code and the XP development process in general.
Similar to DETECTION AND REFACTORING OF BAD SMELL CAUSED BY LARGE SCALE (20)
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
In this insightful webinar, Inflectra explores how artificial intelligence (AI) is transforming software development and testing. Discover how AI-powered tools are revolutionizing every stage of the software development lifecycle (SDLC), from design and prototyping to testing, deployment, and monitoring.
Learn about:
• The Future of Testing: How AI is shifting testing towards verification, analysis, and higher-level skills, while reducing repetitive tasks.
• Test Automation: How AI-powered test case generation, optimization, and self-healing tests are making testing more efficient and effective.
• Visual Testing: Explore the emerging capabilities of AI in visual testing and how it's set to revolutionize UI verification.
• Inflectra's AI Solutions: See demonstrations of Inflectra's cutting-edge AI tools like the ChatGPT plugin and Azure Open AI platform, designed to streamline your testing process.
Whether you're a developer, tester, or QA professional, this webinar will give you valuable insights into how AI is shaping the future of software delivery.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on the notifications, alerts, and approval requests using Slack for Bonterra Impact Management. The solutions covered in this webinar can also be deployed for Microsoft Teams.
Interested in deploying notification automations for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
Neuro-symbolic is not enough, we need neuro-*semantic*Frank van Harmelen
Neuro-symbolic (NeSy) AI is on the rise. However, simply machine learning on just any symbolic structure is not sufficient to really harvest the gains of NeSy. These will only be gained when the symbolic structures have an actual semantics. I give an operational definition of semantics as “predictable inference”.
All of this illustrated with link prediction over knowledge graphs, but the argument is general.
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
Here is something new! In our next Connector Corner webinar, we will demonstrate how you can use a single workflow to:
Create a campaign using Mailchimp with merge tags/fields
Send an interactive Slack channel message (using buttons)
Have the message received by managers and peers along with a test email for review
But there’s more:
In a second workflow supporting the same use case, you’ll see:
Your campaign sent to target colleagues for approval
If the “Approve” button is clicked, a Jira/Zendesk ticket is created for the marketing design team
But—if the “Reject” button is pushed, colleagues will be alerted via Slack message
Join us to learn more about this new, human-in-the-loop capability, brought to you by Integration Service connectors.
And...
Speakers:
Akshay Agnihotri, Product Manager
Charlie Greenberg, Host
How world-class product teams are winning in the AI era by CEO and Founder, P...
DETECTION AND REFACTORING OF BAD SMELL CAUSED BY LARGE SCALE
1. International Journal of Software Engineering & Applications (IJSEA), Vol.4, No.5, September 2013
DOI : 10.5121/ijsea.2013.4501 1
DETECTION AND REFACTORING OF BAD SMELL
CAUSED BY LARGE SCALE
Jiang Dexun1
, Ma Peijun2
, Su Xiaohong3
, Wang Tiantian4
School Of Computer Science and Technology, Harbin Institute of Technology,
Harbin, China
1
negrocanfly@163.com, 2
silverghost192@163.cn
3
Suxh@hit.edu.cn, 4
Wangtt@hit.edu.cn
ABSTRACT
Bad smells are signs of potential problems in code. Detecting bad smells, however, remains time
consuming for software engineers despite proposals on bad smell detection and refactoring tools. Large
Class is a kind of bad smells caused by large scale, and the detection is hard to achieve automatically. In
this paper, a Large Class bad smell detection approach based on class length distribution model and
cohesion metrics is proposed. In programs, the lengths of classes are confirmed according to the certain
distributions. The class length distribution model is generalized to detect programs after grouping.
Meanwhile, cohesion metrics are analyzed for bad smell detection. The bad smell detection experiments of
open source programs show that Large Class bad smell can be detected effectively and accurately with this
approach, and refactoring scheme can be proposed for design quality improvements of programs.
KEYWORDS
Distribution rule; Class length distribution model; Cohesion metrics; Bad smell detection; refactoring
scheme
1. INTRODUCTION
Nowadays, with the development of software programming, the number of software analysis
tools available for detecting bad smells significantly increase. Although these tools are gaining
acceptance in practice, a lack of detection towards some bad smells may decrease the
effectiveness, such as Long Method, Large Class and Long Parameter List [1]. The key of these
bad smells is about the structure and components.
Software programs are composed of components from every level. The component from higher
level is composed of ones from lower level. Characters compose keywords, while keywords,
variables and operators compose statements. The composition level of object-oriented programs
is shown in Figure 1.
2. International Journal of Software Engineering & Applications (IJSEA), Vol.4, No.5, September 2013
2
Figure 1. Composition level of object-oriented programs.
Large Class [1] bad smell is one classical bad smells, meaning a class is too large. The cause of
large classes may be the large number of instance variables or methods. Large Class has long
history, but the detection is always vague. From the definition [1], this bad smell detection should
be achieved by the class length statistics. Usually the class length is measured by the lines of code.
In practice it is difficult to confirm a threshold value for detecting one particular class is too large
or not. So it is also difficult to detect Large Class bad smell particularly in business open source
programs. The fixed threshold value is not fastidious for Large Class bad smell detection.
In this paper a detecting method of Large Class bad smell is proposed based on scale distribution.
The length of all the classes in one program is extracted, and then distribution model of class
scale is built using the length of these classes. In distribution model the groups which are farthest
from the distribution curve is considered to be candidate groups of Large Class bad smell.
Furthermore, the cohesion metrics of the classes in these groups are measured to confirm Large
Class.
The rest of the paper is organized as follows. Section 2 presents a short overview of related work.
In Section 3, the class length distribution model is built to present the distribution rules of class
length. With this model and cohesion metrics presented, the detection method of Large Class bad
smell is proposed in Section 4. Section 5 discusses how to give proper refactoring scheme. And
Section 6 shows the experiment results. The conclusion is provided in Section 7.
2. RELATED WORK
In the past decades, a number of studies were conducted for bad smells of programming codes.
Webster [2] introduced smells in the context of object-oriented programming codes, and the
smells sorted as conceptual, political, coding, and quality assurance pitfalls. Riel [3] defined 61
heuristics characterizing good object-oriented programming that enable engineers to assess the
quality of their systems manually and provide a basis for improving design and implementation.
Beck Fowler [1] compiled 22 code smells that are design problems in source code, and it is the
basis of suggesting for refactorings.
Travassos et al. [4] introduced a process based on manual inspections and reading techniques to
identify smells. But manual detection of bad smells is one time-consuming process, and is easy to
mistake. So researchers pay more attention in automatic detection. Marinescu [5] presented a
metric-based approach to detect code smells with detection strategies, implemented in the
IPLASMA tool. Tahvildari and Kontogiannis [6] used an object-oriented metrics suite consisting
of complexity, coupling, and cohesion metrics to detect classes for which quality has deteriorated
and re-engineer detected design flaws. A limitation of their approach is that it indicates the kind
3. International Journal of Software Engineering & Applications (IJSEA), Vol.4, No.5, September 2013
3
of the required transformation but does not specify on which specific methods, attributes, or
classes this transformation should apply (this process requires human interpretation). O’Keeffe
and O’Cinneide [7] treated object-oriented design as a search problem in the space of alternative
designs. This is application of search-based approaches to solving optimization problems in
software engineering. Bad smell detecting by metric needs to be selected proper metrics and the
judging threshold should be predetermined.
Visualization techniques are used in some approaches for complex software analysis. These semi-
automatic approaches are interesting compromises between fully automatic detection techniques
that can be efficient but loose in track of context and manual inspection that is slow and
inaccurate [8, 9]. However, they require human expertise and are thus still time-consuming. Other
approaches perform fully automatic detection of smells and use visualization techniques to
present the detection results [10, 11]. But visual detecting results need manual intervention.
Some bad smells relevant to cohesion can be detected using distance theory. Simon et al. [12]
defined a distance-based metric to measure the cohesion between attributes and methods. The
inspiration about the approach in this paper is drawn from the work [12] in the sense that it also
employs the Jaccard distance. However, the approach has proposed several new definitions and
processes to get improvements. The conception of distance metrics is defined not only among
entities (attributes and methods) but also between classes. In [13], the distances between entities
and classes are defined to measure the cohesion among them. The bad smell detection with
distance theory needs more calculation. In this paper the equation of distance between one entity
and one class has been used for computing the cohesion degree of one class.
There is less research about bad smell detection of Large Class. Liu et al [14] proposed a
detection and resolution sequence for different kinds of bad smells to simplify their detection and
resolution, including Large Class bad smell. But Liu paid more attention to the schedule of
detection rather than Large Class detection itself, and the specific detecting process was not
provided in the paper.
In Large Class bad smell detection, class size measures have been introduced. When class size is
large, it is seen as Large Class. In bad smell detection tools, the main way [15] of measuring class
size is to measure the number of lines of code, i.e. NLOC, or the number of attributes and
methods. PMD[16] and Checkstyle[17] both use NLOC as detection strategy. The former uses a
threshold of 1000 and the second a threshold of 2000. The fixed threshold value is not fastidious
for Large Class bad smell detection, and easy to cause false detection. And in these tools, there is
no function about refactoring of Large Class bad smell.
These researches above show that, the detection of Large Class bad smell is based on fixed
threshold comparison. Since the fixed threshold is selected manually, the objectivity is low.
Moreover, the refactoring method is decided manually, and there is no suggestion or scheme
about that.
3. THE DISTRIBUTION OF CLASS LENGTH
3.1. Class length distribution appearance
In object-oriented programs there are a large number of classes. The length of these classes is not
the same. In this paper, it is declared that if the length of one class is larger than the average
length of the program, it is called larger class, or smaller class.
4. International Journal of Software Engineering & Applications (IJSEA), Vol.4, No.5, September 2013
4
There are some programs with more classes are the larger classes, while others are the opposite.
This depends on the different function programs should be achieved. And this is also relevant to
different coding habits and programming styles of developers. From Table1 it is seen that class
length statistics of some open source programs is listed.
Table 1. Class length statistics of open source programs.
Program Number of
Class
Average
Length
Larger Class Smaller
Class
HSQLDB-2.2.7 111 500 29.73% 70.27%
Tyrant-0.96 117 101 27.35% 72.65%
Tyrant-0.334 262 169 27.10% 72.90%
swingWT-0.60 44 41 22.73% 77.27%
Trama 16 249 25% 75%
ArgoUML 1874 91 19.80% 80.20%
Spring Frk 1531 57 27.69% 72.31%
Azureus_Vuze4812 1597 129 28.18% 71.82%
In Large Class bad smell detecting, the usage of fixed value threshold may cause mistakes: the
detection results of some programs (such as HSQLDB-2.2.7 in Table 1) are that most of classes
are “too large”, and from the results of other programs (such as Spring Frk) there is no Large
Class bad smell at all. Besides that, actually the value of fixed threshold is set manually, with the
lower objectivity.
Because of the programs with different coding habits and programming styles, the detection result
of Large Class bad smell with the fixed value threshold is inaccurate and less persuasive. In Table
1, the percentage of large classes in programs is lower, and the ratio of larger classes and smaller
ones is between 1:4 and 3:7.
Functionally, common classes usually are designed to be small and easy to use, particularly for
the frequently used ones. Oppositely, large scale classes are designed for complex functionality
and computing algorithm. But in programs there are more classes which are simple and common,
and complex classes are less. So for the class length statistics, smaller classes are majority, and
larger ones are minority.
Additionally, in the step of functional design some classes have been designed to achieve certain
functions but these classes are just created but not coded completely. This situation is obvious
particularly in multiple versions comparison of program design. Maybe these classes only contain
some member variables, comments, or even just class names themselves. This kind of unfinished
classes may cause minority smaller classes. From the analysis of statistics and program design,
the numerical comparison relationship of larger classes and smaller classes would be clear.
Above all, one conjecture is proposed in this paper. Conjecture: the class length statistics of
programs confirm to certain distribution rule. And this distribution rule should be verified in
programs statistics.
3.2. The verification of certain distribution conjecture
The process of curve fitting about the statistics data of class length is shown in Figure 2.
5. International Journal of Software Engineering & Applications (IJSEA), Vol.4, No.5, September 2013
5
Figure 2. Process of class length statistics curve fitting.
3.2.1 Obtain the data
Get the data about the number of classes, the length of each class. The class length is measured by
lines of code. n is the number of classes in the program. The length of class iC is defined as iA ,
and 1 2i , , n= …
,
.
3.2.2 Data statistics
Grouping
According to Sturges Equation, the classes need to be grouped. The Sturges Equation is
1 3 32N . lg n= + ⋅ (1)
n is the number of classes. With Equation (1), the classes are divided into N groups, named
as iG
, 1 2i , , N= …
,
Getting interval scope
Get the maximum value maxA and minimum value minA of each class’s length, and the span X .
The interval min max[ , ]A A is divided into N parts, and the length of sub interval is m X / N= . So
the interval of group iG is min min[ ( 1) , ]A i m A i m+ − ⋅ + ⋅ , 1 2i , , N= …
,
.
Class number statistics
The number of classes in group iG is defined as iP , and the statistics algorithm is shown as
Figure 3:
6. International Journal of Software Engineering & Applications (IJSEA), Vol.4, No.5, September 2013
6
Figure 3. Class number statistics algorithm.
After the algorithm the vector iP is valued.
3.2.3 Curve fitting
Graphical vector
The numberi of group interval is defined as the data of x axis, and iP is defined as the data of y
axis. So a series of points is created in the rectangular coordinates to represent the class length
statistics.
Curve Fitting
According to the point set of class length statistics in the rectangular coordinates, get one curve
with the least value of Mean Squared Error (MSE). The process of curve fitting is executed with
all types of statistical curves.
After the curve fitting of the class length statistics from a large number of open source programs,
the Exponential curve is found to be the optimal fitting curve defined as
0
0
R x
y y A e ⋅
= + ⋅ (2)
Through the statistics data obtainment of large amount of programs, the residuals threshold T is
calculated. The value of residuals threshold T is the average of each group MSE in open source
programs curve fitting. This residuals threshold is used for bad smell detection. With the class
length data statistics of programs to be checked, if the residual iR of group i is larger than the
residuals threshold, there is Large Class bad smell in this group, and the bad small classes in this
group is iR T− .
Algorithm:Class number statistics
Input: iG
Output: iP ,
Begin
Foreach( iG )
Foreach( 1 2j , , N= …
,
)
If( min min[ ( 1) , ]iA A j m A j m∈ + − ⋅ + ⋅ )
iP ++;
EndIf
EndFor
EndFor
End
7. International Journal of Software Engineering & Applications (IJSEA), Vol.4, No.5, September 2013
7
4. BAD SMELL DETECTION
Usually the quarantine programs are open source programs which contain a large number of
classes. In the detection method, the inputs are the codes, and the outputs are the bad smell
classes.
4.1. Bad smell location in group
Classes are divided with their length by Sturges Equation, and the result is created in a
dimensional vector 1 2 NP { P ,P , P }= …
,
. And this vector P is fitted with Exponential curve in the
rectangular coordinates. The optimal fitting curve with least value of MSE is
0
0
R ' x
y y ' A e ⋅
= + ⋅ (3)
After curve fitting, the positive residual iR+
is:
i i iR P y+
= − (4)
Where iP is the number of classes in group iG , and iy is the value of Equation (3) curve in i place.
If iR T+
> , there are bad smell classes in group iG , and the number iN of bad smell classes is
computed in Equation (5).
i iN R T+
= − (5)
4.2. Bad smell location in class
As the bad smell group location above, the bad smell groups may not be the largest groups.
Similarly, the identifying method is not to simply select the x largest classes. So it is the key of
Large Class bad smell detection: the detecting basis is not from the metrics of destination class
itself (length or others), but from metrics of all the classes.
In this paper, the bad smell location in class is identified with the inner cohesion of classes. The
cohesion metric is defined with the entity distance theory. In entity distance theory, these
concepts should be defined.
Definition 1 (Entity): the entity is the attribute a or the method m in one class, which is signed
as E .
Definition 2 (Property Set): the property set is the set of entities which have invoking-relations
with the given entity E , and it is signed as ( )P E . If one method uses (accesses/calls) one
attribute or another method, they two have invoking-relations with each other.
In more detail, ( )P a contains a itself and all the methods use a , and ( )P m contains itself and
all the attributes and methods m uses.
Definition 3(Distance): the distance value 1 2( , )Dist E E of entity 1E and 2E is
8. International Journal of Software Engineering & Applications (IJSEA), Vol.4, No.5, September 2013
8
1 2
1 2
1 2
| ( ) ( ) |
( , ) 1
| ( ) ( ) |
P E P E
Dist E E
P E P E
∩
= −
∪
(6)
Where| ( ) |P x is the member count of ( )P x , and the distance between entity e and class C is the
average of the distances between e and every entity inC :
1
( , ) ,
| | 1
( , )
1
( , ) ,
| |
i
i
i i C
y CC
i C i C
y CC
Dist e y e y E
E
D e C
Dist e y e E y E
E
∈
∈
× ∈ −
=
× ∉ ∈
∑
∑
(7)
Where CE is the set of entities C contains.
Definition 4(Cohesion Metric): the Cohesion Metric value is the rate of the average of the
distance of entities out of the class and those in the class.
i
i
i
e C
i
C
i
e C
i
Distance( e ,C )
|e C |
Conesion
Distance( e ,C )
|e C |
∉
∈
∉
=
∈
∑
∑
(8)
If the cohesion metric value is smaller, the degree of cohesion is lower. So with the x smallest
cohesion metric value, these classes are identified to Large Class bad smell.
5. REFACTORING SCHEME
In this section the classes which are sure to have Large Class bad smell is refactored. And the
refactoring process is Extract Class, which means the destination class should be divided into two
or more new classes. In practice, the destination class would be divided into two parts, and the
bad smell detection would be executed again.
The basic idea of refactoring scheme is to divide the entities in the destination class based on the
cohesion degree among them. So the key ideas are how to represent cohesion degree between
entities in classes and how to cluster entities in classes.
5.1. Cohesion degree representation of entities in class
The cohesion degree is represented as the distance between two entities. The distance value of
entity 1E and 2E is shown in Equation (5). Before clustering, all the distances between each two
entities in the destination class should be computed accurately. The lower distance value is, the
higher the cohesion degree is.
9. International Journal of Software Engineering & Applications (IJSEA), Vol.4, No.5, September 2013
9
5.2. Entities clustering algorithm
The agglomerative clustering algorithm [18] (which is a hierarchical clustering algorithm) is used
in this paper. The process is given below:
1) Assign each entity to a single cluster, and the distance value of each two cluster is the distance
of the two entities;
2) Repeat merging until the total cluster number reduces to 2. And the considered merging
criterion is to merge two clusters with the lowest distance value. After merging once, the distance
to the new merging cluster is the average of those to last clusters.
3) Output the two clusters (each of them contains several entities).
The agglomerative clustering algorithm is given in Figure 4:
Figure 4. Agglomerative clustering algorithm of refactoring.
After the algorithm, according to the two new clusters, Extract Class operation would be executed
as refactoring.
6. EXPERIMENTAL RESULTS
In this paper several Java open source programs are used to detect Large Class bad smells. The
names of these programs are shown is Table 2:
Table 2. Open source programs in Large Class bad smell detection.
Program name Number of classes
HSQLDB 2.2.4 111
Tyrant 0.96 116
Swing WT 0.60 44
Trama 16
ArgoUML 1874
JFreeChart 1.0.13 504
Algorithm:Agglomerative Clustering Algorithm
Input:ench entities and their distance
Output:two new clusters
Begin
each entity is assigned to be a single cluster;
While(clustering number is more than 2)
merge two clusters A, B with the lowest distance value as cluster C;
Foreach(any other cluster X in the class)
Dist(C,X)=Avg(Dist(A,X),Dist(B,X));
EndFor
EndWhile
End
10. International Journal of Software Engineering & Applications (IJSEA), Vol.4, No.5, September 2013
10
6.1. Large Class bad smell location in group
If all the groups of statistics data have high fitting degree (through threshold comparison) after
detection, there is no Large Class bad smell at all. And sometimes the positive residual is less
than 0, so it is detected to be no bad smell.
The results of Large Class bad smell group location towards the programs in Table 2 is shown in
Table 3:
Table 3. Results of Large Class bad smell group location.
Group HSQLDB2.2.
4
Tyrant0.96 SwingWT0.6
0
Trama ArgoUML Soul3.0
1 0 0 0 0 0 0
2 0 0 0 0 0 0
3 0 0 0 0 0 0
4 0 0 0 0 0 0
5 0 0 0 1 0 0
6 0 0 0 0 0
7 0 0 3 0 4
8 0 2 0 0
9 1 0
10 1 0
11 0
12 2
In Table 3, the nonzero digit iN means the existence of Large Class bad smell in its group, which
is computed in Equation (5). And the value means the number of Large Class bad smell in the
group. If iN is equal to zero, there is no Large Class bad smell at all in iG group.
Besides, different programs have different numbers of class, so the group number of each
program is different with each other. So maybe there is no digit in iN position. HSQLDB2.2.4
has only 8 groups, so they are blank spaces in group 8 to group 12. The ArgoUML program has
12 groups, which is more than any others.
6.2. Large Class bad smell class location in class
The cohesion metrics of classes in group location are computed with the Equation (8) to detect
which class/classes have bad smell.
As the location method proposed in Section 4.2, iN classes were detected as Large Class bad
smell with smallest cohesion metrics. Table 4 shows the cohesion metrics of group 8 class
members of Tyrant0.96 program. With this, the classes Creature and GameScreen are both
located to be Large Class.
11. International Journal of Software Engineering & Applications (IJSEA), Vol.4, No.5, September 2013
11
Table 4. Cohesion metrics of group 8 class members of Tyrant0.96 program
Class name Number of lines Cohesion metric
Creature 898 5.763
GameScreen 625 3.125
Map 788 12.061
Table 5 shows the cohesion metrics of group 7 class members in JFreeChart1.0.13 program. After
the cohesion metrics computing and analysis, the classes AbstractRenderer, PiePlot, CategoryPlot
and ChartPanel are identified as Large Class.
Table 5. Cohesion metrics of group 7 class members of JFreeChart1.0.13 program
Class name Number of lines Cohesion metric
AbstractRenderer 1879 4.932
PiePlot 1725 5.375
DatasetUtilities 1808 5.864
ChartPanel 1642 3.509
DateAxis 1752 12.826
6.3. Code refactoring results
The classes with bad smell should be refactored by Extract Class according to the entities distance
and agglomerative clustering algorithm. After refactoring the programs should be test again.
Figure 5 shows the test results of Tyrant0.96 before and after refactoring.
(a) Fitting curve before refactoring (b) Fitting curve after refactoring
Figure 5. Comparisons on the results of Tyrant0.96 before and after refactoring.
In Figure 5(a), MSE of the data is 0.01810, and that is 0.01037 in Figure 5(b). In Figure 5(b), the
curve has better approximation than that in (a). The MSE is less than threshold, so the refactoring
is effective and there is no Large Class bad smell at all.
6.4 Comparisons with PMD and Checkstyle tools
In the section of related work, the refactoring tools PMD and Checkstyle are introduced. PMD
and Checkstyle have the ability for Large Class bad smell detection, and no refactoring operation
suggestion. As mentioned, in these tools, if the line number of one class is higher preset threshold,
the class is detected as Large Class. The threshold of PMD for Large Class is 1000, and the
12. International Journal of Software Engineering & Applications (IJSEA), Vol.4, No.5, September 2013
12
threshold of Checkstyle is 2000. But PMD and Checkstyle cannot provide refactoring schemes
for existing Large Class bad smells. The detecting results from these two refactoring tools are
compared with the approach in this paper.
The results of comparison are shown in Table 6. After manual confirmation, the precision
comparisons of the methods in this paper and PMD & Checkstype are displayed in Table 7.
Table 6. Cohesion metrics of group 7 class members of JFreeChart1.0.13 program
Detection
tools &
methods
Tyrant0.96 JFreeChart1.0.13
Large
Class
Number
Large Class
Name
Large
Class
Number
Large Class Name
Method in
this paper
2 Creature
GameScreen
4
AbstractRenderer, PiePlot,
DatasetUtilities, ChartPanel
PMD 0 --
12
AbstractRenderer, PiePlot,
DatasetUtilities, ChartPanel,
DateAxis, ChartFactory,
AbstractXYItemRenderer,
ContourPlot, ThermometerPlot,
AbstractCategoryItemRenderer
XYPlot, CategoryPlot
Checkstyle 0 -- 2 XYPlot, CategoryPlot
Table 7. Precision comparisons of the methods in this paper and PMD & Checkstype
Program Bad smell detection Precision (%) Refactoring scheme
Precision (%)
PMD Checkstyle This paper method This paper method
Tyrant0.96 -- -- 100 100
JFreeChart1.0.13 33.33 0 100 100
“--” means that the precision rate cannot be computed.
From the comparison in Table 7, the method in this paper is much better than the existing Large
Class bad smell detection tools.
In small scale programs the classes are general small, the potential probability of Large Class is
low, and vice versa. The CLDM is more suitable for larger scale programs Large Class bad smell
detection and refactoring schemes. Small scale programs have less Large Class, so the false
positive rate of CLDM is higher.
In addition, because of the different threshold, the detecting Precision and Recall of PMD and
Checkstyle are not the same in different scale programs. But it is not sure which threshold is more
effective for all the programs.
7. CONCLUSION
In this paper the approach of Large Class bad smell detection and refactoring scheme has been
proposed. Fixed-threshold-based detection method is analyzed to be rigid and error-prone. And a
13. International Journal of Software Engineering & Applications (IJSEA), Vol.4, No.5, September 2013
13
new model is developed to describe the statistic distribution of class length. In this model, the
class groups that are far away from the distribution curve are treated as containing bad smells
potentially. And combining with cohesion metric computing, the bad smell classes are confirmed
in the class groups. After using Agglomerative Clustering Technique, the scheme of Extract Class
is proposed for refactoring.
The contributions of this paper are as follows. First, the characteristics of Large Class bad smell
are quantified with statistical analysis. Second, the length and cohesion metrics based approach is
proposed for Large Class bad smell detection.
ACKNOWLEDGEMENTS
This research is supported by the National Natural Science Foundation of China under Grant
No.61173021 and the Research Fund for the Doctoral Program of Higher Education of China
(Grant No. 20112302120052 and 20092302110040).
REFERENCES
[1] M. Fowler, (1999) “Refactoring: Improving the design of existing code”, Addison-Wesley, pp89-92.
[2] B.F. Webster, (1995) “Pitfalls of Object Oriented Development”, first M&T Books, Feb.
[3] A.J. Riel, (1996) “Object-Oriented Design Heuristics”, Addison-Wesley.
[4] G. Travassos, F. Shull, M. Fredericks, & V.R. Basili., (1999) “Detecting Defects in Object-Oriented
Designs: Using Reading Techniques to Increase Software Quality”, Proceeding of 14th Conference in
Object-Oriented Programming, Systems, Languages, and Applications, pp47-56.
[5] R. Marinescu, (2004) “Detection Strategies: Metrics-Based Rules for Detecting Design Flaws”,
Proceeding of 20th International Conference in Software Maintenance, pp350-359.
[6] Ladan Tahvildari & Kostas Kontogiannis, (2003) “A Metric-Based Approach to Enhance Design
Quality through Meta-Pattern Transformations”, 7th European Conference Software Maintenance and
Reengineering, pp183-192.
[7] M. O'Keeffe & M. O'Cinneide, (2008) “Search-based refactoring: an empirical study”, Journal of
software maintenance and evolution: research and practice,pp345-364.
[8] K. Dhambri, H. Sahraoui & P. Poulin, (2008) “Visual Detection of Design Anomalies”, Proceeding of
12th European Conference in Software Maintenance and Reeng, pp279-283.
[9] G. Langelier, H.A. Sahraoui & P. Poulin, (2005) “Visualization-Based Analysis of Quality for Large-
Scale Software Systems”, Proceeding of 20th International Conference in Automated Software
Engineering , pp214-223.
[10] M. Lanza & R. Marinescu, (2006) “Object-Oriented Metrics in Practice”, Springer-Verlag. pp125-
128.
[11] E. van Emden & L. Moonen, (2002) “Java Quality Assurance by Detecting Code Smells”, Proceeding
of 9th Working Conference in Reverse Engineering, pp120-128.
[12] F. Simon, F. Steinbruckner C. Lewerentz, (2001) “Metrics Based Refactoring”, Proceeding of 5th
European Conference in Software Maintenance and Reengineering, pp30-38.
[13] D.X. Jiang & P.J. Ma, (2012) “Detecting Bad Smells With Weight Based Distance Metrics Theory”,
Proceeding of 2nd International Conference on Instrumentation, Measurement, Computer,
Communication and Control, pp299-304.
[14] H. Liu, Z.Y. Ma & W.Z. Shao, (2012) “Schedule of Bad Smell Detection and Resolution: A New
Way to Save Effort”, IEEE Transactions on Software Engineering, Vol. 38, No. 1, pp220-235.
[15] D. Fontana, A. Francesca & P.Braione, (2012) “Automatic detection of bad smells in code An
experimental assessment”, Journal of Object Technology, Vol. 11, No. 2, pp1-38.
[16] http://pmd.sourceforge.net.
[17] http://checkstyle.sourceforge.net.
[18] J.W. Han & M. Kamber, (2005) “Data Mining Concepts and Techniques”, Morgan Kaufmann
Publishers.