Personal Estimation with PROBE CS3300 Fall 2015
Code Size Estimation Wide Band Delphi (Boehm) Give the team the specs to study Discuss the project goals and issues Anonymously list the tasks and then estimate the size Estimates are given to moderator who tabulates the results Review the tasks Re-estimate and continue until convergence Fuzzy-Logic Method (Putnam) Need historical data on smallest and largest project Divide evenly using the log of the sizes by 4 Use the half-way mark to make ranges of size variance
Fuzzy Logic example Our company produced products between 173 and 10,341 LOC Determine the log difference log(10341) – log(173) = – = Divide this by 4 = / 4 =.444 Now use this number to calculate log of each category Very Small Small Medium Large Very Large
Fuzzy Logic Continued Now take half the log difference to find ranges =.444/2 =.222 LowAverageHigh Very Small Small Medium Large Very Large Historical data is required Size of applications is constantly growing What if we are doing something much larger than ever built before?
Standard Component (Putnam) Again uses historical data for organization Get historical average lines of code for different components Estimate the number/type of components that you will need: Smallest Possible Number (S) Most likely number (M) Largest Possible Number (L) Use formula (S + 4*M + L) / 6 File IO 2535 S=3 M=6 L=10 = 6.17 * 2535 = Reports 967 S=2 M=6 L=11 = 6.17 * 967 = 5963
Function Points (Albrecht) Evaluate project with: Inputs (screens or forms to enter data) : 15 screen = 15 x 4 = 60 Outputs (screens or reports to display or provide to other systems): 10 screen = 10 x 5 = 50 Inquiries (screens to allow queries): 35 screens x 4 = 140 Logical Files (collections of records updated by system): 8 files x 10 = 80 Interfaces (files shared with other applications) : 4 interfaces x 7 = 28 Total = 358
Adjustments 0-5 Data Communication 4 Distributed Functions 2 Performance Objectives1 Heavily Used Config5 Transaction Rate3 Online entry5 End User efficiency4 Online update4 Complex Processing1 Reuse1 Install Ease2 Operational Ease3 Multiple Sites0 Facilitate Change3 Total38 Multiplier = *38 = 1.03
Final Estimate 358 * 1.03 = Conversion Factor for LOC: Java/C++ 80 C225 Assembly575 COBOL175 SQL 60 Assume we are Java 369 * 80 = 29,520 LOC Effort = 2.5 * ^.38 = Schedule = 3 * ^.33 = 5.8 person-months
PROBE Try to come up with a proxy like home builders use for square footage. For OO, we can think of classes Then we consider possible number of methods, kind of class and its relative size For example: LinkedList Data 3 methods Large StatisticsCalculation8 methods Large TestCalculation10 methods Large Then we convert the types and methods to a LOC count using a conversion table. See the PROBE table in SEI slides
Terms Base Program – an existing program that you are going to enhance/modify. Reused Objects – classes that are taken from your reuse library and reused in the application New Reused Objects – classes that you are going to write, but that are destined for the reuse library.
PROBE Bottom line – the more data and experience you gain, the more accurate the linear regression numbers will be and therefore your accuracy improves.
Scheduling and Tracking The 90% problem
Scheduling and Tracking Earned Value Tracking Task must be completed to earn value Task Planning Worksheet Task Name Planned and Actual Hours Value Cumulative Hours Cumulative Value Date
Schedule Worksheet Planning available hours
Examples from Slides
Quality Measures Cost of Quality: