A third complication arises because the nature of software building is changing. New development processes emerge and new ways are needed to estimate the costs and schedules for the new processes. For example, many programming tasks are being put into the hands of the users by providing macro definition capabilities in many products. These capabilities allow users to define sequences of frequently used commands. A slightly more sophisticated approach is to allow domain experts to construct applications using special tools such as fourth-generation languages and application composition tools.
Examples are graphical user interfaces and relational database management systems.
Thus, reuse of code becomes an increasingly large factor in cost estimation, and a good understanding of the cost factors associated with software reuse becomes even more important. Planning and costing such processes prior to the start of the project is impossible. The pricing process, terms and principles are described in the other chapters of this handbook. Since software pricing is dependent upon an understanding of the software cost estimation process, this chapter will discuss the issue of software cost estimation. First, software itself is explained so that the reader may fully understand what costs are being estimated.