Saturday, 23 July 2016

Project Estimation

When to do the Project Estimation?

·         At the start of the project
·         At every project milestone
·         When requirements change
·         When there is a scope creep
·         If and when there are any changes in the team (If a team member leaves the organization / if a team member has to take unexpected leave, etc.)
·         When you notice that any of the assumptions you made are not holding good

Assumptions

You need to jot down all the assumptions that you are making while doing the estimation. This is because if any of the assumptions topple, your estimates also go haywire.

Basis for Estimation

·         Past Data/Past Experience
·         Available Documents/Knowledge
·         Assumptions
·         Identified Risks

Estimation Methods

There are several estimation methods in practice. You can choose the one that suits your project. Following table gives you an idea on how to choose an estimation method:
S. No.
Project Context
Estimation Method
1
When there is limited information about the current project.
When estimates are used in deciding if an upcoming project is profitable to the organization.
Analogy
2
When clear requirement specifications are available with regard to the functionality of the software to be developed.
Function Points (FP)
3
When there are tasks that are critical in the project. If there is a delay in these tasks, the project gets delayed.
Project is large and non-repetitive, such as an R&D project.
PERT
4
When the project is small.
Three Point Estimation
5
When the requirements are in Use Cases form.
Use Case Points
6
When the requirements in User Stories form, as is the case in agile projects, mostly Scrum.
Planning Poker
7
When the project is to be decomposed into small sized deliverables
Work Breakdown Structure (WBS)
8
When there is a panel of experts to do the estimation
Wideband Delphi

Next, let us look at each of these Estimation methods.

Analogy

Project Manager and Team need to collaborate in arriving at the estimates by Analogy. If there are past projects similar to the current project, the historical data is used to arrive at the estimates. Otherwise, from the historical data of the projects, data related to the similar modules and similar activities is collated and the estimates are drawn from them.

This method mostly relies on the past data. If there is reliable past data, the method is found to be accurate up to 60%.

Function Points

Function Points is a standard widely accepted estimation method for software sizing, though the method needs expertize in arriving at the required parameters for the computation.

International Function Point Users Group (IFPUG) defines the standard set of rules, processes and guidelines for Function Points (FP) Counting and publishes them in Counting Practices Manual (CPM). One needs to abide by CPM if Function Points (FP) is chosen as the estimation method.

Internal Logical File (ILF) is a user identifiable group of logically related data or control information is stored in a file within the application boundary. External Interface File (EIF) is a user identifiable group of logically related data or control information that is used by the application for reference purposes only.  The data resides entirely outside the application boundary and is maintained in an ILF by another Application.

External Input (EI) is how the application gets information from outside the boundary to inside.  The data can come from a data input screen or another application. The data can be either control information or business information. External Output (EO) is how data comes out of the application in the form of a report and/or an output file sent to other applications. Additionally, an EO may update an ILF.  External Inquiry (EQ) is for data retrieval.

Record Element Type (RET) is the largest user identifiable sub group of elements within an ILF or an EIF.  Data Element Types (DETs) are the different elements within each RET that are unique and user identifiable.

File Type Referenced (FTR) is the largest user identifiable subgroup within the EI, EO, or EQ that is referenced to. A Data Element Type (DET) is the user identifiable unique data subgroup within an FTR.

Use the counting rules for counting FTRs and DETs in ILFs and EIFs. (Refer to the IFPUG CPM). Determine the functional complexity (L=Low; A=Average; H=High) for each ILF and EIF from the counts of corresponding DETs and RETs, using the ILF/EIF complexity matrix:
RETS
Data Element Types (DETs)
1-19
20-50
>50
1
L
L
A
2 to 5
L
A
H
>5
A
H
H

Obtain the FP Counts of each ILF and EIF from their functional complexities.
Functional Complexity
FP Count for ILF
FP Count for EIF
Low
7
5
Average
10
7
High
15
10

Similarly, use the counting rules for counting FTRs and DETs in EI, EO and EQ. Determine the functional complexity (L=Low; A=Average; H=High) for each EI using the EI complexity matrix from the counts of corresponding FTRs and RETs. Determine the functional complexity (L=Low; A=Average; H=High) for each EO and EQ using the EO/EQ complexity matrix from the counts of corresponding FTRs and RETs.

EI Complexity Matrix:

FTRs
Data Element Types (DETs)
1-4
5-15
>=16
0-1
L
L
A
2
L
A
H
>=3
A
H
H

EO/EQ Complexity Matrix (EQ must have a minimum of 1 FTR):

FTRs
Data Element Types (DETs)
1-4
5-15
>=16
0-1
L
L
A
2
L
A
H
>=3
A
H
H

Obtain the FP Counts of each EI, EO and EQ from their functional complexities.
Complexity
FP Count for EI / EQ
FP Count for EO
Low
3
4
Average
4
5
High
6
6

FP Count is obtained by summing up all the ILF, EIF, EI, EO and EQ counts.

Use Case Points

Counting Use Case Points is based on the Use Cases and Actors that are identified for the application to be developed. This estimation method also results in the software size.

To arrive at the Use Case Points of an application, perform the following steps:
** Find the number of transactions in each Use Case. If user goal levels are used to write the Use Cases, a transaction is equivalent to a step in the Use Case. So, you can find the number of transactions by counting the steps in the Use Case.
** Determine the complexity of each Use Case based on its number of transactions.
** Assign Use Case Weight for each Use Case based on its complexity.
Use Case Complexity
Number of Transactions
Use Case Weight
Simple
≤ 3
5
Average
4 to 7
10
Complex
> 7
15

** Sum up the Use Case Weights of all the Use Cases to obtain the Unadjusted Use Case Weight (UUCW).
** Similarly, determine the complexity of each Actor and the corresponding Actor weight.
Actor Complexity
Example
Actor Weight
Simple
A System with defined API
1
Average
A System interacting through a Protocol
2
Complex
A User interacting through GUI
3

** Sum up the Actor Weights of all the Actors to obtain the Unadjusted Actor Weight (UAW).
** Sum of Unadjusted Use Case Weight (UUCW) and Unadjusted Actor Weight (UAW) gives Unadjusted Use Case Points (UUCP).
** Adjust the Unadjusted Use Case Points (UUCP) for Technical Complexity and Environmental Complexity to obtain Use Case Points (UCP).

We will discuss the other Estimation methods in the upcoming blogs.


No comments:

Post a Comment