Software Engineering, COMP201 Slide 1 Software Engineering CSE470
Software Engineering, COMP201 Slide 2 Software cost estimation l Predicting the resources required for a software development process
Software Engineering, COMP201 Slide 3 Fundamental estimation questions l How much effort is required to complete an activity? l How much calendar time is needed to complete an activity? l What is the total cost of an activity? l Project estimation and scheduling and interleaved management activities
Software Engineering, COMP201 Slide 4 Software cost components l Hardware and software costs l Travel and training costs l Effort costs (the dominant factor in most projects) salaries of engineers involved in the project Social and insurance costs l 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.)
Software Engineering, COMP201 Slide 5 Costing and pricing l Estimates are made to discover the cost, to the developer, of producing a software system l There is not a simple relationship between the development cost and the price charged to the customer l Broader organisational, economic, political and business considerations influence the price charged
Software Engineering, COMP201 Slide 6 Software pricing factors
Software Engineering, COMP201 Slide 7 l A measure of the rate at which individual engineers involved in software development produce software and associated documentation l Not quality-oriented although quality assurance is a factor in productivity assessment l Essentially, we want to measure useful functionality produced per time unit Programmer productivity
Software Engineering, COMP201 Slide 8 l Size related measures based on some output from the software process. This may be lines of delivered source code, object code instructions, etc. l Function-related measures based on an estimate of the functionality of the delivered software. Function-points are the best known of this type of measure Productivity measures
Software Engineering, COMP201 Slide 9 l Estimating the size of the measure (e.g. how many function points). l Estimating the total number of programmer months that have elapsed. l Estimating contractor productivity (e.g. documentation team) and incorporating this estimate in overall estimate. Measurement problems
Software Engineering, COMP201 Slide 10 l 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 l What programs should be counted as part of the system? l Assumes linear relationship between system size and volume of documentation Lines of code
Software Engineering, COMP201 Slide 11 l 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. l 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. Productivity comparisons
Software Engineering, COMP201 Slide 12 System development times
Software Engineering, COMP201 Slide 13 Function points l Based on a combination of program characteristics external inputs and outputs; user interactions; external interfaces; files used by the system. l A weight is associated with each of these and the function point count is computed by multiplying each raw count by the weight and summing all values.
Software Engineering, COMP201 Slide 14 Object points l Object points are an alternative function-related measure to function points l Object points are NOT the same as object classes l The number of object points in a program is a weighted estimate of The number of separate screens that are displayed The number of reports that are produced by the system The number of modules that must be developed
Software Engineering, COMP201 Slide 15 Final Code-Size l Function-point and object-point counts can be used in conjunction with lines of code-estimation models. The final code size is calculated from the number of function l Points and the average number of lines of code, AVC. l Values of AVC vary from 200 to 300 LOC/FP in assembly language to 2 to 40 l LOC/FP for a database programming language such as SQL. l The estimated code size for a new application is then computed as follows: Code size = AVC * Number of function points
Software Engineering, COMP201 Slide 16 Factors affecting productivity
Software Engineering, COMP201 Slide 17 END