Software-Cost Estimation
- Overview
Software engineering economics is a method for examining software and processes in a systematic way and relating them to economic measures. It is concerned with aligning software technical decisions with the business goals of an organization.
Software engineering economics can be used to:
- Determine software costs
- Apply microeconomics concepts to software engineering
- Use economic analysis in software engineering decision making
- Make decisions related to software engineering in a business context
Software economics is a mature research area that deals with valuing software and estimating the costs involved in its production.
- Software Cost Estimation
Software cost estimation is the process of predicting the resources, time, and effort needed to develop, test, deploy, and maintain software systems. It's an important process for IT consultants to use when planning and managing projects.
Cost estimates are used as a starting point for talks and agreements when negotiating contracts or project requirements. They can also help IT consultants set realistic goals, deadlines, and budgets.
Cost estimates are computed from cost drivers, which are factors that affect software cost. Cost drivers include:
- Design methodology, Risk assessment, Skill levels, Programming language, System complexity, Personal experiences.
- Most software cost models can be abstracted into a function of five basic parameters: Size, Process, Personnel, Environment, Required quality.
Some main factors that most affect software development effort/pricing include:
- Type of software project
- Size of software project
- Development team size
One model used in software engineering is price-to-win estimation, which is often used in competitive bidding.
- Software Cost Estimation Techniques
Here are some software cost estimation techniques:
- Analogous cost estimation: Also known as analogous estimating, this technique uses the actual cost of similar past projects as the basis for estimating the cost of the current project.
- Bottom-up cost estimation: This method is more detailed and time-consuming than other methods. It analyzes every detail of the project, with the project team focusing on each of the client's requirements.
- Function Point Analysis (FPA): This technique counts the number and complexity of functions that a piece of software can perform.
- Delphi model: This system offers a way to arrive at decisions about complex issues within the project based on the opinions of individual project members.
- COCOMO model: This is one of the most open and well-documented cost estimation models.
Other software estimation techniques include:
- Parametric cost estimation
- Three-point estimates
- Use case points
- What-if analysis
- Expert judgment
- Algorithmic models
- Hybrid models
When selecting a method and model for software cost estimation, it's important to consider the size, complexity, type, domain, and stage of development of the project.
The four basic steps in software project estimation are:
- Estimate the size of the development product
- Estimate the effort in person-months or person-hours
- Estimate the schedule in calendar months
- Estimate the project cost in agreed currency
There are three main methods of software development cost estimation: parametric cost estimation, analogous cost estimation, and bottom-up cost estimation. Each of these methods has its advantages and disadvantages and can be used in different situations to generate an accurate software cost estimation.
[More to come ...]