Sizing measures are needed to make valid comparisons across (or within) systems.  Without a software sizing measure, productivity cannot be computed.  For example, the real estate industry has "square feet" and the oil industry has "barrels of oil" as standard measures.  In the computer software industry, however, software developers do not have a generally accepted measure of what they produce.

While estimating is probably the most common use of a sizing measure, there are many other potentially valuable applications, including progress measurement, change management, risk identification, and earned value.

There are only two software sizing measures widely used today -- Lines of Code (LOC or KLOC) and Function Points (FP).  Though each is a sizing measure, they actually measure different things and have very different characteristics.

Lines of Code is a measure of the size of the system after it is built.  It is very dependent on the technology used to build the system, the system design, and how the programs are coded.  The major disadvantages of LOC are that systems coded in different languages cannot be easily compared and efficient code is penalized by having a smaller size.  Capers Jones stated at a talk to the Chicago Quality Assurance Association on November 22, 1996 that anyone using LOC is "committing profession malpractice." [Ref 2]  Despite these problems, LOC is still frequently used by very reputable and professional organizations.

In contrast to LOC, Function Points is a measure of delivered functionality that is relatively independent of the technology used to develop the system.  FP is based on sizing the system by counting external components (inputs, outputs, external interfaces, files and inquiries.)  While FP addresses many of the problems inherent in LOC and has developed a loyal following, it has its own set of advantages and disadvantages (see Figure 1 below).  

Easy to compute
Natural byproduct of process
Penalizes efficient code
Difficult to make valid comparisons across languages
Dependent on technology
Measures system from user perspective
Relatively independent of technology
Requires specialized training to compute
Not intuitive
Difficult to communicate

LOC and FP -- Advantages and Disadvantages
Figure 1

Because Lines Of Code and Function Points have been the only ways to size a system, a software developer's or project manager's choices have been very limited.  Most have opted not to measure at all.