Tutorial on software restructuring
Tutorial on software restructuring
Automated assistance for program restructuring
ACM Transactions on Software Engineering and Methodology (TOSEM)
Quantitative models of cohesion and coupling in software
Selected papers of the sixth annual Oregon workshop on Software metrics
A unified framework for expressing software subsystem classification techniques
Journal of Systems and Software
An intelligent tool for re-engineering software modularity
ICSE '91 Proceedings of the 13th international conference on Software engineering
Using design abstractions to visualize, quantify, and restructure software
Journal of Systems and Software - Special issue on software engineering and knowledge engineering
Refactoring: improving the design of existing code
Refactoring: improving the design of existing code
A quantitative framework for software restructuring
Journal of Software Maintenance: Research and Practice
Statistical Pattern Recognition: A Review
IEEE Transactions on Pattern Analysis and Machine Intelligence
ACM Computing Surveys (CSUR)
Managing application program maintenance expenditures
Communications of the ACM
Automated method-extraction refactoring by using block-based slicing
SSR '01 Proceedings of the 2001 symposium on Software reusability: putting software reuse in context
Software Maintenance Management
Software Maintenance Management
Software Botryology, Automatic Clustering of Software Systems
DEXA '98 Proceedings of the 9th International Workshop on Database and Expert Systems Applications
Using Clustering Algorithms in Legacy Systems Remodularization
WCRE '97 Proceedings of the Fourth Working Conference on Reverse Engineering (WCRE '97)
Experiments with Clustering as a Software Remodularization Method
WCRE '99 Proceedings of the Sixth Working Conference on Reverse Engineering
Restructuring Functions with Low Cohesion
WCRE '99 Proceedings of the Sixth Working Conference on Reverse Engineering
Effective, Automatic Procedure Extraction
IWPC '03 Proceedings of the 11th IEEE International Workshop on Program Comprehension
Using a Concept Lattice of Decomposition Slices for Program Understanding and Impact Analysis
IEEE Transactions on Software Engineering
Pattern Classification (2nd Edition)
Pattern Classification (2nd Edition)
Applications of clustering techniques to software partitioning, recovery and restructuring
Journal of Systems and Software - Special issue: Applications of statistics in software engineering
Program restructuring using clustering techniques
Journal of Systems and Software - Special issue: Selected papers from the 4th source code analysis and manipulation (SCAM 2004) workshop
Empirical investigation of refactoring effect on software quality
Information and Software Technology
Software Engineering: A Practitioner's Approach
Software Engineering: A Practitioner's Approach
A new clustering technique for function approximation
IEEE Transactions on Neural Networks
A new hierarchical clustering technique for restructuring software at the function level
Proceedings of the 6th India Software Engineering Conference
SPAPE: A semantic-preserving amorphous procedure extraction method for near-miss clones
Journal of Systems and Software
Just-in-time adaptive similarity component analysis in nonstationary environments
Journal of Intelligent & Fuzzy Systems: Applications in Engineering and Technology
Hi-index | 0.00 |
Improving the quality of software is a vital target of software engineering. Constantly evolving requirements force software developers to enhance, modify, or adapt software. Thus, increasing internal complexity, maintenance effort, and ultimately cost. In trying to balance between the needs to change software, maintain high quality, and keep the maintenance effort and cost low, refactoring comes up as a solution. Refactoring aims to improve a number of quality factors, among which is understandability. Enhancing understandability of ill-structured software decreases the maintenance effort and cost. To improve understandability, designers need to maximize cohesion and minimize coupling, which becomes more difficult to achieve as software evolves and internal complexity increases. In this paper, we propose a new Adaptive K-Nearest Neighbor (A-KNN) algorithm to perform clustering with different attribute weights. The technique is used to assist software developers in refactoring at the function/method level. This is achieved by identifying ill-structured software entities and providing suggestions to improve cohesion of such entities. We also compare the proposed technique with three function-level clustering techniques Single Linkage algorithm (SLINK), Complete Linkage algorithm (CLINK) and Weighted Pair-Group Method using Arithmetic averages (WPGMA). A-KNN showed competitive performance with the other three algorithms and required less computational complexity.