Staffing Level Estimation In Software Engineering
Phase Distribution of Software Development Effort. [Software Engineering]: Management–Cost estimation General. Good staffing level approximation to most. 1 SOFTWARE ENGINEERING Staffing Level Estimation and Scheduling Staffing level estimation Once the effort required to develop a software has been determined, it is necessary to determine the staffing. Introduction to Software Engineering/Project Management/Cost Estimation. The ability to accurately estimate the time and/or cost taken for a project to come in to its successful conclusion is a serious problem for software engineers.
It will be helpful to have historical Project Data. • Project metrics can provide a historical perspective and valuable input for generation of quantitative estimates. • Planning requires technical managers and the software team to make an initial commitment as it leads to responsibility and accountability. • Past experience can aid greatly.
Many models follow this approach [2, 12]. The IBM Federal Systems Division found that the total duration, M, in calendar months can be estimated by M = 4.1E.36. In COCOMO, the equation for schedule for an organic type of software is M = 2.5E.38. As schedule is not a function solely of effort, the schedule determined in this manner is essentially a guideline. Another method for checking a schedule for medium-sized projects is the rule of thumb called the square root check [58]. This check suggests that the proposed schedule can be around the square root of the total effort in personmonths. This schedule can be met if suitable resources are assigned to the project.
The National Programme on Technology Enhanced Learning (NPTEL) is a project funded by the Ministry of Human Resource Development (MHRD). It provides e-learning through online Web and Video courses in Engineering, Sciences, Technology, Management and Humanities. Staffing level estimation It is necessary to determine the staffing requirement for the project.
Estimation Accuracy Accuracy is an indication of how close something is to reality. Whenever you generate an estimate, everyone wants to know how close the numbers are to reality. You will want every estimate to be as accurate as possible, given the data you have at the time you generate it.
• The stability of both the product requirements and the environment that supports the software engineering effort. • Whether or not the actual project was carefully planned, monitored and controlled, and no major surprises occurred that caused unexpected delays.
And of course you don’t want to present an estimate in a way that inspires a false sense of confidence in the numbers. Important factors that affect the accuracy of estimates are − • The accuracy of all the estimate’s input data. • The accuracy of any estimate calculation. • How closely the historical data or industry data used to calibrate the model matches the project you are estimating. • The predictability of your organization’s software development process.
This occurs because only a few people are needed and can be used in the initial phases of requirements analysis and design. The human resources requirement peaks during coding and unit testing, and during system testing and integration, again fewer people are required. Often, the staffing level is not changed continuously in a project and approximations of the Rayleigh curve are used: assigning a few people at the start, having the peak team during the coding phase, and then leaving a few people for integration and system testing. If we consider design and analysis, build, and test as three major phases, the manpower ramp-up in projects typically resembles the function shown in Figure 4.1 [58].
Rushed estimates are inaccurate, high-risk estimates. For large development projects, the estimation step should really be regarded as a mini project. • Where possible, use documented data from your organization’s similar past projects.
• Include management time in any estimate. • Always build in contingency for problem solving, meetings and other unexpected events. • Allow enough time to do a proper project estimate.
After establishing a goal on the effort front, we need to establish the goal for delivery schedule. With the effort estimate (in person-months), it may be tempting to pick any project duration based on convenience and then fix a suitable team size to ensure that the total effort matches the estimate. However, as is well known now, person and months are not fully interchangeable in a software project.
He found that the staffing pattern can be approximated by the Rayleigh distribution curve Norden represented the Rayleigh curve by the following equation: E = K/t²d * t * e-t² / 2 t²d Staffing level estimation For more details here is the attachment.
• Use at least two estimation techniques to arrive at the estimates and reconcile the resulting values. Refer Decomposition Techniques in the next section to learn about reconciling estimates. • Plans should be iterative and allow adjustments as time passes and more details are known. General Project Estimation Approach The Project Estimation Approach that is widely used is Decomposition Technique.
Size Estimation In Software Engineering
Also, put your own experiences at task. • Assume resources will be productive for only 80 percent of their time. Hence, during estimation take the resource utilization as less than 80%. • Resources working on multiple projects take longer to complete tasks because of the time lost switching between them.
The best way of expressing estimates is as a range of possible outcomes by saying, for example, that the project will take 5 to 7 months instead of stating it will be complete on a particular date or it will be complete in a fixed no. Beware of committing to a range that is too narrow as that is equivalent to committing to a definite date. • You could also include uncertainty as an accompanying probability value. For example, there is a 90% probability that the project will complete on or before a definite date. • Organizations do not collect accurate project data.
Empirical data also suggests that no simple equation between effort and schedule fits well [72]. The objective is to fix a reasonable schedule that can be achieved (if suitable number of resources are assigned). One method to determine the overall schedule is to determine it as a function of effort. Such function can be determined from data from completed projects using statistical techniques like fitting a regression curve through the scatter plot obtained by plotting the effort and schedule of past projects. This curve is generally nonlinear because the schedule does not grow linearly with effort.
A schedule of 7 months with 8 people is also possible, as is a schedule of approximately 9 months with 6 people. (But a schedule of 1 month with 56 people is not possible. Similarly, no one would execute the project in 28 months with 2 people.) In other words, once the effort is fixed, there is some flexibility in setting the schedule by appropriately staffing the project, but this flexibility is not unlimited.
Putnam first studied the problem of what should be a proper staffing pattern for software projects. He extended the work of Norden In order to appreciate the staffing pattern of software projects, Norden’s and Putnam’s results must be understood. Norden’s Work Norden studied the staffing patterns of several R & D projects.
Since the accuracy of the estimates depend on the historical data, it would be an issue. • For any project, there is a shortest possible schedule that will allow you to include the required functionality and produce quality output.
• The function and/or activity breakdown is not accurate. • Historical data used for the estimation techniques is inappropriate for the application, or obsolete, or has been misapplied. Step 5 − Determine the cause of divergence and then reconcile the estimates.
For ease of scheduling, particularly for smaller projects, often the required people are assigned together around the start of the project. This approach can lead to some people being unoccupied at the start and toward the end. This slack time is often used for supporting project activities like training and documentation. Given the effort estimate for a phase, we can determine the duration of the phase if we know the manpower ramp-up. For these three major phases, the percentage of the schedule consumed in the build phase is smaller than the percentage of the effort consumed because this phase involves more people. Similarly, the percentage of the schedule consumed in the design and testing phases exceeds their effort percentages. The exact schedule depends on the planned manpower ramp-up, and how many resources can be used effectively in a phase on that project. 3ds max 2012 serial number and product key.
Generally speaking, design requires about a quarter of the schedule, build consumes about half, and integration and system testing consume the remaining quarter. COCOMO gives 19% for design, 62% for programming, and 18% for integration.
If there is a schedule constraint by management and/or client, you could negotiate on the scope and functionality to be delivered. • Agree with the client on handling scope creeps to avoid schedule overruns.
Step 1 − Understand the scope of the software to be built. Step 2 − Generate an estimate of the software size. • Start with the statement of scope. • Decompose the software into functions that can each be estimated individually. • Calculate the size of each function. • Derive effort and cost estimates by applying the size values to your baseline productivity metrics.
Observe the convergence or spread among the estimates. Convergence means that you have got a good estimate. Wideband-Delphi technique can be used to gather and discuss estimates using a group of people, the intention being to produce an accurate, unbiased estimate. • Re-estimate the project several times throughout its life cycle.
• Failure in accommodating contingency in the final estimate causes issues. For e.g., meetings, organizational events. • Resource utilization should be considered as less than 80%. This is because the resources would be productive only for 80% of their time. If you assign resources at more than 80% utilization, there is bound to be slippages. Estimation Guidelines One should keep the following guidelines in mind while estimating a project − • During estimation, ask other people's experiences.
For example, if the effort estimate is 50 person-months, a schedule of about 7 to 8 months will be suitable. From this macro estimate of schedule, we can determine the schedule for the major milestones in the project. To determine the milestones, we must first understand the manpower ramp-up that usually takes place in a project. The number of people that can be gainfully utilized in a software project tends to follow the Rayleigh curve [71, 72]. That is, in the beginning and the end, few people are needed on the project; the peak team size (PTS) is needed somewhere near the middle of the project; and again fewer people are needed after that.
Estimation is the process of finding an estimate, or approximation, which is a value that can be used for some purpose even if input data may be incomplete, uncertain, or unstable. Estimation determines how much money, effort, resources, and time it will take to build a specific system or product. Estimation is based on − • Past Data/Past Experience • Available Documents/Knowledge • Assumptions • Identified Risks 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.
• Combine effort estimates of tasks of activity to produce an estimate for the activity. • Obtain cost units (i.e., cost/unit effort) for each activity from the database. • Compute the total effort and cost for each activity. • Combine effort and cost estimates for each activity to produce an overall effort and cost estimate for the entire project. Step 4 − Reconcile estimates: Compare the resulting values from Step 3 to those obtained from Step 2. If both sets of estimates agree, then your numbers are highly reliable. Otherwise, if widely divergent estimates occur conduct further investigation concerning whether − • The scope of the project is not adequately understood or has been misinterpreted.
It will result in the most accurate estimate. If your organization has not kept historical data, now is a good time to start collecting it. • Use developer-based estimates, as the estimates prepared by people other than those who will do the work will be less accurate. • Use several different people to estimate and use several different estimation techniques. • Reconcile the estimates.
An application must score in the following areas:- 1) Operational: -This tells how good a software works on operations like budget, usability, efficiency, correctness,functionality, dependability, security and safety. 2) Transitional: - Transitional is importan t when an application is shifted from one platform to another. So, portability, reusability and adaptability come in this area. 3) Maintenance: - This specifies how good a software works in the changing environment. Modularity, maintainability, flexibility and scalability come in maintenance part.
Person and months can be interchanged arbitrarily only if all the tasks in the project can be done in parallel, and no communication is needed between people performing the tasks. This is not true for software projects—there are dependencies between tasks (e.g., testing can only be done after coding is done), and a person performing some task in a project needs to communicate with others performing other tasks. As Brooks has pointed out [16], “. Man and months are interchangeable only for activities that require no communication among men, like sowing wheat or reaping cotton. This is not even approximately true of software.”. However, for a project with some estimated effort, multiple schedules (or project duration) are indeed possible. For example, for a project whose effort estimate is 56 person-months, a total schedule of 8 months is possible with 7 people.
Following are some guidelines for achieving reliable estimates − • Base estimates on similar projects that have already been completed. • Use relatively simple decomposition techniques to generate project cost and effort estimates. • Use one or more empirical estimation models for software cost and effort estimation. Refer to the section on Estimation Guidelines in this chapter.
To ensure accuracy, you are always advised to estimate using at least two techniques and compare the results. Estimation Issues Often, project managers resort to estimating schedules skipping to estimate size. This may be because of the timelines set by the top management or the marketing team.
Decomposition techniques take a divide and conquer approach. Size, Effort and Cost estimation are performed in a stepwise manner by breaking down a Project into major Functions or related Software Engineering Activities.
However, whatever the reason, if this is done, then at a later stage it would be difficult to estimate the schedules to accommodate the scope changes. While estimating, certain assumptions may be made. It is important to note all these assumptions in the estimation sheet, as some still do not document assumptions in estimation sheets. Even good estimates have inherent assumptions, risks, and uncertainty, and yet they are often treated as though they are accurate.
#SoftwareEngineering #SoftwareEngineeringLectures #SoftwareEngineeringTutorials #SoftwareEngineeringNotes #SoftwareEngineeringClasses #SoftwareEngineeringVideos #SoftwareEngineeringPDF #SoftwareEngineeringBtech #SoftwareEngineeringGATE #SoftwareEngineeringUGC #SoftwareEngineeringNET #SoftwareEngineeringDIPLOMA Software engineering is a detailed study of engineering to the design, development and maintenance of software. Software engineering was introduced to address the issues of low-quality software projects. Problems arise when a software generally exceeds timelines, budgets, and reduced levels of quality. It ensures that the application is built consistently, correctly, on time and on budget and within requirements. The demand of software engineering also emerged to cater to the immense rate of change in user requirements and environment on which application is supposed to be working. Description: A software product is judged by how easily it can be used by the end-user and the features it offers to the user.
• Estimate the project cost in agreed currency. Observations on Estimation • Estimation need not be a one-time task in a project. It can take place during − • Acquiring a Project. • Planning the Project. • Execution of the Project as the need arises. • Project scope must be understood before the estimation process begins.
• Combine function estimates to produce an overall estimate for the entire project. Step 3 − Generate an estimate of the effort and cost. You can arrive at the effort and cost estimates by breaking down a project into related software engineering activities. • Identify the sequence of activities that need to be performed for the project to be completed. • Divide activities into tasks that can be measured. • Estimate the effort (in person hours/days) required to complete each task.

— Adding to the fact that estimating development efforts is hard, it's worth stating that more resources doesn't always help.