A method for identifying software components based on Non-dominated Sorting Genetic Algorithm

Authors

Abstract

Identifying the appropriate software components in the software design phase is a vital task in the field of software engineering and is considered as an important way to increase the software maintenance capability. Nowadays, many methods for identifying components such as graph partitioning and clustering are presented, but most of these methods are based on expert opinion and have poor accuracy. One of the reasons for inaccuracy of the component identification methods is the lack of attention to the fact that there are contradictions between the criteria used to recognizing a component, which to be compromised during the identification process. In this paper, a novel method based on non-dominated sorting genetic algorithm (NSGAII) is proposed to map the software component detection problem into a multi-objective optimization one. The proposed method uses the criteria of cohesions, coupling and complexity in order to identify the appropriate components. In this paper, a real study system (customers club) has been used to evaluate the proposed method. The results of the evaluation revealed that the use of the proposed multi-objective algorithm has been able to perform better than previous single-objective methods.

Keywords


  1. [1] Gholamshahi, S., Hasheminejad, S. M. H.. “Software component identification and selection: A research review”, Software: Practice and Experience, Vol. 49, No. 1, pp.40-692, 2019. [2] Kim, J., Park, S., Sugumaran, V., “DRAMA: a framework for domain requirements analysis and modeling architectures in software product lines”, Journal of Systems and Software, Vol. 81 No. 1, pp.37-55, 2008. [3] Shahmohammadi, G., Jalili S., Hasheminejad S. M. H., “Identification of system software components using clustering approach”. J Object Technol, Vol. 9, No. 6, pp.77‐98, 2010. [4] Albani, A., Overhage, S., Birkmeier, D., “Towards a systematic method for identifying business components”, In Proceedings of CBSE, LNCS 5282, Vol. 1, pp.262–277, 2008. doi: 10.1007/978-3-540-87891-9_17. [5] Lee, S.D., Yang, Y.J., Cho, E.S., Kim, S.D., Rhew, S.Y., “COMO: A UMLBased Component Development Methodology”, In Proceedings of the 6th Asia Pacific Software Engineering Conference, Washingt on, DC, USA, IEEE Computer Society, Los Alamitos, pp.54-61, 1999. doi: 10.1109/APSEC.1999.809584. [6] Ganesan, R., Sengupta, S., “O2BC: a Technique for the Design of Component-Based Applications”, In Proceedings of the 39th International Conference and Exhibition on Technology of Object-Oriented Languages and Systems, pp.46-55, 2001. doi: 10.1109/TOOLS.2001.941658. [7] Hamza, H. S., "A Framework for Identifying Reusable Software Components Using Formal Concept Analysis", in Proceeding of the 6th International Conference on Information Technology: New Generations, 2009, pp. 813-818. [8] Räihä, O., "A survey on search-based software design", Computer Science Review, Vol. 4, pp. 203-249, 2010. [9] Hashemi, S. H., Shahmohammadi, G.R., “Detection system software components using a hybrid algorithm”, ANDRIAS J., Vol. 40, No. 2, pp.57‐63, 2015. [10] Ahmadzadeh, M., Shahmohammadi G. R., Shayesteh, M., “Identification of software systems components using a self‐organizing map competitive artificial neural network based on cohesion and coupling”. ANDRIAS J., Vol. 40, No. 3, pp.642‐651, 2016. [11] Deb, K., Pratap, A., Agarwal, S., Meyarivan T., "A fast and elitist multiobjective genetic algorithm: NSGA-II", In IEEE Transactions on Evolutionary Computation, Vol. 6, No. 2, pp.182-197, Apr 2002. [12] Hasheminejad, S.M.H., Jalili S., “CCIC: Clustering analysis classes to identify software components”, In Journal of Information and Software Technology, Vol. 57, pp.329-351, 2015. [13] Hasheminejad, S. M. H., Jalili, S., “SCI-GA: Software Component Identification using Genetic Algorithm”, In Journal of Object Technology (JOT), Vol. 12, No. 2, pp.1-34, 2013. doi:10.5381/jot.2013.12.2.a3. [14] Chidamber, S. R., Kemerer, C. F., “A metrics suite for object oriented design”, In Journal IEEE Transactions on Software Engineering, Vol. 20, No. 6, pp.476–493, 1994. [15] Gorton, I., Essential software architecture, Vol. 14. Springer, 2006. [16] Zuse, H., Software complexity: measures and methods, Walter de Gruyter & Co., 1990. [17] Bruegge, B., Dutoit, A. H., Object-Oriented Software Engineering Using UML, Patterns and Java, Prentice Hall, 2004. [18] Karner, G., Resource Estimation for Objectory Projects, Objectory Systems, 1993. [19] AlSharif, M., Bond, W.P., Al-Otaiby, T., “Assessing the Complexity of Software Architecture”, In Proceedings of the 42nd annual Southeast regional conference, ACM, pp.98-103, 2004. doi:10.1145/986537.986562. [20] Tzerpos V., Holt R.C., “MoJo: A distance metric for software clustering”. In Proceedings of the 6th Working Conference on Reverse Engineering, pp.187-193, 1999. doi: 10.1109/WCRE.1999.806959 [21] Hasheminejad, S.M.H., Jalili, S., “An Evolutionary Approach to Identify Logical Components”, In Journal of Systems and Software, Vol. 96, No.1, 2014, pp.24–50. doi: https://doi.org/10.1016/j.jss.2014.05.033