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;