CS 510 Final Exam Q&A Fall 2015 Barry Boehm, USC COCOMO Estimation and Sizing As a developer who is trying to improve my skill at estimating how long it will take to do my work, I'm wondering what is the best approach for me to take. For me, the hard part about using COCOMO would be estimating the SLOC (I don't know an accurate way of doing this). Another approach I have in mind would be to use story points to estimate each story, and then to keep track of how long each of them takes me, using those results to help with future estimations. Do you have any advice on what kind of approach I should take? If you are using agile methods, story points are the best fit. The CSSE web site has a COCOMO version called Agile COCOMO (at http://sunset.usc.edu/cse/pub/research/AgileCOCOMO/AgileCOCOMOII/Main.html) that enables you to take your last project’s velocity in terms of #of ideal person weeks per iteration (number of story points) and adjust it for any differences in the COCOMO cost drivers on your next iteration or project. You can then adjust this if your next iteration has a different number of story points. If you are sizing a project in SLOC, you can try the function point option in COCOMO II, and adjust it as you do parts of the project as prototypes. If a prototype takes 200 SLOC and covers about 20% of the functionality, a good estimat would be 1000 SLOC COCOMO III Throughout the course there have been references to a COCOMO III model as being in development, are there any major changes in the model from COCOMO II worth mentioning? Also, do you have an estimate of when that would be published? COCOMO III is still getting defined. A key research activity is defining appropriate sizing parameters for various types of project (agile, cloud-services-based, COTS integration, other ICSM special cases, hybrid) as in the previous question. Business-Value-Based Earned Value In EP-3 (Business Case Analysis), figure 14-6 describes a process for keeping Earned Value estimates accurate by relating them to the business case. The diagram wasn't covered in lecture, but EV-related issues crop up from time to time in failure stories. Can you describe what this diagram means, and how it can be used to keep EV "honest"? The intent is to get away from value-neutral EV methods and relate value earned to progress toward business objectives.. The next chart provides an example. Customer Satisfaction ITV Ease of Use 7.0 12.4 1.7 1.0 1.8 3/31/04 427 20 72 7.0 12.4 1.7 1.0 1.8 7/31/04 1050 7/20/04 1096 9/30/04 1400 9/30/04 1532 2.4* 1.0* 2.7* 3500 3432 12/31/04 4000 20 80 8.0 0.0 -1.0 11.4 3.0 2.5 3.0 12/20/04 4041 22 88 8.6 0.6 -.85 10.8 2.8 1.6 3.2 3/31/05 4500 300 9.0 3.5 3.0 3.5 3/30/05 4604 324 7.4 3.3 1.6 3.8 Full Op’l Capability CCD 7/31/05 5200 1000 7/28/05 5328 946 Full Op’l Capability Beta 9/30/05 5600 1700 9/30/05 5689 1851 12/31/05 6000 2200 22 106 12.2 3.2 -.47 7.0 4.0 3.5 4.0 12/20/05 5977 2483 24 115 13.5 5.1 -.15 4.8 4.1 3.3 4.2 6/30/06 6250 Responsive IOC Full Op’l Capability Deployed Release 2.1 Increased COTS ITV risk, fallback identified. Using COTS ITV fallback; new HW competitor; renegotiating HW. 2.7* 1.4* 2.8* 9/30/04 Deployed IOC Risks/Opportunities Late Delivery % 72 ROI 20 Cum. Profits 400 Op’l Cost Savings 3/31/04 10/11/04 Hardware IOC 03/27/07 Annual Profits ($M) Software Initial Op’l Capability (IOC) Annual Sales ($M) Core Capability Demo (CCD) Market Share % Life Cycle Architecture Cost ($K) Milestone Schedule Value-Based Expected/Actual Outcome Tracking Capability $200K savings from renegotiated HW. 3.5* 2.5* 3.8* New COTS ITV source identified, being prototyped. New COTS ITV source initially integrated. 3.8* 3.1* 4.1* ©USC-CSE 5 Value-Based vs. Value-Neutral Defect Fixing In the slide "The Economics of Systems and Software Reliability Assurance", page 6,7,8. We compare three methods, value-based testing, value-neutral and value-neutral defect fixing. The result is value-based provides more net value and value-neutral defect fixing is worse. In the graph, the value-neutral and value-neutral defect fixing would have the equal value in the end. The different is the when to become efficient. In the customer type over 10, value-neutral defect fixing complete 80% value. Whether there is a situation that value-neutral defect fixing test is better than other method? The slide (shown next) just shows “in the end” as when all of the defects have been fixed. In most projects not all defects get fixed, and one wants to prioritize to get the most business value for the ones that do get fixed, so that if you only fix 90% of the problems, you end up with most of the business value Value-Neutral Defect Fixing Is Even Worse Pareto 80-20 Business Value 100 Automated test generation tool - all tests have equal value 80 % of Value for Correct Customer Billing 60 40 Value-neutral defect fixing: Quickly reduce # of defects 20 5 10 15 Customer Type 09/23/2015 ©USC-CSSE 7 Value-Based Defect Fixing I am confused about the graph on EC-21,slide 8. Is it saying that in terms of business value, testing only about 20% of the cases is sufficient for 80% of the business value and then for defect testing, testing the easiest 20% almost has no effect on % of Value for Correct Customer Billing? Slide 8, just shown, is addressing defect fixing and not defect testing. Fixing the easiest 20% almost has no effect on % of Value for Correct Customer Billing. Build vs. Buy We have solves many cost evaluations problems using COCOMO II for example in HW3, Midterm I & II. There's a situation that we may face, there's a two way to achieve a features or a system, one is to develop it by the company's own developer team, the other is to buy license to use other company's service. Let suppose that the total cost we use COCOMOII to get is less than the total license purchase cost. Before making the decision, is there any consideration we need to take? In another word, is there any possibility that we may still choose to buy license in this situation, and what could it be? Buying a license gets you the capability right away vs. waiting for it to be developed. The maintenance fees are generally similar to the maintenance costs for a build-yourown system, and you get upgrades without having to develop them. On the other hand, for a build-your-own system, you determine and create what upgrades you need most, rather than hoping that the vendor will choose to do them. ROI and Present Value TIn calculating ROI, how far into the future should we go for expected revenue? What if we are comparing two different projects at two different times? For example, project A starts now, costs $100K and gives us $20K/year. Project B starts 3 years from now, costs $80K and gives us $25K/year. Would we just compare the ROI of A at year 1 (PV(20,1,r)/100) with the ROI of B at year 4 (PV(25,4,r)/PV(80,3,r)), or would we compare both at year 4 as a series of cash flows across 4 years for A and 1 year for B (which doesn't seem right since B has a lot less time to generate revenue), or something else? (EC7) These days, 5 years is about the longest that one can count on being reasonably accurate, given the pace of change in technology, the marketplace, and the competition. Comparing projects starting at different times is best done by giving each the same length of payoff period, unless there is some reason that the payoff period should be longer for one of the projects. Benefits, Costs, and Net Value In EC5 Business Case Analysis page27, Return-On-Investment (ROI) formula is describe as ROI=(Benefits-Costs)/Costs. But in EC21 page3, ROI=NV/PV (present value divided by net value). Why are those two both correct? Net Value = Benefits – Costs, making both ROI formulas the same thing. Similarity of Risk Examples Question I: In EP-7 Chapter 19 page 281 Table 19-2, the table use NV relative to Option A as payoff. What should be consider as payoff when there is no Option A, like the questions in homework #7, or when Option A is some kind of totally different kind of approach which is incomparable to Option B or cannot be quantified. Moreover, here if Option BB doesn't work, the team will have to reprogram the system using the conservative techniques (last paragraph at page 279), so that the overall payoff would be -$60K + $30K = -$30K. However, in homework 7 solutions, the pay off of approach B failure is -$100K, which doesn't consider "reprogram the system using conservative approach". Why different calculation on those two similar situations? Could you explain more on when to consider with reprogram and when don't to? The example in the book includes the time and cost spent finding out that the Bold option is not going to succeed, followed by doing the Conservative approach. The Homework 7 example does not assume that the Conservative approach would be used if Bold failed, but just indicates that the outcome would be a $100K loss in obtaining the capability. Utility Functions In EC-10 and EP-7, we discussed utility functions. Other than using surveys, what are other ways to develop utility functions? Where else can values be obtained? Also, EC6 leads me to believe that 'value' and 'time' are the main qualities of a utility function; however, EP-7 and EC-10 identify other qualities such as 'utility' and 'payoff'. What qualities identify a utility function? Most ways end up looking like surveys, although sometimes they will just survey the chief decisionmaker. Value and time are the most frequent quantities, although value can be multidimensional. For example, sometimes it is worth developing a moneylosing feature if it pleases a key customer. Risk-Based Decisions Assume, a project needs to be finished in a short span of time. Given, that the testing system needs a graphical user interface, and developers are free to use any framework or technology to develop the system with basic core functionality that data should be accessed from the firm database and the result should be immediately generated. Consider, a user interface is provided to the client to enter user specific data and a firm database is maintained to securely hold the data. The UI is to be tested as to review it and generate a visible error immediately if there are some errors. The developers will be maintaining documentations for the development and error handling. So would you suggest that here we should not use ICSM principles. If we use ICSM practices and principle, wouldn't that delay the project due to amount of phases and risk analysis that is needed to be performed. So, will it be correct to directly jump on the development phases? If, yes, how do we account for the skipped phases? Reference: The Incremental Commitment Spiral Model: Principles and Practices for Successful Systems and Software, Addison Wesley, 2014 The ICSM indicates that decisions are made based on the stakeholders’ willingness to accept risk. If a rapid-fielding approach is risky but the stakeholders agree that the risks are negligible, then the project can skip thorough definition phases and jump into development. Other Life Cycle Models For Chapter 5 of the ICSM book, when comparing ICSM to other life-cycle models, do we have to understand a little bit of details of some other typical models? Since the course material does not cover these in detail, you won’t need to know the details of other models.