Abstract
Object-based software development in the IT-industry during the last decade has focused on reusing the already developed elements. Current software development models and technologies promote software reuse by utilizing component-oriented programming. Component-oriented programming provides more effective reuse as compared to its object-oriented language counterpart. This is because a component provides more abstractness in terms of the functionality in contrast to the object-oriented software element (e.g. class/ interface). The component-based development is highly dependent on the availability of the component library that contains well-defined and already tested functionality in terms of the available components. However, the suitable availability of such component library is still a problem. The lack of a suitable component library is tackled either by designing new components from scratch or by identifying them from the existing software systems. These identified components must be transformed as per component models, such as a Java Bean, in order to increase software reuse and faster software development, and little research has been carried out in this direction. Although many approaches have been proposed to identify components from existing systems and build a component library. But, such approaches lack in transforming the identified components as per specifications of a component model. Further identification of reusable elements also needs to be more accurate and efficient. Accuracy is dependent on the structural and semantic properties of a component. A component can consist of a single or a group of individual elements of the software, and thus identifying components from a set of all elements becomes an exponentially growing problem. Such problems can be more efficiently solved using metaheuristic algorithms. Therefore, this paper targets identifying accurately the components from a singular existing software system and transform those identified components to the Java Bean component model standard. The component identification approach of this paper is based on clustering the underlying software system by utilizing a metaheuristic search-based PSO algorithm. The clusters are identified as a group containing 2/ 3/ 4 software elements. Moreover, the used fitness function is based on the structural (based on usage for member variables) and semantic relations belonging to a software. Since the PSO algorithm is generally applied to continuous problems, whereas our formulated component identification problem is discrete (due to the representation of particles) in nature. Therefore, we have also provided a mechanism through which the PSO algorithm is modified to become applicable to discrete problems. From the obtained clusters (components), the interfaces of the components are identified by identifying independent chains in call-graphs of the underlying components. Finally, these components are transformed as per the Java Bean component model specifications. The proposed approach is validated experimentally on 7 open-source object-oriented Java software systems and results are compared with competitive approaches. The obtained results confirm the correctness of the transformed component and hence their reusability.
Similar content being viewed by others
References
Allier, S., Sadou, S., Sahraoui, H., Fleurquin, R. (2011). From object-oriented applications to component-oriented applications via component-oriented architecture. In 2011 Ninth working IEEE/IFIP conference on software architecture (pp. 214–223), DOI https://doi.org/10.1109/WICSA.2011.35.
Alshara, Z., Seriai, A.D., Tibermacine, C., Bouziane, H.L., Dony, C., Shatnawi, A. (2015). Migrating large object-oriented applications into component-based ones: instantiation and inheritance transformation. SIGPLAN Not., 51(3), 55–64.
Baeza-Yates, R.A., & Ribeiro-Neto, B. (1999). Modern information retrieval. Boston: Addison-Wesley Longman Publishing Co., Inc.
Bavota, G., Carnevale, F., De Lucia, A., Di Penta, M., Oliveto, R. (2012). Putting the developer in-the-loop: an interactive ga for software re-modularization. In Fraser, G., & Teixeira de Souza, J. (Eds.) Search based software engineering (pp. 75–89). Berlin: Springer.
Birkmeier, D., & Overhage, S. (2009). On component identification approaches – classification, state of the art, and comparison. In Lewis, G. A., Poernomo, I., Hofmeister, C. (Eds.) Component-based software engineering (pp. 1–18). Berlin: Springer.
Chardigny, S., Seriai, A., Oussalah, M., Tamzalit, D. (2008). Extraction of component-based architecture from object-oriented systems. In Seventh working IEEE/IFIP conference on software architecture (WICSA 2008) (pp. 285–288), DOI https://doi.org/10.1109/WICSA.2008.44.
von Detten, M., Platenius, M.C., Becker, S. (2014). Reengineering component-based software systems with archimetrix. Software &, Systems Modeling, 13(4), 1239–1268.
Ducasse, S., & Pollet, D. (2009). Software architecture reconstruction: a process-oriented taxonomy. IEEE Transactions on Software Engineering, 35(4), 573–591. https://doi.org/10.1109/TSE.2009.19.
Emmerich, W., & Kaveh, N. (2001). Component technologies: Java beans, com, corba, rmi, ejb and the corba component model. SIGSOFT Softw. Eng. Notes, 26(5), 311–312. https://doi.org/10.1145/503271.503259.
Garriga, M., Renzis, A.D., Lizarralde, I., Flores, A., Mateos, C., Cechich, A., Zunino, A. (2018). A structural-semantic web service selection approach to improve retrievability of web services. Information Systems Frontiers, 20(6), 1319–1344.
Gong, C., Chen, H., He, W., Zhang, Z. (2017). Improved multi-objective clustering algorithm using particle swarm optimization. In Plos one.
Hamdouni, A.E., Seriai, A., Huchard, M. (2010). Component-based architecture recovery from object oriented systems via relational concept analysis. In Proceedings of the 7th international conference on concept lattices and their applications, Sevilla, Spain, October 19-21, 2010, pp. 259–270.
Hamza, S., Sadou, S., Fleurquin, R. (2013). Measuring qualities for osgi component-based applications. In 2013 13Th international conference on quality software (pp. 25–34), DOI https://doi.org/10.1109/QSIC.2013.42.
Heisel, M., Santen, T., Souquières, J. (2002). On the specification of components - the JavaBeans example. Intern report A02-R-025 —– heisel02a. https://hal.inria.fr/inria-00107634. Rapport interne.
Ilk, N., Zhao, J.L., Goes, P., Hofmann, P. (2011). Semantic enrichment process: an approach to software component reuse in modernizing enterprise systems. Information Systems Frontiers, 13(3), 359–370.
Kebir, S., Seriai, A.D., Chardigny, S., Chaoui, A. (2012). Quality-centric approach for software component identification from object-oriented code. In 2012 Joint working IEEE/IFIP conference on software architecture and european conference on software architecture (pp. 181–190).
Kessel, M., & Atkinson, C. (2016). Ranking software components for reuse based on non-functional properties. Information Systems Frontiers, 18(5), 825–853. https://doi.org/10.1007/s10796-016-9685-3.
Lorenz, D.H., & Vlissides, J. (2001). Designing components versus objects: a transformational approach. In Proceedings of the 23rd international conference on software engineering. ICSE 2001 (pp. 253–263), DOI https://doi.org/10.1109/ICSE.2001.919099.
Martin, R.C. (2003). Agile software development: principles, patterns, and practices. Upper Saddle River: Prentice Hall PTR.
Mitchell, B.S. (2003). A heuristic approach to solving the software clustering problem. In International conference on software maintenance, 2003. ICSM 2003. Proceedings (pp. 285–288).
Mu, L., Sugumaran, V., Wang, F. (2019). A hybrid genetic algorithm for software architecture re-modularization. Information Systems Frontiers.
Nebro, A.J., Durillo, J.J., Coello Coello, C.A., Luna, F., Alba, E. (2008). A study of convergence speed in multi-objective metaheuristics. In Rudolph, G., Jansen, T., Beume, N., Lucas, S., Poloni, C. (Eds.) Parallel problem solving from nature – PPSN X (pp. 763–772). Berlin: Springer.
Praditwong, K., Harman, M., Yao, X. (2011). Software module clustering as a multi-objective search problem. IEEE Transactions on Software Engineering, 37(2), 264–282.
Prajapati, A., & Chhabra, J.K. (2017). Improving modular structure of software system using structural and lexical dependency. Information &, Software Technology, 82, 96–120.
Prajapati, A., & Chhabra, J.K. (2018). FP-ABC: fuzzy-pareto dominance driven artificial bee colony algorithm for many-objective software module clustering. Computer Languages, Systems &, Structures, 51, 1–21.
Prajapati, A., & Chhabra, J.K. (2018). Many-objective artificial bee colony algorithm for large-scale software module clustering problem. Soft Comput., 22(19), 6341–6361.
Prajapati, A., & Chhabra, J.K. (2018). A particle swarm optimization-based heuristic for software module clustering problem. Arabian Journal for Science and Engineering, 43(12), 7083–7094. https://doi.org/10.1007/s13369-017-2989-x.
Prajapati, A., & Chhabra, J.K. (2019). Information-theoretic remodularization of object-oriented software systems. Information Systems Frontiers .
Prajapati, A., & Chhabra, J.K. (2019). Madhs: many-objective discrete harmony search to improve existing package design. Computational Intelligence, 35(1), 98–123.
Rathee, A., & Chhabra, J.K. Singh, D., Raman, B., Luhach, A. K., Lingras, P. (Eds.). (2017). Software remodularization by estimating structural and conceptual relations among classes and using hierarchical clustering. Singapore: Springer.
Rathee, A., & Chhabra, J.K. (2018a). Clustering for software remodularization by using structural, conceptual and evolutionary. Journal of Universal Computer Science, 24(12), 1731–1757.
Rathee, A., & Chhabra, J.K. (2018b). Improving cohesion of a software system by performing usage pattern based clustering. Procedia Computer Science, 125, 740–746. The 6th International Conference on Smart Computing and Communications.
Rathee, A., & Chhabra, J.K. (2019). A multi-objective search based approach to identify reusable software components. Journal of Computer Languages, 52, 26–43.
Rathee, A., & Chhabra, J.K. (2019). Reusability in multimedia softwares using structural and lexical dependencie. Multimedia Tools and Applications.
Seriai, A., Sadou, S., Sahraoui, H.A. (2014). Enactment of components extracted from an object-oriented application, (pp. 234–249). Cham: Springer.
Shan, S.M., Deng, G.S., He, Y.H. (2006). Data clustering using hybridization of clustering based on grid and density with pso. In 2006 IEEE International conference on service operations and logistics, and informatics (pp. 868–872), DOI https://doi.org/10.1109/SOLI.2006.328970.
Shatnawi, A., & Seriai, A.D. (2013). Mining reusable software components from object-oriented source code of a set of similar software. In 2013 IEEE 14th international conference on information reuse integration (IRI) (pp. 193–200), DOI https://doi.org/10.1109/IRI.2013.6642472.
Shatnawi, A., Seriai, A.D., Sahraoui, H., Alshara, Z. (2017). Reverse engineering reusable software components from object-oriented apis. Journal of Systems and Software, 131, 442–460.
Shatnawi, A., Shatnawi, H., Saied, M.A., Alshara, Z., Sahraoui, H.A., Seriai, A. (2018). Identifying components from object-oriented apis based on dynamic analysis. CoRR arXiv:1803.06235.
Sierra, M.R., & Coello Coello, C.A. (2005). Improving pso-based multi-objective optimization using crowding, mutation and dominance. In Coello Coello, C. A., Hernández Aguirre, A., Zitzler, E. (Eds.) Evolutionary multi-criterion optimization (pp. 505–519). Berlin: Springer.
Song, M., Jung, H., Yang, Y. (2002). The analysis technique for extraction of ejb component from legacy system. In In proc. 6th IASTED international conference on software engineering and applications (pp. 241–244).
Tempero, E., Anslow, C., Dietrich, J., Han, T., Li, J., Lumpe, M., Melton, H., Noble, J. (2010). The qualitas corpus: a curated collection of java code for empirical studies. In 2010 Asia pacific software engineering conference (pp. 336–345), DOI https://doi.org/10.1109/APSEC.2010.46.
Tydrichova, M. (2017). Analysis of various multi-objective optimization evolutionary algorithms for monte carlo treatment planning system. http://cds.cern.ch/record/2276909.
Washizaki, H., & Fukazawa, Y. (2005). A technique for automatic component extraction from object-oriented programs by refactoring. Science of Computer Programming, 56(1), 99–116. New Software Composition Concepts.
Yacoub, S., Ammar, H., Mili, A. (1999). Characterizing a software component. In Proceedings of the 2nd workshop on component-based software engineering, in conjunction with ICSE’99.
Author information
Authors and Affiliations
Corresponding author
Additional information
Publisher’s Note
Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.
Rights and permissions
About this article
Cite this article
Rathee, A., Chhabra, J.K. Mining Reusable Software Components from Object-Oriented Source Code using Discrete PSO and Modeling Them as Java Beans. Inf Syst Front 22, 1519–1537 (2020). https://doi.org/10.1007/s10796-019-09948-4
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10796-019-09948-4