Software cost estimationObjectivesTopics coveredFundamental estimation questionsSoftware cost componentsCosting and pricingSoftware pricing factorsProgrammer productivityProductivity measuresMeasurement problemsLines of codeProductivity comparisonsSystem development timesFunction pointsSlide 15Object pointsObject point estimationProductivity estimatesFactors affecting productivityQuality and productivityEstimation techniquesSlide 22Algorithmic code modellingExpert judgementEstimation by analogyParkinson's LawPricing to winTop-down and bottom-up estimationTop-down estimationBottom-up estimationEstimation methodsExperience-based estimatesSlide 33Algorithmic cost modellingEstimation accuracyEstimate uncertaintyThe COCOMO modelCOCOMO 81COCOMO 2 levelsEarly prototyping levelObject point productivityEarly design levelMultipliersPost-architecture levelThe exponent termExponent scale factorsSlide 47Project cost driversEffects of cost driversProject planningManagement optionsManagement options costsOption choiceProject duration and staffingStaffing requirementsKey pointsSlide 57©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 1Software cost estimationPredicting the resources required for a software development process©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 2ObjectivesTo introduce the fundamentals of software costing and pricingTo describe three metrics for software productivity assessmentTo explain why different techniques should be used for software estimationTo describe the COCOMO 2 algorithmic cost estimation model©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 3Topics coveredProductivityEstimation techniquesAlgorithmic cost modellingProject duration and staffing©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 4Fundamental estimation questionsHow much effort is required to complete an activity?How much calendar time is needed to complete an activity?What is the total cost of an activity?Project estimation and scheduling and interleaved management activities©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 5Software cost componentsHardware and software costsTravel and training costsEffort costs (the dominant factor in most projects)•salaries of engineers involved in the project•Social and insurance costsEffort costs must take overheads into account•costs of building, heating, lighting•costs of networking and communications•costs of shared facilities (e.g library, staff restaurant, etc.)©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 6Costing and pricingEstimates are made to discover the cost, to the developer, of producing a software systemThere is not a simple relationship between the development cost and the price charged to the customerBroader organisational, economic, political and business considerations influence the price charged©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 7Software pricing factorsFactor DescriptionMarket opportunity A development organisation may quote a low pricebecause it wishes to move into a new segment of thesoftware market. Accepting a low profit on oneproject may give the opportunity of more profit later.The experience gained may allow new products to bedeveloped.Cost estimate uncertainty If an organisation is unsure of its cost estimate, itmay increase its price by some contingency over andabove its normal profit.Contractual terms A customer may be willing to allow the developer toretain ownership of the source code and reuse it inother projects. The price charged may then be lessthan if the software source code is handed over to thecustomer.Requirements volatility If the requirements are likely to change, anorganisation may lower its price to win a contract. After the contract is awarded, high prices may becharged for changes to the requirements.Financial health Developers in financial difficulty may lower theirprice to gain a contract. It is better to make a smallprofit or break even than to go out of business.©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 8A measure of the rate at which individual engineers involved in software development produce software and associated documentationNot quality-oriented although quality assurance is a factor in productivity assessmentEssentially, we want to measure useful functionality produced per time unitProgrammer productivity©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 9Size related measures based on some output from the software process. This may be lines of delivered source code, object code instructions, etc.Function-related measures based on an estimate of the functionality of the delivered software. Function-points are the best known of this type of measureProductivity measures©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 10Estimating the size of the measureEstimating the total number of programmer months which have elapsedEstimating contractor productivity (e.g. documentation team) and incorporating this estimate in overall estimateMeasurement problems©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 11What's a line of code?•The measure was first proposed when programs were typed on cards with one line per card•How does this correspond to statements as in Java which can span several lines or where there can be several statements on one lineWhat programs should be counted as part of the system?Assumes linear relationship between system size and volume of documentationLines of code©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 12The lower level the language, the more productive the programmer•The same functionality takes more code to implement in a lower-level language than in a high-level languageThe more verbose the programmer, the higher the productivity•Measures of productivity based on lines of code suggest that programmers who write verbose code are more productive than programmers who write compact codeProductivity comparisons©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 23 Slide 13System development timesAnalysis Design Coding Testing DocumentationAssembly codeHigh-level language3 weeks3 weeks5 weeks5 weeks8 weeks8
View Full Document