ABSTRACT

Almost every aspect of our modern society is controlled by software. Because of their complexity, software development and maintenance/upgrades are an error-prone, time-consuming, and complex activity. Software is redefining the consumer's world. In actuality, most companies understand their products and capabilities and do a good job at estimating software development costs by using mainly homegrown relationships based on years of experience. Yet, challenges arise for new products, major upgrades, and integration with hardware systems. This chapter presents the details of software cost estimating from traditional algorithm-based models, such as the basic and intermediate Constructive Cost Model, to using function points to estimate software development time.