Software cost estimation is the process of predicting the effort required to develop a software system. Many estimation models have been proposed over the last 30 years. Models may be classified into 2 major categories: algorithmic and non-algorithmic. Each has its own strengths and weaknesses. A key factor in selecting a cost estimation model is the accuracy of its estimates. Unfortunately, despite the large body of experience with estimation models, the accuracy of these models is not satisfactory. The work includes comment on the performance of the estimation models and description of several newer approaches to cost estimation. A CBR based efficient search technique has been introduced so that can help to obtain the best result.