1Department of Software Engineering
College of Computer and Information Sciences,
King Saud University, Riyadh, Saudi Arabia
2Department of Computer Science, Allama Iqbal Open University, Islamabad, Pakistan
Open Source Software (OSS) is one of the emerging areas in software engineering. Reuse of OSS is employed in reuse-intensive software development such as Component Based Software Development and Software Product Lines. OSS is gaining the interest of the software development community due to its enormous benefits. The context of this study is the identification and quantification of factors affecting reusability of OSS in reuse-intensive software development. The use of OSS in the systematic reuse of software, such as in Software Product Lines (SPLs) is a new phenomenon. Therefore, the aim of this study is to identify and quantify the factors affecting the reusability of OSS in reuse-intensive software development, especially for SPLs. In this study, a mixed methods based approach is employed to identify the factors affecting the reusability of OSS. Interviews are conducted with experts in this field as the qualitative part, followed by a survey, experiments and a statistical analysis. The factors identified during the interviews are ranked by software engineers in a survey. Experiment is conducted to assess the reusability of open source packages. The factors are validated by conducting a statistical analysis of the results of the experiments. A set of nine factors were identified as a result of the qualitative study. A model was formed on the basis of the findings of interviews and a survey. It includes five factors. These were statistically analyzed by applying the model to 77 open source packages. A set of nine factors were identified as affecting reusability of OSS in a reuse-intensive development environment. Five of them were validated at the code level. The statistical results show a positive correlation between reusability and the identified factors.
Keywords: Open source software, software reusability, mixed method