This article presents a comprehensive overview of the state of the art in software resource estimation. We describe common estimation methods and also provide an evaluation framework to systematically compare and assess alternative estimation methods. Although we have tried to be as precise and objective as possible, it is inevitable that such a comparison exercise be somewhat subjective. We however, provide as much information as possible, so that the reader can form his or her own opinion on the methods to employ. We also discuss the applications of such estimation methods and provide practical guidelines.
Understanding this article does not require any specific expertise in resource estimation or quantitative modeling. However, certain method descriptions are brief and the level of understanding that can be expected from such a text depends, to a certain extent, on the reader's knowledge. Our objective is to provide the reader with a comprehension of existing software resource estimation methods as well as with the tools to reason about estimation methods and how they relate to the reader's problems.
The second section (on resource estimation) briefly describes the problems at hand, the history, and the current status of resource estimation in software engineering research and practice. The third section (on overview of estimation models) provides a comprehensive, although certainly not complete, overview of resource estimation methods. Project sizing, an important issue related to resource estimation, is then discussed in the fourth section (on sizing projects). The fifth section (on framework for com parison and evaluation) defines an evaluation framework that allows us to make systematic and justified comparisons in the sixth section (on evaluation and comparison effort estimation methods). The seventh section (on considerations influencing choice of estimating method) provides guidelines regarding the selection of appropriate estimation methods, in a given context. The eighth section (on typical applications) describes typical scenarios for using resource estimation methods, thereby relating them to software management practice. The ninth section (on future directions) attempts to define important research and practice directions, requiring the collaboration of academia and industry. This article then concludes by summarizing the main points made throughout the article.