Empirical Analysis of the Reusability of Object-Oriented Program Code in Open-Source Software
Authors: Fathi Taibi
Measuring the reusability of Object-Oriented (OO) program code is important to ensure a successful and timely adaptation and integration of the reused code in new software projects. It has become even more relevant with the availability of huge amounts of open-source projects. Reuse saves cost, increases the speed of development and improves software reliability. Measuring this reusability is not s straight forward process due to the variety of metrics and qualities linked to software reuse and the lack of comprehensive empirical studies to support the proposed metrics or models. In this paper, a conceptual model is proposed to measure the reusability of OO program code. A comprehensive set of metrics is used to compute the most significant factors of reusability and an empirical investigation is conducted to measure the reusability of the classes of randomly selected open-source Java projects. Additionally, the impact of using inner and anonymous classes on the reusability of their enclosing classes is assessed. The results obtained are thoroughly analyzed to identify the factors behind lack of reusability in open-source OO program code and the impact of nesting on it.
Digital Object Identifier (DOI): doi.org/10.5281/zenodo.1090844Procedia APA BibTeX Chicago EndNote Harvard JSON MLA RIS XML ISO 690 PDF Downloads 1821
 Al-Dallal, J. and Briand, L. C."A Precise method-method interaction-based cohesion metric for object-oriented classes,”ACM Transactions on Software Engineering and Methodology, vol. 21, no. 2, 8:1-8:34, 2012.
 Anquetil, N. and Lethbdige, T. "Assessing the Relevance of Identifier Names in Legacy System,” InProc of the Centre for Advanced Studies on Collaborative Research Conference, 1998.
 Boem, B. and Basili, V. "Software Defect Reduction Top 10 List,” Software Management, vol. 34, no. 1, pp. 135-137, 2001.
 Buse, R. and Weimer, W. "Learning a metric for code readability,” IEEE Transactions on Software Engineering, vol. 36, no. 4, pp. 546 – 558, 2010.
 Chidamber, S. and Kemerer, C. "A Metrics Suite for Object Oriented Design,” IEEE Transactions on Software Engineering, vol. 20, no. 6, pp. 476-493, 1994.
 Darcy, D. and Kemerer, C. "OO Metrics in Practice,”IEEE Software, vol. 22, no. 6, pp. 17-19, 2005.
 De-Lucia, A., Di Penta, M. and Oliveto, R. "Improving Source Code Lexicon via Traceability and Information Retrieval,” IEEE Transactions on Software Engineering, vol. 37, no. 2, pp. 205-227, 2011.
 El-Emam, K., Melo, W. L. and Machado. J. C. "The Prediction of Faulty Classes using Object-Oriented Design Metrics,” Journal of Systems and Software, vol. 56, no. 1, pp. 63–75, 2001.
 Fowler, M., Beck, K., Brant, J., Opdyke, W. and Roberts, D. Refactoring: Improving the Design of Existing Code. Addison-Wesley Professional, 1999.
 Frakes, W. and Kang, K. "Software Reuse Research: Status and Future,” IEEE Transactions on Software Engineering, vol. 31, no. 7, pp. 529-536, 2005.
 Gaudin, O. and Mallet, F. "Sonar,” Methods and Tools, vol. 18, no. 1, pp. 40-46, 2010.
 Gyimothy, T., Ferenc, R., and Siket, I. "Empirical Validation of Object-Oriented Metrics on Open Source Software for Fault Prediction,” IEEE Transactions on Software Engineering, vol. 31, no. 10, pp. 897-910, 2005.
 Haeﬂiger, S., Von-Krogh, G. and Spaeth, S. "Code Reuse in Open Source Software,” Management Science, vol. 54, no. 1, pp. 180-193, 2008.
 Haiduc, S. and Marcus, A. "On the Use of Domain Terms in Source Code,” InProc of the 16th IEEE International Conference on Program Comprehension, pp. 113-122, 2008.
 Jalbert, N. and Weimer, W. "Automated Duplicate Detection for Bug Tracking Systems,” InProc of the International Conference on Dependable Systems and Networks, pp. 34-27, 2008.
 Land, R., Sundmark, D., Luders, F., Krasteva, I. and Causevic, A. "Reuse with Software Components - A Survey of Industrial State of Practice,” Formal Foundations of Reuse and Domain Engineering, Lecture Notes in Computer Science, vol. 5791, pp. 150-159, 2009.
 Langmaacka, H., Salwicki A. and Warpechowski, M. "On an algorithm determining direct superclasses in Java and similar languages with inner classes—Its correctness, completeness and uniqueness of solutions,” Information and Computation, vol. 207, pp. 389-410, 2009.
 Lawrie, D., Morrell, C. Field, H. and Binkley, D. "Effective Identifier Names for Comprehension and Memory,” Innovations in Systems and Software Engineering, vol. 3, no. 4, pp. 303-318, 2007.
 Makela, S. and Leppanen, V. "Observations on Lack of Cohesion Metrics,” In Proc of the International Conference on Computer Systems and Technologies, 2006.
 Marcus, D. Poshyvanyk and R. Ferenc. "Using the Conceptual Cohesion of Classes for Fault Prediction in Object-Oriented Systems,” IEEE Transactions on Software Engineering, vol. 34, no. 2, pp. 287 – 300, 2008.
 McCabe, T. "A Complexity Measure,” IEEE Transactions on Software Engineering, pp. 308-320, 1976.
 McConnell, S. Code Complete: A Practical Handbook of Software Construction, 2ndEdition. Microsoft Press, 2004.
 McIlroy, D. "Mass-produced software components,” In Proc 1968 NATO Conference on Software Engineering, Buxton, J.M., Naur, P., Randell, B. (eds.), pp. 138-155, Petroceli/Charter, New York, 1969.
 Navarro, G. "A Guided Tour to Approximate String Matching,” ACM Computing Surveys, vol. 33, no. 1, pp. 31 – 88, 2001.
 Schildt H. Java - The Complete Reference, 8th Edition. McGraw-Hill Osborne Media, 2011.
 Stein, C., Cox, G. and Etzkorn, L. "Exploring the Relationship between Cohesion and Complexity,” Journal of Computer Science, vol.1, no. 2, pp. 137–144, 2005.
 Subramanyam, R. and Krishnan, M. "Empirical analysis of CK metrics for object-oriented design complexity: implications for software defects,” IEEE Transactions on Software Engineering, vol. 29, no. 4, pp. 297 – 310, 2003.
 Taibi, F. "Reusability of Open-Source Program Code: A Conceptual Model and Empirical Investigation,” ACM SIGSOFT Software Engineering Notes, vol. 38, no. 4, pp. 1-5, 2013.
 Yu, P., Systa, T. and Muller, H. "Predicting Fault-Proneness Using OO Metrics: An Industrial Case Study,” In Proc of the 6thEuropean Conference on Software Maintenance and Reengineering, pp. 99-107, 2002.