Your browser does not support JavaScript!

Software refactoring at the package level using clustering techniques

Software refactoring at the package level using clustering techniques

For access to this article, please select a purchase option:

Buy article PDF
(plus tax if applicable)
Buy Knowledge Pack
10 articles for $120.00
(plus taxes if applicable)

IET members benefit from discounts to all IET publications and free access to E&T Magazine. If you are an IET member, log in to your account and the discounts will automatically be applied.

Learn more about IET membership 

Recommend Title Publication to library

You must fill out fields marked with: *

Librarian details
Your details
Why are you recommending this title?
Select reason:
IET Software — Recommend this title to your library

Thank you

Your recommendation has been sent to your librarian.

Enhancing, modifying or adapting the software to new requirements increases the internal software complexity. Software with high level of internal complexity is difficult to maintain. Software refactoring reduces software complexity and hence decreases the maintenance effort. However, software refactoring becomes quite challenging task as the software evolves. The authors use clustering as a pattern recognition technique to assist in software refactoring activities at the package level. The approach presents a computer aided support for identifying ill-structured packages and provides suggestions for software designer to balance between intra-package cohesion and inter-package coupling. A comparative study is conducted applying three different clustering techniques on different software systems. In addition, the application of refactoring at the package level using an adaptive k-nearest neighbour (A-KNN) algorithm is introduced. The authors compared A-KNN technique with the other clustering techniques (viz. single linkage algorithm, complete linkage algorithm and weighted pair-group method using arithmetic averages). The new technique shows competitive performance with lower computational complexity.


    1. 1)
      • A. Niknejad .
    2. 2)
      • Anquetil, N., Fourrier, C., Lethbridge, T.: `Experiments with hierarchical clustering algorithms as software remodularization methods', Proc. Working Conf. on Reverse Engineering, 1999.
    3. 3)
    4. 4)
      • B. Everitte . (1980) Cluster analysis.
    5. 5)
      • M.R. Anderberg . (1973) Cluster analysis for applications.
    6. 6)
      • W.F. Opdyke . (1992) Refactoring: a program restructuring aid in designing object-oriented application frameworks.
    7. 7)
      • Wattanachon, U., Lursinsap, C.: `Agglomerative hierarchical clustering for nonlinear data analysis', IEEE Int. Conf. Systems, Man and Cybernetics, 2004.
    8. 8)
    9. 9)
      • B.P. Lientz , E.B. Swanson . (1980) Software maintenance management: a study of the maintenance of computer application software in 487 data processing organizations.
    10. 10)
    11. 11)
    12. 12)
      • Lakhotia, A., Deprez, J.C.: `Restructuring functions with low cohesion', Proc. Sixth Working Conf. on Reverse Engineering, 1999.
    13. 13)
    14. 14)
      • L. Kaufman , P.J. Rousseeuw . (1990) Finding groups in data: an introduction to cluster analysis.
    15. 15)
      • E. Fix , J. Hodges . (1951) Discriminatory analysis: nonparametric discrimination: consistency properties.
    16. 16)
    17. 17)
      • Fabio, M.: Trama, Source Forge, Accessed: 22 November 2008.
    18. 18)
      • Wiggerts, T.A.: `Using clustering algorithms in legacy systems modularization', Proc. Fourth Working Conf. on Reverse Engineering, 1997.
    19. 19)
    20. 20)
    21. 21)
      • Tzerpos, V., Holt, R.C.: `Software botryology automatic clustering of software systems', Proc. 20th Annual Int. Conf. of the IEEE, 1998.
    22. 22)
    23. 23)
      • H. Charles Romesburg . (1984) Cluster analysis for researchers.
    24. 24)
    25. 25)
    26. 26)
      • F. Murtagh . A survey of recent advances in hierarchical clustering algorithms. Comput. J. , 4 , 354 - 359
    27. 27)
      • M. Fowler . (1999) Refactoring: improving the design of existing programs.
    28. 28)
    29. 29)
    30. 30)
      • R.S. Arnold . (1986) An introduction to software restructuring, Tutorial on Software Restructuring.
    31. 31)
    32. 32)
    33. 33)

Related content

This is a required field
Please enter a valid email address