Skip to main content
Log in

Mining Reusable Software Components from Object-Oriented Source Code using Discrete PSO and Modeling Them as Java Beans

  • Published:
Information Systems Frontiers Aims and scope Submit manuscript

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.

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

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Institutional subscriptions

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5
Fig. 6
Fig. 7
Fig. 8
Fig. 9

Similar content being viewed by others

Notes

  1. https://www.javaworld.com/article/2077032/building-a-bevy-of-beans--create-reusable-javabeans-components.html

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.

    Google Scholar 

  • Baeza-Yates, R.A., & Ribeiro-Neto, B. (1999). Modern information retrieval. Boston: Addison-Wesley Longman Publishing Co., Inc.

    Google Scholar 

  • 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.

    Google Scholar 

  • 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.

    Article  Google Scholar 

  • 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.

    Article  Google Scholar 

  • 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.

    Google Scholar 

  • 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.

    Google Scholar 

  • 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.

    Article  Google Scholar 

  • 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.

    Google Scholar 

  • 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.

    Google Scholar 

  • Prajapati, A., & Chhabra, J.K. (2017). Improving modular structure of software system using structural and lexical dependency. Information &, Software Technology, 82, 96–120.

    Google Scholar 

  • 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.

    Google Scholar 

  • 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.

    Google Scholar 

  • 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.

    Article  Google Scholar 

  • 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.

    Google Scholar 

  • 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.

    Google Scholar 

  • 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.

    Google Scholar 

  • Rathee, A., & Chhabra, J.K. (2019). A multi-objective search based approach to identify reusable software components. Journal of Computer Languages, 52, 26–43.

    Google Scholar 

  • 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.

    Google Scholar 

  • 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.

    Google Scholar 

  • 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.

    Google Scholar 

  • 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.

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Amit Rathee.

Additional information

Publisher’s Note

Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.

Rights and permissions

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

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

Download citation

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s10796-019-09948-4

Keywords

Navigation