Function Points Synthetic measure of program size used to estimate size early in the project Easier (than lines of code) to calculate from requirements Standards at the International Function Point Users Group (IFPUG) www.ifpug.org
FP Rules: #FPs depends on: External Inputs External Outputs External Queries Internal Logical Files External Interface Files
FP Rules: #FPs depends on: External Inputs Screens, forms, dialogs, controls User or other program adds, deletes, modifies data Any input that requires processing logic External Outputs External Queries Internal Logical Files External Interface Files
FP Rules: #FPs depends on: External Inputs External Outputs Screens, reports, dialog boxes, control signals generated for end user or other program External Queries Internal Logical Files External Interface Files
FP Rules: #FPs depends on: External Inputs External Outputs External Queries I/O combinations in which an input results in a simple output Queries retrieve data with no formatting. Output is formatted Internal Logical Files External Interface Files
FP Rules: #FPs depends on: External Inputs External Outputs External Queries Internal Logical Files Major logical groups of end-user data completely controlled by the program Might be a flat file, a database table, or a collection of other data External Interface Files
FP Rules: #FPs depends on: External Inputs External Outputs External Queries Internal Logical Files External Interface Files Files controlled by other programs
FP Rules: Complexity Multipliers Low Complexity Medium Complexity High Complexity External Inputs 3 4 6 External Outputs 5 7 External Queries Internal Logical Files 10 15 External Interface Files
LOC vs FP (Boehm 2000, Stutzke 2005) Language LOC per FP Ada 50 C 128 C# 55 C++ Java Assembly 213 Perl 20 VB 32
FP results Certified counters vary by 10% Untrained counters vary by much more The multipliers may or may not be useful (some research indicates unadjusted FPs are more closely correlated with effort) The LOC have on average a range of 3x wrt FPs
COCOMO
COCOMO COCOMO COnstructive COst MOdel Model to help reason about the cost and schedule implications of decisions Project Budgets Scheduling Planning Risk Management Decisions
3 Types of COCOMO Estimates Basic good for quick estimate of software costs Does not account for differences in hardware constraints, personnel quality and experience, or use of modern tools and techniques Early Design Model High level model Used to explore architectural alternatives or incremental development strategies Post-Architecture Model Detailed model Used once the project is ready to sustain a fielded system
3 classes of projects Organic projects Semi-detached projects "small" teams with "good" experience working with "less than rigid" requirements Semi-detached projects "medium" teams with mixed experience working with a mix of rigid and less than rigid requirements Embedded projects developed within a set of "tight" constraints (hardware, software, operational, ...)
Basic COCOMO Equations Effort Applied (in person-months) = a * (KLOC)b Development Time (in months) = c * (Effort Applied)d People required = Effort Applied / Development Time a b c d Organic 2.4 1.05 2.5 0.38 Semi-detatched 3.0 1.12 0.35 Embedded 3.6 1.20 0.32
Intermediate COCOMO Development effort is function of program size and "cost drivers" Subjective assessment of product, hardware, personnel and project attributes. Product attributes (required reliability, size of database, product complexity) Hardware attributes (performance and memory constraints) Personnel attributes Analyst capability Software engineering capability Applications experience Virtual machine experience Programming language experience Project attributes (use of tools and methods)
Intermediate COCOMO Cost Drivers 15 attributes Rated on 6-point scale (very low to extra high) Effort multipliers (from 0.9 to 1.4) from table Intermediate Cocomo formula: E=a (KLoC)b * EAF E: effort applied in person-months KLoC: estimated number of thousands of lines of code for the project EAF: factor calculated above
COCOMO II: Post Architecture PM = 2.45*EAF*(SLOC/1000)^P DM = 2.50*(PM)^T ST = PM/DM PM - person-months needed for project EAF - effort adjustment factor (0.6-1.4) SLOC - source lines of code P - project complexity (1.04-1.24) DM - duration time in months for project T - sloc-dependent coefficient (0.32-0.38) ST - average staffing necessary
Effort Per Phase Schedule