Unit 9: Software Economics Objectives Ð To provide an empirical view of where the effort and money goes when we build large software systems. Ð To suggest ways of reducing and controlling software costs. An Important Issue Why is it important to understand and control software costs? Ð software costs are big and growing Ð many useful software products are not getting developed Ð understanding and controlling software costs can get us better software not just more software Associated Reading Ð Boehm, B.W & Papaccio, P.N. (1988); Understanding and Controlling Software Costs; IEEE Transactions on Software Engineering, SE4, 10, pp 1462-77. 1
Approaches Two primary ways of understanding software costs: Ð the "black " or influence-function approach Ð the "glass " or cost-distribution approach BOTH APPROACHES COMPLEMENT EACH OTHER Software Cost Influence Functions controlled experimentation observational analysis black 2
Examples of Experimental Results size (DSI) and effort (MH) comparisons for... Ð prototyping vs specifying Ð different code structuring schemes Ð different commenting and variable naming strategies Ð different languages black Conclusion: we need better metrics for software productivity than DSI/MH Examples of Observational Analysis attributes collected from large numbers of programming projects develop model of software cost from these eg IBM model, Doty model, SLIM model, COCOMO model, Jensen model, SPQR model black Key Feature: productivity range of software cost driver (multiplicative amount by which cost driver can influence the software cost estimated by the model) 3
COCOMO Software Lifecycle Productivity Ranges Number of Software Source Instructions Developed Personnel/Team Capability 4.18 Product Complexity Modern Programming Practices Required Reliability Requirements Volatility Timing Constraint Software Tools 1.92 1.87 1.76 1.66 1.65 2.36 Applications Experience Storage Constraint Virtual Machine Volatility Turnaround Time Virtual Machine Experience Database Size Scheduling Constraint Language Experience 1.57 1.56 1.49 1.47 1.34 1.23 1.23 1.2 black 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 Software Cost Distribution Insights examine distribution of... Ð development and rework costs Ð code and documentation costs Ð labour and capital costs Ð software costs by phase and activity glass 4
Development and Rework Costs large fraction of effort on a software project is devoted to rework cost of fixing or reworking software is much smaller (by factors of 50-200) in the earlier phases of the software life-cycle than in the later phases rework instances tend to follow a Pareto distribution glass Conclusion: focus on identifying and eliminating high-risk problems Code and Documentation Costs a larger proportion of costs are attributable to activities producing intermediate documents (specifications, manuals, plans, studies, reports) than code Ð the exact proportion varies by application glass Conclusion: do not just focus on support for code production 5
Labour and Capital Costs software development and evolution is very labour intensive glass Conclusion: productivity leverage can be obtained by making software production more capital intensive 5 1 infrastructure human resource management technology development management 7 3 3 7 1 QA, CM 5 margin inbound logistics marketing & sales 4 reqts 8 prelim design detailed design 11 8 code & unit test rework 30 7 integration & test outbound logistics service (?) operations (80) value chain 6
Productivity Improvement Opportunity Tree improve productivity make people more effective make steps more efficient eliminate steps eliminate rework build simpler products reuse components Controlling Software Costs Two strategies: Ð building our understanding into a framework of objectives which serves as a basis for a set of management-by-objectives (MBO control loops) Ð optimising software development strategy around predictability and control 7
Key Points Understanding and controlling software costs is extremely important. You cannot control software costs without also understanding and controlling software quality. 8