CS 458 - Week 7 Lecture 1 - 2017-10-03 * MANDATORY TEAM MEETINGS during class time on THURSDAY, October 5 * DO need to meet in person * MUST be a team meeting form in your repo ON THURSDAY * (location IS up to the team -- BUT make sure ALL TEAM MEMBERS know WHERE you are meeting!) * *IFF* all team members AGREE to a DIFFERENT 80 minute period ON THURSDAY, OCTOBER 5, then the mandatory meeting MAY be at a different time on Thursday -- * to clarify: * IF the team meets from 9-10:20, and one or more team members does not attend, JUST those team members who did not attend are penalized; * IF the team meets later, all had BETTER be there -- in that case, the whole team would be penalized if all are not there; * Jalote - Chapter 4 - Planning a Software Project * lack of planning in projects is a common issue; quip: Weeks of programming can save you hours of planning * basic objectives of planning: * establish reasonable cost, schedule, AND quality goals * draw out a plan to deliver the project goals * note what's considered "good" for estimating approaches: Jalote: "IF from the requirements specifications, the estimate approach can produce estimates that are WITHIN 20% of the ACTUAL effort about 2/3 of the time...." * TOP-DOWN vs. BOTTOM-UP estimation... TOP DOWN... * let's talk about top-down a bit; ...NOTE: some of these ARE recommending, ESTIMATE the project's SIZE, then use that to estimate the EFFORT needed (then use the estimated effort to plan...) Although some also add in ways to factor in OTHER project attributes as well; * MIGHT be a formula! Plug in the estimated size, get the estimated effort...! * WHAT IF you know past productivity on similar projects? X KLOC/PM * KLOC - 1000 lines of code * PM - Person Month * hey, we estimate the SIZE of the next project is SIZE KLOC, so our effort estimate would be SIZE / X person-months * (BUT better be a similar TYPE of project, and remember that effort related to size is generally NOT linear in terms of software development...!) * there are also some more general functions... EFFORT = a * (SIZE ** b) ^ in KLOC ^ in person-months ...where a and b are constants, sometimes determined by regression analysis applied to data from past projects; Watson & Felix - found a = 5.2, b = 0.91 for 60+ IBM Federal Systems Division projects (4 KLOC - 467 KLOC) * COCOMO - what the text calls COCOMO is now called COCOMO 81, and there's now also COCOMO II * COnstructive COst MOdel - Boehm * STARTS with another equation like those mentioned -- EFFORT = 3.9 * (SIZE ** .91) ^ this is called the NOMINAL or INITIAL estimate * you then TWEAK this initial estimate using multiplying factors based on COST DRIVER ATTRIBUTES for each attribute, RATE them on the following scale: very low, low, nominal, high, very high nominal - I think the connotation is "normal", not out of the ordinary; and the multiplying factor for "nominal" is typically 1 * there's a CHART with multiplying factors for each of these ratings for each of these attributes, and you MULTIPLY the nominal/initial effort estimate BY these multiplying factors to get your ADJUSTED effort estimate; * FROM the adjusted estimate, you can then estimate the effort that will be needed for different phases; * these % estimates are based on relative size; "small" - 2 KLOC - 16% - product design 26% - detailed design 42% - code & unit test 16% - integration & test ... "large" - 128 KLOC - still 16% for product design, detailed design - down to 23% code & unit test - down to 36% integration & test - up to 25% * YES, these top-down effort-estimation approaches these DO rather depend on a good estimate for the SIZE of the desired software;