COSMIC Sizing Forums Estimating Convert CFP to hours

Viewing 5 reply threads
  • Author
    • #12220
      Maricela Martínez

      I have a project which have 2 functional process:
      One team will develop a functional process “Inquire client in black list”, which will receive different combinations of parameters from a user (human) and it will send this information to a different application in order to know if this client is or not in a black list, as a result the functional process (what is being measured) will receive a binary answer.

      The human user could give:
      Only name and last name
      name, last name and address
      name, last name and cellphone
      name, last name and CURP
      name, last name and RFC
      name, last name and cellphone and CURP, etc.

      At least eighteen combinations of parameters, so the team needs to invest a lot of time to test different combinations.

      We counted “Inquire client in black list” like this:
      1 Entry (from human user) – Client information (name, last name, address, etc.)
      1 Exit (from other application) – Client information (name, last name, address, etc.)
      1 Entry (from other application) – Answer (yes/not is in the black list)
      1 Exit (To human user) – Answer (yes/not is in the black list)

      Only 4 CFP

      Another team need to develop other functional process “Inquire clients registered in a given period”, in which the information of the client is in the Data base.
      1 Entry (started date, finish date)
      1 Read (client information)
      1 Exit (started date, finish date)
      1 Exit (show client information)
      1 Exit (messages like “there is not client registered in that period”)

      5 CFP

      The first question is, is the measurement ok? if so, the point is that the first functional process (“Inquire client in black list”) will need more time than the second (“Inquire clients registered in a given period”) due to the first one needs more time to validate the combination of parameters. If I have a number of hours per CFP to assign to every team, for a complete development cycle, I could calculate more hour to the second team because they have more CFPs, nevertheless the first team is who needs more hours. Could you help me with your comments?

    • #12229
      Arlan Lesterhuis

      Dear Maricela,

      Both measurements are OK (assuming that there was no requirement for E/C messages in the first functional process).

      Your reasoning on effort estimating for two pieces of software is correct. However, when a number of pieces of software must be developed (a mixture of simple, moderate and difficult software), the general approach to estimating effort on the basis of CFPs is to use regression analysis (it produces a regression function). When you enter a size to the function, the function will produce the estimate of the effort to be expected. If it appears that you can divide the data of software development in two groups (say ‘simple software’ and ‘other software’) you could consider to apply regression analysis separately to both groups.

      I hope this is clear and helps.


      Arlan Lesterhuis

    • #12232
      Maricela Martínez

      Dear Arlan,

      First of all thanks for your answere. I understand, nevertheless, it seems that we could find in the same functional process CFPs which correspond to difficult software and other which correspond to moderate software, for instance:

      It is necessary to show the following report, where:

      The “large Name” is Calculated like this:
      * Large Name = Name + Last Name + mother’s last name

      The CURP is calculated like this:
      * the 2 first characters of the name
      * plus the first character of the last name
      * plus the first character of the mother’s last name
      * plus the birthdate* plus the Number of the City of birth

      The email is calculated like this:
      * the name
      * plus the character “.”
      * plus the last name
      * plus the phase “”

      The Salary is calculated like this:
      SalaryWithoutTaxes = Salary – (Salary * 0.16)

      Period to get a report (Start Date, Finish Date) => Entry
      Information of the Employee (Name, Last Name, mother’s last name, Birthdate, number of City of Birth, Salary) => Read
      Manipulation to get Large Name => There is not CFP
      Manipulation to get CURP => There is not CFP
      Manipulation to get email => There is not CFP
      Manipulation to get SalaryWithoutTaxes => There is not CFP
      Show the Period (Start Date, Finish Date) => Exit
      Show report (Large Name, CURP, email, SalaryWithoutTaxes) => Exit

      The last two exit will not have the same degree of dificulty when the software must be developed
      Could you help me with your comments?

    • #12233
      Arlan Lesterhuis

      Dear Maricela,

      Indeed, developing the software represented by the 3rd Exit is easier than the software represented by the 4rth Exit. How to estimate the development effort of each of them? Note that their functional sizes play no role here, as these are both 1 CFP.

      You could set up a very simple registration of such pieces of software, consisting of two attributes: ‘Requirement’ and ‘Effort’. ‘Requirement’ describes the requirement for the piece of software as shortly and clear as possible, and ‘Effort’ specifies the number of hours needed to develop this requirement. You could start with such pieces of software of the past of which the effort is known. Now, if you get some requirement of which you need an approximate effort, just look in your registration to see if one of the items applies (i.e.of which its requirement looks comparable to yours) and use its effort as an approximation for your new requirement. If some items apply, you could use their average as an approximate.


      Arlan Lesterhuis

    • #12377
      Maricela Martínez

      Dear Arlan,

      It sound easy nevertheless, It is not as simple, for example:
      I have 2 measurements, both of them will be developed using the same technology (COBOL) the first one “inquiry the name of the user”

      * Receive the UserId (E)
      * Read the name of the user (R)
      * Show the name of the user (X)

      Apparently 3 CFP

      Nevertheles with the same technology It is required a complex report
      * Receive an file with 100 fields about transations (E)
      * Calculate a lot of values to conciliate the information for the new report, it is necesary apply at least 25 rules, it is not necesary to read additional information (0 CFP)
      * As the calculations are made they are saved in a temporary file.
      * When the report is ready it is send to another application. At the end the file has 120 fields with the new information and data transformation, all the fields describe the same object (transactions), so apparetly is only one exit (X)

      Apparently 2 CFP

      As far as we know the reason for which the measurement are very important for the industry is because allows us use it for estimations, I mean to be able to convert the CFPs in hours, one option could be have a value (in hours) for the simple CFP and another for complex CFP with the same technology (what someone proposed at the last conference of metrics in Mexico). Nevertheless we fall again in the dilemma about which is funtionality simple and which is complex. I would like to know your comments? Thanks for advance!

    • #12384
      Arlan Lesterhuis

      Hi Maricela,

      I agree with both sizes above. Unfortunately, there is no unique answer to what is simple and what is complex. Regression analysis provides an estimate of hours based on a number of (size,CFP) pairs. When you display the data graphically, if needed you can visually split the data points in two or more similar groups and use regression on each group separately. Another method would be to apply regression to sets of requirements for comparable functionality. For instance, if in your organization often software for complex reports is made, you can apply regression to such comparable functionality separately. Yet another possibility is to use ‘generalized regression’ with help of a neural network. See NeuralTools, which is an addition to Excel.

      I hope this helps


Viewing 5 reply threads
  • You must be logged in to reply to this topic.