Estimation in Development Project
Autor: Paulo Dansa | Publicado: 2013-09-16T18:50:00-07:00





ESTIMATION METHODS



We are going to start discussing estimations Methods for Software Development projects. Each one is applicable to specific project phase and development characteristic. &nbsp;At first, we are going to see, one method that is used in the very beginning of project, during requirement gathering phase.


Function Point Analysis






The Basis of Function Point analysis
is the breakdown of complex systems in small pieces.






Elementary operations and how data
moves through the borders of system is the core in this method.





Data in motion:





<!--[if !supportLists]-->·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<!--[endif]-->Handled
by transactional functions or transactions.




<!--[if !supportLists]-->·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<!--[endif]-->External
inputs – Data being moved from outside applications borders to inside of
application domain.




<!--[if !supportLists]-->·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<!--[endif]-->External
output – take data from resting position to outside application border.




Data in rest:




<!--[if !supportLists]-->·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<!--[endif]-->Maintained
by the proper application is called internal logical file.




<!--[if !supportLists]-->·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<!--[endif]-->Maintained
by other application is called external interface file.




&nbsp;




&nbsp;




FPA is not recommended for:




<!--[if !supportLists]-->·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<!--[endif]-->Maintenance
EFFORT.




<!--[if !supportLists]-->·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<!--[endif]-->Performance
solutions.




The amount FP remains the same,
regardless of who develops de Software or the language software is developed.




&nbsp;




Productivity:




&nbsp;




The definition of
productivity is the output-input ratio within a time period with due




consideration for
quality.




Productivity
= outputs/inputs (within a time period, quality considered)




Software
Productivity = Function Points / Inputs




&nbsp;




&nbsp;




&nbsp;




&nbsp;




&nbsp;




&nbsp;




&nbsp;




Effectiveness v. Efficiency:




&nbsp;




Productivity
implies effectiveness and efficiency in individual and organizational
performance.




Effectiveness
is the achievement of objectives. Efficiency is the achievement of the ends
with least amount of resources.




&nbsp;




Function Points are the output
of the software development process. Function points are the unit of software.
Function Points remain constant regardless who develops the software or what
language the software is developed in.




&nbsp;




Function Point Counting Process:




&nbsp;




The Process starts counting information containing in the
transactions and the number of files referenced by them.




Steps for evaluation
of transactional function points.




T1. Application documentation and
transaction




rules are used to identify transactions.




&nbsp;




T2. The application




documentation and transaction




rules are used to determine




type of transaction (external




input, external output, or




external inquiry).




&nbsp;




T3. With the help of




application documentation




(data model and transaction




model) and transaction rules the number
data elements and file type referenced are determined.




&nbsp;




T4. Each identified transaction is
assigned a value of low, average or high based upon type, data




elements, and files referenced.




&nbsp;




T5. A distinct numerical value is
assigned based upon type and value (low, average, or high).




&nbsp;




T6. All transactions are summed to
create a transaction unadjusted function point count.







&nbsp;




&nbsp;




Steps
for evaluation of Files:




Application




documentation and file rules




are used to identify files.




&nbsp;




F2. The application




documentation (transaction




model and data model) is used




to determine type of file




(either external interface file




or internal logical file).




&nbsp;




F3. With the help of




application documentation




(data model) and file rules the
number data elements and record element types are determined.




&nbsp;




F4. Each identified file is
assigned a value of low, average or high based upon type, data




elements and record types.




&nbsp;




F5. A distinct numerical value is
assigned based upon type and value (low, average, or high).




&nbsp;




F6. All files are summed to
create a file unadjusted function point count.




&nbsp;




&nbsp;




Independence and
Dependence:




&nbsp;




Since the rating of transactions
is dependent on both information contained in the transactions and the number
of files referenced, it is recommended that transactions are counted first. At
the same time the transactions are counted a tally should be kept of all FTR’s
(file types referenced) that the transactions reference. It will be made clear
in later chapters that every FTR must have at least one or more transactions.




&nbsp;




&nbsp;




Boundaries
Definition:




Review the purpose of the
function point count.




 Look at how and
which applications maintain data.




 Identify
the business areas that support the applications.




&nbsp;




Definition:




&nbsp;




<!--[if !supportLists]-->·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<!--[endif]-->Record Element Type (RET): 




<!--[if !supportLists]-->·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<!--[endif]-->File Type Referenced (FTR):




<!--[if !supportLists]-->·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<!--[endif]-->Data Element Type (DET): 




&nbsp;




&nbsp;




Examples of elements identified
as data elements. Those elements are considered when we talk about GUIs.:




&nbsp;




Radio
Buttons




Radio Buttons are treated as data
element types. Within a group of, a frame, radio buttons the user has the
option of selecting only one radio button; so only one data element type is
counted for all the radio buttons contained in the frame.




Check
Boxes




Check Boxes differ from radio
buttons in that more than one check box can be selected at a time.Each check
box, within a frame, that can be selected should be treated as a data element.




&nbsp;




Command
Buttons




Command buttons may specify an
add, change, delete or inquire action.A button, like OK, may invoke several
different types of transactions.According to IFPUG counting rules each command
button would be counted as a data element




&nbsp;




___________________________________




&nbsp;




EXTERNAL INPUTS (EI)




&nbsp;




It is an elementary process in
which data crosses the boundary from outside




to inside. This data is coming
external to the application. The data may come from a data input screen or
another application. The data may be used to maintain one or more internal
logical files. The data can be either control information or business information.
If the data is control information it does not have to maintain an internal
logical file.




&nbsp;




File Types Referenced
(FTR’s):




&nbsp;




Unique FTR’s helps distinguish
external input from other external input. An FTR must be either an Internal
Logical File and/or External Interface File. Each internal logical file that an
external input maintains is counted as an FTR. Any internal logical file or
external interface file that is referenced by an external input as part of the
elementary process of maintaining an interna logical file would be considered
an FTR also. 




&nbsp;




Rating:

&nbsp;

Like all components, EI’s are
rated and scored. The rating is based upon the number of data




element types (DET’s) and the
file types referenced (FTR’s). DET’s and FTR’s are discussed earlier. The table
below lists both the level (low, average or high) and appropriate score (3, 4
or 6).





_______________________________________________________________________




EXTERNAL OUTPUTS (EO) – 







an elementary process inwhich derived
data passes across the boundary from

inside to outside. Additionally,
an EO may update anILF. The data creates reports or output files sent to other
applications. These reports and files are created from information contained in one
or more internal logical files and external interface files.




&nbsp;




Rating:




Like all components,
EO’s are rated and scored. The rating is based upon the number of data elements
(DET’s) and the file types referenced (FTR’s). The rating is based upon the total number
of unique (combined unique input and out sides) data elements (DET’s) and
the file types referenced (FTR’s) (combined unique input and output sides).
DET’s and FTR’s were discussed earlier in this section. The table below lists
both the level (low, average or high) and appropriate score (4, 5 or 7).




&nbsp;

&nbsp;



&nbsp;

&nbsp;


&nbsp;

_________________________________________________________________________




&nbsp;




EXTERNAL&nbsp; INQUIRY (EQ) – 




&nbsp;




It is an elementary process with both
input and output components that result in data




retrieval from one or more
internal logical files and external interface files. The input process does not
update or maintain any FTR’s (Internal Logical Files or




External Interface Files) and the
output side does notcontain derived data.




&nbsp;




Rating:




Like all components,
EQ’s are rated and scored. Basically, an EQ is rated (Low, Average or




High) like an EO, but
assigned a value like and EI. The rating is based upon the total
number of unique (combined unique input and out sides) data elements (DET’s) and
the file types referenced (FTR’s) (combined unique input and output sides). DET’s
and FTR’s were discussed in an earlier
chapter. If the same FTR is used on both the input and output side, then it is counted
only one time. If the same DET is used on both the input and output side, then
it is only counted one time.




&nbsp;




&nbsp;







&nbsp;




________________________________________________________________________




&nbsp;




INTERNAL LOGICAL
FILES (ILF) - a user identifiable group of logically related
data that resides




entirely within the application
boundary and is maintained through External Inputs. An internal




logical file has the inherent
meaning it is internally maintained, it has some logical structure andit is
stored in a file.




&nbsp;




Rating:




Like all components, ILF’s are rated
and scored. The rating is based upon the number of data elements (DET’s) and
the record types (RET’s). DET’s and RET’s were discussed earlier. The table
below lists both the level (low, average or high) and appropriate score (7, 10
or 15).




&nbsp;




&nbsp;


&nbsp;




After definitions, here it goes how
calculation is finally done:




&nbsp;

Number
of function points:




&nbsp;




FP = UAF * VAF




&nbsp;




Where:




UAF = Unadjusted Function Points




VAF = Value Adjustment Factor




&nbsp;




Unadjusted function point is
calculated based on the numbers of elements.multiplied by Component weight.




&nbsp;









&nbsp;





&nbsp;


Use Case Point 


The estimations calculation starts from definition of the
use cases under of a given requirement or implementation part.
For each Use Case, it is necessary to map how many
transactions are there.
Transaction mapping is not that easy task and is the core of
this method, since variations here will imply big total effort variation.



Transaction Mapping



Depending on the number of transactions, Use Case will be
defined with a certain complexity.










Total Use case weight
factor (UCWF) is calculated from number of use cases from Certain
complexity.






&nbsp;



This will bring estimation to a certain Total unadjusted Actor weight factor (AWF), that is a result&nbsp; of multiplication of weight&nbsp; related to specific type of Actor and the
number of actors of each type.


Continuing the estimation process, now, it is important to
add application factor, called Total
technical factor (TTF)
Unadjusted use case
points (UUCP) = AWF + UWCF






Once more, given factor is to be multiplied by the weight.
Factors are to be added in TTF, Total technical fator.




The following formula is to be applied:




Technical Complexity Factor (TCF) =
0.6 + (0.01 * TTF).











At this
stage, we will start adding team productivity characteristics, for calculation of
what is called &nbsp;Environment factor (EF)

















Total Use Case, then, are calculated:




UCP = UUCP * TCF * EF


&nbsp;

According Karner, the author if this methodology, typically,
one UCP corresponds to 15 mhrs up 20 mhrs, which means that the effort for one
UCP execution is to be inside this range.




The exact value will be determined by Productivity factor
which is a historical info. This is to be a benchmarking. For each
organization, this is related with a given technology.


Productivity factor is given in the following Unit:




UCP/Person
Day




So, (number of UCPs/Productivity Factor) *8 provides Total effort, for a Given
implementation.






&nbsp;



COMPLEXITY POINT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 




This method is recommended:


&nbsp;

·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<!--[endif]-->For estimating effort for any type of changes or
small enhancements




<!--[if !supportLists]-->·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<!--[endif]-->For situations where requirements can be
analyzed based on technology impact




<!--[if !supportLists]-->·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<!--[endif]-->Usually for work that is between 20 to 320 hrs;
in certain cases it can be used for larger enhancements (&gt;320 hrs) .




Not recommended for:


·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<!--[endif]-->New application development.


&nbsp;


Calculation is based on three
factors







<!--[if !supportLists]-->·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<!--[endif]-->The
Influence Factors (Fi) – fixed
for application






<!--[if !supportLists]-->·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<!--[endif]-->The
relative complexity of each Fi (Wi)-
fixed for application





<!--[if !supportLists]-->·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<!--[endif]-->The
rating of Influence Factors for a given enhancement (Vi) - fixed for application




Let´s imagine the following list of influence factors:



<!--[if !supportLists]-->o&nbsp;&nbsp;
<!--[endif]-->DB
Structure.


<!--[if !supportLists]-->o&nbsp;&nbsp;
<!--[endif]-->Interface
Applications.


<!--[if !supportLists]-->o&nbsp;&nbsp;
<!--[endif]-->Screen
Complexity.


<!--[if !supportLists]-->o&nbsp;&nbsp;
<!--[endif]-->Program
complexity.



They must have
different influence, for each phase of development and must be independent
between them. The weightage can be defined like that:






Now, it is important
to determine the level of influence factor, must be done, rating the complexity
of each one, according a guideline.






Now, it is important
to determine the level of influence factor, must be done, rating the complexity
of each one, according a guideline.


&nbsp;


<!--[if gte vml 1]><v:shapetype id="_x0000_t75"
 coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe"
 filled="f" stroked="f">
 
 
  
  
  
  
  
  
  
  
  
  
  
  
 
 
 
<v:shape id="Picture_x0020_2" o:spid="_x0000_i1025" type="#_x0000_t75"
 style='width:441.75pt;height:66.75pt;visibility:visible;mso-wrap-style:square'>
 <v:imagedata src="file:///C:\Users\305260\AppData\Local\Temp\msohtmlclip1\01\clip_image001.emz"
  o:title=""/>
<![endif]--><!--[if !vml]--><!--[endif]-->


&nbsp;


&nbsp;


The&nbsp; total amount of complexity points&nbsp; is calculated from weights and the level
identified of each factor, as multiplication, following the formula:


<!--[if !supportLists]-->•&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<!--[endif]-->CP = (ΣWi * Vi)Analysis + ( ΣWi * Vi )Design +&nbsp;&nbsp; (ΣWi * Vi )Coding + (ΣWi&nbsp;
* Vi )Testing


&nbsp;


What is
missing?&nbsp; Productivity.&nbsp; For this method, it is calculated in analog
way, based in previous projects experience. &nbsp;Finally, effort will come up from the
following formula:


Effort = CP/Productivity.








&nbsp;