Skip to main content

Introduction

  • Chapter
  • First Online:
  • 489 Accesses

Abstract

This introductory chapter defines the scope of the book, discussing the challenges and the process of software modularization. The following items will be discussed in this chapter:

  • the basic setup;

  • the challenges of software modularization;

  • software modularization, in overview;

  • types of artefact dependency graph;

  • source code analysis;

  • software modularization methods.

This is a preview of subscription content, log in via an institution.

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info
Hardcover Book
USD   54.99
Price excludes VAT (USA)
  • Durable hardcover edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Learn about institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Meir M Lehman. Programs, life cycles, and laws of software evolution. Proceedings of the IEEE, 68(9):1060–1076, 1980.

    Google Scholar 

  2. Meir M Lehman and Juan F Ramil. Software evolution: Background, theory, practice. Information Processing Letters, 88(1):33–44, 2003.

    Google Scholar 

  3. Brian S Mitchell. A heuristic search approach to solving the software clustering problem. PhD thesis, Thesis, Drexel University, Philadelphia, USA, 2002.

    Google Scholar 

  4. Onaiza Maqbool and Haroon A Babri. Hierarchical clustering for software architecture recovery. IEEE Transactions on Software Engineering, 33(11):759–780, 2007.

    Google Scholar 

  5. Brian S Mitchell and Spiros Mancoridis. On the evaluation of the bunch search-based software modularization algorithm. Soft Computing, 12(1):77–93, 2008.

    Google Scholar 

  6. Qifeng Zhang, Dehong Qiu, Qubo Tian, and Lei Sun. Object-oriented software architecture recovery using a new hybrid clustering algorithm. In Fuzzy Systems and Knowledge Discovery (FSKD), 2010 Seventh International Conference, volume 6, pages 2546–2550. IEEE, 2010.

    Google Scholar 

  7. Stéphane Ducasse and Damien Pollet. Software architecture reconstruction: A process-oriented taxonomy. IEEE Transactions on Software Engineering, 35(4):573–591, 2009.

    Article  Google Scholar 

  8. Rainer Koschke. Atomic architectural component recovery for program understanding and evolution. In Software Maintenance, Proceedings. International Conference on, pages 478–481. IEEE, 2002.

    Google Scholar 

  9. Elliot J Chikofsky, James H Cross, et al. Reverse engineering and design recovery: A taxonomy. Software, IEEE, 7(1):13–17, 1990.

    Google Scholar 

  10. John C Munson. Software Engineering Measurement. CRC Press, 2003.

    Google Scholar 

  11. Roger S Pressman. Software Engineering: A Practitioner’s Approach. Palgrave Macmillan, 2005.

    Google Scholar 

  12. Denys Poshyvanyk, Andrian Marcus, Rudolf Ferenc, and Tibor Gyimóthy. Using information retrieval based coupling measures for impact analysis. Empirical Software Engineering, 14(1):5–32, 2009.

    Article  Google Scholar 

  13. Vassilios Tzerpos and Richard C Holt. Mojo: A distance metric for software clusterings. In Proceedings of Reverse Engineering, 6th Working Conference, pages 187–193. IEEE, 1999.

    Google Scholar 

  14. Stephen C North and Eleftherios Koutsofios. Applications of graph visualization. In Graphics Interface, pages 235–235. Citeseer, 1994.

    Google Scholar 

  15. John Ellson, Emden Gansner, Lefteris Koutsofios, Stephen C North, and Gordon Woodhull. Graphviz—open source graph drawing tools. In Graph Drawing, pages 483–484. Springer, 2001.

    Google Scholar 

  16. Sofia Martinez Lopez, GA Alfonzo, OJ Perez, SJG Gonzalez, and RA Montes. A metamodel to carry out reverse engineering of c++ code into uml sequence diagrams. In Electronics, Robotics and Automotive Mechanics Conference, 2006, volume 2, pages 331–336. IEEE, 2006.

    Google Scholar 

  17. Timothy C Lethbridge, Sander Tichelaar, and Erhard Plödereder. The Dagstuhl middle metamodel: A schema for reverse engineering. Electronic Notes in Theoretical Computer Science, 94:7–18, 2004.

    Google Scholar 

  18. Rudolf Ferenc. Modelling and reverse engineering C++ source code. PhD thesis, University of Szeged, 2004.

    Google Scholar 

  19. Jan Dockx, Nele Smeets, Kristof Mertens, and Eric Steegmans. Jnome: A java meta-model in detail. Report CW, Department of Computer Science, KU Leuven, 2001.

    Google Scholar 

  20. S Parsa and O Bushehrian. The design and implementation of a tool for automatic software modularization. Journal of Supercomputing, 32(1):71–94, 2005.

    Article  Google Scholar 

  21. Carlos Montes de Oca and Doris L Carver. A visual representation model for software subsystem decomposition. In Proceedings of Reverse Engineering, Fifth Working Conference on, pages 231–240. IEEE, 1998.

    Google Scholar 

  22. Hausi A Müller, Mehmet Ali Orgun, Scott Robert Tilley, and James Scott Uhl. Discovering and reconstructing subsystem structures through reverse engineering. Department of Computer Science, University of Victoria, British Columbia, Canada, 1992.

    Google Scholar 

  23. Arie Van Deursen and Tobias Kuipers. Identifying objects using cluster and concept analysis. In Proceedings of the 21st International Conference on Software Engineering, pages 246–255. ACM, 1999.

    Google Scholar 

  24. Rashid Naseem, Onaiza Maqbool, and Siraj Muhammad. Improved similarity measures for software clustering. In Proceedings of 15th European Conference on Software Maintenance and Reengineering (CSMR), pages 45–54. IEEE, 2011.

    Google Scholar 

  25. Periklis Andritsos and Vassilios Tzerpos. Information-theoretic software clustering. IEEE Transactions on Software Engineering, 31(2):150–165, 2005.

    Article  Google Scholar 

  26. Mehreen Saeed, Onaiza Maqbool, Haroon Atique Babri, Syed Zahoor Hassan, and Sheikh Muhammad Sarwar. Software clustering techniques and the use of combined algorithm. In Proceedings of 7th European Conference on Software Maintenance and Reengineering, pages 301–306. IEEE, 2003.

    Google Scholar 

  27. Brian S Mitchell and Spiros Mancoridis. On the automatic modularization of software systems using the bunch tool. IEEE Transactions on Software Engineering, 32(3):193–208, 2006.

    Google Scholar 

  28. Onaiza Maqbool and Haroon Atique Babri. The weighted combined algorithm: A linkage algorithm for software clustering. In Proceedings of 8th European Conference on Software Maintenance and Reengineering, CSMR 2004, pages 15–24. IEEE, 2004.

    Google Scholar 

  29. BS Everitt, Sabine Landau, Morven Leese, and Daniel Stahl. Cluster Analysis. West Sussex, UK: Wiley, 2011.

    Book  MATH  Google Scholar 

  30. Guojun Gan, Chaoqun Ma, and Jianhong Wu. Data Clustering: Theory, algorithms, and applications, volume 20. SIAM, 2007.

    Google Scholar 

  31. Michael R Anderberg. Cluster Analysis for Applications, Probability and Mathematical Statistics, volume 19. Academic press, 2014.

    Google Scholar 

  32. Bin Zhang and Sargur N Srihari. Binary vector dissimilarity measures for handwriting identification. In Electronic Imaging 2003, pages 28–38. International Society for Optics and Photonics, 2003.

    Google Scholar 

  33. Michel-Marie Deza and Elena Deza. Dictionary of Distances. Elsevier, 2006.

    Google Scholar 

  34. Sung-Hyuk Cha. Comprehensive survey on distance/similarity measures between probability density functions. City, 1(2):1, 2007.

    Google Scholar 

  35. Michel Marie Deza and Elena Deza. Encyclopedia of Distances. Springer, 2009.

    Google Scholar 

  36. Jack D Tubbs. A note on binary template matching. Pattern Recognition, 22(4):359–365, 1989.

    Google Scholar 

  37. P Legendre Legendre and L Legendre. Numerical ecology. Elsevier, 1998.

    Google Scholar 

  38. John C Gower. A general coefficient of similarity and some of its properties. Biometrics, pages 857–871, 1971.

    Google Scholar 

  39. David Wishart. K-means clustering with outlier detection, mixed variables and missing values. In Exploratory Data Analysis in Empirical Research, pages 216–226. Springer, 2003.

    Google Scholar 

  40. Jennifer Farkas. Using Kohonen maps to determine document similarity. In Proceedings of the 1994 Conference of the Centre for Advanced Studies on Collaborative Research, page 16. IBM Press, 1994.

    Google Scholar 

  41. Kenneth Franklin Riley, Michael Paul Hobson, and Stephen John Bence. Mathematical Methods for Physics and Engineering: A Comprehensive Guide. Cambridge University Press, 2006.

    Google Scholar 

  42. L Orloci. Geometric models in ecology: I. the theory and application of some ordination methods. Journal of Ecology, pages 193–215, 1966.

    Google Scholar 

  43. David W Cantrell. Pythagorean means. In MathWorld: A Wolfram Web Resource, 2003.

    Google Scholar 

  44. Masaaki Morisita. Measuring of the dispersion of individuals and analysis of the distributional patterns. Mem. Fac. Sci. Kyushu Univ. Ser. E, 2(21):5–23, 1959.

    Google Scholar 

  45. Sung-Hyuk Cha, Seungseok Choi, and Charles C Tappert. Anomaly between Jaccard and Tanimoto coefficients. In Proceedings of Student-Faculty Research Day, CSIS, Pace university, New York, 2009.

    Google Scholar 

  46. Michel Marie Deza and Elena Deza. Distances on strings and permutations. In Encyclopedia of Distances, pages 213–225. Springer, 2014.

    Google Scholar 

  47. Konstantinos G Derpanis. The Bhattacharyya measure. Mendeley Computer, 1(4):1990–1992, 2008.

    Google Scholar 

  48. Mikhail S Nikulin. Hellinger distance. In Encyclopedia of Mathematics. Springer Dordrecht, The Netherlands, 2001.

    Google Scholar 

  49. M Dabboor, S Howell, M Shokr, and J Yackel. The Jeffries–Matusita distance for the case of complex Wishart distribution as a separability criterion for fully polarimetric SAR data. International Journal of Remote Sensing, 35(19):6859–6873, 2014.

    Google Scholar 

  50. Seung-Seok Choi, Sung-Hyuk Cha, and Charles C Tappert. A survey of binary similarity and distance measures. Journal of Systemics, Cybernetics and Informatics, 8(1):43–48, 2010.

    Google Scholar 

  51. Henry O Lancaster. Forerunners of the Pearson χ2. Australian Journal of Statistics, 8(3):117–126, 1966.

    Google Scholar 

  52. Vilijandas Bagdonavičius, Kruopis Julius, and Mikhail S Nikulin. Chi-squared tests. In Non-parametric Tests for Complete Data, pages 17–75. Wiley, 2011.

    Google Scholar 

  53. Thorvald Sørensen. A method of establishing groups of equal amplitude in plant sociology based on similarity of species and its application to analyses of the vegetation on Danish commons. Biologiske Skrifter, 5:1–34, 1948.

    Google Scholar 

  54. J Roger Bray and John T Curtis. An ordination of the upland forest communities of southern Wisconsin. Ecological Monographs, 27(4):325–349, 1957.

    Google Scholar 

  55. Paul J Somerfield. Identification of the Bray-Curtis similarity index: Comment on Yoshioka (2008). Marine Ecology Progress Series, 372:303–306, 2008.

    Google Scholar 

  56. Andrew R Leach and Valerie J Gillet. An introduction to chemoinformatics. Springer Science & Business Media, 2007.

    Google Scholar 

  57. Godfrey N Lance and William T Williams. Computer programs for hierarchical polythetic classification (“similarity analyses”). The Computer Journal, 9(1):60–64, 1966.

    Google Scholar 

  58. Giuseppe Jurman, Samantha Riccadonna, Roberto Visintainer, and Cesare Furlanello. Canberra distance on ranked lists. In Proceedings of Advances in Ranking NIPS 09 Workshop, pages 22–27, 2009.

    Google Scholar 

  59. Luis J Alías, Ana Hurtado, and Vicente Palmer. Comparison theory of Lorentzian distance with applications to spacelike hypersurfaces. In Physics and Mathematics of Gravitation: Proceedings of the Spanish Relativity Meeting 2008, volume 1122, pages 91–98. AIP Publishing, 2009.

    Google Scholar 

  60. Lee R Dice. Measures of the amount of ecologic association between species. Ecology, 26(3):297–302, 1945.

    Google Scholar 

  61. András Schubert and András Telcs. A note on the Jaccardized Czekanowski similarity index. Scientometrics, 98(2):1397–1399, 2014.

    Article  Google Scholar 

  62. J Motyka, B Dobrzanski, S Zawadzki, et al. Preliminary studies on meadows in the south-east of Lublin province. Ann. Univ. Mariae Curie-Sklodowska 5E., pages 367–447, 1950.

    Google Scholar 

  63. Edward W Beals. Bray-Curtis ordination: An effective strategy for analysis of multivariate ecological data. Advances in Ecological Research, 14(1):55, 1984.

    Google Scholar 

  64. Alan H Lipkus. A proof of the triangle inequality for the Tanimoto distance. Journal of Mathematical Chemistry, 26(1-3):263–265, 1999.

    Google Scholar 

  65. Benamin S Duran and Patrick L Odell. Cluster analysis: A survey, volume 100 of lecture notes in economics and mathematical systems. Springer Berlin, 1974.

    Google Scholar 

  66. Naftali Tishby, Fernando C Pereira, and William Bialek. The information bottleneck method. arXiv preprint physics/0004057, 2000.

    Google Scholar 

  67. Periklis Andritsos, Panayiotis Tsaparas, Renée J Miller, and Kenneth C Sevcik. Limbo: Scalable clustering of categorical data. In International Conference on Extending Database Technology, pages 123–146. Springer, 2004.

    Google Scholar 

  68. PA Bromiley, NA Thacker, and E Bouhova-Thacker. Shannon entropy, Renyi entropy, and information. Technical Report 93, School of Cancer and Imaging Sciences, University of Manchester, UK, 2004.

    Google Scholar 

  69. Tim Van Erven and Peter Harremoës. Rényi divergence and Kullback-Leibler divergence. IEEE Transactions on Information Theory, 60(7):3797–3820, 2014.

    Article  MathSciNet  MATH  Google Scholar 

  70. Solomon Kullback and Richard A Leibler. On information and sufficiency. The annals of Mathematical Statistics, 22(1):79–86, 1951.

    Google Scholar 

  71. Dominik Maria Endres and Johannes E Schindelin. A new metric for probability distributions. IEEE Transactions on Information theory, 49(7):1858–1860, 2003.

    Google Scholar 

  72. Allan D Gordon. Cluster validation. In Data Science, Classification, and Related Methods, pages 22–39. Springer, 1998.

    Google Scholar 

  73. F James Rohlf. Consensus indices for comparing classifications. Mathematical Biosciences, 59(1):131–144, 1982.

    Google Scholar 

  74. Anil K Jain and Richard C Dubes. Algorithms for clustering data. Prentice-Hall, 1988.

    Google Scholar 

  75. Noam Slonim and Naftali Tishby. Document clustering using word clusters via the information bottleneck method. In Proceedings of the 23rd annual International ACM SIGIR Conference on Research and Development in Information Retrieval, pages 208–215. ACM, 2000.

    Google Scholar 

  76. Ja-Shen Chen, Russell KH Ching, and Yi-Shen Lin. An extended study of the k-means algorithm for data clustering and its applications. Journal of the Operational Research Society, pages 976–987, 2004.

    Google Scholar 

  77. Dau Pelleg and Andrew Moore. X-means: Extending k-means with efficient estimation of the number of clusters. In Proceedings of the 17th International Conf. on Machine Learning, pages 727–734. Morgan Kaufmann, 2000.

    Google Scholar 

  78. Anthony J Bagnall and Gareth J Janacek. Clustering time series from ARMA models with clipped data. In Proceedings of the Tenth ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, pages 49–58. ACM, 2004.

    Google Scholar 

  79. Steven J Phillips. Acceleration of k-means and related clustering algorithms. In Algorithm Engineering and Experiments, pages 166–177. Springer, 2002.

    Google Scholar 

  80. Scott Kirkpatrick, Mario P Vecchi, et al. Optimization by simulated annealing. Science, 220(4598):671–680, 1983.

    Google Scholar 

  81. Diego Doval, Spiros Mancoridis, and Brian S Mitchell. Automatic clustering of software systems using a genetic algorithm. In Proceedings of Software Technology and Engineering Practice, STEP’99, pages 73–81. IEEE, 1999.

    Google Scholar 

  82. Spiros Mancoridis, Brian S Mitchell, Yihfarn Chen, and Emden R Gansner. Bunch: A clustering tool for the recovery and maintenance of software system structures. In Proceedings of IEEE International Conference on Software Maintenance, 1999 (ICSM’99), pages 50–59. IEEE, 1999.

    Google Scholar 

  83. Saeed Parsa and Omid Bushehrian. A new encoding scheme and a framework to investigate genetic clustering algorithms. Journal of Research and Practice in Information Technology, 37(1):127, 2005.

    Google Scholar 

  84. Kiarash Mahdavi. A clustering genetic algorithm for software modularisation with a multiple hill climbing approach. PhD thesis, Brunel University, UK, 2005.

    Google Scholar 

  85. Kiarash Mahdavi, Mark Harman, and Robert Mark Hierons. A multiple hill climbing approach to software module clustering. In Proceedings of International Conference on Software Maintenance, 2003, ICSM 2003, pages 315–324. IEEE, 2003.

    Google Scholar 

  86. Robert R Bush and Frederick Mosteller. Stochastic models for learning. John Wiley & Sons, Inc., 1955.

    Google Scholar 

  87. A Cincotti, V Cutello, and M Pavone. Graph partitioning using genetic algorithms with ODPX. In Evolutionary Computation, CEC’02. Proceedings of the 2002 Congress on, volume 1, pages 402–406. IEEE, 2002.

    Google Scholar 

  88. Pedro Larranaga and Jose A Lozano. Estimation of Distribution Algorithms: A New Tool for Evolutionary Computation, volume 2. Springer Science & Business Media, 2002.

    Google Scholar 

  89. Esmaeil Atashpaz-Gargari and Caro Lucas. Imperialist competitive algorithm: An algorithm for optimization inspired by imperialistic competition. In Evolutionary Computation, CEC 2007, pages 4661–4667. IEEE Congress on, 2007.

    Google Scholar 

  90. James Kennedy. Particle swarm optimization. In Encyclopedia of Machine Learning, pages 760–766. Springer, 2011.

    Google Scholar 

  91. Marco Dorigo and Thomas Stützle. The ant colony optimization metaheuristic: Algorithms, applications, and advances. In Handbook of Metaheuristics, pages 250–285. Springer, 2003.

    Google Scholar 

  92. Ramin Rajabioun. Cuckoo optimization algorithm. Applied soft computing, 11(8):5508–5518, 2011.

    Article  Google Scholar 

  93. Nicholas J Radcliffe and Patrick D Surry. Formal memetic algorithms. In Evolutionary computing, pages 1–16. Springer, 1994.

    Google Scholar 

  94. Dervis Karaboga. Artificial bee colony algorithm. scholarpedia, 5(3):6915, 2010.

    Google Scholar 

  95. Mohammad Fathian, Babak Amiri, and Ali Maroosi. Application of honey-bee mating optimization algorithm on clustering. Applied Mathematics and Computation, 190(2):1502–1513, 2007.

    Article  MathSciNet  MATH  Google Scholar 

  96. Grosan Crina and Abraham Ajith. Stigmergic optimization: Inspiration, technologies and perspectives. In Stigmergic optimization, pages 1–24. Springer, 2006.

    Google Scholar 

  97. Ramin Hedayatzadeh, Foad Akhavan Salmassi, Manijeh Keshtgari, Reza Akbari, and Koorush Ziarati. Termite colony optimization: A novel approach for optimizing continuous problems. In Electrical Engineering (ICEE), 2010 18th Iranian Conference on, pages 553–558. IEEE, 2010.

    Google Scholar 

  98. Szymon Łukasik and Sławomir Żak. Firefly algorithm for continuous constrained optimization tasks. In Computational Collective Intelligence. Semantic Web, Social Networks and Multiagent Systems, pages 97–106. Springer, 2009.

    Google Scholar 

  99. Muzaffar Eusuff, Kevin Lansey, and Fayzul Pasha. Shuffled frog-leaping algorithm: A memetic meta-heuristic for discrete optimization. Engineering Optimization, 38(2):129–154, 2006.

    Article  MathSciNet  Google Scholar 

  100. Budi Santosa and Mirsa Kencana Ningrum. Cat swarm optimization for clustering. In Proceedings of International Conference of Soft Computing and Pattern Recognition, SOCPAR’09, pages 54–59. IEEE, 2009.

    Google Scholar 

  101. Bo Xing and Wen-Jing Gao. Fruit fly optimization algorithm. In Innovative Computational Intelligence: A Rough Guide to 134 Clever Algorithms, pages 167–170. Springer, 2014.

    Google Scholar 

  102. Swagatam Das, Arijit Biswas, Sambarta Dasgupta, and Ajith Abraham. Bacterial foraging optimization algorithm: Theoretical foundations, analysis, and applications. In Foundations of Computational Intelligence Volume 3, pages 23–55. Springer, 2009.

    Google Scholar 

  103. XL Li. A new intelligent optimization–artificial fish swarm algorithm. Doctoral thesis, University of Zhejiang, China, 2003.

    Google Scholar 

  104. Xin-She Yang and Amir Hossein Gandomi. Bat algorithm: A novel approach for global engineering optimization. Engineering Computations, 29(5):464–483, 2012.

    Google Scholar 

  105. Bo Wang, XiaoPing Jin, and Bo Cheng. Lion pride optimizer: An optimization algorithm inspired by lion pride behavior. Science China Information Sciences, 55(10):2369–2389, 2012.

    Article  MathSciNet  MATH  Google Scholar 

  106. Shan He, Q Henry Wu, and JR Saunders. Group search optimizer: An optimization algorithm inspired by animal searching behavior. IEEE Transactions on Evolutionary Computation, 13(5):973–990, 2009.

    Google Scholar 

  107. R Oftadeh, MJ Mahjoob, and M Shariatpanahi. A novel meta-heuristic optimization algorithm inspired by group hunting of animals: Hunting search. Computers & Mathematics with Applications, 60(7):2087–2098, 2010.

    Article  MATH  Google Scholar 

  108. Fred Glover and Manuel Laguna. Tabu Search. Springer, 2013.

    Google Scholar 

  109. Jinn-Tsong Tsai, Tung-Kuan Liu, and Jyh-Horng Chou. Hybrid Taguchi-genetic algorithm for global numerical optimization. IEEE Transactions on Evolutionary Computation, 8(4):365–377, 2004.

    Article  Google Scholar 

  110. Carlos A Coello Coello and Ricardo Landa Becerra. Efficient evolutionary optimization through the use of a cultural algorithm. Engineering Optimization, 36(2):219–236, 2004.

    Google Scholar 

  111. Licheng Jiao, Jing Liu, and Weicai Zhong. An organizational coevolutionary algorithm for classification. IEEE Transactions on Evolutionary Computation, 10(1):67–80, 2006.

    Article  Google Scholar 

  112. Thomas Bäck, David B Fogel, and Zbigniew Michalewicz. Evolutionary computation 1: Basic algorithms and operators, volume 1. CRC Press, 2000.

    Google Scholar 

  113. Alireza Farasat, Mohammad B Menhaj, Taha Mansouri, and Mohammad Reza Sadeghi Moghadam. Aro: A new model-free optimization algorithm inspired from asexual reproduction. Applied Soft Computing, 10(4):1284–1292, 2010.

    Google Scholar 

  114. John E Hunt and Denise E Cooke. Learning using an artificial immune system. Journal of Network and Computer Applications, 19(2):189–212, 1996.

    Google Scholar 

  115. Amir Hossein Gandomi and Amir Hossein Alavi. Krill herd: A new bio-inspired optimization algorithm. Communications in Nonlinear Science and Numerical Simulation, 17(12):4831–4845, 2012.

    Google Scholar 

  116. David Scheel and Craig Packer. Group hunting behaviour of lions: A search for cooperation. Animal Behaviour, 41(4):697–709, 1991.

    Article  Google Scholar 

  117. Stuart Russell, Peter Norvig, and Intelligence. Artificial intelligence: A modern approach. Prentice-Hall, Englewood Cliffs, 25:27, 1995.

    Google Scholar 

  118. MH Tayarani and Mohammad Reza Akbarzadeh-T. Magnetic optimization algorithms a new synthesis. In IEEE Congress on Evolutionary Computation, CEC 2008, (IEEE World Congress on Computational Intelligence), pages 2659–2664. IEEE, 2008.

    Google Scholar 

  119. Stefan Boettcher and Allon G Percus. Extremal optimization: Methods derived from co-evolution. arXiv preprint math/9904056, 1999.

    Google Scholar 

  120. Stefan Boettcher and Allon G Percus. Extremal optimization: An evolutionary local-search algorithm. In Computational Modeling and Problem Solving in the Networked World, pages 61–77. Springer, 2003.

    Google Scholar 

  121. Zong Woo Geem, Joong Hoon Kim, and GV Loganathan. A new heuristic optimization algorithm: Harmony search. Simulation, 76(2):60–68, 2001.

    Google Scholar 

  122. Wolfgang Banzhaf, Peter Nordin, Robert E Keller, and Frank D Francone. Genetic Programming: An introduction, volume 1. Morgan Kaufmann San Francisco, 1998.

    Google Scholar 

  123. Joshua Knowles and David Corne. The Pareto archived evolution strategy: A new baseline algorithm for Pareto multiobjective optimisation. In Proceedings of the 1999 Congress on Evolutionary Computation, CEC 99, volume 1. IEEE, 1999.

    Google Scholar 

  124. Thomas Back. Evolutionary Algorithms in Theory and Practice: Evolution Strategies, Evolutionary Programming, Genetic Algorithms. Oxford university press, 1996.

    Google Scholar 

  125. Rainer Storn and Kenneth Price. Differential evolution–a simple and efficient heuristic for global optimization over continuous spaces. Journal of global optimization, 11(4):341–359, 1997.

    Article  MathSciNet  MATH  Google Scholar 

  126. Michael Siff and Thomas Reps. Identifying modules via concept analysis. IEEE Transactions on Software Engineering, 25(6):749–768, 1999.

    Article  Google Scholar 

  127. Miroslav Fiedler. Algebraic connectivity of graphs. Czechoslovak Mathematical Journal, 23(2):298–305, 1973.

    MathSciNet  MATH  Google Scholar 

  128. Spiros Xanthos. Clustering object-oriented software systems using spectral graph partitioning. Urbana, 51:61801, 2006.

    Google Scholar 

  129. Janardan Misra, K. M. Annervaz, Vikrant S. Kaulgud, Shubhashis Sengupta, and Gary Titus. Java source-code clustering: Unifying syntactic and semantic features. ACM SIGSOFT Software Engineering Notes, 37(6):1–8, 2012.

    Google Scholar 

  130. Gerard Salton and Donna Harman. Information retrieval. Wiley, 2003.

    Google Scholar 

  131. Thomas K Landauer. Latent semantic analysis. Wiley, 2006.

    Google Scholar 

  132. Thomas K Landauer, Peter W Foltz, and Darrell Laham. An introduction to latent semantic analysis. Discourse processes, 25(2-3):259–284, 1998.

    Google Scholar 

  133. Jian Feng Cui and Heung Seok Chae. Applying agglomerative hierarchical clustering algorithms to component identification for legacy systems. Information and Software technology, 53(6):601–614, 2011.

    Google Scholar 

  134. Vassilios Tzerpos and Richard C Holt. ACDC: An algorithm for comprehension-driven clustering. In Proceedings of Reverse Engineering, 7th Working Conference, pages 258–267. IEEE, 2000.

    Google Scholar 

  135. Zhihua Wen and Vassilios Tzerpos. An effectiveness measure for software clustering algorithms. In Proceedings of Program Comprehension, 12th IEEE International Workshop, pages 194–203. IEEE, 2004.

    Google Scholar 

  136. Nicolas Anquetil and Timothy C Lethbridge. Experiments with clustering as a software remodularization method. In Proceedings of Reverse Engineering, Sixth Working Conference, pages 235–255. IEEE, 1999.

    Google Scholar 

  137. Brian S Mitchell and Spiros Mancoridis. Comparing the decompositions produced by software clustering algorithms using similarity measurements. In Proceedings of the IEEE International Conference on Software Maintenance (ICSM’01), page 744. IEEE Computer Society, 2001.

    Google Scholar 

  138. R López De Mántaras. A distance-based attribute selection measure for decision tree induction. Machine learning, 6(1):81–92, 1991.

    Google Scholar 

  139. James S Farris. On the cophenetic correlation coefficient. Systematic Biology, 18(3):279–285, 1969.

    Google Scholar 

  140. Peter J Rousseeuw. Silhouettes: A graphical aid to the interpretation and validation of cluster analysis. Journal of Computational and Applied Mathematics, 20:53–65, 1987.

    Google Scholar 

  141. Maria Halkidi, Yannis Batistakis, and Michalis Vazirgiannis. Clustering validity checking methods: Part ii. ACM Sigmod Record, 31(3):19–27, 2002.

    Article  MATH  Google Scholar 

  142. Mohamed Zaït and Hammou Messatfa. A comparative study of clustering methods. Future Generation Computer Systems, 13(2):149–159, 1997.

    Article  Google Scholar 

  143. Joseph C Dunn. Well-separated clusters and optimal fuzzy partitions. Journal of cybernetics, 4(1):95–104, 1974.

    Google Scholar 

  144. Katerina Goševa-Popstojanova and Kishor S Trivedi. Architecture-based approach to reliability assessment of software systems. Performance Evaluation, 45(2):179–204, 2001.

    Google Scholar 

  145. Jean-Claude Laprie and Karama Kanoun. Software reliability and system reliability. In Handbook for Software Reliability Engineering, pages 27–69. McGraw-Hill, 1996.

    Google Scholar 

  146. Swapna S Gokhale and Kishor S Trivedi. Analytical models for architecture-based software reliability prediction: A unification framework. IEEE Transactions on Reliability, 55(4):578–590, 2006.

    Google Scholar 

  147. Peter Kubat. Assessing reliability of modular software. Operations Research Letters, 8(1):35–41, 1989.

    Article  MathSciNet  MATH  Google Scholar 

  148. Anthony Y Wei and Roy Harold Campbell. Instruction of a fault-tolerant real-time software system. Department of Computer Science, University of Illinois, Urbana-Champaign, 1980.

    Google Scholar 

  149. Lorrie A Tomek, Jogesh K Muppala, and Kishor S Trivedi. Modeling correlation in software recovery blocks. IEEE Transactions on Software Engineering, 19(11):1071–1086, 1993.

    Google Scholar 

  150. Nicolas Privault. Discrete-time Markov chains. In Understanding Markov Chains, pages 77–94. Springer, 2013.

    Google Scholar 

  151. Kishor S Trivedi. Probability and Statistics with Reliability, Queuing and Computer Science Applications. Wiley, 2008.

    Google Scholar 

  152. Michael Borenstein and Jacob Cohen. Statistical Power Analysis: A Computer Program. Lawrence Erlbaum, 1988.

    Google Scholar 

  153. Swapna S Gokhale and Kishor S Trivedi. Dependency characterization in path-based approaches to architecture-based software reliability prediction. In Proceedings of Application-Specific Software Engineering Technology, 1998. ASSET-98. IEEE Workshop, pages 86–89. IEEE, 1998.

    Google Scholar 

  154. Ivan Victor Krsul. Software vulnerability analysis. PhD thesis, Purdue University, West Lafayette, USA, 1998.

    Google Scholar 

  155. Greg Hoglund and Gary McGraw. Exploiting software: How to break code. Pearson Education India, 2004.

    Google Scholar 

  156. Frank Tsui, Orlando Karam, and Barbara Bernal. Essentials of Software Engineering. Jones & Bartlett Publishers, 2013.

    Google Scholar 

  157. Joseph P Kearney, Robert L Sedlmeyer, William B Thompson, Michael A Gray, and Michael A Adler. Software complexity measurement. Communications of the ACM, 29(11):1044–1050, 1986.

    Google Scholar 

  158. Nachiappan Nagappan, Thomas Ball, and Andreas Zeller. Mining metrics to predict component failures. In Proceedings of the 28th International Conference on Software Engineering, pages 452–461. ACM, 2006.

    Google Scholar 

  159. Hongyu Zhang, Xiuzhen Zhang, and Ming Gu. Predicting defective software components from code complexity measures. In Dependable Computing, 2007. PRDC 2007. 13th Pacific Rim International Symposium on, pages 93–96. IEEE, 2007.

    Google Scholar 

  160. Giancarlo Succi, Witold Pedrycz, Milorad Stefanovic, and James Miller. Practical assessment of the models for identification of defect-prone classes in object-oriented commercial systems using design metrics. Journal of Systems and Software, 65(1):1–12, 2003.

    Article  Google Scholar 

  161. Tim Menzies, Jeremy Greenwald, and Art Frank. Data mining static code attributes to learn defect predictors. IEEE Transactions on Software Engineering, 33(1):2–13, 2007.

    Article  Google Scholar 

  162. A Güneş Koru and Jeff Tian. An empirical comparison and characterization of high defect and high complexity modules. Journal of Systems and Software, 67(3):153–163, 2003.

    Google Scholar 

  163. Andrea Janes, Marco Scotto, Witold Pedrycz, Barbara Russo, Milorad Stefanovic, and Giancarlo Succi. Identification of defect-prone classes in telecommunication software systems using design metrics. Information Sciences, 176(24):3711–3734, 2006.

    Article  Google Scholar 

  164. Karim O Elish and Mahmoud O Elish. Predicting defect-prone software modules using support vector machines. Journal of Systems and Software, 81(5):649–660, 2008.

    Google Scholar 

  165. Istehad Chowdhury, Brian Chan, and Mohammad Zulkernine. Security metrics for source code structures. In Proceedings of the fourth International workshop on Software Engineering for Secure Systems, pages 57–64. ACM, 2008.

    Google Scholar 

  166. Varadachari Sudan Ayanam. Software Security Vulnerability vs Software Coupling: A Study with empirical evidence. PhD thesis, Southern Polytechnic State University, 2009.

    Google Scholar 

  167. Istehad Chowdhury and Mohammad Zulkernine. Using complexity, coupling, and cohesion metrics as early indicators of vulnerabilities. Journal of Systems Architecture, 57(3):294–313, 2011.

    Article  Google Scholar 

  168. Ayaz Isazadeh, Islam Elgedawy, Jaber Karimpour, and Habib Izadkhah. An analytical security model for existing software systems. Appl. Math, 8(2):691–702, 2014.

    Google Scholar 

  169. Alexander Ivanov Sotirov. Automatic vulnerability detection using static source code analysis. PhD thesis, The University of Alabama TUSCALOOSA, 2005.

    Google Scholar 

  170. Vibhu Saujanya Sharma and Kishor S Trivedi. Quantifying software performance, reliability and security: An architecture-based approach. Journal of Systems and Software, 80(4):493–509, 2007.

    Google Scholar 

  171. Amrit L Goel. Software reliability models: Assumptions, limitations, and applicability. IEEE Transactions on Software Engineering, (12):1411–1423, 1985.

    Google Scholar 

  172. Saileshwar Krishnamurthy and Aditya P Mathur. On the estimation of reliability of a software system using reliabilities of its components. In Proceedings of 8th International Symposium on Software Reliability Engineering, pages 146–155. IEEE, 1997.

    Google Scholar 

  173. Dick Hamlet, Dave Mason, and Denise Woit. Theory of software reliability based on components. In Proceedings of the 23rd International Conference on Software Engineering, pages 361–370. IEEE Computer Society, 2001.

    Google Scholar 

  174. Roger C Cheung. A user-oriented software reliability model. IEEE Transactions on Software Engineering, (2):118–125, 1980.

    Google Scholar 

  175. Swapna S Gokhale and Kishor S Trivedi. Reliability prediction and sensitivity analysis based on software architecture. In Proceedings of Software Reliability Engineering, ISSRE 2003. 13th International Symposium, pages 64–75. IEEE, 2002.

    Google Scholar 

  176. S Gokhale. Accurate reliability prediction based on software structure. In Proceedings of IASTED Conference on Software Engineering and Applications (SEA 03), 2003.

    Google Scholar 

  177. Amrit L Goel and Kazu Okumoto. Time-dependent error-detection rate model for software reliability and other performance measures. IEEE transactions on Reliability, 3:206–211, 1979.

    Google Scholar 

  178. Wen-Li Wang, Ye Wu, and Mei-Hwa Chen. An architecture-based software reliability model. In Proceedings of Dependable Computing, Pacific Rim International Symposium, pages 143–150. IEEE, 1999.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Rights and permissions

Reprints and permissions

Copyright information

© 2017 Springer International Publishing AG

About this chapter

Cite this chapter

Isazadeh, A., Izadkhah, H., Elgedawy, I. (2017). Introduction. In: Source Code Modularization. Springer, Cham. https://doi.org/10.1007/978-3-319-63346-6_1

Download citation

  • DOI: https://doi.org/10.1007/978-3-319-63346-6_1

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-319-63344-2

  • Online ISBN: 978-3-319-63346-6

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics