Software effort estimation is the process of calculating the effort required to develop a software product based on the input parameters that are usually partial in nature. It is an important task but the most difficult and complicated step in the software product development. Estimation requires detailed information about project scope, process requirements and resources available. Inaccurate estimation leads to financial loss and delay in the projects. Due to the intangible nature of software, most of the software estimation process is unreliable. But there is a strong relationship between effort estimation and project management activities. Various methodologies have been employed to improve the procedure of software estimation. This paper reviews journal articles on software development to get the direction in the future estimation research. Several methods for software effort estimation are discussed in this paper, including the data sets widely used and metrics used for evaluation. The use of evolutionary computational tools in the estimation is dealt with in detail. A new model for estimation using differential evolution algorithm called DEAPS is proposed and its advantages are discussed.