Article Preview
Top1. Introduction
In software projects, development time is one of the most important factors that customers are concerned with. It directly affects whether the product can be deployed or released on time. In modern software industry, development time is even more critical. Due to the marketplace competitions, it is business-critical for a software product to be released on time or earlier. Unfortunately, the reality is that most software products are delivered over scheduled deadline.
Increasing the size of development team could not guarantee to reduce the development time, because this strategy might increase the communication complexity and collaboration complexity among developers, which in turn could make the product to be delivered even late. Therefore, in software projects, it is a common practice to determine scheduling based on the estimated development effort. Several formulas have been proposed and validated to show the ideal relationship between development time and development effort (Walston & Felix, 1977; Putnam, 1978; Boehm, 1981). Table 1 summarizes some of the commonly used formulas to estimate the time duration () of a project based on the estimated development effort (E).
Table 1. Nominal development time (Van Vliet, 2008)
Model Name | Formula |
Walston-Felix | |
COCOMO | |
COCOMO 2 | |
Putnam | |
In Boehm’s 1981 publications (Boehm, 1981), he presented a concept called impossible region, which stated that it is impossible to a schedule a software project’s development time to be less than three-fourths of its nominal development time, given the amount of effort to complete the project. This scheduling barrier has influenced software industry for over 30 years. Boehm’s observation basically has two implications. First, development time cannot be reduced simply through adding more personnel, because this will increase the overhead of communications. Second, because development time is dependent on development effort, if development effort could be reduced, the development time will be reduced. In the past 30 years, research has been focusing on reducing the development effort in order to reduce the development time. Examples of such techniques include software reuse, component based development, automatic and generative software development.