Skip to main content

Project Estimation Technique


There are several estimation technique which differs based on project to project.

Some of the technique are:

1.    Expert Suggestion
2.    Historical Data
3.    Function Points
4.    Story Points
5.    Lines of Code
6.    COCOMO
7.    Use Case Points
8.    Wideband delphi
9.    Test case point 
10.  Parkinson Law 



Expert Suggestion
This is mos widely used technique.In this estimation technique, you have to rely on his expert experience.Based on his domain and technical capabilities he estimates things for multiple iterations until reached on some consensus.

Historical Data
Based on data available for similar project which has been delivered earlier.You have to compare if somewhat similar project has been completed earlier, approximately same amount of estimate will be for this project as well.

Function Points
In this Estimate technique we take multiple factors for deciding estimation.

Input
Output
Internal Queries
External Queries

based on no of input, output, enquiries, reading/writing  from internal database or reading from external read only database function points has already decided after several research we just have to count them & sometimes multiply by some adjust factor (based on implicit requirements like performance etc). After getting function points we multiply it by productivity factor ( how much function points in any particular will take how much efforts) & get required days or person months.Its one of most standard technique for estimation across industry).


Story Point 
This technique is mostly used in Agile methodology where we do relative estimate & give some points based on complexity.

There may be many scale & one common scale used as  Fibonacci series (1, 2, 3, 5, 8, 13, 21).  There could be other possible scale. More complex user story is more high number in series. Bigger then 13 or 21 can be break into smaller task.

Planning Poker is a estimation game in agile where we decide complexity with help of story point cards.

SLOC
Software line of code. It may be physical means all the lines count including comment & blank line or may be logical which means executable line of codes.We may divide task to sub tasks to sub task & estimate line of code. It get counted in KLOC. 

Cocomo Model
This is very extensive estimation model which is available as basic, intermediate & advance sub models.

Use Case Points
In this technique we divide functionality based on use cases. We assigned some weight to use case category which could be simple, average, Complex, very Complex etc.  So after multiplying weigh factor to no of use cases of that category we get some estimations.

Wideband delphy
Team members give their individual advice. Based on their estimate we discuss why some one things its more complex & more time or someone who things its trivial & will take less time. Then we try to come at come consensus where everyone agrees about complexity & duration.

Test Case Point
In this technique we take test case as input.We estimate size of testing project project with this style or technique.

Parkinson Law
Count efforts on man months. This estimation is based on resource available. If a project required 10 month & we have 5 resource needed to work on it so work will be 50 man months.




Comments

Popular posts from this blog

Conversion from Clob To String in java and Vice versa

/***reading Clob data from oracle table and setting to Pojo**/
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import oracle.sql.CLOB;

import com.poc.one.pojo.StagedMessage;

public class MessageDao {
private static String url = "jdbc:oracle:thin:@172.22.22.198:1521:ORACLE";
private static String username = "ABC123";
private static String password = "ABC123";


public  List readClobToBO() throws Exception {

Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection(url, username, password);
PreparedStatement stmt = conn
.prepareStatement("SELECT ID, STORE_ID, MESSAGE_DATA FROM STAGED_MESSAGE ");
ResultSet resultSet = stmt.executeQuery();
List msgList= new ArrayList();

while (resultSet.next()) {

StagedMessage message = new StagedMessage();

message.setId(resultSet.getInt(1));
message.setStoreId(r…

Portable Java 8/ JDK8 setup without admin rights

Some time we got machine to work where we don't have access rights to install anything or if you do not want to install. You can get latest jdk running by this trick. Just follow step step & do comment if you like it.

Step by Step details to get running java from .exe setup without any admin rights. Get portable 7 zip from portableapps.comdownload java 8 from oracle  http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.htmlopen 7 zip & extract jdk-8u102-windows-x64.exeyou will see below folders                .data                .pdata                .rdata                .reloc                .rsrc                .text                CERTIFICATE

          5.Go inside E:\jdk-8u102-windows-x64\.rsrc\1033\JAVA_CAB10you will find 111 file.

         6.extract it it some folder where you can find tools.zip again extract that to some folder say Java & copy it to very first folder of setup along with .data,.rsrc etc.
         7.Go to folder where you have co…

GOF Design pattern with Java & Real World Examples

What are design patterns? 

So basically these are just collection of best practices to solve recurring problem by different kind of class arrangement. These arrangement could be based on creation of object or structural basis or on basis of required behavior.




Creational Design Pattern
Prototype Designpattern we will like to use this designpattern whenever creation of initial object & setting required default values is costly. So we just create 1 object & later on whenever more objects required we can provide initial object by just cloning of given object.Java Example is java.lang.Object#clone()
Builder DesignPattern When we jave object structure are complex and complicated we would go for this. we will be separating object creation from internal representation. With help of some simple interface we would create complicated Object.
Singleton When we need one instance per JVM. Example : Java Run time environment Java.lang.System.  java.lang.StringBuilder, Spring Beans are singleton …