The largest influence on a project's effort is the size of the software being built. The second largest influence is your organization's productivity.
Table 19-1 illustrates the ranges of productivities between different software projects. The data in the table illustrates the hazards both of using industry-average data and of not considering the effect of diseconomies of scale. Embedded software projects, such as the Lincoln Continental and IBM Checkout Scanner projects, tend to generate code at a slower rate than shrink-wrapped projects such Microsoft Excel. If you used "average" productivity data from the wrong kind of project, your estimate could be wrong by a factor of 10 or more.
Product | New Lines of Code Equivalent | Staff Years | Year Built | Approximate Cost in 2006 Dollars | $/LOC | LOC/Staff Year |
---|---|---|---|---|---|---|
IBM Chief Programmer Team Project | 83,000 | 9 | 1968 | 1,400,000* | $17 | 9,200 |
Lincoln Continental | 83,000 | 35 | 1989 | 2,900,000 | $35 | 2,400 |
IBM Checkout Scanner | 90,000 | 58 | 1989 | 4,900,000 | $55 | 1,600 |
Microsoft Word for Windows 1.0 | 249,000 | 55 | 1989 | 8,500,000* | $34 | 4,500 |
NASA SEL Project | 249,000 | 24 | 2002 | 3,700,000* | $15 | 10,000 |
Lotus 123 v. 3 | 400,000 | 263 | 1989 | 36,000,000 | $90 | 1,500 |
Microsoft Excel 3.0 | 649,000 | 50* | 1990 | 7,700,000 | $12 | 13,000 |
Citibank Teller Machine | 780,000 | 150 | 1989 | 22,000,000 | $28 | 5,200 |
Windows NT 3.1 (first version) | 2,880,000 | 2,000* | 1994 | 200,000,000 | $70 | 1,400 |
Space Shuttle | 25,600,000 | 22,096 | 1989 | 2,000,000,000 | $77 | 1,200 |
Sources: "Chief Programmer Team Management of Production Programming" (Baker 1972), "Microsoft Corporation: Office Business Unit" (Iansiti 1994), "How to Break the Software Logjam" (Schlender 1989), "Software Engineering Laboratory (SEL) Relationships, Models, and Management Rules" (NASA, 1991), Microsoft Secrets (Cusumano and Selby 1995). |
Within the same industry, productivity can still vary significantly. Microsoft Excel 3.0 produced code at about 10 times the rate that Lotus 123 v.3 did, even though both projects were trying to build similar products and were conducted within the same timeframe.
Even within the same organization, productivity can still vary because of diseconomies of scale and other factors. The Microsoft Windows NT project produced code at a much slower rate than other Microsoft projects did, both because it was a systems software project rather than an applications software project and because it was much larger.
The lowest rate of productivity in Table 19-1 on a line-of-code-per-staff-year basis is the Space Shuttle software, but it would be a mistake to characterize that development team as unproductive. For projects of that size, the odds of outright failure exceed 50% (Jones 1998). The fact that the project finished at all is a major accomplishment. Its productivity was only 15% less than the Windows NT project even though the Space Shuttle software was 10 times the size of the Windows NT project, which is impressive.
If you don't have historical data on your organization's productivity, you can approximate your productivity by using industry-average figures for different kinds of software: internal business systems, life-critical systems, games, device drivers, and so on. But beware of the factor of 10 differences in productivity for different organizations within the same industry. If you do have data on your organization's historical productivity, you should use that data to convert your size estimates to effort estimates instead of using industry-average data.