Software Cost Estimation Challenges and Factors in Engineering

software cost estimation n.w
1 / 37
Embed
Share

Understanding software cost estimation is crucial in the planning phase of a project, but it is a complex task due to numerous unknown factors. Factors such as programmer ability, product complexity, size, time constraints, reliability, and technology availability all play a significant role. Through refining estimates at different project milestones, achieving an accurate cost estimation becomes more attainable.

  • Software Cost Estimation
  • Engineering Challenges
  • Programmer Ability
  • Product Complexity
  • Technology Availability

Uploaded on | 0 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

You are allowed to download the files provided on this website for personal or commercial use, subject to the condition that they are used lawfully. All files are the property of their respective owners.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.

E N D

Presentation Transcript


  1. SOFTWARE COST ESTIMATION

  2. INTRODUCTION most difficult task in software engineering difficult to make estimate the cost during planning phase because of large number of unknown factors in the competitive nature of business. preliminary estimate is prepared during planning at the project feasibility review. an improved estimate is presented at the software requirements review. final estimate is prepared at the preliminary design review. Each estimate if the refinement of the previous one.

  3. 3.1 SOFTWARE COST FACTORS programmers ability and their familiarity Product complexity Product size Available time Required reliability Level of technology Availability, familiarity and stability of the system

  4. 3.1.1. Programmer Ability in chapter1 we discussed experiment on 12 programmers by sackmamm and his colleagues. The goal was to determine relative influence of batch and time shared access on programmer s productivity Example: 12 experienced programmer s were each given two programming problems to solve batch facilities and time sharing programs. Resulting differences in individual performance among the programmers were much greater than could be attributed to the relatively small effect of batch or time shared machine access On very large projects the differences in individual programmers ability will tend to average out But on projects involving 5 or fewer programmers, individual difference in ability can be significant

  5. 3.1.2. PRODUCT COMPLEXITY There are three categories of software products Application programs -include data processing and scientific programs Utility programs -it include Compilers, assemblers, EDITORS. System programs -it include operating system, dbms, real time system Application programs are developed in environment provided by the language compilers such as fortran, pascal . Interactions with the operating systems are limited.

  6. Utility programs are written to provide user processing environment. Make sophisticated use of operating systems. System programs interact directly with the hardware Brook s states that utility programs are three times as difficult to write as application programs System programs are three times as difficult to write as utility programs Product complexity are 1-3-9 for application, utility, system programs Boehm uses three levels of product complexity and provide equations to predict total programmer month of effort ,PM, In terms of the number of thousands of delivered source instructions ,KDSI

  7. programmer cost for the software project=the effort in programmer month*cost per Programmer month in this terminology the three levels of product complexity are organic, semidetached, embedded Organic = application programs Entity = semidetached programs Embedded = system programs application program : PM=2.4*(KDSI)**1.05 utility programs : PM=3.2*(KDSI)**1.12 system programs : PM=3.6*(KDSI)**1.20

  8. example: for a development of a60,000 line application programs, utility programs and system programs the ratio of pm:1 to 1.7 to 2.8 for the development of 60k line for application program , utility programs, system programs The Development time for a program is Application programs :TDEV=2.5*(pm)**0.38 utility programs TDEV=2.5*(pm)**0.35 system programs TDEV=2.5*(pm)**0.32 Roughly development time is same for all three types of systems.

  9. given the total programmer months for a project and the development time the average staffing level is obtained by Application program :176.6pm/17.85mo = 9.9programmers utility program 294pm/18.3mo=16programmers System program:489.6pm/18.1mo = 27programmers failures in estimating the number of source instructions in a software product is to under estimate the amount of house keeping code required.

  10. HOUSE KEEPING CODE It is the portion of the source code that handles input, output, interactive user communication, error checking and error handling. It takes more than 50 or even 90 percent of the source code.

  11. 3.1.3 PRODUCT SIZE A large software product is more expensive to develop than a small one Boehm equation indicate that the rate of increase in required effort grows with number of source instruction at an exponential rate greater than 1 Using exponents of 0.91 and 1.83 results in estimates of 1.88 and 3.5 more effort for a product that is twice as large ,and factors of 8.1 and 67.6 for products that are 10 times as large as known product These estimates differ by factors of 1.86(3.5/1.88)for products that are twice as large and 8.3(76.6/8.1) for products that are 10 times as large

  12. Effort equation Schedule equation Reference PM=5.2(KDSI)**0.91 TDEV=2.47(PM)**0.35 (WAL77) PM=4.9(KDSI)**0.98 TDEV=3.04(PM)**0.36 (NEL78) PM=1.5(KDSI)**1.02 TDEV=4.38(PM)**0.25 (FRE79) PM=2.4(KDSI)**1.05 TDEV=2.50(PM)**0.38 (BOE81) PM=3.0(KDSI)**1.12 TDEV=2.50(PM)**0.35 (BOE81) PM=3.6(KDSI)**1.40 TDEV=2.50(PM)**0.32 (BOE81) PM=1.0(KDSI)**1.50 - (JON77) PM=0.7(KDSI)**1.50 - (HAL77)

  13. Depending on the exponent used we can easily be off by a factor of 2 in estimating effort for a product twice the size of a known product and by a factor of 10 for a product 10 times the size of a known product, even if all other factors tat influence cost remain constant

  14. 3.1.4. Available Time Total project effort is sensitive to the calendar time available for project completion Software projects require more total effort, if development time is compressed or expanded from the optimal time According to Putnam, project effort is inversely proportional to the fourth power of the development time E=k/(TD**4) This formula predicts zero effort for infinite development time Putnam also states that the development schedule cannot be compressed below about 86%of the nominal schedule regardless of the number of people or resources utilized Boehm states that there is a limit beyond which a software project cannot reduce its schedule by buying more personnel and equipment

  15. 3.1.5 Required level of reliability Reliability - The ability of a program to perform a required function under stated conditions for a stated period of time Reliability can be expressed in terms of 1.Accuracy 2. Robustness 3.Completeness 4.Consistency These characteristics can be built in to a software product There is a cost associated with different phases to ensure high reliability Product failure may cause slightly inconvenience to the user While failure of other products may incur high financial loss or risk to human life

  16. 3.1.6 Level of Technology In a software development required project is reflected by 1. programming language 2. abstract machine 3. programming practices 4. software tools used modern programming languages provides additional features to improve programmer productivity and software reliability. these features include 1. strong type checking 2. data abstraction 3. separate computation 4. exception handling 5. Interrupt handling 6.Concurrency mechanisms.

  17. productivity will suffer if programmers must learn a new machine environment as part of the development process modern programming practices include the use of a) systematic analysis and design technique b) structure designed notations c) inspection d) structured coding e) systematic testing f) program development library software tools range from elementary tools such as assemblers, compilers, interactive text editors and DBMs

  18. 3.2 cost estimation techniques software cost estimates are based on past performance cost estimates can be made either (i)top down (ii)bottom up Top-down: first focus on system level costs such as computing resources, personnel required to develop the system Bottom up: first estimates the cost to develop each module are subsystem. These costs are combined to arrive at an overall estimate

  19. 3.2.1 EXPERT JUDGEMENT Most widely used cost estimation technique(top down) is Expert judgment technique It relies on the experience, background and business sense of one or more key people in the organization Eg: an expert might arrive at a cost estimate in a following manner. i) To develop a process control system ii) It is similar to one that was developed last yr in 10 months at a cost of one million dollar iii) It was a respectable profit iv) The new system has same control functions as the previous but 25%more control activities v) So the time and cost is increased by25%

  20. vi) We will use same computer and controlling devices and many of the same people of the previous system are available to develop the new system vii) therefore 20% of the estimate is reduced viii) Reuse of the low level code from the previous reduces the time and cost estimates by 25% ix) The net effect is the reduction of time cost by 20% This results in estimation of eight lakhs $ and eight months. x) Small margin of safety so eight lakhs 50,000$ and nine months development time xi) Advantage: experience

  21. 3.2.2 DELPHI COST ESTIMATION This technique was developed at the rand corporation in 1948 without side effects of group meetings. This technique can be adapted to software estimation in the following manner 1.A coordinator provides each estimators with system definition document and a form for recording a cost estimate. 2. Estimators study the document and complete their estimates 3. they ask questions to the coordinator but they don t discuss estimates with one another 4. the coordinator prepares and distributes a summary of the estimators response 5. the estimators complete another estimate from the previous estimates 6. the process is iterated for as many as required 7. No group discussion is allowed during the entire process

  22. 3.2.3 work breakdown structures A bottom-up estimation tool. WBS is a hierarchical chart that accounts for the individual parts of a system WBS chart can indicate either product hierarchy or process hierarchy Product hierarchy identifies the product components and indicates the manner in which the components are interconnected Process hierarchy identifies the work activity and relationship among those activities

  23. Fig 3.5 a and b show the product and process WBS charts Using WBS technique costs are estimated by assigning cost to each individual component in the chart and summing the costs. WBS are the most widely used cost estimation techniques Advantage: it identify and account for various process and product factors and in making explicit exactly which costs are included in the cost estimate.

  24. 3.1.4 Algorithmic cost models Constructive cost model(COCOMO) Algorithmic cost estimators compute the estimated cost of software system as the sum of the costs of the modules and subsystems. this model is bottom up estimators. The constructive cost model (COCOMO)is an algorithmic cost model described by boehm In COCOMO model the equation calculates the programmer month and development schedule are used for the program unit based on the number of delivered source instruction(DSI) Effort multipliers are used to adjust the estimate for product attribute, computer attribute, personnel attribute and project attributes.

  25. The equations and effort multipliers shown in table 3.4 were developed by examining data from 63 project and by using delphi technique The COCOMO equation incorporates a number of assumptions. for eg. The organic mode (application programs) equation applied in the following type of situation (i) small to medium size project (ii)familiar application area (iii)stable (iv)in house development effort (v)effort multipliers are used to modify these assumptions

  26. The following activities are covered by the estimates Covers design through acceptance testing It includes cost of documentation and reviews It includes cost of program manager and program librarian The effort estimates excludes planning and analysis costs, installation and training costs and the cost of secretaries, janitors and computer operators.

  27. Software project estimated by COCOMO model include the following: (i) careful definition and validation of requirements is performed by a small number of people (ii) the requirements remain same throughout the project (iii) Careful definition and validation of architectural design is performed by small number of people. (iv) detailed design, coding and unit testing are performed in parallel by groups of programmers working in teams. (v)Integration testing is based on early test planning. (vi) interface errors are mostly found by unit testing and by inspections (vii) documentation is performed as a part of development process

  28. With one example define algorithmic cost estimation using COCOMO b y bohem The product to be developed is a 10 KDSI embedded software product for telecommunications processing on a commercially available microprocessor. PM=2.8*(10)**1.20=44.4 TDEV=2.5*(44)**0.32=8.4 Effort multipliers are used to adjust the estimate.

  29. The effort adjustment factor is 1.17 So PM= 51.9 TDEV=8.8 If the programmers and analyst cost is $6000 per month, the total cost of project personnel DOLLARS=51.9PM*$6000PER PM=$311,400 COCOMO used to perform sensitivity analysis. For eg: if less capable programmer may be used at a cost savings of $1000 oer month, then TDEV=9.7 MONTHS and DOLLARS=$350,760. This version of COCOMO is called as Bohem s intermediate mode.

  30. 3.3 STAFFING LEVEL ESTIMATION the number of personnel required throughout a software development project is not constant planning an analysis are performed by a small group of people architectural design by a larger or smaller group detailed design by a larger number of people implementation and system testing requires the largest number of people in 1958 NORDEN observed that research and development project follows a cycle of planning, design, prototype, development and use with corresponding personnel utilization as in fig 3.6

  31. Sum of the areas under the curves is approximated by the RAYLEIGH equation as in fig 3.7 Any particular point on the rayleigh curve represents the number of fulltime equivalent personnel required at the instant in time Rayleigh curve is specified by two parameters (i)td-the time at which the curve reaches its maximum value (ii)k-the total area under the curve(ie) the total effort required for the project In 1976 putnam studied 50 army software projects to determine how rayleigh curve used to describe software life cycle

  32. From his observation ,rayleigh curve reaches its maximum value td, during system testing and product release for many software products From Boehm observation:Rayleigh curve is an accurate estimator of personal requirements for the development cycle from architectural design through implementation and system testing FSP=PM(0.15TDEV+0.7t) -(0.15TDEV+0.7t)^2 (0.25(TDEV)^2 0.15(TDEV)^2

  33. 3.4 ESTIMATING SOFTWARE MAINTENANCE COSTS Software maintenance cost requires 40 to 60%of the total life cycle effort devoted to software product In some cases it may be 90% Maintenance activities include 1. enhancement to the product 2. adapting the product to new processing environment 3. correcting problems a rule of thumb is distribution and maintenance activities includes enhancement-60%, adaptation-20%,error correction- 20%

  34. during planning phase of the software project the major concens about the maintenance are (i) estimating the number of maintenance programmmers that will be needed (ii) specifying the facilities required for maintenance A widely used estimators of maintenance personnel is the number of source lines that can be maintained by an individual programmer

  35. LIENTZ AND SWANSON OBSERVATION Maintenance programmers in a business data processing installations maintains 32K instructions. Full time software personnel needed for software maintenance can be determined by dividing the estimated number of source instructions to be maintained by the estimated number of instruction that can be maintained by a maintenance programmer For example if a maintenance programmer can maintain 32KDSI then 2 maintenance programmer are required to maintain 64KDSI FSPM=(64KDSI)/(32KDSI/FSP)=2FSPM

  36. Boehm suggest that maintenance effort can be estimated by use of an activity ratio, which is the number of source instructions to be added and modified in any given time period divided by the total number of instructions Step:1 ACT=(DSI added+DSI modified)/DSI total) The activity ratio is then multiplied by the number of programmer months required for development in a given time period to determine the number of programmer months required for maintenance in the corresponding time period

  37. Step :2 PM=ACT*Mmdev The enhancement is provided by an effort adjustment factor EAF which recognizes differentiate effort multipliers for maintenance and effort multipliers used for development Step:3 PMm=ACT*EAF*Mmdev Heavy importance on reliability and the use of modern programming practices during development may reduce the amount of effort required for maintenance If less importance on reliability and programming practices during development will increase the difficulty of maintenance

More Related Content