The first approach that organizations can take to address the challenge of scheduling
large-scale systems development projects is to avoid all major schedule risks by never
developing software in-house. Instead, they can license software from vendors. However, if no
suitable software exists, companies can take one of two remaining approaches. They can admit
the impossibility of systems development scheduling and plan accordingly. They can abandon
the systems development life cycle and decide to invest a certain level of resources into a project,
manage it as best as they can, and take the schedule that produces results. The third approach is
to attempt to schedule the development project in spite of all difficulties. Several different
estimation techniques can be used. If the project is similar to a past project, the schedule data
from that past project can be used for planning. When such similar past projects exist, this
technique can produce quality schedule estimates. If there is no such past project, managers can
estimate the number of lines of code that will need to be written. Then they can use industry or
company averages to estimate the time required. Another technique is to estimate the function
points in a program, use each function point to determine the number of lines of code, and use
that number to estimate schedules.