Jan. 31, 2014 cs562 Review of Effort/Time estimation Characterization Tracking Evaluation Prediction Improvement Hard to come up with a good model Planning poker is easy but there are lots of other methods Conceptualize entity of interest GQM - goal question metric model Want conceptual, operational, quantitative level goals -Idea: How can I make my code run faster -Questions related to goal: How will it affect debugging time -Determine metric for goal Software Engineering Time Estimation (project management) Divide and Conquer method Include everything Use past experience Analysis Effort Method Estimate duration of projects Good for producing initial estimates Inputs are numeric factors Size (S) Familiarity (F) Complexity© Use with the duration of preparing specification to find length of the following phases within a lookup table Design Coding Testing (including unit testing) Doesn't include training times COCOMO (constructive cost model) by Barry Boehm (1981) Cost estimation model Don't use for real projects Applies to three different classes of projects "Organic" - small teams with experience working with loose requirements "Semi-detached projects" - "medium" teams with mixed experience with mixed requirements "Embedded projects" - tight constraints, may be combination of semi-detached projects Compute SW dev effort as a function of program size Effort Applied = a_b * KLOC^b_b (man months) Development Time = c_b * Effort_Applied ^ d_b (months) People Required = Effort_Applied / Development_Time (num people) Constants defined using a table Organic - 2.4 1.05 2.5 0.38 Semi-detached - 3.0 1.12 2.5 0.35 Embedded - 3.6 1.2 2.5 0.32 Intermediate COCOMO Use 15 attributes rated from 1 to 6 as effort adjustment factors corresponding to varying values between 0.70 and 1.65 Includes things like SW reliability Size of database Complexity of project HW attributes Personnel attributes Project attributes etc. New effort formula is E = a_i * KLoC^b_i for each Factor above http://en.wikipedia.org/wiki/COCOMO http://www.codeproject.com/Articles/9266/Software-Project-Cost-Estimates-Using-COCOMO-II-Mo Function point analysis Analyze functionality rather than LoC Used for many years (since 1983) Sum of Features * Weights using industry standards (lookup table) Consider: External inputs External outputs External inquiries Internal logical files External interface files Components are assigned weights based upon simple descriptions of the project Simple Average Complex Use table for function point weights Unadjusted Function Points UFP = number of inputs * 3 + number of outputs * 4 + number of inquiries * 3 + number of logical files * 7 + number of external interface files * 5 1. Data communications 2. Distributed data 3. Perf. Criteria 4. Heavy HW use 5. High transaction rates 6. Online data entry 7. Online updating 8. Complex computations 9. Ease of installation 10. Ease of operation 11. Portability 12. Maintainability 13. End-user efficiency 14. Reusability Used to come up with Technical Complexity Factor (TCF) TCF = 0.65 + 0.01*(sum of 14 tech comp. factors) Results in values from 0.65 to 1.35 FP = UFP * TCF Assume average effort is measured as 25 function points per person month Effort = x function points / 25 function points/person month Can be hard to measure over different organizations, languages, etc. There is a working group IFPUG for this topic OO Function estimation 1. Est. the # of classes 2. Categorize UIs No UI 2.0 Text-based 2.2 GUI 2.5 Complex 3.0 3. Compute #UI classes = # of non-UI classes * UI categorization 4. #classes = #UI classes + # of non-UI classes 5. Multiply the total number of classes by a value between 15 and 20 to determine the number of person-days required 3 tasks , 10, 15, 30 person months Calc bcw Effort so far Budgeted cost of work (BCW) - estimated effort for each task Budgeted cost of work scheduled (BCWS) - sum of estimated efforts sum(BCW) at date Budget at completion (BAC) - sum (BCW) Budgeted cost of work performed (BCWP) - sum (estimated effort for completed tasks) on particular date Actual cost of work performed (ACWP) - sum (actual effort for completed tasks) on particular date Earned Value = BCWP/BAC Cost Variance = BCWP - ACWP Schedule Variance = BCWP - BCWS Evidence Based Scheduling Base scheduling upon past experiences