System Structure Analysis: Clustering with Data Bindings
IEEE Transactions on Software Engineering - Annals of discrete mathematics, 24
Quantitative models of cohesion and coupling in software
Selected papers of the sixth annual Oregon workshop on Software metrics
Software engineering (5th ed.)
Software engineering (5th ed.)
Property-Based Software Engineering Measurement
IEEE Transactions on Software Engineering
Software metrics (2nd ed.): a rigorous and practical approach
Software metrics (2nd ed.): a rigorous and practical approach
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
Rule-based approach to computing module cohesion
ICSE '93 Proceedings of the 15th international conference on Software Engineering
Software architecture recovery and restructuring through clustering techniques
ISAW '98 Proceedings of the third international workshop on Software architecture
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
Software Engineering: A Practitioner's Approach
Software Engineering: A Practitioner's Approach
A Metric-Based Approach to Detect Abstract Data Types and State Encapsulations
Automated Software Engineering
Software Engineering Measurement
Software Engineering Measurement
Reverse Engineering and Design Recovery: A Taxonomy
IEEE Software
Extracting and Restructuring the Design of Large Systems
IEEE Software
IEEE Transactions on Software Engineering
Measuring Design-Level Cohesion
IEEE Transactions on Software Engineering
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
ICSM '01 Proceedings of the IEEE International Conference on Software Maintenance (ICSM'01)
Bunch: A Clustering Tool for the Recovery and Maintenance of Software System Structures
ICSM '99 Proceedings of the IEEE International Conference on Software Maintenance
Using Automatic Clustering to Produce High-Level System Organizations of Source Code
IWPC '98 Proceedings of the 6th International Workshop on Program Comprehension
The Weighted Combined Algorithm: A Linkage Algorithm for Software Clustering
CSMR '04 Proceedings of the Eighth Euromicro Working Conference on Software Maintenance and Reengineering (CSMR'04)
An Effectiveness Measure for Software Clustering Algorithms
IWPC '04 Proceedings of the 12th IEEE International Workshop on Program Comprehension
Applications of clustering techniques to software partitioning, recovery and restructuring
Journal of Systems and Software - Special issue: Applications of statistics in software engineering
Software refactoring at the function level using new Adaptive K-Nearest Neighbor algorithm
Advances in Engineering Software
Journal of Software Maintenance and Evolution: Research and Practice
Adjusting Fuzzy Similarity Functions for use with standard data mining tools
Journal of Systems and Software
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
Efficient software clustering technique using an adaptive and preventive dendrogram cutting approach
Information and Software Technology
Hi-index | 0.00 |
Program restructuring is a key method for improving the quality of ill-structured programs, thereby increasing the understandability and reducing the maintenance cost. It is a challenging task and a great deal of research is still ongoing. This paper presents an approach to program restructuring inside of a function based on clustering techniques with cohesion as the major concern. Clustering has been widely used to group related entities together. The approach focuses on automated support for identifying ill-structured or low-cohesive functions and providing heuristic advice in both the development and evolution phases. A new similarity measure is defined and studied intensively specifically from the function perspective. A comparative study on three different hierarchical agglomerative clustering algorithms is also conducted. The best algorithm is applied to restructuring of functions of a real industrial system. The empirical observations show that the heuristic advice provided by the approach can help software designers make better decision of why and how to restructure a program. Specific source code level software metrics are presented to demonstrate the value of the approach.