For a successful software project we first need to estimate the various resources that are required to complete the project. Effective software project estimation is an important activity in any software development project. One of the main reasons software programs fail is our inability to accurately estimate software size. Because we almost always estimate size too low, we do not adequately fund or allow enough time for development. Poor size estimates are usually at the heart of cost and schedule overruns.

Software size has a direct effect on overall development cost and schedule. Early significant deviations in software size data indicate problems such as:

All estimates are made based upon some form of analogy: Historical Analogy, Expert Judgment, Models, and Rules-of-Thumb. The role these methods play in generating an estimate depends upon where one is in the overall life-cycle. Typically, estimates are made using a combination of these four methods.

Software Project Estimation:

Project Estimation Process:

1.gif

Step 1: Gather and Analyze Software Functional & Programmatic Requirements

In this step we Analyze and refine software requirements, software architecture, and programmatic constraints.

Responsible persons: Software manager, system engineers, and cognizant engineers.

The Output of step1:

Step 2: Define the Work Elements and Procurements

The purpose of this step is to define the work elements and procurements for the software project that will be included in the software estimate.

Responsible Persons: Software manager, system engineers, and cognizant engineers.

The Output of step2:

Below are 4 major steps (from Step 3 to Step 6) that play an important role in the estimation of the software project:

2.gif

Step 3: Estimating the size of the project

Estimating the size of the software to be developed is the very first step to make an effective estimation of the project. A customer's requirements and system specification forms a baseline for estimating the size of a software. At a later stage of the project, a system design document can provide additional details for estimating the overall size of software.

Responsible Persons: Software manager, cognizant engineers.

The outputs of step3:

Step 4: Estimating the Effort

When we are finished with the size estimation process, the next step is to estimate the effort based on the size. The estimation of effort can be made from the organisational specifics of the software development life cycle. The development of any application software system is more than just coding of the system. Depending on deliverable requirements, the estimation of effort for project will vary. Efforts are estimated in the number of man-months:

Responsible persons: Software manager, cognizant engineers, and software estimators.

The output of step4:

Step 5: Estimating Schedule

After estimating the efforts, estimating the project schedule from the effort estimated is the next step in the estimation process. The schedule for a project will generally depend on human resources involved in a process. Efforts in man-months are translated to calendar months.

Schedule in calendar months = 3.0 * (man-months) 1/3

The parameter 3.0 is variable, used depending on the situation which works best for the organisation.

Responsible Persons: Software manager, cognizant engineers, and software estimators.

The outputs of step 5 are:

Step 6: Estimating the cost

To estimate the total cost of the software project is the purpose of this step. The cost of a project is derived not only from the estimates of effort and size but from other parameters such as hardware, travel expenses, telecommunication costs, training cost etc. should also be taken into account.

Cost estimation Process:

3.gif

How to Estimate the total cost:

  1. Determine the cost of procurements:
    • Determine the cost of support and services, such as workstations, test-bed boards and simulators, ground support equipment, and network and phone charges.
    • Determine the cost of software procurements such as operating systems, compilers, licenses, and development tools.
    • Determine the cost of travel and trips related to customer reviews and interfaces, vendor visits, plus attendance at project-related conferences.
  2. Determine the cost of training planned for the software project.
  3. Determine the salary and skill level of the labor force.
  4. Input the effort, salary levels, and cost of procurements into an institutionally supported budgeting tool to determine overall cost. All estimates should be integrated with all rates and factors, institutional standard inflation rates, and median salaries.
  5. As with scheduling, inconsistencies and holes in the estimates may appear while calculating the cost. This is especially true when trying to fit the cost into the budget imposed on the software project. As a result, it may be necessary to reiterate the estimates of other steps several times, reduce the effort and procurements, or assume more risk to fit into the imposed budget. If the schedule becomes extended, costs will rise because effort moves out to more expensive years. See later steps for reviewing estimates versus budgets and schedule.

Responsible Persons: Software manager, cognizant engineers, and software estimators.

The outputs of step 6 are:

Continue to Part 2