Estimating the effort in the early stages of software development
Estimates of the costs involved in the development of a software product and the likely risk are two of the main components associated with the evaluation of software projects and their approval for development. They are essential before the development starts, since the investment early in software development determines the overall cost of the system. When making these estimates, however, the unknown obscures the known and high uncertainty is embedded in the process. This is the essence of the estimator's dilemma and the concerns of this thesis. This thesis offers an Effort Estimation Model (EEM), a support system to assist the process of project evaluation early in the development, when the project is about to start. The estimates are based on preliminary data and on the judgement of the estimators. They are developed for the early stages of software building in which the requirements are defined and the gross design of the software product is specified. From these estimates only coarse estimates of the total development effort are feasible. These coarse estimates are updated when uncertainty is reduced. The basic element common to all frameworks for software building is the activity. Thus the EEM uses a knowledge-base which includes decomposition of the software development process into the activity level. Components which contribute to the effort associated with the activities implemented early in the development process are identified. They are the size metrics used by the EEM. The data incorporated in the knowledge-base for each activity, and the rules for the assessment of the complexity and risk perceived in the development, allow the estimation process to take place. They form the infrastructure for a 'process model' for effort estimating. The process of estimating the effort and of developing the software are linked. Assumptions taken throughout the process are recorded and assist in understanding deviations between estimates and actual effort and enable the incorporation of a feedback mechanism into the process of software development. These estimates support the decision process associated with the overall management of software development, they facilitate management involvement and are thus considered as critical success factors for the management of software projects.