Software effort estimation using ensemble of neural networks with associative memory - Kültür, Yiğit. (Thesis (M.S.)-Bogazici University. Institute for Graduate Studies in Science and Engineering, 2008., 2008)
In software industry, most of the budget is used for project implementation. Therefore, each software company has to manage its workforce effectively. Estimating the software effort accurately is essential for workforce management. Researchers became aware of the importance of software effort estimation in 1960’s and so far they have proposed several models, some of which are learning oriented. Companies usually have a small number of completed projects and consequently limited amount of data for estimating the effort of new projects. It is hard to make accurate estimations with scarce data. As the problem and estimation methods become more complex, it becomes harder to learn effort function with small datasets. Therefore, it is important to improve the performance of the predictor for effort estimation. Many researchers have used neural networks as a single element to be a robust algorithm in software effort estimation research. In this research, we focused on improving the prediction performance of the algorithm and therefore, we used ensemble of neural networks rather than a single neural network. Furthermore, we combined associative memory with the ensemble to provide the final model. We also analyzed the effect of feature subset selection on effort estimation performance. For this purpose, the features that contain most of the important information are discovered. Thereafter, only these features are used for effort estimation on the proposed model. The proposed model provides accurate estimations. Therefore, software companies may use this model to estimate software effort and effectively manage their workforce. On the other hand, the results of our experiments showed that using fewer features may provide an improvement on the prediction performance.
Keywords: Software measurement.; Computer software -- Development.; Software engineering.