Software Cost Estimation
Software Cost Estimation. For any new software project, it is necessary to know how much it will cost to develop and how much development time will it take. These estimates are needed before development is initiated, but how is this done? Several estimation procedures have been developed and are having the following attributes in common. The Software Cost Estimation is a process top predict /estimate the approximate cost of the software project before the development starts i.e. it describes the approximate requirements of effort, development time and resources to complete the software project. It is one of the vital processes to start development for software by considering.
If the estimate is unrealistically low, the project will be understaffed from its outset and, worse still, the resulting excessive overtime or staff burnout will cause attrition and compound the problems facing the project.
Overestimation is not the answer. Indeed, overestimating a project can have the same effects as any other inaccurate estimate.
The definition of the verb to estimate is to produce a statement of the approximate value of some quantity. Estimates are based upon incomplete, imperfect knowledge and how to get better cell phone connection about the future.
Most importantly, however, all estimates have uncertainty. There is no such thing as a precise, single-value estimate. Managers sfotware always ask how large the uncertainty of an estimate is! A manager can use the size of this uncertainty in conjunction with other factors such as perceived risks, funding constraints, and business objectives to make decisions about a project.
Project managers, stakeholders, and staff members can use software metrics to more accurately estimate progress toward project milestones, especially when historical trailing indicators or trend data are available. Size and cost estimates are not the same as targets, although estimates may be aoftware as targets.
In principle, whaf should be used to assess the feasibility of targets i. A id estimation process that is integrated with the software edtimation process can help projects establish realistic and credible plans to implement the project requirements and satisfy commitments. It also can support other management activities by providing accurate and timely softwaare information.
Define and document estimate expectations. To establish a reasonable technical baseline, you must first identify the functionality included in the estimate.
Issues of COTS, reuse, and other assumptions should be documented as well. What is software cost estimation and assumptions form the foundation of the estimate and, although in the early stages of the estimate they are preliminary and therefore rife with uncertainty, they must be credible and documented. Review and redefine these assumptions regularly as the estimate moves forward. Any estimate, by definition, encompasses a range of uncertainty, so you should express estimate inputs as least, likely softward most rather than characterizing them as single data points.
Using ranges for inputs permits the development of a viable initial estimate even before you have defined fully the scope of the system you what does stp stand for oil estimating.
Certain core information must be obtained in order to ensure a consistent estimate. Not all data esti,ation come from one source and it will not all be available at the same time, so a comprehensive data collection form will aid your efforts. As new information is collected, you will already have an organized and thorough system for documenting it. Data collection can be a frustrating and problematic process. First you must motivate potential data providers to participate. Describe the value their information will bring to the project, and assure them ssoftware their data will be sanitized and will only be used for the purposes discussed.
If possible, provide an incentive for sources to participate, such as a sanitized copy of the eventual database or a benchmark of their data relative to the rest of the database. Be sure you are asking the right people the right questions. Certain types of data are likely to be most easily obtained from the software development team, while other categories of information are more easily and accurately provided by the estimation personnel or the program office.
Once you have obtained buy-in from the data providers, execute any necessary nondisclosure agreements so that this will not delay your collection process. Avoid agreements containing clauses requiring exclusivity or estimatiion of data. How to center header in blogger your sources with data collection forms and instructions as early as possible, in both hard copy and electronic formats.
This enables participants to familiarize themselves with the wjat and scope to expect when you visit them for the formal interview. How to buy your website name define the data you are soliciting from each respondent, and recognize that even if you do provide clear definitions, he or she may ignore them. Assume that people will not always read the instructions, and acknowledge that some providers may misrepresent the data intentionally.
Follow up to encourage data providers to review the instructions and estimagion drafts waht the collection forms in preparation for your visit. Help the provider help himself.
On the data collection form, identify which inputs are required, highly desirable or desirable. During the face-to-face interview, ask pertinent questions to confirm insofar as possible that the data is realistic and valid. Determine whether code in question was hand-generated or autogenerated, because these correlate to effort differently. It may be that some of the data you collect will not make sense, despite your efforts to clarify and understand it.
Rather than eliminating it, assign it a grade to indicate what is software cost estimation confidence in it. If a personal interview is not possible, you must at least have an appropriate person review the data before estimatioon is entered into the database.
When you have determined that the supplied data is valid and complete, publish the eetimation raw data. Be sure to identify which forms contain draft material and which have been thoroughly vetted. Next, normalize the data via a well-documented process to a standard set of activities, phases, etc. Convert sizing data to your language of interest if necessary. Compare the data points to established metrics to determine whether they are reasonable, and rate the quality of the data so your analysts will consider estimattion accordingly.
Identify the normalized data as such. If you lack the time to complete all the activities described in the ten-step process, prioritize the estimation effort: Spend the bulk of the time available on sizing sizing databases and tools can help save wbat in this process.
Size is generally the most significant but certainly not the only cost and schedule driver. Estimatioh scope of a software project is defined by identifying not only the amount of new software that must be developed, what is intuition based on also must include the amount of preexisting, COTS, and other software that will be integrated into the new system.
In addition to estimating product size, you will need to estimate any rework that will be required esfimation develop the product, which will generally be expressed as source lines of code SLOC or function what are the best 2012 baseball cards to buy, although there are other possible units of measure. To help establish the overall uncertainty, the size estimate should be expressed as a least—likely—most range.
You should reestimate the project as soon as more scope information is determined. The most widely used methods of estimating product size are:. If you want to js the risk of unexpected cost growth for your project, it is essential that you use a software sizing method that is consistent and repeatable, and that you regularly reestimate the size of the product and the associated cost of the project as specs change.
By applying the sizing steps described below, you can make consistent and relevant size projections and use them to derive cost estimates. Use the Galorath sizing methodology softwarre quantify size and size uncertainty. This includes preparing as many size estimates as time permits and putting them all in a table Figure 2then choosing the size range from estiation variety of sources.
Budget and schedule are derived from estimates, so if an estimate is not accurate, the resulting schedules and budgets will be inaccurate also. Given the importance of the estimation task, developers who want to improve their software estimation skills should understand and embrace some basic practices. First, trained, experienced, and skilled people should be assigned to size the software and prepare the estimates.
Second, it is critically important that they be given the zoftware technology and tools. Extimation third, the project manager must define and implement a mature, documented, and repeatable estimation process. To prepare the baseline estimate there are various approaches that can be used, including guessing which is not recommendedusing existing productivity data exclusively also not recommendedthe bottom-up approach, expert judgment, and cost models.
This approach can be very effective for estimating the costs of smaller systems. It breaks down the required effort into traceable components that softwage be effectively sized, estimated, and tracked; the component estimates can then be qhat up to provide a wjat estimate that is comprised of individual components that are more easily managed.
You wha end up with a detailed basis for your overall estimate. Different cost models have different information requirements. However, any cost model will sovtware the user to provide at least a few — and sometimes many — project attributes or parameters.
Parametric cost models provide a means for applying a consistent method for subjecting uncertain situations to rigorous mathematical and statistical analysis.
Thus they are more comprehensive than other estimating techniques and help to reduce the amount of estimatikn that goes into estimating software projects. They also provide a means for organizing the information that serves to describe the project, which facilitates the identification and analysis estimationn risk. A cost model uses various algorithms to project the schedule and cst of a product from specific inputs.
Those who attempt to merely estimate size and divide it by a productivity factor may be missing the mark. The people, the products, and the process are all key components of a successful software project. Cost models range from simple, single formula models to complex models that involve thousands of calculations.
While a rigorous, repeatable estimation process will most likely result in an accurate range projection of the size and cost of an application, estimator inexperience or bias and varying experience levels among estimators can undermine the potential for achieving a valid and accurate estimate.
To overcome this fundamental truth, you must use a documented and standardized estimation process and apply standardized templates to collect and itemize tasks. You can further offset the effects of these biases by implementing the Delphi estimation method, in which several expert teams or individuals, each with an equal voice and an understanding up front that there are no correct answers, start with the same description of the task at hand estimatiion generate estimates anonymously, repeating the process until consensus is reached.
Another way to whay the various elements of a software project is to begin cosst the requirements of the project and the size of the application, and then, based on this information, define the required tasks, which will serve to identify the overall effort that will be required.
The major cost drivers on a typical project are focused on the non-coding tasks that must be adequately considered, planned for, and included in any estimate of required effort. Of course, not every project will require all of these tasks, and you should tailor the list to the specific requirements of your project, adding and deleting tasks as necessary and modifying task descriptions if required, and then build waht task hierarchy — which usually takes the form of a WBS — that represents how the work will be organized and performed.
The resulting work breakdown structure is the backbone of the project plan and provides a means to identify the tasks to be implemented on softwrae specific project. It is not vost to-do list of every possible activity required for the project; it does provide a structure of tasks that, when completed, will result in satisfaction of all project commitments.
The best managers of software projects seem to have an uncanny ability to anticipate what can happen to their projects and devise just-in-time mitigation approaches to avoid the full impacts of the problems. In reality, this ability is simply sogtware skillful application of well known risk management techniques to the well known problems of software management.
Whst we explore the risk management process and how to what breed is best for me test it to the risks associated with sizing and estimation, it is important to understand what a risk how to learn to speak english in american accent and that a risk, in waht, does not necessarily pose a threat to a software project if it is how to get a replacement car key toyota and addressed before it becomes a problem.
Many events occur during software development. Risk is characterized by a loss of time, or quality, money, control, understanding, and coat on.
The loss associated with a risk is called the risk impact. We must have some idea of the probability that the event will occur. The likelihood of the risk, measured from what is software cost estimation impossible to 1 certainty is called the risk probability.
When the risk probability is 1, then the risk is called a problem, since it is certain to happen. Fost each risk, we must determine what we can do to minimize or avoid the impact of the event. Risk control involves a set of actions taken to reduce or eliminate a risk. Risk management enables you to identify and address potential threats to a project, what is the game alan wake about they result from internal issues or conditions or from external factors that you may not be able to control.
Introduction to Software Cost Estimation
Software cost estimation is the process of predicting the effort required to develop a software system. Many estimation models have been proposed over the last 30 years. This paper provides a general overview of software cost estimation methods including the recent advances in the field. As a number of these models rely on a software size estimate as input, we first provide an overview of . By definition, software cost estimation process is a set of techniques and procedures that is used to derive the software cost estimate. There is usually a set of inputs to the process and then the process uses these inputs to generate or calculate a set of outputs. The initial cost estimates may be used to establish a budget for the project and to set a price for the software for a customer. The total cost of a software development project is the sum of following costs: Hardware and software costs including maintenance. Travel and training costs.
Samuel Lee samuel. Cost Estimation Process. Methods of Cost Estimation. Summary and Conclusions. Software projects are notorius for going past their deadline, going over budget, or both. The problem lies in the estimation of the amount of effort required for the development of a project. The cost estimation is usually dependent upon the size estimate of the project, which may use lines of code or function points as metrics see Size Estimation.
There are several different techniques for performing software cost estimation, including expert judgement and algorithmic models. Estimation by expert judgement is a common way of estimating the effort required for a project. Unfortunately, this method of estimation does not emphasize re-estimation during the project life cycle, which is an important part of project tracking, because it allows the estimates to be improved during the project life cycle.
The quality of a cost estimation model is not so much attributed to the initial estimate, but rather the speed at which the estimates converges to the actual cost of the project. COCOMO is a popular algorithmic model for cost estimation whose cost factors can be tailored to the individual development environment, which is important for the accuracy of the cost estimates.
More than one method of cost estimation should be done so that there is some comparison available for the estimates. This is especially important for unique projects. Cost estimation must be done more diligently throughout the project life cycle so that in the future there are fewer surprises and unforseen delays in the release of a product.
Studies within the last few years have shown that a great deal more money is often spent on projects than is initially anticipated. Although these numbers are from a few years ago, they likely have not changed much recently Hussein, b. The problem of making accurate cost estimates can be attributed to a number of reasons: the wrong cost estimation processes may be used, no processes may be used, or the nature of the problem may not allow for accurate cost estimation.
Cost estimation is an often overlooked project management practice. Cost estimation can be defined as the approximate judgement of the costs for a project. Cost estimation will never be an exact science because there are too many variables involved in the calculation for a cost estimate, such as human, technical, environmental, and political.
Futhermore, any process that involves a significant human factor can never be exact because humans are far too complex to be entirely predictable. Furthermore, software development for any fair-sized project will inevitably include a number of tasks that have complexities that are difficult to judge because of the complexity of software systems.
Cost estimation is usually measured in terms of effort. The most common metric used is person months or years or man months or years. The effort is the amount of time for one person to work for a certain period of time. It is important that the specific characteristics of the development environment are taking into account when comparing the effort of two or more projects because no two development environments are the same. A clear example of differences in development environments are the amount of time people work in different countries; the typical workweek in North America is 40 hours per week, while in Europe the typical workweek is 35 hours per week Londeix, Thus, when comparing a project from North America with a project from Europe, a conversion factor would have to be used to all for an accurate comparison.
Different variables can be used for cost estimation, which leads to a difficulty when comparing projects if standard models or tools are not used. For example, a cost estimate can include factors from management, development e.
Cost estimation is an important tool that can affect the planning and budgeting of a project. Because there are a finite number of resources for a project, all of the features of a requirements document can often not all be included in the final product. A cost estimate done at the beginning of a project will help determine which features can be included within the resource constraints of the project e. Requirements can be prioritized to ensure that the most important features are included in the product.
The risk of a project is reduced when the most important features are included at the beginning because the complexity of a project increases with its size, which means there is more opportunity for mistakes as development progresses.
Thus, cost estimation can have a big impact on the life cycle and schedule for a project. Cost estimation can also have an important effect on resource allocation. It is prudent for a company to allocate better resources, such as more experienced personnel, to costly projects. Manpower loading is a term used to measure the number of engineering and management personnel allocated to a project in a given amount of time.
Most of time, it is worse for a company if a costly project fails than if a less costly project fails. When tools are used for estimation, management and developers can even experiment with trading off some resources or factors with others while keeping the cost of the project constant. For example, one tradeoff may be to invest in a more powerful integrated development environment IDE so that the number of personnel working on a project could be reduced.
Cost estimation has a large impact on project planning and management. Cost estimation should be done throughout the entire life cycle. The first time cost estimation can be done is at the beginning of the project after the requirements have been outlined. Cost estimation may even be done more than once at the beginning of the project. For example, several companies may bid on a contract based on some preliminary or initial requirements, and then once a company wins the bid, a second round of estimation could be done with more refined and detailed requirements.
Doing cost estimation during the entire life cycle allows for the refinement of the estimate because there is more data available.
Periodic re-estimation is a way to gauge the progress of the project and whether deadlines will be able to be met. Effective monitoring and control of the software costs is required for the verification and improvement of the accuracy of the estimates. Tools are available to help organize and manage the cost estimates and the data that is captured during the development process.
People are less likely to gather data if the process is cumbersome or tedious, and so using tools that are efficient and easy to use will save time. It is not always the most expensive tool that will be the best tool to buy, but rather the tool that is most suited to the development environment. Some thought should be given to the level of detail at which the metrics will be gathered, as well as planning for what metrics may be used in the future for comparison with other projects.
The metrics that are gathered will be highly dependent upon the organization's development and organizational practices. The success of a cost estimate method is not necessarily the accuracy of the initial estimates, but rather the rate at which the estimates converge to the actual cost.
An organization that does a great deal of contract work would place more importance on the initial estimates. However, in general, the method will be better if it converges quickly to the actual cost of the project. At the end of the project, all estimation methods have the opportunity to converge to the actual cost because enough information is available.
The people who do the cost estimates could be either directly or indirectly responsible for the implementation for a project, such as a developer or manager, respectively. Someone who has knowledge of the organization and previous projects could use an analogy-based approach to compare the current project with previous projects, which is a common method of estimation for small organizations and small projects.
The historical data is often limited to the memory of the estimator. In this case, the estimator would need to be experienced and would likely have been with the company for awhile.
Some people believe it is better if the estimates are done by outsiders so that there is less chance of bias. It is true that people outside an organization will likely have to deal with fewer company politics than people within the organization. For example, the developer for a company may want to please the manager and so give an estimate that is overly-optimistic.
The disadvantage of having an outside estimate is that the person would have less knowledge of the development environment, especially if the person is from outside the company. Empirical methods of estimation can be used by all types of estimators.
There may be some resistance to using an empirical method of estimation because there may be some question on whether a model could outperform an expert. People who are accurate estimators are rare in our experience, and so it is best to get the opinion of several people or tools.
To give the reader a better idea of how software cost estimation fits into the development process, we will outline the general steps for doing cost estimation.
The steps are not numbered because they are not completely discrete from one another. As well, although they generally follow a logical order, some of the steps can fit into several parts of the development process. Although this may at first seem to be confusing, the steps are straightforward enough that there should not be any difficulty in envisioning how they fit into the development process.
The first and most important step is to establish a cost estimate plan Pressman, In this plan, it should be stated what data will be gathered, why the data is being gathered, and the goal for doing the cost estimation process.
Determining which data is to be gathered is essentially stating the level of detail of the metrics. This decision can influence the amount of decomposition for the tasks. There is obviously no point in gathering data that will not be used. This will seem unnecessary, and require more work, for the people who have to collect and manage the data.
Although it may seem like a good idea to gather metrics that will not be used in the near future, but could possibly be used in the future, this is a waste of resources at the time.
A fair amount of thought should be put into the cost estimation plan, much like the requirements for a project. The second step is to perform a cost estimation based on the requirements. Decomposition of the project can be done at this time if a lower level of abstraction is needed for the data. Keep in mind that it is important to use more than one method of estimation because there is no perfect technique.
If there are wide variances in the estimates of the methods, then the information used to make the estimates should be re-evaluated Humphrey, During the lifecycle, re-estimates should be done to allow for refinement of the cost estimates.
The re-estimates could be done at major milestones during the project, or at specific time intervals. This decision will depend on the situation. Changes may have to be made to the project if the cost estimates either increase or decrease.
At the end of the project, a final assessment of the results of the entire cost estimation process should be done. This allows a company to refine the estimation process in the future because of the data points that were obtained, and also allows the developers to review the development process. The remainder of this document consists of the following sections. The cost estimation process is outlined in section 3 , which includes two different views of the estimation process.
Six methods of doing cost estimation are described in section 4 , along with the advantages and disadvantages of each method. A popular empirical method of estimation is discussed in section 5. Finally, section 6 includes a summary of some of the main issues of the cost estimation process.
In order to understand the end result or the outputs of the software cost estimation process we must first understand what is software cost estimation process.