Objectives To introduce the fundamentals of software costing and pricing To describe three metrics for software productivity assessment To explain why different techniques should be used for software estimation
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
Software cost components Hardware and software costs Travel and training costs Effort costs (the dominant factor in most projects) • salaries of engineers involved in the project • Social and insurance costs Effort 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.)
Costing and pricing Estimates are made to discover the cost, to the developer, of producing a software system There is not a simple relationship between the development cost and the price charged to the customer Broader organisational, economic, political and business considerations influence the price charged
Measurement problems Estimating the size of the measure Estimating the total number of programmer months which have elapsed Estimating contractor productivity (e.g. documentation team) and incorporating this estimate in overall estimate
Lines of code ( LOC) What'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 line What programs should be counted as part of the system? Assumes linear relationship between system size and volume of documentation
Productivity comparisons The 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 language. The 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 code.
Function points Based on a combination of program characteristics • external inputs and outputs • user interactions • external interfaces • files used by the system A weight is associated with each of these The function point count is computed by multiplying each raw count by the weight and summing all values
Quality and productivity All metrics based on volume/unit time are flawed because they do not take quality into account Productivity may generally be increased at the cost of quality It is not clear how productivity/quality metrics are related If change is constant then an approach based on counting lines of code is not meaningful
Estimation techniques There is no simple way to make an accurate estimate of the effort required to develop a software system • Initial estimates are based on inadequate information in a user requirements definition • The software may run on unfamiliar computers or use new technology • The people in the project may be unknown Project cost estimates may be self-fulfilling • The estimate defines the budget and the product is adjusted to meet the budget
Top-down and bottom-up estimation Any of these approaches may be used top-down or bottom-up Top-down • Start at the system level and assess the overall system functionality and how this is delivered through sub-systems Bottom-up • Start at the component level and estimate the effort required for each component. Add these efforts to reach a final estimate
Experience-based estimates Estimating is primarily experience-based However, new methods and technologies may make estimating based on experience inaccurate • Object oriented rather than function-oriented development • Client-server systems rather than mainframe systems • Off the shelf components • Component-based software engineering • CASE tools and program generators
Staffing requirements Staff required can’t be computed by diving the development time by the required schedule The number of people working on a project varies depending on the phase of the project The more people who work on the project, the more total effort is usually required A very rapid build-up of people often correlates with schedule slippage
Objectives To explain the principles of software process improvement To explain how software process factors influence software quality and productivity To introduce the SEI Capability Maturity Model and to explain why it is influential. To discuss the applicability of that model To explain why CMM-based improvement is not universally applicable
Topics covered Process and product quality Process analysis and modelling Process measurement The SEI process maturity model Process classification
Process improvement stages Process analysis • Model and analyse (quantitatively if possible) existing processes Improvement identification • Identify quality, cost or schedule bottlenecks Process change introduction • Modify the process to remove identified bottlenecks Process change training • Train staff involved in new process proposals Change tuning • Evolve and improve process improvements
Process and product quality Process quality and product quality are closely related A good process is usually required to produce a good product For manufactured goods, process is the principal quality determinant For design-based activity, other factors are also involved especially the capabilities of the designers
Quality factors For large projects with ‘average’ capabilities, the development process determines product quality For small projects, the capabilities of the developers is the main determinant The development technology is particularly significant for small projects In all cases, if an unrealistic schedule is imposed then product quality will suffer
Sommerville 2000 1995 Software Software Engineering, Engineering, 5th edition. 6th edition. Chapter Chapter 23 31. SlideSlide 44 ## Goal-Question-Metric Paradigm Goals • What is the organisation trying to achieve? The objective of process improvement is to satisfy these goals Questions • Questions about areas of uncertainty related to the goals. You need process knowledge to derive these Metrics • Measurements to be collected to answer the questions
Process classification Informal • No detailed process model. Development team chose their own way of working Managed • Defined process model which drives the development process Methodical • Processes supported by some development method such as HOOD Supported • Processes supported by automated CASE tools
Process choice Process used should depend on type of product which is being developed • For large systems, management is usually the principal problem so you need a strictly managed process. For smaller systems, more informality is possible. There is no uniformly applicable process which should be standardised within an organisation • High costs may be incurred if you force an inappropriate process on a development team
Key points Process improvement involves process analysis, standardisation, measurement and change Process models include descriptions of tasks, activities, roles, exceptions, communications, deliverables and other processes Measurement should be used to answer specific questions about the software process used The three types of process metrics which can be collected are time metrics, resource utilisation metrics and event metrics
Key points The SEI model classifies software processes as initial, repeatable, defined, managed and optimising. It identifies key processes which should be used at each of these levels The SEI model is appropriate for large systems developed by large teams of engineers. It cannot be applied without modification in other situations Processes can be classified as informal, managed, methodical and improving. This classification can be used to identify process tool support