230 likes | 393 Views
Estimating Software Development Using Project Metrics. Project Estimating. It is Possible to Estimate Software Projects Accurately Accurate Estimates Take HISTORY and TIME Estimation Procedure Must Be Formal Standards Accurate Estimates Need a Quantitative Tool
E N D
Project Estimating • It is Possible to Estimate Software Projects Accurately • Accurate Estimates Take HISTORY and TIME • Estimation Procedure Must Be Formal Standards • Accurate Estimates Need a Quantitative Tool • Estimates Must be Redone After Every Life Cycle Phase Once All Stakeholders agree on estimation procedures, negotiations can involve Inputs (features & resources) NOT Outputs (time & dollars)
Activities to be Estimated Obvious • Planning • Design • Coding • Procedures • Testing • Conversion • Documentation • Operations • Maintenance • Not Obvious • User/Customers Interaction • Prototype Demonstrations • Reviews and Approvals • Problem/Design Fixes • Prior Project Support • Documentation redoes • Training, vacations, sick, ...
Danger Signs • Estimates the Project Team Does NOT Accept • Estimates Your Experts Do Not Accept • Estimates that Include Overtime • Estimates Assuming Over 80% Utilization • Estimates Without Detailed Task Plans • Estimates More Than A “Month” Old • Estimates NOT UNDER CHANGE CONTROL
Measurement & Metrics ... collecting metrics is too hard ... it's too time-consuming ... it's too political ... it won't prove anything ... Anything that you need to quantify can be measured in some way that is superior to not measuring it at all .. Tom Gilb
Why do we Measure? • To characterize • To evaluate • To predict • To improve
A Good Manager Measures process process metrics project metrics measurement product metrics product What do we use as a basis? • size? • function?
Process Metrics • majority focus on quality achieved as a consequence of a repeatable or managed process • statistical SQA data • error categorization & analysis • defect removal efficiency • propagation from phase to phase • reuse data
Project Metrics • Effort/time per development task • Errors uncovered per review hour • Scheduled vs. actual milestone dates • Changes (number) and their characteristics • Distribution of effort on development tasks
Product Metrics • focus on the quality of deliverables • measures of analysis model • complexity of the design • internal algorithmic complexity • architectural complexity • data flow complexity • code measures (e.g., Halstead) • measures of process effectiveness • e.g., defect removal efficiency
Metrics Guidelines • Use common sense and organizational sensitivity when interpreting metrics data. • Provide regular feedback to the individuals and teams who have worked to collect measures and metrics. • Don’t use metrics to appraise individuals. • Work with practitioners and teams to set clear goals and metrics that will be used to achieve them. • Never use metrics to threaten individuals or teams. • Metrics data that indicate a problem area should not be considered “negative.” These data are merely an indicator for process improvement. • Don’t obsess on a single metric to the exclusion of other important metrics.
Typical Size-Oriented Metrics • errors per KLOC (thousand lines of code) • defects per KLOC • $ per LOC • page of documentation per KLOC • errors / person-month • LOC per person-month • $ / page of documentation
Typical Function-Oriented Metrics • $ per FP • FP per person-month • errors per Function Point (FP) • defects per FP • pages of documentation per FP
Typical Calculation FP Count 300 Complexity Factor 1.2 FP (Estimated) 360 Productivity Factor (measured) 8 FP/pm $/pm $8,000 $/FP $1,000 Estimated Cost of Project $360,000
Program Size/Function Point Programming Language LOC/FP C 128 C++ 64 COBOL 106 Visual Basic 32 Smalltalk 22 PowerBuilder 16 SQL 12
Measuring Quality • Correctness — the degree to which a program operates according to specification • Maintainability—the degree to which a program is amenable to change • Integrity—the degree to which a program is impervious to outside attack • Usability—the degree to which a program is easy to use
Defect Removal Efficiency DRE = (errors) / (errors + defects) where errors = problems found before release defects = problems found after release
Managing Variation The mR Control Chart