Software Project Estimation 1. LOC – based Estimation The mechanical CAD software will accept two- and three-dimensional geometric data from a designer. The designer will interact and control the CAD system through a user interface that will exhibit characteristics of good human/machine interface design. All geometric data and other supporting information will be maintained in CAD database. Design analysis modules will be developed to produce the required output, which will be displayed on a variety of devices. The software will be designed to control and interact with peripheral devices that include a mouse, scanner, laser printer, and plotter. Following table gives you the functionalities and corresponding Lines of Code: A review of historical data indicates that the organizational average productivity for systems of this type is 620 LOC/pm. Burdened labour rate is $8,000 per month. Historical data: Average productivity : 620 LOC/pm (*pm-person months) Labour rate : $8,000 per month Estimate the total cost and effort for the mechanical CAD software. Solution: Cost per LOC = πΏππππ’π πππ‘π π΄π£πππππ πππππ’ππ‘ππ£ππ‘π¦ = 8000 = 12.9 = $ 13 620 Total cost = Estimated LOC x Cost per LOC = 33,200 x 13 = $ 4,31,600 Effort required = $ 4,31,600 $8,000 = 53.95 = 54 person-months 2. Function point-based estimation The function point (FP) metric can be used effectively as a means for measuring the functionality delivered by a system. To compute function points (FP), the following relationship is used: Sample problem with 3-point estimate: A three-point or expected value can then be computed. The expected value for the estimation variable (size) S can be computed as a weighted average of the optimistic (s opt), most likely (sm), and pessimistic (spess) estimates. Value adjustment factor: The organizational average productivity for systems of this type is 6.5 FP/pm. Burdened labour rate is $8,000 per month. Historical data: Average productivity : 6.5 FP/pm (*pm-person months) Labour rate : $8,000 per month Solution: Cost per FP = πΏππππ’π πππ‘π π΄π£πππππ πππππ’ππ‘ππ£ππ‘π¦ = 8000 = $ 1230.7 or $ 1230 6.5 Total cost = Estimated FP x Cost per FP = 375 x $ 1230 = $ 4,61,250 Effort required = $ 4,61,250 $8,000 = 57.6 = 58 person-months 3. Process-based estimation Based on an average burdened labour rate of $8,000 per month, the total estimated project cost is $368,000 (8000 x 46) and the estimated effort is 46 person-months. 4. Estimation with use-cases Assessment of Usecases: Complexity levels Simple usecase Average usecase Complex usecase Elements of usecase Weight factor A simple user interface Single database & 3/few transactions 5/few classes Complex UI 2 or 3 databases & 4 to 7 transactions 5 to 10 classes Multiple databases using eight or more transactions; 11 or more classes 5 10 15 Total unadjusted use case weight (UUCW) = sum of all weighted counts Assessment of Actors: Complexity levels Simple actors Average actors Complex actors Who are? Automatons like system or machine or device that communicate through API Automatons that communicate through a protocol or a data store Humans who communicate through a GUI or other human interface. Weight factor 1 2 3 Total unadjusted actor weight (UAW) = sum of all weighted counts of actors Use case point (UCP) = (UUCW + UAW) x TCF x ECF Technical complexity factors (TCFs), Environment Complexity Factors (ECFs) – values will be given in the question. Example: The CAD software introduced in Section 33.6.3 is composed of three subsystem groups: user interface subsystem (includes UICF), engineering subsystem group (includes the 2DGA, 3DGA, and DAM subsystems), and infrastructure subsystem group (includes CGDF and PCF subsystems). Sixteen complex use cases describe the user interface subsystem. The engineering subsystem group is described by 14 average use cases and 8 simple use cases. And the infrastructure subsystem is described with 10 simple use cases. Solution: Complex usecases: 16; Average usecases: 14; Simple usecases: 8, 10 Hence, UUCW = (16 x 15) + (14 x 10) + (8 x 5) + (10 x 5) = 470 8 simple actors, 12 average actors, and 4 complex actors. Hence, UAW = (8 x 1) + (12 x 2) + (4 x 3) = 44 TCF = 1.04; ECF = 0.96 Hence, UCP = (470 + 44) x 1.04 x 0.96 = 513.17 = 513 UCP Historical data: Using past project data as a guide, the development group has produced 85 LOC per UCP. Estimated LOC for UCP = 513 x 85 = 43, 605 Using 620 LOC/pm as the average productivity for systems of this type and a burdened labor rate of $8,000 per month. Cost per LOC = 8000/620 = 12.9 = $ 13 Total project cost = 43,605 x $ 13 = $ 5,66,865 Effort = $ 5,66,865/$ 8000 = 70.8 = 71 person-months Empirical estimation models: The software Equation: where E = effort in person-months or person-years t = project duration in months or years B = “special skills factor” -For small programs (KLOC = 5 to 15), B = 0.16. For programs greater than 70 KLOC, B = 0.39. P = “productivity parameter” that reflects: overall process maturity and management practices, the extent to which good software engineering practices are used, the level of programming languages used, the stat of the software environment, the skills and experience of the software team, and the complexity of the application P = 2,000 for development of real-time embedded software, P = 10,000 for telecommunication and systems software P = 28,000 for business systems applications The productivity parameter can be derived for local conditions using historical data collected from past development efforts. Putnam and Myers [Put92] suggest a set of equations derived from the software equation. Minimum development time is defined as Estimation of object-oriented projects 1. Develop estimates using effort decomposition, FP analysis, and any other method that is applicable for conventional applications 2. Using the requirements model, develop use cases and determine a count. Recognize that the number of use cases may change as the project progresses. 3. From the requirements model, determine the number of key classes (called analysis classes). 4. Categorize the type of interface for the application and develop a multiplier for support classes, Type of Interface Multiplier NO GUI 2.0 Text-based GUI 2.25 Conventional GUI 2.5 Complex GUI 3.0 5. Multiply the number of key classes (step 3) by the multiplier to obtain an estimate for the number of support classes. 6. Multiply the total number of classes (key + support) by the average number of work units per class. Lorenz and Kidd suggest 15 to 20 person-days per class. 7. Cross-check the class-based estimate by multiplying the average number of work units per use case. Example: 20 key classes Type of Interface Multiplier No of classes No GUI 2.0 7 No. of support classes 7 x 2.0 = 14 Text-based GUI 2.25 6 6 x 2.25 = 13.5 Conventional GUI 2.5 4 4 x 2.5 = 10 3.0 3 3 x 3.0 = 9.0 Total 20 46 Complex GUI Key classes + support classes = 20 + 46 = 66 Average no. of work units per class = 15 to 20 person-days /class Hence, Effort = 66 x 15 = 990 person-days = 66 X 20 = 1,320 person-days * 66 classes can be completed by minimum of 990 person-days and maximum of 1320 person-days